LHUC (learning hidden unit contributions)

在语音识别领域中,2014 年和 2016 年提出的 LHUC 算法 (learning hidden unit contributions) 核心思想是做说话人自适应 (speaker adaptation),其中一个关键突破是在 DNN 网络中,为每个说话人学习一个特定的隐式单位贡献 (hidden unit contributions),来提升不同说话人的语音识别效果。

LHUC 的思想可以用到推荐场景。

对于一些强 bias 特征(e.g., 用户是否登录、用户所在国家),除了将它们加浅一些(加在 wide & deep 模型的 wide 侧),离 loss 近一些,还有一种方法能够增强它们的作用,避免其信息在 DNN 中被损失掉,就是采用 SENet 或 LHUC (Learn Hidden Unit Contribution) 这样的结构。
image.png

  • 强 bias 特征作为 LHUC 的输入,经过 sigmiod 激活函数后,输出是一个 N 维度向量,N 是所有 fileld 的个数
  • N 维向量就是各 field 的重要性,将其按位乘到各 field 的 embedding 上,起到增强或削弱的作用
  • 加权后的各 field embedding 再拼接起来,喂入上层 DNN

这种结构,将一些先验认为重要的强bias的特征,放到裁判的位置,决定其他特征的重要性。比如,如果产品设计不允许未登录用户转发或评论,那么显然“用户未登录”这个特征值,就“应该”(suppose)将转发、评论相关特征的权重置为 0,因为它们不能代表用户的真实意图。
这样做,相比于将所有特征“一视同仁”、一古脑地喂入 DNN 最底层等候上层 DNN 筛选,更能发挥重要特征的作用,将“先验知识”(e.g., 产品设计限制)深入贯彻。

  • 前文已经讲到过了,“场景敏感”特征如果和其他特征一样喂入DNN的最底层,很容易就“泯然众人矣”。这些“场景敏感”特征的信息,在层层向上传递过程中,被其他特征所干扰,无法对最终预测结果产生多少影响。而DW模式特别突出了“场景敏感”特征的作用,让它们像一个“滤波器”控制住了其他信息的向上传递通道。其他信息向上传递过程中,都要经过“场景敏感”特征的“调制”,根据不同场景,对前一层发现的模式局部放大或衰减。而且在将动态产生的权重reshape成DWN的过程中,DWN层与层之间可以插入非线性的激活函数,从而允许实现比较复杂的“调制”功能。

PPNet - 参数个性化 CTR 模型

业界主流的推荐模型还是 以 DNN,DeepFM 等简单的全连接深度学习模型为主。但考虑到某用户个体和物品的共建语义模式在全局用户的共建语义模式基础上会有个性化的偏差,如何在 DNN 网络参数上为不同用户学习一个独有的个性化偏差成为了优化的方向。
借鉴 LHUC 的思想,快手在精排模型设计了一种 gating 机制,可以增加 DNN 网络参数个性化并能够让模型快速收敛。这种模型叫做 PPNet (Parameter Personalized Net),显著地提升了模型的 CTR 目标预估能力。
image.png

  • PPNet 的左侧是目前常见的 DNN 网络结构,由稀疏特征 (sparse features)、嵌入层 (embedding layer)、多神经网络层 (neural layer) 组成。
  • 右侧是 PPNet 特有的模块,包括 Gate NN 和只给 Gate NN 作为输入的 id 特征。
    • 其中 uid,pid,aid 分别表示 user id,photo id,author id。左侧的所有特征的 embedding 会同这3个 id 特征的 embedding 拼接到一起作为所有 Gate NN 的输入。需要注意的是,左侧所有特征的 embedding 并不接受 Gate NN 的反传梯度,这样操作的目的是减少 Gate NN 对现有特征 embedding 收敛产生的影响。
    • Gate NN 的数量同左侧神经网络的层数一致,其输出同每一层神经网络的输入做 element-wise product 来做用户的个性化偏置。
    • Gate NN 是一个 2 层神经网络,其中第二层网络的激活函数是 2 sigmoid,目的是约束其输出的每一项在 [0, 2] 范围内,并且默认值为 1(即,当输入为 0 时,sigmoid 输出为 0.5,2 等于1)。当 Gate NN 输出是默认值时,PPNet 同左侧部分网络是等价的。

经实验对比,通过 Gate NN 为神经网络层输入增加个性化偏置项,可以显著提升模型的目标预估能力。PPNet 通过 Gate NN 来支持 DNN 网络参数的个性化能力,来提升目标的预估能力,理论上来讲,可以用到所有基于 DNN 模型的预估场景,如个性化推荐,广告,基于 DNN 的强化学习场景等。