4. 隐语义模型
4.1 矩阵分解
评分数据是高度相关的,数据的冗余可以让我们用低秩矩阵来近似原矩阵。隐语义模型目前是the state of art。
U为m×k
U
为
m
×
k
的矩阵,
V为n×k
V
为
n
×
k
的矩阵,他两的乘积用以估计评分矩阵
R≈UVT(1)
(1)
R
≈
U
V
T
通过优化目标函数来求解U、V,即最小化残差矩阵 (2) ( 2 )
||R−UVT||2(2)
(2)
|
|
R
−
U
V
T
|
|
2
矩阵分解讲原始的空间降维到k维,可以理解为:
rij≈uivj=∑s=1kuis⋅vjs=∑s=1k(Affinity of user to concepet s)×(Affinity of item to concepet s)(3)
r
i
j
≈
u
i
v
j
=
∑
s
=
1
k
u
i
s
⋅
v
j
s
(3)
=
∑
s
=
1
k
(
A
f
f
i
n
i
t
y
o
f
u
s
e
r
t
o
c
o
n
c
e
p
e
t
s
)
×
(
A
f
f
i
n
i
t
y
o
f
i
t
e
m
t
o
c
o
n
c
e
p
e
t
s
)
4.1.1batch update
目标函数
minJ=12||R−UVT||2,(5)
(5)
m
i
n
J
=
1
2
|
|
R
−
U
V
T
|
|
2
,
如上目标函数针对的是矩阵中木有缺失项,若有缺失项则不再适用
minJ=12∑i,j∈Se2ij=12∑i,j∈S(ri,j−∑s=1kuis⋅vjs)2(6)
(6)
m
i
n
J
=
1
2
∑
i
,
j
∈
S
e
i
j
2
=
1
2
∑
i
,
j
∈
S
(
r
i
,
j
−
∑
s
=
1
k
u
i
s
⋅
v
j
s
)
2
公式 6 6 只针对观测到的评分部分计算损失,梯度计算如下:
∂J∂vjq=∑j:(i,j)∈S(ri,j−∑s=1kuis⋅vjs)(−uiq)=∑j:(i,j)∈Seij(−uiq)(8)
∂
J
∂
v
j
q
=
∑
j
:
(
i
,
j
)
∈
S
(
r
i
,
j
−
∑
s
=
1
k
u
i
s
⋅
v
j
s
)
(
−
u
i
q
)
(8)
=
∑
j
:
(
i
,
j
)
∈
S
e
i
j
(
−
u
i
q
)
令E为残差矩阵,可以使用如下公式计算U,V
E=R−UVT(9)
(9)
E
=
R
−
U
V
T
U←U+αEV(10)
(10)
U
←
U
+
α
E
V
V←V+αETU(11)
(11)
V
←
V
+
α
E
T
U
4..1.2 SGD
随机选择评分,
rij
r
i
j
uiq←uiq−α[∂J∂uiq]=uiq+α∗eij∗vjq(12)
(12)
u
i
q
←
u
i
q
−
α
[
∂
J
∂
u
i
q
]
=
u
i
q
+
α
∗
e
i
j
∗
v
j
q
vjq←vjq−α[∂J∂viq]=vjq+α∗eij∗uiq(13)
(13)
v
j
q
←
v
j
q
−
α
[
∂
J
∂
v
i
q
]
=
v
j
q
+
α
∗
e
i
j
∗
u
i
q
可以表示为向量形式:
ui←ui+α∗eij∗vj(14)
(14)
u
i
←
u
i
+
α
∗
e
i
j
∗
v
j
vj←vj+α∗eij∗ui(15)
(15)
v
j
←
v
j
+
α
∗
e
i
j
∗
u
i
随机梯度下降收敛的速度更快,而批更新策略更平滑,这是由于批更新使用了全部的数据来进行梯度计算,而随机梯度下降每次只使用一个评分,带来了噪声。
随机梯度下降在计算是瓶颈,数据量很大的情况下。
4.1.3 正则
目标函数:
minJ=12||R−UVT||2+λ2||U||2+λ2||V||2(16)
(16)
m
i
n
J
=
1
2
|
|
R
−
U
V
T
|
|
2
+
λ
2
|
|
U
|
|
2
+
λ
2
|
|
V
|
|
2
∂J∂uiq=∑j:(i,j)∈S(ri,j−∑s=1kuis⋅vjs)(−vjq)+λuiq=∑j:(i,j)∈Seij(−vjq)+λuiq(17)
∂
J
∂
u
i
q
=
∑
j
:
(
i
,
j
)
∈
S
(
r
i
,
j
−
∑
s
=
1
k
u
i
s
⋅
v
j
s
)
(
−
v
j
q
)
+
λ
u
i
q
(17)
=
∑
j
:
(
i
,
j
)
∈
S
e
i
j
(
−
v
j
q
)
+
λ
u
i
q
∂J∂vjq=∑j:(i,j)∈S(ri,j−∑s=1kuis⋅vjs)(−uiq)+λvjq=∑j:(i,j)∈Seij(−uiq)+λvjq(18)
∂
J
∂
v
j
q
=
∑
j
:
(
i
,
j
)
∈
S
(
r
i
,
j
−
∑
s
=
1
k
u
i
s
⋅
v
j
s
)
(
−
u
i
q
)
+
λ
v
j
q
(18)
=
∑
j
:
(
i
,
j
)
∈
S
e
i
j
(
−
u
i
q
)
+
λ
v
j
q
带有正则项的批更新:
U←U(1−αλ)+αEV(19)
(19)
U
←
U
(
1
−
α
λ
)
+
α
E
V
V←V(1−αλ)+αETU(20)
(20)
V
←
V
(
1
−
α
λ
)
+
α
E
T
U
带有正则的随机梯度更新:
ui←ui+α(eij∗vj−λui)(21)
(21)
u
i
←
u
i
+
α
(
e
i
j
∗
v
j
−
λ
u
i
)
vj←vj+α(eij∗uj−λvj)
v
j
←
v
j
+
α
(
e
i
j
∗
u
j
−
λ
v
j
)
4.1.4 ALS + 坐标下降
ALS
- 固定V,把V当作常量,更新U
- 固定U,把U当作常量,更新V
- 与随机梯度相比,效率不够高,尤其是隐反馈问题上,稳定性高
坐标下降
- 固定所有方向的向量,只留下一部分更新
4.1.5 偏置
r^ij=oi+pj+∑s=1kuis∗vjs(22)
(22)
r
^
i
j
=
o
i
+
p
j
+
∑
s
=
1
k
u
i
s
∗
v
j
s
eij=rij−oi−pj−∑s=1kuis∗vjs(23)
(23)
e
i
j
=
r
i
j
−
o
i
−
p
j
−
∑
s
=
1
k
u
i
s
∗
v
j
s
将其加入U,V矩阵中
ui,k+1=oi(24)
(24)
u
i
,
k
+
1
=
o
i
ui,k+2=1(25)
(25)
u
i
,
k
+
2
=
1
vi,k+1=1(26)
(26)
v
i
,
k
+
1
=
1
vi,k+1=pj(27)
(27)
v
i
,
k
+
1
=
p
j
目标函数:
MinimizeJ=12(∑(i,j)∈S(rij−∑s=1k+2uis∗vjs)2+12∑s=1k+2(∑i=1mu2is+∑i=1nv2js)s.t.(k+2)th column of U is 1(k+1)th column of V is 1(28)
(28)
M
i
n
i
m
i
z
e
J
=
1
2
(
∑
(
i
,
j
)
∈
S
(
r
i
j
−
∑
s
=
1
k
+
2
u
i
s
∗
v
j
s
)
2
+
1
2
∑
s
=
1
k
+
2
(
∑
i
=
1
m
u
i
s
2
+
∑
i
=
1
n
v
j
s
2
)
s
.
t
.
(
k
+
2
)
th column of U is 1
(
k
+
1
)
th column of V is 1
4.1.6 结合隐反馈
- 对于评分矩阵 R R ,将其转化为隐反馈矩阵,非零的部分设为1,然后对每行进行归一化,使得他们的平方和为1
- 矩阵 Y,n×k Y , n × k 为隐物品因子矩阵,用户隐因子可以表示为 FY F Y ,用户的倾向可以用其行为的线性组合来表示(已评分物品隐因子的线性组合)
- R≈[FY]VT R ≈ [ F Y ] V T ,其中 Y Y 为隐反馈物品隐因子矩阵,而为显反馈物品隐因子矩阵
- 这种表示往往能带来更优秀的性能,这种方法将用户隐因子表示为物品隐因子的线性组合降低了用户因子的冗余
- 用户如果有相似的评分物品,不管他们的评分分数,他们的用户因子应该相似
- 这种方法可以结合其他的独立的隐因子矩阵,不需要正则化项
- 降低的维度, n≪m n ≪ m
- 可解释性 FY]VT F Y ] V T 可以写成 F[YVT] F [ Y V T ] ,可以视为物品物品预测矩阵, [YVT]ij [ Y V T ] i j 表明了物品i的评分如何影响物品j,而矩阵F表明了 m×n m × n 用户到物品的系数
- SVD++
- 上述用户因子不会受用户评分的影响,只要评分过的物品相同,他们的隐因子就相同
- R≈[U+FY]VT R ≈ [ U + F Y ] V T
4.2 奇异值分解
4.2.1 SVD
R≈QkΣkPTk(1)
(1)
R
≈
Q
k
Σ
k
P
k
T
- Qk,Σk,PTk Q k , Σ k , P k T 分别为 m×k,k×k,与n×k m × k , k × k , 与 n × k 的矩阵, Qk Q k 与 Pk P k 分别包含了 RRT R R T 与 RTR R T R 最大的k的个特征向量,而 Σk Σ k 为k个最大特征向量对应特征值的正平方根
- RRT R R T 与 RTR R T R 的非零特征值是相同的,他们有着不同数目的零特征值, m≠n m ≠ n
- Pk P k 包含了 RTR R T R 最大的k个特征值对应的特征向量,特征向量蕴含了物品之间在评分方向上的联系,因此它们可以起到降维的作用
- QkΣk Q k Σ k 为原矩阵转化之后的形式( m×k m × k ),把 PTk P k T 看做基,那么 QkΣk Q k Σ k 可以看做用户评分在隐向量上的一维表示
- 几何意义:将一个向量从正交基空间 Pk P k 旋转到 Qk Q k ,并按 Σk Σ k 方向在各方向进行缩放
- SVD与MF对比
- U=QkΣk U = Q k Σ k
- V=Pk V = P k
- MinimizeJ=12||R−UVT||2s.t.columns of U are orthogonal, columns of V are orthogonal M i n i m i z e J = 1 2 | | R − U V T | | 2 s . t . columns of U are orthogonal, columns of V are orthogonal
- 在无缺失的矩阵上,SVD与unconstrained MF最优解是一致的,而在缺失的问题上,unconstrained MF在已观测的评分性能更优,在为观测的二者谁更优秀无法评价
4.2.2 简单迭代
-
- mean center,对于每行的均值排序用于之后重构矩阵 R→Rc R → R c
- 将 Rc R c 缺失的部分设为0,(等价于将缺失的部分设置为用户平均评分)
- 对 Rc R c 进行分解, Rc=QkΣkPTk R c = Q k Σ k P k T ,则 U=QkΣk,V=Pk U = Q k Σ k , V = P k
- r^ij=uivj+μi r ^ i j = u i v j + μ i
- 这一方法的缺点主要是,将缺失部分替换为均值会带来一定的偏差
-
- 初始化第i行缺失的部分为 μi μ i 来初始化 Rf R f
- 对于 Rk R k 进行奇异值分解
- 调整缺失部分为 QkΣkPTk Q k Σ k P k T 重新迭代
- 这种方法在缺失值很多的情况下会陷入局部最优点
4.2.3 基于优化的方法
基于迭代的方法代价十分高,因为需要完全给定矩阵的每个位置的值,更有效的方法是在优化中引入正交性
MinimizeJ=12∑(i,j)∈S(rij−∑s=1kuis⋅vjs)2+λ12∑i=1m∑s=1ku2is+λ22∑j=1n∑s=1kv2jss.t.columns of U are orthogonal, columns of V are orthogonalcolumns of V are orthogonal, columns of V are orthogonal(2)
M
i
n
i
m
i
z
e
J
=
1
2
∑
(
i
,
j
)
∈
S
(
r
i
j
−
∑
s
=
1
k
u
i
s
⋅
v
j
s
)
2
+
λ
1
2
∑
i
=
1
m
∑
s
=
1
k
u
i
s
2
+
λ
2
2
∑
j
=
1
n
∑
s
=
1
k
v
j
s
2
s
.
t
.
columns of U are orthogonal, columns of V are orthogonal
(2)
columns of V are orthogonal, columns of V are orthogonal
可以使用投影梯度下降(projected gradient descent)的方法来优化
4.3 非负矩阵分解
这一方法具有较高的可解释性,应用于非负评分中,即没有负向情感的评分矩阵
MinimizeJ=12||R−UVT||2s.t.U≥0,V≥0(1)
(1)
M
i
n
i
m
i
z
e
J
=
1
2
|
|
R
−
U
V
T
|
|
2
s
.
t
.
U
≥
0
,
V
≥
0
uij←(RV)ijuij(UVTV)ij+η(2)
(2)
u
i
j
←
(
R
V
)
i
j
u
i
j
(
U
V
T
V
)
i
j
+
η
vij←(RTU)ijvij(VUTU)ij+η(3)
(3)
v
i
j
←
(
R
T
U
)
i
j
v
i
j
(
V
U
T
U
)
i
j
+
η