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

8 神经网络的学习

8.1 神经网络的代价函数

神经网络的训练样本有m个,每个包含一组输入x和一组输出信号y,L表示神经网络层数,机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习表示每层的neuron个数(机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习表示输出层神经元个数),机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习代表最后一层中处理单元的个数。

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

二类分类:机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习=0,y=0 or 1表示哪一类;

K类分类:机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习=k,机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习=1表示分到第i类;(k>2)

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

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

但是在神经网络中,可以有很多输出变量,机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习是一个维度为K的向量,并且训练集中的因变量也是同样维度的一个向量,因此神经网络的代价函数比逻辑回归更加复杂,具体表达式如下:

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

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

8.2 反向传播算法

为了计算代价函数的偏导数机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习,采用一种反向传播算法。首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。以一个例子加以说明:

假设只有一个实例(机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习),神经网络是一个四层的神经网络,其中K=4,机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习=4,L=4。前向传播算法如下:

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

从最后一层误差开始计算,误差是**单元的预测(机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习)与实际值(机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习)之间的误差(k = 1:k),用机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习来表示误差,则:

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

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

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

其中,机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习是权重导致的误差的和,机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习同理可得。第一层不存在误差,假设机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习,即不做任何正则化处理时,代价函数的偏导数表示为:

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

   代表目前所计算的是第几层。机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习代表目前计算层中的**单元的下标,也将是下一层的第机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习个输入变量的下标。机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习代表下一层中误差单元的下标,是受到权重矩阵中第机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习行影响的下一层中的误差单元的下标。为整个训练集计算误差单元,此时的误差单元也是一个矩阵,用机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习来表示这个误差矩阵。第层的第机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习个**单元受到第机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习个参数影响而导致的误差。算法表示为:

     for i=l:m{

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

        perform forward propagation to compute 机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习 for 机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习

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

perform back propagation to compute all previous layer error vector

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

}

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

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

使用神经网络的步骤:

  1. 参数的随机初始化

  2. 利用正向传播方法计算所有的机器学习笔记(参考吴恩达机器学习视频笔记)08_神经网络的学习

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

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

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

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