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

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

学习目标

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

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

🍔 梯度下降(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)是一个很重要的参数,它决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度

相关文章
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
2天前
|
机器学习/深度学习 人工智能 数据挖掘
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第6天】在人工智能领域,机器学习已成为核心技术。本文指导初学者使用Python与Scikit-learn入门机器学习,涵盖基本概念、环境搭建、数据处理、模型训练及评估等环节。Python因简洁性及其生态系统成为首选语言,而Scikit-learn则提供了丰富工具,简化数据挖掘与分析流程。通过实践示例,帮助读者快速掌握基础知识,为进一步深入研究奠定坚实基础。
8 4
|
6天前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
3天前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。
|
8天前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
2天前
|
机器学习/深度学习 数据采集 算法
深入了解机器学习:从入门到应用
【10月更文挑战第6天】深入了解机器学习:从入门到应用
|
6天前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
60 0
|
27天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
63 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
8天前
|
机器学习/深度学习 算法
机器学习入门(三):K近邻算法原理 | KNN算法原理
机器学习入门(三):K近邻算法原理 | KNN算法原理
|
8天前
|
机器学习/深度学习 算法 API
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题