机器学习:神经网络
神经网络学习
非线性假设
非线性假设采用神经网络的原因:逻辑回归问题不是解决包含大量特征的数据分类问题好办法。所以我们引入了神经网络。
如果数据包含上百个特征时呢?例如包含上百个特征的房屋分类问题,或者图像识别领域。例如:(x1, x2, x3, … x100),则即便只包含二次项,二次项的个数也会非常的多。这将导致非常多的高阶多项式,多项式规模急剧膨胀。所以逻辑回归问题不是解决包含大量特征的数据分类问题好办法。所以我们引入了神经网络。
模型展示
神经网络所做的事情实际上就是逻辑回归,只不过不是以 x1、……、xn 为特征,而是用 a1、……、an 作为新的特征。a1、……、an 是学习得到的函数输入值,这样就可以学习到一些很有趣和复杂的特征,就可以得到一个更好的假设函数。
示例
多元分类
代价函数
和逻辑回归相似。
反向传播算法
- 正向传播
- 反向传播
理解反向传播
梯度检测
为何进行梯度检验?
神经网络算法使用反向传播计算目标函数关于每个参数的梯度,可以看做解析梯度。由于计算过程中涉及到的参数很多,反向传播计算的梯度很容易出现误差,导致最后迭代得到效果很差的参数值。
为了确认代码中反向传播计算的梯度是否正确,可以采用梯度检验(gradient check)的方法。通过计算数值梯度,得到梯度的近似值,然后和反向传播得到的梯度进行比较,若两者相差很小的话则证明反向传播的代码是正确无误的。
一旦通过检验确定反向传播的实现是正确的,就应该关掉梯度检测,否则程序运行的速度就会非常慢。
随机初始化
如果没有随机初始化,θ 都初始化为 0,那么每个节点到下一层节点的权重都是相同的。
训练神经网络
对于神经网络,代价函数 J(θ) 不是一个凸函数,因此理论上可能停留在局部最小值的位置。