梯度下降

梯度下降

1.梯度

在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。函数f(x,y), 分别对x,y求偏导数,求得的梯度向量grad f(x,y)或者▽f(x,y)=∂f/∂xi+∂f/∂yj。对于在点(x0,y0)的具体梯度向量就是▽f(x,y)的几何意义是函增加最快的方向,沿着梯度方向,容易找到函数的最大值

2.梯度下降

根据梯度向量可知沿着梯度向量相反的方向,就是函数减小最快的方向.

3.损失函数loss/cost function

损失函数是一个自变量为算法的参数,函数值为误差值的函数.同一个损失函数的两个参数(η,ε)设置的不同,会产生不同的拟合曲线,最后的结果也不相同。(η影响迭代次数,η小一些,迭代次数多,花费时间长,但找到的点接近极小值点,η大的话,花费时间短,但找到的值误差大,ε可以控制迭代次数,当Δx<ε时,停止迭代)

3.梯度下降法-步骤(一元函数)

1.假设函数y=f(x) 只有一个极小点。初始给定参数为 X0。从这个点如何搜索才能找到原函数的极小值点?

方法

1.首先设定一个较小的正数η,ε.

2.求当前位置处的各个偏导数:▽f(x)=∂f/∂x*i

3.修改当前函数的参数值,公式如下:xi+1=xi-η∂f/∂x(xi),其中-η∂f/∂x(xi)绝对值为Δx

4.如果参数变化量Δx小于ε,退出;否则返回2。

实例(y=(x-2.5)²+3)

1.首先设定一个较小的正数η=0.9,ε=0.01,初始给定参数为 X0=-4

2.▽f(x)=∂f/∂x=2x-5,在 X0=-4时,-η∂f/∂x(x0)=11.7,Δx>ε

3.修改当前函数的参数值,x1=x0-η∂f/∂x(x0)=7.7,-η∂f/∂x(x1)=-9.36,Δx>ε

修改当前函数的参数值,x2=x1-η∂f/∂x(x1)=-1.66,-η∂f/∂x(x2)=7.488,Δx>ε

修改当前函数的参数值,x3=x2-η∂f/∂x(x2)=5.828,-η∂f/∂x(x3)=-5.9904,Δx>ε

修改当前函数的参数值,x4=x3-η∂f/∂x(x3)=-0.1624,-η∂f/∂x(x4)=4.79232,Δx>ε

修改当前函数的参数值,x5=x4-η∂f/∂x(x4)=4.62992,-η∂f/∂x(x5)=-3.833856,Δx>ε

修改当前函数的参数值,x6=x5-η∂f/∂x(x5)=0.796064,-η∂f/∂x(x6)=3.0670848,Δx>ε

修改当前函数的参数值,x7=x6-η∂f/∂x(x6)=3.8631488,-η∂f/∂x(x7)=-2.45366784,Δx>ε

修改当前函数的参数值,x8=x7-η∂f/∂x(x7)=1.40948096,-η∂f/∂x(x8)=1.962934272,Δx>ε

修改当前函数的参数值,x9=x8-η∂f/∂x(x8)=3.37241523,-η∂f/∂x(x9)=-1.570347414,Δx>ε

修改当前函数的参数值,x10=x9-η∂f/∂x(x9)=1.802067816,-η∂f/∂x(x10)=1.2562779312,Δx>ε

修改当前函数的参数值,x11=x10-η∂f/∂x(x10)=3.0583457472,-η∂f/∂x(x11)=-1.00502234496,Δx>ε

修改当前函数的参数值,x12=x11-η∂f/∂x(x11)=2.0533233974,-η∂f/∂x(x12)=0.80401788468,Δx>ε

修改当前函数的参数值,x13=x12-η∂f/∂x(x12)=2.85734128208,-η∂f/∂x(x13)=-0.64321430774,Δx>ε

修改当前函数的参数值,x14=x13-η∂f/∂x(x13)=2.2141269743,-η∂f/∂x(x14)=0.51457144626,Δx>ε

修改当前函数的参数值,x15=x14-η∂f/∂x(x14)=2.72884118926,-η∂f/∂x(x15)=-0.3295313125,Δx>ε

修改当前函数的参数值,x16=x15-η∂f/∂x(x15)=2.3169270486,-η∂f/∂x(x16)=0.0411914141,Δx>ε

修改当前函数的参数值,x17=x16-η∂f/∂x(x16)=2.6464583611,-η∂f/∂x(x17)=-0.26362504998,Δx>ε

修改当前函数的参数值,x18=x17-η∂f/∂x(x17)=2.3828333111,-η∂f/∂x(x18)=0.21090004002,Δx>ε

...........

修改当前函数的参数值,x32=x31-η∂f/∂x(x31)=2.49485016944,-η∂f/∂x(x18)=0.009269695,Δx<ε

4.退出

代码实现如下:(附图)


运行结果如下:

7.700000000004707

-1.6599999999606894

5.8279999999828505

-0.16239999996558652

4.629919999973978

0.7960640000415111

3.8631487999643035

1.4094809600324645

3.3724152319707414

1.8020678144297122

3.0583457484625356

2.0533234012218884

2.8573412790176036

2.2141269767810314

2.7286984185734866

2.317041265136325

2.6463669878884524

2.3829064096867505

2.5936748722497107

2.4250601021953457

2.5599519182364396

2.452038465406762

2.5383692276697047

2.469304617858551

2.524556305711471

2.4803549554275364

2.5157160356554833

2.4874271714723264

2.510058262817253

2.491953389744509

2.506437288197109

2.4948501694406247

initial x = -4

arg min f(x) of x = 2.4948501694406247

f(x) = 3.0000265207547905

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是梯度下降?在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最...
    烨枫_邱阅读 2,292评论 0 6
  • 学号:17020150034 姓名:于明轩 转自:https://www.cnblogs.com/pinar...
    轩_07ad阅读 272评论 0 0
  • http://www.cnblogs.com/pinard/p/5970503.html 在求解机器学习算法的模型...
    吃番茄的土拨鼠阅读 1,737评论 0 5
  • 1.梯度 在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数...
    kang_james阅读 1,206评论 1 2
  • 一、什么是梯度 在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。 ...
    owolf阅读 868评论 0 13

友情链接更多精彩内容