美文网首页
1 参悟深度学习-梯度下降法

1 参悟深度学习-梯度下降法

作者: InnoTech | 来源:发表于2020-05-26 20:33 被阅读0次

数学知识

导函数

本质上梯度下降法是在解决极值的问题

而在数学上求极值,需要知道导函数 就很容易求的 比如

函数 y = x^2 + 4x + 4 的最大/小值是在其导函数等于0时的x的值 即 2*x + 4 = 0 是 x=-2 存在最大/小值 y=0

image.jpeg

导函数的公式

f(x) = 4                          f(x)’= 0 

f(x) = 2x                        f(x)’= 2 

f(x) = x^2                      f(x)’= 2x 

f(x) = x^3                      f(x)’= 3x^2 

f(x) = 4x^2 + 2x + 5     f(x)’= 8x + 2 

链式法则

这个是一个非常重要法则

求函数  f(x) = 4(x + 2)^2的导函数 

设 z(x) = x + 2 则 f(x) = f(z(x)) = 4z^2 则 

f(x)’= f(z(x))’* z’= 8*z * (1) = 8*(x + 2) = 8x + 16 

使用链式法则 能使求导变得很简单

偏导数

如果一个函数有两个未知数x, y那么就有个两个导函数,分别关于x,y的 求法其实很简单 把另一个当作没看见就好 例如

f(x, y) = 4x^2 + 5 x y + 6y^2 

x的偏导数 = 8x + 5y 

y的偏导数 = 12y + 5x 

矩阵及其乘法

假设

nx = ax + by + t1 

ny = cx + dy + t2 

那么可以用矩阵表示为

image.jpeg
假设矩阵[a, b, c, d]为K,[x, y]为X,[t1, t2]为B, [nx, ny]为Y那么上面的等式为 

KX+B=Y 

一个m行z列的矩阵A 乘以一个 z行n列的矩阵B得到的矩阵为m行n列 即:

m x z @ z x n = m x n  

意味着 两个矩阵相乘 必须是前面的列数等于后面的行数

意味着 矩阵乘法不满足交换律

示例如下 前一个的行乘以后一个的列作为某个元素

image.jpeg

梯度下降法

如果求函数y = x^2 + 4x + 4 的极值

那么当2x+4=0时,x处就是函数的极值

当然还有一种方式。就是我们把x从-10,10的整数依次代入上面的函数中 然后得到当x=-2时 y的值最小为0,而梯度下降法与这种方式类似 下图是使用梯度下降法求极值

image.jpeg

起先x设置为0,循环一百次,每次上次的基础上减去 0.1乘以其导数 输出如下

image.jpeg

x起始值可以是任意的,同样的0.1 可以是任意小于1的正小数,最终输出趋于-2

一般地 0.1称之为学习率

为什么循环,直接求方程2x+4=0啊 只能说年少轻狂。。。

为什么要减去其导数,参看牛顿法求极值‘

总而言之,它很重要,奠定了机器学习的基础,也能解决实际中的不少问题

应用示例

直线逼近

理想中两个点确定了一条直线,但现实是给了一堆点来确定一条直线

设这条直线是 kx + b = y 使得 (y - (kx + b))^2 的值最小

已知 x1, x2, x3, y1, y2, y3 求k和b 函数是((kx + b) - y)^2 

k的偏导数是 2((kx + b) - y) * x 

b的偏导数是 2((kx + b) - y) 

示例代码如下:

image.jpeg image.jpeg

循环100次之后发现 基本上求出k和b了 也可以把k,b的误差打印出来

image.jpeg

输出如下:

image.jpeg

2D矩阵逼近

在2d平面中的(x,y)变换成一个新的点(u, v) 则

(u = ax + by + t1, v = cx + dy + t2)  

由参数a,b, c,d,t1, t2组成了2d的变换矩阵

求一个变换矩阵 使得满足(x1, y1), (x2, y2), (x3, y3) … 变换后的点为(u1, v1), (u2, v2), (u3, v3) ….

设 u = ax + by + t1, v = cx + by + t2求参数 a, b, c, d, t1, t2使得((ax + by + t1) - u)^2 和 ((cx + dy + t2) - v) ^2 在极值处 

a’ = 2((ax + by + t1) - u) * x 

b’ = 2((ax + by + t1) - u) * y 

c’ = 2((cx + dy + t2) - v) * x 

d’ = 2((cx + dy + t2) - v) * y 

t1’ = 2((ax + by + t1) - u)  

t2’ = 2((cx + dy + t2) - v) 

示例代码如下:

image.jpeg

这里使用矩阵W来表示参数(a, b, c, d), 矩阵T来表示参数(t1, t2) 使用矩阵的乘法和加法大大的节省了代码量

image.jpeg

3D矩阵逼近

了解了2D的矩阵,那么3D的矩阵也同理

u = ax + by + cz + t1 

v = ex + fy + gz + t2 

w = hx + iy + jz + t3 

只是参数变成了12个 其中W包含9个 加上 T的3个 那么代码如下

image.jpeg

输出如下:

image.jpeg

总结

在上面示例中 更新参数时 减去当前参数的偏导数,偏导数也称之为是该参数的梯度

这种函数 (kx+b - y)^2 称之为损失函数

更新参数的时候 是减去 学习率 x 梯度,而不是加上 学习率 x 梯度,为什么?如果是加上 那么损失函数应该是(y - (kx + b))^2, 但是在牛顿法中用的是减号,在上面的求抛物线y=x^2 + 4x + 4中使用加号的话 求不出来极值。。。

首页:https://www.jianshu.com/p/92810c3a2d0e

相关文章

  • 参悟深度学习-首页

    把学习过程记录一下,多年以后...方不方便别人不知道但是却方便了自己..... 1 参悟深度学习-梯度下降法htt...

  • 1 参悟深度学习-梯度下降法

    数学知识 导函数 本质上梯度下降法是在解决极值的问题 而在数学上求极值,需要知道导函数 就很容易求的 比如 函数 ...

  • 快速理解梯度下降法

    1. 梯度下降法的抽象理解 梯度下降法(Gradient descent)是深度学习中的最基础的工具之一,它是一种...

  • 局部搜索之梯度下降法

    在各种最优化算法中,梯度下降法是最常见的一种,在深度学习的训练中被广为使用。 梯度下降法的场景假设梯度下降法的基本...

  • Pytorch_第七篇_深度学习 (DeepLearning)

    深度学习 (DeepLearning) 基础 [3]---梯度下降法 Introduce 在上一篇“深度学习 (D...

  • 2020-08-19--梯度下降法01

    梯度下降法简介 多元线性回归中的梯度下降法 随机梯度下降法 梯度下降法 的调试 1.梯度下降法简介 不是一个机器学...

  • 机器学习学习笔记(六)梯度下降法

    基础 (1)梯度下降法本身不是一个机器学习算法 (2)梯度下降法是一种基于搜索的最优化方法 (3)梯度下降法的作用...

  • 梯度下降法和牛顿法求最优解

    问题描述 思路 梯度下降法深度截图20170423135233.png 牛顿法深度截图20170423135205...

  • 4.梯度下降法&&随机梯度下降法

    梯度下降法&&随机梯度下降法 梯度下降法需要计算全量的训练样本的损失函数的均值,然后更新一次权重,学习速度比较慢。...

  • 线性回归-梯度下降法

    梯度下降法求解最小二乘 1、批量梯度下降法 (1)构造损失函数 (2)求梯度对J(theta)关于theta求偏导...

网友评论

      本文标题:1 参悟深度学习-梯度下降法

      本文链接:https://www.haomeiwen.com/subject/szxbahtx.html