当前位置:   article > 正文

【深度学习】(一)梯度下降算、随机梯度下降原理公式+小练习_随机梯度下降公司

随机梯度下降公司

目录

梯度下降算法的引入:

1、以Linear Model为例 y=x*w

2、升级算法:梯度下降算法引入

1)公式:

2)练习:

3、随机梯度下降(深度学习常用这个)

1、区别:

2、练习(与上题相同)


梯度下降算法的引入:

1、以Linear Model为例 y=x*w

模型开始w是一个随机猜测,w=random value,

搜索的过程:就是要找一个w最适合数据集的w

目的:使得Σ(y^-y)²最小。

最直接的方法:将认为权重可能取值的区间w_list=[]表示出来,循环,每层循环求取一个loss(损失) loss最小的w最佳,例如

  1. w_list=[]
  2. mse_list=[]
  3. for w in np.arange(0.0,4.1,0.1):
  4. print('w=',w)
  5. loss_sum=0
  6. ......

当权重增多时,并不可取

2、升级算法:梯度下降算法引入

1)公式:

        gradient=

        

通过 不断搜索w, 直到找到全局最小值(loss最小)所对应的w,但在此过程中有可能1)将局部最优解误成全局最优解。

2)当导数为0时,w不更新,陷入鞍点,无法迭代。(马鞍,每个轴有一个切面,一个切面w对应loss取最小值,但别的切面可能取最大值)

2)练习:

已知x、y求w和loss 此题称作cost,其中cost=(y_pred-y)**2

  1. x=[1.0,2.0,3.0]
  2. y=[2.0,4.0,6.0]
  3. w=1.0
  4. def forword(x):
  5. return x*w
  6. def cost(x,y):
  7. cost=0
  8. for i,j in zip(x,y):
  9. y_perd=forword(x)
  10. cost+=(y_perd-y)**2
  11. return cost/len(x)
  12. # 取cost平均值
  13. def gradient(x,y,w):
  14. grad=0
  15. for i,j in zip(x,y):
  16. grad+=2*i*(i*w-j)
  17. return grad/len(x)
  18. # grad也要取平均值
  19. print('predict before training',4,forword(4))
  20. for epoch in range(100):
  21. cost_val=cost(x,y)
  22. grad_val=gradient(x,y,w)
  23. w-=0.01*grad_val
  24. # 更新梯度
  25. print('epoch:',epoch,'w=',w,'loss=',cost_val)
  26. print('predict after training', 4, forword(4))

loss曲线是一直下降的,如果不是那么训练失败(先下降在上升也是失败的)

训练失败的原因:学习率太大

3、随机梯度下降(深度学习常用这个)

1、区别:

cost=(y_pred-y)**2=(x*w-y)**2  其中**2表示平方

 

2、练习(与上题相同)

已知x、y求w和loss 此题称作cost,其中cost=(y_pred-y)**2

  1. x=[1.0,2.0,3.0]
  2. y=[2.0,4.0,6.0]
  3. w=1.0
  4. # print('type(x)=',type(x))
  5. # # type(w)
  6. def forword(x):
  7. return x*w
  8. def loss(x,y):
  9. y_pred=forword(x)
  10. return (y_pred-y)**2
  11. def gradient(x,y,w):
  12. return 2*x*(x*w-y)
  13. print('predict before training',4,forword(4))
  14. for epoch in range(100):
  15. for xx,yy in zip(x,y):
  16. l=loss(x,y)
  17. grad=gradient(x,y)
  18. w=w-0.01*grad
  19. print('epoch:',epoch,'w=',w,'loss=',l)
  20. print('predict after training', 4, forword(4))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/664335
推荐阅读
相关标签
  

闽ICP备14008679号