微调多层自编码算法

微调多层自编码算法

Contents

  [hide]

介绍

微调是深度学习中的常用策略,可以大幅提升一个栈式自编码神经网络的性能表现。从更高的视角来讲,微调将栈式自编码神经网络的所有层视为一个模型,这样在每次迭代中,网络中所有的权重值都可以被优化。

一般策略

幸运的是,实施微调栈式自编码神经网络所需的工具都已齐备!为了在每次迭代中计算所有层的梯度,我们需要使用稀疏自动编码一节中讨论的反向传播算法。因为反向传播算法可以延伸应用到任意多层,所以事实上,该算法对任意多层的栈式自编码神经网络都适用。

使用反向传播法进行微调

为方便读者,以下我们简要描述如何实施反向传播算法:


1. 进行一次前馈传递,对  \textstyle L_2 层、 \textstyle L_3 层直到输出层  \textstyle L_{n_l},使用前向传播步骤中定义的公式计算各层上的激活值(激励响应)。


2. 对输出层( \textstyle n_l 层),令
\begin{align}\delta^{(n_l)}= - (\nabla_{a^{n_l}}J) \bullet f'(z^{(n_l)})\end{align}
(当使用softmax分类器时,softmax层满足: \nabla J = \theta^T(I-P),其中  \textstyle I 为输入数据对应的类别标签, \textstyle P 为条件概率向量。)


3. 对  \textstyle l = n_l-1, n_l-2, n_l-3, \ldots, 2
\begin{align}                 \delta^{(l)} = \left((W^{(l)})^T \delta^{(l+1)}\right) \bullet f'(z^{(l)})                 \end{align}


4. 计算所需的偏导数:
\begin{align}\nabla_{W^{(l)}} J(W,b;x,y) &= \delta^{(l+1)} (a^{(l)})^T, \\\nabla_{b^{(l)}} J(W,b;x,y) &= \delta^{(l+1)}.\end{align}
\begin{align}J(W,b)&= \left[ \frac{1}{m} \sum_{i=1}^m J(W,b;x^{(i)},y^{(i)}) \right]\end{align}


注:我们可以认为输出层softmax分类器是附加上的一层,但是其求导过程需要单独处理。具体地说,网络“最后一层”的特征会进入softmax分类器。所以,第二步中的导数由 \delta^{(n_l)} = - (\nabla_{a^{n_l}}J) \bullet f'(z^{(n_l)}) 计算,其中 \nabla J = \theta^T(I-P)


中英文对照

栈式自编码神经网络(可以考虑翻译为“多层自动编码机”或“多层自动编码神经网络”) Stacked autoencoder
微调 Fine tuning
反向传播算法 Backpropagation Algorithm
前馈传递 feedforward pass
激活值 (可以考虑翻译为“激励响应”或“响应”) activation
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值