最近在学习深度学习,但是遇到反向传播,梯度等概念的时候发现自己对机器学习学过的东西掌握的不是那么系统和透彻,所以决定回顾一下机器学习学过的东西
线性回归
定义激活函数h(x)
定义cost函数J
通过梯度下降的方法来,降低cost,寻找cost函数的收敛点(最低点)对应的参数,
梯度下降的过程:J函数对theta求导数, 根据learning rate,改变theta的值,使得 J朝着最低点方向走
优化梯度下降的方法
随机梯度下降
特征放缩(Feature scale),例如将特征放缩到[0,1]
learning rate的大小有时也会影响梯度下降的效果
当特征数过多时(>10000),不适合用线性回归
共轭梯度
BFGS
L-BFGS
逻辑回归
二分类问题
应用:垃圾邮件分类,智能鉴黄等
激活函数选择 sigmoid函数,因为使用线性的函数,无法收敛到最低点
决策边界
分类问题经常遇到边界问题
有线性边界,非线性边界,可以设计不同的h(x) 或者h(P(theta,x)),P(theta,x) 为多项式函数
进而使用逻辑回归拟合更复杂的非线性数据集,如下图,h(x)= sigmoid( tehta0 + theta1 *x1 + theta2 * x2^2)

逻辑回归的J(tehta)

一个凸逻辑回归cost函数,凸函数可以避免局部最小值带来的影响
最终形式

多分类问题
可以转化为二分类问题,划分为多个二分类问题即可
过拟合问题
引入Reguliazation
神经网络
隐藏层,激励(隐藏层中的神经元)
可以实现多分类问题
解决线性不可分问题,OR,AND,XOR等的实现
向前传播
根据theta,计算出最后的cost(loss)
反向传播
神经网络多层的原因,理解起来比较复杂
本质是要计算参数的梯度
利用链式法则求导可以计算出来
本质(个人认为这篇文章有可取之处,但是也有一部分问题)
gradient checking

检查反向传播梯度的正确性,检查一次即可.