Skip to content

Commit

Permalink
fix gls in section and chapter
Browse files Browse the repository at this point in the history
Former-commit-id: 9efdbbf
Former-commit-id: 5c48e563395dd6e9c940ca99d64908c297f7da52
  • Loading branch information
SwordYork committed Dec 9, 2016
1 parent 90d7aff commit 32dfdfe
Show file tree
Hide file tree
Showing 22 changed files with 263 additions and 657 deletions.
4 changes: 2 additions & 2 deletions Chapter1/introduction.tex
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ \subsection{神经网络的众多名称和命运变迁}
这个算法虽然已经黯然失色不再流行,但截至写书之时,仍是训练深度模型的主要方法。

在20世纪90年代,研究人员在使用\gls{NN}进行序列建模的方面取得了重要进展。
\citet{Hochreiter91}和\citet{Bengio1994ITNN}指出了建模长序列的一些根本数学难题,将在\ref{sec:the_challenge_of_longterm_dependencies}节中描述。
\citet{Hochreiter91}和\citet{Bengio1994ITNN}指出了建模长序列的一些根本数学难题,将在\ref{sec:the_challenge_of_long_term_dependencies}节中描述。
\citet{Hochreiter+Schmidhuber-1997}引入\gls{LSTM}(\glssymbol{LSTM})网络来解决这些难题。
如今,\glssymbol{LSTM}在许多序列建模任务中广泛应用,包括Google的许多自然语言处理任务。

Expand All @@ -398,7 +398,7 @@ \subsection{神经网络的众多名称和命运变迁}
这个问题可能是单纯的因为计算复杂性太高,而以当时可用的硬件难以进行足够的实验。

神经网络研究的第三次浪潮开始于2006年的突破。
\ENNAME{Geoffrey Hinton}表明名为\gls{DBN}的\gls{NN}可以使用一种称为贪婪逐层训练的策略进行有效地训练\citep{Hinton06},我们将在\ref{sec:greedy_layerwise_unsupervised_pretraining}中更详细地描述。
\ENNAME{Geoffrey Hinton}表明名为\gls{DBN}的\gls{NN}可以使用一种称为贪婪逐层训练的策略进行有效地训练\citep{Hinton06},我们将在\ref{sec:greedy_layer_wise_unsupervised_pretraining}中更详细地描述。
CIFAR附属的其他研究小组很快表明,同样的策略可以被用来训练许多其他类型的深度网络\citep{Bengio+Lecun-chapter2007-small,ranzato-07},并能系统地帮助提高在测试样例上的泛化能力。
\gls{NN}研究的这一次浪潮普及了``\gls{DL}''这一术语的使用,强调研究人员现在可以训练以前不可能训练的更深的神经网络,并把注意力集中于深度的理论意义\citep{Bengio+Lecun-chapter2007,Delalleau+Bengio-2011-small,Pascanu-et-al-ICLR2014,Montufar-et-al-NIPS2014}。
此时,深度\gls{NN}已经优于与之竞争的基于其他\gls{ML}技术以及手工设计函数的\glssymbol{AI}系统。
Expand Down
30 changes: 15 additions & 15 deletions Chapter10/sequence_modeling_rnn.tex
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ \chapter{序列建模:循环和递归网络}

% -- 364 --

\section{\gls{unfolding}\gls{computational_graph}}
\section{\glsentrytext{unfolding}\glsentrytext{computational_graph}}
\label{sec:unfolding_computational_graphs}
\gls{computational_graph}是一种形式化一组计算结构的方式,如那些涉及将输入和参数映射到输出和损失的计算。
综合的介绍请参考\ref{sec:computational_graphs}。
Expand Down Expand Up @@ -177,7 +177,7 @@ \section{\gls{unfolding}\gls{computational_graph}}



\section{\gls{RNN}}
\section{\glsentrytext{RNN}}
\label{sec:recurrent_neural_networks}
基于\ref{sec:unfolding_computational_graphs}节中的图展开和\gls{parameter_sharing}的思想,我们可以设计各种\gls{RNN}。
\begin{figure}[!htb]
Expand Down Expand Up @@ -262,7 +262,7 @@ \section{\gls{RNN}}

% -- 371 --

