机器学习(二):梯度下降

机器学习(二):梯度下降

在讲线性回归的时候我们最后推导出了参数的表达式: θ = [ X T X ] − 1 X T Y \theta = [X^TX]^{-1}X^TY θ=[XTX]1XTY
然而并不是每一次都能求得矩阵的逆的,
所以我得回到目标函数去用一个更加普通(平民)的方法求解参数。
so 我们找到了梯度下降

梯度下降(Gradient Descent):

梯度:在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。从几何意义上讲,就是函数变化增加最快的地方。

在引入了梯度概念后,回过头来看看,我们要求一组 θ \theta θ 使得 J ( θ J(\theta J(θ) 最小,那么使用梯度的概念就可以很好的解决。

下降: 照常来说我们所求导数是梯度上升的,但我们要求的目标函数是最小值,所以我们就需要用到梯度下降,也就是需要找到一个函数减小的方向。


机器学习中,在求最小损失函数时,可以通过梯度下降一步一步迭代得到最小化的损失函数,以及参数。


梯度下降直观描述
   想象一下小c 在一座深山老林中,小c 想要下山但是不知道该怎么走,思考了一下小c 想到可以找找当前位置的最往山脚的方向走,走一步以后再找一个接着走,就这样一步一步慢慢走到了山底,(当然如果小c 运气不好会走到一个小盆地的最底而不是山脚).
在这边小c 是以什么策略来找下山的方向呢,那就是刚才所说的梯度下降。每次找一个方向走几步再重新找一个方向(更新),反复,虽然最后不一定找到最优解,但一定能找到局部最优解


接下来我们在简单了解一些概念:


步长(Learning rate):步长是在梯度下降中每一步沿下降方向走的长度。(就是上述例子中小c 每次走的步数)

特征(Feature):样本输入部分,简单理解为x。

拟合函数(Fitting Function):用于拟合样本(可见线性回归篇)。

损失函数(Loss Function):我们通过用损失函数来评估模型拟合程度。损失函数极小化,表示拟合效果好,可得到最优参数集。损失函数通常为样本输出和拟合函数的差取平方(例如:线性回归中的最小二乘)。

了解了这些后我们开始来看看公式吧:

假设目标函数(损失函数):(注意这边单独一个x 是单独的一个特征)


     J ( θ 0 , θ 1 , θ 2 , θ 3 . . . , θ n ) J(\theta_0,\theta_1,\theta_2,\theta_3...,\theta_n) J(θ0,θ1,θ2,θ3...,θn)


   = 1 2 m ∑ i = 1 m ( h θ ( x 0 ( i ) , x 1 ( i ) , x 2 ( i ) , x 3 ( i ) . . . , x n ( i ) ) − y ( i ) ) 2 \frac 1{2m} \sum_{i=1}^{m}(h_\theta(x_0^{(i)},x_1^{(i)},x_2^{(i)},x_3^{(i)}...,x_n^{(i)})-y^{(i)})^2 2m1i=1m(hθ(x0(i),x1(i),x2(i),x3(i)...,xn(i))y(i))2

(m 为样本数,再一次这边出现 1 2 \frac 12 21 只是为了方便计算)(寻求最低点,也就是目标函数的终点,求什么样的参数能使得目标函数达到极值点)

算法过程

   1) 确定当前位置梯度:


        ∂ ∂ θ i J ( θ 0 , θ 1 . . . . θ n ) \frac {\partial}{\partial_{\theta_i}} J(\theta_0,\theta_1....\theta_n) θiJ(θ0,θ1....θn)

   2) 沿梯度下降方向走步长( α \alpha α)长度:


        α ∂ ∂ θ i J ( θ 0 , θ 1 . . . . θ n ) \alpha \frac {\partial}{\partial_{\theta_i}} J(\theta_0,\theta_1....\theta_n) αθiJ(θ0,θ1....θn)

   3) 确认是否走到底端(确认所有 θ i \theta_i θi 是否小于 ϵ \epsilon ϵ (趋近于0),若是则表示所有 θ i \theta_i θi 都趋近于0 表示已走到底端,若不是就接着更新参数):


        α ∂ ∂ θ i J ( θ 0 , θ 1 . . . . θ n ) \alpha \frac {\partial}{\partial_{\theta_i}} J(\theta_0,\theta_1....\theta_n) αθiJ(θ0,θ1....θn)

   4)更新所有参数:


        θ i = θ i − α ∂ ∂ θ i J ( θ 0 , θ 1 . . . . θ n ) \theta_i = \theta_i -\alpha \frac {\partial}{\partial_{\theta_i}} J(\theta_0,\theta_1....\theta_n) θi=θiαθiJ(θ0,θ1....θn)


