PRML第五章读书笔记——Neural Networks 二次下降、Hessian矩阵的近似求解和精确求解、正切传播/Tikhonov正则化/软权值共享、混合密度网络、贝叶斯神经网络
目录
(神经网络发展很快,书中的思想停留在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
更多推荐
所有评论(0)