机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习

版权声明:博客内容都是对一些知识的整理,可能有些部分存在借鉴,如果存在侵权,请联系我删掉。 https://blog.csdn.net/cunxinlitian/article/details/82746905

8 神经网络的学习

8.1 神经网络的代价函数

神经网络的训练样本有m个,每个包含一组输入x和一组输出信号y,L表示神经网络层数,表示每层的neuron个数(表示输出层神经元个数),代表最后一层中处理单元的个数。

将神经网络的分类定义为两种情况:二类分类和多类分类。

二类分类:=0,y=0 or 1表示哪一类;

K类分类:=k,=1表示分到第i类;(k>2)

在逻辑回归中,只有一个输出变量,又称标量( scalar),也只有一个因变量y。代价函数如下:

但是在神经网络中,可以有很多输出变量,是一个维度为K的向量,并且训练集中的因变量也是同样维度的一个向量,因此神经网络的代价函数比逻辑回归更加复杂,具体表达式如下:

    

对于每一行特征,都会有K个预测,利用循环,对每一行特征都预测K个不同结果,然后再利用循环在K个预测中选择可能性最高的一个,将其与y中的实际数据进行比较。正则化的那一项是排除了每一层后,每一层的矩阵的和。最里层的循环循环所有的行(由+1层的激活单元数决定);循环i则循环所有的列,由该层(层)的激活单元数决定。即:与真实值之间的距离为每个样本-每个类输出的加和,对参数进行正则化的bias项处理所有参数的平方和。

8.2 反向传播算法

为了计算代价函数的偏导数,采用一种反向传播算法。首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。以一个例子加以说明:

假设只有一个实例(),神经网络是一个四层的神经网络,其中K=4,=4,L=4。前向传播算法如下:

从最后一层误差开始计算,误差是激活单元的预测()与实际值()之间的误差(k = 1:k),用来表示误差,则:

其中,是权重导致的误差的和,同理可得。第一层不存在误差,假设,即不做任何正则化处理时,代价函数的偏导数表示为:

   代表目前所计算的是第几层。代表目前计算层中的激活单元的下标,也将是下一层的第个输入变量的下标。代表下一层中误差单元的下标,是受到权重矩阵中第行影响的下一层中的误差单元的下标。为整个训练集计算误差单元,此时的误差单元也是一个矩阵,用来表示这个误差矩阵。第层的第个激活单元受到第个参数影响而导致的误差。算法表示为:

     for i=l:m{

        set

        perform forward propagation to compute for

Using

perform back propagation to compute all previous layer error vector

}

首先用正向传播方法计算出每一层的激活单元,利用训练集的结果与神经网络预测的结果求出最后一层的误差,然后利用该误差运用反向传播法计算出直至第二层的所有误差。则代价函数的偏导数的计算方法如下:

使用神经网络的步骤:

  1. 参数的随机初始化

  2. 利用正向传播方法计算所有的

  3. 编写计算代价函数J的代码

  4. 利用反向传播方法计算所有的偏导数

  5. 利用数值检验方法检验这些偏导数

  6. 使用优化算法来最小化代价函数

猜你喜欢

转载自blog.csdn.net/cunxinlitian/article/details/82746905
今日推荐