Skip to content

Commit

Permalink
merge
Browse files Browse the repository at this point in the history
Former-commit-id: aa5daf02f72810cea75a5a9b8f4c8b5a596defa9
  • Loading branch information
SwordYork committed Dec 14, 2016
2 parents f260a52 + dd5c8ed commit 82505e5
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 17 deletions.
4 changes: 2 additions & 2 deletions Chapter6/deep_feedforward_networks.tex
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ \section{实例:学习XOR}
先前,为了描述线性回归模型,我们使用权重向量和一个标量的偏置参数来描述一个从输入向量到输出标量的仿射变换。
现在,因为我们描述的是向量$\bm{x}$到向量$\bm{h}$的仿射变换,所以我们需要一整个向量的偏置参数。
激活函数$g$通常选择一个对每个元素分别智能作用的函数,有$h_i =g(\bm{x}^\top \bm{W}_{:, i} + c_i)$
在现代神经网络中,默认的推荐是使用由激活函数$g(z)=\max\{0, x\}$定义的\firstgls{ReLU}或者称为\glssymbol{ReLU}\citep{Jarrett-ICCV2009-small,Nair-2010-small,Glorot+al-AI-2011-small},如图\ref{fig:chap6_relu_color}所示。
在现代神经网络中,默认的推荐是使用由激活函数$g(z)=\max\{0, z\}$定义的\firstgls{ReLU}或者称为\glssymbol{ReLU}\citep{Jarrett-ICCV2009-small,Nair-2010-small,Glorot+al-AI-2011-small},如图\ref{fig:chap6_relu_color}所示。
% fig 6.3
\begin{figure}[!htb]
\ifOpenSource
Expand Down Expand Up @@ -668,7 +668,7 @@ \subsubsection{其他的输出类型}
通过平方运算的梯度可能在零附近消失,这使得学习被平方的参数变得困难。
无论我们使用的是标准差,方差还是精度,我们必须确保\gls{gaussian_distribution}的协方差矩阵是正定的。
因为精度矩阵的特征值是协方差矩阵特征值的倒数,所以这等价于确保精度矩阵是正定的。
如果我们使用对角矩阵,或者是一个常数乘以单位矩阵,那么我们需要对模型输出强加的唯一条件是它的元素都为正。
如果我们使用对角矩阵,或者是一个常数乘以单位矩阵\footnote{译者注:这里原文是``If we use a diagonal matrix, or a scalar times the diagonal matrix...''``如果我们使用对角矩阵,或者是一个标量乘以对角矩阵...'',但一个标量乘以对角矩阵和对角矩阵没区别,结合上下文可以看出,这里原作者误把``identity''写成了``diagonal matrix'',因此这里采用``常数乘以单位矩阵''的译法。},那么我们需要对模型输出强加的唯一条件是它的元素都为正。
如果我们假设$\bm{a}$是用于确定对角精度的模型的原始激活,那么可以用softplus 函数来获得正的精度向量:$\bm{\beta}=\bm{\zeta}(\bm{a})$
这种相同的策略对于方差或标准差同样适用,也适用于常数乘以单位阵的情况。

Expand Down
28 changes: 14 additions & 14 deletions Chapter9/convolutional_networks.tex
Original file line number Diff line number Diff line change
Expand Up @@ -383,46 +383,46 @@ \section{卷积与\glsentrytext{pooling}作为一种无限强的先验}
\section{基本卷积函数的变体}
\label{sec:variants_of_the_basic_convolution_function}

当在神经网络的上下文中讨论卷积时,我们通常不会像数学文献中那样特指标准的离散卷积运算
当在神经网络的上下文中讨论卷积时,我们通常不是特指数学文献中使用的那种标准的离散卷积运算
实际应用中的函数略微有些不同。
这里我们详细讨论一下这些差异,并且对神经网络中用到的函数的一些重要性质进行重点说明。

首先,当我们提到神经网络中的卷积时,我们通常是指一次特定的运算,而这种运算包含了多个卷积应用的并行处理
首先,当我们提到神经网络中的卷积时,我们通常是指一次特定的运算,而这种运算包含了并行地使用多个卷积
这是因为带有单个核的卷积只能提取一种类型的特征,尽管它作用在多个空间位置上。
我们通常希望神经网络的一层能够在多个位置提取多种类型的特征。

另外,输入通常也不仅仅是实值的方格,而是由一系列向量值的观测数据构成的方格
另外,输入通常也不仅仅是实值的网格,而是由一系列向量值的观测数据构成的网格
例如,一幅彩色图像在每一个像素点都会有红绿蓝三种颜色的亮度。
在多层的\gls{CNN}中,第二层的输入是第一层的输出,通常包含多个卷积作用后的输出
当用于图像时,我们通常把卷积的输入输出都看作是3维的张量,其中一个索引用于标明不同的通道(红绿蓝),另外两个索引标明在这个通道上的空间坐标
在多层的\gls{CNN}中,第二层的输入是第一层的输出,通常在每个位置包含多个卷积的输出
当用于图像时,我们通常把卷积的输入输出都看作是3维的张量,其中一个索引用于标明不同的通道(例如红绿蓝),另外两个索引标明在每个通道上的空间坐标
软件实现通常使用批处理模式,所以它们会使用4维的张量,第四维索引用于标明批处理中不同的实例,但我们为简明起见这里忽略批处理索引。

因为\gls{CNN}通常使用多通道的卷积,它们基于的线性运算并不保证一定是可交换的,即使使用了核翻转也是如此。
这些多通道的运算只有当其中的每个运算的输出和输入具有相同的通道数时才是可交换的。

