三年前,Googled的AlphaGo横空出世时,我写了
《AlphaGo、深度学习及SEO》这篇帖子,在那之后,我一直非常关注人工智能与搜索算法的进展。
我不知道搜索算法什么时候会大规模以AI为基础,也不知道目前AI技术在搜索算法中应用到了什么程度。由于目前人工智能技术的不可解释性
,搜索引擎以AI作为算法基础会是非常谨慎的,不然很不容易debug。
不过算法中的一些模块应用AI是肯定的,以前介绍过百度的DNN模型和Google的RankBrain算法
,都是AI在搜索算法中的应用。
那么完全以人工智能为基础的搜索算法是什么样的?工作原理和流程是什么?简单说一下我的理解。
人工智能的优势与搜索
目前实现人工智能的主流方法是机器学习中的深度学习分支,在这篇帖子里就不加严格区分了。
简单说,人工智能是给予系统大量训练数据,人工智能自己从中寻找模式和规律。给予AI系统的数据是打了标签的,或者说是告诉了AI系统结果。比如,在围棋中,AI系统有了大量历史棋局数据(后来的Alpha连历史棋局都不需要了,自我对局的数据就行了),以及这些棋局的输赢结果,这个结果就是标签。然后AI系统自我学习棋局盘面与结果(输赢)之间的关系。
在搜索中,AI系统有了页面的大量数据,也就是搜索引擎本身的索引库,还需要标签,也就是要知道哪些页面是高质量的?针对一个查询词,哪些搜索结果是用户满意的?然后AI算法自己学习页面特征(也就是排名因素)和排名之间的关系。
传统的搜索算法是搜索工程师人工选择排名因素,人工给予排名因素一定的权重,根据给定公式,计算出排名。这种方法的弊端是,当数据量大了,排名因素多了的时候,调整排名因素的权重是件很困难的事。最初的权重很可能就是根据常识,再加上拍脑袋,具有很大的主观随意性。当有几百个因素,这些因素又互相影响时,调整这些因素的权重就变成混乱、无法预见结果的事了。
而从海量数据中找模式正是AI的擅长。AI可以快速寻找可能的排名因素,调整排名因素权重,自动迭代计算,拟合出排名因素和用户满意的搜索结果之间的计算公式。
通过训练数据训练出来的计算公式就是AI搜索算法,可以应用于用户更多的搜索了。
谁来打标签?
既然训练AI搜索算法时需要打了标签的数据,那么这些标签数据是从哪来的?这就是搜索引擎质量评估员的作用了。
前不久Google质量评估指南
帖子里详细介绍了质量评估员的工作。这些真实用户(他们不是Google员工),在学习质量评估指南后,Google在评估系统中给评估员真实网站、真实查询词数据,评估员进行相关评估,最主要的就是:
- 给页面质量打分
- 给特定查询词的搜索结果打分
Google的质量评估员很早就存在了,应该不是为了开发AI算法招募的,而是用来评估传统算法质量的。但他们的评估数据刚好可以被人工智能系统有效使用。
这样,AI系统就知道,针对某个查询词,用户满意的搜索结果是哪些页面,是按什么顺序排名的。
现在,AI系统有了海量页面特征数据,也知道什么样的搜索结果是真实用户满意的,下一步就是训练系统,寻找页面特征和搜索排名之间的关系。
训练人工智能搜索算法
搜索引擎可以把打了标签的搜索结果数据分成两组。一组训练用,一组验证用。
AI算法检查训练组搜索结果中的页面有哪些特征,这些特征又应该给予什么样的权重,根据什么样的计算公式,才能计算出用户满意的(打过标签的)搜索结果。
与传统算法不同的是,需要哪些特征(排名因素),这些特征给予多少权重,不是工程师决定的,是AI系统自己寻找和评估的。这些因素也许是工程师想得到、早就在用的,比如:
- 页面的关键词密度
- 页面内容长度
- 页面上有没有广告
- 页面有多少外部链接
- 页面有多少内部链接
- 页面有多少以查询词为锚文字的链接
- 页面所在域名有多少外链
- 页面打开速度多快
- 等等等等,可能有几百上千个
也许是工程师压根儿没想过的,也许有些是表面上看起来毫无关系、毫无道理的,比如:
- 页面正文用的几号字
- 文章作者名字是三个字
- 页面第一次被抓取是星期几
- 页面外链数是单数偶数
以上只是举例,为了说明,AI寻找的不是因果关系,而是相关关系。只要AI看到排名好的页面有哪些特征就够了,至于把这些特征与排名联系起来是不是看着有道理,并不是AI关心的,也是不必要关心的。
当然,有些因素可能是负面的,比如域名长度,很可能与高排名是负相关的。
AI系统被训练的过程就是找到这些排名因素(无论人类看着是否有道理),给予这些因素一定权重,拟合出一个计算公式,刚好能排出用户满意的那个搜索结果。这个拟合过程应该是迭代的,一个权重数值、一个公式不行,自动调整,再次计算,直到比较完美拟合出评估员打过标签的搜索结果。这个训练过程也许要几天,也许几个星期,要看数据量。
AI搜索算法验证
被训练过的AI搜索算法就可以应用于其它没在训练数据里的查询词了。
首先用前面提到的验证组数据验证一下,如果新训练出来的算法给出的搜索结果与验证组数据(同样是评估员打过标签的)吻合,说明算法不错,可以上线了。如果AI算法给出的搜索结果与验证组搜索结果里的页面不同,或者页面基本相同但排序差别很大,可能就要重新训练AI系统了。
当然,要做到所有查询词,AI算法给出的搜索结果与评估员打过最满意标签的搜索结果完全一样,是不大可能的。估计只要排在前面,比如前20名的页面顺序差异在一定的容错范围内就可以了。排在越前面,需要越低的容错率,比如排在第一第二的页面不对,比排在第三页之后的页面不对严重多了。
验证过的算法就可以上线,接受真实用户的检验了。这里很可能牵扯到一个SEO们普遍认为与排名有关、但搜索引擎一直否认的排名因素:用户体验数据是否是排名因素?
很多SEO排名因素统计表明,页面点击率、跳出率、用户停留时间、访问深度与排名有很高的相关性,但Google一直明确否认这些数据是排名因素。当然,对百度来说,点击率显然是排名因素。
原因很可能就是,搜索引擎需要用这些用户体验数据验证搜索算法质量,如果用户普遍点击率降低、跳出率提高,说明新上线的算法有问题,需要调整。虽然搜索引擎没有直接使用用户数据来排名,但算法的目标就是提高用户数据,使得这两者之间高度相关。
新的AI算法上线后,搜索引擎监控的用户数据说明用户满意,算法就成功了,等待下一轮的优化。
以上纯属猜测。