Skip to content

Commit

Permalink
adjust refer to
Browse files Browse the repository at this point in the history
  • Loading branch information
futianfan committed Mar 4, 2017
1 parent 31b82e4 commit 14a8781
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 22 deletions.
4 changes: 2 additions & 2 deletions Chapter12/applications.tex
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ \subsection{GPU 实现}
然而在\glssymbol{GPU}中,大多数可写内存位置并不会被高速缓存,所以计算某个值两次往往会比计算一次然后从内存中读取更快。
\glssymbol{GPU}代码是天生多线程的,不同线程之间必须仔细协调好。
例如,如果能够把数据\firstgls{coalesced}起来,那么涉及内存的操作一般会更快。
当几个线程同时需要读/写一个值的时候,像这样的\gls{coalesced}会作为一次内存操作出现。
当几个线程同时需要读/写一个值时,像这样的\gls{coalesced}会作为一次内存操作出现。
不同的\glssymbol{GPU}可能采用不同的\gls{coalesced}读/写数据的方式。
通常来说,如果在$n$个线程中,线程$i$访问的是第$i+j$处的内存,其中$j$$2$的某个幂的倍数,那么内存操作就易于\gls{coalesced}。
具体的设定在不同的\glssymbol{GPU}型号中有所区别。
Expand Down Expand Up @@ -237,7 +237,7 @@ \subsection{\glsentrytext{dynamic_structure}}
类似的,我们可以使用称为\firstgls{gater}的神经网络来选择在给定当前输入的情况下将使用几个\firstgls{expert_network}中的哪一个来计算输出。
这个想法的第一个版本被称为\firstgls{mixture_of_experts}\citep{Nowlan90,Jacobs-nc91},其中\gls{gater}为每个专家输出一个概率或权重(通过非线性的\gls{softmax}获得),并且最终输出由各个专家输出的加权组合获得。
在这种情况下,使用\gls{gater}不会降低计算成本,但如果每个样本的\gls{gater}选择单个专家,我们就会获得一个特殊的\firstgls{hard_mixture_of_experts}~\citep{collobert:2001:rr01-12,collobert:2002},这可以加速推断和训练。
\gls{gater}决策的数量很小的时候,这个策略效果会很好,因为它不是组合的。
\gls{gater}决策的数量很小时,这个策略效果会很好,因为它不是组合的。
但是当我们想要选择不同的单元或参数子集时,不可能使用``软开关'',因为它需要枚举(和计算输出)所有的\gls{gater}配置。
为了解决这个问题,许多工作探索了几种方法来训练组合的\gls{gater}。
\citet{bengio-arxiv13-condcomp}提出使用\gls{gater}概率梯度的若干估计器,而\citet{Bacon-et-al-RLDM2015,BengioE-et-al-arXiv2015}使用\gls{RL}技术(\firstgls{policy_gradient})来学习一种条件的\gls{dropout}形式(作用于\gls{hidden_unit}块),减少了实际的计算成本,而不会对近似的质量产生负面影响。
Expand Down
2 changes: 1 addition & 1 deletion Chapter13/linear_factor_models.tex
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ \section{\glsentrytext{PPCA}和\glsentrytext{FA}}


这个\firstgls{PPCA}模型利用了这样一种观察现象:除了一些微小残余的\firstgls{reconstruction_error}(至多为$\sigma^2$),数据中的大多数变化可以由\gls{latent_variable} $\Vh$描述。
通过\citet{tipping99mixtures}的研究我们可以发现,当$\sigma \xrightarrow{} 0$的时候\gls{PPCA}退化为\glssymbol{PCA}。
通过\citet{tipping99mixtures}的研究我们可以发现,当$\sigma \xrightarrow{} 0$\gls{PPCA}退化为\glssymbol{PCA}。
在这种情况下,给定$\Vx$情况下$\Vh$的条件期望等于将$\Vx - \Vb$投影到$\MW$$d$列所生成的空间上,与\glssymbol{PCA}一样。
% 481

Expand Down
22 changes: 11 additions & 11 deletions Chapter16/structured_probabilistic_modelling.tex
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ \section{非结构化建模的挑战}
分类问题可以把这样一个来自高维分布的数据作为输入,然后用一个类别的标签来概括它——这个标签可以是照片中是什么物品,一段语音中说的是哪个单词,也可以是一段文档描述的是哪个话题。
分类的这个过程丢弃了输入数据中的大部分信息,然后给出了一个单个值的输出(或者是一个输出值的概率分布)。
这个分类器通常可以忽略输入数据的很多部分。
举个例子,当我们识别一个照片中是哪一个物品的时候,我们通常可以忽略图片的背景。
举个例子,当我们识别一个照片中是哪一个物品时,我们通常可以忽略图片的背景。
% 550 ok


