机器学习--02算法--00前馈神经网络矩阵结构

本文详细描述一下不同神经网络结构中的要素矩阵和系数矩阵。

一、数据样例

如下表是一个利用特征判断水果的例子。输入数据的特征有3个,分别是颜色、大小和形状;样本有5个;目标值为1个,即水果类型。

在这里插入图片描述

二、神经网络基本结构

在这里插入图片描述
这是一个单个神经元的示意图。工作原理分成两步:
第一,加和; Y = w 1 x 1 + w 2 x 2 + w 3 x 3 + ⋯ + w m x m Y=w_1x_1+w_2x_2+w_3x_3+\cdots+w_mx_m Y=w1x1+w2x2+w3x3++wmxm
第二,激活函数。 H = f ( Y ) H=f(Y) H=f(Y)

注:神经元对应的系数矩阵w是固定的,不会随着样本的不同而变化。第一个样本的 x 1 x_1 x1和第二个样本的 x 1 x_1 x1对应的 w 1 \mathrm{w}_1 w1是不变的。
激活函数只作用在单个神经元上。下文中的每层神经网络加和后,还要再经过一步激活函数,才能当成本层神经网络的输出,值得一提的是,该操作不会改变矩阵大小。

三、矩阵形式

下面部分主要针对第一步的加和部分,分析各层矩阵传递方式。

1. 单神经元,单样本

上面示意图就是单样本,单神经元的计算方式,这种情况实际中基本没有,只是做个示例。其计算方式和矩阵形式为: Y = W T X Y=W^TX Y=WTX
W = [ w 1 w 2 ⋮ w m ] , X = [ x 1 x 2 ⋮ x m ] , Y = [ y 1 y 2 ⋮ y m ] W=\begin{bmatrix}w_1\\ w_2\\ \vdots\\ w_m\end{bmatrix},\quad X=\begin{bmatrix}x_1\\ x_2\\ \vdots\\ x_m\end{bmatrix},\quad Y=\begin{bmatrix}y_1\\ y_2\\ \vdots\\ y_m\end{bmatrix} W= w1w2wm ,X= x1x2xm ,Y= y1y2ym

2. 单神经元,多样本

这种情况例如感知机(PLA),利用一个神经元进行分类,输入矩阵X从一列变成多列,系数矩阵W不变。

在这里插入图片描述
进一步将X写成矩阵形式,n个样本,m个变量, x n m x_{nm} xnm来表示(n在前,m在后,这种矩阵写法是整个架构的前提),这和上面表格的表达方式是一样的。竖着是样本,横着是变量。

在这里插入图片描述

(1)对于第 i i i个样本,则 y i = W T x i y_i=W^Tx_i yi=WTxi

W = [ w 1 w 2 ⋮ w m ] , x i = [ x i 1 x i 2 ⋮ x i m ] , y i = [ y i ] W=\begin{bmatrix}w_1\\ w_2\\ \vdots\\ w_m\end{bmatrix},\quad x_i=\begin{bmatrix}x_{i1}\\ x_{i2}\\ \vdots\\ x_{i m}\end{bmatrix},\quad y_i=[y_i] W= w1w2wm ,xi= xi1xi2xim ,yi=[yi]

注:实际上 x i x_i xi是行向量 x i = [ x i 1 , x i 2 , . . . , x i m ] x_i=[x_{i1},x_{i2},...,x_{im}] xi=[xi1,xi2,...,xim],但是按照常规,如果把一行单拎出来,一般会写成列向量的形式。

(2)对于整个样本,则 Y = X W Y=XW Y=XW

X = [ x 11 x 12 ⋯ x 1 m x 21 x 22 ⋯ x 2 m ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n m ] , W = [ w 1 w 2 ⋮ w m ] , Y = [ y 1 y 2 ⋮ y n ] X={\left[\begin{array}{l l l l}{x_{11}}&{x_{12}}&{\cdots}&{x_{1m}}\\ {x_{21}}&{x_{22}}&{\cdots}&{x_{2m}}\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}\\ {x_{n1}}&{x_{n2}}&{\cdots}&{x_{n m}}\end{array}\right]},\quad W={\left[\begin{array}{l}{w_{1}}\\ {w_{2}}\\ {\vdots}\\ {w_{m}}\end{array}\right]},\quad Y={\left[\begin{array}{l}{y_{1}}\\ {y_{2}}\\ {\vdots}\\ {y_{n}}\end{array}\right]} X= x11x21xn1x12x22xn2x1mx2mxnm ,W= w1w2wm ,Y= y1y2yn

3. 多神经元,单样本

对于单样本输入,最终输出是1个y值。但是多神经元肯定是多个输出,和1个y对不上,所以这种情况必然还得增加一层个数是1的神经元。在这里插入图片描述

对于第一层

