Adadelta
创始人
2025-05-29 00:59:27

文章目录

  • Adadelta
    • Concept
    • Equation
    • Parameters
    • Instance

Adadelta

ADADELTA是一种基于梯度下降的自适应学习率优化算法,由Matthew Zeiler提出。与其他自适应学习率算法(例如Adam和Adagrad)相比,ADADELTA在训练深度神经网络时通常表现更好。

Concept

ADADELTA的核心思想是根据前一次更新时的梯度和参数来自适应地调整学习率。该算法利用了RMSProp的想法,通过对梯度平方的指数移动平均来缩放学习率。与RMSProp不同,ADADELTA使用了一个窗口来存储指数移动平均,并根据该窗口中的值自适应地调整学习率。

Equation

具体地说,给定当前步骤的参数 θt\theta_tθt​,和指数移动平均变量 E[g2]tE[g^2]_tE[g2]t​ 和 E[Δθ2]tE[\Delta\theta^2]_tE[Δθ2]t​,其中 ggg 是梯度向量,Δθ\Delta\thetaΔθ 是上一次更新的参数变化量。每次迭代中,计算梯度向量 gtg_tgt​,并使用以下公式更新参数:
Δθt=−RMS[Δθ]t−1RMS[g]tgt\Delta \theta_t = - \frac {RMS[\Delta \theta]_{t-1}} {RMS[g]_t} g_t Δθt​=−RMS[g]t​RMS[Δθ]t−1​​gt​
其中 RMS[x]tRMS[x]_tRMS[x]t​ 表示变量 xxx 在过去 www 步骤中的平方根均值,这里 www 是一个指定的窗口大小。然后使用以下公式更新指数移动平均变量:
E[g2]t=ρE[g2]t−1+(1−ρ)gt2E[Δθ2]t=ρE[Δθ2]t−1+(1−ρ)Δθt2E[g^2]_t = \rho E[g^2]_{t-1} + (1 - \rho)g_t^2\\ E[\Delta\theta^2]_t = \rho E[\Delta\theta^2]_{t-1} + (1 - \rho) \Delta \theta_t^2 E[g2]t​=ρE[g2]t−1​+(1−ρ)gt2​E[Δθ2]t​=ρE[Δθ2]t−1​+(1−ρ)Δθt2​
其中 ρ\rhoρ 是一个控制指数移动平均的衰减因子,通常设置为0.9。最后,使用以下公式更新参数:
θt+1=θt+Δθt\theta_{t+1} = \theta_t + \Delta \theta_t θt+1​=θt​+Δθt​

Parameters

使用 torch.optim.Adadelta 并设置以下参数:

参数描述默认值
params (iterable)要优化的参数的迭代,或者定义参数组的数据
rho (float, optional)用于计算梯度平方的运行平均值的系数0.9
eps (float, optional)添加到分母中以提高数值的稳定性1e-6
lr (float, optional)在delta应用于参数之前,对其进行缩放的系数1.0
weight_decay (float, optional)权重衰减(L2惩罚)0
foreach(bool, optional)是否使用优化器的foreach实现
如果用户没有指定(所以foreach为None),我们将尝试使用foreach而不是CUDA上的for-loop实现,因为其性能通常要好很多。
None
maximize(bool, optional)根据目标最大化参数,而不是最小化参数False
differentiable(bool, optional)在训练中是否应该通过优化器的步骤发生autograd。否则,step()函数会在torch.no_grad()的背景下运行。
设置为True会影响性能,所以如果你不打算通过这个实例运行autograd,就把它设为False。
False

Instance

以下是一个使用ADADELTA优化器训练MNIST数据集的示例:

