机器学习入门:梯度下降算法(上)

简介: 机器学习入门:梯度下降算法(上)

学习目标

🍀 掌握梯度下降算法的原理

🍀 掌握梯度下降法优化损失函数的原理

🍔 梯度下降(Gradient Descent)

1.1 什么是梯度下降🍭

梯度下降法的基本思想可以类比为一个下山的过程。

假设这样一个场景:

一个人 被困在山上,需要从山上下来 (i.e. 找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低。

因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的路径。这个时候,他就可以利用梯度下降算法来帮助自己下山。

具体来说就是,以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,(同理,如果我们的目标是上山,也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走)。然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。

梯度下降的基本过程就和下山的场景很类似。

首先,我们有一个 可微分的函数 。这个函数就代表着一座山。

我们的目标就是找到 这个函数的最小值 ,也就是山底。

根据之前的场景假设,最快的下山的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是 找到给定点的梯度 ,然后朝着梯度相反的方向,就能让函数值下降的最快!因为梯度的方向就是函数值变化最快的方向。 所以,我们重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。而求取梯度就确定了最陡峭的方向,也就是场景中测量方向的手段。

1.2 梯度的概念🍭

梯度是微积分中一个很重要的概念

  • 在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率;
  • 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向;

在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。

这也就说明了为什么我们需要千方百计的求取梯度!我们需要到达山底,就需要在每一步观测到此时最陡峭的地方,梯度就恰巧告诉了我们这个方向。梯度的方向是函数在给定点上升最快的方向,那么梯度的反方向就是函数在给定点下降最快的方向,这正是我们所需要的。所以我们只要沿着梯度的反方向一直走,就能走到局部的最低点!

1.3 梯度下降举例🍭

单变量函数的梯度下降

我们假设有一个单变量的函数 :J(\theta) = \theta^2

函数的微分:J^\prime(\theta) = 2\theta

初始化起点为:\theta^0 = 1

学习率:\alpha = 0.4

我们开始进行梯度下降的迭代计算过程:

如图,经过四次的运算,也就是走了四步,基本就抵达了函数的最低点,也就是山底

多变量函数的梯度下降

我们假设有一个目标函数 :J(\theta) = \theta{1}^{2} + \theta{2}^{2}

现在要通过梯度下降法计算这个函数的最小值。我们通过观察就能发现最小值其实就是 (0,0)点。但是接下 来,我们会从梯度下降算法开始一步步计算到这个最小值! 我们假设初始的起点为: \theta^{0} = (1, 3)

初始的学习率为:\alpha = 0.1

函数的梯度为:\Delta J(\theta) =< 2\theta{1} ,2\theta{2}>

进行多次迭代:

我们发现,已经基本靠近函数的最小值点

1.4 梯度下降(Gradient Descent)公式🍭

  • 1) alpha是什么含义?

alpha在梯度下降算法中被称作为 学习率 或者 步长 ,意味着我们可以通过α来控制每一步走的距离,控制参数不要走太快,错过了使损失函数取最小值的点。同时也要保证不要走的太慢,导致太阳下山了,还没有走到山下。所以α的选择在梯度下降法中往往是很重要的!α不能太大也不能太小,太小的话,可能导致迟迟走不到最低点,太大的话,会导致错过最低点!

  • 2) 为什么梯度要乘以一个负号

梯度前加一个负号,就意味着朝着梯度相反的方向前进!我们在前文提到,梯度的方向实际就是函数在此点上升最快的方向!而我们需要朝着下降最快的方向走,自然就是负的梯度的方向,所以此处需要加上负号

我们通过两个图更好理解梯度下降的过程

所以有了梯度下降这样一个优化算法,回归就有了"自动学习"的能力

  • 优化动态图演示

🍔 梯度下降优化原理

2.1梯度下降的相关概念复习🍭

在详细了解梯度下降的算法之前,我们先复习相关的一些概念。

步长(Learning rate):

  • 步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。 用前面下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。

特征(feature):

  • 指的是样本中输入部分,比如2个单特征的样本(x^{(0)},y^{(0)}),(x^{(1)},y^{(1)}),则第一个样本特征为x^{(0)},第一个样本输出为y^{(0)}。

假设函数(hypothesis function):

  • 在监督学习中,为了拟合输入样本,而使用的假设函数,记为h_\theta (x)。 比如对于单个特征的m个样本(x^{(i)},y^{(i)})(i=1,2,...m),可以采用拟合函数如下: h_\theta (x)=\theta _0+\theta _1x。

