【机器学习】浅谈梯度下降(Gradient Descent)

梯度下降.png


引入梯度


梯度的概念:梯度就是函数对它的各个自变量求偏导后,由偏导数组成的一个向量
作用:梯度下降法(Gradient Descent,GD)常用于求解无约束情况下凸函数(Convex Function)的极小值,是一种迭代类型的算法,因为凸函数只有一个极值点,故求解出来的极小值点就是函数的最小值点。对凸函数进行优化的方法,梯度下降采用无限逼近的方式逼近参数

待处理问题:

KaTeX parse error: {align} can be used only in display mode.

根据实际问题目标函数转化求解如下目标函数

J(θ)=12∑i=1m(hθ(x(i))−y(i))2J\left(\theta\right)=\frac{1}{2}\sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}J(θ)=21i=1m(hθ(x(i))y(i))2

  • 我们把要最小化或最大化的函数称为目标函数或准则。 当我们对其进行最小化时,我们也把它称为代价函数、损失函数或误差函数

下面我们来求目标函数的最小值对应的θ\thetaθ

从一元到多元


一元函数


引入梯度下降

现在用导数值的 「正负来表示方向」,如果导数的值是正数,那么就代表x轴的正方向。如果导数的值是负数,那么就代表是 x轴的负方向。那么你会发现,知道了这个方向之后也就知道了应该让 x往哪个方向变化 f(x) 的值才会增大。如果想要让 f(x) 的值减小,那么就让x朝着导数告诉我们的方向的反方向变化就好啦。接下来我用**「黄色」箭头代表导数告诉我们的方向,用「黑色」**箭头代表导数指向的方向的反方向

梯度下降法:目标是搜索出来一个能够让函数的值尽可能小的位置,所以应该让x朝着黑色箭头的方向走

学习率

在代码中有一个eta变量,它的专业名词叫 「学习率」。使用数学表达式来表示更新x的过程那就是:

x←x−eta∗df(x)dxx \xleftarrow[]{} x - eta*\frac{df(x)}{dx}x xetadxdf(x)

表达式的意思就是让x减去eta乘以函数的导数。其中的eta是为了控制x更新的幅度,将eta设置的小一点,那么每一次更新的幅度就会小一点

继续更新迭代

其中红色箭头指向的点是初始时候的点,「黄色」 箭头指向的点是第 1 次更新后的位置,「蓝色」 箭头指向的点是第 2 次更新后的位置

  • 只要不停地重复刚才的这个过程,那么最终就会收敛到一个 「局部」 的极值点。**那么可以想一下这是为什么?**因为随着每一次的更新,曲线都会越来越平缓,相应的导数值也会越来越小,当我们接近极值点的时候导数的值会无限地靠近 「0」。由于导数的绝对值越来越小,那么随后更新的幅度也会越来越小,最终就会停留在极值点的位置了。

二元函数


在这里纵坐标我使用 「y」 表示,底面的两个坐标分别使用 「x1」「x2」 来表示

梯度是一个由各个自变量的偏导数所组成的一个**「向量」**

(∂y∂x1,∂y∂x2)(\frac{\partial y}{\partial x1},\frac{\partial y}{\partial x2})(x1y,x2y)

x1←x1−eta∗∂y∂x1x2←x2−eta∗∂y∂x2\begin{gathered} x1\leftarrow x1-eta*{\frac{\partial y}{\partial x1}} \\ x2 \leftarrow x2-eta*\frac{\partial y}{\partial x2} \end{gathered}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值