机器学习:神经网络

神经网络学习

非线性假设

非线性假设采用神经网络的原因:逻辑回归问题不是解决包含大量特征的数据分类问题好办法。所以我们引入了神经网络。

如果数据包含上百个特征时呢?例如包含上百个特征的房屋分类问题,或者图像识别领域。例如:(x1, x2, x3, … x100),则即便只包含二次项,二次项的个数也会非常的多。这将导致非常多的高阶多项式,多项式规模急剧膨胀。所以逻辑回归问题不是解决包含大量特征的数据分类问题好办法。所以我们引入了神经网络。

模型展示

机器学习:神经网络_第1张图片

机器学习:神经网络_第2张图片

神经网络所做的事情实际上就是逻辑回归,只不过不是以 x1、……、xn 为特征,而是用 a1、……、an 作为新的特征。a1、……、an 是学习得到的函数输入值,这样就可以学习到一些很有趣和复杂的特征,就可以得到一个更好的假设函数。

示例

机器学习:神经网络_第3张图片

机器学习:神经网络_第4张图片

机器学习:神经网络_第5张图片

多元分类

机器学习:神经网络_第6张图片

代价函数

和逻辑回归相似。

机器学习:神经网络_第7张图片

反向传播算法

  • 正向传播

机器学习:神经网络_第8张图片

  • 反向传播

机器学习:神经网络_第9张图片

理解反向传播

机器学习:神经网络_第10张图片

梯度检测

为何进行梯度检验?

神经网络算法使用反向传播计算目标函数关于每个参数的梯度,可以看做解析梯度。由于计算过程中涉及到的参数很多,反向传播计算的梯度很容易出现误差,导致最后迭代得到效果很差的参数值。

为了确认代码中反向传播计算的梯度是否正确,可以采用梯度检验(gradient check)的方法。通过计算数值梯度,得到梯度的近似值,然后和反向传播得到的梯度进行比较,若两者相差很小的话则证明反向传播的代码是正确无误的。

机器学习:神经网络_第11张图片

一旦通过检验确定反向传播的实现是正确的,就应该关掉梯度检测,否则程序运行的速度就会非常慢。

随机初始化

机器学习:神经网络_第12张图片

如果没有随机初始化,θ 都初始化为 0,那么每个节点到下一层节点的权重都是相同的。

机器学习:神经网络_第13张图片

训练神经网络

机器学习:神经网络_第14张图片

对于神经网络,代价函数 J(θ) 不是一个凸函数,因此理论上可能停留在局部最小值的位置。

你可能感兴趣的:(机器学习,考试攻略,机器学习)