Expand Down Expand Up @@ -156,7 +156,7 @@ \section{非结构化建模的挑战}

例如,我们想要对接力跑步比赛中一个队伍完成比赛的时间进行建模。
假设这个队伍有三名成员:Alice, Bob和Carol。
在比赛开始的时候,Alice拿着接力棒,开始跑第一段距离。
在比赛开始时,Alice拿着接力棒,开始跑第一段距离。
在跑完她的路程以后,她把棒递给了Bob。
然后Bob开始跑,再把棒给Carol,Carol跑最后一棒。
我们可以用连续变量来建模他们每个人完成的时间。
Expand All @@ -177,7 +177,7 @@ \section{非结构化建模的挑战}

\gls{structured_probabilistic_models}为随机变量之间的直接作用提供了一个正式的建模框架。
这种方式大大减少了模型的参数个数以致于模型只需要更少的数据来进行有效的估计。
这些更轻便的模型在模型存储,模型推断以及从模型中采样的时候有着更小的计算开销
这些更轻便的模型在模型存储,模型推断以及从模型中采样时有着更小的计算开销
% 554 head


Expand Down Expand Up @@ -313,15 +313,15 @@ \subsection{\glsentrytext{undirected_model}}
% 556 end


\gls{directed_model}显然适用于当存在一个很明显的理由来描述每一个箭头的时候
\gls{directed_model}显然适用于当存在一个很明显的理由来描述每一个箭头时
\gls{directed_model}中,经常存在我们理解的具有因果关系以及因果关系有明确方向的情况下。
接力赛的例子就是一个这样的情况。
之前运动员的表现影响了后面运动员的完成时间,而后面运动员却不会影响前面运动员的完成时间。
% 557 head


然而并不是所有情况的相互作用都有一个明确的方向关系。
当相互的作用并没有本质性的指向,或者是明确的双向相互作用的时候,使用\gls{undirected_model}更加合适。
当相互的作用并没有本质性的指向,或者是明确的双向相互作用时,使用\gls{undirected_model}更加合适。
% 557


Expand Down Expand Up @@ -434,7 +434,7 @@ \subsection{\glsentrytext{partition_function}}
\begin{align}
Z = \int \tilde{p}(\RVx)d\RVx.
\end{align}
当函数$\phi$固定的时候,我们可以把$Z$当成是一个常数。
当函数$\phi$固定时,我们可以把$Z$当成是一个常数。
值得注意的是如果函数$\phi$带有参数时,那么$Z$是这些参数的一个函数。
在相关文献中为了节省空间忽略控制$Z$的变量而直接写$Z$是一个常用的方式。
归一化常数$Z$被称作是\gls{partition_function},一个从统计物理学中借鉴的术语。
Expand All @@ -452,7 +452,7 @@ \subsection{\glsentrytext{partition_function}}
% 559 end
%在设计\gls{undirected_model}时我们必须牢记在心的一个要点是设置一些\gls{factor}使得$Z$不存在这样的方法也是有可能的。
在设计\gls{undirected_model}时我们必须牢记在心的一个要点是设定一些使得$Z$不存在的\gls{factor}也是有可能的。
当模型中的一些变量是连续的,且在$\tilde{p}$在其定义域上的积分发散的时候这种情况就会发生
当模型中的一些变量是连续的,且在$\tilde{p}$在其定义域上的积分发散时这种情况就会发生
例如, 当我们需要对一个单独的标量变量$\RSx\in\SetR$建模,并且这个包含一个点的\gls{clique_potential}定义为$\phi(x) = x^2$时。
在这种情况下,
\begin{align}
Expand Down Expand Up @@ -650,7 +650,7 @@ \subsection{\glsentrytext{separation}和\glsentrytext{dseparation}}
但是图不能说明当$\RSa = 0$$\RSb$$\RSc$不是独立的。
% 564

一般来说,当独立性不存在的时候,图不会显示独立性。
一般来说,当独立性不存在时,图不会显示独立性。
然而,图可能无法显示存在的独立性。
% 564