import torch
import torch.nn as nn
import torch.optim as optim
import torchvision.datasets as datasets
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
from torch.utils.data import DataLoader# 定义超参数
learning_rate = 0.1
rho = 0.9
batch_size = 64
num_epochs = 10# 加载MNIST数据集
train_dataset = datasets.MNIST(root='./datasets', train=True, transform=transforms.ToTensor(), download=True)
train_loader = DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True)# 定义模型
class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.conv1 = nn.Conv2d(1, 32, kernel_size=5)self.conv2 = nn.Conv2d(32, 64, kernel_size=5)self.fc1 = nn.Linear(1024, 512)self.fc2 = nn.Linear(512, 10)def forward(self, x):x = nn.functional.relu(nn.functional.max_pool2d(self.conv1(x), 2))x = nn.functional.relu(nn.functional.max_pool2d(self.conv2(x), 2))x = x.view(-1, 1024)x = nn.functional.relu(self.fc1(x))x = self.fc2(x)return xmodel = Net()# 将模型和数据移动到GPU上
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model.to(device)# 定义优化器
optimizer = optim.Adadelta(model.parameters(), lr=learning_rate, rho=rho)
# 定义损失函数
criterion = nn.CrossEntropyLoss()# 记录损失值
loss_list = []# 训练模型
for epoch in range(num_epochs):total_loss = 0for i, (images, labels) in enumerate(train_loader):# 将数据移动到GPU上images = images.to(device)labels = labels.to(device)# 前向传播outputs = model(images)loss = criterion(outputs, labels)# 反向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()# 记录损失值total_loss += loss.item()# 输出训练信息if (i + 1) % 100 == 0:print('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}'.format(epoch + 1, num_epochs, i + 1, len(train_loader),loss.item()))  # 60000/64=937.5# 计算平均损失avg_loss = total_loss / len(train_loader)# 记录平均损失值loss_list.append(avg_loss)# 输出平均损失print('Epoch [{}], Average Loss: {:.4f}'.format(epoch + 1, avg_loss))print('-' * 50)# 绘制loss曲线
plt.plot(loss_list)
plt.title('Loss curve')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.show()print('Training finished')
Epoch [1/10], Step [100/938], Loss: 0.5616
Epoch [1/10], Step [200/938], Loss: 0.2429
Epoch [1/10], Step [300/938], Loss: 0.3516
Epoch [1/10], Step [400/938], Loss: 0.1991
Epoch [1/10], Step [500/938], Loss: 0.1635
Epoch [1/10], Step [600/938], Loss: 0.1354
Epoch [1/10], Step [700/938], Loss: 0.0416
Epoch [1/10], Step [800/938], Loss: 0.1753
Epoch [1/10], Step [900/938], Loss: 0.0663
Epoch [1], Average Loss: 0.3323
--------------------------------------------------
Epoch [2/10], Step [100/938], Loss: 0.1213
Epoch [2/10], Step [200/938], Loss: 0.0736
Epoch [2/10], Step [300/938], Loss: 0.0663
Epoch [2/10], Step [400/938], Loss: 0.0401
Epoch [2/10], Step [500/938], Loss: 0.0387
Epoch [2/10], Step [600/938], Loss: 0.0682
Epoch [2/10], Step [700/938], Loss: 0.0664
Epoch [2/10], Step [800/938], Loss: 0.0715
Epoch [2/10], Step [900/938], Loss: 0.0153
Epoch [2], Average Loss: 0.0807
--------------------------------------------------
Epoch [3/10], Step [100/938], Loss: 0.0472
Epoch [3/10], Step [200/938], Loss: 0.0277
Epoch [3/10], Step [300/938], Loss: 0.0869
Epoch [3/10], Step [400/938], Loss: 0.0100
Epoch [3/10], Step [500/938], Loss: 0.0275
Epoch [3/10], Step [600/938], Loss: 0.0386
Epoch [3/10], Step [700/938], Loss: 0.1090
Epoch [3/10], Step [800/938], Loss: 0.0356
Epoch [3/10], Step [900/938], Loss: 0.0326
Epoch [3], Average Loss: 0.0555
--------------------------------------------------
Epoch [4/10], Step [100/938], Loss: 0.0106
Epoch [4/10], Step [200/938], Loss: 0.0122
Epoch [4/10], Step [300/938], Loss: 0.0131
Epoch [4/10], Step [400/938], Loss: 0.0655
Epoch [4/10], Step [500/938], Loss: 0.0679
Epoch [4/10], Step [600/938], Loss: 0.0419
Epoch [4/10], Step [700/938], Loss: 0.0761
Epoch [4/10], Step [800/938], Loss: 0.0813
Epoch [4/10], Step [900/938], Loss: 0.0421
Epoch [4], Average Loss: 0.0435
--------------------------------------------------
Epoch [5/10], Step [100/938], Loss: 0.0072
Epoch [5/10], Step [200/938], Loss: 0.0088
Epoch [5/10], Step [300/938], Loss: 0.0490
Epoch [5/10], Step [400/938], Loss: 0.0475
Epoch [5/10], Step [500/938], Loss: 0.0464
Epoch [5/10], Step [600/938], Loss: 0.1294
Epoch [5/10], Step [700/938], Loss: 0.0644
Epoch [5/10], Step [800/938], Loss: 0.0590
Epoch [5/10], Step [900/938], Loss: 0.0601
Epoch [5], Average Loss: 0.0358
--------------------------------------------------
Epoch [6/10], Step [100/938], Loss: 0.0103
Epoch [6/10], Step [200/938], Loss: 0.0198
Epoch [6/10], Step [300/938], Loss: 0.0051
Epoch [6/10], Step [400/938], Loss: 0.0179
Epoch [6/10], Step [500/938], Loss: 0.0788
Epoch [6/10], Step [600/938], Loss: 0.0046
Epoch [6/10], Step [700/938], Loss: 0.0523
Epoch [6/10], Step [800/938], Loss: 0.0980
Epoch [6/10], Step [900/938], Loss: 0.0021
Epoch [6], Average Loss: 0.0299
--------------------------------------------------
Epoch [7/10], Step [100/938], Loss: 0.0758
Epoch [7/10], Step [200/938], Loss: 0.0732
Epoch [7/10], Step [300/938], Loss: 0.0119
Epoch [7/10], Step [400/938], Loss: 0.0706
Epoch [7/10], Step [500/938], Loss: 0.0195
Epoch [7/10], Step [600/938], Loss: 0.0191
Epoch [7/10], Step [700/938], Loss: 0.0357
Epoch [7/10], Step [800/938], Loss: 0.0141
Epoch [7/10], Step [900/938], Loss: 0.0850
Epoch [7], Average Loss: 0.0261
--------------------------------------------------
Epoch [8/10], Step [100/938], Loss: 0.0006
Epoch [8/10], Step [200/938], Loss: 0.0228
Epoch [8/10], Step [300/938], Loss: 0.0172
Epoch [8/10], Step [400/938], Loss: 0.0534
Epoch [8/10], Step [500/938], Loss: 0.0231
Epoch [8/10], Step [600/938], Loss: 0.3439
Epoch [8/10], Step [700/938], Loss: 0.0020
Epoch [8/10], Step [800/938], Loss: 0.0167
Epoch [8/10], Step [900/938], Loss: 0.0198
Epoch [8], Average Loss: 0.0223
--------------------------------------------------
Epoch [9/10], Step [100/938], Loss: 0.0024
Epoch [9/10], Step [200/938], Loss: 0.0035
Epoch [9/10], Step [300/938], Loss: 0.0007
Epoch [9/10], Step [400/938], Loss: 0.0102
Epoch [9/10], Step [500/938], Loss: 0.0089
Epoch [9/10], Step [600/938], Loss: 0.0086
Epoch [9/10], Step [700/938], Loss: 0.0117
Epoch [9/10], Step [800/938], Loss: 0.0251
Epoch [9/10], Step [900/938], Loss: 0.0038
Epoch [9], Average Loss: 0.0196
--------------------------------------------------
Epoch [10/10], Step [100/938], Loss: 0.0042
Epoch [10/10], Step [200/938], Loss: 0.0025
Epoch [10/10], Step [300/938], Loss: 0.0393
Epoch [10/10], Step [400/938], Loss: 0.0002
Epoch [10/10], Step [500/938], Loss: 0.0044
Epoch [10/10], Step [600/938], Loss: 0.0130
Epoch [10/10], Step [700/938], Loss: 0.0318
Epoch [10/10], Step [800/938], Loss: 0.0018
Epoch [10/10], Step [900/938], Loss: 0.0301
Epoch [10], Average Loss: 0.0175
--------------------------------------------------
Training finished

