机器学习(16) 神经网络模型进阶

1 相关标记

神经网络在分类问题中的应用

  1. 训练集
  2. 神经网络的层数LL=4
  3. 层中的神经元数(不包括偏差单元)
  4. 输出单元数K

K=1,只有一个输出单元,

K个输出单元,,例如:

2 代价函数

逻辑回归的代价函数为

神经网络的代价函数为

3 反向传播算法(Backpropagation algorithm)

代价函数

目标

需要计算

重点在于如何计算偏导项。

3.1 前向传播计算过程

对于一个训练样本

前向传播计算的过程是:

3.2 反向传播梯度计算原理

反向传播法从直观上说就是研究节点的误差)是该节点的激活值

反向传播的输出层误差是(L=4):

用向量表示则有:

反向传播的计算如下:

  1.    

不存在,因为对于第一层而言,是训练样本,不存在误差。

所谓反向传播,就是相对于前向传播而言的。就是先计算输出层的误差,在反向计算L-1层的误差,…,直到计算出第二层的误差

3.3 反向传播梯度计算过程

训练集

神经网络的层数LL=4

层中的神经元数(不包括偏差单元)

输出单元数K

K=1,只有一个输出单元,

K个输出单元,,例如:

第一步:设置  的大写,用来计算偏导项

第二步:循环

For i=1 to m

  Set

  Perform forward propagation to compute  for l=2,3,…,L

  Using,compute

  Compute

  用向量表示为

第三步:跳出这个循环的条件分两种情况讨论:

 

 

3.4 正向传播和反向传播的计算过程对比

训练集

神经网络的层数LL=4

层中的神经元数(不包括偏差单元)

输出单元数KK=1

前向传播计算详细过程如下:

第一步:设,则有

第二步:加一个偏置项,则有,则有=

第三步:加一个偏置项,则有,则有=

反向传播计算详细过程如下:

反向计算的代价函数:

对于一个训练集样本,只有一个输出单元,可以忽略正则化项λ=0,单样本代价函数为:

这个函数表示了预测的精确度。为了方便理解:【这个表达式扮演了类似方差的角色,于是可以考虑,即神经网络预测值和实际值的方差,就像逻辑回归中的单样本方差一样。】熟悉微积分的都知道:

  1. 对于输出层而言,可以计算
  2. 进行反向计算
  3. 再进一步计算

3.5 随机初始化(Random initialization) 

如何初始化参数?

初始化为零向量

千里之行始于足下,如果用梯度下降法找最好的参数的时候也需要一个起始点,那如果把初始值全部设为0可以么?来看一下。

在逻辑回归的算法中,理论上是可以将参数都设置为0的,但在神经网络中将参数设置为0的话,将起不到任何作用。相当于

在神经网络中,如果初始化所有的参数(也就是权重)相同那么所有输入都相同,神经网络就失去了它的作用了。所以我们需要随机初始化。

随机初始化

为了训练神经网络,我们需要对权重进行随机初始化。

前面,所有权值都初始化为0(或者说初始化为相同的值)是不合适的,这就是所谓的对称权重问题。

因此,需要对权重进行随机初始化,将每个参数都初始化为某一个闭区间内的随机数。

4 总结

利用神经网络训练数据,最重要的首先是确定神经网络的结构。

4.1确定神经网络的结构

神经网络的结构呢,无非就是输入层、输出层外加隐藏层,那隐藏层有几层?每一层有多少个神经元?输入层、输出层分别又有多少个单元?

那这些多少,到底该是多少呢?在进行神经网络训练之前必须回答这些问题。

首先,输入层的单元数是由你的自变量的维度决定的;

其次,输出层的单元数又是由要分类的问题最终分成多少个类来决定的。

因此,神经网络结构的选择问题,实质上就是要确定隐藏层的层数以及各隐藏层的单元数目

以3个输入单元、4个输出单元的神经网络为例,常见的隐藏层的设置如下图所示。

按分类的效果来说呢,隐藏层的单元数是越多越好的,但是过多的神经元会让训练相当的缓慢,因此需要平衡一下,一般将隐藏层的单元数设置为输入层单元数的2~4倍为宜。而隐藏层的层数呢就以1、2、3层比较常见

4.2 神经网络训练的一般步骤

Step1:随机初始化权重;

Step2:实现前向传播算法,获得各个输入的激活函数

Step3:编码计算代价函数)

Step4:实现反向传播计算激活函数的偏导数)

看一下伪代码:

for i=1:m

用训练集xi,yi执行前向传播和反向传播计算

获得每一层的激活值a(l)和误差δ(l)  for l=2,…,L

代码中的m是训练样本的个数。

Step5:使用梯度检验验证反向传播计算偏导数的代码是否正确,如果正确就关闭掉梯度检验部分的代码。

Step6:结合一些更优秀的算法算出能使代价函数最小的那些参数

猜你喜欢

转载自blog.csdn.net/luyouqi11/article/details/132098590