Expand Down Expand Up @@ -722,7 +722,7 @@ \subsection{\glsentrytext{separation}和\glsentrytext{dseparation}}
\item 给定$\RSc$的情况下$\RSa$$\RSe$\gls{dseparation}的。
\item 给定$\RSc$的情况下$\RSd$$\RSe$\gls{dseparation}的。
\end{itemize}
我们还可以发现当我们观察到一些变量的时候,一些变量不再是\gls{dseparation}的:
我们还可以发现当我们观察到一些变量时,一些变量不再是\gls{dseparation}的:
\begin{itemize}
\item 给定$\RSc$的情况下$\RSa$$\RSb$不是\gls{dseparation}的。
\item 给定$\RSd$的情况下$\RSa$$\RSb$不是\gls{dseparation}的。
Expand Down Expand Up @@ -959,7 +959,7 @@ \section{从\glsentrytext{graphical_models}中采样}
理论上最简单的方法是\firstgls{gibbs_sampling}。
假设我们在一个$n$维向量的随机变量$\RVx$上有一个\gls{graphical_models}。
我们迭代地访问每个变量$x_i$,在给定其他变量的条件下从$p(\RSx_i \mid \RSx_{-i})$中抽样。
由于\gls{graphical_models}的\gls{separation}性质,抽取$x_i$的时候我们可以等价地仅对$\RSx_i$的邻居条件化。
由于\gls{graphical_models}的\gls{separation}性质,抽取$x_i$时我们可以等价地仅对$\RSx_i$的邻居条件化。
不幸的是,在我们遍历\gls{graphical_models}一次并采样所有$n$个变量之后,我们仍然无法得到一个来自$p(\RVx)$的客观样本。
相反,我们必须重复该过程并使用它们邻居的更新值对所有$n$个变量重新取样。
在多次重复之后,该过程渐近地收敛到正确的目标分布。
Expand Down Expand Up @@ -1129,7 +1129,7 @@ \section{结构化概率模型的\glsentrytext{DL}方法}
传统的\gls{graphical_models}具有非常少的连接,并且每个变量的连接选择可以单独设计。
模型结构的设计与推断算法的选择紧密相关。
\gls{graphical_models}的传统方法通常旨在保持精确推断的可追踪性。
当这个约束太强的时候,我们可以采用一种流行的被称为是\firstgls{loopy_belief_propagation}的\gls{approximate_inference}算法。
当这个约束太强时,我们可以采用一种流行的被称为是\firstgls{loopy_belief_propagation}的\gls{approximate_inference}算法。
这两种方法通常在稀疏连通图上有很好的效果。
相比之下,在\gls{DL}中使用的模型倾向于将每个可见单元$\RSv_i$连接到非常多的\gls{hidden_unit} $\RSh_j$上,从而使得$\RVh$可以获得一个$\RSv_i$\gls{distributed_representation}(也可能是其他几个可观察变量)。
\gls{distributed_representation}具有许多优点,但是从\gls{graphical_models}和计算复杂性的观点来看,
Expand Down
16 changes: 8 additions & 8 deletions Chapter17/monte_carlo_methods.tex
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ \section{\glsentrytext{importance_sampling}}
在这里$Z$表示归一化常数,选择适当的$Z$使得$q^*(\Vx)$之和或者积分为$1$
一个好的\gls{importance_sampling}分布会把更多的权重放在被积函数较大的地方。
事实上,当$f(\Vx)$的正负符号不变时,$\Var[\hat{s}_{q^*}]=0$, 这意味着当使用最优的$q$分布时,\emph{只需要采一个样本就足够了}。
当然,这仅仅是因为计算$q^*$的时候已经解决了所有的问题
当然,这仅仅是因为计算$q^*$时已经解决了所有的问题
所以这种只需要采一个样本的方法往往是实践中无法实现的。
% 584

Expand All @@ -140,7 +140,7 @@ \section{\glsentrytext{importance_sampling}}


