\parinterval{\small\sffamily\bfseries{标量}}(Scalar):标量亦称``无向量'',是一种只具有数值大小而没有方向的量,通俗地说,一个标量就是一个单独的数,这里我们特指实数\footnote{严格意义上,标量可以是复数等其它形式,这里为了方便讨论,我们仅以实数为对象。}。我们一般用小写斜体表示标量。比如,对于$ a=5$,$ a $就是一个标量。
\parinterval{\small\sffamily\bfseries{转置}}(transpose)是矩阵的重要操作之一。矩阵的转置可以看作是将矩阵以对角线为镜像进行翻转:假设$\mathbf a $为$ m $行$ n $列的矩阵,第$ i $行第$ j $ 列的元素是$ a_{ij}$,即:$\mathbf a={(a_{ij})}_{m\times n}$,把$ m\times n $矩阵$\mathbf a $的行换成同序数的列得到一个$ n\times m $矩阵,则得到$\mathbf a $的转置矩阵,记为$\mathbf a^{\rm T}$,其中$ a_{ji}^{\rm T}=a_{ij}$。例如:
\parinterval{\small\sffamily\bfseries{转置}}(Transpose)是矩阵的重要操作之一。矩阵的转置可以看作是将矩阵以对角线为镜像进行翻转:假设$\mathbf a $为$ m $行$ n $列的矩阵,第$ i $行第$ j $ 列的元素是$ a_{ij}$,即:$\mathbf a={(a_{ij})}_{m\times n}$,把$ m\times n $矩阵$\mathbf a $的行换成同序数的列得到一个$ n\times m $矩阵,则得到$\mathbf a $的转置矩阵,记为$\mathbf a^{\rm T}$,其中$ a_{ji}^{\rm T}=a_{ij}$。例如:
\parinterval 矩阵加法又被称作{\small\sffamily\bfseries{按元素加法}}(element-wise addition)。它是指两个矩阵把其相对应元素加在一起的运算,通常的矩阵加法被定义在两个形状相同的矩阵上。两个$ m\times n $矩阵$\mathbf a $和$\mathbf b $的和,标记为$\mathbf a +\mathbf b $,它也是个$ m\times n $矩阵,其内的各元素为其相对应元素相加后的值。如果矩阵$\mathbf c =\mathbf a +\mathbf b $,则$ c_{ij}= a_{ij}+ b_{ij}$。公式\ref{eqa1.4}展示了矩阵之间进行加法的计算过程。
\parinterval 矩阵加法又被称作{\small\sffamily\bfseries{按元素加法}}(Element-wise Addition)。它是指两个矩阵把其相对应元素加在一起的运算,通常的矩阵加法被定义在两个形状相同的矩阵上。两个$ m\times n $矩阵$\mathbf a $和$\mathbf b $的和,标记为$\mathbf a +\mathbf b $,它也是个$ m\times n $矩阵,其内的各元素为其相对应元素相加后的值。如果矩阵$\mathbf c =\mathbf a +\mathbf b $,则$ c_{ij}= a_{ij}+ b_{ij}$。公式\ref{eqa1.4}展示了矩阵之间进行加法的计算过程。
\parinterval 矩阵乘法是矩阵运算中最重要的操作之一,为了与矩阵点乘区分,我们通常也把矩阵乘法叫做矩阵的叉乘。假设$\mathbf a $为$ m\times p $的矩阵,$\mathbf b $为$ p\times n $的矩阵,对$\mathbf a $和$\mathbf b $作矩阵乘积的结果是一个$ m\times n $的矩阵$\mathbf c $,其中矩阵$\mathbf c $中第$ i $行、第$ j $列的元素可以表示为:
\parinterval{\small\sffamily\bfseries{线性映射}}( linear mapping)或{\small\sffamily\bfseries{线性变换}}(linear transformation)是从一个向量空间V到另一个向量空间W的映射函数$ f:v\rightarrow w$,且该映射函数保持加法运算和数量乘法运算,即对于空间V中任何两个向量$\mathbf u $和$\mathbf v $以及任何标量$ c $:
\parinterval{\small\sffamily\bfseries{线性映射}}( Linear Mapping)或{\small\sffamily\bfseries{线性变换}}(Linear Transformation)是从一个向量空间V到另一个向量空间W的映射函数$ f:v\rightarrow w$,且该映射函数保持加法运算和数量乘法运算,即对于空间V中任何两个向量$\mathbf u $和$\mathbf v $以及任何标量$ c $:
\item 从几何角度上看,公式中的$\mathbf x\cdot\mathbf w+\mathbf b $将$\mathbf x $右乘$\mathbf w $相当于对$\mathbf x $进行旋转变换,如图\ref{fig:rotation}所示,对三个点$(0,0)$,$(0,1)$,$(1,0)$及其围成的矩形区域右乘$\mathbf w=\begin{pmatrix}1&0&0\\0&-1&0\\0&0&1\end{pmatrix}$\\后,矩形区域由第一象限旋转90度到了第四象限。
\end{itemize}
\parinterval 从几何角度上看,公式中的$\mathbf x\cdot\mathbf w+\mathbf b $将$\mathbf x $右乘$\mathbf w $相当于对$\mathbf x $进行旋转变换,如图\ref{fig:rotation}所示,对三个点$(0,0)$,$(0,1)$,$(1,0)$及其围成的矩形区域右乘$\mathbf w=\begin{pmatrix}1&0&0\\0&-1&0\\0&0&1\end{pmatrix}$\\后,矩形区域由第一象限旋转90度到了第四象限。
\parinterval 对于神经网络中的某层神经元$\mathbf y=f(\mathbf x\cdot\mathbf w+\mathbf b)$,其中$\mathbf w $是权重矩阵,例如$\begin{pmatrix}1&2\\3&4\end{pmatrix}$,$\mathbf b $ 是偏移向量,例如$(1,3)$。在这里,输入$\mathbf x $和输出$\mathbf y $,可以不是简单的向量或是矩阵形式,而是深度学习中更加通用的数学量\ \dash\ 张量,比如下式中的几种情况都可以看作是深度学习中定义数据的张量:
\parinterval 对于神经网络中的某层神经元$\mathbf y=f(\mathbf x\cdot\mathbf w+\mathbf b)$,其中$\mathbf w $是权重矩阵,例如$\begin{pmatrix}1&2\\3&4\end{pmatrix}$,$\mathbf b $ 是偏移向量,例如$(1,3)$。在这里,输入$\mathbf x $和输出$\mathbf y $,可以不是简单的向量或是矩阵形式,而是深度学习中更加通用的数学量\ \dash\ {\small\bfnew{张量}}(Tensor),比如下式中的几种情况都可以看作是深度学习中定义数据的张量:
\parinterval 对于一层神经网络,$\mathbf y=f(\mathbf x\cdot\mathbf w+\mathbf b)$中的$\mathbf x\cdot\mathbf w $表示对输入$\mathbf x $进行线性变换,其中$\mathbf x $是输入张量,$\mathbf w $是权重矩阵。$\mathbf x\cdot\mathbf w $表示的是矩阵乘法,需要注意的是这里是矩阵乘法而不是张量乘法。
\parinterval 前向计算实现如图\ref{fig:weather-forward}所示,图中对各张量和其他参数的形状做了详细说明,类似shape(3)这种形式代表维度为3的1阶张量,shape(3,2)代表2阶张量,其中第1阶有3个维度,第2阶有2个维度,也可以将其理解为$3\ast2$的矩阵。输入$\mathbf x $是一个1阶张量,该阶有3个维度,分别对应天空状况、低空气温、水平气压三个方面。输入数据经过隐藏层的线性变换$\mathbf x\cdot\mathbf w^1+\mathbf b^1$和tanh激活函数后,得到新的张量$\mathbf a $,张量$\mathbf a $也是一个1阶张量,该阶有2个维度,分别对应着从输入数据中提取出的温度和风速两方面特征;神经网络在获取到天气情况的特征$\mathbf a $后,继续对其进行线性变换$\mathbf a\cdot\mathbf w^2+ b^2$($ b^2$是标量)和sigmoid激活函数后,得到神经网络的最终输出$ y $,即神经网络此时预测的穿衣指数。
\parinterval 前向计算实现如图\ref{fig:weather-forward}所示,图中对各张量和其他参数的形状做了详细说明,类似shape(3)这种形式代表维度为3的1阶张量,shape(3,2)代表2阶张量,其中第1阶有3个维度,第2阶有2个维度,也可以将其理解为$3\ast2$的矩阵。输入$\mathbf x $是一个1阶张量,该阶有3个维度,分别对应天空状况、低空气温、水平气压三个方面。输入数据经过隐藏层的线性变换$\mathbf x\cdot\mathbf w^1+\mathbf b^1$和Tanh激活函数后,得到新的张量$\mathbf a $,张量$\mathbf a $也是一个1阶张量,该阶有2个维度,分别对应着从输入数据中提取出的温度和风速两方面特征;神经网络在获取到天气情况的特征$\mathbf a $后,继续对其进行线性变换$\mathbf a\cdot\mathbf w^2+ b^2$($ b^2$是标量)和Sigmoid激活函数后,得到神经网络的最终输出$ y $,即神经网络此时预测的穿衣指数。
\noindent 其中,$\mathbf h_t $表示$ t $时刻循环单元的输出,$\mathbf h_{t-1}$表示$ t-1$时刻循环单元的输出,$\mathbf U $和$\mathbf W $是模型的参数。可以看出,循环单元的结构其实很简单,只是一个对$\mathbf h_{t-1}$和$\mathbf x_t $的线性变换再加上一个tanh函数。通过读入上一时刻的输出,当前时刻可以访问以前的历史信息。这个过程可以循环执行,这样就完成了对所有历史信息的建模。$\mathbf h_t $可以被看作是序列在$ t $时刻的一种表示,也可以被看作是网络的一个隐藏层。进一步,$\mathbf h_t $可以被送入输出层,得到$ t $时刻的输出:
\noindent 其中,$\mathbf h_t $表示$ t $时刻循环单元的输出,$\mathbf h_{t-1}$表示$ t-1$时刻循环单元的输出,$\mathbf U $和$\mathbf W $是模型的参数。可以看出,循环单元的结构其实很简单,只是一个对$\mathbf h_{t-1}$和$\mathbf x_t $的线性变换再加上一个Tanh函数。通过读入上一时刻的输出,当前时刻可以访问以前的历史信息。这个过程可以循环执行,这样就完成了对所有历史信息的建模。$\mathbf h_t $可以被看作是序列在$ t $时刻的一种表示,也可以被看作是网络的一个隐藏层。进一步,$\mathbf h_t $可以被送入输出层,得到$ t $时刻的输出: