系列文章:
吴恩达《Machine Learning》精炼笔记 1:监督学习与非监督学习
吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程
吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化
吴恩达《Machine Learning》精炼笔记 4:神经网络基础
今天带来第五周课程的笔记:神经网络。本文是在上节神经网络的基础上,做了进一步的阐述,内容包含:
- 神经网络代价函数
- 反向传播法及解释
- 梯度检验
- 神经网络的小结
神经网络代价函数
参数解释
对几个参数的标记方法进行说明解释:
分类讨论
主要是两类:二分类和多类分类
代价函数
逻辑斯蒂回归(LR)中的代价函数:
在逻辑斯蒂回归中,只有一个输出变量称之为标量scalar。
但是在神经网络中会有多个输出变量,hθ(x)是一个K维的向量。
假设第i个输出函数:
代价函数J表示为:
解释说明:
反向传播法Backpropagation Algorithm
- 首先计算最后一层的误差
- 再一层层地反向求出各层的误差,直到倒数第二层
前向传播例子
假设有一个数据样本:
前向传播法就是通过一层层地按照神经网络的顺序从输入层到输出层计算下去。
反向传播例子
1. 从最后一层的误差开始计算:
2. 用δ表示误差,误差=模型预测值-真实值
3. 前一层的误差
4. 再前一层的误差
第一层是输入变量,不存在误差
5. 假设λ=0,如果不做正则化处理时
对上面的式子中各个上下标的含义进行解释:
- l代表的是第几层
- j代表的是计算层中的激活单元的下标
- i代表的是误差单元的下标
算法
- 利用正向传播方法计算每层的激活单元
- 利用训练集的真实结果与神经网络的预测结果求出最后一层的误差
- 最后利用该误差运用反向传播法计算出直至第二层的所有误差。
- 便可以计算代价函数的偏导数
反向传播的直观理解
前向传播原理
- 2个输入单元;2个隐藏层(不包含偏置单元);1个输出单元
- 上标ii表示的是第几层,下标表示的是第几个特征或者说属性
图中有个小问题,看截图的右下角!!!
根据上面的反向传播法得到的结论:
反向传播原理
参数展开
上面的式子中实现了怎么利用反向传播法计算代价函数的导数,在这里介绍怎么将参数从矩阵形式展开成向量形式
梯度检验
如何求解在某点的导数
在代价函数中怎么对某个参数θ求导
神经网络小结
首要工作
在构建神经网络的时候,首先考虑的是如何选择网络结构:多少层和每层多少个神经单元
- 第一层的单元数即我们训练集的特征数量。
- 最后一层的单元数是我们训练集的结果的类的数量。
- 如果隐藏层数大于1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。
训练神经网络步骤
- 参数的随机初始化
- 利用正向传播方法计算所有的hθ(x)
- 编写计算代价函数 JJ的代码
- 利用反向传播方法计算所有偏导数
- 利用数值检验方法检验这些偏导数
- 使用优化算法来最小化代价函数
至此,第五周的课程笔记完毕!