深入理解设计矩阵(Design Matrix)
设计矩阵通常是用来描述数据集的一个方法。通常有m行n列,
1、每个行向量$\boldsymbol x^{(i)}$代表第$i$个实例
2、每个列向量$\boldsymbol x_j$代表第$j$个feature
$X=\begin{bmatrix} \boldsymbol x_1 & \boldsymbol x_2 & \cdots & \boldsymbol x_n\end{bmatrix}$
其中每一列表示一个feature向量,向量内容(每一行)代表不同实例在该feature上的取值。
先考察$X$和一个参数向量$\boldsymbol w$相乘
$X\boldsymbol w=\begin{bmatrix} \boldsymbol x_1 & \boldsymbol x_2 & \cdots & \boldsymbol x_n\end{bmatrix}\begin{bmatrix} w_1 \\ w_2 \\ \vdots \\ w_n \end{bmatrix}=\sum_{j=1}^n w_j\boldsymbol x_j$
这是一个标准的矩阵和向量乘法,意义是用$\boldsymbol w$中的各分量对X中的对应列进行线性组合。
考虑一个典型的神经网络:
$x_1,x_2,x_3$代表3个feature,在大部分教程的介绍中,为了描述简便,都是标量数值。但是在训练过程中,$x_1,x_2,x_3$通常都是$m$维列向量($m$代表实例的个数),将它们从左到右叠起来,就是设计矩阵X。而$X\boldsymbol w$生成了一个新的列向量,也就是第一个隐藏结点在激活之前的值(unactivated value)。
可以看到,图中有四个隐藏节点,那么怎么用一个乘法,把所有隐藏节点的unactivated value都算出来呢?
对,我们把4个系数向量$\boldsymbol w$从左到右叠起来,变成一个系数矩阵:
$W=\begin{bmatrix} \boldsymbol w_1 & \boldsymbol w_2 & \cdots & \boldsymbol w_{h}\end{bmatrix}$
其中$h$代表第一层隐藏节点的个数,$w_{i,j}$表示第$i$个隐藏单元的第$j$个系数
根据矩阵乘法的定义,我们有:$XW=X\begin{bmatrix} \boldsymbol w_1 & \boldsymbol w_2 & \cdots & \boldsymbol w_{h}\end{bmatrix}=\begin{bmatrix} X\boldsymbol w_1 & X\boldsymbol w_2 & \cdots & X\boldsymbol w_h\end{bmatrix}$
很明显,$XW$的每一列就是对应的隐藏节点的unactivated value