机器学习-吴恩达笔记整理:
反向传播的梯度检测:
一些知识点
1.反向传播
是计算代价函数关于所有参数的导数或者偏导数的方法
2.梯度检测
检测的方法:
伪代码:
目的:
验证反向传播中计算出的导数是否等于或者是在数值上非常接近用反向传播计算出的导数,如果两种方法计算出的导数是一样的后者很接近,说明反向传播计算是正确的
注意:
检验完之后记得关闭 不然在训练时很慢,梯度检验是帮助验证反向传播是否正确
随机初始化:
初始化目的:在训练前要对theta进行初始化,初始化后就可以通过梯度下降来最小化函数
例如:
1、 全0初始化:在逻辑回归的时候可以,但是在训练网络的时候没有用,输入=输出,因为输入-隐藏单元的权重相等,所有隐藏单元的学习相同
2、 随机初始化:为了解决对称权重问题(1带来的问题)
综上:
训练一个神经网络,首先先将权重随机初始化为一个接近0的范围在[-e,e]之间的数,然后进行反向传播,在进行梯度检验,最后使用梯度下降或者其他优化函数来最小化代价函数J(θ)
神经网络流程
1.选择一种网络架构:
对于输入神经元数量=特征x(i)的维度
对于输出神经元个数:
如果是多分类问题:输出=所要区分的类别个数,记得要把输出y写成向量的形式
隐藏层层数和隐藏层单元个数的选择:隐藏层单元个数相同
2.随机初始化权重
3.正向传播算一下h(x)
4.计算代价函数
5.用反向传播计算代价函数的导数或者偏导数
6.使用反向传播的梯度检测
7.用优化算法共轭梯度,梯度下降法和反向传播相结合去计算θ