Skip to content

Commit

Permalink
Section 8.4
Browse files Browse the repository at this point in the history
  • Loading branch information
liber145 committed Jul 30, 2017
1 parent da2347e commit 23c731b
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 31 deletions.
60 changes: 30 additions & 30 deletions Chapter2/linear_algebra.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
\chapter{线性代数}
\label{chap:linear_algebra}

线性代数作为数学的一个分支,广泛用于科学和工程中
线性代数作为数学的一个分支,广泛应用于科学和工程中
然而,因为线性代数主要是面向连续数学,而非离散数学,所以很多计算机科学家很少接触它。
掌握好线性代数对于理解和从事机器学习算法相关工作是很有必要的,尤其对于深度学习算法而言。
因此,在我们开始介绍深度学习之前,我们集中探讨一些必备的线性代数知识。
因此,在开始介绍深度学习之前,我们集中探讨一些必备的线性代数知识。


如果你已经很熟悉线性代数,那么你可以轻松地跳过本章
如果你已经很熟悉线性代数,那么可以轻松地跳过本章
如果你已经了解这些概念,但是需要一份索引表来回顾一些重要公式,那么我们推荐\emph{The Matrix Cookbook} \citep{matrix-cookbook}。
如果你没有接触过线性代数,那么本章将告诉你本书所需的线性代数知识,不过我们仍然非常建议你参考其他专注于讲解线性代数的文献,例如~\cite{shilov1977linear}。
最后,本章跳过了很多重要但是对于理解深度学习非必需的线性代数知识
如果你没有接触过线性代数,那么本章将告诉你本书所需的线性代数知识,不过我们仍然非常建议你参考其他专门讲解线性代数的文献,例如~\cite{shilov1977linear}。
最后,本章略去了很多重要但是对于理解深度学习非必需的线性代数知识



Expand All @@ -37,7 +37,7 @@ \section{标量、向量、矩阵和张量}
向量$\Vx$的第一个元素是$\Sx_1$,第二个元素是$\Sx_2$,等等。
我们也会注明存储在向量中的元素是什么类型的。
如果每个元素都属于$\SetR$,并且该向量有$\Sn$个元素,那么该向量属于实数集$\SetR$$\Sn$次笛卡尔乘积构成的集合,记为$\SetR^n$
当我们需要明确表示向量中的元素时,我们会将元素排列成一个方括号包围的纵列:
当需要明确表示向量中的元素时,我们会将元素排列成一个方括号包围的纵列:
\begin{equation}
\Vx=\begin{bmatrix} \Sx_1 \\
\Sx_2 \\
Expand All @@ -53,7 +53,7 @@ \section{标量、向量、矩阵和张量}
们用符号-表示集合的补集中的\gls{index}。
比如$\Vx_{-1}$表示$\Vx$中除$\Sx_1$外的所有元素,$\Vx_{-S}$表示$\Vx$中除$\Sx_1$$\Sx_3$$\Sx_6$外所有元素构成的向量。

\item \firstgls{matrix}:矩阵是一个二维数组,其中的每一个元素被两个\gls{index}而非一个所确定
\item \firstgls{matrix}:矩阵是一个二维数组,其中的每一个元素被两个\gls{index}(而非一个)所确定
我们通常会赋予矩阵粗体的大写变量名称,比如$\MA$
如果一个实数矩阵高度为$m$,宽度为$n$,那么我们说$\MA\in \SetR^{m\times n}$
我们在表示矩阵中的元素时,通常以不加粗的斜体形式使用其名称,\gls{index}用逗号间隔。
Expand All @@ -62,7 +62,7 @@ \section{标量、向量、矩阵和张量}
比如,$\MA_{i,:}$表示$\MA$中垂直坐标$i$上的一横排元素。
这也被称为$\MA$的第$i$~\firstgls{row}。
同样地,$\MA_{:,i}$表示$\MA$的第$i$~\firstgls{column}。
当我们需要明确表示矩阵中的元素时,我们将它们写在用方括号包围起来的数组中
当我们需要明确表示矩阵中的元素时,我们将它们写在用方括号括起来的数组中
\begin{equation}
\begin{bmatrix}
A_{1,1} & A_{1,2} \\
Expand All @@ -76,7 +76,7 @@ \section{标量、向量、矩阵和张量}
% -- 30 --

\item \firstgls{tensor}:在某些情况下,我们会讨论坐标超过两维的数组。
一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们将其称之为张量
一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们称之为张量
我们使用字体$\TSA$来表示张量``A''
张量$\TSA$中坐标为$(i,j,k)$的元素记作$\TEA_{i,j,k}$
\end{itemize}
Expand All @@ -90,7 +90,7 @@ \section{标量、向量、矩阵和张量}
(\MA^\top)_{i,j}= \SA_{j,i}.
\end{equation}