相关内容

热门资讯

李樱,已履新 李樱,已履新 李... 中国华能集团有限公司网站“公司领导”一栏最新信息显示,李樱已任中国华能集团有限公司总会计师、党组成员...
2025小红书教育营销答案之书 2025小红书教育营销答案之书 报告共计:18页 《2025小红书教育营销答案之书》指出,小红书正重...
央企控股上市公司密集发声 央企... 今年以来,国务院国资委多次部署提高央企控股上市公司质量,加强市值管理,传递信心、稳定预期。近期多家央...
本周外盘看点丨中美将举行经贸磋... 上周国际市场风云变幻,欧央行继续降息,美国总统特朗普与特斯拉CEO马斯克隔空喊话震惊市场。上周美股全...
一条视频涨粉2000万,韦神凭... 韦东奕为何要开抖音号?01 三句话,涨粉2000万好家伙,还得是韦神。韦东奕最近在抖音上再次创造了一...
新质生产力培育见效 资本市场向... 图虫创意/供图 证券时报记者 陈见南 在2025年《政府工作报告》中,“新质生产力”被赋予核心地位...
接棒淄博、尔滨,苏超凭啥能接住... 记得我们之前就专门分析过淄博烧烤、尔滨走红,对于整个事件背后的操盘可谓是叹服不已,然而就在最近这一轮...
惨不忍睹!5月合资新能源暴跌:... 合资新能源,最近有点烦在国内的新能源汽车市场,合资新源是一个非常有意思的存在。这一类的新能源汽车,最...
3万美元“产品”,说归零就归零... 投资小红书-第240期 过面尘土、伤痕累累,但我们依然且必须相信时如果不是翻开历史,投资者很难想象:...
全球化遭遇空前挑战,中美双核驱... 界面新闻记者 | 刘婷 在6月7日的“中国宏观经济论坛”(CMF)上,与会专家表示,短期内,特朗普...
饶毅拍案而起:科伦老板光膀子卖... 文 | 张佳儒等你到了75岁,肌肉紧实有型,胸肌、臂肌线条清晰,你敢想吗?梦想还是要有的,因为真的有...
金陵体育笑傲苏超 金陵体育笑傲... 富凯摘要:金陵体育表示,正积极探索2C业务增长点,以打造城镇体育为支点孵化体育消费品牌矩阵。作者|辛...
央企控股上市公司密集发声,多措... 今年以来,国务院国资委多次部署提高央企控股上市公司质量,加强市值管理,传递信心、稳定预期。近期多家央...
上交所:将推动上市公司进一步加... 上海6月6日电 (高志苗)上海证券交易所6日发布消息称,上交所近日召开高分红重回报暨上市公司价值提升...
特斯拉“跌下神坛”? 6月5日,马斯克与特朗普反目互怼后不久,特斯拉股价当日一度暴跌16%,截至当天收盘,特斯拉股价较开盘...
汉武帝都点赞的一次复仇 汉武帝... 上文讲到齐景公复霸,复哪个霸呢?春秋五霸之首,齐桓公。不过今天我们不讲著名的齐桓公,而是讲他的哥哥,...
“普五”破价到了756元,五粮... 随着“618”大促的到来,白酒企业的价格体系,再次遭受强烈冲击。去年,各大电商平台以“百亿补贴”为主...
比买黄金还赚钱!“塑料茅台”L... 年轻人的“茅台”竟然是个“娃娃”?泡泡玛特旗下的Labubu,正借着爆火的流量红利,身价一路飙升。据...
聚焦“两高四着力” 人大代表在... 河南日报客户端记者 陈小平 “今年,我们将采取‘建租结合’的方式,在北京、上海、武汉、沈阳、西安、成...
原创 促... 周末,市场没有利空,大家的情绪慢慢平静了,上证指数再次临近3400点,已经是物是人非了。银行分化,白...
江西“首富”李德仙,财富缩水超... 光伏行业分化,已成大趋势。今年一季度如果说哪家光伏巨头的表现最让外界大跌眼镜,那么晶科能源一定“榜上...
福莱新材推“三维力”电子皮肤 ... 21世纪经济报道记者 赵云帆 上海报道从未来终局角度思考,柔性多模态电子皮肤无疑是通用型人形机器人的...
2025年6月7日比特币与以太... 特朗普马斯克公开决裂引发市场巨震,比特币反弹至104,472美元,以太坊大幅反弹至2,474美元 一...
广州首批配售型保障房摇出选房序... 6月7日上午,广州今年首批配售型保障房迎来了第二次摇号确定选房序号的关键环节。在前期经过递交申请、第...
贬低业绩可以忍,贬低颜值不能忍... 6月7日,金石杂谈近期太关注公募了,不曾想对私募圈消息闭塞了。在6月5日深夜,私募小魔女李蓓开通个人...
热搜!“全智贤老公炒币亏了15... 6月7日午后,“全智贤老公炒币亏了150亿韩元”相关话题一度登上微博热搜。据观察者网援引韩媒报道,随...
中信建投:持续看好创新药产业技... 人民财讯6月7日电,中信建投研报表示,美国临床肿瘤学会(ASCO)年会是世界上规模最大、学术水平最高...
特斯拉“擎天柱”人形机器人项目... 来源:中国新闻网中新网6月7日电(吴家驹)综合外媒报道,特斯拉“擎天柱”(Optimus)人形机器人...
周鸿祎:准备干掉360整个市场... 周鸿祎称准备干掉360整个市场部。360集团创始人、董事长兼首席执行官周鸿祎发视频称,“我准备干掉3...