From b0dda30dbf7039611aaf809e79ffdc68aace6fde Mon Sep 17 00:00:00 2001 From: swordyork Date: Thu, 3 Aug 2017 16:41:48 +0800 Subject: [PATCH] fix sentence --- Chapter5/machine_learning_basics.tex | 2 +- Chapter7/regularization.tex | 2 +- .../optimization_for_training_deep_models.tex | 2 +- .../2016-12-02-Chapter2_linear_algebra.md | 60 +++++++++---------- ...-12-05-Chapter5_machine_learning_basics.md | 2 +- .../2016-12-07-Chapter7_regularization.md | 2 +- ...8_optimization_for_training_deep_models.md | 4 +- .../2016-12-12-Chapter12_applications.md | 2 +- 8 files changed, 38 insertions(+), 38 deletions(-) diff --git a/Chapter5/machine_learning_basics.tex b/Chapter5/machine_learning_basics.tex index e5c7021..e86dea2 100644 --- a/Chapter5/machine_learning_basics.tex +++ b/Chapter5/machine_learning_basics.tex @@ -1229,7 +1229,7 @@ \section{贝叶斯统计} \right) \\ & \propto \exp \left( - \frac{1}{2}\left( + -\frac{1}{2}\left( -2\Vy^\Tsp\MX\Vw + \Vw^\Tsp\MX^\Tsp\MX\Vw + \Vw^\Tsp\VLambda_0^{-1}\Vw - 2\Vmu_0^\Tsp \VLambda_0^{-1}\Vw \right) diff --git a/Chapter7/regularization.tex b/Chapter7/regularization.tex index 555aa23..6a649f3 100644 --- a/Chapter7/regularization.tex +++ b/Chapter7/regularization.tex @@ -459,7 +459,7 @@ \section{噪声鲁棒性} 在一般情况下,注入噪声远比简单地收缩参数强大,特别是噪声被添加到\gls{hidden_unit}时会更加强大。 向\gls{hidden_unit}添加噪声是值得单独讨论重要的话题;在\secref{sec:dropout}所述~\gls{dropout}~算法是这种做法的主要发展方向。 -另一种\gls{regularization}模型的噪声使用方式是将其加到的权重。 +另一种\gls{regularization}模型的噪声使用方式是将其加到权重。 这项技术主要用于\gls{RNN}~\citep{JimGilesHorne1996,Graves-2011}。 这可以被解释为关于权重的贝叶斯\gls{inference}的随机实现。 贝叶斯学习过程将权重视为不确定的,并且可以通过概率分布表示这种不确定性。 diff --git a/Chapter8/optimization_for_training_deep_models.tex b/Chapter8/optimization_for_training_deep_models.tex index ce6ab1a..ea7c64e 100644 --- a/Chapter8/optimization_for_training_deep_models.tex +++ b/Chapter8/optimization_for_training_deep_models.tex @@ -1852,7 +1852,7 @@ \subsection{设计有助于优化的模型} 这些``辅助头''被训练来执行和网络顶层主要输出相同的任务,以确保底层网络能够接受较大的梯度。 当训练完成时,辅助头可能被丢弃。 这是之前小节介绍到的\gls{pretraining}策略的替代方法。 -以这种方式,我们可以在一个阶段联合训练所有层,而不改变架构,使得中间层(特别是低层)能够通过更短的路径得到一些有些如何更新的有用信息。 +以这种方式,我们可以在一个阶段联合训练所有层,而不改变架构,使得中间层(特别是低层)能够通过更短的路径得到一些如何更新的有用信息。 这些信息为底层提供了误差信号。 % -- 317 -- diff --git a/docs/_posts/2016-12-02-Chapter2_linear_algebra.md b/docs/_posts/2016-12-02-Chapter2_linear_algebra.md index e3fe908..5cb0a70 100644 --- a/docs/_posts/2016-12-02-Chapter2_linear_algebra.md +++ b/docs/_posts/2016-12-02-Chapter2_linear_algebra.md @@ -4,16 +4,16 @@ layout: post share: false --- -线性代数作为数学的一个分支,广泛用于科学和工程中。 +线性代数作为数学的一个分支,广泛应用于科学和工程中。 然而,因为线性代数主要是面向连续数学,而非离散数学,所以很多计算机科学家很少接触它。 掌握好线性代数对于理解和从事机器学习算法相关工作是很有必要的,尤其对于深度学习算法而言。 -因此,在我们开始介绍深度学习之前,我们集中探讨一些必备的线性代数知识。 +因此,在开始介绍深度学习之前,我们集中探讨一些必备的线性代数知识。 -如果你已经很熟悉线性代数,那么你可以轻松地跳过本章。 +如果你已经很熟悉线性代数,那么可以轻松地跳过本章。 如果你已经了解这些概念,但是需要一份索引表来回顾一些重要公式,那么我们推荐\emph{The Matrix Cookbook} {cite?}。 -如果你没有接触过线性代数,那么本章将告诉你本书所需的线性代数知识,不过我们仍然非常建议你参考其他专注于讲解线性代数的文献,例如~{shilov1977linear}。 -最后,本章跳过了很多重要但是对于理解深度学习非必需的线性代数知识。 +如果你没有接触过线性代数,那么本章将告诉你本书所需的线性代数知识,不过我们仍然非常建议你参考其他专门讲解线性代数的文献,例如~{shilov1977linear}。 +最后,本章略去了很多重要但是对于理解深度学习非必需的线性代数知识。 @@ -39,7 +39,7 @@ share: false 向量$\Vx$的第一个元素是$\Sx_1$,第二个元素是$\Sx_2$,等等。 我们也会注明存储在向量中的元素是什么类型的。 如果每个元素都属于$\SetR$,并且该向量有$\Sn$个元素,那么该向量属于实数集$\SetR$的$\Sn$次笛卡尔乘积构成的集合,记为$\SetR^n$。 - 当我们需要明确表示向量中的元素时,我们会将元素排列成一个方括号包围的纵列: + 当需要明确表示向量中的元素时,我们会将元素排列成一个方括号包围的纵列: \begin{equation} \Vx=\begin{bmatrix} \Sx_1 \\ \Sx_2 \\ @@ -55,7 +55,7 @@ share: false 们用符号-表示集合的补集中的索引。 比如$\Vx_{-1}$表示$\Vx$中除$\Sx_1$外的所有元素,$\Vx_{-S}$表示$\Vx$中除$\Sx_1$,$\Sx_3$,$\Sx_6$外所有元素构成的向量。 -+ 矩阵:矩阵是一个二维数组,其中的每一个元素被两个索引而非一个所确定。 ++ 矩阵:矩阵是一个二维数组,其中的每一个元素被两个索引(而非一个)所确定。 我们通常会赋予矩阵粗体的大写变量名称,比如$\MA$。 如果一个实数矩阵高度为$m$,宽度为$n$,那么我们说$\MA\in \SetR^{m\times n}$。 我们在表示矩阵中的元素时,通常以不加粗的斜体形式使用其名称,索引用逗号间隔。 @@ -64,7 +64,7 @@ share: false 比如,$\MA_{i,:}$表示$\MA$中垂直坐标$i$上的一横排元素。 这也被称为$\MA$的第$i$~行。 同样地,$\MA_{:,i}$表示$\MA$的第$i$~列。 - 当我们需要明确表示矩阵中的元素时,我们将它们写在用方括号包围起来的数组中: + 当我们需要明确表示矩阵中的元素时,我们将它们写在用方括号括起来的数组中: \begin{equation} \begin{bmatrix} A_{1,1} & A_{1,2} \\ @@ -78,7 +78,7 @@ share: false + 张量:在某些情况下,我们会讨论坐标超过两维的数组。 - 一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们将其称之为张量。 + 一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们称之为张量。 我们使用字体$\TSA$来表示张量"A"。 张量$\TSA$中坐标为$(i,j,k)$的元素记作$\TEA_{i,j,k}$。 @@ -92,7 +92,7 @@ share: false (\MA^\top)_{i,j}= \SA_{j,i}. \end{equation} -向量可以看作是只有一列的矩阵。 +向量可以看作只有一列的矩阵。 对应地,向量的转置可以看作是只有一行的矩阵。 有时,我们通过将向量元素作为行矩阵写在文本行中,然后使用转置操作将其变为标准的列向量,来定义一个向量,比如$\Vx=[\Sx_1, \Sx_2, \Sx_3]^\top$. @@ -106,7 +106,7 @@ share: false \else \centerline{\includegraphics{Chapter2/figures/transpose}} \fi -\caption{矩阵的转置可以看成是以主对角线为轴的一个镜像。} +\caption{矩阵的转置可以看成以主对角线为轴的一个镜像。} \end{figure} @@ -236,7 +236,7 @@ share: false \forall \Vx \in \SetR^{\Sn}, \MI_{\Sn} \Vx = \Vx. \end{equation} 单位矩阵的结构很简单:所有沿主对角线的元素都是$1$,而所有其他位置的元素都是$0$。 -如\fig?所示的例子。 +如\fig?所示。 \begin{figure}[!htb] \ifOpenSource \centerline{\includegraphics{figure.pdf}} @@ -293,7 +293,7 @@ share: false (其中$\alpha$取任意实数)也是该方程组的解。 -为了分析方程有多少个解,我们可以将$\MA$的列向量看作是从原点(元素都是零的向量)出发的不同方向,确定有多少种方法可以到达向量$\Vb$。 +为了分析方程有多少个解,我们可以将$\MA$的列向量看作从原点(元素都是零的向量)出发的不同方向,确定有多少种方法可以到达向量$\Vb$。 在这个观点下,向量$\Vx$中的每个元素表示我们应该沿着这些方向走多远,即$\Sx_{\Si}$表示我们需要沿着第$\Si$个向量的方向走多远: \begin{equation} \MA \Vx = \sum_i x_i \MA_{:,i}. @@ -332,12 +332,12 @@ share: false 正式地说,这种冗余被称为线性相关。 -如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量被称为线性无关。 -如果某个向量是一组向量中某些向量的线性组合,那么我们将这个向量加入到这组向量后不会增加这组向量的生成子空间。 +如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量称为线性无关。 +如果某个向量是一组向量中某些向量的线性组合,那么我们将这个向量加入这组向量后不会增加这组向量的生成子空间。 这意味着,如果一个矩阵的列空间涵盖整个$\SetR^m$,那么该矩阵必须包含至少一组$m$个线性无关的向量。 这是\eqn?对于每一个向量$\Vb$的取值都有解的充分必要条件。 值得注意的是,这个条件是说该向量集恰好有$m$个线性无关的列向量,而不是至少$m$个。 -不存在一个$m$维向量的集合具有多于$m$个彼此线性不相关的列向量,但是一个有多于$m$个列向量的矩阵却有可能拥有不止一个大小为$m$的线性无关向量集。 +不存在一个$m$维向量的集合具有多于$m$个彼此线性不相关的列向量,但是一个有多于$m$个列向量的矩阵有可能拥有不止一个大小为$m$的线性无关向量集。 要想使矩阵可逆,我们还需要保证\eqn?对于每一个$\Vb$值至多有一个解。 @@ -500,8 +500,8 @@ $L^1$范数可以简化如下: \end{equation} 所以正交矩阵受到关注是因为求逆计算代价小。 我们需要注意正交矩阵的定义。 -反直觉地,正交矩阵的行向量不仅是正交的,还是标准正交的。 -对于行向量或列向量互相正交但不是标准正交的矩阵没有对应的专有术语。 +违反直觉的是,正交矩阵的行向量不仅是正交的,还是标准正交的。 +对于行向量或列向量互相正交但不是标准正交的矩阵,没有对应的专有术语。 @@ -510,7 +510,7 @@ $L^1$范数可以简化如下: # 特征分解 -许多数学对象可以通过将它们分解成多个组成部分,或者找到它们的一些属性而更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式产生的。 +许多数学对象可以通过将它们分解成多个组成部分或者找到它们的一些属性而更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式产生的。 @@ -553,15 +553,15 @@ $L^1$范数可以简化如下: 不是每一个矩阵都可以分解成特征值和特征向量。 -在某些情况下,特征分解存在,但是会涉及到复数,而非实数。 -幸运的是,在本书中我们通常只需要分解一类有简单分解的矩阵。 -具体地,每个实对称矩阵都可以分解成实特征向量和实特征值: +在某些情况下,特征分解存在,但是会涉及复数而非实数。 +幸运的是,在本书中,我们通常只需要分解一类有简单分解的矩阵。 +具体来讲,每个实对称矩阵都可以分解成实特征向量和实特征值: \begin{equation} \MA = \MQ \VLambda \MQ^\top. \end{equation} 其中$\MQ$是$\MA$的特征向量组成的正交矩阵,$\VLambda$是对角矩阵。 特征值$\Lambda_{i,i}$对应的特征向量是矩阵$\MQ$的第$i$列,记作$\MQ_{:,i}$。 -因为$\MQ$是正交矩阵,我们可以将$\MA$看作是沿方向$\Vv^{(i)}$延展$\lambda_i$倍的空间。 +因为$\MQ$是正交矩阵,我们可以将$\MA$看作沿方向$\Vv^{(i)}$延展$\lambda_i$倍的空间。 如\fig?所示的例子。 @@ -634,7 +634,7 @@ $L^1$范数可以简化如下: 这些矩阵中的每一个经定义后都拥有特殊的结构。 -矩阵$\MU$和$\MV$都被定义为正交矩阵,而矩阵$\MD$被定义为对角矩阵。 +矩阵$\MU$和$\MV$都定义为正交矩阵,而矩阵$\MD$定义为对角矩阵。 注意,矩阵$\MD$不一定是方阵。 @@ -708,7 +708,7 @@ Moore-Penrose 伪逆使我们在这类问题上取得了一定的进展。 \Tr(\MA)= \sum_i \MA_{i,i}. \end{equation} 迹运算因为很多原因而有用。 -若不使用求和符号,有些矩阵运算很难描述,而通过矩阵乘法和迹运算符号,可以清楚地表示。 +若不使用求和符号,有些矩阵运算很难描述,而通过矩阵乘法和迹运算符号可以清楚地表示。 例如,迹运算提供了另一种描述矩阵Frobenius 范数的方式: \begin{equation} \norm{A}_F = \sqrt{\text{Tr}(\MA \MA^\top)}. @@ -861,7 +861,7 @@ PCA~由我们选择的解码函数而定。 接下来,我们需要挑选编码矩阵$\MD$。 要做到这一点,我们回顾最小化输入和重构之间$L^2$距离的这个想法。 -因为我们用相同的矩阵$\MD$对所有点进行解码,我们不能再孤立地看待每个点。 +因为用相同的矩阵$\MD$对所有点进行解码,我们不能再孤立地看待每个点。 反之,我们必须最小化所有维数和所有点上的误差矩阵的\,Frobenius 范数: \begin{equation} \MD^* = \underset{\MD}{\arg\min} \sqrt{\sum_{i,j}\left( \Vx_j^{(i)} - r(\Vx^{(i)})_j\right)^2} \text{ subject to } \MD^\top\MD = \MI_l. @@ -880,12 +880,12 @@ PCA~由我们选择的解码函数而定。 上述公式是直接代入得到的,但不是文体表述最舒服的方式。 在上述公式中,我们将标量$\Vd^\top\Vx^{(i)}$放在向量$\Vd$的右边。 将该标量放在左边的写法更为传统。 -于是我们通常写作如下: +于是我们通常写作 \begin{equation} \Vd^* = \underset{\Vd}{\arg\min} \sum_i \norm{\Vx^{(i)} - \Vd^\top \Vx^{(i)}\Vd}_2^2 \text{ subject to } \norm{\Vd}_2 = 1, \end{equation} -或者,考虑到标量的转置和自身相等,我们也可以写作: +或者,考虑到标量的转置和自身相等,我们也可以写作 \begin{equation} \Vd^* = \underset{\Vd}{\arg\min} \sum_i \norm{\Vx^{(i)} - \Vx^{(i)\top}\Vd\Vd}_2^2 \text{ subject to } \norm{\Vd}_2 = 1. @@ -955,7 +955,7 @@ PCA~由我们选择的解码函数而定。 这个优化问题可以通过特征分解来求解。 -具体地,最优的$\Vd$是$\MX^\top\MX$最大特征值对应的特征向量。 +具体来讲,最优的$\Vd$是$\MX^\top\MX$最大特征值对应的特征向量。 以上推导特定于$l=1$的情况, 仅得到了第一个主成分。 @@ -964,7 +964,7 @@ PCA~由我们选择的解码函数而定。 线性代数是理解深度学习所必须掌握的基础数学学科之一。 -另一门在机器学习中无处不在的重要数学学科是概率论,我们将在下章探讨。 +另一门在机器学习中无处不在的重要数学学科是概率论,我们将在下一章探讨。 diff --git a/docs/_posts/2016-12-05-Chapter5_machine_learning_basics.md b/docs/_posts/2016-12-05-Chapter5_machine_learning_basics.md index 5e69c3a..ea0c56f 100644 --- a/docs/_posts/2016-12-05-Chapter5_machine_learning_basics.md +++ b/docs/_posts/2016-12-05-Chapter5_machine_learning_basics.md @@ -1233,7 +1233,7 @@ $\VLambda_0=\text{diag}(\Vlambda_0)$。 \right) \\ & \propto \exp \left( - \frac{1}{2}\left( + -\frac{1}{2}\left( -2\Vy^\Tsp\MX\Vw + \Vw^\Tsp\MX^\Tsp\MX\Vw + \Vw^\Tsp\VLambda_0^{-1}\Vw - 2\Vmu_0^\Tsp \VLambda_0^{-1}\Vw \right) diff --git a/docs/_posts/2016-12-07-Chapter7_regularization.md b/docs/_posts/2016-12-07-Chapter7_regularization.md index 3ff7267..e56ffd0 100644 --- a/docs/_posts/2016-12-07-Chapter7_regularization.md +++ b/docs/_posts/2016-12-07-Chapter7_regularization.md @@ -457,7 +457,7 @@ $L^1$惩罚使部分子集的权重为零,表明相应的特征可以被安全 在一般情况下,注入噪声远比简单地收缩参数强大,特别是噪声被添加到隐藏单元时会更加强大。 向隐藏单元添加噪声是值得单独讨论重要的话题;在\sec?所述~Dropout~算法是这种做法的主要发展方向。 -另一种正则化模型的噪声使用方式是将其加到的权重。 +另一种正则化模型的噪声使用方式是将其加到权重。 这项技术主要用于循环神经网络~{cite?}。 这可以被解释为关于权重的贝叶斯推断的随机实现。 贝叶斯学习过程将权重视为不确定的,并且可以通过概率分布表示这种不确定性。 diff --git a/docs/_posts/2016-12-08-Chapter8_optimization_for_training_deep_models.md b/docs/_posts/2016-12-08-Chapter8_optimization_for_training_deep_models.md index b4f6f97..1065d3d 100644 --- a/docs/_posts/2016-12-08-Chapter8_optimization_for_training_deep_models.md +++ b/docs/_posts/2016-12-08-Chapter8_optimization_for_training_deep_models.md @@ -1022,7 +1022,7 @@ Nesterov 动量中,梯度计算在施加当前速度之后。 深度学习模型的训练算法通常是迭代的,因此要求使用者指定一些开始迭代的初始点。 此外,训练深度模型是一个足够困难的问题,以致于大多数算法都很大程度地受到初始化选择的影响。 初始点能够决定算法是否收敛,有些初始点十分不稳定,使得该算法会遭遇数值困难,并完全失败。 -当学习收敛时,初始点可以决定学习收敛得多块,以及是否收敛到一个代价高或低的点。 +当学习收敛时,初始点可以决定学习收敛得多快,以及是否收敛到一个代价高或低的点。 此外,差不多代价的点可以具有区别极大的泛化误差,初始点也可以影响泛化。 @@ -1857,7 +1857,7 @@ Polyak平均{cite?}会平均优化算法在参数空间访问轨迹中的几个 这些"辅助头"被训练来执行和网络顶层主要输出相同的任务,以确保底层网络能够接受较大的梯度。 当训练完成时,辅助头可能被丢弃。 这是之前小节介绍到的预训练策略的替代方法。 -以这种方式,我们可以在一个阶段联合训练所有层,而不改变架构,使得中间层(特别是低层)能够通过更短的路径得到一些有些如何更新的有用信息。 +以这种方式,我们可以在一个阶段联合训练所有层,而不改变架构,使得中间层(特别是低层)能够通过更短的路径得到一些如何更新的有用信息。 这些信息为底层提供了误差信号。 diff --git a/docs/_posts/2016-12-12-Chapter12_applications.md b/docs/_posts/2016-12-12-Chapter12_applications.md index 581b1d7..41ef791 100644 --- a/docs/_posts/2016-12-12-Chapter12_applications.md +++ b/docs/_posts/2016-12-12-Chapter12_applications.md @@ -145,7 +145,7 @@ GPU~另一个常见的设定是使一个组中的所有线程都同时执行同 -在训练过程中,数据并行某种程度上来说更加困难 +在训练过程中,数据并行某种程度上来说更加困难。 对于随机梯度下降的单步来说,我们可以增加小批量的大小,但是从优化性能的角度来说,我们得到的回报通常并不会线性增长。 使用多个机器并行地计算多个梯度下降步骤是一个更好的选择。 不幸的是,梯度下降的标准定义完全是一个串行的过程: