三年前,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算法上线后,搜索引擎监控的用户数据说明用户满意,算法就成功了,等待下一轮的优化。
以上纯属猜测。