\parinterval{\small\sffamily\bfseries{矩阵}}\index{矩阵}(Matrix)\index{Matrix}:矩阵是一个按照长方阵列排列的实数集合,最早来自于方程组的系数及常数所构成的方阵。在计算机领域,通常将矩阵看作二维数组。这里用符号$\mathbi{A}$表示一个矩阵,如果该矩阵有$ m $行$ n $列,那么有$\mathbi{A}\in{\mathbb R}^{m\times n}$。矩阵中的每个元素都被一个行索引和一个列索引所确定,例如,$ a_{ij}$表示第$ i $行、第$ j $列的矩阵元素。如下,公式\eqref{eq:9-3}中$\mathbi{A}$定义了一个2行2列的矩阵。
\parinterval{\small\sffamily\bfseries{矩阵}}\index{矩阵}(Matrix)\index{Matrix}:矩阵是一个按照长方阵列排列的实数集合,最早来自于方程组的系数及常数所构成的方阵。在计算机领域,通常将矩阵看作二维数组。这里用符号$\mathbi{A}$表示一个矩阵,如果该矩阵有$ m $行$ n $列,那么有$\mathbi{A}\in{\mathbb R}^{m\times n}$。矩阵中的每个元素都被一个行索引和一个列索引所确定,例如,$ a_{ij}$表示第$ i $行、第$ j $列的矩阵元素。如下,下式中的$\mathbi{A}$定义了一个2行2列的矩阵。
\begin{eqnarray}
\mathbi{A}& = &\begin{pmatrix}
a_{11}& a_{12}\\
...
...
@@ -241,14 +241,14 @@
\subsubsection{2. 矩阵的转置}
\parinterval{\small\sffamily\bfseries{转置}}\index{转置}(Transpose)\index{Transpose}是矩阵的重要操作之一。矩阵的转置可以看作是将矩阵以对角线为镜像进行翻转:假设$\mathbi{A}$为$ m $行$ n $列的矩阵,第$ i $行、第$ j $ 列的元素是$ a_{ij}$,即:$\mathbi{A}={(a_{ij})}_{m\times n}$,把$ m\times n $矩阵$\mathbi{A}$的行换成同序数的列得到一个$ n\times m $矩阵,则得到$\mathbi{A}$的转置矩阵,记为${\mathbi{A}}^{\textrm T}$,且${\mathbi{A}}^{\textrm T}={(a_{ji})}_{n\times m}$。例如,对于公式\eqref{eq:9-100}中的矩阵,
\parinterval{\small\sffamily\bfseries{转置}}\index{转置}(Transpose)\index{Transpose}是矩阵的重要操作之一。矩阵的转置可以看作是将矩阵以对角线为镜像进行翻转:假设$\mathbi{A}$为$ m $行$ n $列的矩阵,第$ i $行、第$ j $ 列的元素是$ a_{ij}$,即:$\mathbi{A}={(a_{ij})}_{m\times n}$,把$ m\times n $矩阵$\mathbi{A}$的行换成同序数的列得到一个$ n\times m $矩阵,则得到$\mathbi{A}$的转置矩阵,记为${\mathbi{A}}^{\textrm T}$,且${\mathbi{A}}^{\textrm T}={(a_{ji})}_{n\times m}$。例如,对于下式中的矩阵,
\parinterval 矩阵加法又被称作{\small\sffamily\bfseries{按元素加法}}\index{按元素加法}(Element-wise Addition)\index{Element-wise Addition}。它是指两个矩阵把其相对应元素加在一起的运算,通常的矩阵加法被定义在两个形状相同的矩阵上。两个$ m\times n $矩阵$\mathbi{A}$和$\mathbi{B}$的和,标记为$\mathbi{A}+\mathbi{B}$,它也是个$ m\times n $矩阵,其内的各元素为其相对应元素相加后的值,即如果矩阵${\mathbi{C}}={\mathbi{A}}+{\mathbi{B}}$,则$ c_{ij}= a_{ij}+ b_{ij}$。公式\eqref{eq:9-4}展示了矩阵之间进行加法的计算过程。
\parinterval 矩阵加法又被称作{\small\sffamily\bfseries{按元素加法}}\index{按元素加法}(Element-wise Addition)\index{Element-wise Addition}。它是指两个矩阵把其相对应元素加在一起的运算,通常的矩阵加法被定义在两个形状相同的矩阵上。两个$ m\times n $矩阵$\mathbi{A}$和$\mathbi{B}$的和,标记为$\mathbi{A}+\mathbi{B}$,它也是个$ m\times n $矩阵,其内的各元素为其相对应元素相加后的值,即如果矩阵${\mathbi{C}}={\mathbi{A}}+{\mathbi{B}}$,则$ c_{ij}= a_{ij}+ b_{ij}$。下式展示了矩阵之间进行加法的计算过程。
\begin{eqnarray}
\begin{pmatrix}
1 & 3\\
...
...
@@ -334,7 +334,7 @@
\subsubsection{4. 矩阵乘法和矩阵点乘}
\parinterval 矩阵乘法是矩阵运算中最重要的操作之一,为了与矩阵点乘区分,通常也把矩阵乘法叫做矩阵叉乘。假设${\mathbi{A}}$为$ m\times p $的矩阵,${\mathbi{B}}$为$ p\times n $的矩阵,对${\mathbi{A}}$和${\mathbi{B}}$作矩阵乘法的结果是一个$ m\times n $的矩阵${\mathbi{C}}$,其中矩阵${\mathbi{C}}$中第$ i $行、第$ j $列的元素可以如公式\eqref{eq:9-6}表示为:
\parinterval 矩阵乘法是矩阵运算中最重要的操作之一,为了与矩阵点乘区分,通常也把矩阵乘法叫做矩阵叉乘。假设${\mathbi{A}}$为$ m\times p $的矩阵,${\mathbi{B}}$为$ p\times n $的矩阵,对${\mathbi{A}}$和${\mathbi{B}}$作矩阵乘法的结果是一个$ m\times n $的矩阵${\mathbi{C}}$,其中矩阵${\mathbi{C}}$中第$ i $行、第$ j $列的元素可以表示为:
\parinterval 感知机是人工神经元的一种实例,在上世纪50-60年代被提出后,对神经网络研究产生了深远的影响。感知机模型如图\ref{fig:9-5}所示,其输入是一个$n$维二值向量${\mathbi{x}}=(x_1,x_2,\dots,x_n)$,其中$ x_i=0$或$1$。权重${\mathbi{w}}=(w_1,w_2,\dots,w_n)$,每个输入变量对应一个权重$ w_i $。偏置$ b $是一个实数变量($-\sigma$)。输出也是一个二值结果,即$ y=0$或$1$。$ y $值的判定由输入的加权和是否大于(或小于)一个阈值$\sigma$决定(公式\eqref{eq:9-19}):
\parinterval 感知机是人工神经元的一种实例,在上世纪50-60年代被提出后,对神经网络研究产生了深远的影响。感知机模型如图\ref{fig:9-5}所示,其输入是一个$n$维二值向量${\mathbi{x}}=(x_1,x_2,\dots,x_n)$,其中$ x_i=0$或$1$。权重${\mathbi{w}}=(w_1,w_2,\dots,w_n)$,每个输入变量对应一个权重$ w_i $。偏置$ b $是一个实数变量($-\sigma$)。输出也是一个二值结果,即$ y=0$或$1$。$ y $值的判定由输入的加权和是否大于(或小于)一个阈值$\sigma$决定:
\parinterval 张量乘以矩阵是怎样计算呢?可以先回忆一下\ref{sec:9.2.1}节的线性代数的知识。假设${\mathbi{A}}$为$ m\times p $的矩阵,${\mathbi{B}}$为$ p\times n $的矩阵,对${\mathbi{A}}$ 和${\mathbi{B}}$ 作矩阵乘积的结果是一个$ m\times n $的矩阵${\mathbi{C}}$,其中矩阵${\mathbi{C}}$中第$ i $行、第$ j $列的元素可以表示为公式\eqref{eq:9-24}:
\parinterval 张量乘以矩阵是怎样计算呢?可以先回忆一下\ref{sec:9.2.1}节的线性代数的知识。假设${\mathbi{A}}$为$ m\times p $的矩阵,${\mathbi{B}}$为$ p\times n $的矩阵,对${\mathbi{A}}$ 和${\mathbi{B}}$ 作矩阵乘积的结果是一个$ m\times n $的矩阵${\mathbi{C}}$,其中矩阵${\mathbi{C}}$中第$ i $行、第$ j $列的元素可以表示为:
\parinterval 将矩阵乘法扩展到高阶张量中:一个张量${\mathbi{x}}$若要与矩阵${\mathbi{W}}$做矩阵乘法,则${\mathbi{x}}$的最后一维度需要与${\mathbi{W}}$的行数大小相等,即:若张量${\mathbi{x}}$的形状为$\cdot\times n $,${\mathbi{W}}$须为$ n\times\cdot$的矩阵。公式\eqref{eq:9-25}是一个例子:
\parinterval 将矩阵乘法扩展到高阶张量中:一个张量${\mathbi{x}}$若要与矩阵${\mathbi{W}}$做矩阵乘法,则${\mathbi{x}}$的最后一维度需要与${\mathbi{W}}$的行数大小相等,即:若张量${\mathbi{x}}$的形状为$\cdot\times n $,${\mathbi{W}}$须为$ n\times\cdot$的矩阵。下式是一个例子:
\parinterval 对于第$ i $个样本$({\mathbi{x}}_i,\widetilde{\mathbi{y}}_i)$,把损失函数$ L(\widetilde{\mathbi{y}}_i,{\mathbi{y}}_i)$看作是参数$\bm\theta$的函数\footnote{为了简化描述,可以用$
\parinterval 在第一阶段,计算的目标是得到损失函数$ L $关于第$ K $层中间状态${\mathbi{s}}^K $的梯度,这里令${\bm\pi}^K=\frac{\partial L}{\partial{\mathbi{s}}^K}$,利用链式法则有公式\eqref{eq:9-49}:
\parinterval 在第一阶段,计算的目标是得到损失函数$ L $关于第$ K $层中间状态${\mathbi{s}}^K $的梯度,这里令${\bm\pi}^K=\frac{\partial L}{\partial{\mathbi{s}}^K}$,利用链式法则有:
\parinterval 在循环神经网络中,输入和输出都是一个序列,分别记为$({\mathbi{x}}_1,\dots,{\mathbi{x}}_m)$和$({\mathbi{y}}_1,\dots,\\{\mathbi{y}}_m)$。它们都可以被看作是时序序列,其中每个时刻$ t $都对应一个输入${\mathbi{x}}_t $和输出${\mathbi{y}}_t $。循环神经网络的核心是{\small\sffamily\bfseries{循环单元}}\index{循环单元}(RNN Cell)\index{RNN Cell},它读入前一个时刻循环单元的输出和当前时刻的输入,生成当前时刻循环单元的输出。图\ref{fig:9-62}展示了一个简单的循环单元结构,对于时刻$ t $,循环单元的输出被定义为公式\eqref{eq:9-63}:
\parinterval 在循环神经网络中,输入和输出都是一个序列,分别记为$({\mathbi{x}}_1,\dots,{\mathbi{x}}_m)$和$({\mathbi{y}}_1,\dots,\\{\mathbi{y}}_m)$。它们都可以被看作是时序序列,其中每个时刻$ t $都对应一个输入${\mathbi{x}}_t $和输出${\mathbi{y}}_t $。循环神经网络的核心是{\small\sffamily\bfseries{循环单元}}\index{循环单元}(RNN Cell)\index{RNN Cell},它读入前一个时刻循环单元的输出和当前时刻的输入,生成当前时刻循环单元的输出。图\ref{fig:9-62}展示了一个简单的循环单元结构,对于时刻$ t $,循环单元的输出被定义为: