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

网易云播放器做网站播放中国十大外贸平台

网易云播放器做网站播放,中国十大外贸平台,广州直销网站建设,wordpress抓取股票行情优化理论 梯度下降(Gradient Descent) 数学原理与可视化 梯度下降是优化领域的基石算法,其核心思想是沿负梯度方向迭代更新参数。数学表达式为: θ t 1 θ t − α ∇ θ J ( θ t ) \theta_{t1} \theta_t - \alpha \nabla…

优化理论

梯度下降(Gradient Descent)

数学原理与可视化

梯度下降是优化领域的基石算法,其核心思想是沿负梯度方向迭代更新参数。数学表达式为:
θ t + 1 = θ t − α ∇ θ J ( θ t ) \theta_{t+1} = \theta_t - \alpha \nabla_\theta J(\theta_t) θt+1=θtαθJ(θt)
其中:

  • α \alpha α:学习率,控制步长
  • ∇ θ J \nabla_\theta J θJ:损失函数关于参数的梯度

几何解释:在三维空间中,梯度下降如同沿着最陡下降方向下山。二维可视化展示参数更新路径:

import matplotlib.pyplot as plt
import numpy as np# 定义二次函数及其梯度
def f(x): return x**2
def grad(x): return 2*x# 梯度下降轨迹可视化
x_path = []
x = 2.0
lr = 0.1
for _ in range(20):x_path.append(x)x -= lr * grad(x)# 绘制函数曲线和更新路径
xs = np.linspace(-2, 2, 100)
plt.figure(figsize=(10,6))
plt.plot(xs, f(xs), label="f(x) = x²")
plt.scatter(x_path, [f(x) for x in x_path], c='red', s=50, zorder=3)
plt.plot(x_path, [f(x) for x in x_path], 'r--', label="gradient descent path")
plt.title("梯度下降在二次函数上的优化轨迹", fontsize=14)
plt.xlabel("x", fontsize=12)
plt.ylabel("f(x)", fontsize=12)
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

在这里插入图片描述

学习率对比实验

lrs = [0.01, 0.1, 0.5]  # 不同学习率plt.figure(figsize=(12,6))
for lr in lrs:x = 2.0path = []for _ in range(20):path.append(x)x -= lr * grad(x)plt.plot(path, label=f"lr={lr}")plt.title("不同学习率对收敛速度的影响", fontsize=14)
plt.xlabel("Number of iterations", fontsize=12)
plt.ylabel("Parameter value", fontsize=12)
plt.axhline(0, color='black', linestyle='--')
plt.legend()
plt.grid(True, alpha=0.3)

在这里插入图片描述


随机梯度下降(Stochastic Gradient Descent, SGD)

算法原理

与传统梯度下降的对比:

方法梯度计算内存需求收敛性适用场景
批量梯度下降全数据集稳定小数据集
SGD单样本震荡在线学习
小批量SGD批量样本平衡最常见

数学表达式:
θ t + 1 = θ t − α ∇ θ J ( θ t ; x ( i ) , y ( i ) ) \theta_{t+1} = \theta_t - \alpha \nabla_\theta J(\theta_t; x^{(i)}, y^{(i)}) θt+1=θtαθJ(θt;x(i),y(i))

实际应用示例(MNIST分类)

import torchvision
from torch.utils.data import DataLoader# 数据准备
transform = torchvision.transforms.Compose([torchvision.transforms.ToTensor(),torchvision.transforms.Normalize((0.1307,), (0.3081,))
])
train_set = torchvision.datasets.MNIST('./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_set, batch_size=64, shuffle=True)# 模型定义
model = torch.nn.Sequential(torch.nn.Flatten(),torch.nn.Linear(784, 10)
)# 优化器配置
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)# 训练循环
losses = []
for epoch in range(5):for batch_idx, (data, target) in enumerate(train_loader):optimizer.zero_grad()output = model(data)loss = torch.nn.functional.cross_entropy(output, target)loss.backward()optimizer.step()# 记录损失losses.append(loss.item())# 绘制损失曲线
plt.figure(figsize=(12,6))
plt.plot(losses, alpha=0.6)
plt.title("SGD在MNIST分类任务中的损失曲线", fontsize=14)
plt.xlabel("Number of iterations", fontsize=12)
plt.ylabel("Cross-entropy loss", fontsize=12)
plt.grid(True, alpha=0.3)

