吴恩达机器学习-第九章个人笔记

9、1代价函数

二元分类和多元分类:
吴恩达机器学习-第九章个人笔记
二元分类就是前面的logistic regression .
代价函数:
吴恩达机器学习-第九章个人笔记
这里的代价函数和logistic函数代价函数主要区别是:
输出单元有1个变为k个,需要正则化的系数变多了。

9、2反向传播算法

前向传播:
吴恩达机器学习-第九章个人笔记
这里我们是假设只有一个训练集(x,y)

反向传播算法:
吴恩达机器学习-第九章个人笔记
这里我们从最后一层的误差开始计算,逐个计算前两层的误差。这里的误差值会被用于计算偏导数。

反向传播算法过程:
吴恩达机器学习-第九章个人笔记

9、3理解反向传播算法

前向传播:
吴恩达机器学习-第九章个人笔记
反向传播:
吴恩达机器学习-第九章个人笔记
反向传播和正向传播计算所使用的权值(每条线段代表一个权值)是一样的,不同的是反向传播不需要使用最上面的一个权值。

9、4处理参数

如何把 θ \theta θ参数从矩阵形式变成向量形式:
吴恩达机器学习-第九章个人笔记
例子:
吴恩达机器学习-第九章个人笔记
这里的ThetaVec把三个矩阵变成了一个231*1的向量;
reshape就是从向量中取出一定数量的数构成新的矩阵。

算法表示:
吴恩达机器学习-第九章个人笔记

9、5梯度检测

用前向/反向算法计算偏导数,由于反向算法比较复杂,经常出现一种现象:代价函数确实在每一次迭代后变得更小了,但最后算出来的结果并不是我们想要的,这是由于反向传播算法中的小bug 导致的。因此我们必须要进行梯度检测:
吴恩达机器学习-第九章个人笔记
我们用双侧差分而不是单侧差分来近似估计导数。
对于多个参数:
吴恩达机器学习-第九章个人笔记
算法表示:
吴恩达机器学习-第九章个人笔记
反向传播计算出的偏导数DVec和这里的GradApprox是否相等。

吴恩达机器学习-第九章个人笔记
先应用反向传播算法来计算Dvec,再应用梯度检测来计算gradApprox,来确定他们俩是否相等,然后结束梯度检测算法(这个算法的运算量十分大),使用反向传播算法。

9、6随机初始化

初始化为0:
吴恩达机器学习-第九章个人笔记
会使得同一神经元发出的 θ \theta θ值一样,引起对称权重问题。

随机初始化:
吴恩达机器学习-第九章个人笔记
随机初始化就是把这些权值初始化为:在0附近属于[- ϵ \epsilon ϵ, ϵ \epsilon ϵ]的值。

9、7神经网络整个过程

  1. 选择训练模型结构
    吴恩达机器学习-第九章个人笔记
    确定输入层:特征项数
    确定输出层:分类的种类
    确定隐藏层:隐藏层一般默为1;如果>1的话,一般默认隐藏层的神经元个数相等(其中隐藏层神经元个数为特征项数的1倍、2倍、3倍,太大就会失去意义)。
    注意;当分类种类只是在1-10之间时,输出层一定是个向量表示,而不是一个实数。

  2. 训练神经网络
    吴恩达机器学习-第九章个人笔记
    吴恩达机器学习-第九章个人笔记