\subsection{\gls{teacher_forcing}和输出\gls{recurrent_network}}
\subsection{\glsentrytext{teacher_forcing}和输出\glsentrytext{recurrent_network}}
\label{sec:teacher_forcing_and_networks_with_output_recurrence}
仅在一个\gls{time_step}的输出和下一个\gls{time_step}的\gls{hidden_unit}间存在循环连接的网络(示于图\ref{fig:chap10_output_recurrence_rnn})确实没有那么强大(因为缺乏隐藏到隐藏的循环连接)。
例如,它不能模拟通用图灵机。
Expand Down Expand Up @@ -311,7 +311,7 @@ \subsection{\gls{teacher_forcing}和输出\gls{recurrent_network}}
这种方法利用了\gls{curriculum_learning}策略,逐步使用更多生成值作为输入。


\subsection{计算\gls{RNN}的\gls{gradient}}
\subsection{计算\glsentrytext{RNN}的\glsentrytext{gradient}}
\label{sec:computing_the_gradient_in_a_recurrent_neural_network}
计算\gls{RNN}的\gls{gradient}是容易的。
可以简单地将\ref{sec:general_back_propagation}节中的推广\gls{backward_propagation}算法应用于展开的\gls{computational_graph}。
Expand Down Expand Up @@ -377,7 +377,7 @@ \subsection{计算\gls{RNN}的\gls{gradient}}

% -- 375 --

\subsection{作为\gls{directed_graphical_model}的\gls{recurrent_network}}
\subsection{作为\glsentrytext{directed_graphical_model}的\glsentrytext{recurrent_network}}
\label{sec:recurrent_networks_as_directed_graphical_models}
目前为止,我们接触的\gls{recurrent_network}例子中损失$L^{(t)}$是训练目标$\Vy^{(t)}$和输出$\Vo^{(t)}$之间的\gls{cross_entropy}。
\gls{feedforward_network}类似,原则上\gls{recurrent_network}几乎可以使用任何损失。
Expand Down Expand Up @@ -648,7 +648,7 @@ \section{基于编码-解码的序列到序列架构}

% -- 386 --

\section{深度\gls{recurrent_network}}
\section{深度\glsentrytext{recurrent_network}}
\label{sec:deep_recurrent_networks}
大多数\glssymbol{RNN}中的计算可以分解成三块参数及其相关的变换:
\begin{enumerate}
Expand Down Expand Up @@ -719,7 +719,7 @@ \section{递归神经网络}
由每个节点执行的计算无须是传统的人工神经计算(所有输入的仿射变换后跟一个单调非线性)。
例如,\cite{Socher-et-al-EMNLP2013}提出用张量运算和双线性形式,在这之前人们已经发现当概念是由连续向量(嵌入)表示时,这种方式有利于建模概念之间的关系\citep{Weston+Bengio+Usunier-2010,Bordes-et-al-AISTATS2012-small}。

\section{\gls{long_term_dependency}的挑战}
\section{\glsentrytext{long_term_dependency}的挑战}
\label{sec:the_challenge_of_long_term_dependencies}
学习\gls{recurrent_network}\gls{long_term_dependency}的数学挑战在\ref{sec:long_term_dependencies}中引入。
根本问题是,经过许多阶段传播后的\gls{gradient}倾向于消失(大部分时间)或爆炸(很少,但对优化过程影响很大)。
Expand Down Expand Up @@ -789,7 +789,7 @@ \section{\gls{long_term_dependency}的挑战}
本章的其余部分将讨论目前已经提出的降低学习\gls{long_term_dependency}(在某些情况下,允许一个\glssymbol{RNN}学习横跨数百步的依赖)难度的不同方法,但学习\gls{long_term_dependency}的问题仍是\gls{DL}中的一个主要挑战。


\section{\gls{ESN}}
\section{\glsentrytext{ESN}}
\label{sec:echo_state_networks}
$\Vh^{(t-1)}$$\Vh^{(t)}$的循环权重映射以及从$\Vx^{(t)}$$\Vh^{(t)}$的输入权重映射是一个\gls{recurrent_network}中最难学习的参数。
研究者\citep{Jaeger-NIPS2002,Maass-et-al-2002,Jaeger+Haas-2004}提出避免这种困难的方法是设定循环\gls{hidden_unit},使其能很好地捕捉过去输入历史,并且\emph{只学习输出权重}。
Expand Down Expand Up @@ -859,14 +859,14 @@ \section{\gls{ESN}}
在这种设定下,结合\ref{sec:parameter_initialization_strategies}中稀疏初始化的方案,设置$1.2$的初始\gls{spectral_radius}表现不错。


