内容来自Andrew老师课程Machine Learning的第五章内容的Cost Function and Backpropagation部分。
一、Cost Function(代价函数)
1、先来看一下两个术语:L和的含义
(1)L是指神经网络的层数
(2)是指第l层的单元数目(不包含偏执神经元)
图的下半部分比较了二元分类和多元分类中与K值的大小的关系。
2、下面是神经网络的代价函数,
神经网络的代价函数看起来比较复杂,含有嵌套的加法,但是它和logistic回归中代价函数的主要区别便是将输出的每一个元素都加起来了。
注意:在加法过程中,公式的下标是从1开始的,即不包含下标为0的值。
二、Backpropagation Algorithm(BP算法)
本部分内容主要是找出使得代价函数最小化的算法,主要是反向传播算法。
下面是神经网络的代价函数。其中红色框出的部分是正则项。
k:输出单元个数即classes个数,L:神经网络总层数,:第L层的单元数(不包括偏置单元),:表示第L层边上的权重即参数。
我们的目标是找出Θ,使得J(Θ)的值最小。
最先想到的方法便是求偏导(其中∈R。),J(Θ)可以由公式直接给出,关键就是如何计算其偏导。
下面给出前向传播的基本过程。
关于反向传播,就是前向传到过程反过来。
给出右图(总共有4层)所示的例子,之所以叫做反向传播,是因为先从输出层开始计算,从后往前推,类似于把输出结果的误差反向传播给了第3层,又将第3层的误差反向传给了第2层。
纠正:delta叫做残差
接下来看BP算法的原理:
1、利用forward propagation计算出每一层的“激活值”,l=1,2,3,...,L。
2、计算出最后一层即输出层每个输出单元的残差。
3、计算出第L-1,L-2,L-3,...,2层节点的残差。
4、计算出我们需要的偏导数。
三、Backpropagation Intuition(BP算法的直观过程)
本部分主要通过2个图形来更直观地理解前向传播和反向传播的计算过程。
1、首先来看一个前向传播的计算过程,都是利用左侧的数据算出右侧的数据:
2、定义delta残差和平方误差函数的关系(忽略了正则项的影响,例子也是只有1个输出值的特例)
3、下面是反向传播的计算过程,总是利用右侧的数据计算出左侧的数据: