如何理解神经网络里面的反向传播算法

发布网友 发布时间:2022-04-20 04:55

我来回答

2个回答

懂视网 时间:2022-05-07 04:04

前一章介绍了Deep Learning 中DBN算法(DL 系列一),发现当参数W经过stacked RBM 后,还需要Supervised Learning,即NN来优化参数。然而 怎样去优化呢? 参见 UFLDL教程之神经网络与反向传导算法,以及 Dark_Scope 的NN代码解读。 本章将结合DBN与NN的算法

前一章介绍了Deep Learning 中DBN算法(DL 系列一),发现当参数W经过stacked RBM 后,还需要Supervised Learning,即NN来优化参数。然而怎样去优化呢?

参见 UFLDL教程之神经网络与反向传导算法,以及Dark_Scope 的NN代码解读。

本章将结合DBN与NN的算法推导以及代码,针对重点作讲解。

代码下载:DeepLearnToolbox

当DBN每一层训练完后,参数将传给NN作监督学习。见DBNdbnunfoldtonn.m



具体批量梯度下降法见:

NN ntrain.m 其中code:44-58

 for l = 1 : numbatches
 batch_x = train_x(kk((l - 1) * batchsize + 1 : l * batchsize), :);
 
 %Add noise to input (for use in denoising autoencoder)
 if(nn.inputZeroMaskedFraction ~= 0)
  batch_x = batch_x.*(rand(size(batch_x))>nn.inputZeroMaskedFraction);
 end
 
 batch_y = train_y(kk((l - 1) * batchsize + 1 : l * batchsize), :);
 
 nn = nnff(nn, batch_x, batch_y);
 nn = nnbp(nn);
 nn = nnapplygrads(nn);
 
 L(n) = nn.L;
 
 n = n + 1;
 end

参数更新为l=1:numbatches,(关于批量梯度下降可参见:机器学习系列一)

L(n)为n次迭代中,每次batchsize个样本残差和。

关于梯度下降法,在UFLDL中有介绍更快的算法L-BFGS和共轭梯度算法,寻找 代价函数 最小化时 的值。


参考文献:

1. UFLDL Tutorial

2. Dark 的博客

3. RBM tutorial (可见RBM以及DBN的推导,NN参数优化)

注:持续更新中。。。。

热心网友 时间:2022-05-07 01:12

反向传播算法(Backpropagation)是目前用来训练人工神经网络(Artificial Neural Network,ANN)的最常用且最有效的算法。其主要思想是:
(1)将训练集数据输入到ANN的输入层,经过隐藏层,最后达到输出层并输出结果,这是ANN的前向传播过程;
(2)由于ANN的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;
(3)在反向传播的过程中,根据误差调整各种参数的值;不断迭代上述过程,直至收敛。

反向传播算法的思想比较容易理解,但具体的公式则要一步步推导,因此本文着重介绍公式的推导过程。

1. 变量定义

上图是一个三层人工神经网络,layer1至layer3分别是输入层、隐藏层和输出层。如图,先定义一些变量:
表示第层的第个神经元连接到第层的第个神经元的权重;
表示第层的第个神经元的偏置;
表示第层的第个神经元的输入,即:

表示第层的第个神经元的输出,即:

其中表示激活函数。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com