算法问题的银弹

Silver_Bullet_AI_Problems

Posted by 邬小达 on October 12, 2020

对于使用算法(机器学习、深度学习等)解决实际问题的同学而言,大多数人调侃自己不过是调参侠而言。特别是深度学习,选什么激活函数,选什么隐藏层,是否进行dropout正则化、学习率调整、网络深度和层数设置等等。

由于调参的繁琐,我们往往采取偷懒的方式。比如机器学习首选XGBoost,卷积神经网络首选AlexNet、循环神经网络首选LSTM。这些模型常常作为解决问题的银弹使用。

但模型和参数的选择并不是最重要的。算法的使用应当以场景为导向。比如你要解决怎样的问题?优化的目标是什么?影响因素有哪些?

阿里的LS-PLM模型1

阿里在做淘宝推荐系统时,绕不开客群分类的问题。比如使用CTR模型来预估女性受众点击女装广告的点击率,那么就不应该把男性点击数码产品的样本考虑进来。这样,分群建模是一个常见的思路。但是,阿里的创新之处是换了一种做法。

由于不同的人群具有聚类特性,同一类人群具有类似的广告点击偏好。因此可以先对全量样本进行聚类,再对每个分类运用逻辑回归模型预测点击率。这种方法将不同群体放在同一个模型中,又兼顾了群体之间的差异。

该模型是阿里在应用深度学习之前主流的推荐模型:LS—PLM(大规模分段线性模型)。直到2017年阿里才公开发表了这一模型。

LS-PLM的函数表达式结合了聚类(softmax)和逻辑回归(sigmoid)。softmax将特征空间分为m部分,然后用sigmoid对每部分进行预测。表达式为: \(f(x) = \sum_{i=1}^{m}{\frac{e^{u_ix}}{\sum_{j=1}^{m}e^{u_jx}}\frac{1}{1+e^{-w_xx}}}\)

其中的超参数m是作为聚类个数的参数。m越大,可以增强模型的非线性拟合能力。

Facebook的视频推荐模型2

YouTube的收入主要来源于用户观看视频所带来的广告收入。对于公司而言,推荐模型最终的优化目标不是点击率,而是用户的观看时长。预测用户的观看时长,本质上是回归问题。但YouTube巧妙地将其转化成了分类问题。

具体做法是在sigmoid函数上引入观看时长,构建加权逻辑回归: \(log(\frac{T_ip}{1-T_ip}) = e^{wx+b}\)

\[其中T_i是样本i的观看时长\]

由于在视频推荐场景中,用户打开一个视频的概率p往往很小(在1%左右),因此上式可以简化为: \(log(\frac{T_ip}{1-T_ip}) \approx log(T_ip) = e^{wx+b} = 期望观看时长\)

Netfix的影片推荐模型

Netflix的推荐系统会根据用户的历史信息来生成影片的推荐列表。Netflix的数据科学家根据影片所特有的属性发现,影片的预览图是影响用户是否点击影片的重要因素。因为图片相比文字,更能产生视觉冲击。

因此Netflix的数据科学家对影片的预览图进行优化,使不同的人会看到不同的预览图。比如,一位喜欢新垣结衣的用户,更可能喜欢她主演的其它影片。于是在该用户的浏览页面上,会出现这些影片。更妙的是,这些影片的预览图会以新垣结衣为头像,并配以相应文字、背景的影片。

预览图千人千面的做法,使得CTR模型的效果提升了10%。

参考资料

《深度学习推荐系统》