andrew ng machine learning week5 神经网络

cost function

L : 网络层数

Sl : 某一层的单元个数

二分类: 仅有一个输出单元,0/1

多分类:K维输出向量,其中为1的维度即为预测分类的类别

 神经网络为K个输出的求和,并且正则化项依旧不含bias项 

 

反向传播算法 

要使用梯度下降法使代价函数最小,我们要编写代价函数和偏导项的代码,接下来的问题探讨如何利用反向传播算法计算偏导项:

 给定一个训练样本,我们计算前向传播的激励值的方法是:

反向传播计算激励值对应的误差项的方法:

最终的反向传播计算偏导:

1. 初始化△

2. 进行m次循环,每次循环中,首先输入样本x,通过前向算法计算每层的激励值(一个向量),再使用反向传播算法倒着计算每层的δ误差(和α同维度的向量)

3. △是个矩阵(这一块有些不太理解)

4. 根据是否是bia term计算偏导数D

完全版:

反向传播的深入理解

实际的应用方法 unroll parameters 

 

thetaVector = [ Theta1(:); Theta2(:); Theta3(:); ]
deltaVector = [ D1(:); D2(:); D3(:) ]

If the dimensions of Theta1 is 10x11, Theta2 is 10x11 and Theta3 is 1x11, then we can get back our original matrices from the "unrolled" versions as follows:

Theta1 = reshape(thetaVector(1:110),10,11)
Theta2 = reshape(thetaVector(111:220),10,11)
Theta3 = reshape(thetaVector(221:231),1,11)

算法过程:

1. 初始化的三个参数,进行展开成为initialdata 

2. 在costfunction函数中reshape得到参数θ计算D,最后展开成为长向量gradientvec

gradientchecking 梯度检验


数值化的梯度计算方法:

多个θ:

octave代码:

epsilon = 1e-4;
for i = 1:n,
  thetaPlus = theta;
  thetaPlus(i) += epsilon;
  thetaMinus = theta;
  thetaMinus(i) -= epsilon;
  gradApprox(i) = (J(thetaPlus) - J(thetaMinus))/(2*epsilon)
end;

步骤:

1. 使用反向传播计算D梯度值

2. 使用数值化方法计算gradApprX近似值

3. 确保他们的值很相似

4. 在接下来的过程中一定要把数值化计算法关闭

random initialization 随机初始化

我们在使用先进优化算法fminunc时,需要设置初始化的θ,如果我们全部设置为0则会有什么样的弊端呢?

激励值和误差首先会相等,梯度的计算以及更新后的参数都是相同的:

 所以我们引入了随机初始化的方法,用以打破对称结构,把每个参数θ映射到[-epsilon , epsilon]之间(为什么?)

If the dimensions of Theta1 is 10x11, Theta2 is 10x11 and Theta3 is 1x11.

Theta1 = rand(10,11) * (2 * INIT_EPSILON) - INIT_EPSILON;
Theta2 = rand(10,11) * (2 * INIT_EPSILON) - INIT_EPSILON;
Theta3 = rand(1,11) * (2 * INIT_EPSILON) - INIT_EPSILON;

总结 神经网络的有机结合

第一步:选择一个合适的网络结构

输入层单元个数:特征变量的维度

输出层单元个数:多分类的类别数目,注意要写成one hot representation的形式而不能是个具体的数值

隐藏层的规则:

1. 一般仅有一个隐藏层,如图一

2. 多个隐藏层的情况下,隐藏层的单元个数每层均相同,并且隐藏层单元越多越好

 第二步:训练神经网络六步

1. 随机初始化theta权重

2. 实现前向传播算法,得到每个输入样本对应的h预测输出值

3. 写cost function的代码

4. 实现反向传播算法计算cost function关于每个参数的偏导数

for i = 1:m,
   Perform forward propagation and backpropagation using example (x(i),y(i))
   (Get activations a(l) and delta terms d(l) for l = 2,...,L

5. 使用梯度检验比较反向传播得到的偏导和数值估算出的cost function的梯度值

6. 使用梯度下降或者高级算法来最小化cost function得到最终的θ值,便可以进行其他的预测

 h越接近y值的点,cost越低

 神经网络的应用 自动驾驶

猜你喜欢

转载自www.cnblogs.com/twomeng/p/9855335.html