另一种方法是采用\firstgls{biased_importance_sampling},这种方法有一个优势,即不需要归一化的$p$$q$分布。
在处理离散变量的时候\gls{biased_importance_sampling}估计可以表示为
在处理离散变量时\gls{biased_importance_sampling}估计可以表示为
\begin{align}
\label{eqn:bis}
\hat{s}_{\text{BIS}} & = \frac{\sum_{i=1}^{n} \frac{p(\Vx^{(i)})}{q(\Vx^{(i)})} f(\Vx^{(i)})}{\sum_{i=1}^{n}\frac{p(\Vx^{(i)})}{q(\Vx^{(i)})}} \\
Expand All @@ -157,9 +157,9 @@ \section{\glsentrytext{importance_sampling}}
我们回过头来看看方程~\eqref{eqn:variance_of_is}会发现,如果存在一个$q$使得$\frac{p(\Vx)f(\Vx)}{q(\Vx)}$很大,那么这个估计的方差也会很大。
$q(\Vx)$很小,而$f(\Vx)$$p(\Vx)$都较大并且无法抵消$q$时,这种情况会非常明显。
$q$分布经常会取一些简单常用的分布使得我们能够从$q$分布中容易地采样。
$\Vx$是高维数据的时候$q$分布的简单性使得它很难于$p$或者$p\vert f\vert$相匹配。
$q(\Vx^{(i)})\gg p(\Vx^{(i)}) \vert f(\Vx^{(i)})\vert $的时候\gls{importance_sampling}采到了很多无用的样本(权值之和很小或趋于零)。
另一方面,当$q(\Vx^{(i)})\ll p(\Vx^{(i)}) \vert f(\Vx^{(i)})\vert $的时候, 样本会很少被采到,其对应的权值却会非常大。
$\Vx$是高维数据时$q$分布的简单性使得它很难于$p$或者$p\vert f\vert$相匹配。
$q(\Vx^{(i)})\gg p(\Vx^{(i)}) \vert f(\Vx^{(i)})\vert $\gls{importance_sampling}采到了很多无用的样本(权值之和很小或趋于零)。
另一方面,当$q(\Vx^{(i)})\ll p(\Vx^{(i)}) \vert f(\Vx^{(i)})\vert $, 样本会很少被采到,其对应的权值却会非常大。
正因为后一个事件是很少发生的,这些样本很难被采到,通常使得对$s$的估计出现了典型的\gls{underestimation},很难被整体的\gls{overestimation}抵消。
这样的不均匀情况在高维数据屡见不鲜,因为在高维度分布中联合分布的动态域通常非常大。
% 585 end
Expand All @@ -169,7 +169,7 @@ \section{\glsentrytext{importance_sampling}}
尽管存在上述的风险,但是\gls{importance_sampling}及其变种在\gls{ML}的应用中仍然扮演着重要的角色,包括\gls{DL}算法。
比方说,\gls{importance_sampling}被应用于加速训练具有大规模词汇的神经网络\gls{language_model}的过程中(见\secref{sec:importance_sampling_chap12})或者其他有着大量输出结点的\gls{NN}中。
此外,还可以看到\gls{importance_sampling}应用于估计\gls{partition_function}(一个概率分布的归一化常数)的过程中(详见\secref{sec:estimating_the_partition_function})以及在深度有向图模型比如\gls{VAE}中估计似然函数的对数(详见\secref{sec:variational_autoencoders})。
采用\gls{SGD}训练模型参数的时候\gls{importance_sampling}可以用来改进对\gls{cost_function}梯度的估计,尤其是针对于分类器模型的训练中一小部分错误分类样本产生的\gls{cost_function}。
采用\gls{SGD}训练模型参数时\gls{importance_sampling}可以用来改进对\gls{cost_function}梯度的估计,尤其是针对于分类器模型的训练中一小部分错误分类样本产生的\gls{cost_function}。
在这种情况下更加频繁地采集这些困难的样本可以降低梯度估计的方差\citep{Hinton06}。
% 586

Expand Down Expand Up @@ -423,7 +423,7 @@ \section{不同的\glsentrytext{mode}之间的\glsentrytext{mixing}挑战}
% 592

通过寻找一些高度依赖变量的组以及分块同时更新块(组)中的变量,这个问题有时候可以被解决的。
然而不幸的是,当依赖关系很复杂的时候,从这些组中采样的过程从计算角度上说是难以处理的。
然而不幸的是,当依赖关系很复杂时,从这些组中采样的过程从计算角度上说是难以处理的。
归根结底,\gls{markov_chain}最初就是被提出来解决这个问题,即从大量变量中采样的问题。
% 592

Expand Down Expand Up @@ -513,7 +513,7 @@ \subsection{不同\gls{mode}之间通过\glsentrytext{tempering}来\glsentrytext
\subsection{深度也许会有助于\glsentrytext{mixing}}
\label{sec:depth_may_help_mixing}

当我们从\gls{latent_variable}模型$p(\Vh,\Vx)$中采样的时候,我们可以发现如果$p(\Vh\mid \Vx)$$\Vx$编码得非常好,那么从$p(\Vx \mid \Vh)$中采样的时候,并不会太大地改变$\Vx$,那么\gls{mixing}结果会很糟糕。
当我们从\gls{latent_variable}模型$p(\Vh,\Vx)$中采样时,我们可以发现如果$p(\Vh\mid \Vx)$$\Vx$编码得非常好,那么从$p(\Vx \mid \Vh)$中采样时,并不会太大地改变$\Vx$,那么\gls{mixing}结果会很糟糕。
解决这个问题的一种方法是使得$\Vh$成为一种将$\Vx$编码为$\Vh$的深度表达,从而使得\gls{markov_chain}在$\Vh$空间中更容易\gls{mixing}。
<bad> 在许多\gls{representation_learning}算法诸如\gls{AE}和\glssymbol{RBM}中,$\Vh$的边缘分布相比于关于$\Vx$的原始数据分布,通常表现为更加均匀、更趋近于\gls{unimodal}。
值得指出的是,这些方法往往利用所有可用的表达空间并尽量减小\gls{reconstruction_error}。
Expand Down

0 comments on commit 14a8781

Please sign in to comment.