【Day4】optimization

gd-sgd

梯度下降(gradien descent)
以下的近似:

f ( x + ϵ ) ≈ f ( x ) + ϵ f ′ ( x ) . f(x + \epsilon) \approx f(x) + \epsilon f'(x) . f(x+ϵ)f(x)+ϵf(x).

接下来,找到一个常数 η > 0 \eta > 0 η>0,使得 ∣ η f ′ ( x ) ∣ \left|\eta f'(x)\right| ηf(x)足够小,那么可以将 ϵ \epsilon ϵ替换为 − η f ′ ( x ) -\eta f'(x) ηf(x)并得到

f ( x − η f ′ ( x ) ) ≈ f ( x ) − η f ′ ( x ) 2 . f(x - \eta f'(x)) \approx f(x) - \eta f'(x)^2. f(xηf(x))f(x)ηf(x)2.
学习率 η \eta η太大,overshoot

随机梯度下降(stochastic gradient descent)
在深度学习里,目标函数通常是训练数据集中有关各个样本的损失函数的平均。那么目标函数定义为

f ( x ) = 1 n ∑ i = 1 n f i ( x ) . f(\boldsymbol{x}) = \frac{1}{n} \sum_{i = 1}^n f_i(\boldsymbol{x}). f(x)=n1i=1nfi(x).

目标函数在 x \boldsymbol{x} x处的梯度计算为

∇ f ( x ) = 1 n ∑ i = 1 n ∇ f i ( x ) . \nabla f(\boldsymbol{x}) = \frac{1}{n} \sum_{i = 1}^n \nabla f_i(\boldsymbol{x}). f(x)=n1i=1nfi(x).

如果使用梯度下降,每次自变量迭代的计算开销为 O ( n ) \mathcal{O}(n) O(n),它随着 n n n线性增长。因此,当训练数据样本数很大时,梯度下降每次迭代的计算开销很高。

随机梯度下降(stochastic gradient descent,SGD)减少了每次迭代的计算开销。在随机梯度下降的每次迭代中,我们随机均匀采样的一个样本索引 i ∈ { 1 , … , n } i\in\{1,\ldots,n\} i{1,,n},并计算梯度 ∇ f i ( x ) \nabla f_i(\boldsymbol{x}) fi(x)来迭代 x \boldsymbol{x} x

x ← x − η ∇ f i ( x ) . \boldsymbol{x} \leftarrow \boldsymbol{x} - \eta \nabla f_i(\boldsymbol{x}). xxηfi(x).

momentum动量法

解决:水平方向和竖直方向梯度相差太大,不容易接近最优解
方法:依赖指数加权移动平均使得自变量的更新方向更加一致,从而降低发散的可能。

在时间步 0 0 0,动量法创建速度变量 v 0 \boldsymbol{v}_0 v0,并将其元素初始化成0。在时间步 t > 0 t>0 t>0,动量法对每次迭代的步骤做如下修改:
v t ← γ v t − 1 + η t g t , x t ← x t − 1 − v t , \begin{aligned} \boldsymbol{v}_t &\leftarrow \gamma \boldsymbol{v}_{t-1} + \eta_t \boldsymbol{g}_t, \\ \boldsymbol{x}_t &\leftarrow \boldsymbol{x}_{t-1} - \boldsymbol{v}_t, \end{aligned} vtxtγvt1+ηtgt,xt1vt,
我们对动量法的速度变量做变形:
v t ← γ v t − 1 + ( 1 − γ ) ( η t 1 − γ g t ) . \boldsymbol{v}_t \leftarrow \gamma \boldsymbol{v}_{t-1} + (1 - \gamma) \left(\frac{\eta_t}{1 - \gamma} \boldsymbol{g}_t\right). vtγvt1+(1γ)(1γηtgt).
速度变量 v t \boldsymbol{v}_t vt实际上对序列 { η t − i g t − i / ( 1 − γ ) : i = 0 , … , 1 / ( 1 − γ ) − 1 } \{\eta_{t-i}\boldsymbol{g}_{t-i} /(1-\gamma):i=0,\ldots,1/(1-\gamma)-1\} {ηtigti/(1γ):i=0,,1/(1γ)1}做了指数加权移动平均。

相比于小批量随机梯度下降,动量法在每个时间步的自变量更新量近似于将前者对应的最近 1 / ( 1 − γ ) 1/(1-\gamma) 1/(1γ)个时间步的更新量做了指数加权移动平均后再除以 1 − γ 1-\gamma 1γ。所以,在动量法中,自变量在各个方向上的移动幅度不仅取决于当前梯度,还取决于过去的各个梯度在各个方向上是否一致。在本节之前示例的优化问题中,所有梯度在水平方向上为正(向右),而在竖直方向上时正(向上)时负(向下)。这样,我们就可以使用较大的学习率,从而使自变量向最优解更快移动。

其中,动量超参数 γ \gamma γ满足 0 ≤ γ < 1 0 \leq \gamma < 1 0γ<1。当 γ = 0 \gamma=0 γ=0时,动量法等价于小批量随机梯度下降。
指数加权移动平均(exponentially weighted moving average)
y t = γ y t − 1 + ( 1 − γ ) x t . y_t = \gamma y_{t-1} + (1-\gamma) x_t. yt=γyt1+(1γ)xt.

我们可以对 y t y_t yt展开:

y t = ( 1 − γ ) x t + γ y t − 1 = ( 1 − γ ) x t + ( 1 − γ ) ⋅ γ x t − 1 + γ 2 y t − 2 = ( 1 − γ ) x t + ( 1 − γ ) ⋅ γ x t − 1 + ( 1 − γ ) ⋅ γ 2 x t − 2 + γ 3 y t − 3 … \begin{aligned} y_t &= (1-\gamma) x_t + \gamma y_{t-1}\\ &= (1-\gamma)x_t + (1-\gamma) \cdot \gamma x_{t-1} + \gamma^2y_{t-2}\\ &= (1-\gamma)x_t + (1-\gamma) \cdot \gamma x_{t-1} + (1-\gamma) \cdot \gamma^2x_{t-2} + \gamma^3y_{t-3}\\ &\ldots \end{aligned} yt=(1γ)xt+γyt1=(1γ)xt+(1γ)γxt1+γ2yt2=(1γ)xt+(1γ)γxt1+(1γ)γ2xt2+γ3yt3

n = 1 / ( 1 − γ ) n = 1/(1-\gamma) n=1/(1γ),那么 ( 1 − 1 / n ) n = γ 1 / ( 1 − γ ) \left(1-1/n\right)^n = \gamma^{1/(1-\gamma)} (11/n)n=γ1/(1γ)。因为

lim ⁡ n → ∞ ( 1 − 1 n ) n = exp ⁡ ( − 1 ) ≈ 0.3679 , \lim_{n \rightarrow \infty} \left(1-\frac{1}{n}\right)^n = \exp(-1) \approx 0.3679, nlim(1n1)n=exp(1)0.3679,

所以当 γ → 1 \gamma \rightarrow 1 γ1时, γ 1 / ( 1 − γ ) = exp ⁡ ( − 1 ) \gamma^{1/(1-\gamma)}=\exp(-1) γ1/(1γ)=exp(1),如 0.9 5 20 ≈ exp ⁡ ( − 1 ) 0.95^{20} \approx \exp(-1) 0.9520exp(1)。如果把 exp ⁡ ( − 1 ) \exp(-1) exp(1)当作一个比较小的数,我们可以在近似中忽略所有含 γ 1 / ( 1 − γ ) \gamma^{1/(1-\gamma)} γ1/(1γ)和比 γ 1 / ( 1 − γ ) \gamma^{1/(1-\gamma)} γ1/(1γ)更高阶的系数的项。例如,当 γ = 0.95 \gamma=0.95 γ=0.95时,

y t ≈ 0.05 ∑ i = 0 19 0.9 5 i x t − i . y_t \approx 0.05 \sum_{i=0}^{19} 0.95^i x_{t-i}. yt0.05i=0190.95ixti.

AdaGrad

方法:根据自变量在每个维度的梯度值的大小来调整各个维度上的学习率,从而避免统一的学习率难以适应所有维度的问题。
思路:状态变量 s t \boldsymbol{s}_t st是截至时间步 t t t所有小批量随机梯度 g t \boldsymbol{g}_t gt按元素平方和。
问题:不断迭代,学习率不断下降,后期可能仍为找到有用解。

AdaGrad算法会使用一个小批量随机梯度 g t \boldsymbol{g}_t gt按元素平方的累加变量 s t \boldsymbol{s}_t st

s t ← s t − 1 + g t ⊙ g t , \boldsymbol{s}_t \leftarrow \boldsymbol{s}_{t-1} + \boldsymbol{g}_t \odot \boldsymbol{g}_t, stst1+gtgt,

接着,我们将目标函数自变量中每个元素的学习率通过按元素运算重新调整一下:

x t ← x t − 1 − η s t + ϵ ⊙ g t , \boldsymbol{x}_t \leftarrow \boldsymbol{x}_{t-1} - \frac{\eta}{\sqrt{\boldsymbol{s}_t + \epsilon}} \odot \boldsymbol{g}_t, xtxt1st+ϵ ηgt,

其中 η \eta η是学习率, ϵ \epsilon ϵ是为了维持数值稳定性而添加的常数,如 1 0 − 6 10^{-6} 106。这里开方、除法和乘法的运算都是按元素运算的。这些按元素运算使得目标函数自变量中每个元素都分别拥有自己的学习率。

RMSProp

思路:将这些梯度按元素平方做指数加权移动平均。具体来说,给定超参数 0 ≤ γ < 1 0 \leq \gamma < 1 0γ<1,RMSProp算法在时间步 t > 0 t>0 t>0计算

s t ← γ s t − 1 + ( 1 − γ ) g t ⊙ g t . \boldsymbol{s}_t \leftarrow \gamma \boldsymbol{s}_{t-1} + (1 - \gamma) \boldsymbol{g}_t \odot \boldsymbol{g}_t. stγst1+(1γ)gtgt.

和AdaGrad算法一样,RMSProp算法将目标函数自变量中每个元素的学习率通过按元素运算重新调整,然后更新自变量

x t ← x t − 1 − η s t + ϵ ⊙ g t , \boldsymbol{x}_t \leftarrow \boldsymbol{x}_{t-1} - \frac{\eta}{\sqrt{\boldsymbol{s}_t + \epsilon}} \odot \boldsymbol{g}_t, xtxt1st+ϵ ηgt,

AdaDelta

有意思的是,AdaDelta算法没有学习率这一超参数。
用来两个EMA。
在这里插入图片描述

Adam

在Adam算法中,我们对变量 v t \boldsymbol{v}_t vt s t \boldsymbol{s}_t st均作偏差修正:

v ^ t ← v t 1 − β 1 t , \hat{\boldsymbol{v}}_t \leftarrow \frac{\boldsymbol{v}_t}{1 - \beta_1^t}, v^t1β1tvt,

s ^ t ← s t 1 − β 2 t . \hat{\boldsymbol{s}}_t \leftarrow \frac{\boldsymbol{s}_t}{1 - \beta_2^t}. s^t1β2tst.

v t \boldsymbol{v}_t vt即小批量随机梯度 g t \boldsymbol{g}_t gt的指数加权移动平均:

v t ← β 1 v t − 1 + ( 1 − β 1 ) g t . \boldsymbol{v}_t \leftarrow \beta_1 \boldsymbol{v}_{t-1} + (1 - \beta_1) \boldsymbol{g}_t. vtβ1vt1+(1β1)gt.

和RMSProp算法中一样,给定超参数 0 ≤ β 2 < 1 0 \leq \beta_2 < 1 0β2<1(算法作者建议设为0.999),
将小批量随机梯度按元素平方后的项 g t ⊙ g t \boldsymbol{g}_t \odot \boldsymbol{g}_t gtgt做指数加权移动平均得到 s t \boldsymbol{s}_t st

s t ← β 2 s t − 1 + ( 1 − β 2 ) g t ⊙ g t . \boldsymbol{s}_t \leftarrow \beta_2 \boldsymbol{s}_{t-1} + (1 - \beta_2) \boldsymbol{g}_t \odot \boldsymbol{g}_t. stβ2st1+(1β2)gtgt.

由于我们将 v 0 \boldsymbol{v}_0 v0 s 0 \boldsymbol{s}_0 s0中的元素都初始化为0,
在时间步 t t t我们得到 v t = ( 1 − β 1 ) ∑ i = 1 t β 1 t − i g i \boldsymbol{v}_t = (1-\beta_1) \sum_{i=1}^t \beta_1^{t-i} \boldsymbol{g}_i vt=(1β1)i=1tβ1tigi。将过去各时间步小批量随机梯度的权值相加,得到 ( 1 − β 1 ) ∑ i = 1 t β 1 t − i = 1 − β 1 t (1-\beta_1) \sum_{i=1}^t \beta_1^{t-i} = 1 - \beta_1^t (1β1)i=1tβ1ti=1β1t。需要注意的是,当 t t t较小时,过去各时间步小批量随机梯度权值之和会较小。例如,当 β 1 = 0.9 \beta_1 = 0.9 β1=0.9时, v 1 = 0.1 g 1 \boldsymbol{v}_1 = 0.1\boldsymbol{g}_1 v1=0.1g1。为了消除这样的影响,对于任意时间步 t t t,我们可以将 v t \boldsymbol{v}_t vt再除以 1 − β 1 t 1 - \beta_1^t 1β1t,从而使过去各时间步小批量随机梯度权值之和为1。这也叫作偏差修正。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delivery optimization refers to the process of efficiently managing and planning the delivery of goods or services from a warehouse, distribution center, or point of origin to the end customers. It involves various strategies, techniques, and technologies to minimize costs, reduce lead times, improve customer satisfaction, and enhance overall supply chain performance. Key aspects of delivery optimization include: 1. Route planning: Determining the most efficient routes for delivery vehicles to minimize travel distance and time, taking into account traffic patterns, delivery priorities, and vehicle capacity. 2. Inventory management: Optimizing inventory levels to ensure that products are available when needed, without excessive storage costs or stockouts. 3. Warehouse operations: Streamlining warehouse processes such as picking, packing, and sorting to minimize handling time and maximize productivity. 4. Real-time tracking: Using GPS and other technologies to monitor shipments in real-time, enabling better visibility and proactive problem-solving. 5. Load balancing: Distributing packages evenly among delivery personnel or vehicles to optimize resource utilization and reduce wait times. 6. Customer experience: Implementing features like dynamic delivery windows, same-day or next-day deliveries, and accurate tracking information to enhance customer satisfaction. 7. Sustainability: Incorporating eco-friendly practices, such as electric or hybrid vehicles, to reduce carbon footprint and promote green logistics. 8. Supply chain integration: Collaborating with suppliers, carriers, and other stakeholders to synchronize data and improve coordination across the entire delivery network.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值