机器学习的优化目标中, 一般会加上参数的正则项. 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
=
[
r
i
j
]
N
×
M
∈
[
0
.
.
5
]
N
×
M
.
其中
-
NN
N
为用户数量; -
MM
M
为电影数量; -
ri
j
r_{ij}
r
i
j
为用户
ii
i
对电影
jj
j
的评分, 特别地,
ri
j
=
0
r_{ij} = 0
r
i
j
=
0
表示用户
ii
i
并未看过电影
jj
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
=
[
u
1
;
…
;
u
N
]
=
[
u
i
k
]
N
×
K
∈
R
N
×
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
=
[
v
1
;
…
;
v
M
]
=
[
v
j
k
]
M
×
K
∈
R
M
×
K
.
K
≪
min
{
M
,
N
}
K \ll \min\{M, N\}
K
≪
min
{
M
,
N
}
, 因此被称为 “低秩”.
如果
U
V
T
\mathbf{U} \mathbf{V}^{\mathrm{T}}
U
V
T
与
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
∏
N
j
=
1
∏
M
[
N
(
r
i
j
∣
u
i
v
j
T
,
σ
2
)
]
I
i
j
(
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
π
σ
1
exp
(
−
2
σ
2
(
x
−
μ
)
2
)
; -
μ=
u
i
v
j
T
\mu = \mathbf{u}_i \mathbf{v}_j^{\mathbf{T}}
μ
=
u
i
v
j
T
表示以预测值为均值; -
x=
r
i
j
x = r_{ij}
x
=
r
i
j
表示观测值; -
Ii
j
=
1
I_{ij} = 1
I
i
j
=
1
当且仅当
ri
j
≠
0
r_{ij} \ne 0
r
i
j
=
0
, 否则
Ii
j
=
0
I_{ij} = 0
I
i
j
=
0
. 从连乘来看, 就表示只关心那些已经有评分的数据; - 所有数据一视同仁, 所以用连乘.
说明:
-
根据子矩阵
U\mathbf{U}
U
和
V\mathbf{V}
V
, 用户对
ii
i
对项目
jj
j
的评分预测值为
ui
v
j
T
\mathbf{u}_i \mathbf{v}_j^{\mathbf{T}}
u
i
v
j
T
. 而真实评分为
ri
j
r_{ij}
r
i
j
. 由于子矩阵的
KK
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
,
V
a
r
g
m
a
x
p
(
U
,
V
∣
R
)
=
U
,
V
a
r
g
m
a
x
p
(
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
∣
σ
U
2
)
=
i
=
1
∏
N
N
(
u
i
∣
0
,
σ
U
2
I
)
(
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
∣
σ
V
2
)
=
i
=
1
∏
M
N
(
v
i
∣
0
,
σ
V
2
I
)
(
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
,
σ
U
2
,
σ
V
2
)
=
−
i
=
1
∑
N
j
=
1
∑
M
I
i
j
(
ln
(
2
π
σ
)
+
2
σ
2
(
r
i
j
−
u
i
T
v
j
)
2
)
−
2
σ
U
2
1
i
=
1
∑
N
u
u
T
−
2
1
N
K
ln
σ
U
2
−
2
σ
V
2
1
i
=
1
∑
M
v
v
T
−
2
1
M
K
ln
σ
V
2
+
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
min
E
=
i
=
1
∑
N
j
=
1
∑
M
I
i
j
(
r
i
j
−
u
i
T
v
j
)
2
+
2
λ
U
∥
U
∥
F
2
+
2
λ
V
∥
V
∥
F
2
其中
λ
U
=
σ
2
/
σ
U
2
\lambda_\mathbf{U} = \sigma^2 / \sigma_{\mathbf{U}}^2
λ
U
=
σ
2
/
σ
U
2
,
λ
V
=
σ
2
/
σ
V
2
\lambda_\mathbf{V} = \sigma^2 / \sigma_{\mathbf{V}}^2
λ
V
=
σ
2
/
σ
V
2
.
于是就获得了相应的正则项.
5. 小结
从这里可以看出, 正则项并非强加上去, 而是推导出来的. 这是本贴撰写的源动力.
几点未完成工作:
-
λU
\lambda_\mathbf{U}
λ
U
和
λV
\lambda_\mathbf{V}
λ
V
好像不能从数据求出, 还是只有用户自己设定; - 推导的过程还不完整, 需要检查. 特别是球形高斯那里, 可以视为作业.