Skip to content

Commit

Permalink
sync with epubit
Browse files Browse the repository at this point in the history
  • Loading branch information
SwordYork committed Nov 8, 2017
1 parent aafc62b commit 98daf6b
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 23 deletions.
2 changes: 1 addition & 1 deletion Chapter4/numerical_computation.tex
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ \section{基于梯度的优化方法}

针对具有多维输入的函数,我们需要用到\firstgls{partial_derivatives}的概念。
\gls{partial_derivatives} $\frac{\partial}{\partial \Sx_i}f(\Vx)$衡量点$\Vx$处只有$x_i$增加时$f(\Vx)$如何变化。
\firstgls{gradient}是相对一个向量求导的\gls{derivative}:$f$的导数是包含所有\gls{partial_derivatives}的向量,记为$\nabla_{\Vx} f(\Vx)$
\firstgls{gradient}是相对一个向量求导的\gls{derivative}:$f$\gls{gradient}是包含所有\gls{partial_derivatives}的向量,记为$\nabla_{\Vx} f(\Vx)$
\gls{gradient}的第$i$个元素是$f$关于$x_i$\gls{partial_derivatives}。
在多维情况下,\gls{critical_points}是\gls{gradient}中所有元素都为零的点。

Expand Down
2 changes: 1 addition & 1 deletion Chapter5/machine_learning_basics.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1053,7 +1053,7 @@ \section{\glsentrytext{maximum_likelihood_estimation}}
在软件中,我们通常将两者都称为最小化\gls{cost_function}。
因此最大化似然变成了最小化负对数似然(NLL),或者等价的是最小化交叉熵。
将最大化似然看作最小化~\gls{KL}的视角在这个情况下是有帮助的,因为已知~\gls{KL}最小值是零。
$\Vx$取实数时,负对数似然是负值
$\Vx$取实数时,负对数似然可以是负值

\subsection{条件对数似然和\glsentrytext{mean_squared_error}}
\label{sec:conditional_log_likelihood_and_mean_squared_error}
Expand Down
2 changes: 1 addition & 1 deletion docs/_posts/2016-12-04-Chapter4_numerical_computation.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ $ f^\prime(\Sx)=0 $的点称为临界点或驻点。

针对具有多维输入的函数,我们需要用到偏导数的概念。
偏导数 $\frac{\partial}{\partial \Sx_i}f(\Vx)$衡量点$\Vx$处只有$x_i$增加时$f(\Vx)$如何变化。
梯度是相对一个向量求导的导数:$f$的导数是包含所有偏导数的向量,记为$\nabla_{\Vx} f(\Vx)$。
梯度是相对一个向量求导的导数:$f$的梯度是包含所有偏导数的向量,记为$\nabla_{\Vx} f(\Vx)$。
梯度的第$i$个元素是$f$关于$x_i$的偏导数。
在多维情况下,临界点是梯度中所有元素都为零的点。

Expand Down
2 changes: 1 addition & 1 deletion docs/_posts/2016-12-05-Chapter5_machine_learning_basics.md
Original file line number Diff line number Diff line change
Expand Up @@ -1055,7 +1055,7 @@ KL散度被定义为
在软件中,我们通常将两者都称为最小化代价函数。
因此最大化似然变成了最小化负对数似然(NLL),或者等价的是最小化交叉熵。
将最大化似然看作最小化~KL散度的视角在这个情况下是有帮助的,因为已知~KL散度最小值是零。
当$\Vx$取实数时,负对数似然是负值
当$\Vx$取实数时,负对数似然可以是负值


## 条件对数似然和均方误差
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ share: false

除了权重空间对称性,很多神经网络还有其他导致不可辨认的原因。
例如,在任意整流线性网络或者~maxout~网络中,
我们可以将传入权重和偏置扩大$\alpha$倍,然后将传出权重扩大$\frac{1}{\alpha}$倍,而保持模型等价。
我们可以将传入权重和偏置放缩$\alpha$倍,然后将传出权重放缩$\frac{1}{\alpha}$倍,而保持模型等价。
这意味着,如果代价函数不包括如权重衰减这种直接依赖于权重而非模型输出的项,那么整流线性网络或者~maxout~网络的每一个局部极小点都在等价的局部极小值的$(m\times n)$维双曲线上。
<!-- % -- 277 mid -->

