机器学习的优化目标中, 一般会加上参数的正则项. 1 范数, 2 范数都有其物理意义. 本贴根据对论文 Ruslan Salakhutdinov and Andriy Mnih, Probabilistic Matrix Factorization 的学习, 从概率矩阵分解的角度来进行解释.
本贴涉及的数学式子不多, 但写起来稍嫌复杂, 希望读者有点耐心. 毕竟是机器学习的一个坎, 迈过去就好了.
1. 数据
电影评分数据集可以表示为一个矩阵
R
=
[
r
i
j
]
N
×
M
∈
[
0..5
]
N
×
M
\mathbf{R} = [r_{ij}]_{N \times M} \in [0..5]^{N \times M}
R=[rij]N×M∈[0..5]N×M.
其中
- N N N 为用户数量;
- M M M 为电影数量;
- r i j r_{ij} rij 为用户 i i i 对电影 j j j 的评分, 特别地, r i j = 0 r_{ij} = 0 rij=0 表示用户 i i i 并未看过电影 j j j.
2. 模型
矩阵分解的思路是获得两个低秩矩阵
U
=
[
u
1
;
…
;
u
N
]
=
[
u
i
k
]
N
×
K
∈
R
N
×
K
\mathbf{U} = [\mathbf{u}_1; \dots; \mathbf{u}_N] = [u_{ik}]_{N \times K} \in \mathbb{R}^{N \times K}
U=[u1;…;uN]=[uik]N×K∈RN×K 和
V
=
[
v
1
;
…
;
v
M
]
=
[
v
j
k
]
M
×
K
∈
R
M
×
K
\mathbf{V} = [\mathbf{v}_1; \dots; \mathbf{v}_M] = [v_{jk}]_{M \times K} \in \mathbb{R}^{M \times K}
V=[v1;…;vM]=[vjk]M×K∈RM×K.
K
≪
min
{
M
,
N
}
K \ll \min\{M, N\}
K≪min{M,N}, 因此被称为 “低秩”.
如果
U
V
T
\mathbf{U} \mathbf{V}^{\mathrm{T}}
UVT 与
R
\mathbf{R}
R 非零的部分拟合得好, 则有理由相信为零那部分的值 (未知值) 可以通过这个拟合预测出来.
3. 基本假设
假设: 给定
U
\mathbf{U}
U 和
V
\mathbf{V}
V, 观测到
R
\mathbf{R}
R 的条件概率分布为:
p
(
R
∣
U
,
V
,
σ
2
)
=
∏
i
=
1
N
∏
j
=
1
M
[
N
(
r
i
j
∣
u
i
v
j
T
,
σ
2
)
]
I
i
j
(1)
p(\mathbf{R} \vert \mathbf{U}, \mathbf{V}, \sigma^2) = \prod_{i = 1}^N \prod_{j = 1}^M \left[\mathcal{N}\left(r_{ij} \vert \mathbf{u}_i \mathbf{v}_j^{\mathbf{T}}, \sigma^2\right)\right]^{I_{ij}} \tag{1}
p(R∣U,V,σ2)=i=1∏Nj=1∏M[N(rij∣uivjT,σ2)]Iij(1)
其中
- N \mathcal{N} N 是有名的高斯分布, N ( x ∣ μ , σ 2 ) = 1 2 π σ exp ( − ( x − μ ) 2 2 σ 2 ) \mathcal{N}(x \vert \mu, \sigma^2) = \frac{1}{\sqrt{2 \pi}\sigma} \exp \left(- \frac{(x - \mu)^2}{2 \sigma^2}\right) N(x∣μ,σ2)=2πσ1exp(−2σ2(x−μ)2);
- μ = u i v j T \mu = \mathbf{u}_i \mathbf{v}_j^{\mathbf{T}} μ=uivjT 表示以预测值为均值;
- x = r i j x = r_{ij} x=rij 表示观测值;
- I i j = 1 I_{ij} = 1 Iij=1 当且仅当 r i j ≠ 0 r_{ij} \ne 0 rij=0, 否则 I i j = 0 I_{ij} = 0 Iij=0. 从连乘来看, 就表示只关心那些已经有评分的数据;
- 所有数据一视同仁, 所以用连乘.
说明:
- 根据子矩阵 U \mathbf{U} U 和 V \mathbf{V} V, 用户对 i i i 对项目 j j j 的评分预测值为 u i v j T \mathbf{u}_i \mathbf{v}_j^{\mathbf{T}} uivjT. 而真实评分为 r i j r_{ij} rij. 由于子矩阵的 K K K 值有限, 而且子矩阵要拟合的是非常多的评分值, 两者通常不会精确地相等. 例如, 预测值为 3.21, 而真实值为 3. 但我们会认为, 如果子矩阵靠谱的话, 预测值与真实值应该差别较小. 或反过来假设: 真实值在预测值左右摆动, 而且越接近后者概率越大. 这一假设可以描述为: 真实值服从以预测值为均值, 某个未知 σ \sigma σ 为方差的高斯分布. 作为一个分布, 它适用于所有的预测值与实际值.
- 我们关心的是所有的已知评分的预测 (拟合) 情况, 因此用连乘式子. 连乘也是概率计算最常用招数.
4. 推导过程
由于我们观测到的是
R
\mathbf{R}
R, 需要求的是
U
\mathbf{U}
U 和
V
\mathbf{V}
V.
根据贝叶斯公式, 忽略参数
σ
2
\sigma^2
σ2 我们可以写
p
(
U
,
V
∣
R
)
=
p
(
R
∣
U
,
V
)
p
(
U
,
V
)
p
(
R
)
(2)
p(\mathbf{U}, \mathbf{V} \vert \mathbf{R}) = \frac{p(\mathbf{R} \vert \mathbf{U}, \mathbf{V})p(\mathbf{U}, \mathbf{V})}{ p(\mathbf{R})} \tag{2}
p(U,V∣R)=p(R)p(R∣U,V)p(U,V)(2)
R
\mathbf{R}
R 既然是已经观测到的数据, 优化时可以不予以考虑.
假设
U
\mathbf{U}
U 与
V
\mathbf{V}
V 独立. 则我们可能把优化式子写为
arg max
U
,
V
p
(
U
,
V
∣
R
)
=
arg max
U
,
V
p
(
R
∣
U
,
V
)
p
(
U
)
p
(
V
)
(3)
\argmax_{\mathbf{U}, \mathbf{V}} p(\mathbf{U}, \mathbf{V} \vert \mathbf{R}) = \argmax_{\mathbf{U}, \mathbf{V}} p(\mathbf{R} \vert \mathbf{U}, \mathbf{V})p(\mathbf{U}) p(\mathbf{V}) \tag{3}
U,Vargmaxp(U,V∣R)=U,Vargmaxp(R∣U,V)p(U)p(V)(3)
令
U
\mathbf{U}
U 和
V
\mathbf{V}
V 服从均值为 0 的球形高斯分布, 即
p
(
U
∣
σ
U
2
)
=
∏
i
=
1
N
N
(
u
i
∣
0
,
σ
U
2
I
)
(4)
p(\mathbf{U} \vert \sigma_{\mathbf{U}}^2) = \prod_{i = 1}^N \mathcal{N}\left(\mathbf{u}_i \vert 0, \sigma_{\mathbf{U}}^2 \mathbf{I}\right) \tag{4}
p(U∣σU2)=i=1∏NN(ui∣0,σU2I)(4)
p
(
V
∣
σ
V
2
)
=
∏
i
=
1
M
N
(
v
i
∣
0
,
σ
V
2
I
)
(5)
p(\mathbf{V} \vert \sigma_{\mathbf{V}}^2) = \prod_{i = 1}^M \mathcal{N}\left(\mathbf{v}_i \vert 0, \sigma_{\mathbf{V}}^2 \mathbf{I}\right) \tag{5}
p(V∣σV2)=i=1∏MN(vi∣0,σV2I)(5)
由于到处是乘法, 我们使用自然对数将原式写为:
p
(
U
,
V
∣
R
,
σ
2
,
σ
U
2
,
σ
V
2
)
=
−
∑
i
=
1
N
∑
j
=
1
M
I
i
j
(
ln
(
2
π
σ
)
+
(
r
i
j
−
u
i
T
v
j
)
2
2
σ
2
)
−
1
2
σ
U
2
∑
i
=
1
N
u
u
T
−
1
2
N
K
ln
σ
U
2
−
1
2
σ
V
2
∑
i
=
1
M
v
v
T
−
1
2
M
K
ln
σ
V
2
+
C
(6)
\begin{aligned}p(\mathbf{U}, \mathbf{V} \vert \mathbf{R}, \sigma^2, \sigma_{\mathbf{U}}^2, \sigma_{\mathbf{V}}^2) = & - \sum_{i = 1}^N \sum_{j = 1}^M I_{ij}\left(\ln(\sqrt{2\pi} \sigma) + \frac{\left(r_{ij} - \mathbf{u}_i^{\mathbf{T}} \mathbf{v}_j\right)^2}{2 \sigma^2}\right)\\ &- \frac{1}{2\sigma_{\mathbf{U}}^2} \sum_{i = 1}^N \mathbf{u}\mathbf{u}^{\mathrm{T}} - \frac{1}{2}NK \ln \sigma_{\mathbf{U}}^2\\ &- \frac{1}{2\sigma_{\mathbf{V}}^2} \sum_{i = 1}^M \mathbf{v}\mathbf{v}^{\mathrm{T}}- \frac{1}{2}MK \ln \sigma_{\mathbf{V}}^2 + C \end{aligned} \tag{6}
p(U,V∣R,σ2,σU2,σV2)=−i=1∑Nj=1∑MIij(ln(2πσ)+2σ2(rij−uiTvj)2)−2σU21i=1∑NuuT−21NKlnσU2−2σV21i=1∑MvvT−21MKlnσV2+C(6)
由于 (6) 式诸多项与参数无关, 最大化 (6) 就简化为
min
E
=
∑
i
=
1
N
∑
j
=
1
M
I
i
j
(
r
i
j
−
u
i
T
v
j
)
2
+
λ
U
2
∥
U
∥
F
2
+
λ
V
2
∥
V
∥
F
2
\min E = \sum_{i = 1}^N \sum_{j = 1}^M I_{ij}\left(r_{ij} - \mathbf{u}_i^{\mathbf{T}} \mathbf{v}_j\right)^2 + \frac{\lambda_\mathbf{U}}{2} \|\mathbf{U}\|_F^2 + \frac{\lambda_\mathbf{V}}{2} \|\mathbf{V}\|_F^2
minE=i=1∑Nj=1∑MIij(rij−uiTvj)2+2λU∥U∥F2+2λV∥V∥F2
其中
λ
U
=
σ
2
/
σ
U
2
\lambda_\mathbf{U} = \sigma^2 / \sigma_{\mathbf{U}}^2
λU=σ2/σU2,
λ
V
=
σ
2
/
σ
V
2
\lambda_\mathbf{V} = \sigma^2 / \sigma_{\mathbf{V}}^2
λV=σ2/σV2.
于是就获得了相应的正则项.
5. 小结
从这里可以看出, 正则项并非强加上去, 而是推导出来的. 这是本贴撰写的源动力.
几点未完成工作:
- λ U \lambda_\mathbf{U} λU 和 λ V \lambda_\mathbf{V} λV好像不能从数据求出, 还是只有用户自己设定;
- 推导的过程还不完整, 需要检查. 特别是球形高斯那里, 可以视为作业.