(神经网络发展很快,书中的思想停留在2006年左右那个时代。所以这里只对其中有价值的部分进行摘录。对于一般的知识略去,有更好的介绍书籍)
目录
5.1 Feed-forward Network Functions
P231 单隐层神经网络的拟合能力
这里只用了三个隐层单元,tanh激活,就已经能拟合的这么好了。感受一下。
分类能力
5.2 Network Training
P235 逻辑回归中的交叉熵和平方损失
在逻辑回归中,用sum-of-squares做loss其实也还凑合(注意和感知机做区分,感知机因为没有sigmoid,所以直接用平方损失会受离群点影响)。不过Simard et al.(2003)指出,对分类问题,用交叉熵会比平方损失更快,也能提高泛化性
P239 梯度下降和二次下降的效率对比
如果参数量为 W W W,
- 二次下降:求Hessian矩阵需要 O ( W 2 ) \mathcal O(W^2) O(W2)的复杂度,目标优化中的 H − 1 g H^{-1}g H−1g一项又至少需要 O ( W 3 ) \mathcal O(W^3) O(W3)的复杂度
- 梯度下降:求梯度 O ( W ) \mathcal O(W) O(W)复杂度,找极小值需要 O ( W ) \mathcal O(W) O(W)的复杂度(待证明),所以一共只需要 O ( W 2 ) \mathcal O(W^2) O(W2)的复杂度
P241 随机梯度下降相比于梯度下降的优势
- 容易逃出局部最优解
- 更高效。想象数据集复制成原先两倍,梯度下降要全部过一遍,而随机梯度下降则不受影响。
5.3 Error Backpropagation
P246 梯度的数值解近似
方法1为
∂
E
n
∂
w
j
i
=
E
n
(
w
j
i
+
ϵ
)
−
E
n
(
w
j
i
)
ϵ
+
O
(
ϵ
)
\frac{\partial E_n}{ \partial w_{ji}} = \frac{E_n(w_{ji} + \epsilon)-E_n(w_{ji})}{\epsilon} + \mathcal O(\epsilon)
∂wji∂En=ϵEn(wji+ϵ)−En(wji)+O(ϵ)
方法2为
∂
E
n
∂
w
j
i
=
E
n
(
w
j
i
+
ϵ
)
−
E
n
(
w
j
i
−
ϵ
)
2
ϵ
+
O
(
ϵ
2
)
\frac{\partial E_n}{ \partial w_{ji}} = \frac{E_n(w_{ji} + \epsilon)-E_n(w_{ji} - \epsilon)}{2\epsilon} + \mathcal O(\epsilon^2)
∂wji∂En=2ϵEn(wji+ϵ)−En(wji−ϵ)+O(ϵ2)
方法2的无穷小项阶数更小,可以用泰勒展开进行证明。这好神奇啊。
不过方法2的计算量是方法1的两倍(在神经网络已知
E
n
(
w
j
i
)
E_n(w_{ji})
En(wji)的前提下)
P247 Jacobian矩阵
神经网络中可以计算jacobian矩阵,计算的时候可以前向计算,也可以反向计算。
5.4 The Hessian Matrix
计算Hessian矩阵时,通常考虑所有参数,包括weights和bias,一起算一个大的Hessian矩阵 H \textbf H H.
P250 对角近似
- 考虑到有时候只是用Hessian矩阵的逆,所以更愿意估计一个对角阵 H \textbf H H。存在一种方法能让计算复杂度退化到 O ( W ) \mathcal O(W) O(W)(Becker and Le Cun, 1989; Le Cun et al., 1990),具体计算过程略去,翻书……
- 如果损失函数 E = ∑ n E n E=\sum_n E_n E=∑nEn,是 n n n个样本相加,那么 H \textbf H H也可以每个样本单独算,最后加起来
P251 外积近似
考虑最小二乘为损失函数的回归问题,
E
=
1
2
∑
n
=
1
N
(
y
n
−
t
n
)
2
E=\frac{1}{2}\sum_{n=1}^N (y_n - t_n)^2
E=21n=1∑N(yn−tn)2
H
=
∇
2
E
=
∑
n
=
1
N
∇
y
n
T
∇
y
n
+
∑
n
=
1
N
(
y
n
−
t
n
)
∇
2
y
n
\textbf H = \nabla^2 E=\sum_{n=1}^N \nabla y_n^T \nabla y_n+\sum_{n=1}^N (y_n - t_n)\nabla^2 y_n
H=∇2E=n=1∑N∇ynT∇yn+n=1∑N(yn−tn)∇2yn
如果
y
n
y_n
yn和
t
n
t_n
tn很接近,第二项很小,忽略。(或者假定第二项中
y
n
−
t
n
y_n-t_n
yn−tn与
∇
2
y
n
\nabla^2 y_n
∇2yn无关,则求和后,因为
y
n
−
t
n
y_n-t_n
yn−tn的误差期望是0,苏所以也能忽略)
剩下
H
≃
∑
n
=
1
N
b
n
b
n
T
\textbf H \simeq \sum_{n=1}^N \textbf b_n \textbf b_n^T
H≃n=1∑NbnbnT
其中
b
n
=
∇
a
n
\textbf b_n = \nabla a_n
bn=∇an,
a
n
a_n
an是没有激活的网络最后一层(logit值)
对于逻辑回归,则有类似结论
H
≃
∑
n
=
1
N
y
n
(
1
−
y
n
)
b
n
b
n
T
\textbf H \simeq \sum_{n=1}^N y_n(1-y_n)\textbf b_n \textbf b_n^T
H≃n=1∑Nyn(1−yn)bnbnT
这种方式的计算,比较高效,
O
(
W
2
)
\mathcal O(W^2)
O(W2)的复杂度发生在
b
n
\textbf b_n
bn的矩阵乘法那里
用这种方式可以近似计算
H
−
1
\textbf H^{-1}
H−1。考虑数据是序列进来的,
H
L
+
1
=
H
L
+
b
L
+
1
b
L
+
1
T
\textbf H _{L+1} = \textbf H_L + \textbf b_{L+1} \textbf b_{L+1}^T
HL+1=HL+bL+1bL+1T
利用woodbury等式可以得到
H
L
+
1
−
1
=
H
L
−
1
−
H
L
−
1
b
L
+
1
b
L
+
1
T
H
L
−
1
1
+
b
L
+
1
T
H
L
−
1
b
L
+
1
\textbf H_{L+1}^{-1} = \textbf H_{L}^{-1} - \frac{\textbf H_{L}^{-1} \textbf b_{L+1}\textbf b_{L+1}^T \textbf H_{L}^{-1}}{1+\textbf b_{L+1}^T\textbf H_{L}^{-1}\textbf b_{L+1}}
HL+1−1=HL−1−1+bL+1THL−1bL+1HL−1bL+1bL+1THL−1
初始的
H
0
\textbf H_0
H0可以选
α
I
\alpha \textbf I
αI,其中
α
\alpha
α比较小。这样计算的是
H
+
α
I
\textbf H+\alpha \textbf I
H+αI的逆,但结果并不会对
α
\alpha
α过于敏感
P252 有限差
数值方法计算
∂
2
E
∂
w
j
i
∂
w
l
k
=
1
4
ϵ
2
{
E
(
w
j
i
+
ϵ
,
w
l
k
+
ϵ
)
−
E
(
w
j
i
+
ϵ
,
w
l
k
−
ϵ
)
−
E
(
w
j
i
−
ϵ
,
w
l
k
+
ϵ
)
+
E
(
w
j
i
−
ϵ
,
w
l
k
−
ϵ
)
}
+
O
(
ϵ
2
)
\frac{\partial^2 E}{\partial w_{ji}\partial w_{lk}}=\frac{1}{4\epsilon^2}\{ E(w_{ji}+\epsilon, w_{lk}+\epsilon) - E(w_{ji}+\epsilon, w_{lk}-\epsilon) -E(w_{ji}-\epsilon, w_{lk}+\epsilon) +E(w_{ji}-\epsilon, w_{lk}-\epsilon) \} + \mathcal{O}(\epsilon^2)
∂wji∂wlk∂2E=4ϵ21{E(wji+ϵ,wlk+ϵ)−E(wji+ϵ,wlk−ϵ)−E(wji−ϵ,wlk+ϵ)+E(wji−ϵ,wlk−ϵ)}+O(ϵ2)
这里的无穷小项是
O
(
ϵ
2
)
\mathcal O(\epsilon^2)
O(ϵ2),而不是
O
(
ϵ
)
\mathcal O(\epsilon)
O(ϵ).
这样的复杂度是
O
(
W
3
)
\mathcal O(W^3)
O(W3),太高了。一种有效的方法是先求梯度,再用数值方法
∂
2
E
∂
w
j
i
∂
w
l
k
=
1
2
ϵ
{
∂
E
∂
w
j
i
(
w
l
k
+
ϵ
)
−
∂
E
∂
w
j
i
(
w
l
k
−
ϵ
)
}
+
O
(
ϵ
2
)
\frac{\partial^2 E}{\partial w_{ji}\partial w_{lk}}=\frac{1}{2\epsilon}\left \{ \frac{\partial E}{\partial w_{ji}}(w_{lk}+\epsilon) -\frac{\partial E}{\partial w_{ji}}(w_{lk}-\epsilon) \right \} + \mathcal{O}(\epsilon^2)
∂wji∂wlk∂2E=2ϵ1{∂wji∂E(wlk+ϵ)−∂wji∂E(wlk−ϵ)}+O(ϵ2)
复杂度为
O
(
W
2
)
\mathcal O(W^2)
O(W2)
P253 精确计算
Hessian可以精确计算,不难,但是繁琐,要细心,想清楚计算图的依赖关系。具体公式翻书
P254 Hessian矩阵的快乘法
很多时候,我们需要的是Hessian矩阵的有关乘法,而不是其本身
如果要计算
v
T
H
=
v
T
∇
(
∇
E
)
\textbf v^T \textbf H=\textbf v^T \nabla (\nabla E)
vTH=vT∇(∇E),记
R
{
⋅
}
\mathcal R\{\cdot\}
R{⋅}表示算子
v
T
∇
\textbf v ^T\nabla
vT∇
这样可以对这个算子采用通常的微积分规则,并且已知
R
{
w
}
=
v
\mathcal R\{\textbf w\} = \textbf v
R{w}=v
直接前向-反向传播就行了!真的神奇。(细节翻书)
5.5 Regularization in Neural Networks
P257 L2正则化的尺度
-
如果缩放输入和输出尺度,那么可以通过改变参数的尺度得到同样的映射。但是在有L2约束时,缩放后的映射不会是和原先的映射一样。所以需要给每一层都采用不同的L2权重系数。
当尺度变化时,L2权重系数也要改变。
以两层参数为例,先验通常为
p ( w ∣ α 1 , α 2 ) ∝ exp ( − α 1 2 ∑ w ∈ W 1 w 2 − α 2 2 ∑ w ∈ W 2 w 2 ) p(\textbf w|\alpha_1, \alpha_2) \propto \exp \left ( -\frac{\alpha_1}{2}\sum_{w \in \mathcal W_1} w^2 - \frac{\alpha_2}{2}\sum_{w \in\mathcal W_2} w^2\right ) p(w∣α1,α2)∝exp(−2α1w∈W1∑w2−2α2w∈W2∑w2) -
注意这是一个反常先验improper. 不能标准化。因为偏置项 b b b没有约束。
反常先验会导致在贝叶斯框架下进行模型比较困难。因为模型证据为0。常用的做法是在偏置项上单独施加一个先验(例如高斯,虽然这样破坏了平移不变性)
P259 早停
早停有两种解释
- 模型在训练过程中,有效自由度的数量会越来越高,导致模型越来越复杂。早停是一种限制模型复杂度的做法
- 早停和L2权重衰减有相似性,且可以定量证明两者之间的联系,即 τ η \tau \eta τη( τ \tau τ是迭代次数, η \eta η是学习率)和正则化权重系数 λ \lambda λ倒数有联系。这一点,Goodfellow的Deep Learning中也有写。
P261 不变性
如果希望神经网络对于输入的某种变换具有不变性(例如尺度不变性、平移不变性等)。
通常有四种方法:
- 多采带变换的样本
- 加入正则化,对变换进行惩罚(也即正切传播的作用)
- 通过预处理,消除变化
- 把不变性的性质整合到神经网络,如CNN
P264 正切传播
为了保持不变性,考虑变换为
s
(
x
,
ξ
)
\textbf s(\textbf x, \xi)
s(x,ξ)
其中
s
(
x
,
0
)
=
x
\textbf s(\textbf x, 0)=\textbf x
s(x,0)=x
则在
x
\textbf x
x的流形
M
\mathcal M
M上,样本移动方向为
τ
n
=
∂
s
(
x
,
ξ
)
∂
ξ
∣
ξ
=
0
\tau_n =\left. \frac{\partial \textbf s(\textbf x, \xi)}{\partial \xi} \right |_{\xi=0}
τn=∂ξ∂s(x,ξ)∣∣∣∣ξ=0
神经网络需要加入正则项
Ω
=
1
2
∑
n
∑
k
(
∂
y
n
k
∂
ξ
∣
ξ
=
0
)
2
=
1
2
∑
n
∑
k
(
∑
i
=
1
D
∂
y
n
k
∂
x
n
i
∂
x
n
i
∂
ξ
)
2
=
1
2
∑
n
∑
k
(
∑
i
=
1
D
J
n
k
i
τ
n
i
)
2
\Omega = \frac{1}{2}\sum_n \sum_k \left (\left. \frac{\partial y_{nk}}{\partial \xi} \right |_{\xi=0} \right)^2=\frac{1}{2}\sum_n \sum_k\left ( \sum_{i=1}^D \frac{\partial y_{nk}}{\partial x_{ni}} \frac{\partial x_{ni}}{\partial \xi} \right )^ 2=\frac{1}{2}\sum_n \sum_k\left ( \sum_{i=1}^D J_{nki} \tau_{ni}\right)^ 2
Ω=21n∑k∑(∂ξ∂ynk∣∣∣∣ξ=0)2=21n∑k∑(i=1∑D∂xni∂ynk∂ξ∂xni)2=21n∑k∑(i=1∑DJnkiτni)2
其中
J
n
k
i
J_{nki}
Jnki是Jacobian矩阵里的元素
- 如果有多个变换,对每个变换都具有不变性,那么对变换的组合就会有(局部)不变性
P265 Tikhonov正则化
Ω
=
1
2
∫
∥
∇
y
(
x
)
∥
2
p
(
x
)
d
x
\Omega = \frac{1}{2}\int \| \nabla y(\textbf x) \|^2 p(\textbf x) d\textbf x
Ω=21∫∥∇y(x)∥2p(x)dx
这个正则化项对输入的高斯噪声有一定鲁棒性,可以认为这是一种不变性。
实际上,这个正则化项可以通过误差函数
E
~
=
1
2
∭
{
y
(
s
(
x
,
ξ
)
)
−
t
}
2
p
(
t
∣
x
)
p
(
x
)
p
(
ξ
)
d
x
d
t
d
ξ
\tilde E = \frac{1}{2}\iiint \{ y(\textbf s(\textbf x,\xi))-t \}^2p(t|\textbf x)p(\textbf x)p(\xi)d\textbf xdtd\xi
E~=21∭{y(s(x,ξ))−t}2p(t∣x)p(x)p(ξ)dxdtdξ
推导出,其中对于高斯噪声,
s
(
x
,
ξ
)
=
x
+
ξ
\textbf s(\textbf x,\xi)=\textbf x+\xi
s(x,ξ)=x+ξ,
p
(
ξ
)
∼
N
(
0
,
λ
)
p(\xi)\sim \mathcal N(0, \lambda)
p(ξ)∼N(0,λ)
可以推出
E
~
=
E
+
λ
Ω
\tilde E=E+\lambda \Omega
E~=E+λΩ
具体过程略去
P269 软权值共享
为了减少参数,可以认为参数是从一堆
M
M
M个混合高斯中来的,也即对每个参数
w
i
w_i
wi,有
p
(
w
i
)
=
∑
j
=
1
M
π
j
N
(
w
i
∣
μ
j
,
σ
j
2
)
p(w_i) = \sum_{j=1}^M \pi_j \mathcal N(w_i|\mu_j, \sigma_j^2)
p(wi)=j=1∑MπjN(wi∣μj,σj2)
正则化的先验为
Ω
(
w
)
=
−
∑
i
ln
(
∑
j
=
1
M
π
j
N
(
w
i
∣
μ
j
,
σ
j
2
)
)
\Omega(\textbf w)=-\sum_i \ln \left ( \sum_{j=1}^M \pi_j \mathcal N(w_i|\mu_j, \sigma_j^2) \right)
Ω(w)=−i∑ln(j=1∑MπjN(wi∣μj,σj2))
总损失函数为
E
~
=
E
+
λ
Ω
\tilde E=E+\lambda \Omega
E~=E+λΩ
这里
π
,
μ
,
σ
\pi, \mu, \sigma
π,μ,σ需要和参数联合优化,所以不能用EM算法。仍然采用梯度下降。先令
γ
j
(
w
)
=
π
j
N
(
w
∣
μ
j
,
σ
j
2
)
∑
k
π
k
N
(
w
∣
μ
k
,
σ
k
2
)
\gamma_j(w)=\frac{\pi_j \mathcal N(w|\mu_j, \sigma_j^2)}{\sum_k \pi_k \mathcal N(w|\mu_k, \sigma_k^2)}
γj(w)=∑kπkN(w∣μk,σk2)πjN(w∣μj,σj2)
可以求得
∂
E
~
∂
w
i
=
∂
E
∂
w
i
+
λ
∑
j
γ
j
(
w
i
)
(
w
i
−
μ
j
)
σ
j
2
\frac{\partial \tilde E}{\partial w_i} = \frac{\partial E}{\partial w_i} + \lambda \sum_ j \gamma_j(w_i)\frac{(w_i - \mu_j)}{\sigma_j^2}
∂wi∂E~=∂wi∂E+λj∑γj(wi)σj2(wi−μj)
其直观含义是让
w
w
w尽量靠近每个类的均值
∂
E
~
∂
μ
j
=
λ
∑
j
γ
j
(
w
i
)
(
μ
j
−
w
i
)
σ
j
2
\frac{\partial \tilde E}{\partial \mu_j} = \lambda \sum_ j \gamma_j(w_i)\frac{( \mu_j - w_i)}{\sigma_j^2}
∂μj∂E~=λj∑γj(wi)σj2(μj−wi)
其直观含义是让每个均值尽量靠近类中心
∂
E
~
∂
σ
j
=
λ
∑
i
γ
j
(
w
i
)
(
1
σ
j
−
(
w
i
−
μ
j
)
2
σ
j
3
)
\frac{\partial \tilde E}{\partial \sigma_j} = \lambda \sum_i \gamma_j(w_i) \left ( \frac{1}{\sigma_j} -\frac{(w_i - \mu_j)^2}{\sigma_j^3}\right )
∂σj∂E~=λi∑γj(wi)(σj1−σj3(wi−μj)2)
为了防止
σ
\sigma
σ为负,或为0,得到病态解,常用
σ
j
2
=
exp
(
ζ
j
)
\sigma_j^2=\exp(\zeta_j)
σj2=exp(ζj)来重参数化
对于
π
\pi
π,因为限制了和为1,所以用
η
\eta
η进行softmax重参数化,
π
j
=
exp
(
η
j
)
∑
k
=
1
M
exp
(
η
k
)
\pi_j = \frac{\exp(\eta_j)}{\sum_{k=1}^M \exp(\eta_k)}
πj=∑k=1Mexp(ηk)exp(ηj)
求得
∂
E
~
∂
η
j
=
∑
i
{
π
j
−
γ
j
(
w
i
)
}
\frac{\partial \tilde E}{\partial \eta_j}=\sum_i \{ \pi_j - \gamma_j(w_i) \}
∂ηj∂E~=i∑{πj−γj(wi)}
可以看到对
η
\eta
η的梯度希望它和参数表现上的
γ
\gamma
γ一致
5.6 Mixture Density Networks
如果输出是有几个分布混合的,例如在回归问题中,并不是单纯的高斯分布(比如输入房屋面积,输出房价,但是样本有北京和武汉两个地方,这对应两个不同分布)。这时候,如果强行用高斯分布拟合,结果对两边都会很差。
书中的例子是
t
=
x
+
0.3
sin
(
2
π
x
)
+
n
o
i
s
e
t=x+0.3\sin (2\pi x) + noise
t=x+0.3sin(2πx)+noise,然后把
x
,
t
x,t
x,t对调
这时可以建模成混合分布,
p
(
t
∣
x
)
=
∑
k
=
1
K
π
k
(
x
)
N
(
t
∣
μ
k
(
x
,
σ
k
2
(
x
)
)
p(\textbf t|\textbf x) = \sum_{k=1}^K \pi_k(\textbf x)\mathcal N(\textbf t|\mu_k(\textbf x, \sigma_k^2(\textbf x))
p(t∣x)=k=1∑Kπk(x)N(t∣μk(x,σk2(x))
这是一个异方差heteroscedastic的例子,因为噪声来自
x
\textbf x
x
如果
t
t
t的维度是
L
L
L,打算用
K
K
K个混合高斯分布建模,此时神经网络的输出设计为:
- K K K个分布先验概率 π k ( x ) \pi_k(\textbf x) πk(x),可以用无约束的 η k ( x ) \eta_k(\textbf x) ηk(x)代替,并做softmax重参数化
- K K K个分布各自的方差 σ k 2 ( x ) \sigma_k^2(\textbf x) σk2(x),可以用无约束的 ζ k ( x ) \zeta_k(\textbf x) ζk(x)代替,并用指数函数 σ = exp ( ζ ) \sigma = \exp(\zeta) σ=exp(ζ)重参数化
-
K
K
K个类各自的均值
μ
k
\mu_k
μk,注意一共有
K
×
L
K\times L
K×L个参数
综上,一共需要 ( K + 2 ) L (K+2)L (K+2)L个参数
对应损失函数为
关于
μ
k
,
η
k
,
ζ
k
\bm \mu_k,\eta_k, \zeta_k
μk,ηk,ζk的偏导数和软权值共享中的形式非常像,这里不抄了
训练完成后,推断时,可以求得均值
E
[
t
∣
x
]
=
∑
k
=
1
K
π
k
(
x
)
μ
k
(
x
)
\mathbb E[\textbf t|\textbf x] = \sum_{k=1}^K \pi_k(\textbf x) \mu_k(\textbf x)
E[t∣x]=k=1∑Kπk(x)μk(x)
方差
s
2
(
x
)
=
E
[
∥
t
−
E
[
t
∣
x
]
∥
2
∣
x
]
=
∑
k
=
1
K
π
k
(
x
)
{
σ
k
2
(
x
)
+
∥
μ
k
(
x
)
−
∑
l
=
1
K
π
l
(
x
)
μ
l
(
x
)
∥
2
}
s^2(\textbf x) = \mathbb E [\|\textbf t - \mathbb E [\textbf t| \textbf x]\|^2 |\textbf x] = \sum_{k=1}^K\pi_k(\textbf x)\left \{ \sigma_k^2(\textbf x) + \left \| \mu_k(\textbf x) - \sum_{l=1}^K \pi_l(\textbf x)\mu_l (\textbf x) \right \|^2 \right\}
s2(x)=E[∥t−E[t∣x]∥2∣x]=k=1∑Kπk(x)⎩⎨⎧σk2(x)+∥∥∥∥∥μk(x)−l=1∑Kπl(x)μl(x)∥∥∥∥∥2⎭⎬⎫
这个求混合分布的想法挺有意思的,注意推断时,均值 E [ t ∣ x ] \mathbb E[\textbf t|\textbf x] E[t∣x]可能并不能很好地反映分布,更好的办法是找条件众数conditional mode,也即概率最大的 p ( t ∣ x ) p(\textbf t|\textbf x) p(t∣x)对应的 t \textbf t t,但是这没有解析解,只能通过数值方法优化。一种简单的代替方法是直接找先验概率最大的部分,如上图(d)所示
5.7 Bayesian Neural Networks
贝叶斯方法中,为了进行预测,需要对参数进行积分。这在神经网络中非常困难。变分推断在假定后验是高斯的情况下进行。不过最完整的方法是基于拉普拉斯近似。
这里假设
- 参数后验以众数为中心的高斯
- 协方差很小
(其实就是把后验建模成高斯,同时解决输出和输入之间不是线性关系的问题,当协方差很小时,后者就可以用一阶泰勒展开近似。这样问题就和前两章的回归和分类很像了)
P278 后验参数分布与贝叶斯回归网络
p
(
w
∣
α
)
=
N
(
w
∣
0
,
α
−
1
I
)
p
(
t
∣
x
,
w
,
β
)
=
N
(
t
∣
y
(
x
,
w
)
,
β
−
1
)
\begin{aligned} p(\textbf w|\alpha) &=\mathcal N(\textbf w|\textbf 0, \alpha^{-1} \textbf I) \\ p(t|\textbf x,\textbf w,\beta) &= \mathcal N(t|y(\textbf x,\textbf w),\beta^{-1}) \end{aligned}
p(w∣α)p(t∣x,w,β)=N(w∣0,α−1I)=N(t∣y(x,w),β−1)
对于数据集
D
\mathcal D
D,
p
(
w
∣
D
,
α
,
β
)
∝
p
(
w
∣
α
)
p
(
D
∣
w
,
β
)
=
p
(
w
∣
α
)
∏
n
=
1
N
N
(
t
n
∣
y
(
x
n
,
w
)
,
β
−
1
)
p(\textbf w|\mathcal D, \alpha, \beta)\propto p(\textbf w|\alpha)p(\mathcal D|\textbf w, \beta)=p(\textbf w|\alpha)\prod_{n=1}^N \mathcal N(t_n|y(\textbf x_n,\textbf w),\beta^{-1})
p(w∣D,α,β)∝p(w∣α)p(D∣w,β)=p(w∣α)n=1∏NN(tn∣y(xn,w),β−1)
因为
y
(
x
n
,
w
)
y(\textbf x_n,\textbf w)
y(xn,w)非线性,后验不是高斯
但可以采用拉普拉斯近似找高斯形式的近似后验
最大化
ln
p
(
w
∣
D
)
=
−
α
2
w
T
w
−
β
2
∑
n
=
1
N
{
y
(
x
n
,
w
)
−
t
n
}
2
+
const
\ln p(\textbf w|\mathcal D)=-\frac{\alpha}{2} \textbf w^T\textbf w-\frac{\beta}{2}\sum_{n=1}^N\{ y(\textbf x_n,\textbf w)-t_n \}^2+ \text{const}
lnp(w∣D)=−2αwTw−2βn=1∑N{y(xn,w)−tn}2+const
中心为概率最高的参数点,即
w
M
A
P
\textbf w_{MAP}
wMAP
该点二阶导为
A
=
−
∇
2
ln
p
(
w
∣
D
,
α
,
β
)
=
α
I
+
β
H
\textbf A=-\nabla^2 \ln p(\textbf w|\mathcal D, \alpha, \beta)=\alpha\textbf I+\beta\textbf H
A=−∇2lnp(w∣D,α,β)=αI+βH
其中
H
\textbf H
H是平方和误差关于
w
\textbf w
w的Hessian矩阵
所以,近似的后验为
q
(
w
∣
D
)
=
N
(
w
∣
w
M
A
P
,
A
−
1
)
q(\textbf w|\mathcal D)=\mathcal N(\textbf w|\textbf w_{MAP},\textbf A^{-1})
q(w∣D)=N(w∣wMAP,A−1)
预测分布为
p
(
t
∣
x
,
D
)
=
∫
p
(
t
∣
x
,
w
)
q
(
w
∣
D
)
d
w
p(t|\textbf x,\mathcal D)=\int p(t|\textbf x,\textbf w)q(\textbf w|\mathcal D)d\textbf w
p(t∣x,D)=∫p(t∣x,w)q(w∣D)dw
该积分仍然无法理论处理,因为
y
y
y是
w
\textbf w
w的非线性函数(也就是说这不是线性高斯模型)。但是如果认为
q
q
q方差比较小,那么可以用泰勒展开得到
y
(
x
,
w
)
≃
y
(
x
,
w
M
A
P
)
+
g
T
(
w
−
w
M
A
P
)
y(\textbf x,\textbf w)\simeq y(\textbf x, \textbf w_{MAP})+\textbf g^T(\textbf w-\textbf w_{MAP})
y(x,w)≃y(x,wMAP)+gT(w−wMAP)
其中
g
=
∇
w
y
(
x
,
w
)
∣
w
=
w
M
A
P
g=\nabla _{\textbf w}y(\textbf x,\textbf w)|_{\textbf w=\textbf w_{MAP}}
g=∇wy(x,w)∣w=wMAP,这就变成了一个线性高斯模型
结果为
p
(
t
∣
x
,
D
,
α
,
β
)
=
N
(
t
∣
y
(
x
,
w
M
A
P
)
,
σ
2
(
x
)
)
p(t|\textbf x,\mathcal D,\alpha, \beta)=\mathcal N(t|y(\textbf x, \textbf w_{MAP}),\sigma^2(\textbf x))
p(t∣x,D,α,β)=N(t∣y(x,wMAP),σ2(x))
其中
σ
2
(
x
)
=
β
−
1
+
g
T
A
−
1
g
\sigma^2(\textbf x)=\beta^{-1}+\textbf g^T\textbf A^{-1}\textbf g
σ2(x)=β−1+gTA−1g
P280 超参数优化
可以对
α
,
β
\alpha, \beta
α,β进行优化,方法类似第三章的最大化证据函数,这里略去。
不过和第三章对比,不同的是这里
α
\alpha
α的改变,会引起
H
\textbf H
H的改变,进而影响
λ
\lambda
λ。这里把这个影响忽略掉。
注意这里,可以根据
p
(
D
)
p(\mathcal D)
p(D)去选模型,也即调整隐层中节点的个数
P281 贝叶斯分类网络
做法与回归类似,与贝叶斯逻辑回归也类似,还是要用拉普拉斯近似。
注意在优化超参数
α
\alpha
α时,要计算计算
ln
p
(
D
∣
α
)
\ln p(\mathcal D|\alpha)
lnp(D∣α),方法是要用模型证据中的归一化系数估计方法(详见第4章)
感觉这样选出来的 α \alpha α确实能比较好的防止过拟合
参考文献:
[1] Christopher M. Bishop. Pattern Recognition and Machine Learning. 2006