文章目录
1 推荐系统
1.1 推荐系统的作用和意义
用户角度
推荐系统用于在“信息过载”的情况下,使用户高效获取感兴趣的信息。用户需求层面讲,推荐系统使在用户需求模糊的情况下进行信息的过滤。
公司角度
推荐系统解决产品能够最大限度地吸引用户、留存用户、增加用户黏性、提高用户转化率地问题,从而使公司商业目标连续增长。对于公司而言,需要达到商业目标、增加公司收益。
1.2 推荐系统架构
推荐系统解决的用户痛点:
用户如何在“信息过载”的情况下高效的获取有用的信息
- 物品信息:商品信息、视频信息、新闻信息
- 用户信息:与“人”相关的信息,历史行为、人口属性、关系网络等
- 场景信息(上下文信息):具体推荐场景中,用户的最终的选择受时间、地点、用户的状态等一系列环境影响
1.2.1 推荐系统的逻辑架构
形式化定义推荐系统解决的问题:
对于用户 U U U,在特定场景 C C C下,针对海量信息,构建函数 f ( U , I , C ) f(U,I,C) f(U,I,C),来预测用户对特定候选物品 I I I的喜好程度,再根据喜好程度对所有候选物品进行排序,生成推荐列表的问题
1.2.2 推荐系统的技术架构
实际工程中着重解决的问题
- 数据和信息相关的问题 “用户信息”、“物品信息”、“场景信息”是什么?如何存储、更新、处理?
- 推荐系统算法和模型相关的问题 推荐模型如何训练、如何预测、如何达到更优的推荐效果?
”数据和信息“部分发展为推荐系统中融合了数据离线批处理、实时流处理的数据流框架;“算法和模型”细化为推荐系统中集训练、评估、部署、线上推断为一体的模型框架。
推荐系统的数据部分
主要负责“用户信息”、“物品信息”、“场景信息”的信息收集与处理。将负责数据收集与处理的三种平台按照实时性的强弱排序,依次为客户端及服务端实时数据处理、流处理平台准实时数据处理、大数据平台离线数据处理。在实时性由强到弱递减时,三种平台的海量数据处理能力由弱到强。
在得到原始的数据信息后,推荐系统的数据处理系统会将原始数据加工,加工后的数据出口有三个:
- 生成推荐模型所需的样本数据,用于训练和评估
- 生成推荐模型服务所需的特征,用于推荐系统的线上推断
- 生成系统监控、商业智能系统所需的统计型数据
推荐系统的模型部分
模型部分是推荐系统的主体,一般由“召回层”、“排序层”、“补充策略与算法层”构成
- 召回层:一般利用高效的召回规则、算法或简单的模型,快速从海量的候选集中召回用户可能感兴趣的物品
- 排序层:利用排序模型对初筛的候选集进行精排
- 补充策略与算法层:在将推荐列表返回用户之前,为兼顾结果的”多样性“、”流行度“、”新鲜度“等指标,结合一些补充的策略和算法对推荐列表进行调整,最终形成用户可见的推荐列表
模型服务:从推荐模型接收到所有候选物品集,到最后产生推荐列表的过程
在线环境进行模型服务之前,需要模型训练确定模型结构、结构中不同参数权重的具体值,以及模型相关算法和策略中的参数取值。
模型的训练方式根据模型训练环境不同:分为”离线训练“和”在线更新“两部分。
- 离线训练:利用全量样本和特征,使模型逼近全局最优点
- 在线更新:准实时”消化“新的数据样本,更快反映新的数据变化趋势,满足模型实时性的需求
2 前置知识
2.1 传统推荐模型的演化
- 协同过滤算法族 从物品相似度和用户相似度角度出发,协同过滤衍生出物品协同过滤ItemCF和用户协同过滤UserCF,为使协同过滤更好处理稀疏共现矩阵问题、增强模型的泛化能力,从协同过滤衍生除矩阵分解模型MF,并发展除矩阵分解的各分支模型
- 逻辑回归模型族 利用和融合更多用户、物品及上下文特征。从LR模型衍生出增强非线性能力的大规模分片线性模型LS-PLM,由LR发展出来的FM 模型,以及与多种不同模型配合使用后的组合模型等
- 因子分解机模型族 因子分解机在传统逻辑回归模型的基础上,加入二阶部分,使模型具备进行特征组合的能力。在因子分解机基础上发展的域感知因子分解机FFM通过加入特征域的概念,进一步加强因子分解机特征交叉的能力。
- 组合模型 将不同模型组合使用是构建推荐模型的常用方法,组合模型体现出的特征工程模型化思想成为深度学习推荐模型的因子和核心思想之一。
2.2 协同过滤
2.2.1 概述
协同过滤
协调大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐的过程。
2.2.2 用户相似度计算
将带有标识的有向图转换成共现矩阵,该矩阵中的行向量代表相应用户的用户向量,用户 i i i和用户 j j j的相似度转换为处理用户向量 i i i和用户向量 j j j之间的相似度。
余弦相似度
余弦相似度衡量向量
i
i
i和
j
j
j之间的向量夹角大小,夹角越小,余弦相似度越大,两个用户越相似。
s
i
m
(
i
,
j
)
=
c
o
s
(
i
,
j
)
=
i
⋅
j
∣
∣
i
∣
∣
⋅
∣
∣
j
∣
∣
sim(i,j)=cos(i,j)=\frac{i \cdot{j}}{||i||\cdot{||j||}}
sim(i,j)=cos(i,j)=∣∣i∣∣⋅∣∣j∣∣i⋅j
皮尔逊相关系数
皮尔逊系数通过使用用户平均分对各独立评分进行修正,减少用户评分偏置的影响
s
i
m
(
i
,
j
)
=
∑
p
∈
P
(
R
i
,
p
−
R
‾
i
)
(
R
j
,
p
−
R
‾
j
)
∑
p
∈
P
(
R
i
,
p
−
R
‾
i
)
2
∑
p
∈
P
(
R
j
.
p
−
R
‾
j
)
2
sim(i,j)=\frac{\sum_{p\in P}{(R_{i,p}-\overline{R}_i)(R_{j,p}-\overline{R}_j)}}{\sqrt{\sum_{p\in P}{(R_{i,p}-\overline{R}_i)^2}}\sqrt{\sum_{p\in P}{(R_{j.p}-\overline{R}_j)^2}}}
sim(i,j)=∑p∈P(Ri,p−Ri)2∑p∈P(Rj.p−Rj)2∑p∈P(Ri,p−Ri)(Rj,p−Rj)
其中,
R
i
,
p
R_{i,p}
Ri,p代表用户
i
i
i对物品
p
p
p的评分。
R
‾
i
\overline{R}_i
Ri代表用户
i
i
i对所有物品的平均评分,
P
P
P代表所有物品的集合。
2.2.3 最终结果排序
在获得Top n相似用户后,生成的最终推荐结果过程如下。假设”目标用户与其相似用户的喜好相似的“,可以根据相似用户的已有评价对目标用户的偏好进行预测。
常见方式是利用用户相似度和相似用户的评价的加权平均获得目标用户的评价预测。
R
u
,
p
=
∑
s
∈
S
(
w
u
,
s
⋅
R
s
,
p
)
∑
s
∈
S
w
u
,
s
R_{u,p}=\frac{\sum_{s\in S}{(w_{u,s}\cdot{R_{s,p}})}}{\sum_{s\in S}{w_{u,s}}}
Ru,p=∑s∈Swu,s∑s∈S(wu,s⋅Rs,p)
其中,权重
w
u
,
s
w_{u,s}
wu,s是用户
u
u
u和用户
s
s
s的相似度,
R
s
,
p
R_{s,p}
Rs,p是用户
s
s
s对物品
p
p
p的评分。
在获得用户 u u u对不同物品的评价预测后,最终的推荐列表根据预测得分进行排序得到。至此,完成协同过滤的全部过程。
以上算法是基于用户近似度进行推荐,称为基于用户的协同过滤(UserCF)
UserCF存在的缺点
- 互联网应用场景下,用户数远大于产品数,UserCF需要维护用户相似度矩阵来找出Top n 用户。用户数的增长导致用户相似度矩阵的存储空间以 n 2 n^2 n2的速度增长,存储开销较大
- 用户的历史数据量往往较为稀疏,购买次数较少的用户,其相似用户的准确度极低
2.2.4 ItemCF
基于物品平均分方式,减少物品评分偏置对结果的影响
s i m ( i , j ) = ∑ p ∈ P ( R i , p − R ‾ p ) ( R j , p − R ‾ p ) ∑ p ∈ P ( R i , p − R ‾ p ) 2 ∑ p ∈ P ( R j . p − R ‾ p ) 2 sim(i,j)=\frac{\sum_{p\in P}{(R_{i,p}-\overline{R}_p)(R_{j,p}-\overline{R}_p)}}{\sqrt{\sum_{p\in P}{(R_{i,p}-\overline{R}_p)^2}}\sqrt{\sum_{p\in P}{(R_{j.p}-\overline{R}_p)^2}}} sim(i,j)=∑p∈P(Ri,p−Rp)2∑p∈P(Rj.p−Rp)2∑p∈P(Ri,p−Rp)(Rj,p−Rp)
其中, R i , p R_{i,p} Ri,p代表用户 i i i对物品 p p p的评分。 R ‾ p \overline{R}_p Rp代表物品 p p p得到所有评分的平均评分, P P P代表所有物品的集合。
ItemCF是基于物品相似度进行推荐的协同过滤算法。通过计算共现矩阵中物品列向量的相似度得到物品之间的相似矩阵,再找到用户的历史正反馈物品的相似物品进一步排序和推荐
ItemCF算法流程
- 基于历史数据,构建以用户(假设用户总数为 m m m)为行坐标,物品(物品总数为 n n n)为列坐标的 m × n m×n m×n维的共现矩阵
- 计算共现矩阵两两列向量间的相似性,构建 n × n n×n n×n维的物品相似度矩阵
- 获得用户历史行为数据中的正反馈物品列表
- 利用物品相似度矩阵,针对目标历史行为中的正反馈物品,找出相似的Topk个物品,组成物品相似集合
- 对相似物品集合中的物品,利用相似度分值进行排序,生成最终的推荐列表(如果物品与多个用户行为历史中的正反馈物品相似,那么该物品最终的相似度应该是多个相似度的累加,如 R u , p = ∑ h ∈ H ( w p , h ⋅ R u , h ) R_{u,p}=\sum_{h\in H}{(w_{p,h}\cdot{R_{u,h}})} Ru,p=∑h∈H(wp,h⋅Ru,h),其中 H H H是目标用户的正反馈物品集合, w p , h w_{p,h} wp,h是物品 p p p与物品 h h h的物品相似度, R u , h R_{u,h} Ru,h是用户 u u u对物品 h h h的已有评分)
2.2.5 UserCF和ItemCF的应用场景
- UserCF基于用户相似度推荐,使其具备更强的社交特性,非常适合用于新闻推荐场景
- ItemCF基于物品相似度推荐,使其适用于兴趣变化较为稳定的应用
2.2.6 协同过滤的下一步发展
协同过滤不具备较强的泛化能力,无法将两个物品相似这一信息推广到其他物品的相似性计算上
协同过滤缺陷
- 推荐结果的头部效应较为明显,容易跟大量物品产生相似性,处理稀疏向量能力弱,尾部的物品由于特征向量稀疏,很少与其他物品产生相似性,导致很少被推荐。
- 另外,协同过滤仅利用用户和物品的交互信息,无法有效引入用户年龄、性别、商品描述、商品分类、当前时间等一系列用户特征、物品特征和上下文特征,造成有效信息的遗漏。
矩阵分解技术
为了解决上述问题,同时增加模型的泛化能力,提出矩阵分解技术,即在协同过滤共现矩阵的基础上,使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征,一定程度上弥补了协同过滤你想处理稀疏矩阵能力不足的问题。
2.3 矩阵分解算法
2.3.1 矩阵分解算法原理
对于图a
,协同过滤算法基于用户观看历史,找到与目标用户看过同样视频的相似用户,然后找到这些相似用户喜欢看的其他视频,推荐给目标用户
对于图b
,矩阵分解算法期望为每一个用户和视频生成一个隐向量,将用户和视频定位到隐向量的表示空间上,距离相近的用户和视频表明兴趣特点相近,在推荐过程中,就把距离相近的视频推给目标用户
用隐向量表示用户和物品并保证相似的用户及用户可能喜欢的物品距离相近,找出该隐向量
在”矩阵分解“的算法框架下,用户和物品的隐向量是通过分解协同过滤生成的共现矩阵得到的
矩阵分解算法将 m × n m×n m×n维的共现矩阵 R R R分解为 m × k m×k m×k 维的用户矩阵 U U U和 k × n k×n k×n维的物品矩阵 V V V乘积形式。其中 m m m是用户数量, n n n是物品数量, k k k是隐向量的维度。 k k k的取值越小,隐向量包含的信息越少,模型的泛化程度越高; k k k的取值越大,隐向量包含信息越多,模型的泛化程度降低。
基于用户矩阵 U U U和物品矩阵 V V V,用户 u u u对物品 i i i的预估评分表示为 r ^ u i = q i T p u \hat{r}_{ui}=q_i^Tp_u r^ui=qiTpu,其中 p u p_u pu是用户 u u u在用户矩阵 U U U中的对应行向量, q i T q_i^T qiT是物品 i i i在物品矩阵 V V V中对应列向量
2.3.2 矩阵分解求解过程
矩阵分解方式主要有 特征值分解、奇异值分解、梯度下降
[奇异值分解介绍在机器学习系列,自行食用即可]
奇异值分解的描述
假设矩阵 M M M是一个 m × n m×n m×n的矩阵,则一定存在一个分解 M = U Σ V T M=U\Sigma V^T M=UΣVT,其中 U U U是 m × m m×m m×m的正交矩阵, V V V是 n × n n×n n×n的正交矩阵, Σ \Sigma Σ是 m × n m×n m×n的对角阵。
取对角阵 Σ \Sigma Σ中较大的 k k k个元素作为隐含特征,删除 Σ \Sigma Σ的其他维度及 U U U和 V V V中对应的维度,矩阵 M M M被分解为 M ≈ U x × k Σ k × k V k × n T M≈U_{x×k}\Sigma_{k×k}V_{k×n}^T M≈Ux×kΣk×kVk×nT,至此完成隐向量维度维 k k k的矩阵分解
奇异值分解存在的缺陷(互联网场景难以使用奇异值分解解决矩阵分解问题)
- 奇异值分解要求原始的共现矩阵是稠密的(互联网场景下的大部分用户的历史非常少,用户-物品的共现矩阵非常稀疏,如果应用奇异值分解,就必须对缺失的元素值进行填充)
- 传统奇异值分解的计算复杂度达到 O ( m n 2 ) O(mn^2) O(mn2)的级别(互联网场景下,用户数量和商品数量海量级别)
选择梯度下降法解决矩阵分解问题
- 特征值分解仅作用于方阵
- 奇异值分解不适合互联网应用场景
求解矩阵分解的目标函数目的是让原始评分
r
u
i
r_{ui}
rui与用户向量和物品向量之积
q
i
T
p
u
q_i^Tp_u
qiTpu差尽量小,这样才能最大限度保存共现矩阵的原始信息。
O
b
j
e
c
t
F
u
n
c
t
i
o
n
min
q
∗
,
p
∗
∑
(
u
,
i
)
∈
K
(
r
u
i
−
q
i
T
p
u
)
2
Object\quad Function\quad\min_{q^*,p^*}\sum_{(u,i)\in K}{(r_{ui}-q_i^Tp_u)^2}
ObjectFunctionq∗,p∗min(u,i)∈K∑(rui−qiTpu)2
其中
K
K
K是所有用户评分样本的集合。为了减少过拟合现象,对其进行正则化。
O
b
j
e
c
t
F
u
n
c
t
i
o
n
min
q
∗
,
p
∗
∑
(
u
,
i
)
∈
K
(
r
u
i
−
q
i
T
p
u
)
2
+
λ
(
∣
∣
q
i
∣
∣
2
+
∣
∣
p
u
∣
∣
2
)
Object\quad Function\quad\min_{q^*,p^*}\sum_{(u,i)\in K}{(r_{ui}-q_i^Tp_u)^2}+\lambda(||q_i||^2+||p_u||^2)
ObjectFunctionq∗,p∗min(u,i)∈K∑(rui−qiTpu)2+λ(∣∣qi∣∣2+∣∣pu∣∣2)
梯度下降求解目标函数
1.确定目标函数
min
q
∗
,
p
∗
∑
(
u
,
i
)
∈
K
(
r
u
i
−
q
i
T
p
u
)
2
+
λ
(
∣
∣
q
i
∣
∣
2
+
∣
∣
p
u
∣
∣
2
)
\min_{q^*,p^*}\sum_{(u,i)\in K}{(r_{ui}-q_i^Tp_u)^2}+\lambda(||q_i||^2+||p_u||^2)
q∗,p∗min(u,i)∈K∑(rui−qiTpu)2+λ(∣∣qi∣∣2+∣∣pu∣∣2)
2.对目标函数求偏导,求取梯度下降的方向和幅度
对
q
i
求偏导,得
2
(
r
u
i
−
q
i
T
p
u
)
p
u
−
2
λ
q
i
对
p
u
求偏导,得
2
(
r
u
i
−
q
i
T
p
u
)
q
i
−
2
λ
p
u
对q_i求偏导,得\quad2(r_{ui}-q_i^Tp_u)p_u-2\lambda q_i\\ 对p_u求偏导,得\quad2(r_{ui}-q_i^Tp_u)q_i-2\lambda p_u
对qi求偏导,得2(rui−qiTpu)pu−2λqi对pu求偏导,得2(rui−qiTpu)qi−2λpu
3.利用求导结果,沿梯度的反方向更新参数
q
i
←
q
i
−
γ
(
(
r
u
i
−
q
i
T
p
u
)
p
u
−
λ
q
i
)
p
u
←
p
u
−
γ
(
(
r
u
i
−
q
i
T
p
u
)
q
i
−
λ
p
u
)
其中,
γ
为学习率
q_i\leftarrow q_i-γ((r_{ui}-q_i^Tp_u)p_u-\lambda q_i)\\ p_u\leftarrow p_u-γ((r_{ui}-q_i^Tp_u)q_i-\lambda p_u)\\ 其中,γ为学习率
qi←qi−γ((rui−qiTpu)pu−λqi)pu←pu−γ((rui−qiTpu)qi−λpu)其中,γ为学习率
4.当迭代次数超过上限
n
n
n或损失低于阈值
θ
\theta
θ时,结束训练,否则循环第3步
在完成矩阵分解过程后,即可得到所有用户与物品的隐向量。在对某用户进行推荐时,可利用该用户的隐向量与所有物品的隐向量进行逐一的内积运算,得出该用户对所有物品的评分预测,再依次进行排序,得到最终的推荐列表。
矩阵分解具有更强的泛化能力的解释
在矩阵分解算法中,由于隐向量的存在,使任意的用户和物品之间都可以得到预测分值。隐向量的生成过程其实是对共现矩阵进行全局拟合的过程,因此隐向量是利用全局信息生成的,具有更强的泛化能力,而协同过滤只能利用用户和物品自己的信息进行相似度计算,因此不具备利用全局信息的能力
2.3.3 消除用户和物品打分的偏差
由于不同用户的打分体系不同,不同物品的衡量标准也有所区别,为了消除用户和物品打分的偏差,常用做法是矩阵分解时加入用户和物品的偏差变量
r
u
i
=
μ
+
b
i
+
b
u
+
q
i
T
p
u
r_{ui}=μ+b_i+b_u+q_i^Tp_u
rui=μ+bi+bu+qiTpu
其中
μ
μ
μ是全局偏差常数,
b
i
b_i
bi是物品偏差系数,可使用物品
i
i
i 收到的所有评分的均值,
b
u
b_u
bu是用户偏差系数,可使用用户
μ
μ
μ给出的所有评分的均值
矩阵分解的目标函数优化如下:
min
q
∗
,
p
∗
,
b
∗
∑
(
u
,
i
)
∈
K
(
r
u
i
−
μ
−
b
u
−
b
i
−
q
i
T
p
u
)
2
+
λ
(
∣
∣
q
i
∣
∣
2
+
∣
∣
p
u
∣
∣
2
+
b
u
2
+
b
i
2
)
\min_{q^*,p^*,b^*}\sum_{(u,i)\in K}{(r_{ui}-μ-b_u-b_i-q_i^Tp_u)^2}+\lambda(||q_i||^2+||p_u||^2+b_u^2+b_i^2)
q∗,p∗,b∗min(u,i)∈K∑(rui−μ−bu−bi−qiTpu)2+λ(∣∣qi∣∣2+∣∣pu∣∣2+bu2+bi2)
加入用户和物品的打分偏差项后,矩阵分解得到的隐向量更能反映不同用户对不同物品的”真实“态度差异,即容易捕捉评价数据中有价值的信息,进而避免推荐结果有偏
2.3.4 矩阵分解的优点和局限性
优点
- 泛化能力强 一定程度解决数据稀疏的问题
- 空间复杂度低 只需要存储用户和物品隐向量,无需存储协同过滤模型服务阶段所需的用户/物品相似性矩阵
- 更好的扩展性和灵活性 矩阵分解最终产物是用户和物品隐向量,其分解结果便于与其他特征进行组合和拼接,便于与深度学习网络结合
局限性
- 不方便加入用户、物品和上下文相关的特征
- 在缺乏用户历史行为时,无法进行有效推荐
解决
逻辑回归模型和因子分解机模型可以融合多特征,弥补其不足
2.4 逻辑回归
相较协同过滤模型仅利用用户与物品的相互行为信息进行推荐而言,逻辑回归模型综合利用用户、物品、上下文多特征进行“全面”推荐,相较协同过滤和矩阵分解利用用户和物品的相似度矩阵进行推荐而言,逻辑回归将推荐系统归类为分类问题,通过预测正样本的概率对物品进行排序(这里正样本表示用户对物品的正反馈行为),因此逻辑回归模型将推荐问题转换为点击率CTR预估问题。
2.4.1 基于逻辑回归的推荐
- 将用户“年龄、性别、物品属性、物品描述、当前时间、当前地点”等多特征转换成数值型特征向量
- 确定逻辑回归模型的优化目标(如CTR),利用已有的样本数据训练逻辑回归模型,确定模型参数
- 在模型服务阶段,将特征向量输入逻辑回归模型,得到用户“点击”物品的概率
- 利用CTR对所有候选物品进行排序,生成推荐列表
重点
基于逻辑回归模型的推荐流程的重点在于样本特征向量和在线推断
2.4.2 逻辑回归的数学表达
- 将特征向量 x = ( x 1 , x 2 , . . . , x n ) T x=(x_1,x_2,...,x_n)^T x=(x1,x2,...,xn)T作为模型的输入
- 通过为各特征向量赋予相应的权重 ( w 1 , w 2 , . . . , w n + 1 ) (w_1,w_2,...,w_n+1) (w1,w2,...,wn+1),来表示各特征的重要性差异,将各特征进行加权求和,得到 x T w x^Tw xTw
- 将 x T w x^Tw xTw输入 s i g m o i d sigmoid sigmoid函数,映射到 [ 0 , 1 ] [0,1] [0,1]区间,得到点击率
整个训练过程的逻辑回归模型函数表示
f
(
x
)
=
1
1
+
e
−
(
w
⋅
x
+
b
)
f(x)=\frac{1}{1+e^{-(w\cdot{x}+b)}}
f(x)=1+e−(w⋅x+b)1
2.4.3 逻辑回归的模型训练
1.确定目标函数
假设逻辑回归数学表达为
f
w
(
x
)
f_w(x)
fw(x),对于输入样本
x
x
x,预测结果为正样本(类别1)和负样本(类别0)的概率如下:
{
P
(
y
=
1
∣
x
;
w
)
=
f
w
(
x
)
,
P
(
y
=
0
∣
x
;
w
)
=
1
−
f
w
(
x
)
(
式
2
−
1
)
\begin{cases} P(y=1|x;w)=f_w(x),\\ P(y=0|x;w)=1-f_w(x) \quad\quad(式2-1) \end{cases}
{P(y=1∣x;w)=fw(x),P(y=0∣x;w)=1−fw(x)(式2−1)
将式2-1
优化成式2-2
形式:
P
(
y
∣
x
;
w
)
=
(
f
w
(
x
)
)
y
(
1
−
f
w
(
x
)
)
(
1
−
y
)
(
式
2
−
2
)
P(y|x;w)=(f_w(x))^y(1-f_w(x))^{(1-y)}\quad\quad(式2-2)
P(y∣x;w)=(fw(x))y(1−fw(x))(1−y)(式2−2)
根据极大似然估计法写出逻辑回归目标函数,如式2-3
:
L
(
w
)
=
∏
i
=
1
m
P
(
y
∣
x
;
w
)
(
式
2
−
3
)
L(w)=\prod^m_{i=1}P(y|x;w) \quad\quad(式2-3)
L(w)=i=1∏mP(y∣x;w)(式2−3)
继续优化,将求极大值问题转换成求极小值问题,最终目标函数见式2-4
:
J
(
w
)
=
−
1
m
l
(
w
)
=
−
1
m
l
o
g
L
(
w
)
=
−
1
m
(
∑
i
=
1
m
(
y
i
l
o
g
f
w
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
f
w
(
x
i
)
)
)
)
(
式
2
−
4
)
J(w)=-\frac{1}{m}l(w)=-\frac{1}{m}logL(w)=-\frac{1}{m}(\sum_{i=1}^{m}(y^ilogf_w(x^i)+(1-y^i)log(1-f_w(x^i))))\quad\quad (式2-4)
J(w)=−m1l(w)=−m1logL(w)=−m1(i=1∑m(yilogfw(xi)+(1−yi)log(1−fw(xi))))(式2−4)
得到目标函数后,对每个参数求偏导,获取梯度方向,对参数
w
j
w_j
wj求偏导:
∂
∂
w
j
J
(
w
)
=
1
m
∑
i
=
1
m
(
f
w
(
x
i
)
−
y
i
)
x
j
i
\frac{\partial{}}{\partial{w_j}}J(w)=\frac{1}{m}\sum_{i=1}^{m}{(f_w(x^i)-y^i)}x_j^i
∂wj∂J(w)=m1i=1∑m(fw(xi)−yi)xji
给出模型参数更新公式:
w
j
←
w
j
−
γ
1
m
(
f
w
(
x
i
)
−
y
i
)
x
j
i
w_j\leftarrow w_j-γ\frac{1}{m}(f_w(x^i)-y^i)x_j^i
wj←wj−γm1(fw(xi)−yi)xji
2.4.4 逻辑回归模型的评价
优点
- 数学含义:CTR模型的因变量服从伯努利分布,用户点击广告是经典的掷偏心硬币问题
- 可解释性:逻辑回归模型中对各种特征加权求和,综合不同特征对CTR影响
- 工程化:易于并行化、模型简单、训练开销小
缺点
表达能力弱,无法进行特征交叉、特征筛选等操作,会造成信息损失
解决
逻辑回归模型的不足促使因子分解机等高维复杂模型诞生,如今的深度学习背景,多层感知机完全取代逻辑回归模型
2.5 自动特征交叉方案
逻辑回归模型只对单个特征进行加权,不具备进行特征交叉生成高维组合特征的能力,表达能力欠缺,不仅会造成信息损失,而且会得出错误的结论。[参考辛普森悖论]
2.5.1 POLY2 模型
PLOY2模型的数学表达式如下:
ϕ
P
O
L
Y
2
(
w
,
x
)
=
∑
j
1
=
1
n
−
1
∑
j
2
=
j
1
+
1
n
w
h
(
j
1
,
j
2
)
x
j
1
x
j
2
\phi POLY2(w,x)=\sum_{j_1=1}^{n-1}\sum_{j_2=j_1+1}^{n}w_h(j_1,j_2)x_{j_1}x_{j_2}
ϕPOLY2(w,x)=j1=1∑n−1j2=j1+1∑nwh(j1,j2)xj1xj2
PLOY2模型对所有特征进行两两交叉(特征
x
j
1
和
x
j
2
x_{j_1}和x_{j_2}
xj1和xj2),并对所有的特征组合赋予权重
w
h
(
j
1
,
j
2
)
w_h(j_1,j_2)
wh(j1,j2)。PLOY2模型通过暴力组合特征,一定程度解决了特征组合问题。
PLOY2模型缺陷
- 处理互联网数据时,经常采用
one-hot
编码的方法处理类别类型数据,导致特征向量极度稀疏,POLY2进行无选择的特征交叉(本就使非常稀疏的特征向量更加稀疏),大部分交叉特征的权重缺乏有效的数据进行训练。无法收敛 - 从数学表达看出权重参数的数量从 n n n上升到 n 2 n^2 n2,训练复杂度增加
one-hot 编码
one-hot
编码是将类别转换成向量的一种编码方式。由于类型特征不具备数值化意义,不进行编码无法将其值直接作为特征向量的一个维度使用。
譬如样本特征:星期、性别用
[
W
e
e
k
d
a
y
=
M
o
n
d
a
y
,
G
e
n
d
e
r
=
M
a
l
e
]
[Weekday=Monday,Gender=Male]
[Weekday=Monday,Gender=Male]表示。由于输入特征向量仅可以是数值型特征向量,无法将字符串数据直接输入模型,因此需要将该特征进行数值化,采用one-hot
编码,结果为
[
1
,
0
,
0
,
0
,
0
,
0
,
0
]
,
[
1
,
0
]
[1,0,0,0,0,0,0],[1,0]
[1,0,0,0,0,0,0],[1,0]。
one-hot
编码方式会造成特征向量中存在大量数值为
0
0
0的特征维度,会造成输入特征向量稀疏。
2.5.2 FM 模型
FM模型的二阶数学表达如下:
ϕ
F
M
(
w
,
x
)
=
∑
j
1
=
1
n
−
1
∑
j
2
=
j
1
+
1
n
(
w
j
1
⋅
w
j
2
)
x
j
1
x
j
2
\phi FM(w,x)=\sum_{j_1=1}^{n-1}\sum_{j_2=j_1+1}^{n}(w_{j_1}\cdot{w_{j_2}})x_{j_1}x_{j_2}
ϕFM(w,x)=j1=1∑n−1j2=j1+1∑n(wj1⋅wj2)xj1xj2
与POLY2模型相比,FM模型用两个向量的内积
(
w
j
1
⋅
w
j
2
)
(w_{j_1}\cdot{w_{j_2}})
(wj1⋅wj2)取代了POLY2模型单一权重系数
w
h
(
j
1
,
j
2
)
w_{h(j_1,j_2)}
wh(j1,j2)。具体而言,FM为每个特征学习一个隐权重向量。在特征交叉时,使用两个特征隐向量的内积作为交叉特征的权重。
FM模型是将矩阵分解隐向量的的思想进一步扩展,从用户、物品隐向量扩展到所有特征中。
FM通过引入特征隐向量,把POLY2模型 n 2 n^2 n2级别的权重参数数量减少到 n k ( k 为隐向量维度, n ≫ k ) nk(k为隐向量维度,n\gg k) nk(k为隐向量维度,n≫k)。隐向量的引入使FM更好解决数据稀疏性问题。
场景模拟
频道channel | 品牌brand |
---|---|
ESPN | Adidas |
在某推荐场景下,样本具有两个特征,分别是频道和品牌,某训练样本的特征组合为 ( E S P N , A d i d a s ) (ESPN,Adidas) (ESPN,Adidas)。
在POLY2模型中只有当ESPN和Adidas同时出现在一个样本中,模型才能学习到该组合特征对应的权重;
在FM模型中,ESPN的隐向量也可以通过 ( E S P N , G u c c i ) (ESPN,Gucci) (ESPN,Gucci)样本更新,Adidas的隐向量通也可以通过 ( N B C , A d i d a s ) (NBC,Adidas) (NBC,Adidas)样本进行更新,因此大幅降低模型对数据稀疏性的要求。甚至对于未知的特征组合 ( N B C , G u c c i ) (NBC,Gucci) (NBC,Gucci),由于之前学习过NBC和Gucci的隐向量,具备计算该特征组合权重的能力
2.5.3 FFM 模型
POLY2模型是特征交叉的开始,FM模型引入隐向量特征交叉,而FFM模型在FM模型的基础上引入特征域的概念,模型表达能力变得更强。
FFM模型的二阶数学表达如下:
ϕ
F
F
M
(
w
,
x
)
=
∑
j
1
=
1
n
−
1
∑
j
2
=
j
1
+
1
n
(
w
j
1
,
f
2
⋅
w
j
2
,
f
1
)
x
j
1
x
j
2
\phi FFM(w,x)=\sum_{j_1=1}^{n-1}\sum_{j_2=j_1+1}^{n}(w_{j_1,f_2}\cdot{w_{j_2,f_1}})x_{j_1}x_{j_2}
ϕFFM(w,x)=j1=1∑n−1j2=j1+1∑n(wj1,f2⋅wj2,f1)xj1xj2
FFM模型在FM模型的基础上将一个隐向量替换成一组隐向量。当
x
j
1
x_{j_1}
xj1特征与
x
j
2
x_{j_2}
xj2特征进行交叉时,
x
j
1
x_{j_1}
xj1特征会从
x
j
1
x_{j_1}
xj1的一组隐向量中挑出与特征
x
j
2
x_{j_2}
xj2的域
f
2
f2
f2对应的隐向量
(
w
j
1
,
f
2
)
(w_{j_1,f_2})
(wj1,f2)进行交叉,
x
j
2
x_{j_2}
xj2会用与
x
j
1
x_{j_1}
xj1的域
f
1
f_1
f1对应的隐向量
(
w
j
2
,
f
1
)
(w_{j_2,f_1})
(wj2,f1)进行交叉。
特征域的概念
“域”代表特征域,域内的特征一般采用one-hot
编码形成特征向量,用户性别分为男、女两类,对于男性用户而言,采用one-hot
编码的特征向量为
[
1
,
0
]
[1,0]
[1,0],该特征向量即为一个“性别”特征域,将所有的特征域连接起来便组合成样本的整体特征向量。
在FFM模型的训练过程中,需要学习 n n n个特征在 f f f个域上的 k k k维隐向量,参数数量共 n ⋅ k ⋅ f n\cdot{k}\cdot{f} n⋅k⋅f个,其复杂度为 k n 2 kn^2 kn2
场景模拟
Publisher§ | Advertiser(A) | Gender(G) |
---|---|---|
ESPN | NIKE | Male |
Publisher、Advertiser、Gender是三个特征域,ESPN、NIKE、Male分别是三个特征域中的特征值[假设已经转换成one-hot
特征]
在FM模型中,特征ESPN、NIKE和Male对应的隐向量为 w E S P N , w N I K E , w M a l e w_{ESPN},w_{NIKE},w_{Male} wESPN,wNIKE,wMale,那么ESPN特征与NIKE特征、ESPN特征与Male特征做交叉的权重是 w E S P N ⋅ w N I K E w_{ESPN}\cdot{w_{NIKE}} wESPN⋅wNIKE和 w E S P N ⋅ w M a l e w_{ESPN}\cdot{w_{Male}} wESPN⋅wMale。其中,ESPN对应的隐向量 w E S P N w_{ESPN} wESPN在两次特征交叉过程中是不变的
在FFM模型中,ESPN与NIKE、ESPN与Male交叉时分别使用不同隐向量 w E S P N , A ⋅ w N I K E , P w_{ESPN,A}\cdot{w_{NIKE,P}} wESPN,A⋅wNIKE,P和 w E S P N , G ⋅ w M a l e , P w_{ESPN,G}\cdot{w_{Male,P}} wESPN,G⋅wMale,P,由于NIKE和Male分别在不同的特征域A和G中,ESPN在与NIKE和Male交叉时使用不同的隐向量 w E S P N , A w_{ESPN,A} wESPN,A和 w E S P N , G w_{ESPN,G} wESPN,G
2.5.4 模型演化过程
以2.5.3场景模拟特征数据
为例,
POLY2模型直接学习每个交叉特征的权重,若特征数量为 n n n,则权重数量为 n 2 n^2 n2,具体为 n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n−1)个,下图一个彩色圆点代表一个特征交叉项
FM模型学习每个特征的 k k k维隐向量,交叉特征由相应特征向量的内积得到,权重数量共 n k nk nk个。
FM比POLY2泛化能力强,但记忆能力减弱,处理稀疏特征向量的能力远强于POLY2。每个特征项不再是单独圆点,而是3个彩色圆点的内积,代表每个特征向量有一个三维的隐向量
FFM模型在做特征交叉时,每个特征选择与对方域对应的隐向量做内积运算,得到交叉特征的权重,在有 n n n个特征, f f f个特征域,隐向量维度 k k k的前提下,参数数量共 n ⋅ k ⋅ f n\cdot{k}\cdot{f} n⋅k⋅f个。如下图所示,每个特征具有2个隐向量,根据特征交叉对象特征域的不同,选择使用对应的隐向量
2.6 GBDT+LR
2.6.1 GBDT+LR的组合模型结构
FaceBook提出利用GBDT自动进行特征筛选和组合,进而生成新的离散特征向量,再把该特征向量当作LR模型输入,预估CTR的模型结构,注意GBDT构建特征工程和LR预估CTR是分开训练的
浅谈GBDT
GBDT的基本结构是决策树组成的森林,学习的方式是梯度提升。具体而言,GBDT作为集成模型,预测的方式是把所有子树的结果加起来
D
(
x
)
=
d
t
r
e
e
1
(
x
)
+
d
t
r
e
e
2
(
x
)
+
.
.
.
D(x)=d_{tree1}(x)+d_{tree2}(x)+...
D(x)=dtree1(x)+dtree2(x)+...
GBDT通过逐一生成决策子树的方式生成整个森林,生成新子树的过程是利用样本标签值与当前森林预测值之间的残差,构建新的子树。
假设当前生成3棵子树,当前预测值为:
D
(
x
)
=
d
t
r
e
e
1
(
x
)
+
d
t
r
e
e
2
(
x
)
+
d
t
r
e
e
3
(
x
)
D(x)=d_{tree1}(x)+d_{tree2}(x)+d_{tree3}(x)
D(x)=dtree1(x)+dtree2(x)+dtree3(x)
GBDT期望的是构建第4棵子树,使当前森林的预测结果
D
(
x
)
D(x)
D(x)与第4棵子树的预测结果
d
t
r
e
e
4
(
x
)
d_{tree4}(x)
dtree4(x)之和,能进一步逼近理论上的拟合函数
f
(
x
)
f(x)
f(x),即
D
(
x
)
+
d
t
r
e
e
4
(
x
)
=
f
(
x
)
D(x)+d_{tree4}(x)=f(x)
D(x)+dtree4(x)=f(x)
因此,第4棵子树的生成过程是以目标拟合函数和已有森林预测结果的残差
R
(
x
)
R(x)
R(x)为目标的:
R
(
x
)
=
f
(
x
)
−
D
(
x
)
R(x)=f(x)-D(x)
R(x)=f(x)−D(x)
GBDT是多棵回归树树组成的森林,后一棵树以前面森林的结果与真实结果残差为拟合目标。每棵树生成过程是一棵树的标准的回归树生成过程,因此回归树中每个节点的分裂是一个自然的特征选择过程,而多层节点的结构则对特征进行了有效的自动组合
2.6.2 GBDT进行特征转换的过程
利用训练好的GBDT模型完成从原始特征向量到新的离散型特征向量转换过程:
一个训练样本在输入GBDT某一子树后,根据每个节点的规则最终落入某一叶子节点,把该叶子节点置为1,其他叶子节点置为0,所有叶子节点组成的向量即形成该棵树的特征向量,把GBDT所有子树的特征向量连接起来,即形成后续LR模型输入的离散型特征向量
2.6.3 特征工程新趋势
GBDT+LR模型出现前,特征工程的主要解决办法:
- 进行人工或者半人工的特征组合和特征筛选
- 通过改造目标函数、改进模型结构、增加特征交叉项的方式增强特征组合能力
GBDT+LR模型的提出,意味特征工程完全交由一个独立的模型完成。
2.7 LS-PLM
2.7.1 主要结构
LS-PLM,又称为MLR(混合逻辑回归)模型,在LR模型上先对样本分片,再在样本分片中应用LR进行CTR预估
在LR的基础上增加聚类思想,灵感来自对广告推荐领域样本特点的观察。为了让CTR模型对不同用户群体、不同使用场景更有针对性,其先对全量样本进行聚类,再对每个分类进LR进行CTR评估。
LS-PLM先使用聚类函数
π
\pi
π(采用softmax函数进行多分类)对样本进行分类,再用LR计算样本在分类中的具体的CTR,然后将二者相乘后求和,其数学表达如下:
f
(
x
)
=
∑
i
=
1
m
π
i
(
x
)
⋅
η
i
(
x
)
=
∑
i
=
1
m
e
μ
i
⋅
x
∑
j
=
1
m
e
μ
j
⋅
x
⋅
1
1
+
e
−
w
i
⋅
x
f(x)=\sum_{i=1}^{m}{\pi_i(x)\cdot{\eta_i(x)}}=\sum_{i=1}^{m}{\frac{e^{μ_i\cdot{x}}}{\sum_{j=1}^{m}{e^{μ_j\cdot{x}}}}}\cdot{\frac{1}{1+e^{}-w_i\cdot{x}}}
f(x)=i=1∑mπi(x)⋅ηi(x)=i=1∑m∑j=1meμj⋅xeμi⋅x⋅1+e−wi⋅x1
其中的超参数“分片数”
m
m
m较好地平衡模型的拟合与推广能力。当
m
=
1
m=1
m=1时,LS-PLM退化为普通的LR。
m
m
m越大。模型的拟合能力越强。模型的规模参数随
m
m
m的增大而线性增长,模型收敛所需的训练样本也随之增长
2.7.2 模型优点
- 端到端的非线性学习能力:LS-PLM具有样本分片的能力,因此能够挖掘出数据中蕴藏的非线性模式,省去大量的人工样本处理和特征工程的过程,使LS-PLM完成端到端的训练
- 模型的稀疏性强:LS-PLM 在建模时引人了L1和 L2范数,可以使最终训练出来的模型具有较高的稀疏度,使模型的部署更加轻量级。模型服务过程仅需使用权重非零特征,因此稀疏模型也使其在线推断的效率更高。
2.8 总结
模型 | 基本原理 | 特点 | 举行 |
---|---|---|---|
协同过滤 | 根据用户的行为历史生成用户物品共现矩阵,利用用户相似性和物品相似性进行推荐 | 原理简单、直接,应用广泛 | 泛化能力差,处理稀疏矩阵的能力差,推荐结果的头部效应较明显 |
矩阵分解 | 将协同过滤算法中的共现矩阵分解为用矩阵和物品矩阵,利用用户隐向量和物品隐向量的内积进行排序并推荐 | 相较协同过滤,泛化能力有所加强,对稀疏矩阵的处理能力有所加强 | 除了用户历史行为数据,难以利用其他用户、物品特征及上下文特征 |
逻辑回归 | 将推荐问题转换成类似CTR预估的二分类问题,将用户、物品、上下文等不同特征转换成特征向量,输入逻辑回归模型得到CTR, 再按照预估 CTR 进行排序并推荐 | 能够融合多种类型的不同特征 | 模型不具备特征组合的能力,表达能力较差 |
FM | 在逻辑回归的基础上,在模型中加入二阶特征交叉部分,为每一维特征训练得到相应特征隐向量,通过隐向量间的内积运算得到交叉特征权重 | 相比逻辑回归,具备了二阶特征交叉能力,模型的表达能力增强 | 由于组合爆炸问题的限制,模型不易扩展到三阶特征交叉阶段 |
FFM | 在 FM 模型的基础上,加人“特征域”的概念,使每个特征在与不同域的特征交叉时采用不同的隐向量 | 相比 FM 进 一 步加 强 了 特 征 交 叉的能力 | 模 型 的 训 练 开 销 达到 了0(n2 )的量级,训练开销较大 |
GBDT+LR | 利用 GBDT 进行“自动化”的特征组合,将原始特征向量转换成离散型特征向量,并输人逻辑回归模型,进行最终的 CTR 预估 | 特征工程模型化,使模型具备了更高阶特征组合的能力 | GBDT 无法进行完全并行的训练,更新所需的训练时长较长 |
LS-PLM | 首先对样本进行“分片”,在每个“分片”内部构建逻辑回归模型,将每个样本的各“分片”概率与逻辑回归的得分进行加权平均,得到最终的预估值 | 模型结构类似三层神经网络,具备了较强的表达能力 | 模型结构相比深度学习模型仍比较简单,有进一步提高的空间 |
3 Embedding
3.1 Embedding简介
Embedding 的过程,就是把数据集合映射到向量空间,进而把数据进行向量化的过程。Embedding 的目标,就是找到一组合适的向量,来刻画现有的数据集合。
embedding 是指将客观世界中离散的物体或对象(如单词、短语、图片)等映射到特征空间的操作,embedding向量是指映射后的特征空间中连续且稠密的高维向量
在机器学习场景中,我们经常使用embedding向量来描述客观世界的物体。
embedding向量不是对物体进行简单编号的结果,而是在尽量保持相似不变性的前提下对物体进行特征抽象和编码的产物。通过不断训练,我们能够将客观世界中的物体不失真的映射到高维特征空间中,进而可以使用这些embedding向量实现分类、回归和预测等操作。
图Male-Female表示使用Word2vee方法编码的单词Embedding向量在Embedding空间内的位置,可以看出从Embedding(king)到Embedding(queen),从Embedding(man)到Embedding(woman)的距离向量几乎一致,这表明Embedding向量之间的运算甚至能包含词之间的语义关系信息。
图Verb tense表示词向量的特征,Embedding(walking)到Embedding(walked)和Embedding(swimming)到Embedding(swam)的距离向量一致,这表明walking-walked和swimming-swam的词性关系一致。
总之,Embedding向量能够表达相应对象的某些特征,同时向量之间的距离反映对象之间的相似性
3.2 Embedding技术对于DL的RS的重要性
- 推荐场景中大量使用 one-hot 编码对类别、id 型特征进行编码,导致样本特征向量极度稀疏,而深度学习的结构特点使其不利于稀疏特征向量的处理, 因此几乎所有深度学习推荐模型都会由 Embedding 层负责将高维稀疏特征向量,转换成稠密低维特征向量
- Embedding 本身就是极其重要的特征向量。相比 MF 等传统方法产生的特征向量,Embedding 的表达能力更强,特别是 Graph Embedding 技术被提出后, Embedding几乎可以引人任何信息进行编码,使其本身就包含大量有价值的信息。 在此基础上,Embedding 向量往往会与其他推荐系统特征连接后一同输入后续深度学习网络进行训练
- Embedding 对物品、用户相似度的计算是常用的推荐系统召回层技术。 在局部敏感哈希( Locality-Sensitive Hashing )等快速最近邻搜索技术应用于推荐系统后,Embedding 更适用于对海量备选物品进行快速“初筛”,过滤出几百到几千量级的物品交由深度学习网络进行 “精排”
3.3 Word2vec
3.3.1 Word2vec简介
Word2vec是一个用于生成“词”的向量表达的模型
为了训练 Word2vec 模型,需要准备由一组句子组成的语料库。假设其中一 个长度为 T T T 的句子为 w 1 , w 2 , . . . , w T w_1,w_2,...,w_T w1,w2,...,wT, 假定每个词都跟其相邻的词的关系最密切,即每个词都是由相邻的词决定的( CBOW 模型的主要原理 ),或者每个 词都决定了相邻的词(Skip -gram模型的主要原理 )。
如图 所示,CBOW 模型的输人是cot周边的词,预测的输出是 o>t , 而 Skip - gram 则相反。经验上讲, Skip - gram 的效果较好。
3.3.2 Word2vec模型的训练过程
为了基于语料库生成模型的训练样本,选取一个长度为 2 C + 1 2C+1 2C+1( 目标词前后各 选 c c c个词)的滑动窗口,从语料库中抽取一个句子,将滑动窗口由左至右滑动, 每移动一次,窗口中的词组就形成了一个训练样本。
有了训练样本,就可以着手定义优化目标了。既然每个词
w
t
w_t
wt都决定了相邻词
w
t
+
j
w_{t+j}
wt+j,基于极大似然估计的方法,希望所有样本的条件概率之积最大, 这里使用对数概率。因此,W0rd2veC 的目标函数:
1
T
∑
t
=
1
T
∑
−
c
≤
j
≤
c
,
j
≠
0
l
o
g
p
(
w
t
+
j
∣
w
t
)
\frac{1}{T}\sum_{t=1}^{T}\sum_{-c\le j\le c,j≠0}{logp(w_{t+j}|w_t)}
T1t=1∑T−c≤j≤c,j=0∑logp(wt+j∣wt)
接下来的核心问题是如何定义
p
(
w
t
+
j
∣
w
t
)
p(w_{t+j}|w_t)
p(wt+j∣wt)作为一个多分类问题,最直接的方法是使用 softmax 函数。
Word2vec 的“愿景”是希望用一个向量 V w V_w Vw表示词 w w w, 用词之间的内积距离 v i T v j v_i^Tv_j viTvj表示语义的接近程度,
那么条件概率
p
(
w
t
+
j
∣
w
t
)
p(w_{t+j}|w_t)
p(wt+j∣wt)的定义就 可以很直观地给出:
p
(
W
o
∣
W
I
)
=
e
x
p
(
V
w
o
′
T
)
V
w
I
∑
w
=
1
W
e
x
p
(
V
w
′
T
)
V
w
I
p(W_o|W_I)=\frac{exp({V'_{w_o}}^T)V_{w_I}}{\sum_{w=1}^{W}exp({V'_{w}}^T)V_{w_I}}
p(Wo∣WI)=∑w=1Wexp(Vw′T)VwIexp(Vwo′T)VwI
其中
w
o
w_o
wo代表
w
t
+
j
w_{t+j}
wt+j,被称为输出词;
w
I
w_I
wI代表
w
t
w_t
wt,被称为输入词
在 Word2vec 中是用 w t w_t wt预测 w t + j w_{t+j} wt+j , 但其实二者的向量表达并不在一个向量空间内。就像上面的条件概率公式那样, V w o V_{w_o} Vwo和 V w I V_{w_I} VwI,分别是词 w w w的输出向量表达和输入向量表达。
那什么是输入向量表达和输出向量表达呢?
根据条件概率 p ( w t + j ∣ w t ) p(w_{t+j}|w_t) p(wt+j∣wt)的定义,可以把两个向量的乘积再套上一个 softmax的形式,转换成如图所示的神经网络结构。 用神经网络表示 Word2veC 的模型架构后,在训练过程中就可以通过梯度下降的方式求解模型参数。那么,输入向量表达就是输入层到隐层的权重矩阵 w V × N w_{V×N} wV×N,而输出向量表达就是隐藏层到输出层的权重矩阵 w N × V ′ w'_{N×V} wN×V′。
在获得输人向量矩阵 w V × N w_{V×N} wV×N后,其中每一行对应的权重向量就是通常意义上 的“词向量”。于是这个权重矩阵自然转换成了 Word2vec 的查找表( lookup table )
例如,输人向量是10000 个词组成的 onehot 向量,隐层维度 是 300 维,那么输入层到隐层的权重矩阵为 10000x300 维。在转换为词向量查找表后,每行的权重即成了对应词的 Embedding 向量。
3.3.3 Word2vec的“负采样”训练方法
假设语料库中的词的数量为 10000, 就意味着输出层神经元有 10000 个,在每次迭代更新隐层到输出层神经 元的权重时,都需要计算所有字典中的所有 10000 个词的预测误差( prediction error ) [3] , 在实际训练过程中几乎无法承受这样巨大的计算量。
为了减轻Word2vec的训练负担,往往采用负采样(Negative Sampling )的方法进行训练。相比原来需要计算所有字典中所有词的预测误差,负采样方法只需要对采样出的几个负样本计算预测误差。
在此情况下,Word2vec模型的优化目标从一个多分类问题退化成了一个近似二分类问题,
E
=
−
l
o
g
(
v
w
o
′
T
h
)
−
∑
w
j
∈
W
n
e
g
l
o
g
σ
(
−
v
w
j
′
T
h
)
E=-log({v'_{w_o}}^Th)-\sum_{w_j\in W_{neg}}log\sigma({-v'_{wj}}^Th)
E=−log(vwo′Th)−wj∈Wneg∑logσ(−vwj′Th)
其中 v w o ′ v'_{wo} vwo′是输出词向量(即正样本),h是隐层向量, W n e g W_{neg} Wneg是负样本集合, w w j r w^r_{wj} wwjr是负样本词向量。由于负样本集合的大小非常有限( 在实际应用中通常小于 10 ), 在每轮梯度下降的迭代中,计算复杂度至少可以缩小为原来的 1/1000( 假设词表大小为10000 )。