欢欢对外有过两次对头条推荐算法的分享,两次分享的质量差距还是挺大的。第一次的分享没有参加(叫今日头条的人工智能技术实践),第二次的分享(叫让算法公开透明),是公开报名,我有幸参加了。总体来说,明显第二次分享是给D的解释大于真正的算法介绍,不过对于推荐算法入门来说,还是能学到很多的东西。
最近就两次文章的PPT+文章做了一些整理,学习,总结。以下内容不代表原分享,掺杂了很多自己的理解。(附上第二次分享文章+视频:http://www.sohu.com/a/218261968_464033)
文章从以下几个方面分享我的学习与总结:
1、推荐算法的价值
2、头条推荐算法介绍
3、推荐工程架构与推荐算法评估工具
4、头条推荐算法一些"高明"的地方
有了语言之后,人类的信息传递开始变的频繁。媒体形式也开始了发展。
1、最早的媒体形式是语言(公元前2000年), 人脑存储,依赖语言分发内容(口口相传),使用听觉接收信息,获取效率低下,存储效率低,质量差,量少。
2、然后是文字(公元前1000年),开始了记录,但是媒介存储不方便,比如竹简,石头等。好处是信息被固化存储,可以利用视觉直接获取,效率高,但是信息记录困难,存储量还是少。
3、接着是纸的出现,加上印刷术(公元500年),大量的文字信息可以被及时存储,复制。获取效率高,记录速度快,存储量大,但是文本传播效率依赖于传统的交通(比如马车),还是比较慢,即传播慢。
4、接着广播与电视,电报(20世纪20年代)等技术出现了。电子化的信息,有着比纸张更强大的记录效率(可以快速直接获得富媒体信息),更大的存储量,更关键的是,更快的传播效率。但是结构上集中,信息生产传播渠道中心化。
5、然后进入了互联网时代(20世纪70年代),信息的获取,传播,存储能力被极大的放大,同时,信息的生产不再中心化,信息生产的权利被释放,人人都是信息的制造者,传播者,记录者。
随着信息的爆炸,新的问题出现了:内容太多了,我该怎么获取我所需要的?筛选成本太高了!
进入互联时代后,信息爆炸,为了更好的获取信息,解决信息过载的问题,出现了两种解决方案:分类(yahoo) &搜索引擎(google)。而在更细粒度的新闻行业,解决方案是 人工选推,人肉充当筛选器,即传统以编辑为主的门户的解决方案(比如sina门户)。2012年,一个不知名的黑马杀入新闻客户端的江湖,4年的时间后,推荐算法正式超过了人工编辑推送,成为量最大的推送方式。这被认为是一个分水岭,它意味着我们以后接触到的信息,将主要由"智能机器人"为我们准备,而以往看似不可缺的"人工编辑"角色,则不可避免的要被边缘化。随后,各家公司纷纷拥抱推荐算法。
推荐算法是信息过载情况下,用户获取信息的一个十分有效的解决方案。
原封不动的搬运一下曹欢欢老师的这张PPT:智能算法给内容分发带来的红利
平台类型 | 优势 | 缺陷 |
门户 | 人工精选内容,质量有保障 | 分发效率低,日均分发数百条内容,用户长尾兴趣无法被满足 |
社交媒体 | 个性化,内容分发效率高 | 信噪比低,充斥大量不感兴趣的内容 |
社交网络 | 个性化,内容分发效率高,互动性好 | 信噪比低,充斥大量不感兴趣的内容 |
算法推荐 | 个性化,内容分发效率高 | 需要更多,更好的数据 |
所谓推荐算法,简单的说,就是连接人与内容。而连接的这条线,就是用户对这个内容的喜好程度。
f(x)就是推荐算法,就是求 针对特定用户 对 特定的内容 在 特定场景下的喜好程度(或者说感兴趣的概率)
举例(仅举例特征,不说明具体的值)
1、Xu:兴趣,职业,年龄,性别,机型等
2、Xi:主题,热度,标签,质量,作者来源,相似文章等
3、Xc:地理位置,时间,网络环境,天气等
我们刚说,推荐算法的目标是计算用户对内容的喜好程度,但是大多数时候用户对内容的喜好反馈是隐式的反馈。所以没有办法直接拟合喜好这个结果。
我们只能从 "正反馈" 行为中抽象出喜好。 增加正反馈,减少负反馈,可以变相的达到拟合"喜好"的结果。
一般的目标有: 正反馈:点击列表进入正文,停留时长,关注,点赞,评论,收藏,分享(转发),负反馈:dislike,正文页短停留,直接关闭。
推荐算法的目标:提升所有的正反馈,而且最终的实现数值排序上,是多个目标加权平衡的最结果。
思考题:1、各个目标之间的权重,怎么分配。 2、是否存在终极目标,直接代替所有目标。
算法给定候选集集合,往往发现,因为推荐算法的局限性,或者数据的局限性,有一些重要的目标,是无法使用算法拟合的。这些目标,有些甚至无法数值化的来衡量。但是定性的可以看出很重要。这类的目标,需要人工的去使用策略或者说规则控制。
典型的有:
1、广告,导流类(比如头条的问答,微头条)特型内容的插入频次
2、低俗,低质,恶心,标题党等违法违规,欺骗性质内容。欺骗机器的"善良",需要其他规则辅助打压内容或者账号。
3、重要新闻,需要置顶,强插,因为机器短时间学习不到它为啥这么重要,这类内容又需要及时曝光。
4、运营机制:需要对新作者,原创作者做流量倾斜保护。
这块比较虚,我也就务虚的列一下:CF,LR,DNN,GBDT,FM等。这块重点想说一下,没有标准答案,只有合适的,没有最好的。
典型特征比较有意义,列一下,没有具体分享哪些特征用于哪儿(召回还是排序),我按照自己的理解写一下(里的推测,不一定准确)。
1、相关性特征:关键词匹配,分类匹配,主题匹配,来源匹配。(召回)
2、热度特征:全局热度,分类热度,主题热度,关键词热度。(排序)
3、协同特征:点击相似用户,兴趣分类相似用户,主题相似用户,兴趣词相似用户。(召回,排序应该都有)
4、环境特征:地理位置,时间。(召回排序应该都有)
5、上下文特征:上一刷内容,最近N次刷新内容,最近N天刷新内容(第二次分享没有说)。
6、Bias特征:用户先验点击率,用户性别,年龄(第二次分享没有说,排序)。
由于头条的文本类内容大多数是长文本,而新闻类内容讲究时效性,ContentBase的推荐十分重要,尤其对内容冷启动。两次分享翻来覆去的,说了很多关于NLP相关的知识(猜测跟欢欢的特长有关),文本的分析其实主要是对内容的分析,对文本分析,主要用户对用户兴趣建模,做内容推荐召回,生成频道。头条的文本特征主要分类以下几类:第一部分是语义标签,由人工预定义的,有明确意义的显式特征(需要持续标注,新名词,新概念会不断出现)。第二部分是隐式语义特征,主要由topic跟关键词组成。语义标签分为:分类,概念,实体。不同层级的要求不一样。分类体系要求召回高,准确率要求不是特别高。实体不要求覆盖全,尽量覆盖每个领域的热门人物,机构,作品,产品等。概念体系负责表达抽象的,但是又有精确意义的概念,也不要求覆盖全。分类算法,分享的是层次化文本分类SVM+CNN+RNN。实体识别算法上,包括:分词,词性标注,抽取候选,去歧,计算相关性。这块说的比较简单,没有什么实际意义。
但是我有一个问题,没有理解清楚:标签,关键词,实体词,概念词之间的关系,求清楚的分享。
模型的更新
1、几乎是实时的,用户上一刷的行为能够快速反馈到下一刷。
2、系统是自研的,模型参数存储包含几百亿原始特征和数十亿向量特征(这块没有想明白,为什么这么多的原始特征量)
用户画像的更新
1、流式更新,收集一部分的用户数据就更新用户兴趣画像
2、较为固定的信息(比如性别,年龄),还是日更新频次。
一个事情没有办法评估,就没有办法优化。头条的AB测试平台叫Libra,具体关于AB测试的东西,我就不细说了,之前写过专门的文章。
这里重点提一下,有一些评估是需要人工做的,人肉的评估。
这部分,重点以list的形式,记录一些欢欢分享出来的,头条在推荐上,我认为做的比较"细致"的地方
用户兴趣计算时候的策略
1、噪声过滤:过滤停留时长短的点击,打击标题党
2、惩罚热点:用户在热门文章上的动作做降权处理
3、时间衰减:随着用户动作的增加,老的特征权重会随着时间衰减,新动作贡献的特征权重会变大。(感觉是不是可以放在长短期兴趣里)
4、惩罚展现:不止使用正样本,如果用户不点击推荐的内容,则会惩罚。(这个应该是部分特征或者算法吧?)
5、考虑全局背景:考虑给定特征的人均点击比例(做L1norm)
富媒体图像识别
1、图像识别:识别图片中的实体
2、反感的图片识别:典型的就是头条的用户都很讨厌蛇,密集恐惧症类的图片,标注样本,CNN学,干掉
3、算法对视频抽取封面,提升点击率
4、算法对图片做智能裁剪,feed流里展现有"意思"的部分,从而提高点击率
最后,瞎说一些话,很多人都觉得头条的算法很牛逼,当然的确很牛逼。但是我想说的是,不光是算法牛逼。大部分公司做不好推荐算法,其实本质上不是推荐技术上的问题。有两个宏观层面的问题很严重。
第一个问题是数据准确性问题,大部分用户 要么数据采集不对,要么算不对。数据是机器的食材,如果做不好数据,自然做不出舌尖上的算法。
第二个问题是工程架构,算法对数据的存储,计算要求都很高,而且时效性要求很高。大部分公司的机器学习平台,做的都很差。算法工程师,毕竟还是工程师。有再多的想法,思路,做不到,还是白瞎。
end。