现状:
当计算机的算力不断发展,甚至大规模GPU,FPGA的集群使得海量的计算资源唾手可得的时候。深度学习在语音识别,图像识别等领域已经可以说是大放异彩,瞬间打败了一众traditional method。近年,BERT的出现也让深度学习在NLP领域打破多个纪录,更新了数个state of art。而在工业界一些最重要的领域(给公司盈利,创造新的产品模式的算法),比如推荐,广告(也可以看作推荐广告)等领域。深度学习也可以带来很显著的提升(跟传统方法,LR/FM等相比),但远远不如那几个学术领域带来的变革之大,which可以说是将效果提升到了另一个次元。
为何有此般差异?究其原因:
1、目前看来,深度学习对低维连续稠密的数据会有更好的学习能力。而工业推荐领域的数据大部分是高维稀疏的数据。
1.1、高维稀疏数据的训练在工程上本身就会面临很大的问题。(百亿级别的特征在特征,参数存储,训练预估的效率上都需要从工程上去优化和攻克)
1.2、高维特征构建的模型由于参数量过大,很容易过拟合(参考VC dimension)。同时为了优化其工程性能,设计的特征准入,特征淘汰的策略也存在很大不确定性。
2、特征刻画的片面,在CV,NLP等领域,所有的特征,已经在图片像素和文本文字中蕴含了。而针对用户的推荐系统,我们可能很难获得一些关键信息,比如用户所在地此时的天气,用户所在场所的人流密度,甚至用户此时的心情。这些信息有的难于获取,有的可能还难于数值化准确地刻画。
2.1、从另一个角度来说,也可以说我们要预估的目标在当前的特征表达集上,有较大的随机性(不可预估性),可以参见贝叶斯误差率(bayes error rate)。当你给定特征集时,BER为假设数据无限的情况下,从统计能获得的最小误差。此误差也是你的机器学习方法能达到的理论最小值(如果你知道真实的分布参数【当然你都知道了就没有机器学习的事儿了】,那么用贝叶斯公式计算的概率作为决策依据即被称为为最小贝叶斯错误率决策)。比如你知道真实集合中叫Sam的人有80%的几率是美国人。given这个人的名字Sam(名字在这里就是特征集),问你此人是否为美国人,你回答是,那么这个答案仍有20%的几率是错误的。这个随机误差在仅有其名字叫Sam这一个刻画特征下是不可能消除的,此即为BER。当前机器学习落地的方法中,一般都会加入userid,itemid这类的特征(one hot),这些特征的加入理论上能使模型能在训练集上达到非常低的误差甚至0误差(理论上你输入的特征维度足够,并且在训练集上有足够区分度,就能在此集合【训练集】达到很低的误差),但是问题是此类特征基本没有泛化能力(实际上,我们在使用中运用到的,更多的是他们提供的更多的是记忆能力),非常容易导致过拟合,若在有Regularzation的情况下,训练集误差很难降到很低。当对这类id特征使用embedding等手段进行抽取时,实际上是对用户(商品)的特征进行了一个low rank的假设,希望用户的特性在一个低维的表达上具有泛化能力,由于限制了一个较小的维度,所以上层weight的参数量有所减少,整体的自由变量数(包含embeding参数量)也有数量级的下降。但是在实际运用中,这样训练仍有较高的overfitting风险。从经验看来,在多数工业界落地的场景中,ctr,cvr预估,时长预估等任务当中,都有不同程度的迹象让我们能猜测出其特征数据集本身有着并不小的BER。也许我们使用LR,FM的时候,误差已经离当前的BER下限不远了,所以工业界会拿很多的精力去刻画用户商品的特征,挖掘特征。
撇开差异,寻其互通之处:
上面主要说了一些工业界和学术界所面临的和需要解决的不同问题。这些根本性的差异也许是无法消除的。但是如果我们将DNN的底层视作特征的抽取器,如CV中像素间的关系用CNN抽取,NLP中文字的关系特征用attention抽取,那么工业界无碍乎是特征本身的形式更多样,面对那些类似形式的特征,也可以学习学术界特征抽取的方法。实际上工业界也确实汲取了很多学术界的成果,在实践中也运用了不同的结构对特征进行抽取。
近些年来,GAN,RL在学术界的成果,也启发了不少推荐广告项目在工业界的研究和试验方向。
工业界一些比较受关注的研究:很多都偏向工程方案的设计与优化
1、大规模机器学习系统(其特征存储,离线训练,在线训练,自动调参,自动特征筛选淘汰 。。)
2、大规模实时召回,排序系统(模型线上预估,近线预估,向量召回,多目标融合排序List-wise优化。。)
3、用户画像的挖掘,存储。(用户特征表达,实时行为数据,兴趣点挖掘,兴趣点关联知识图谱。。)
4、产品与机制设计(广告拍卖机制gsp,vcg,预算平滑控制,推荐系统生态评估【多样性,新鲜度,热点性】。。)
工业界环境做研究最主要的问题:
由于工业界所面临的问题是各种各样的,每个场景拥有的数据,特征的差异也非常的大,很难设计总结出标准化,具有概括性的求解问题(如CV,NLP等都有标准数据集)。在实践中也是如此。就比如说,我设计了一个ctr模型,可能在百度广告的产品线上效果不错,有一定收益。但是换到阿里的广告产品,面对不一样的数据特征分布,效果也可能会不尽人意。同理,阿里的DIN在b站的电商上效果也不一定好,b站没有那么多样化的产品,且业务规模小也很难拿到用户整个兴趣的数据(比如用户在站外,别的电商平台的搜索便无法获得,阿里平台足够大,有足够多足够精细完整的用户数据)。
所以,当我们在设计优化工业界算法产品的时候,更多地要根据场景,和当前的环境(拥有的特征,数据,样本)来进行设计和优化,思考如何去跟好地理解用户,理解用户的行为逻辑,才能更好地优化产品。并没有能解决一切问题的答案。
网友评论