向量可以看作是只有一列的矩阵
向量可以看作只有一列的矩阵
对应地,向量的转置可以看作是只有一行的矩阵。
有时,我们通过将向量元素作为行矩阵写在文本行中,然后使用转置操作将其变为标准的列向量,来定义一个向量,比如$\Vx=[\Sx_1, \Sx_2, \Sx_3]^\top$.

Expand All @@ -104,7 +104,7 @@ \section{标量、向量、矩阵和张量}
\else
\centerline{\includegraphics{Chapter2/figures/transpose}}
\fi
\caption{矩阵的转置可以看成是以主对角线为轴的一个镜像。}
\caption{矩阵的转置可以看成以主对角线为轴的一个镜像。}
\label{fig:chap2_transpose}
\end{figure}

Expand Down Expand Up @@ -235,7 +235,7 @@ \section{单位矩阵和逆矩阵}
\forall \Vx \in \SetR^{\Sn}, \MI_{\Sn} \Vx = \Vx.
\end{equation}
单位矩阵的结构很简单:所有沿主对角线的元素都是$1$,而所有其他位置的元素都是$0$
\figref{fig:chap2_empty2}所示的例子
\figref{fig:chap2_empty2}所示
\begin{figure}[!htb]
\ifOpenSource
\centerline{\includegraphics{figure.pdf}}
Expand Down Expand Up @@ -292,7 +292,7 @@ \section{线性相关和生成子空间}
(其中$\alpha$取任意实数)也是该方程组的解。


为了分析方程有多少个解,我们可以将$\MA$的列向量看作是从\firstgls{origin}(元素都是零的向量)出发的不同方向,确定有多少种方法可以到达向量$\Vb$
为了分析方程有多少个解,我们可以将$\MA$的列向量看作从\firstgls{origin}(元素都是零的向量)出发的不同方向,确定有多少种方法可以到达向量$\Vb$
在这个观点下,向量$\Vx$中的每个元素表示我们应该沿着这些方向走多远,即$\Sx_{\Si}$表示我们需要沿着第$\Si$个向量的方向走多远:
\begin{equation}
\MA \Vx = \sum_i x_i \MA_{:,i}.
Expand Down Expand Up @@ -331,12 +331,12 @@ \section{线性相关和生成子空间}


正式地说,这种冗余被称为\firstgls{linear_dependence}。
如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量被称为\firstgls{linearly_independent}。
如果某个向量是一组向量中某些向量的线性组合,那么我们将这个向量加入到这组向量后不会增加这组向量的\gls{span}。
如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量称为\firstgls{linearly_independent}。
如果某个向量是一组向量中某些向量的线性组合,那么我们将这个向量加入这组向量后不会增加这组向量的\gls{span}。
这意味着,如果一个矩阵的\gls{column_space}涵盖整个$\SetR^m$,那么该矩阵必须包含至少一组$m$个线性无关的向量。
这是\eqnref{eq:2.11}对于每一个向量$\Vb$的取值都有解的充分必要条件。
值得注意的是,这个条件是说该向量集恰好有$m$个线性无关的列向量,而不是至少$m$个。
不存在一个$m$维向量的集合具有多于$m$个彼此线性不相关的列向量,但是一个有多于$m$个列向量的矩阵却有可能拥有不止一个大小为$m$的线性无关向量集。
不存在一个$m$维向量的集合具有多于$m$个彼此线性不相关的列向量,但是一个有多于$m$个列向量的矩阵有可能拥有不止一个大小为$m$的线性无关向量集。


要想使矩阵可逆,我们还需要保证\eqnref{eq:2.11}对于每一个$\Vb$值至多有一个解。
Expand Down Expand Up @@ -498,16 +498,16 @@ \section{特殊类型的矩阵和向量}
\end{equation}
所以正交矩阵受到关注是因为求逆计算代价小。
我们需要注意正交矩阵的定义。
反直觉地,正交矩阵的行向量不仅是正交的,还是标准正交的。
对于行向量或列向量互相正交但不是标准正交的矩阵没有对应的专有术语
违反直觉的是,正交矩阵的行向量不仅是正交的,还是标准正交的。
对于行向量或列向量互相正交但不是标准正交的矩阵,没有对应的专有术语




\section{\glsentrytext{eigendecomposition}}
\label{sec:eigendecomposition}

许多数学对象可以通过将它们分解成多个组成部分,或者找到它们的一些属性而更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式产生的。
许多数学对象可以通过将它们分解成多个组成部分或者找到它们的一些属性而更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式产生的。

% -- 39 --

