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