Expand Down Expand Up @@ -935,11 +935,11 @@ SGD\,应用于凸问题时,$k$步迭代后的额外误差量级是$O(\frac{1}{


这解释了动量更新的基本形式,但具体什么是力呢?
力正比于代价函数的负梯度$-\nabla_{\Vtheta} J(\Vtheta)$。
一个力正比于代价函数的负梯度$-\nabla_{\Vtheta} J(\Vtheta)$。
该力推动粒子沿着代价函数表面下坡的方向移动。
梯度下降算法基于每个梯度简单地更新一步,而使用动量算法的牛顿方案则使用该力改变粒子的速度。
我们可以将粒子视作在冰面上滑行的冰球。
每当它沿着表面最陡的部分下降时,它会累积继续在该方向上滑行的速度,直到其开始向上滑动为止
每当它沿着表面最陡的部分下降时,它会沿该方向加速滑行,直到开始向上滑动为止
<!-- % 291 head -->


Expand Down Expand Up @@ -1154,7 +1154,7 @@ Nesterov 动量中,梯度计算在施加当前速度之后。
这说明设置偏置为应用于训练集上输出边缘统计的激活函数的逆。
例如,如果输出是类上的分布,且该分布是高度偏态分布,第$i$类的边缘概率由某个向量$\Vc$的第$i$个元素给定,那么我们可以通过求解方程$\text{softmax}(\Vb)=\Vc$来设置偏置向量$\Vb$。
这不仅适用于分类器,也适用于我们将在第三部分遇到的模型,例如自编码器和玻尔兹曼机。
这些模型拥有输出类似于输入数据$\Vx$的网络层,非常有助于初始化这些层的偏置以匹配$\Vx$上的边缘分布
这些模型拥有输出类似于输入数据$\Vx$的网络层,初始化这些层的偏置以匹配$\Vx$上的边缘分布将有助于模型学习
<!-- % 297 mid -->


Expand Down Expand Up @@ -1449,9 +1449,9 @@ Hessian\,矩阵中元素数目是参数数量的平方,因此,如果参数
在本节的剩余部分,我们将讨论一些试图保持牛顿法优点,同时避免计算障碍的替代算法。


## 共轭梯度
## 共轭梯度法

共轭梯度是一种通过迭代下降的共轭方向以有效避免\,Hessian\,矩阵求逆计算的方法。
共轭梯度法是一种通过迭代下降的共轭方向以有效避免\,Hessian\,矩阵求逆计算的方法。
这种方法的灵感来自于对最速下降方法弱点的仔细研究(详细信息请查看\sec?),其中线搜索迭代地用于与梯度相关的方向上。
\fig?说明了该方法在二次碗型目标中如何表现的,是一个相当低效的来回往复,锯齿形模式。
这是因为每一个由梯度给定的线搜索方向,都保证正交于上一个线搜索方向。
Expand Down Expand Up @@ -1481,7 +1481,7 @@ Hessian\,矩阵中元素数目是参数数量的平方,因此,如果参数
这产生了锯齿形的过程。
在当前梯度方向下降到极小值,我们必须重新最小化之前梯度方向上的目标。
因此,通过遵循每次线搜索结束时的梯度,我们在某种程度上撤销了在之前线搜索的方向上取得的进展。
共轭梯度试图解决这个问题
共轭梯度法试图解决这个问题

在共轭梯度法中,我们寻求一个和先前线搜索方向共轭的搜索方向,即它不会撤销该方向上的进展。
在训练迭代$t$时,下一步的搜索方向$\Vd_t$的形式如下:
Expand Down Expand Up @@ -1515,11 +1515,11 @@ Hessian\,矩阵中元素数目是参数数量的平方,因此,如果参数
\end{enumerate}
对于二次曲面而言,共轭方向确保梯度沿着前一方向大小不变。
因此,我们在前一方向上仍然是极小值。
其结果是,在$k$-维参数空间中,共轭梯度只需要至多$k$次线搜索就能达到极小值。
共轭梯度算法如\alg?所示。
其结果是,在$k$-维参数空间中,共轭梯度法只需要至多$k$次线搜索就能达到极小值。
共轭梯度法如\alg?所示。

\begin{algorithm}[ht]
\caption{共轭梯度方法}
\caption{共轭梯度法}
\begin{algorithmic}
\REQUIRE 初始参数 $\Vtheta_{0}$
\REQUIRE 包含$m$个样本的训练集
Expand All @@ -1531,7 +1531,7 @@ Hessian\,矩阵中元素数目是参数数量的平方,因此,如果参数
\STATE 计算梯度:$\Vg_{t} \leftarrow
\frac{1}{m}\nabla_{\Vtheta} \sum_i L(f(\Vx^{(i)};\Vtheta),\Vy^{(i)})$
\STATE 计算 $\beta_{t} = \frac{(\Vg_{t}-\Vg_{t-1})^\top \Vg_{t}}{\Vg_{t-1}^\top \Vg_{t-1}}$ (Polak-Ribi\`{e}re)
\STATE (非线性共轭梯度:视情况可重置$\beta_{t}$为零,
\STATE (非线性共轭梯度法:视情况可重置$\beta_{t}$为零,
例如 $t$是常数$k$的倍数时,如 $k=5$)
\STATE 计算搜索方向: $\Vrho_{t} = -\Vg_{t} + \beta_{t} \Vrho_{t-1}$
\STATE 执行线搜索寻找:$\epsilon^{*} = \arg\!\min_{\epsilon}
Expand All @@ -1544,24 +1544,24 @@ Hessian\,矩阵中元素数目是参数数量的平方,因此,如果参数
\end{algorithm}


\paragraph{非线性共轭梯度:}
\paragraph{非线性共轭梯度法:}
目前,我们已经讨论了用于二次目标函数的共轭梯度法。
当然,本章我们主要关注于探索训练神经网络和其他相关深度学习模型的优化方法,其对应的目标函数比二次函数复杂得多。
或许令人惊讶,共轭梯度法在这种情况下仍然是适用的,尽管需要作一些修改。
没有目标是二次的保证,共轭方向也不再保证在以前方向上的目标仍是极小值。
其结果是,\textbf{非线性共轭梯度}\,算法会包括一些偶尔的重设,共轭梯度法沿未修改的梯度重启线搜索。
其结果是,\textbf{非线性共轭梯度法}\,算法会包括一些偶尔的重设,共轭梯度法沿未修改的梯度重启线搜索。

<!-- % -- 306 -- -->

实践者报告在实践中使用非线性共轭梯度算法训练神经网络是合理的,尽管在开始非线性共轭梯度前使用随机梯度下降迭代若干步来初始化效果更好
另外,尽管(非线性)共轭梯度算法传统上作为批方法,小批量版本已经成功用于训练神经网络~{cite?}。
针对神经网路的共轭梯度应用早已被提出,例如缩放的共轭梯度算法{cite?}。
实践者报告在实践中使用非线性共轭梯度法训练神经网络是合理的,尽管在开始非线性共轭梯度法前使用随机梯度下降迭代若干步来初始化效果更好
另外,尽管(非线性)共轭梯度法传统上作为批方法,小批量版本已经成功用于训练神经网络~{cite?}。
针对神经网路的共轭梯度法应用早已被提出,例如缩放的共轭梯度法{cite?}。


## BFGS

\textbf{Broyden-Fletcher-Goldfarb-Shanno}(\textbf{BFGS})算法具有牛顿法的一些优点,但没有牛顿法的计算负担。
在这方面,BFGS\,和CG很像
在这方面,BFGS\,和共轭梯度法很像
然而,BFGS\,使用了一个更直接的方法近似牛顿更新。回顾牛顿更新由下式给出
\begin{equation}
\Vtheta^* = \Vtheta_0 - \MH^{-1} \nabla_{\Vtheta} J(\Vtheta_0),
Expand All @@ -1582,8 +1582,8 @@ BFGS\,近似的说明和推导出现在很多关于优化的教科书中,包
\end{equation}

和共轭梯度法相似,BFGS\,算法迭代一系列线搜索,其方向含二阶信息。
然而和共轭梯度不同的是,该方法的成功并不严重依赖于线搜索寻找该方向上和真正极小值很近的一点。
因此,相比于共轭梯度,BFGS\,的优点是其花费较少的时间改进每个线搜索。
然而和共轭梯度法不同的是,该方法的成功并不严重依赖于线搜索寻找该方向上和真正极小值很近的一点。
因此,相比于共轭梯度法,BFGS\,的优点是其花费较少的时间改进每个线搜索。
在另一方面,BFGS\,算法必须存储\,Hessian\,逆矩阵$\MM$,需要$O(n^2)$的存储空间,使\,BFGS\,不适用于大多数具有百万级参数的现代深度学习模型。

\paragraph{存储受限的\,BFGS(或\,L-BFGS)}
Expand Down

0 comments on commit 98daf6b

Please sign in to comment.