Expand Down Expand Up @@ -550,15 +550,15 @@ \section{\glsentrytext{eigendecomposition}}


不是每一个矩阵都可以分解成特征值和特征向量。
在某些情况下,特征分解存在,但是会涉及到复数,而非实数
幸运的是,在本书中我们通常只需要分解一类有简单分解的矩阵
具体地,每个实对称矩阵都可以分解成实特征向量和实特征值:
在某些情况下,特征分解存在,但是会涉及复数而非实数
幸运的是,在本书中,我们通常只需要分解一类有简单分解的矩阵
具体来讲,每个实对称矩阵都可以分解成实特征向量和实特征值:
\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$倍的空间。
\figref{fig:chap2_eigen_ellipse}所示的例子。

% -- 40 --
Expand Down Expand Up @@ -631,7 +631,7 @@ \section{\glsentrytext{SVD}}
% -- 42 --

这些矩阵中的每一个经定义后都拥有特殊的结构。
矩阵$\MU$$\MV$都被定义为正交矩阵,而矩阵$\MD$被定义为对角矩阵
矩阵$\MU$$\MV$都定义为正交矩阵,而矩阵$\MD$定义为对角矩阵
注意,矩阵$\MD$不一定是方阵。


Expand Down Expand Up @@ -703,7 +703,7 @@ \section{迹运算}
\Tr(\MA)= \sum_i \MA_{i,i}.
\end{equation}
迹运算因为很多原因而有用。
若不使用求和符号,有些矩阵运算很难描述,而通过矩阵乘法和迹运算符号,可以清楚地表示
若不使用求和符号,有些矩阵运算很难描述,而通过矩阵乘法和迹运算符号可以清楚地表示
例如,迹运算提供了另一种描述矩阵\gls{frobenius_norm}的方式:
\begin{equation}
\norm{A}_F = \sqrt{\text{Tr}(\MA \MA^\top)}.
Expand Down Expand Up @@ -857,7 +857,7 @@ \section{实例:\glsentrytext{PCA}}

接下来,我们需要挑选编码矩阵$\MD$
要做到这一点,我们回顾最小化输入和重构之间$L^2$距离的这个想法。
因为我们用相同的矩阵$\MD$对所有点进行解码,我们不能再孤立地看待每个点。
因为用相同的矩阵$\MD$对所有点进行解码,我们不能再孤立地看待每个点。
反之,我们必须最小化所有维数和所有点上的误差矩阵的\,\gls{frobenius_norm}:
\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.
Expand All @@ -877,12 +877,12 @@ \section{实例:\glsentrytext{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.
Expand Down Expand Up @@ -952,7 +952,7 @@ \section{实例:\glsentrytext{PCA}}


这个优化问题可以通过特征分解来求解。
具体地,最优的$\Vd$$\MX^\top\MX$最大特征值对应的特征向量。
具体来讲,最优的$\Vd$$\MX^\top\MX$最大特征值对应的特征向量。


以上推导特定于$l=1$的情况, 仅得到了第一个主成分。
Expand All @@ -961,7 +961,7 @@ \section{实例:\glsentrytext{PCA}}


线性代数是理解深度学习所必须掌握的基础数学学科之一。
另一门在机器学习中无处不在的重要数学学科是概率论,我们将在下章探讨
另一门在机器学习中无处不在的重要数学学科是概率论,我们将在下一章探讨



Expand Down
2 changes: 1 addition & 1 deletion Chapter8/optimization_for_training_deep_models.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1023,7 +1023,7 @@ \section{参数初始化策略}
\gls{DL}模型的训练算法通常是迭代的,因此要求使用者指定一些开始迭代的初始点。
此外,训练\gls{deep_model}是一个足够困难的问题,以致于大多数算法都很大程度地受到初始化选择的影响。
初始点能够决定算法是否收敛,有些初始点十分不稳定,使得该算法会遭遇数值困难,并完全失败。
当学习收敛时,初始点可以决定学习收敛得多块,以及是否收敛到一个\gls{cost}高或低的点。
当学习收敛时,初始点可以决定学习收敛得多快,以及是否收敛到一个\gls{cost}高或低的点。
此外,差不多\gls{cost}的点可以具有区别极大的\gls{generalization_error},初始点也可以影响\gls{generalization}。

% 293 head
Expand Down
4 changes: 4 additions & 0 deletions acknowledgments_github.md
Original file line number Diff line number Diff line change
Expand Up @@ -240,3 +240,7 @@
2017年7月17日
---------------
- @tjliupeng ==> Section 8.4,翻译调整

2017年7月30日
---------------
- @xiaolangyuxin ==> Section 8.4, "多块" -> "多快"

0 comments on commit 23c731b

Please sign in to comment.