梯度下降算法

梯度下降算法就是以迭代的思想,求解出损失函数的最小值,继而求出模型的参数,他是DeepLearning最核心的算法,下面通过对损失函数是线性函数来求解最小值,继而衍生出非线性函数的求解方法。

线性回归

假设loss=y=x²*sin(x),我们需要求出loss函数的最小值,常规解决方法为求函数y的导出y',y'=0的时候y有可能取到最小值,再判断是否是极小值。

梯度下降算法也很类似,只需要迭代x*=x-Δx即可,x*为目标值,x为当前值,Δx为求导过后的值,迭代很多次过后,梯度Δx趋近于0 那么x*=x-limΔx就不变,在我们的最小值附近来回波动,当迭代次数够了,我们就可以直接输出当前x*。(这一步看不懂的可以看后面的例子再回来理解)

以上我们其实省略了一个learningrate,如x*=x-Δx*lr,这个lr是自己设定,他的大小影响的是每一次迭代的变化量。

假设y=w*x+b,我们还有一系列x以及对应的y值,我们需要求w和b,常规解法只需要找到两组x,y待入求值即可。、

但是现实生活中,是具有噪声的,y=w*x+b+ε,ε∈N(0,1),我们需要通过n组数据找出一对w,b值,尽可能的适用于这n组数据。

因此我们命loss=(w*x+b-y)²,w,b未知,这个函数表示理论值w*x+b与实际值y的差的平方,希望loss的值最小,这就回归到上一个例子了。

总结一下怎么对线性函数进行梯度下降算法:

1.loss=∑i(w*xi+b-yi)²

2.Minimize loss

3.w'*x+b'->y

问题分类

Linear Regression 线性-->y属于正无穷到负无穷

Logistic Regression  逻辑-->y∈(0,1)

Classification 分类 比如识别是猫还是狗

案例

给出100组[x,y]数据,求出在这100组数据上最适合的[w,b]

导入数据,初始化lr,b,w,以及迭代次数

求loss=∑i(w*xi+b-yi)²,即将所有[x,y]带入(w*xi+b-yi)²,求和再求平均值,平均值即代表当前loss,返回loss

求出当前Δw,Δb,为所有ΔwΔb的和的均值,而后根据x*=x-Δx,求出目标w*,b*,并返回

最后迭代

大家可以根据这个例子来熟悉原理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值