\parinterval{\small\sffamily\bfseries{线性映射}}\index{线性映射}( Linear Mapping)\index{Linear Mapping}或{\small\sffamily\bfseries{线性变换}}\index{线性变换}(Linear Transformation)\index{Linear Transformation}是从一个向量空间V到另一个向量空间W的映射函数$ f:v\rightarrow w$,且该映射函数保持加法运算和数量乘法运算,即对于空间V中任何两个向量$\mathbf u $和$\mathbf v $以及任何标量$ c $,有:
\parinterval{\small\sffamily\bfseries{线性映射}}\index{线性映射}( Linear Mapping)\index{Linear Mapping}或{\small\sffamily\bfseries{线性变换}}\index{线性变换}(Linear Transformation)\index{Linear Transformation}是从一个向量空间V到另一个向量空间W的映射函数$ f:v\rightarrow w$,且该映射函数保持加法运算和数量乘法运算,即对于空间V中任何两个向量$\mathbf u $和$\mathbf v $以及任何标量$ c $,有:
\parinterval 同样,人工神经元是人工神经网络的基本单元。在人们的想象中,人工神经元应该与生物神经元类似。但事实上,二者在形态上是有明显差别的。如图\ref{fig:5-4} 是一个典型的人工神经元,其本质是一个形似$ y=f(\mathbf x\cdot\mathbf w+b)$的函数。显而易见,一个神经元主要由$\mathbf x $,$\mathbf w $,$ b $,$ f $四个部分构成。其中$\mathbf x $是一个形如$(x_0,x_1,\dots,x_n)$的实数向量,在一个神经元中担任``输入''的角色。$\mathbf w $是一个权重矩阵,其中的每一个元素都对应着一个输入和一个输出,代表着``某输入对某输出的贡献程度'',通常也被理解为神经元连接的{\small\sffamily\bfseries{权重}}\index{权重}(weight)\index{weight}。$ b $被称作偏置,是一个实数。$ f $被称作激活函数,其本质是一个非线性函数。可见,一个人工神经元的功能是将输入向量与权重矩阵右乘(做内积)后,加上偏置量,经过一个非线性激活函数得到一个标量结果。
\parinterval 同样,人工神经元是人工神经网络的基本单元。在人们的想象中,人工神经元应该与生物神经元类似。但事实上,二者在形态上是有明显差别的。如图\ref{fig:5-4} 是一个典型的人工神经元,其本质是一个形似$ y=f(\mathbf x\cdot\mathbf w+b)$的函数。显而易见,一个神经元主要由$\mathbf x $,$\mathbf w $,$ b $,$ f $四个部分构成。其中$\mathbf x $是一个形如$(x_0,x_1,\dots,x_n)$的实数向量,在一个神经元中担任``输入''的角色。$\mathbf w $是一个权重矩阵,其中的每一个元素都对应着一个输入和一个输出,代表着``某输入对某输出的贡献程度'',通常也被理解为神经元连接的{\small\sffamily\bfseries{权重}}\index{权重}(weight)\index{weight}。$ b $被称作偏置,是一个实数。$ f $被称作激活函数,其本质是一个非线性函数。可见,一个人工神经元的功能是将输入向量与权重矩阵右乘(做内积)后,加上偏置量,经过一个非线性激活函数得到一个标量结果。
\parinterval 下面用几个实例来说明搭建神经网络的过程。搭建神经网络的过程本质上就是定义前向计算的过程。首先构造一个单层神经网络。如图\ref{fig:5-39}(a)所示,简单的定义输入、权重和偏置后,定义激活函数为Sigmoid函数,输入$\mathbf x $经过线性变换和激活函数,得到输出$\mathbf y $。
\parinterval 图\ref{fig:5-39}(b)是一个构造三层神经网络的程序示例。在第一层中,$\mathbf x $作为输入,$\mathbf h1$作为输出,其中$\mathbf h1={\rm{Sigmoid}}(\mathbf x\cdot\mathbf w1+\mathbf b1)$。在第二层中,$\mathbf h1$作为输入,$\mathbf h2$作为输出,其中$\mathbf h2={\rm{Tanh}}(\mathbf h1\cdot\mathbf w2)$。在第三层中,$\mathbf h2$作为输入,$\mathbf y $作为输出,其中$\mathbf y={\rm{ReLU}}(\mathbf h2\cdot\mathbf w3)$。$\mathbf y $也会作为整个神经网络的输出。
\parinterval 图\ref{fig:5-39}(b)是一个构造三层神经网络的程序示例。在第一层中,$\mathbf x $作为输入,$\mathbf h1$作为输出,其中$\mathbf h1={\rm{Sigmoid}}(\mathbf x\cdot\mathbf w1+\mathbf b1)$。在第二层中,$\mathbf h1$作为输入,$\mathbf h2$作为输出,其中$\mathbf h2={\rm{Tanh}}(\mathbf h1\cdot\mathbf w2)$。在第三层中,$\mathbf h2$作为输入,$\mathbf y $作为输出,其中$\mathbf y={\rm{ReLU}}(\mathbf h2\cdot\mathbf w3)$。$\mathbf y $也会作为整个神经网络的输出。