Z = W T X : p * m × m * 1 = p * 1 Z=W^TX:p\text{*}m\times m\text{*}1\text{=}p\text{*}1 Z=WTX:p*m×m*1=p*1
W = [ w 11 w 12 ⋯ w 1 p w 21 w 22 ⋯ w 2 , p ⋮ ⋮ ⋱ ⋮ w m 1 w m 2 ⋯ w m p ] , X = [ x 1 x 2 ⋮ x m ] , Z = [ z 1 z 2 ⋮ z p ] W=\begin{bmatrix}w_{11}&w_{12}&\cdots&w_{1p}\\ w_{21}&w_{22}&\cdots&w_{2,p}\\ \vdots&\vdots&\ddots&\vdots\\ w_{m1}&w_{m2}&\cdots&w_{mp}\end{bmatrix},\quad X=\begin{bmatrix}x_1\\ x_2\\ \vdots\\ x_m\end{bmatrix},\quad Z=\begin{bmatrix}z_1\\ z_2\\ \vdots\\ z_p\end{bmatrix} W= w11w21wm1w12w22wm2w1pw2,pwmp ,X= x1x2xm ,Z= z1z2zp
在这里插入图片描述

注意 W 和 V 矩阵形式。可以这样记:下角标左右顺序和神经网络左右顺序一致,W先是m再是p;V先是p再是1

对于第二层

Y = V T Z : 1 * p × p * 1 = 1 * 1 Y=V^TZ:1\text{*}p\times p\text{*}1\text{=}1\text{*}1 Y=VTZ:1*p×p*1=1*1
V = [ v 1 v 2 ⋮ v p ] , Z = [ z 1 z 2 ⋮ z p ] , Y = [ y i ] V=\begin{bmatrix}v_1\\ v_2\\ \vdots\\ v_p\end{bmatrix},\quad Z=\begin{bmatrix}z_1\\ z_2\\ \vdots\\ z_p\end{bmatrix},\quad Y=[y_i] V= v1v2vp ,Z= z1z2zp ,Y=[yi]

注:同上所述,第一层神经网络的结果 Z ,需要经过激活函数后才能从该层输出,激活函数作用在每个神经元上,作用在Z矩阵的每个值上,不改变 Z 矩阵大小,故简略起见,第二层还用 Z 来表征第一层的输出。

4. 多神经元,多样本

这种形式就是日常见到的神经网络。

在这里插入图片描述

对于第一层

Z = X W : n * m × m * p = n * p Z=XW:n\text{*}m\times m\text{*}p\text{=}n\text{*}p Z=XW:n*m×m*p=n*p
X = [ x 11 x 12 ⋯ x 1 m x 21 x 22 ⋯ x 2 m ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n m ] , W = [ w 11 w 12 ⋯ w 1 p w 21 w 22 ⋯ w 2 p ⋮ ⋮ ⋱ ⋮ w m 1 w m 2 ⋯ w m p ] , Z = [ z 11 z 12 ⋯ z 1 p z 21 z 22 ⋯ z 2 p ⋮ ⋮ ⋱ ⋮ z n 1 z n 2 ⋯ z n p ] , X=\begin{bmatrix}x_{11}&x_{12}&\cdots&x_{1m}\\ x_{21}&x_{22}&\cdots&x_{2m}\\ \vdots&\vdots&\ddots&\vdots\\ x_{n1}&x_{n2}&\cdots&x_{nm}\end{bmatrix}, \quad W=\begin{bmatrix}w_{11}&w_{12}&\cdots&w_{1p}\\ w_{21}&w_{22}&\cdots&w_{2p}\\ \vdots&\vdots&\ddots&\vdots\\ w_{m1}&w_{m2}&\cdots&w_{mp}\end{bmatrix}, \quad Z=\begin{bmatrix}z_{11}&z_{12}&\cdots&z_{1p}\\ z_{21}&z_{22}&\cdots&z_{2p}\\ \vdots&\vdots&\ddots&\vdots\\ z_{n1}&z_{n2}&\cdots&z_{np}\end{bmatrix}, X= x11x21xn1x12x22xn2x1mx2mxnm ,W= w11w21wm1w12w22wm2w1pw2pwmp ,Z= z11z21zn1z12z22zn2z1pz2pznp ,

对于第二层

Y = Z V : n * p × p * 1 = n * 1 Y=ZV:n\text{*}p\times p\text{*}1\text{=}n\text{*}1 Y=ZV:n*p×p*1=n*1
Z = [ z 11 z 12 ⋯ z 1 p z 21 z 22 ⋯ z 2 p ⋮ ⋮ ⋱ ⋮ z n 1 z n 2 ⋯ z n p ] , V = [ v 1 v 2 ⋮ v p ] , Y = [ y 1 y 2 ⋮ y n ] Z=\begin{bmatrix}z_{11}&z_{12}&\cdots&z_{1p}\\ z_{21}&z_{22}&\cdots&z_{2p}\\ \vdots&\vdots&\ddots&\vdots\\ z_{n1}&z_{n2}&\cdots&z_{np}\end{bmatrix}, \quad V=\begin{bmatrix}v_1\\ v_2\\ \vdots\\ v_p\end{bmatrix}, \quad Y=\begin{bmatrix}y_1\\ y_2\\ \vdots\\ y_n\end{bmatrix} Z= z11z21zn1z12z22zn2z1pz2pznp ,V= v1v2vp ,Y= y1y2yn

对于更复杂的情况如:2个隐藏层,y一次输出为10个。则涉及4个矩阵:输入x,两个隐藏层的输出,以及y。

5. 总结

神经网络工作方式是以(行)向量的方式进入网络,一行一行逐个进入计算,多行就是多个batch。
只要是单样本,就写成 Y = W T X Y=W^TX Y=WTX 形式;只要是多样本,就写成 Y = X W Y=XW Y=XW 形式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值