\section{\gls{leaky_unit}和其他多时间尺度的策略}
\section{\glsentrytext{leaky_unit}和其他多时间尺度的策略}
\label{sec:leaky_units_and_other_strategiesfor_multiple_time_scales}
处理\gls{long_term_dependency}的一种方法是设计工作在多个时间尺度的模型,使其某些部分在细粒度时间尺度上操作并能处理小细节,而其他部分在粗时间尺度上操作并能把遥远过去的信息更有效地传递过来。
存在多种同时构建粗细时间尺度的策略。
这些策略包括在时间轴增加\gls{skip_connection},``\gls{leaky_unit}''使用不同时间常数整合信号,并去除一些用于建模细粒度时间尺度的连接。


\subsection{时间维度的\gls{skip_connection}}
\subsection{时间维度的\glsentrytext{skip_connection}}
\label{sec:adding_skip_connections_through_time}
增加从遥远过去的变量到目前变量的直接连接是得到粗时间尺度的一种方法。
使用这样\gls{skip_connection}的想法可以追溯到\cite{Lin-ieeetnn96},紧接是向\gls{feedforward_network}引入延迟的想法\citep{Lang+Hinton88}。
Expand All @@ -881,7 +881,7 @@ \subsection{时间维度的\gls{skip_connection}}

% -- 395 --

\subsection{\gls{leaky_unit}和一系列不同时间尺度}
\subsection{\glsentrytext{leaky_unit}和一系列不同时间尺度}
\label{sec:leaky_units_and_a_spectrum_of_different_time_scales}
获得导数乘积接近1的另一方式是设置\emph{线性}自连接单元,并且这些连接的权重接近1。

Expand Down Expand Up @@ -920,7 +920,7 @@ \subsection{删除连接}
这是\cite{ElHihi+Bengio-nips8}和\cite{Koutnik-et-al-ICML2014}的方法。
它在一些基准数据集上表现不错。

\section{\gls{LSTM}和其他\gls{gated_rnn}}
\section{\glsentrytext{LSTM}和其他\glsentrytext{gated_rnn}}
\label{sec:the_long_short_term_memory_and_other_gated_rnns}
本文撰写之时,实际应用中最有效的序列模型称为\firstgls{gated_rnn}。
包括基于\firstgls{LSTM}和基于\firstgls{gated_recurrent_unit}的网络。
Expand Down Expand Up @@ -991,7 +991,7 @@ \subsection{\glssymbol{LSTM}}
\glssymbol{LSTM}网络比简单的循环架构更易于学习\gls{long_term_dependency},先是用于测试\gls{long_term_dependency}学习能力的人工数据集\citep{Bengio-trnn94,Hochreiter+Schmidhuber-1997,chapter-gradient-flow-2001},然后是在具有挑战性的序列处理任务上获得最先进的表现(\citep{Graves-book2012,Graves-arxiv2013,Sutskever-et-al-NIPS2014})。
\glssymbol{LSTM}的变体和替代也已经被研究和使用,会在下文进行讨论。

\subsection{其他\gls{gated_rnn}}
\subsection{其他\glsentrytext{gated_rnn}}
\label{sec:other_gated_rnns}
\glssymbol{LSTM}架构中哪些部分是真正必须的?
还可以设计哪些其他成功架构允许网络动态地控制的时间尺度和不同单元的遗忘行为?
Expand Down Expand Up @@ -1026,7 +1026,7 @@ \subsection{其他\gls{gated_rnn}}
\gls{forget_gate},而\cite{Jozefowicz-et-al-ICML2015}发现向\glssymbol{LSTM}\gls{forget_gate}加入1的\gls{bias_aff}(由\cite{Gers-et-al-2000}提倡)能让\glssymbol{LSTM}变得与已探索的最佳变种一样健壮。


\section{优化\gls{long_term_dependency}}
\section{优化\glsentrytext{long_term_dependency}}
\label{sec:optimization_for_long_term_dependencies}
\ref{sec:long_term_dependencies}和\ref{sec:the_challenge_of_long_term_dependencies}节已经描述过在许多\gls{time_step}上优化\glssymbol{RNN}时发生的\gls{gradient}消失和爆炸的问题。

Expand All @@ -1042,7 +1042,7 @@ \section{优化\gls{long_term_dependency}}

% -- 401 --

