TensorFlow的优化类公式

本文介绍了TensorFlow中几种常用的优化器及其工作原理,包括梯度下降、Adagrad、RMSProp、动量优化及Adam优化等方法,并详细阐述了它们的迭代公式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

优化器

TensorFlow的优化类主要有以下几个:

  • GradientDescentOptimizer:最普通的批量梯度下降,令学习速率为 η \eta η t t t代表本次迭代, t + 1 t+1 t+1代表下次迭代,则梯度迭代公式如下:

θ 𝑡 + 1 = θ 𝑡 − η × ∂ l ( θ ) ∂ θ (1.1) \theta_{𝑡+1}=\theta_𝑡−\eta \times \frac{\partial l(\theta)}{\partial \theta} \tag{1.1} θt+1=θtη×θl(θ)(1.1)

  • AdagradOptimizer:进行参数迭代的同时记录了每个参数每次迭代的梯度的平方和,下次迭代时梯度与累积平方和的平方根成反比。这样会对低频的参数做较大的更新,对高频的参数做较小的更新,对于稀疏数据表现的更好;但是由于学习速率越来越小,有可能没有到达最低点学习速率就变得很慢了,难以收敛。令 s s s为梯度累积平方和, ε \varepsilon ε为极小量,t代表本次迭代, t − 1 t-1 t1代表上次迭代, t + 1 t+1 t+1代表下次迭代,梯度迭代公式如下:

s t = s t − 1 + ( ∂ l ( θ ) ∂ θ ) 2 (1.2) s_t = s_{t-1}+(\frac{\partial l(\theta)}{\partial\theta})^2 \tag{1.2} st=st1+(θl(θ))2(1.2)
θ t + 1 = θ t − η s t + ε × ∂ l ( θ ) ∂ θ (1.3) \theta_{t+1} = \theta_t-\frac{\eta}{\sqrt {s_t+\varepsilon}}\times \frac{\partial l (\theta)}{\partial\theta}\tag{1.3} θt+1=θtst+ε η×θl(θ)(1.3)

  • RMSPropOptimizer:为解决AdagradOptimizer后期更新速率过慢的问题,RMSprop使用加权累积平方和替换累积平方和。令 m m m代表梯度加权累积平方和, ε \varepsilon ε为极小量, β \beta β为权重, t t t代表本次迭代, t − 1 t-1 t1代表上次迭代, t + 1 t+1 t+1代表下次迭代,梯度迭代公式如下:

m t = β m t − 1 + ( 1 − β ) ( ∂ l ( θ ) ∂ θ ) 2 (1.4) m_t = \beta m_{t-1}+(1-\beta)(\frac{\partial l(\theta)}{\partial\theta})^2 \tag{1.4} mt=βmt1+(1β)(θl(θ))2(1.4)
θ t + 1 = θ t − η m t + ε × ∂ l ( θ ) ∂ θ (1.5) \theta_{t+1} = \theta_t-\frac{\eta}{\sqrt {m_t+\varepsilon}}\times \frac{\partial l (\theta)}{\partial\theta}\tag{1.5} θt+1=θtmt+ε η×θl(θ)(1.5)

  • MomentumOptimizer:多一个必须参数“动量速率”,每次迭代时参考前一次迭代的“动量”,在迭代中方向不变的维度做较大的更新,迭代中方向反复改变的维度做较小的更新。适用于在不同维度梯度差距很大的情况,更新不会在小梯度方向反复震荡。令 γ \gamma γ代表动量速率, t t t代表本次迭代, t − 1 t-1 t1代表上次迭代, t + 1 t+1 t+1代表下次迭代,梯度迭代公式如下:

v t = γ × v t − 1 + η ∂ l ( θ ) ∂ θ (1.6) v_t=\gamma \times v_{t-1}+\eta \frac{\partial l (\theta)}{\partial\theta}\tag{1.6} vt=γ×vt1+ηθl(θ)(1.6)

θ t + 1 = θ t − v t (1.7) \theta_{t+1}=\theta_t - v_t\tag{1.7} θt+1=θtvt(1.7)

  • AdamOptimizer:综合了MomentumOptimizer和RMSPropOptimizer,既包含动量(一次项)部分也包含衰减(两次项)部分。令f代表动量, g g g 代表衰减, β 1 , β 2 \beta_1,\beta_2 β1,β2为权重, t t t代表本次迭代, t − 1 t-1 t1代表上次迭代, t + 1 t+1 t+1代表下次迭代:

f t = β 2 f t − 1 + ( 1 − β 2 ) ∂ l ( θ ) ∂ θ (1.8) f_t=\beta_2 f_{t-1}+(1-\beta_2)\frac{\partial l (\theta)}{\partial\theta}\tag{1.8} ft=β2ft1+(1β2)θl(θ)(1.8)

g t = β 1 g t − 1 + ( 1 − β 1 ) ( ∂ l ( θ ) ∂ θ ) 2 (1.9) g_t=\beta_1 g_{t-1}+(1-\beta_1)(\frac{\partial l (\theta)}{\partial\theta})^2\tag{1.9} gt=β1gt1+(1β1)(θl(θ))2(1.9)

​ 注意此处第一次迭代的梯度值和速率值偏小,为了校正偏差,计算校正后的动量 f ′ f^\prime f和衰减 g ′ g^\prime g,再计算迭代公式:

f t ′ = f t 1 − β 1 (1.10) f^\prime_t=\frac{f_t}{1-\beta_1}\tag{1.10} ft=1β1ft(1.10)

g t ′ = g t 1 − β 2 (1.11) g^\prime_t=\frac{g_t}{1-\beta_2}\tag{1.11} gt=1β2gt(1.11)

θ t + 1 = θ t − η g t ′ + ε f t ′ (1.12) \theta_{t+1}=\theta_t-\frac{\eta}{\sqrt {g^\prime_t+\varepsilon}}f_t^\prime\tag{1.12} θt+1=θtgt+ε ηft(1.12)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值