假定我们有一个4维的核张量$\TSK$,它的每一个元素是$\TEK_{i,j,k,l}$表示输出的在通道$i$中的一个单元和输入的在通道$j$中的一个单元的连接强度,并且在输出单元和输入单元之间有一个$k$ $l$ 列的偏置。
假定我们的输入是观测数据$\TSV$,它的每一个元素是$\TEV_{i,j,k}$表示在通道$i$中第$j$行第$k$列的值。
假定我们有一个4维的核张量$\TSK$,它的每一个元素是$\TEK_{i,j,k,l}$表示输出的处于通道$i$中的一个单元和输入的处于通道$j$中的一个单元的连接强度,并且在输出单元和输入单元之间有一个$k$$l$列的偏置。
假定我们的输入由观测数据$\TSV$组成,它的每一个元素是$\TEV_{i,j,k}$表示处在通道$i$中第$j$行第$k$列的值。
假定我们的输出$\TSZ$和输入$\TSV$具有相同的形式。
如果输出$\TSZ$是通过对$\TSK$$\TSV$进行卷积而不涉及翻转$\TSK$得到的,那么
\begin{equation}
\TEZ_{i,j,k} = \sum_{l,m,n} \TEV_{l, j+m-1, k+n-1} \TEK_{i,l,m,n}
\TEZ_{i,j,k} = \sum_{l,m,n} \TEV_{l, j+m-1, k+n-1} \TEK_{i,l,m,n},
\end{equation}
这里对所有的$l$$m$$n$进行求和也是对所有有效的张量索引的值进行求和
在线性代数中,向量中的索引通常从1开始,这就是上述公式中$-1$的由来。
这里对所有的$l$$m$$n$进行求和是对所有(在求和式中)有效的张量索引的值进行求和
在线性代数中,向量的索引通常从1开始,这就是上述公式中$-1$的由来。
但是像C或Python这类编程语言索引通常从0开始,这使得上述公式可以更加简洁。

% -- 337 --

我们有时会希望跳过核中的一些位置来降低计算的开销(相应的代价是提取特征没有先前那么好了)。
我们可以把这一过程看作是对卷积函数输出的下采样。
我们可以把这一过程看作是对卷积函数输出的下采样(downsampling)
如果我们只想对输出的每个方向上的$s$个像素进行采样,那么我们可以定义一个下采样卷积函数$c$使得
\begin{equation}
\TEZ_{i,j,k} = c(\TSK, \TSV, s)_{i,j,k} = \sum_{l,m,n} [\TEV_{l,(j-1)\times s+m, (k-1)\times s +n,}
\TEK_{i,l,m,n}].
\label{eq: 9.8}
\end{equation}
我们把$s$称为下采样卷积的\firstgls{stride}。
当然也可以对每个方向定义不同的步幅
当然也可以对每个移动方向定义不同的步幅
\ref{fig:chap9_stride_conv}演示了一个实例。
% fig 9.12
\begin{figure}[!htb]
Expand All @@ -435,10 +435,10 @@ \section{基本卷积函数的变体}
\label{fig:chap9_stride_conv}
\end{figure}

在任何\gls{CNN}的应用中都有一个重要性质,那就是能够隐含地对输入$\TSV$用零进行填充使得它加宽
在任何\gls{CNN}的应用中都有一个重要性质,那就是能够隐含地对输入$\TSV$用零进行填充(pad)使得它加宽
如果没有这个性质,表示的宽度在每一层就会缩减,缩减的幅度是比核少一个像素这么多。
对输入进行零填充允许我们对核的宽度和输出的大小进行独立的控制。
如果没有零填充,我们就被迫面临网络空间长度的快速缩减和选择一个小型的核的两难的局面——这两种情境都会极大得限制网络的表示能力。
如果没有零填充,我们就被迫面临二选一的局面,要么选择网络空间宽度的快速缩减,要么选择一个小型的核——这两种情境都会极大得限制网络的表示能力。
\ref{fig:chap9_zero_pad_shrink}给出了一个例子。
% fig 9.13
\begin{figure}[!htb]
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ TODO

如果我们采用了大家的建议,我们会列在这。具体见[acknowledgments_github.md](https://github.com/exacity/deeplearningbook-chinese/blob/master/acknowledgments_github.md)

@tttwwy @tankeco @fairmiracle @GageGao @huangpingchun @MaHongP @acgtyrant @yanhuibin315 @Buttonwood @titicacafz @weijy026a @RuiZhang1993 @zymiboxpay @xingkongliang @oisc @tielei @yuduowu @Qingmu @xiaomingabc
@tttwwy @tankeco @fairmiracle @GageGao @huangpingchun @MaHongP @acgtyrant @yanhuibin315 @Buttonwood @titicacafz @weijy026a @RuiZhang1993 @zymiboxpay @xingkongliang @oisc @tielei @yuduowu @Qingmu @HC-2016 @xiaomingabc



Expand Down
2 changes: 2 additions & 0 deletions acknowledgments_github.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,15 @@

2016年12月12日
-------------
- @fairmiracle ==> Chapter6 公式错误
- @huangpingchun ==> Chapter7 "模型平均"重复



2016年12月13日
-------------
- @huangpingchun ==> inference的统一翻译
- @HC-2016 ==> Chapter6 单位阵还是对角阵问题,详见[issue](https://github.com/exacity/deeplearningbook-chinese/issues/19#issuecomment-266683442).
- @xiaomingabc ==> Chapter1 病句问题


Expand Down

0 comments on commit 82505e5

Please sign in to comment.