以上是**梯度下降的代数描述**我们还可以用**梯度下降矩阵方式**来描述,大致过程是一样的,就是把代数式改为矩阵形式来表达,各位看博客的大佬可以自行研究一下,来看看自学的成果(没错小c 只是因为太懒了不想写(哈哈哈哈))

算法调优

  1. 步长选择:我们可以选择不同的步长都给模型进行尝试,看看迭代效果,然后取相对比较好的。有一点需要注意一下就是:如果步长太大,会导致迭代过快,容易错过最优解。当然如果步长太短,虽然能获得比较好的解,但是需要消耗很长时间,消耗大量资源。所以对于步长的选择需要你结合本生算法,数据集,可用资源来选择。
  2. 参数初始值选择: 初始值不同会使得最终所获的最小值也不同,因此梯度下降所求的是局部最优解,当然如果损失函数是凸函数那就一定会获得最优解。那么由于有局部最优解的存在,我们需要多次使用不同的初始值来获得最优解。
  3. 归一化:由于样本不同特征的取值范围不一样,可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据归一化。

不同的梯度下降策略

1.批量梯度下降(Batch Gradient Descent):

批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新,以获得当前最优的参数(方向)。

对应的更新公式:


        θ i = θ i − α ∑ j = 1 m ( h θ ( x 0 ( j ) , x 1 ( j ) , . . . , x n ( j ) ) − y i ) x i ( j ) \theta_i = \theta_i -\alpha \sum_{j=1}^{m}(h_\theta(x_0^{(j)},x_1^{(j)},...,x_n^{(j)})-y_i)x_i^{(j)} θi=θiαj=1m(hθ(x0(j),x1(j),...,xn(j))yi)xi(j)


2.随机梯度下降(Stochastic Gradient Descent):

随机梯度下降,与批量梯度下降类似,区别在于批量梯度下降用到的是所有样本集 m ,而对于随机梯度下降来说用到的是一个单一的样本 j

对应的更新公式:


        θ i = θ i − α ( h θ ( x 0 ( j ) , x 1 ( j ) , . . . , x n ( j ) ) − y i ) x i ( j ) \theta_i = \theta_i -\alpha (h_\theta(x_0^{(j)},x_1^{(j)},...,x_n^{(j)})-y_i)x_i^{(j)} θi=θiα(hθ(x0(j),x1(j),...,xn(j))yi)xi(j)


3.小批量梯度下降(Min-batch Gradient Descent):

小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用x个样子来迭代,1<x<m。一般可以取x=10,当然根据样本的数据,可以调整这个x的值。

对应的更新公式:


        θ i = θ i − α ∑ j = t t + x − 1 ( h θ ( x 0 ( j ) , x 1 ( j ) , . . . , x n ( j ) ) − y i ) x i ( j ) \theta_i = \theta_i -\alpha \sum_{j=t}^{t+x-1}(h_\theta(x_0^{(j)},x_1^{(j)},...,x_n^{(j)})-y_i)x_i^{(j)} θi=θiαj=tt+x1(hθ(x0(j),x1(j),...,xn(j))yi)xi(j)


策略对比批量梯度下降随机梯度下降 对于梯度下降来说是两个极端,一个运用到了所有样本 m ,一个就只是运用到了单个样本 j 。


对于训练速度来说:随机梯度下降法由于每次仅仅采用一个样本来迭代,训练速度很快,而批量梯度下降法在样本量很大的时候,训练速度不能让人满意。


对于训练准确率来说:随机梯度下降法用于仅仅用一个样本决定梯度方向,导致解很有可能不是最优。


对于收敛速度来说:由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。


那么我们可以取一个折中的方式就是小批量梯度下降(一般在实际应用中会用这个策略)。


在机器学习中的无约束优化算法,除了梯度下降以外,还有前面提到的最小二乘法,此外还有牛顿法和拟牛顿法。(这东西小c 还没有接触到,所以请大佬们绕道度娘或者谷歌吧)。


由于篇幅的原因我就将逻辑回归放到下一篇再将啦(哈哈哈哈,欲知后事如何,请听下回分解,拜拜了您嘞)

(累死小c 了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值