当前位置: 首页 > news >正文

神经网络基础-神经网络补充概念-47-动量梯度下降法

概念

动量梯度下降法(Momentum Gradient Descent)是一种优化算法,用于加速梯度下降的收敛速度,特别是在存在高曲率、平原或局部最小值的情况下。动量法引入了一个称为“动量”(momentum)的概念,它模拟了物体在运动中积累的速度,使得参数更新更具有惯性,从而更平稳地更新参数并跳过一些不必要的波动。

基本原理和步骤

1初始化参数:初始化模型的参数。

2初始化速度:初始化速度为零向量。

3计算梯度:计算当前位置的梯度。

4更新速度:根据当前梯度和先前速度,计算新的速度。

velocity = beta * velocity + (1 - beta) * gradient

其中,beta 是动量的超参数,通常取值在0到1之间。

5更新参数:根据新的速度,更新模型的参数。

6重复迭代:重复执行步骤 3 到 5,直到达到预定的迭代次数(epochs)或收敛条件。

动量梯度下降法可以帮助算法跳过较为平坦的区域,加速收敛,并减少参数在局部最小值附近的震荡。这在深度学习中特别有用,因为神经网络的参数空间通常很复杂。

代码实现

import numpy as np
import matplotlib.pyplot as plt# 生成随机数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)# 添加偏置项
X_b = np.c_[np.ones((100, 1)), X]# 初始化参数
theta = np.random.randn(2, 1)# 学习率
learning_rate = 0.01# 动量参数
beta = 0.9
velocity = np.zeros_like(theta)# 迭代次数
n_iterations = 1000# 动量梯度下降
for iteration in range(n_iterations):gradients = 2 / 100 * X_b.T.dot(X_b.dot(theta) - y)velocity = beta * velocity + (1 - beta) * gradientstheta = theta - learning_rate * velocity# 绘制数据和拟合直线
plt.scatter(X, y)
plt.plot(X, X_b.dot(theta), color='red')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Linear Regression with Momentum Gradient Descent')
plt.show()print("Intercept (theta0):", theta[0][0])
print("Slope (theta1):", theta[1][0])
http://www.lryc.cn/news/131163.html

相关文章:

  • C++11并发与多线程笔记(13) 补充知识、线程池浅谈、数量谈、总结
  • python高级基础
  • 使用线性回归模型优化权重:探索数据拟合的基础
  • 亿级短视频,如何架构?
  • jenkins pipeline方式一键部署github项目
  • Vue 项目搭建
  • 【NetCore】09-中间件
  • 机器学习深度学习——BERT(来自transformer的双向编码器表示)
  • Datawhale Django后端开发入门 Vscode TASK02 Admin管理员、外键的使用
  • 【ES5和ES6】数组遍历的各种方法集合
  • 学科在线教育元宇宙VR虚拟仿真平台落实更高质量的交互学习
  • [python爬虫] 爬取图片无法打开或已损坏的简单探讨
  • vue项目预览pdf功能(解决动态文字无法显示的问题)
  • vue3 样式穿透:deep不生效
  • 云原生反模式
  • 【2023年11月第四版教材】《第5章-信息系统工程(合集篇)》
  • 【qiankun】微前端在项目中的具体使用
  • 云安全与多云环境管理:讨论在云计算和多云环境下如何保护数据、应用程序和基础设施的安全
  • npm install ffi各种失败,换命令npm i ffi-napi成功
  • 0.flink学习资料
  • C语言:字符函数和字符串函数
  • 基于.Net Core开发的医疗信息LIS系统源码
  • 部署工业物联网可以选择哪些通信方案?
  • flutter-移动端适配
  • MySQL 常用函数
  • 动态路由的实现—正则表达式
  • Android实现超出固定行数折叠文字“查看全文“、“收起全文“
  • Python上楼梯问题:递归解法探究(斐波那契变种)(记忆化递归)
  • AI重新定义音视频生产力“新范式”
  • Jmeter生成可视化的HTML测试报告