Machine Learning第五讲[神经网络: 学习] --(一)代价函数和BP算法

来源:互联网 发布:linux mv 覆盖目录 编辑:程序博客网 时间:2024/06/05 19:52

内容来自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:神经网络总层数,:第层的单元数(不包括偏置单元),:表示第层边上的权重即参数。

我们的目标是找出Θ,使得J(Θ)的值最小。
最先想到的方法便是求偏导(其中∈R。),J(Θ)可以由公式直接给出,关键就是如何计算其偏导。

下面给出前向传播的基本过程。



关于反向传播,就是前向传到过程反过来。
给出右图(总共有4层)所示的例子,之所以叫做反向传播,是因为先从输出层开始计算,从后往前推,类似于把输出结果的误差反向传播给了第3层,又将第3层的误差反向传给了第2层。


纠正:delta叫做残差


接下来看BP算法的原理:
1、利用forward propagation计算出每一层的“激活值”
2、计算出最后一层即输出层每个输出单元的残差
3、计算出第层节点的残差
4、计算出我们需要的偏导数。


三、Backpropagation Intuition(BP算法的直观过程)

本部分主要通过2个图形来更直观地理解前向传播和反向传播的计算过程。

1、首先来看一个前向传播的计算过程,都是利用左侧的数据算出右侧的数据:


2、定义delta残差和平方误差函数的关系(忽略了正则项的影响,例子也是只有1个输出值的特例)


3、下面是反向传播的计算过程,总是利用右侧的数据计算出左侧的数据:

0 0
原创粉丝点击