【新智元导读】
继5月的文件泄露事件后,谷歌的搜索引擎又被掀了个底朝天。不仅DeepMind发论文解释了Vizier系统的机制,博客作者Mario Fischer还对近百份文档做了彻底的调研分析,为我们还原了这个互联网巨兽的全貌。
谷歌发表的论文又开始揭自家技术的老底了。
DeepMind高级研究科学家Xingyou (Richard) Song等人最近发表的论文中,解释了谷歌Vizier服务背后的算法秘密。
作为一个运行过数百万次的黑盒优化器,Vizier帮助谷歌内部优化了很多研究和系统;同时,谷歌云和Vertex也上线了Vizier服务,帮助研究者和开发人员进行超参数调整或黑盒优化。
Song表示,与Ax/BoTorch、HEBO、Optuna、HyperOpt、SkOpt等其他行业基线相比,Vizier在很多用户场景中都有更稳健的表现,比如高维度、批查询、多目标问题等。
趁着论文发布,谷歌元老Jeff Dean也发推赞扬Vizier系统。
他提到的开源版Vizier已经托管在GitHub仓库上,有非常详细的文档说明,并且最近仍在持续维护更新。
仓库地址:https://github.com/google/vizier
OSS Vizier 的分布式客户端-服务器系统
虽然谷歌研究院早在2017年就发文讨论过整个Vizier系统,但内容远没有最新的这篇详实。
论文地址:https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf
这篇技术报告包含了大量研究工作的成果和用户反馈,在描述开源Vizier算法的实现细节和设计选择的同时,用标准化基准的实验表现了Vizier在多种实用模式上的稳健性和多功能性。
论文地址:https://arxiv.org/abs/2408.11527
其中,Vizier系统迭代过程的经验教训也被一一展示,这对学界和行业都有很大的借鉴意义,值得一观。
Vizier系统所用贝叶斯算法的核心组件
文章的主要贡献如下:
- 正式确认了Vizier当前版本的默认算法并解释其功能、设计选择,以及整个迭代过程中吸取的经验教训
- 在原始的C++实现基础上提供了开源的Python和JAX框架实现
- 使用行业通用基准进行测试,体现了Vizier在高维、分类、批量和多目标优化等模式下的稳健性
- 对零阶进化采集优化器(zeroth-order evolutionary acquisition optimizer)这个非常规的设计选择进行了消融实验,展示并讨论了其中的关键优势
论文作者列表中排名前二的是两个Richard——
Xingyou (Richard) Song曾在OpenAI担任强化学习泛化方面的研究员,2019年以高级研究科学家的身份加入Google Brain,并从2023年起担任DeepMind高级研究科学家,从事GenAI方面的工作。
Qiuyi (Richard) Zhang目前在DeepMind Vizier团队中工作,也是开源版Vizier的共同创建者,他的研究主要关注超参数优化、贝叶斯校准和理论机器学习方向,此外在AI对齐、反事实/公平性等方面也有涉足。
2014年,Zhang以优秀毕业生的身份从普林斯顿大学获得学士学位,之后在加州大学伯克利分校获得获得应用数学和计算机科学的博士学位。
作为绝对的行业巨头,谷歌很多未被披露的核心技术都让外界好奇已久,比如,搜索引擎。
十多年来超过90%的市场份额,让谷歌搜索成为了或许是整个互联网上最具影响力的系统,它决定了网站的生死存亡及网络内容的呈现形态。
但谷歌究竟是如何对网站进行排名的具体细节,从来都是「黑匣子」。
不像Vizier这类产品,搜索引擎既是谷歌的财富密码,也是看家技术,官方发论文披露是不可能的。
虽然也有媒体、研究人员以及从事搜索引擎优化工作的人士进行过种种猜测,但也只是盲人摸象。
旷日持久的谷歌反垄断诉讼最近宣布判决,美国的各级检察官搜罗了约500万页的文件,变成公开的呈堂证供。
然而,谷歌内部文档泄露和反垄断听证会的公开文件等等,并没有真正告诉我们排名的具体工作原理。
并且,由于机器学习的使用,自然搜索结果的结构非常复杂,以至于参与排名算法开发的谷歌员工也表示,他们并不能完全理解许多信号权重的相互作用,无法解释为什么某个结果会排在第一或第二。
5月27日,一位匿名消息人士(后证实为搜索引擎优化行业资深从业者Erfan Azimi)曾向SparkToro公司的CEO Rand Fishkin提供
了一份2500页的谷歌搜索API泄露文档,揭示了谷歌搜索引擎内部排名算法的详细信息
。
但这还不是全部。
专门报道搜索引擎行业的新闻网站Search Engine Land最近还发表了一篇博客,根据数千份泄露的谷歌法庭文件进行逆向工程,首次揭秘谷歌网络搜索排名的核心技术原理。
原文链接:https://searchengineland.com/how-google-search-ranking-works-445141
这篇博文是原作者在几周的工作中对近100份文档经过多次查看、分析、结构化、丢弃和重组之后才诞生的,虽然并不一定严格准确或面面俱到,但可以说是了解谷歌搜索引擎绝无仅有的全面且详细的资料。
作者的省流版结构示意图如下:
毫无疑问,谷歌搜索引擎是一个庞大而复杂的工程。从爬虫系统、存储库Alexandria、粗排名Mustang,再到过滤和细排名系统Superroot以及负责最终呈现页面的GWS,这些都会影响网站页面最终的呈现和曝光。
当一个新网站发布时,它不会立刻被谷歌索引,谷歌如何通过收集和更新网页信息呢?
第一步就是爬虫和数据收集,谷歌首先需要知道该网站URL的存在,网站地图的更新或放置URL链接可以让谷歌抓取到新网站。
并且,频繁被访问的页面链接能更快地引起谷歌的注意。
爬虫系统(trawler system)会抓取新内容,并记录何时重新访问URL以检查网站更新,这由一个称为调度器的组件管理。
接着,存储服务器决定是否转发该URL或是否将其放到沙箱(sandbox)中。
谷歌之前一直否认沙箱的存在,但最近的泄露信息表明,(可疑的)垃圾网站和低价值网站也会被放入沙箱,谷歌显然会转发一些垃圾网站,可能是为了进一步分析内容和训练算法。
然后,图像链接被传输到ImageBot中,以便后续的搜索调用,有时会出现延迟的情况,ImageBot有分类功能,能够将相同或相似的图片放置在一个图像容器中。
爬虫系统似乎使用自己的PageRank来调整信息抓取频率,如果一个网站的流量更大,这个抓取频率就会增加(ClientTrafficFraction)。
谷歌的索引系统被称为Alexandria,为每个网页内容分配唯一的DocID。如果出现内容重复的情况,则不会创建新的ID,而是将URL链接到已有的DocID。
谷歌会明确区分URL和文档:一个文档可以由多个包含相似内容的URL构成,包括不同语言版本,所有这些URL都由同一个DocID进行调用。
如果碰到不同域名的重复内容,谷歌会选择在搜索排名中会显示规范版本。这也解释了为什么其他的URL有时可能会有相似的排名。并且,所谓「规范」版本的URL也不是一锤子买卖,而是会随着时间发生变化。
Alexandria收集文档的URL
作者的文档在网上只有一个版本,因此它被系统赋予了自己的DocID。
有了DocID之后,文档的各个部分都会搜索出关键词并汇总到搜索索引(search index)中。「热词列表」(hit list)中汇总了每页多次出现的关键词,会先被发送到直接索引(direct index)中。
以作者的网页为例,由于其中多次出现「pencil」一词,在词汇索引(word index)中,DocID就列在「pencil」条目下。
算法会根据各种文本特征计算出文档中「铅笔」一词的IR(信息检索)分数并分配给DocID,稍后用于发布列表(Posting List)。
比如,文档中「pencil」一词被加粗,并包含在一级标题中(存储在AvrTermWeight中),这类信号都会增加IR得分。
谷歌会将重要的文档移至HiveMind,即主内存系统,同时使用快速SSD和传统HDD(称为TeraGoogle)来长期存储不需要快速访问的信息。
值得注意的是,专家估计,在最近的AI热潮之前,谷歌掌握了全球约半数的网络服务器。
一个庞大的互联集群网络能够让数百万个主存单元一起工作,一位谷歌工程师曾在一次会议上指出,理论上,谷歌的主存储器可以存储整个网络。
有趣的是,存储在HiveMind中的重要文档的链接以及反向链接似乎有更高的权重,而HDD(TeraGoogle)中的URL链接可能权重较低,甚至可能不被考虑。
每个DocID的附加信息和信号都以动态方式存储在PerDocData中,这个存储库保存了每个文档最近的20个版本(通过CrawlerChangerateURLHistory),许多系统在调整相关性时都会访问这些信息。
并且,谷歌有能力随着时间变化评估不同的版本。如果想要完全更改文档的内容或主题,理论上需要创建20个过渡版本来完全覆盖掉旧的版本。
这就是为什么恢复一个过期域名(一个曾经活跃,但之后由于破产或其他原因被放弃或出售的域名)不会保留原来域名的排名优势。
如果一个域名的Admin-C和其主题内容同时发生变化,机器可以轻松识别出这一点。
此时,谷歌会将所有信号置零,曾经有流量价值的旧域名不再提供任何优势,与全新注册的域名无异,接手旧域名并不意味着接手原本的流量和排名。
除了泄密事件之外,美国司法机构针对谷歌的听证会和审判的证据文件也是有用的研究来源,甚至包含内部电子邮件
当有人在谷歌中输入搜索词「pencil」时,QBST(Query Based Salient Terms)开始工作。
QBST负责分析用户输入的搜索词,根据重要性和相关性为其中包含的各个词语分配不同的权重,并分别进行相关DocID的查询。
词汇加权过程相当复杂,涉及RankBrain、DeepRank(前身为BERT)和RankEmbeddedBERT等系统。
QBST对于SEO很重要,因为它会影响Google对搜索结果的排名,从而影响网站可以获得多少流量和可见度。
如果网站包含与用户查询匹配最常用的术语,QBST就会让网站排名更高。
经过QBST后,相关词汇如「pencil」,会被传递给Ascorer做进一步处理。
Ascorer从倒排索引(即词汇索引)中提取「pencil」条目下的前1000个DocID,按IR得分排名。
根据内部文件,这个列表称为「绿环」。在业内,这被称为发布列表(posting list)。
在我们关于「铅笔」例子中,相应文档在发布列表中排名第132位。如果没有其他系统的介入,这将是它的最终位次。
Superroot负责对刚刚Mustang筛选出的1000个候选网页重新排名,将1000个DocID的「绿环」缩减为10个结果的「蓝环」。
这个任务具体由Twiddlers和NavBoost执行,其他系统可能也有参与,但由于信息不准确,具体细节尚不清楚。
Mustang生成1000个潜在结果,Superroot将其过滤为10个
各种文件表明,谷歌使用了数百个Twiddler系统,我们可以将其视为类似于WordPress插件中的过滤器。
每个Twiddler都有自己特定的过滤目标,可以调整IR分数或者排名位次。
之所以用这种方式设计,是因为Twiddler相对容易创建,而且无需修改 Ascorer中复杂的排名算法。
排名算法的修改非常具有挑战性,因为涉及潜在的副作用,需要大量的规划和编程。相反,多个Twiddler并行或顺序操作,并不知道其他Twiddler的活动。
Twiddler基本可以分为两种类型:
-PreDoc Twiddlers可以处理几百个DocID的集合,因为它们几乎不需要额外的信息;
-相反,「Lazy」类型的Twiddler需要更多的信息,例如来自PerDocData数据库的信息,需要相对更长的时间和更复杂的过程。
因此,PreDocs先接收发布列表并减少网页条目,然后再使用较慢的「Lazy」类型的过滤器,两者结合使用大大节省了算力和时间。
两种类型的、超过100个Twiddler负责减少潜在的搜索结果数量并重新排序
经过测试,Twiddler有多种用途,开发者可以尝试使用新的过滤器、乘数或特定位置限制,甚至可以做到非常精准的操控,将一个特定的搜索结果排名到另一个结果的前面或后面。
谷歌的一份泄露的内部文件显示,某些Twiddler功能应仅由专家与核心搜索团队协商后使用。
如果您认为自己了解Twidder的工作原理,请相信我们:您不了解。我们也不确定自己是否了解
还有一些Twiddlers仅用于创建注释,并将这些注释添加到DocID中。
在COIVD期间,为什么你所在国家的卫生部门在COVID-19搜索中总是排在第一位?
那正是因为Twiddler会根据语言和地区,使用queriesForWhichOfficial来促进官方资源的精确分配。
虽然开发者无法控制Twiddler重新排序的结果,但了解其机制可以更好地解释排名波动和那些「无法解释的排名」。
全球范围内有数千名质量评估员负责为谷歌评估搜索结果,对新算法或过滤器进行上线前的测试。
谷歌表示,他们的评分仅供参考,不会直接影响排名。
这本质上是正确的,但他们的评分和投标票的确对排名产生了极大的间接影响。
评估员通常在移动设备上进行评估,从系统接收URL或搜索短语,并回答预设的问题。
例如,他们会被问到,「这篇内容作者和创作实践是否清晰?作者是否拥有该主题的专业知识?」
这些答案会被存储起来并用于训练机器学习算法,让算法能够更好地识别高质量、值得信赖的页面,和不太可靠的页面。
也就是说,人类评估者提供的结果成为深度学习算法的重要标准,谷歌搜索团队创建的排名标准反而没那么重要。
想象一下,什么样的网页会让人类评估者觉得可信?
如果某个网页包含作者的照片、全名和LinkedIn链接,通常会显得令人信服。反之,缺乏这些特征的网页会被判定为不那么可信。
接着,神经网络将识别这一特征为关键因素,经过至少30天的积极测试运行,模型可能开始自动将此特征用作排名标准。
因此,具有作者照片、全名和LinkedIn链接的页面可能会通过Twiddler机制获得排名提升,而缺乏这些特征的页面则会出现排名下降。
另外,根据谷歌泄露的信息,通过isAuthor属性和AuthorVectors属性(类似于「作者指纹识别」),可以让系统识别并区分出作者的独特用词和表达方式(即个人语言特征)。
评估员的评价被汇总成「信息满意度」(IS)分数。尽管有许多评估员参与,但IS评分仅适用于少数URL。
谷歌指出,许多没有被点击的文档可能也很重要。当系统无法进行推断时,文档会被自动发送给评估员并生成评分。
评估员相关的术语中提到了「黄金」,这表明某些文档可能有一个「黄金标准」,符合人类评估员的预期可能有助于文档达到「黄金」标准。