c#怎么拟合函数得到参数_下陡坡算法(梯度下降法)-求取使代价函数得到最小值的参数...

上一篇文章了解了代价函数,现在问题来了,如何让代价最小呢?解决了代价最小问题,就获得了模型的参数,机器学习的目的就是根据经验数据求取模型参数,如果代价函数是连续可导的,那我们就可以采用下陡坡算法-梯度下降的方法找到最小值,从而求解。

首先来看看梯度下降的一个直观的解释。比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的陡坡方向-梯度,沿着陡坡方向-梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置陡坡方向-梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。

    从上面的解释可以看出,下陡坡算法不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,下陡坡算法得到的解就一定是全局最优解。

745dd1c213342cfe2c846d4ceb8a27d5.png

怎么找呢?就是猜,按照规律猜:

1.f'(x)>0,函数单调增加,增大x函数值也会变大,我们想找最小值肯定比在当前这个点 小。那么我们让x 小一点。

2.f'(x)<0,函数单调递减,增大x函数值也会变小,我们想找最小值肯定比在当前这个点大。那么我们让x 大一点。

3.重复上面的猜测,进行到底,直到f'(x)的值接近0,就找到了我们需要的x值

对于多元函数,把倒数换做偏导数就可以了。

梯度下降就是要找到取最小值得参数点,记住不是最小值,因为损失函数的最小值恒为0(全拟合)

机器学习算法就是要找到合适的代价函数,能反映模型预测准确与否,而代价函数则要求倒数好求,便于计算,训练

下陡坡算法-梯度下降法的代数方式描述

    1. 先决条件: 确认优化模型的假设函数和损失函数。

    2. 算法相关参数初始化:主要是初始化θ0,θ1...,θnθ0,θ1...,θn,算法终止两步距离差ε以及步长α。在没有任何先验知识的时候,我喜欢将所有的θθ初始化为0, 将步长初始化为1。在调优的时候再 优化。

    3. 算法过程:

      1)确定当前位置的损失函数的陡坡方向梯度

e1215636790e2d659f96e7d32e4072f3.png

      2)用步长乘以损失函数的陡坡方向-梯度,得到当前位置下降的距离

fedba1213b9b56d9d66820cc385c991b.png

      3)确定是否所在的陡坡方向-梯度下降的距离都小于ε,如果小于ε则算法终止,当前所有的θi(i=0,1,...n)即为最终结果。否则进入步骤4.

      4)更新所有的θ,对于θi,其更新表达式如下。更新完毕后继续转入步骤1.

3cf7cc9b240c23390b1a9b9a5d631ab2.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值