机器学习第4天:模型优化方法—梯度下降

简介: 机器学习第4天:模型优化方法—梯度下降

前言

若没有机器学习基础,建议先阅读同一系列以下文章

机器学习第1天:概念与体系漫游

机器学习第2天:训练数据的获取与处理

机器学习第3天:线性回归

梯度下降原理简述

介绍

在一个多元函数中,某点的梯度方向代表函数增加最快的方向,梯度下降的原理就是,找到损失函数下降最快的方向(与梯度方向相反),然后往这个方向走,最后达到损失函数的最小值,如下图,从高的红色点到达了低的蓝色点,梯度下降就是这样一个过程

我们可以得到一个参数更新公式,把参数设为a, 梯度设为grad,那么

为什么要有个n呢,因为梯度方向只能表示当前位置函数增加最快的方向,对于复杂的函数,当我们改变位置的时候,这个梯度可能一直在变化,所以n代表我们每走一步的距离,我们慢慢的走下去,然后每走一步再找一次方向,这样就能走到最小的位置了

可能的问题

由于算法是往最低的地方走,当走到函数局部最小值的时候,周围都比较高,那么就可能困在这里了,无法达到全局最小值别急,当然,当损失函数是一个凸函数的时候,是没有局部最小值的,只有全局最小值,例如MSE就是一个凸函数


批量梯度下降

批量梯度下降指的是用整个向量经过矩阵运算来计算梯度,容易知道,这样算法会很慢,当训练集很大时,可能要花费很多时间

我们将每个训练集实例比作一个高山上的一个点,批量梯度下降就是算出这些点的整体趋势,然后向下运动,我们将在下面看到一种不同的想法


随机梯度下降

基本算法

与批量梯度下降不同的是,随机梯度下降每次随机选择一个实例来计算梯度,这样大大减小了运行时间,并且,随机梯度下降可以摆脱局部最小值的问题,因为随机挑选,那么即使有一部分在局部最小值中,还有一部分的方向选择可以将困住的部分解救出。


存在的问题

训练集向量中的每一个实例对应于山上的某个点,随机梯度下降就是以某个点来抉择整体的下降趋势,可以预料到,下降的过程将不会那么顺利,但趋势是对的,可以看涨图来理解随机梯度下降与批量梯度下降的区别


退火算法

当随机梯度下降算法的参数越接近最小值的时候,因为随机性,可能永远到达不了最小值,会在这周围运动

这里我们可以减小步长n,让每次变化的幅度小一点,这样我们就能更加靠近全局最小值了,这就被称作退火算法

代码演示(随机梯度下降与退火算法)

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import SGDRegressor
np.random.seed(42)
x = np.random.rand(100, 1)
y = 2 * x + np.random.rand(100, 1)
model = SGDRegressor(max_iter=1000, tol=1e-3, penalty=None, eta0=0.1)
model.fit(x, y)
pre_y = model.predict(x)
plt.scatter(x, y)
plt.plot(x, pre_y, "r-")
plt.show()

max_iter为下降批次,tol为损失函数阈值,penalty为不使用正则化(可自行搜索),eta0为最初的步长(之后会慢慢减小),整体意思就是当模型训练1000次或损失函数比0.001小时停止训练

可以看到拟合效果也很好


小批量梯度下降

有了上面两种梯度下降的定义,小批量梯度下降应该也好理解了,它兼容二者的优点与缺点

训练快,容易到最小值,但是可能难以辨别局部最小值

当你使用GPU的时候,定义处理批次与GPU相同可以充分利用硬件资源,提高效率

感谢阅读,觉得有用的话就订阅下本专栏吧

相关文章
|
9天前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
41 1
|
11天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的线性回归模型
本文深入探讨了机器学习中广泛使用的线性回归模型,从其基本概念和数学原理出发,逐步引导读者理解模型的构建、训练及评估过程。通过实例分析与代码演示,本文旨在为初学者提供一个清晰的学习路径,帮助他们在实践中更好地应用线性回归模型解决实际问题。
|
20天前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?
|
16天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
53 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
21天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
47 1
|
15天前
|
机器学习/深度学习 自然语言处理 语音技术
探索机器学习中的深度学习模型:原理与应用
探索机器学习中的深度学习模型:原理与应用
29 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
2月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
2月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
63 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
2月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能