在这里插入图片描述


动量法(Momentum)

物理类比与数学表达

动量法引入速度变量 v v v,模拟物体运动惯性:

更新规则:
v t + 1 = β v t − α ∇ θ J ( θ t ) θ t + 1 = θ t + v t + 1 \begin{aligned} v_{t+1} &= \beta v_t - \alpha \nabla_\theta J(\theta_t) \\ \theta_{t+1} &= \theta_t + v_{t+1} \end{aligned} vt+1θt+1=βvtαθJ(θt)=θt+vt+1

其中 β ∈ [ 0 , 1 ) \beta \in [0,1) β[0,1)为动量系数,典型值为0.9

对比实验

def optimize_with_momentum(lr=0.01, beta=0.9):x = torch.tensor([2.0], requires_grad=True)velocity = 0path = []for _ in range(20):path.append(x.item())loss = x**2loss.backward()with torch.no_grad():velocity = beta * velocity - lr * x.gradx += velocityx.grad.zero_()return path# 运行对比实验
paths = {'普通SGD': optimize_with_momentum(beta=0),'动量法(beta=0.9)': optimize_with_momentum()
}# 可视化对比
plt.figure(figsize=(12,6))
for label, path in paths.items():plt.plot(path, marker='o', linestyle='--', label=label)plt.title("动量法与普通SGD收敛对比", fontsize=14)
plt.xlabel("Number of iterations", fontsize=12)
plt.ylabel("Parameter value", fontsize=12)
plt.axhline(0, color='black', linestyle='--')
plt.legend()
plt.grid(True, alpha=0.3)

在这里插入图片描述


算法选择指南

算法优点缺点适用场景
梯度下降稳定收敛计算成本高小规模数据集
SGD内存需求低收敛路径震荡在线学习、大规模数据
动量法加速收敛、抑制震荡需调参动量系数高维非凸优化

实践建议

  1. 学习率设置:从3e-4开始尝试,按数量级调整
  2. 批量大小:通常选择2的幂次(32, 64, 128)
  3. 动量系数:默认0.9,对RNN可尝试0.99
  4. 学习率衰减:配合StepLR或CosineAnnealing使用效果更佳
# 最佳实践示例:带学习率衰减的动量SGD
optimizer = torch.optim.SGD(model.parameters(),lr=0.1,momentum=0.9,weight_decay=1e-4  # L2正则化
)
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1)
http://www.dtcms.com/wzjs/154345.html

相关文章:

  • 建设门户网站请示宁波seo快速优化
  • wordpress简单的验证码北京seo排名服务
  • 网站怎么做房源网络营销推广方案ppt
  • 怎么做车载mp3下载网站必应搜索引擎国际版
  • 果洛电子商务网站建设多少钱windows优化大师
  • 建网站到底需要多少钱深圳将进一步优化防控措施
  • 平面设计论坛重庆高端网站seo
  • 做网站复制国家机关印章社群营销平台有哪些
  • 沈阳模板建站代理百度怎样发布信息
  • 网站关键字让别人做超链接了怎么办沈阳疫情最新消息
  • 做商铺的网站有那些手机百度如何发布广告
  • 做音乐头像网站艺术培训学校招生方案
  • 网站如何增加百度权重的方法网络推广项目
  • 珠海做网站设计有哪些自助优化排名工具
  • 郑州酒店网站建设湖南网站建设推荐
  • 黄金网站软件app下载安装网站优化公司认准乐云seo
  • 日本有个做二十四节气照片的网站廊坊百度关键词优化怎么做
  • 一站式做网站公司经典软文推广案例
  • 建卡盟网站建设 网站定制开发关键词搜索热度
  • 大连网站开发公司电话东莞网络公司网络推广
  • 大城b2c网站建设价格深圳网络推广外包公司
  • 飞言情做最好的言情网站找一个免费域名的网站
  • 单位服务器网站打不开网站模板商城
  • 什么网站可以做国外生意网站推广与优化平台
  • 网站开发总跳转至404页面宁波seo推广优化
  • 做网站百度一下百度排名优化
  • 怀化网站建设有哪些114网址大全
  • 哪里有网站开发企业友情链接检查工具
  • 有pc网站全网推广
  • 冒用公司名义做网站推广网站免费