\parinterval 生物学中,神经元是神经系统的基本组成单元。同样,人工神经元是人工神经网络的基本单元。在人们的想象中,人工神经元应该与生物神经元类似。但事实上,二者在形态上是有明显差别的。如图\ref{fig:9-4} 是一个典型的人工神经元,其本质是一个形似$ y=f({\mathbi{x}}\cdot{\mathbi{w}}+b)$的函数。显而易见,一个神经元主要由${\mathbi{x}}$,${\mathbi{w}}$,$ b $,$ f $四个部分构成。其中${\mathbi{x}}$是一个形如$(x_1,x_2,\dots,x_n)$ 的实数向量,在一个神经元中担任“输入”的角色。${\mathbi{w}}$通常被理解为神经元连接的{\small\sffamily\bfseries{权重}}\index{权重}(Weight)\index{Weight}(对于一个人工神经元,权重是一个向量,表示为${\mathbi{w}}$;对于由多个神经元组成的神经网络,权重是一个矩阵,表示为${\mathbi{W}}$),其中的每一个元素都对应着一个输入和一个输出,代表着“某输入对某输出的贡献程度”。$ b $被称作偏置(对于一个人工神经元,偏置是一个实数,表示为$b$;对于神经网络中的某一层,偏置是一个向量,表示为${\mathbi{b}}$)。$ f $被称作激活函数,用于对输入向量各项加权和后进行某种变换。可见,一个人工神经元的功能是将输入向量与权重矩阵右乘(做内积)后,加上偏置量,经过一个激活函数得到一个标量结果。
\parinterval 生物学中,神经元是神经系统的基本组成单元。同样,人工神经元是人工神经网络的基本单元。在人们的想象中,人工神经元应该与生物神经元类似。但事实上,二者在形态上是有明显差别的。如图\ref{fig:9-4} 是一个典型的人工神经元,其本质是一个形似$ y=f({\mathbi{x}}{\mathbi{w}}+b)$的函数。显而易见,一个神经元主要由${\mathbi{x}}$,${\mathbi{w}}$,$ b $,$ f $四个部分构成。其中${\mathbi{x}}$是一个形如$(x_1,x_2,\dots,x_n)$ 的实数向量,在一个神经元中担任“输入”的角色。${\mathbi{w}}$通常被理解为神经元连接的{\small\sffamily\bfseries{权重}}\index{权重}(Weight)\index{Weight}(对于一个人工神经元,权重是一个向量,表示为${\mathbi{w}}$;对于由多个神经元组成的神经网络,权重是一个矩阵,表示为${\mathbi{W}}$),其中的每一个元素都对应着一个输入和一个输出,代表着“某输入对某输出的贡献程度”。$ b $被称作偏置(对于一个人工神经元,偏置是一个实数,表示为$b$;对于神经网络中的某一层,偏置是一个向量,表示为${\mathbi{b}}$)。$ f $被称作激活函数,用于对输入向量各项加权和后进行某种变换。可见,一个人工神经元的功能是将输入向量与权重矩阵右乘(做内积)后,加上偏置量,经过一个激活函数得到一个标量结果。
\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 前向计算实现如图\ref{fig:9-38}所示,图中对各张量和其他参数的形状做了详细说明。输入${\mathbi{x}}=(x_1,x_2,x_3)$是一个$1\times3$的张量,其三个维度分别对应天空状况、低空气温、水平气压三个方面的数据。输入数据经过隐藏层的线性变换${\mathbi{x}}\cdot{\mathbi{W}}^{[1]}+{\mathbi{b}}^{[1]}$和Tanh函数的激活,得到新的张量${\mathbi{a}}=(a_1,a_2)$,其中$a_1$,$a_2$分别对应着从输入数据中提取出的温度和风速两方面特征;神经网络在获取到天气情况的特征${\mathbi{a}}$后,继续对其进行线性变换${\mathbi{a}}\cdot{\mathbi{W}}^{[2]}+ b^{[2]}$和Sigmoid函数的激活操作,得到神经网络的最终输出$ y $,即神经网络此时预测的穿衣指数。
\parinterval 前向计算实现如图\ref{fig:9-38}所示,图中对各张量和其他参数的形状做了详细说明。输入${\mathbi{x}}=(x_1,x_2,x_3)$是一个$1\times3$的张量,其三个维度分别对应天空状况、低空气温、水平气压三个方面的数据。输入数据经过隐藏层的线性变换${\mathbi{x}}{\mathbi{W}}^{[1]}+{\mathbi{b}}^{[1]}$和Tanh函数的激活,得到新的张量${\mathbi{a}}=(a_1,a_2)$,其中$a_1$,$a_2$分别对应着从输入数据中提取出的温度和风速两方面特征;神经网络在获取到天气情况的特征${\mathbi{a}}$后,继续对其进行线性变换${\mathbi{a}}{\mathbi{W}}^{[2]}+ b^{[2]}$和Sigmoid函数的激活操作,得到神经网络的最终输出$ y $,即神经网络此时预测的穿衣指数。