输入
- 输入一般是n维列向量 I = [ i 1 i 2 i 3 . . i n ] I=\begin{bmatrix} i_1\\i_2\\i_3\\..\\i_n \end{bmatrix} I=⎣⎢⎢⎢⎢⎡i1i2i3..in⎦⎥⎥⎥⎥⎤
- 目标是已给出的m维列向量,记为: T = [ t 1 t 2 t 3 . . t m ] T=\begin{bmatrix} t_1\\t_2\\t_3\\..\\t_m \end{bmatrix} T=⎣⎢⎢⎢⎢⎡t1t2t3..tm⎦⎥⎥⎥⎥⎤
权重
- 权重矩阵 W m n = [ w 11 w 12 w 13 . . . w 1 n w 21 w 22 w 23 . . . w 2 n . . . . w m 1 w m 2 w m 3 . . . w m n ] W_{mn}=\begin{bmatrix} w_{11} & w_{12} & w_{13}&...&w_{1n} \\ w_{21} & w_{22} & w_{23}&...&w_{2n} \\ ....\\ w_{m1} & w_{m2} & w_{m3}&...&w_{mn} \end{bmatrix} Wmn=⎣⎢⎢⎡w11w21....wm1w12w22wm2w13w23wm3.........w1nw2nwmn⎦⎥⎥⎤
输出
输出是矩阵R经过激活函数处理过的数据,下面以 S i g m o i d Sigmoid Sigmoid函数作为激活函数为例说明,输出矩阵 O O O如何从 R R R计算的到,如下
O = [ o 1 o 2 o 3 . . o m ] = [ w 11 w 12 w 13 . . . w 1 n w 21 w 22 w 23 . . . w 2 n . . . . w m 1 w m 2 w m 3 . . . w m n ] ⋅ [ i 1 i 2 i 3 . . i n ] O = \begin{bmatrix} o_1\\o_2\\o_3\\..\\o_m \end{bmatrix} =\begin{bmatrix} w_{11} & w_{12} & w_{13}&...&w_{1n} \\ w_{21} & w_{22} & w_{23}&...&w_{2n} \\ ....\\ w_{m1} & w_{m2} & w_{m3}&...&w_{mn} \end{bmatrix} \centerdot\begin{bmatrix} i_1\\i_2\\i_3\\..\\i_n \end{bmatrix} O=⎣⎢⎢⎢⎢⎡o1o2o3..om⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎡w11w21....wm1w12w22wm2w13w23wm3.........w1nw2nwmn⎦⎥⎥⎤⋅⎣⎢⎢⎢⎢⎡i1i2i3..in⎦⎥⎥⎥⎥⎤
误差
误差既目标 T T T和输出 O O O的差值,如下
S e = T − O = [ e 1 e 2 e 3 . . e m ] Se = T - O=\begin{bmatrix} e_1\\e_2\\e_3\\..\\e_m \end{bmatrix} Se=T−O=⎣⎢⎢⎢⎢⎡e1e2e3..em⎦⎥⎥⎥⎥⎤
误差传递
O 3 = ∑ x = 1 n w 3 x i x O_3 = \displaystyle\sum_{x=1}^n w_{3x}i_x O3=x=1∑nw3xix
所以可对节点 a 3 a_3 a3的误差 e 3 e_3 e3按照权重比例向第2层进行划分
P S e 3 = [ i 1 i 2 i 3 . . i n ] ⋅ e 3 PSe_3=\begin{bmatrix} i_1\\i_2\\i_3\\..\\i_n \end{bmatrix} \centerdot e_3 PSe3=⎣⎢⎢⎢⎢⎡i1i2i3..in⎦⎥⎥⎥⎥⎤⋅e3
那么可知第3层所有节点的误差 S e Se Se,传递到第2层的结果
P S e = ∑ x = 1 m P E x PSe = \displaystyle\sum_{x=1}^m PEx PSe=x=1∑mPEx
上式可化为:
P S e = W m n ⊤ ⋅ S e PSe = W_{mn}\top\centerdot Se PSe=Wmn⊤⋅Se
误差衡量
使用误差衡量的目的是为使误差最小化,方便转化为数学问题,对函数求极值。举个例子使用误差的平方作为误差函数
E = ∑ i = 1 m ( e i ) 2 = ∑ i = 1 m ( T − O ) 2 E = \displaystyle\sum_{i=1}^m(e_i)^2 =\displaystyle\sum_{i=1}^m\Big( T−O\Big)^2 E=i=1∑m(ei)2=i=1∑m(T−O)2
则误差取得极小值的时候即为误差函数的导函数值为0时
权重如何调整
假设现有一个双层网络输入数据为 I I I,输出数据为 O O O,目标结果为 T T T,衡量函数为 E E E,权重矩阵为 W W W,学习率为 L r Lr Lr。
单独调整权重 w 11 w_{11} w11
调整 W W W中的元素 w 11 w_{11} w11,又因为受 w 11 w_{11} w11 响应的数据只有 o 1 o_1 o1,原误差函数中的其余元素可以看做常数,暂不考虑,所以可得如下函数对变量 w 11 w_{11} w11求偏导,
G = ( t 1 − o 1 ) 2 G = \big( t_1−o_1\big)^2 G=(t1−o1)2
由于 o 1 o_1 o1也是自变量 w 11 w_{11} w11的因变量,二者关系如下,并且加号后面表达式为常数:
o 1 ( w ) = ∑ a = 1 n w 1 a i a o 1 ( w ) = w 11 i 1 + ∑ a = 2 n w 1 a i a o_1(w)=\displaystyle\sum_{a=1}^nw_{1a} i_a\\ o_1(w) =w_{11}i_1+\displaystyle\sum_{a=2}^nw_{1a} i_a o1(w)=a=1∑nw1aiao1(w)=w11i1+a=2∑nw1aia
该式又可写为:
f ( w ) = w 11 i 1 ( 1 ) f(w)=w_{11} i_1~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ (1) f(w)=w11i1 (1)
由于 G G G中 t 1 t_1 t1为常数
G o ′ = − 2 ( t 1 − o 1 ) G_o' = -2(t_1-o_1) Go′=−2(t1−o1)
G f ′ = − 2 ( t 1 − o 1 ) o 1 ′ = − 2 ( t 1 − o 1 ) i 1 G_f' = -2(t_1-o_1)o_1'=-2(t_1-o_1)i_1 Gf′=−2(t1−o1)o1′=−2(t1−o1)i1
G w 11 ′ = − 2 ( t 1 − w 11 i 1 + ∑ a = 2 n w 1 a i a ) i 1 G'_{w_{11}}= -2(t_1-w_{11}i_1+\displaystyle\sum_{a=2}^nw_{1a} i_a)i_1 Gw11′=−2(t1−w11i1+a=2∑nw1aia)i1
调整第一行矩阵 w 11 w_{11} w11到 w 1 n w_{1n} w1n
w
11
w_{11}
w11调整函数已得出,接下来考虑调整
w
12
w_{12}
w12,同样因为受
w
12
w_{12}
w12影响的节点只有输出
O
O
O中的
o
1
o_1
o1,不同的是
f
(
w
12
)
=
w
12
i
2
f(w_{12})=w_{12} i_2
f(w12)=w12i2 对应的导数是
i
2
i_2
i2
所以
w
12
w_{12}
w12 调整函数是
G w 12 ′ = − 2 ( t 2 − w 12 i 2 + ∑ a ! = 2 n w 1 a i a ) i 2 G'_{w_{12}}= -2(t_2-w_{12}i_2+\displaystyle\sum_{a!=2}^nw_{1a} i_a)i_2 Gw12′=−2(t2−w12i2+a!=2∑nw1aia)i2
调整权重矩阵
所求矩阵 C e Ce Ce第一行是
C e 1 = g 1 ∗ [ w 11 w 12 . . . w 1 n ] Ce_1=g_1* \begin{bmatrix}w_{11}&w_{12}&...&w_{1n}& \end{bmatrix} Ce1=g1∗[w11w12...w1n]
所以可得 所求矩阵 Ce第二行是
C e 2 = g 2 ∗ [ w 21 w 22 . . . w 2 n ] ⋅ [ i 1 i 2 . . . i n ] Ce_2=g_2* \begin{bmatrix}w_{21}&w_{22}&...&w_{2n}& \end{bmatrix}\centerdot\begin{bmatrix}i_{1}\\i_{2}\\...\\i_{n}\end{bmatrix} Ce2=g2∗[w21w22...w2n]⋅⎣⎢⎢⎡i1i2...in⎦⎥⎥⎤
同理第m行
C e m = g m ∗ [ w m 1 w m 2 . . . w m n ] ⋅ [ i 1 i 2 . . . i n ] Ce_m=g_m* \begin{bmatrix}w_{m1}&w_{m2}&...&w_{mn}&\end{bmatrix}\centerdot\begin{bmatrix}i_{1}\\i_{2}\\...\\i_{n}\end{bmatrix} Cem=gm∗[wm1wm2...wmn]⋅⎣⎢⎢⎡i1i2...in⎦⎥⎥⎤
令 Z = [ g 1 g 2 . . . g m ] Z = \begin{bmatrix}g_1\\g_2\\...\\g_m\end{bmatrix} Z=⎣⎢⎢⎡g1g2...gm⎦⎥⎥⎤
可得所求矩阵 C e = Z ⋅ I Ce = Z\centerdot I Ce=Z⋅I
如果最终 W = W − C e W = W - Ce W=W−Ce