目录

 

一、求数值解的方法-梯度下降法

二、实现梯度下降法

三、一元线性回归Numpy实现

四、可训练变量

 五、自动求导机制-GradientTape


一、求数值解的方法-梯度下降法

 

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20


找到极值点的速度:步长的大小决定,但是也不是越大越好

步长太小,迭代次数多,收敛慢

步长太大,引起震荡,可能无法收敛

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

所以这个步长的取值是否可以自动调节呢?

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

如上图所示,斜率与步长是呈正比例的关系的。

而斜率是可以通过某点的求导获得,然后进行迭代。

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20


但是疑问来了,为什么迭代公式仅仅使用减号,而没有加号呢?其实我们分析发现:

在 x>0 的时候,函数的导数值是是大于零的,也就是曲线是上升趋势,因此减去导数值是朝着极值(较小的值)方向;(不用再计算两个值比较大小了)

在 x<0 的时候,是相反的道理。

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

二、实现梯度下降法

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

1、梯度下降法求解一元线性回归问题:

一元线性回归,转换成二元平方损失函数求极值的问题;二元函数使用偏导,求得各个变量的值,使得Loss损失函数最小;从而确定了函数参数。

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

2.当然,我们还有均方差损失函数:

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

注意,我们还有一个参数:学习率 Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20 ;我们知道只要学习率够小,可以保证一定收敛。但过小则运算缓慢,过大则出现震荡。通常学习率 Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20 属于超参数,即学习之前已经设置,不是通过训练得到的。

三、一元线性回归Numpy实现

学习网站:https://www.bilibili.com/video/BV1D541167N9?p=62

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

四、可训练变量

tf.Variable()

trainalbe属性

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

 五、自动求导机制-GradientTape

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

如果想重复使用tape,加上True,运行完后使用del释放:

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

 多元函数求偏导数:

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

可以嵌套使用,进行二阶求导:

Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

 

 

 

 

相关文章:

  • 2021-05-25
  • 2022-12-23
  • 2022-01-01
  • 2021-04-23
  • 2022-02-27
  • 2022-01-04
  • 2022-01-30
猜你喜欢
  • 2021-07-17
  • 2021-04-05
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
  • 2022-12-23
  • 2021-09-10
相关资源
相似解决方案