损失函数(loss function):

  • 为了评估模型拟合的好坏, 通常用损失函数来度量拟合的程度。 损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。
  • 在线性回归中,损失函数通常为样本输出和假设函数的差取平方。比如对于m个样本(x_i,y_i)(i=1,2,...m),采用线性回归,损失函数为:

其中x_i表示第i个样本特征,y_i表示第i个样本对应的输出,h_\theta (x_i)为假设函数。

2.2 梯度下降法的推导流程🍭

1) 先决条件: 确认优化模型的假设函数和损失函数。

比如对于线性回归,假设函数表示为 h_\theta (x_1,x_2,...,x_n)=\theta _0+\theta _1x_1+...+\theta _nx_n, 其中\theta _i (i = 0,1,2... n)为模型参数,x_i (i = 0,1,2... n)为每个样本的n个特征值。这个表示可以简化,我们增加一个特征x_0=1 ,这样

同样是线性回归,对应于上面的假设函数,损失函数为:

2) 算法相关参数初始化,

主要是初始化\theta _0,\theta _1...,\theta _n,算法终止距离ε以及步长/alpha 。在没有任何先验知识的时候,可以将所有的\theta 初始化为0, 将步长初始化为1。在调优的时候再 优化。

3) 算法过程:

3.1) 确定当前位置的损失函数的梯度,对于\theta _i,其梯度表达式如下:

3.2) 用步长乘以损失函数的梯度,得到当前位置下降的距离,即

对应于前面登山例子中的某一步。

3.3) 确定是否所有的\theta _i,梯度下降的距离都小于ε,如果小于ε则算法终止,当前所有的\theta _i(i=0,1,...n)即为最终结果。否则进入步骤4.

4)更新所有的\theta ,对于\theta _i,其更新表达式如下。更新完毕后继续转入步骤1。


下面用线性回归的例子来具体描述梯度下降。假设我们的样本是:

损失函数如前面先决条件所述:

则在算法过程步骤1中对于\theta _i 的偏导数计算如下:

由于样本中没有x_0上式中令所有的x_0^j为1.

步骤4中\theta _i的更新表达式如下:

从这个例子可以看出当前点的梯度方向是由所有的样本决定的,加\frac{1}{m} 是为了好理解。由于步长也为常数,他们的乘积也为常数,所以这里\alpha\frac{1}{m} 可以用一个常数表示。

在下一节中,会介绍梯度下降法的变种,他们主要的区别是 对样本的采用方法不同。这里我们采用的是用所有样本

🍔 小结

  1. 梯度下降法(gradient descent)是一个最优化算法,常用于机器学习和深度学习中用来递归性地逼近最小偏差模型
  2. 梯度下降法的计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值)
  3. 线性回归的回归系数可以通过梯度下降算法找到损失函数的极小值得到
  4. 梯度下降中,学习率(Learning rate)是一个很重要的参数,它决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度

目录
打赏
0
1
1
0
15
分享
相关文章
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
83 6
基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
本项目展示了人脸识别算法的运行效果(无水印),基于MATLAB2022A开发。核心程序包含详细中文注释及操作视频。理论部分介绍了广义回归神经网络(GRNN)、概率神经网络(PNN)、深度神经网络(DNN)和反向传播(BP)神经网络在人脸识别中的应用,涵盖各算法的结构特点与性能比较。
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
CCS 2024:如何严格衡量机器学习算法的隐私泄露? ETH有了新发现
在2024年CCS会议上,苏黎世联邦理工学院的研究人员提出,当前对机器学习隐私保护措施的评估可能存在严重误导。研究通过LiRA攻击评估了五种经验性隐私保护措施(HAMP、RelaxLoss、SELENA、DFKD和SSL),发现现有方法忽视最脆弱数据点、使用较弱攻击且未与实际差分隐私基线比较。结果表明这些措施在更强攻击下表现不佳,而强大的差分隐私基线则提供了更好的隐私-效用权衡。
105 14
解锁机器学习的新维度:元学习的算法与应用探秘
元学习作为一个重要的研究领域,正逐渐在多个应用领域展现其潜力。通过理解和应用元学习的基本算法,研究者可以更好地解决在样本不足或任务快速变化的情况下的学习问题。随着研究的深入,元学习有望在人工智能的未来发展中发挥更大的作用。
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
320 6
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
662 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
5月前
|
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
160 2
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
119 1

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等