\subsection{\gls{clipping_gradient}}
\subsection{\glsentrytext{clipping_gradient}}
\label{sec:clipping_gradients}
\ref{sec:cliffs_and_exploding_gradients}节讨论,强非线性函数如由许多\gls{time_step}计算的\gls{recurrent_network}往往倾向于非常大或非常小幅度的\gls{gradient}。
如图|||c|||和图\ref{fig:chap10_cliff_clipping_color}所示,我们可以看到,\gls{objective_function}(作为参数的函数)有一个``地形''伴随一个``悬崖'':宽且相当平坦区域被\gls{objective_function}变化快的小区域隔开,形成了一种悬崖。
Expand Down
14 changes: 7 additions & 7 deletions Chapter11/practical_methodology.tex
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ \chapter{实用方法}

我们现在描述这个过程中的每一个步骤。

\section{\gls{performance_metrics}}
\section{\glsentrytext{performance_metrics}}
\label{sec:performance_metrics}
确定你的目标,即用什么\gls{error_metric},是必要的第一步,因为你的\gls{error_metric}将指导你接下来的所有行动。
你也应该知道目标性能大概在什么级别。
Expand Down Expand Up @@ -207,7 +207,7 @@ \section{选择超参数}
自动选择超参数算法大大减少了解这些想法的需要,但它们往往需要更高的计算成本。

\subsection{手动调整超参数}
\label{subsec:manual_hyperparameter_tuning}
\label{sec:manual_hyperparameter_tuning}
要手动设置超参数,我们必须了解超参数,训练误差,\gls{generalization_error}和计算资源(内存和运行时间)之间的关系。
这意味着建立第\ref{chap:machine_learning_basics}章关于学习算法有效容量基本思想的坚实基础。

Expand Down Expand Up @@ -289,7 +289,7 @@ \subsection{手动调整超参数}
% -- 418 --

\subsection{自动超参数优化算法}
\label{subsec:automatic_hyperparameter_optimization_algorithms}
\label{sec:automatic_hyperparameter_optimization_algorithms}
理想的学习算法应该是只需要一个数据集,然后输出学习出的函数,而并不需要手动调整超参数。
一些流行的学习算法,如逻辑回归和支持向量机,流行的部分原因是只有一到两个需要调整的超参数,它们也能表现出不错的性能。
有时神经网络可以在只有少数需要调整的超参数时表现良好,但往往调整几十或者更多超参数会受益更明显。
Expand All @@ -304,7 +304,7 @@ \subsection{自动超参数优化算法}
然而,这些次级超参数通常很容易选择,这是说,同一次级超参数能够很多问题上实现良好的性能。

\subsection{格点搜索}
\label{subsec:grid_search}
\label{sec:grid_search}
当有三个或更少的超参数时,常见的超参数搜索方法是\firstgls{grid_search}。
对于每个超参数,用户选择一个较小的有限值集去探索。
然后,格点搜索算法训练为超参数笛卡尔乘积后的每个特定联合值训练模型。
Expand Down Expand Up @@ -344,7 +344,7 @@ \subsection{格点搜索}


\subsection{随机搜索}
\label{subsec:random_search}
\label{sec:random_search}
幸运的是,有一个格点搜索的替代方法,并且其编程简单,使用更方便,能更快地收敛到超参数的良好值:随机搜索\citep{Bergstra+Bengio-2012-small}。

随机搜索过程如下。
Expand All @@ -370,7 +370,7 @@ \subsection{随机搜索}
% -- 422 --

\subsection{基于模型的超参数优化}
\label{subsec:model_based_hyperparameter_optimization}
\label{sec:model_based_hyperparameter_optimization}
良好超参数的搜索可以转换为一个优化问题。
决策变量是超参数。
优化的目标是使用这些超参数训练结果的验证集误差。
Expand Down Expand Up @@ -405,7 +405,7 @@ \section{调试技巧}

另一个难点是,大部分\gls{ML}模型有多个自适应的部分。
如果一个部分失效了,其他部分仍然可以自适应,并获得大致可接受的性能。
例如,假设我们正在训练多层神经网络,其中参数为权重$\MW$\gls{bias}$\Vb$
例如,假设我们正在训练多层神经网络,其中参数为权重$\MW$\gls{bias_aff}$\Vb$
进一步假设,我们单独手动实现了每个参数的梯度下降规则。
而我们在偏置更新时犯了一个错误:
\begin{equation}
Expand Down
Loading

0 comments on commit 32dfdfe

Please sign in to comment.