DBN

DBN


概述

结构

基础是多层RBM叠加而成的网络,可用于压缩与分类,或其他网络的传递中间层,避免了随机初始化权重带来的训练困难问题。

压缩任务

训练后的多层RBM组装成正向网络和反向网络,然后再通过CD学习算法微调网络达到最终模型

分类任务

因为CD算法的特殊性,可以将多层RBM组装成正向网络,然后添加一层分类拟合层,再通过CD学习算法微调网络达到最终模型。分类拟合层可以是任意模型,比如分类RBM,或者Softmax,BP等等。

特殊扩展

GB - RBM

具体训练方法

作用:使RBM支持连续数据输入,但训练调参存在困难,一般作为输入口层网络。

能量函数

原能量函数

\[E(v,h)=\sum_i\frac{(v_i-a_i)^2}{2\sigma_i^2}-\sum_{ij}(W_{ij}·\frac{v_i}{\sigma_i}·h_j)-\sum_jb_jh_j \]

若将数据进行线性变换,使数据\(\sigma\)=1,期望为0,则有

\[E(v,h)=\frac{||v||^2}2-v^Tb_v-h^Tb_h-v^TWh \]

条件分布

在隐层条件下的可见层分布

\[P(v_i|h)=\sigma*h_{0,1}*w+a_i \]

在可见层条件下的隐层分布

\[P(h_j=1|v)=\frac{1}{1+exp(-b_j-\sum_iW_{ij}\frac{v_i}{\sigma})} \]

权值更新方式

可见层→隐层

\[\langle v,h\rangle_{data}=h_{0,1}*\frac{data}{\sigma}\\ \langle v\rangle_{data}=\frac{\sum_i(v_i-b_i)}{\sigma^2}\\ \langle h\rangle_{data}=\sum_jh_j \]

隐层→可见层

\[\langle v,h\rangle_{recon}=\sum_{ij}\frac{h_j*v_i}{\sigma}\\ \langle v\rangle_{recon}=\sum_i\frac{v_i*b_i}{\sigma^2}\\ \langle h\rangle_{recon}=\sum_j{h_j} \]

训练

\[\Delta a_i=\eta·(\langle v\rangle_{data}-\langle v\rangle_{recon})\\ \Delta b_j=\eta·(\langle h\rangle_{data}-\langle h\rangle_{recon})\\ \Delta W_{ij}=\eta·(\langle v,h\rangle_{data}-\langle v,h\rangle_{recon}) \]

Dropout / Dropconnect 方法

为了防止过拟合,可以通过阻止特征检测器的共同作用来提高神经网络的性能。也就是训练过程中,随机让一半的隐层节点值为0,或者让一定比例的边不连接。

GDBN网络

来源链接

当隐层单元数超过所需个数时, 多余的隐层单元会增加网络的复杂度, 使得计算量变大从而导致训练时间呈指数增长; 当隐层单元数低于所需个数时, 由于网络无法满足训练所需规模, 从而导致达不到理性的训练结果. 因此, 可以使用GDBN网络(Genetic Deep Belief Networks), 通过利用遗传算法(Genetic Algorithm, GA)的全局快速寻优的能力对DBN的隐层单元个数自动进行设定。

Softmax算法

概率分配基于Boltzman分布,表示某一分类的概率。

\[P(o_j)=\frac{exp(o_j)}{\sum^K_{i=1}exp(o_i)} \]

矢量表达式

\[o^{(i)}=x^{(i)}W+b\\ \hat{y}^{(i)}=softmax(o^{(i)}) \]

交叉熵

用于衡量两个概率分布差异的测量函数。分类中,交叉熵只关心对正确类别的预测概率,因为只要其值足够大,就可以确保分类结果正确。

\[H(y^{(i)},\hat{y}^{(i)})=-\sum^q_{j=1}y_j^{(i)}\log \hat{y}_j^{(i)} \]

对应的损失函数

\[l(\Theta)=\frac{1}n\sum^n_{i=1}H(y^{(i)},\hat{y}^{(i)}) \]

剩下的就是求导,然后最优化。

©️ Copyrights.RSMX.GUILIN.2020-05-17

posted @ 2020-05-19 12:33  若水茗心  阅读(689)  评论(0编辑  收藏  举报