GAITC2022智媒专题论坛|王健民:人工智能技术创新,赋能微博内容理解与分发
11月27日,在2022全球人工智能技术大会上,由CAAI智能 传媒 专委会、中国传媒大学 媒体 融合与传播国家重点实验室、新浪AI媒体研究院联合支持的“融合与发展”新智者·智能媒体专题论坛在线上举行。微博机器学习总经理、微博技术委员会委员王健民分享了题为《人工智能的技术创新 赋能微博内容理解与分发》的演讲,和与会嘉宾交流人工智能技术发展的趋势,以及微博推荐系统面临复杂多样的业务场景中的创新理论和实践成果,解读智媒时代的发展现状和未来方向。
图注:微博王建民-“融合与发展”新智者·智能媒体专题论坛
以下是王建民分享实录,内容经编辑略有删减:
大家好,我是来自微博的王建民,非常高兴和大家一起交流,我今天分享的主题是:《人工智能的技术创新,赋能微博内容理解与分发》。
首先,我来看一看人工智能的总体发展趋势。纵观历史,可以看出人工智能的发展,有三个明显特征:分别是训练数据的海量化及多样化;算法模型的复杂化及通用化以及算力的高效化及规模化。
我们知道,数据、算法和算力是构成人工智能的三大要素。在数据方面,训练数据,从早期的万级别规模,到达了目前的百亿级别规模,并且,多种数据形态被融入进来。而算法方面,模型的参数 从早期的万级别参数量发展到目前的万亿级参数规模,而且,模型结构有大一统的趋势。数据和算法的规模和效率,都是建立在单机算力越来越强、机器越来越多的分布式计算架构之上的。
我们在具体实际工作中看到的一些人工智能发展趋势。首先,我们看到的一个明显趋势,就是模型的训练过程,逐步从有监督为主,转化为自监督和无监督为主。
我们原来训练一个模型,往往是人工先标注一批数据,然后训练模型。这种方法有很大的局限性,那就是人工标注成本很高,所以很难获得大量数据,数据量不够,模型没有得到充分训练。参数规模大的优势根本就发挥不出来。
为了缓解缺乏数据的问题,“自监督”模式逐渐流行。“自监督”机器学习,往往通过一些规则,自动构建训练数据,避免了人工标注成本高、数量少的问题,我们就可以低成本地获得海量的训练数据。
典型的自监督学习代表,就是Bert模型,它随机扣掉一句话中的部分单词,让模型根据剩下的单词来预测被扣掉的单词,通过这种方式,可以自动获得几乎无限的训练数据。在自然语言领域,Bert是一个里程碑式的进步。
在人工智能技术发展趋势中,这些年图像理解在各行各业应用越来越广泛。主要得益于两方面:一方面是5G等通信技术的快速发展,另一方面由于 手机 终端的处理能力越来越强大,使得图片、视频类型的内容生产成本越来越低,图像内容也就越来越多。
经过这么多年的发展,人工智能在图像理解领域取得的辉煌的成就,尤其是在一些细分领域,比如人脸检测与人脸识别。而在自动驾驶领域,虽然已经取得很不错的进展,要做到完全放心使用,我觉得还是有一定的路要走。
刚才提到过,除了文本内容,图片、视频类型内容在网络内容中占比越来越高,单从一个模态去理解内容,总是有很大的局限性,应用也会受到限制。所以综合多个模态去理解内容,是人工智能发展的一个必然趋势。
人工智能的另外一个趋势,是超大规模图计算。这个主要得益于计算机算力越来越强悍。相对其他机器学习模型,超大规模图计算有个特殊的优势:信息不再是一个一个的孤立点,信息在超大网络中的传递,促进信息的流动、汇聚与集成,
这种算法,对信息量比较少的节点尤为重要,比如,对系统里面的新用户,也就是我们常说的冷启动用户,他本来的信息就非常少,不过可以通过网络中临近的用户,来推导这个用户的信息。这就是超大规模图计算的魅力所在
人工智能还有一个明显的技术趋势,就是从专用模型走向通用模型。目前的AI模型绝大多数仍然是任务专用的,通常针对具体任务设计特定结构的模型,一个模型专门做一件事,比如,自然语言处理 常常会使用Bert模型、图像处理 经常采用CNN模型。
从专用模型走向通用模型则是一个技术发展趋势,谷歌在前些年提出这一构想,希望通过构造一个通用的大模型,达到“一个模型做多件事”的目标。
不同任务数据输入后,通过路由算法,选择神经网络的部分路径到达模型输出层,不同任务既有参数共享,也有任务独有的模型参数部分,通过这种方式来达成“一个模型做多件事”的目标。
另外,强化学习是人工智能技术发展趋势里面一个很重要的领域。大家提到强化学习,可能第一时间想到的是AlphaGo,确实,AlphaGo和李世石的“世纪之战“,是人工智能的里程碑事件。其实,强化学习在其他领域也有很多的结合点:如自动打 游戏 ,自动驾驶,机器人等领域。
个人觉得,只要我们深刻理解复杂的业务场景,找到一个合适的,容易量化的reward函数,强化学习技术就会在业务发挥重要的价值。
前面跟大家简单的介绍了人工智能的几大发展趋势。这些都是我们在具体实际工作中的一些感受,也是微博对人工智能工作理解的一个总结。
我们应该感恩这个时代,人工智能的飞速发展,让我们能做的事情越来越多,也让我们的事情越做越好。微博和大部分 互联网 公司一样,正在享受着人工智能 给我们带来的红利。我们正在把人工智能方方面面的技术,与我们的核心业务深度结合,赋能各个应用场景。
具体来说,我们的应用场景,包括:关系分发,兴趣推荐,push,超话,视频,新闻等业务场景。
微博推荐系统面临复杂多样的业务场景,微博环境下做推荐系统,既具有鲜明的微博特色,同时又面临着复杂的业务场景。主要体现在三个方面:首先是无处不在的 社交 关系。我们知道,微博作为国内最大的社交媒体,目前月活用户达到5个多亿,而这些用户通过关注关系、发博文、对博文的转评赞等各种行为,建立起了一个庞大的社交网络。其次,微博内容具有时效性强、多样性高的特色,很多社会热点事件都是第一时间在微博引爆的,而且作为综合媒体,微博涵盖了几十个高质量的垂直领域。第三,是多元化场景的推荐需求。我们微博很多场景,比如关系流、热点流、视频流等,都有很强的推荐需求。
简单的说,微博推荐系统整体由三个部分构成:第一部分是,微博内容理解、也就是我们对微博文本,图像,视频的理解。第二部分是,微博用户理解,也是我们常说的用户画像。第三部分是,基于我们对微博内容的理解,对用户的理解,把高质量的微博内容,分发给感兴趣的用户人群,这就是微博推荐系统要做的事情。
首先要分享的是微博内容理解,微博内容包含了文本、图像、视频三类不同类型的信息。其中,对文本的理解,是微博最重要也是最基础的一项工作。对微博内容打标签,是对文本理解的重要组成部分。
为此,我们构建了一个三级的内容标签体系。第一级是比较宽泛的类别定义,比如“体育”、“娱乐”等类别,目前包含56个类别;第二级是在第一级基础上的细化,比如“体育”一级类别下就有:“足球”、“篮球”等细化类目;第三级标签是主要是实体识别,比如具体到的某一个球星,目前包含几十万个这样的三级标签。
有了标签体系后,打标签具体是怎么做的呢?简单的说,我们采用 FastText+Bert 结合的方案。
大家都知道FastText和Bert各自有各自优势,也有他们的缺点,FastText速度快但是效果不够好,Bert效果好但是速度慢。
我们针对高质量的博文直接使用 Bert,其他的博文先经过 FastText,标签得分足够高,则认为结果已经比较好了,不再使用 Bert进行处理;若得分不够高,则使用 Bert 再预测一次。这样,可以利用FastText速度快和,又利用了Bert效果好的优点,兼顾速度和效果。
除此以外,我们还会对微博的吸引力,实效性,质量得分,是否是广告,以及情感也会做进一步的分析和建模等等
另外一项很重要的文本理解的工作是话题模型。用户在发微博的时候,很多人喜欢用双#号括起一句话来作为这条微博的主题,我们内部把这个叫做“话题”。
尽管很多用户在发微博的时候,会主动加上某个话题,但是更多微博内容其实是没有“话题”信息的。所以我们希望通过技术手段,来自动给那些不带“话题”的微博自动加上一个“话题“。这就是话题模型。
那怎么做的呢?我们在这里就用到了”对比学习“,“对比学习”是最近几年兴起的自监督学习方法,也就是说不需要人工标注样本,算法模型通过自动构造训练样本来学习。
简单的说,我们把带话题的微博拆分为微博正文和微博话题,把这两个放一起,作为正例,随机选取其它不同话题的微博正文作为负例,然后使用Bert分别对正文和话题进行语义编码,在编码后的投影空间将正例距离拉近,负例距离推远,这样我们就训练好一个模型。
当训练好模型后,在推理的时候,对于不带“话题”的微博内容,输入文本信息到Bert,模型对微博内容进行编码,然后去匹配最相似的话题内容,这样就可以给这条新微博,加上了一个相对比较精准的话题。
除了文本理解,微博在图片理解方面所做的比较重要一项的是明星识别。 “明星-粉丝”关系是微博生态的重要组成部分,所以识别图片中出现的是哪位明星,在微博应用场景下就很有实用价值。
微博先人工标注一批明星的图片数据,构建一个包含数百位微博流量明星的知识库,输入一张图片后,首先进行人脸检测,之后使用比较成熟的人脸识别技术对明星进行识别,人脸检测和人脸识别技术相对比较成熟,所以相应的识别准确率比较高,性能也很不错。
对图像理解另外一个很重要的应用是智能裁剪。现在大家都是用手机刷微博,很多微博都带多张图片的,因为手机的展示界面空间有限,往往会对图片进行一些裁剪,然后再展示给用户。
我们早期的图片裁剪方法比较简单,只是裁剪出图片的中心区域,很多时候,这种简单策略效果不太好,像左边这几张图,如果只裁剪出图片的中心区域,常常会将人脸等重要区域给剪掉,给用户的观感很不好。
针对这个问题,我们开发了智能裁剪技术,通过人工智能识别出图片中的重要区域,例如人脸区域,这样在裁剪图片的时候,尽量保留这些比较重要的区域。这项功能上线后,一些运营的关键指标取得了很大提升。
微博的文本理解、图像理解,这些都是内容理解中最基础的工作,内容理解还有一项非常重要的工作就是-多模态预训练模型,这能促进微博内容深度融合。
微博内容中包含了越来越多的图像和视频内容。要想搞明白一个微博到底在说什么,仅仅理解文本内容,或者仅仅理解图片内容是不够的,我们需要采用多模态理解技术,融合文本、图像、视频等多种媒体信息。这里微博采用的是“对比学习”技术。
对比学习在前面的话题模型中已经提到过,这里的对比学习和话题模型的对比学习非常类似。用bert对微博文本内容进行编码,图像和视频内容通过vision transformer进行编码,然后通过fusion子网络进行融合,形成微博的embedding编码。
经过预训练,学好的微博编码器 可以拿来对新的微博内容进行编码,embedding结果可以广泛的用到下游的各种业务中。由于训练的数据来自微博,大家知道微博的内容非常有特色,所以最终的embedding结果也很有微博特色的。
同样,微博在用户理解方面工作中,采取超大规模图计算。微博是国内最大的社交媒体。微博的社交媒体属性天然匹配超大规模图计算。
微博以用户和博文作为图中的节点,以用户间的关注关系、用户对博文转、评、赞等互动行为作为图中的边,这样就可以构建一个超大规模的图,节点可以达到10亿规模、边可以达到100亿规模。
通过对超大规模图的传播计算中,我们可以得到一个描述用户兴趣的embedding向量。这种做法尤其对系统的新用户,也就是对冷启动用户有很好的应用价值。
当我们做好了对微博内容的理解,对微博用户的理解,接下来要做的事就事怎么样把高质量的内容分发给感兴趣的用户,这就是推荐系统要做的事情。
而当一个推荐系统基本成型之后,我们还会遇到哪些问题,怎么去解决。首先我们遇到的是一个多场景问题,前面提到过,微博在多很多场景都有推荐需求,比如微博主页的关系流,推荐流,微博发现页的热点流。还有视频流,视频后推荐流等
这些场景到底是什么关系呢?我们分析认为,这些场景之间有共性,也有个性:不同场景有很大的用户重叠度,同一个用户虽然在不同从场景下,他的基本兴趣是一致的;与此同时,场景之间也有很多差异,比如有的用户偏向社交型,有的用户偏向社会热点型,有的用户喜欢刷视频。
所以,怎么面对这个问题,对我们来说是一个很有意思的挑战。传统方式是各业务场景独立建模,各做各的,这样带来的问题是什么呢?
诸如:各模型无法很好抓住用户的共性;有些小场景流量少,缺乏训练数据,无法得到充分训练;维护多场景多个模型系统资源开销大
解决办法就是一个模型服务多个场景,这样做的好处是打通了各场景数据,更好的解决各场景冷启动问题;多场景共享训练,抓住微博用户共性;抓住共性的同时,也学习不同场景的差异;以及降低系统资源开销;
既然一个模型服务多个场景有着诸多的优势,微博具体怎么做呢?解决的核心问题是怎么通过网络结构表示场景间的共性和个性?
首先,在模型的底层输入,无论是用户特征,还是内容特征,大家都是共享的,一致的。中间的一部分“专家子网络”,这些网络参数是各个场景共享的;而边上子网络参数则是各个场景所独有的。通过这种方式,就可以兼顾场景的共性与个性,能够通过一个模型服务多个场景,这样同时也节省了资源。
除了多场景模型外,我们还对推荐系统做了很多技术研究,这里介绍下我们利用知识蒸馏技术 来解决推荐链路一致性问题。
在推荐系统内部,一般会分为召回、粗排、精排等环节。召回环节要从海量微博中,筛选出几千条用户可能感兴趣的内容,因为要处理的微博数量多,所以要求速度快,同时精准度要求就没那么高了;在粗排的时候,需要利用少量特征和简单模型 对召回内容初步排序;最后的精排,则是使用大量特征和复杂模型 对内容进行精准排序。
这三个环节形成漏斗,越往后的环节 需要参与排序的内容数量越少,精准度越高。过程中难免产生不一致问题。具体来说,前面召回的物料并不是后续粗排和精排真正需要的。
在这里,微博采用“知识蒸馏”来解决链路一致性问题。如图所示,我们让精排模型作为“老师”,召回或者粗排模型作为“学生”,让精排指导召回模型的训练,这样召回模型就能学会精排模型的排序偏好,召回模型能和精排模型保持大体上一致,也就是说,召回模型召回的物料,基本上能满足后续排序的期望。
知识蒸馏增强推荐链路一致性,我们做过相应的实验,效果还不错。
在微博推荐系统中,强化学习增加推荐多目标个性化融合很关键。
做人工智能,很重要的一个工作,就是找到一个可量化的优化目标,也就是loss函数。对于推荐系统来说,点击率是大家很容易想到的优化目标。在具体的业务中,点击率很重要,但仅仅是点击率是不够的。微博有个很有特色的指标是,互动率。也就是用户转、评、赞这条微博的概率。当然还有用户时长目标。这一点也很重要。几乎所有的互联网产品都在竞争用户时长
所以,一个成熟的推荐系统需要解决一个多目标问题
那么问题来了,这么多目标怎么融合?我们一般会采用加法融合、乘法融合,或者既有加法,也有乘法。当然我们肯定不是简单的相加或者相乘。这些融合是有参数的。
接下来的问题就是怎么调参了。最简单粗暴的方法是指定参数,比如都是1。还有一些做法就是,固定其他参数,一次只调一个参数,达到最优后,再用同样的方法调整另外的参数
这样的方法虽然简单,但问题是效率低,需要做大量的实验,全凭人工经验,所以,有人调侃算法工程师为调参工程师。
微博的最新做法就是用强化学习来调参。具体来说的话,首先把推荐的流量用正交的方法分成很多小流量,然后每组实验带来的收益作为强化学习的reward,来训练强化学习模型。这样经过多轮多次小流量实验,agent基本上能学到一个比较好的参数。
当然这种做法也有不足之处,最大的问题是,互联网产品讲究小步快跑,没有那么多时间和资源给我们大量的实验,因此强化学习的样本不会太多。
所以,我们面对的很大的挑战就是怎么用有限的资源,有限的时间来高效的学习一个更好的参数。这个问题希望有机会和大家进一步探讨。
以上就是我分享的全部内容,感谢大家的观看,谢谢大家!