Skip to content

Commit

Permalink
fix typo and improve translation in chapter_optimization/ (d2l-ai#1080)
Browse files Browse the repository at this point in the history
* fix typo of hyperlink in chapter_optimization/optimization-intro.md

* fix typo of reference in chapter_optimization/optimization-intro.md

* fix typo in chapter_optimization/convexity_origin.md

* improve translation in chapter_optimization/convexity.md

* improve translation in chapter_optimization/gd.md

* add equation label `eq_jensens-inequality` in chapter_optimization/convexity.md to add reference in chapter_optimization/sgd.md

* improve translation in chapter_optimization/sgd.md

* fix typo in chapter_optimization/minibatch-sgd_origin.md

* improve translation in chapter_optimization/minibatch-sgd.md

* improve translation in chapter_optimization/momentum.md

* fix typo in chapter_optimization/adagrad.md

* fix typo in chapter_optimization/adagrad(_origin).md

* fix typo in chapter_optimization/rmsprop.md

* fix typo in chapter_optimization/adadelta.md

* improve translation in chapter_optimization/adam.md

* fix typo in chapter_optimization/lr-scheduler.md
  • Loading branch information
YaoPengCN authored Jan 22, 2022
1 parent 707da15 commit daadaf8
Show file tree
Hide file tree
Showing 14 changed files with 100 additions and 87 deletions.
4 changes: 2 additions & 2 deletions chapter_optimization/adadelta.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Adadelta算法是在 :cite:`Zeiler.2012`中提出的。

## Adadelta算法

简而言之,Adadelta使用两个状态变量,$\mathbf{s}_t$用于存储梯度二阶导数的漏平均值,$\Delta\mathbf{x}_t$用于存储模型本身中参数变化二阶导数的泄露平均值。请注意,为了与其他出版物和实现的兼容性,我们使用作者的原始符号和命名(没有其他真正理由为什么应该使用不同的希腊变量来表示在动量中用于相同用途的参数,即AdaGrad、RMSProp和Adadelta)。
简而言之,Adadelta使用两个状态变量,$\mathbf{s}_t$用于存储梯度二阶导数的泄露平均值,$\Delta\mathbf{x}_t$用于存储模型本身中参数变化二阶导数的泄露平均值。请注意,为了与其他出版物和实现的兼容性,我们使用作者的原始符号和命名(没有其它真正理由让大家使用不同的希腊变量来表示在动量法、AdaGrad、RMSProp和Adadelta中用于相同用途的参数)。

以下是Adadelta的技术细节。鉴于参数du jour是$\rho$,我们获得了与 :numref:`sec_rmsprop`类似的以下泄漏更新:

Expand Down Expand Up @@ -39,7 +39,7 @@ $$\begin{aligned}

## 代码实现

Adadelta需要为每个变量维护两个状态变量,即$\mathbf{s}_t$和$\Delta\mathbf{x}_t$。这将产生以下实施
Adadelta需要为每个变量维护两个状态变量,即$\mathbf{s}_t$和$\Delta\mathbf{x}_t$。这将产生以下实现

```{.python .input}
%matplotlib inline
Expand Down
6 changes: 3 additions & 3 deletions chapter_optimization/adagrad.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ $$f(\mathbf{x}) = \bar{f}(\bar{\mathbf{x}}) = \frac{1}{2} \bar{\mathbf{x}}^\top
$$\kappa = \frac{\boldsymbol{\Lambda}_1}{\boldsymbol{\Lambda}_d}.$$

如果条件编号$\kappa$很大,准确解决优化问题就会很难。
我们需要确保在获取大量动态的特征值范围时足够谨慎:我们不能简单地通过扭曲空间来“修复”这个问题,从而使所有特征值都是$1$?
我们需要确保在获取大量动态的特征值范围时足够谨慎:难道我们不能简单地通过扭曲空间来“修复”这个问题,从而使所有特征值都是$1$?
理论上这很容易:我们只需要$\mathbf{Q}$的特征值和特征向量即可将问题从$\mathbf{x}$整理到$\mathbf{z} := \boldsymbol{\Lambda}^{\frac{1}{2}} \mathbf{U} \mathbf{x}$中的一个。
在新的坐标系中,$\mathbf{x}^\top \mathbf{Q} \mathbf{x}$可以被简化为$\|\mathbf{z}\|^2$。
可惜,这是一个相当不切实际的想法。
Expand Down Expand Up @@ -110,7 +110,7 @@ $$\begin{aligned}
然而,在深度学习中,我们可能希望更慢地降低学习率。
这引出了许多AdaGrad算法的变体,我们将在后续章节中讨论它们。
眼下让我们先看看它在二次凸问题中的表现如何。
我们仍然同一函数为例
我们仍然以同一函数为例

$$f(\mathbf{x}) = 0.1 x_1^2 + 2 x_2^2.$$

Expand Down Expand Up @@ -260,7 +260,7 @@ d2l.train_concise_ch11(trainer, {'learning_rate' : 0.1}, data_iter)
1. 尝试对函数$f(\mathbf{x}) = 0.1 x_1^2 + 2 x_2^2$、以及它旋转45度后的函数即$f(\mathbf{x}) = 0.1 (x_1 + x_2)^2 + 2 (x_1 - x_2)^2$使用AdaGrad算法。它的表现会不同吗?
1. 证明[格什戈林圆盘定理](https://en.wikipedia.org/wiki/Gershgorin_circle_theorem),其中提到,矩阵$\mathbf{M}$的特征值$\lambda_i$在至少一个$j$的选项中满足$|\lambda_i - \mathbf{M}_{jj}| \leq \sum_{k \neq j} |\mathbf{M}_{jk}|$的要求。
1. 关于对角线预处理矩阵$\mathrm{diag}^{-\frac{1}{2}}(\mathbf{M}) \mathbf{M} \mathrm{diag}^{-\frac{1}{2}}(\mathbf{M})$的特征值,格什戈林的定理告诉了我们什么?
1. 尝试对适当的深度网络使用AdaGrad算法,例如,当应用于时尚MNIST时,使用 :numref:`sec_lenet`
1. 尝试对适当的深度网络使用AdaGrad算法,例如,:numref:`sec_lenet`中应用于Fashion-MNIST的深度网络
1. 你要如何修改AdaGrad算法,才能使其在学习率方面的衰减不那么激进?

:begin_tab:`mxnet`
Expand Down
2 changes: 1 addition & 1 deletion chapter_optimization/adagrad_origin.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ d2l.train_concise_ch11(trainer, {'learning_rate' : 0.1}, data_iter)
1. Try out Adagrad for $f(\mathbf{x}) = 0.1 x_1^2 + 2 x_2^2$ and also for the objective function was rotated by 45 degrees, i.e., $f(\mathbf{x}) = 0.1 (x_1 + x_2)^2 + 2 (x_1 - x_2)^2$. Does it behave differently?
1. Prove [Gerschgorin's circle theorem](https://en.wikipedia.org/wiki/Gershgorin_circle_theorem) which states that eigenvalues $\lambda_i$ of a matrix $\mathbf{M}$ satisfy $|\lambda_i - \mathbf{M}_{jj}| \leq \sum_{k \neq j} |\mathbf{M}_{jk}|$ for at least one choice of $j$.
1. What does Gerschgorin's theorem tell us about the eigenvalues of the diagonally preconditioned matrix $\mathrm{diag}^{-\frac{1}{2}}(\mathbf{M}) \mathbf{M} \mathrm{diag}^{-\frac{1}{2}}(\mathbf{M})$?
1. Try out Adagrad for a proper deep network, such as :numref:`sec_lenet` when applied to Fashion MNIST.
1. Try out Adagrad for a proper deep network, such as :numref:`sec_lenet` when applied to Fashion-MNIST.
1. How would you need to modify Adagrad to achieve a less aggressive decay in learning rate?

:begin_tab:`mxnet`
Expand Down
22 changes: 11 additions & 11 deletions chapter_optimization/adam.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* 在 :numref:`sec_sgd`中,我们学习了:随机梯度下降在解决优化问题时比梯度下降更有效。
* 在 :numref:`sec_minibatch_sgd`中,我们学习了:在一个小批量中使用更大的观测值集,可以通过向量化提供额外效率。这是高效的多机、多GPU和整体并行处理的关键。
* 在 :numref:`sec_momentum`中我们添加了一种机制,用于汇总过去梯度的历史以加速收敛。
* 在 :numref:`sec_adagrad`中,我们使用每坐标缩放来实现计算效率的预处理
* 在 :numref:`sec_adagrad`中,我们通过对每个坐标缩放来实现高效计算的预处理器
* 在 :numref:`sec_rmsprop`中,我们通过学习率的调整来分离每个坐标的缩放。

Adam算法 :cite:`Kingma.Ba.2014`将所有这些技术汇总到一个高效的学习算法中。
Expand All @@ -18,19 +18,19 @@ Adam算法 :cite:`Kingma.Ba.2014`将所有这些技术汇总到一个高效的

## 算法

Adam算法的关键组成部分之一是:它使用指数加权移动平均值来估算梯度的动量和第二力矩,即它使用状态变量
Adam算法的关键组成部分之一是:它使用指数加权移动平均值来估算梯度的动量和二次矩,即它使用状态变量

$$\begin{aligned}
\mathbf{v}_t & \leftarrow \beta_1 \mathbf{v}_{t-1} + (1 - \beta_1) \mathbf{g}_t, \\
\mathbf{s}_t & \leftarrow \beta_2 \mathbf{s}_{t-1} + (1 - \beta_2) \mathbf{g}_t^2.
\end{aligned}$$

这里$\beta_1$和$\beta_2$是非负加权参数。
他们的常见设置是$\beta_1 = 0.9$和$\beta_2 = 0.999$。
也就是说,方差的估计比动量的估计移动得远远更慢
常将它们设置为$\beta_1 = 0.9$和$\beta_2 = 0.999$。
也就是说,方差估计的移动远远慢于动量估计的移动
注意,如果我们初始化$\mathbf{v}_0 = \mathbf{s}_0 = 0$,就会获得一个相当大的初始偏差。
我们可以通过使用$\sum_{i=0}^t \beta^i = \frac{1 - \beta^t}{1 - \beta}$来解决这个问题。
相应地,标准化状态变量由以下获得
相应地,标准化状态变量由下式获得

$$\hat{\mathbf{v}}_t = \frac{\mathbf{v}_t}{1 - \beta_1^t} \text{ and } \hat{\mathbf{s}}_t = \frac{\mathbf{s}_t}{1 - \beta_2^t}.$$

Expand All @@ -50,8 +50,8 @@ $$\mathbf{x}_t \leftarrow \mathbf{x}_{t-1} - \mathbf{g}_t'.$$

回顾Adam算法,它的设计灵感很清楚:
首先,动量和规模在状态变量中清晰可见,
他们相当独特的定义使我们移除偏项目(这可以通过稍微不同的初始化和更新条件来修正)。
其次,RMSProp算法中两个项目的组合都非常简单
它们相当独特的定义使我们移除偏项(这可以通过稍微不同的初始化和更新条件来修正)。
其次,RMSProp算法中两项的组合都非常简单
最后,明确的学习率$\eta$使我们能够控制步长来解决收敛问题。

## 实现
Expand Down Expand Up @@ -161,13 +161,13 @@ d2l.train_concise_ch11(trainer, {'learning_rate': 0.01}, data_iter)
## Yogi

Adam算法也存在一些问题:
即使在凸环境下,当$\mathbf{s}_t$的第二力矩估计值爆炸时,它可能无法收敛。
即使在凸环境下,当$\mathbf{s}_t$的二次矩估计值爆炸时,它可能无法收敛。
:cite:`Zaheer.Reddi.Sachan.ea.2018`为$\mathbf{s}_t$提出了的改进更新和参数初始化。
论文中建议我们重写Adam算法更新如下:

$$\mathbf{s}_t \leftarrow \mathbf{s}_{t-1} + (1 - \beta_2) \left(\mathbf{g}_t^2 - \mathbf{s}_{t-1}\right).$$

每当$\mathbf{g}_t^2$具有高变量或更新稀疏时,$\mathbf{s}_t$可能会太快地“忘记”过去的值。
每当$\mathbf{g}_t^2$具有值很大的变量或更新很稀疏时,$\mathbf{s}_t$可能会太快地“忘记”过去的值。
一个有效的解决方法是将$\mathbf{g}_t^2 - \mathbf{s}_{t-1}$替换为$\mathbf{g}_t^2 \odot \mathop{\mathrm{sgn}}(\mathbf{g}_t^2 - \mathbf{s}_{t-1})$。
这就是Yogi更新,现在更新的规模不再取决于偏差的量。

Expand Down Expand Up @@ -236,13 +236,13 @@ d2l.train_ch11(yogi, init_adam_states(feature_dim),

* Adam算法将许多优化算法的功能结合到了相当强大的更新规则中。
* Adam算法在RMSProp算法基础上创建的,还在小批量的随机梯度上使用EWMA。
* 在估计动量和第二力矩时,Adam算法使用偏差校正来调整缓慢的启动速度。
* 在估计动量和二次矩时,Adam算法使用偏差校正来调整缓慢的启动速度。
* 对于具有显著差异的梯度,我们可能会遇到收敛性问题。我们可以通过使用更大的小批量或者切换到改进的估计值$\mathbf{s}_t$来修正它们。Yogi提供了这样的替代方案。

## 练习

1. 调节学习率,观察并分析实验结果。
1. 你能重写动量和第二力矩更新,从而使其不需要偏差校正吗?
1. 你能重写动量和二次矩更新,从而使其不需要偏差校正吗?
1. 当我们收敛时,为什么你需要降低学习率$\eta$?
1. 尝试构造一个使用Adam算法会发散而Yogi会收敛的例子。

Expand Down
49 changes: 30 additions & 19 deletions chapter_optimization/convexity.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,9 @@ for ax, func in zip(axes, [f, g, h]):
它是凸性定义的一种推广:

$$\sum_i \alpha_i f(x_i) \geq f\left(\sum_i \alpha_i x_i\right) \text{ and } E_X[f(X)] \geq f\left(E_X[X]\right),$$
:eqlabel:`eq_jensens-inequality`

其中$\alpha_i$是非负实数,因此$\sum_i \alpha_i = 1$$X$是随机变量。
其中$\alpha_i$是满足$\sum_i \alpha_i = 1$的非负实数,$X$是随机变量。
换句话说,凸函数的期望不小于期望的凸函数,其中后者通常是一个更简单的表达式。
为了证明第一个不等式,我们多次将凸性的定义应用于一次求和中的一项。

Expand All @@ -133,9 +134,16 @@ $$E_{Y \sim P(Y)}[-\log P(X \mid Y)] \geq -\log P(X),$$
### 局部极小值是全局极小值

首先凸函数的局部极小值也是全局极小值。
我们用反证法证明它是错误的:假设$x^{\ast} \in \mathcal{X}$是一个局部最小值,使得有一个很小的正值$p$,使得$x \in \mathcal{X}$满足$0 < |x - x^{\ast}| \leq p$有$f(x^{\ast}) < f(x)$。
假设存在$x' \in \mathcal{X}$,其中$f(x') < f(x^{\ast})$。
根据凸性的性质,
下面我们用反证法给出证明。

假设$x^{\ast} \in \mathcal{X}$是一个局部最小值,则存在一个很小的正值$p$,使得当$x \in \mathcal{X}$满足$0 < |x - x^{\ast}| \leq p$时,有$f(x^{\ast}) < f(x)$。

现在假设局部极小值$x^{\ast}$不是$f$的全局极小值:存在$x' \in \mathcal{X}$使得$f(x') < f(x^{\ast})$。
则存在
$\lambda \in [0, 1)$,比如$\lambda = 1 - \frac{p}{|x^{\ast} - x'|}$,使得
$0 < |\lambda x^{\ast} + (1-\lambda) x' - x^{\ast}| \leq p$。

然而,根据凸性的性质,有

$$\begin{aligned}
f(\lambda x^{\ast} + (1-\lambda) x') &\leq \lambda f(x^{\ast}) + (1-\lambda) f(x') \\
Expand All @@ -144,7 +152,7 @@ $$\begin{aligned}
\end{aligned}$$

这与$x^{\ast}$是局部最小值相矛盾。
因此,对于$f(x') < f(x^{\ast})$不存在$x' \in \mathcal{X}$。
因此,不存在$x' \in \mathcal{X}$满足$f(x') < f(x^{\ast})$。
综上所述,局部最小值$x^{\ast}$也是全局最小值。

例如,对于凸函数$f(x) = (x-1)^2$,有一个局部最小值$x=1$,它也是全局最小值。
Expand All @@ -162,15 +170,17 @@ d2l.plot([x, segment], [f(x), f(segment)], 'x', 'f(x)')
例如,函数$f(x) = \mathrm{max}(|x|-1, 0)$在$[-1,1]$区间上都是最小值。
相反,函数$f(x) = \exp(x)$在$\mathbb{R}$上没有取得最小值。对于$x \to -\infty$,它趋近于$0$,但是没有$f(x) = 0$的$x$。

### 水平集的凸函数
### 凸函数的下水平集是凸的

凸函数将凸集定义为*水平集*(below sets)。它们定义为:
我们可以方便地通过凸函数的*下水平集*(below sets)定义凸集。
具体来说,给定一个定义在凸集$\mathcal{X}$上的凸函数$f$,其任意一个下水平集

$$\mathcal{S}_b := \{x | x \in \mathcal{X} \text{ and } f(x) \leq b\}$$

这样的集合是凸的。
是凸的。

让我们快速证明一下。
对于任何$x, x' \in \mathcal{S}_b$,我们需要证明:当$\lambda \in [0, 1]$,$\lambda x + (1-\lambda) x' \in \mathcal{S}_b$。
对于任何$x, x' \in \mathcal{S}_b$,我们需要证明:当$\lambda \in [0, 1]$,$\lambda x + (1-\lambda) x' \in \mathcal{S}_b$。
因为$f(x) \leq b$且$f(x') \leq b$,所以

$$f(\lambda x + (1-\lambda) x') \leq \lambda f(x) + (1-\lambda) f(x') \leq b.$$
Expand All @@ -182,7 +192,7 @@ $$f(\lambda x + (1-\lambda) x') \leq \lambda f(x) + (1-\lambda) f(x') \leq b.$$
即对于所有$\mathbf{x} \in \mathbb{R}^n$,$\mathbf{x}^\top \mathbf{H} \mathbf{x} \geq 0$.
例如,函数$f(\mathbf{x}) = \frac{1}{2} \|\mathbf{x}\|^2$是凸的,因为$\nabla^2 f = \mathbf{1}$,即其导数是单位矩阵。

更正式的讲,$f$为凸函数,当且仅当任意二次可微一维函数$f: \mathbb{R}^n \rightarrow \mathbb{R}$是凸的。
更正式地讲,$f$为凸函数,当且仅当任意二次可微一维函数$f: \mathbb{R}^n \rightarrow \mathbb{R}$是凸的。
对于任意二次可微多维函数$f: \mathbb{R}^{n} \rightarrow \mathbb{R}$,
它是凸的当且仅当它的Hessian$\nabla^2f\succeq 0$。

Expand Down Expand Up @@ -221,8 +231,7 @@ $$g(z) \stackrel{\mathrm{def}}{=} f(z \mathbf{x} + (1-z) \mathbf{y}) \text{ whe
是凸的。

为了证明$f$的凸性意味着$g$是凸的,
我们可以证明,对于所有的$a,b,\lambda \in[0,1]$,
$0 \leq \lambda a + (1-\lambda) b \leq 1$。
我们可以证明,对于所有的$a,b,\lambda \in[0,1]$(这样有$0 \leq \lambda a + (1-\lambda) b \leq 1$),

$$\begin{aligned} &g(\lambda a + (1-\lambda) b)\\
=&f\left(\left(\lambda a + (1-\lambda) b\right)\mathbf{x} + \left(1-\lambda a - (1-\lambda) b\right)\mathbf{y} \right)\\
Expand All @@ -231,19 +240,19 @@ $$\begin{aligned} &g(\lambda a + (1-\lambda) b)\\
=& \lambda g(a) + (1-\lambda) g(b).
\end{aligned}$$

为了证明这一点,我们可以展示给你看
为了证明这一点,我们可以证明对
$[0,1]$中所有的$\lambda$:

$$\begin{aligned} &f(\lambda \mathbf{x} + (1-\lambda) \mathbf{y})\\
=&g(\lambda \cdot 1 + (1-\lambda) \cdot 0)\\
\leq& \lambda g(1) + (1-\lambda) g(0) \\
=& \lambda f(\mathbf{x}) + (1-\lambda) g(\mathbf{y}).
=& \lambda f(\mathbf{x}) + (1-\lambda) f(\mathbf{y}).
\end{aligned}$$

最后,利用上面的引理和一维情况的结果,我们可以证明多维情况:
多维函数$f:\mathbb{R}^n\rightarrow\mathbb{R}$是凸函数,当且仅当$g(z) \stackrel{\mathrm{def}}{=} f(z \mathbf{x} + (1-z) \mathbf{y})$是凸的,这里$z \in [0,1]$,$\mathbf{x}, \mathbf{y} \in \mathbb{R}^n$。
根据一维情况,
当且仅当对于所有$\mathbf{x}, \mathbf{y} \in \mathbb{R}^n$,
此条成立的条件为,当且仅当对于所有$\mathbf{x}, \mathbf{y} \in \mathbb{R}^n$,
$g'' = (\mathbf{x} - \mathbf{y})^\top \mathbf{H}(\mathbf{x} - \mathbf{y}) \geq 0$($\mathbf{H} \stackrel{\mathrm{def}}{=} \nabla^2f$)。
这相当于根据半正定矩阵的定义,$\mathbf{H} \succeq 0$。

Expand Down Expand Up @@ -297,12 +306,14 @@ $$L(\mathbf{x}, \alpha_1, \ldots, \alpha_n) = f(\mathbf{x}) + \sum_{i=1}^n \alph
### 投影

满足约束条件的另一种策略是*投影*(projections)。
同样,我们之前也遇到过,例如在处理梯度截断 :numref:`sec_rnn_scratch`时,我们确保梯度的长度以$\theta$为界限,通过
同样,我们之前也遇到过,例如在 :numref:`sec_rnn_scratch`中处理梯度截断时,我们通过

$$\mathbf{g} \leftarrow \mathbf{g} \cdot \mathrm{min}(1, \theta/\|\mathbf{g}\|),$$

$$\mathbf{g} \leftarrow \mathbf{g} \cdot \mathrm{min}(1, \theta/\|\mathbf{g}\|).$$
确保梯度的长度以$\theta$为界限。

这就是$\mathbf{g}$在半径为$\theta$的球上的*投影*(projection)。
更泛化的说,在凸集$\mathcal{X}$上的投影被定义为
更泛化地说,在凸集$\mathcal{X}$上的投影被定义为

$$\mathrm{Proj}_\mathcal{X}(\mathbf{x}) = \mathop{\mathrm{argmin}}_{\mathbf{x}' \in \mathcal{X}} \|\mathbf{x} - \mathbf{x}'\|.$$

Expand All @@ -319,7 +330,7 @@ $$\mathrm{Proj}_\mathcal{X}(\mathbf{x}) = \mathop{\mathrm{argmin}}_{\mathbf{x}'

凸投影的一个用途是计算稀疏权重向量。
在本例中,我们将权重向量投影到一个$L_1$的球上,
这是钻石例子的一个广义版本,在 :numref:`fig_projections`
这是 :numref:`fig_projections`中菱形例子的一个广义版本

## 小结

Expand Down
2 changes: 1 addition & 1 deletion chapter_optimization/convexity_origin.md
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ all $\lambda \in [0, 1]$
$$\begin{aligned} &f(\lambda \mathbf{x} + (1-\lambda) \mathbf{y})\\
=&g(\lambda \cdot 1 + (1-\lambda) \cdot 0)\\
\leq& \lambda g(1) + (1-\lambda) g(0) \\
=& \lambda f(\mathbf{x}) + (1-\lambda) g(\mathbf{y}).
=& \lambda f(\mathbf{x}) + (1-\lambda) f(\mathbf{y}).
\end{aligned}$$


Expand Down
11 changes: 6 additions & 5 deletions chapter_optimization/gd.md
Original file line number Diff line number Diff line change
Expand Up @@ -332,8 +332,9 @@ show_trace(newton(0.5), f)

### 收敛性分析

在此,我们以三次可微的目标凸函数$f$为例,分析它的牛顿法收敛速度。
假设它们的二阶导数不为零,即$f'' > 0$。
在此,我们以部分目标凸函数$f$为例,分析它们的牛顿法收敛速度。
这些目标凸函数三次可微,而且二阶导数不为零,即$f'' > 0$。
由于多变量情况下的证明是对以下一维参数情况证明的直接拓展,对我们理解这个问题不能提供更多帮助,因此我们省略了多变量情况的证明。

用$x^{(k)}$表示$x$在第$k^\mathrm{th}$次迭代时的值,
令$e^{(k)} \stackrel{\mathrm{def}}{=} x^{(k)} - x^*$表示$k^\mathrm{th}$迭代时与最优性的距离。
Expand All @@ -347,7 +348,7 @@ $$0 = f'(x^{(k)} - e^{(k)}) = f'(x^{(k)}) - e^{(k)} f''(x^{(k)}) + \frac{1}{2} (
$$e^{(k)} - \frac{f'(x^{(k)})}{f''(x^{(k)})} = \frac{1}{2} (e^{(k)})^2 \frac{f'''(\xi^{(k)})}{f''(x^{(k)})}.$$

回想之前的方程$x^{(k+1)} = x^{(k)} - f'(x^{(k)}) / f''(x^{(k)})$。
插入这个更新方程,取两边的绝对值,我们得到
代入这个更新方程,取两边的绝对值,我们得到

$$\left|e^{(k+1)}\right| = \frac{1}{2}(e^{(k)})^2 \frac{\left|f'''(\xi^{(k)})\right|}{f''(x^{(k)})}.$$

Expand All @@ -356,9 +357,9 @@ $$\left|e^{(k+1)}\right| = \frac{1}{2}(e^{(k)})^2 \frac{\left|f'''(\xi^{(k)})\ri

$$\left|e^{(k+1)}\right| \leq c (e^{(k)})^2.$$

另一方面,优化研究人员称之为“线性”收敛,$\left|e^{(k+1)}\right| \leq \alpha \left|e^{(k)}\right|$这样的条件称为“恒定”收敛速度。
另一方面,优化研究人员称之为“线性”收敛,而将$\left|e^{(k+1)}\right| \leq \alpha \left|e^{(k)}\right|$这样的条件称为“恒定”收敛速度。
请注意,我们无法估计整体收敛的速度,但是一旦我们接近极小值,收敛将变得非常快。
另外,这种分析要求$f$在高阶导数上表现良好,即确保$f$在变化他的值方面没有任何“超常”的特性。
另外,这种分析要求$f$在高阶导数上表现良好,即确保$f$在如何变化它的值方面没有任何“超常”的特性。

### 预处理

Expand Down
Loading

0 comments on commit daadaf8

Please sign in to comment.