2. 神经网络
神经网络涉及的范围极其广,本章需要了解的推导我们正常给出,但一些附加的内容将以引用块给出,例如:
written by XDU微积冯
1. Feed-forward 前馈神经网络
对于前馈神经网络的推导,我们以下图为样例:
首先,我们有输入变量
x
1
,
x
2
,
.
.
.
,
x
D
x_1,x_2,...,x_D
x1,x2,...,xD。hidden层的单元
j
j
j可以由如下公式计算:
a
j
=
∑
i
=
1
D
w
j
i
(
1
)
x
i
+
w
j
0
(
1
)
=
∑
i
=
0
D
w
j
i
(
1
)
x
i
(1)
a_j = \sum_{i=1}^D w_{ji}^{(1)}x_i + w_{j0}^{(1)} = \sum_{i=0}^D w_{ji}^{(1)}x_i \tag{1}
aj=i=1∑Dwji(1)xi+wj0(1)=i=0∑Dwji(1)xi(1)
z j = h ( a j ) (2) z_j = h(a_j)\tag{2} zj=h(aj)(2)
其中我们设
x
0
=
1
x_0=1
x0=1,
h
(
⋅
)
h(\cdot)
h(⋅)表示非线性激活函数(例如logistic sigmoid)。这样hidden layer的
M
M
M个单元都可以计算得出。那么输出层的单元也可以通过类似方法得到:
a
k
=
∑
j
=
1
M
w
k
j
(
2
)
z
j
+
w
k
0
(
2
)
=
∑
j
=
0
M
w
k
j
(
2
)
z
j
(3)
a_k = \sum_{j=1}^M w_{kj}^{(2)}z_j + w_{k0}^{(2)} = \sum_{j=0}^M w_{kj}^{(2)}z_j \tag{3}
ak=j=1∑Mwkj(2)zj+wk0(2)=j=0∑Mwkj(2)zj(3)
y k = { a k , 针 对 回 归 问 题 σ ( a k ) = 1 1 + exp ( − a k ) , 针 对 二 分 类 (4) y_k = \begin{cases} a_k, \quad 针对回归问题\\ \sigma(a_k) = \frac{1}{1+\exp(-a_k)}, \quad针对二分类 \end{cases}\tag{4} yk={ak,针对回归问题σ(ak)=1+exp(−ak)1,针对二分类(4)
其中我们设
z
0
=
1
z_0=1
z0=1。这样我们整合(1)~(4)式,可以得到两层神经网络的前馈网络函数:
y
k
(
x
,
w
)
=
σ
(
∑
j
=
1
M
w
k
j
(
2
)
h
(
∑
i
=
1
D
w
j
i
(
1
)
x
i
+
w
j
0
(
1
)
)
+
w
k
0
(
2
)
)
=
σ
(
∑
j
=
0
M
w
k
j
(
2
)
h
(
∑
i
=
0
D
w
j
i
(
1
)
x
i
)
)
(5)
\begin{aligned} y_k(\pmb{x},\pmb{w}) &= \sigma\left(\sum_{j=1}^M w_{kj}^{(2)}h\left(\sum_{i=1}^Dw_{ji}^{(1)}x_i+w_{j0}^{(1)} \right)+w_{k0}^{(2)} \right)\\ &= \sigma\left(\sum_{j=0}^M w_{kj}^{(2)}h\left(\sum_{i=0}^Dw_{ji}^{(1)}x_i \right) \right) \end{aligned}\tag{5}
yk(xxx,www)=σ(j=1∑Mwkj(2)h(i=1∑Dwji(1)xi+wj0(1))+wk0(2))=σ(j=0∑Mwkj(2)h(i=0∑Dwji(1)xi))(5)
可以看到,两层神经网络之间使用了连续的非线性激活函数。这是因为线性激活函数的使用,会导致整个网络和一个无隐含层的线性变换等价。并且连续的性质使得网络参数变得可微。
并且,网络结构可以是稀疏的,并不一定要全连接(即求和时不需要包含上一次全部节点),如卷积神经网络CNN。
2. Cost Function & 网络训练
2.1 损失函数
2.1.1 回归问题
对于回归问题,给定输入数据
x
n
(
n
=
1
,
.
.
.
,
N
)
\pmb{x}_n(n=1,...,N)
xxxn(n=1,...,N),和目标变量
t
n
t_n
tn,我们的损失函数可以表示为
E
(
w
)
=
1
2
∑
n
=
1
N
∥
y
(
x
n
,
w
)
−
t
n
∥
2
(6)
E(\pmb{w}) = \frac{1}{2}\sum_{n=1}^N \lVert y(\pmb{x}_n,\pmb{w}) - t_n \rVert^2\tag{6}
E(www)=21n=1∑N∥y(xxxn,www)−tn∥2(6)
我们设目标变量
t
t
t服从高斯分布,均值与
x
\pmb{x}
xxx相关,由神经网络的输出确定,即
p
(
t
∣
x
,
w
)
=
N
(
t
∣
y
(
x
,
w
)
,
β
−
1
)
(7)
p(t|\pmb{x},\pmb{w}) = \mathcal{N}(t|y(\pmb{x},\pmb{w}),\beta^{-1})\tag{7}
p(t∣xxx,www)=N(t∣y(xxx,www),β−1)(7)
那么我们通过整个数据集
X
=
{
x
1
,
.
.
.
,
x
N
}
X=\{\pmb{x_1},...,\pmb{x}_N \}
X={x1x1x1,...,xxxN}和其目标变量
t
=
{
t
1
,
.
.
.
,
t
N
}
\pmb{t}=\{t_1,...,t_N \}
ttt={t1,...,tN}(假设数据独立同分布),可以构造似然函数
p
(
t
∣
X
,
w
,
β
)
=
∏
n
=
1
N
p
(
t
n
∣
x
n
,
w
,
β
)
=
∏
n
=
1
N
N
(
t
∣
y
(
x
n
,
w
)
,
β
−
1
)
(8)
p(\pmb{t}|X,\pmb{w},\beta) = \prod_{n=1}^N p(t_n|\pmb{x}_n,\pmb{w},\beta) = \prod_{n=1}^N \mathcal{N}(t|y(\pmb{x}_n,\pmb{w}),\beta^{-1})\tag{8}
p(ttt∣X,www,β)=n=1∏Np(tn∣xxxn,www,β)=n=1∏NN(t∣y(xxxn,www),β−1)(8)
我们将似然函数取负对数,就有
−
ln
p
(
t
∣
X
,
w
,
β
)
=
β
2
∑
n
=
1
N
{
y
(
x
n
,
w
)
−
t
n
}
2
+
N
2
ln
2
π
−
N
2
ln
β
=
β
2
E
(
w
)
+
N
2
ln
2
π
−
N
2
ln
β
(9)
\begin{aligned} -\ln p(\pmb{t}|X,\pmb{w},\beta) &= \frac{\beta}{2}\sum_{n=1}^N\{y(\pmb{x}_n,\pmb{w})-t_n \}^2+\frac{N}{2}\ln 2\pi -\frac{N}{2}\ln \beta\\ &= \frac{\beta}{2}E(\pmb{w}) + \frac{N}{2}\ln 2\pi -\frac{N}{2}\ln \beta \end{aligned}\tag{9}
−lnp(ttt∣X,www,β)=2βn=1∑N{y(xxxn,www)−tn}2+2Nln2π−2Nlnβ=2βE(www)+2Nln2π−2Nlnβ(9)
其中与参数
w
\pmb{w}
www有关的项就是平方和损失。我们可以通过最小化该损失得到最优的参数
w
M
L
\pmb{w}_{ML}
wwwML。接着我们可以寻找
β
\beta
β的最优值
∇
L
(
β
)
=
1
2
∑
n
=
1
N
{
y
(
x
n
,
w
)
−
t
n
}
2
−
N
2
1
β
=
0
1
β
M
L
=
1
N
∑
n
=
1
N
{
y
(
x
n
,
w
)
−
t
n
}
2
(10)
\nabla L(\beta) = \frac{1}{2}\sum_{n=1}^N \{y(\pmb{x}_n,\pmb{w})-t_n \}^2 - \frac{N}{2}\frac{1}{\beta}=0 \\ \frac{1}{\beta_{ML}} = \frac{1}{N}\sum_{n=1}^N \{y(\pmb{x}_n,\pmb{w})-t_n \}^2\tag{10}
∇L(β)=21n=1∑N{y(xxxn,www)−tn}2−2Nβ1=0βML1=N1n=1∑N{y(xxxn,www)−tn}2(10)
对于多元目标变量
t
\pmb{t}
ttt,我们也可以有类似推导,这里不再赘述。
根据式(4),对于神经网络的输出
y
k
=
a
k
y_k= a_k
yk=ak,在回归问题下,使用平方和损失有如下性质
∂
E
∂
a
k
=
y
k
−
t
k
(11)
\frac{\partial E}{\partial a_k} = y_k - t_k\tag{11}
∂ak∂E=yk−tk(11)
2.1.2 二分类和多分类
针对二分类,我们使用一元目标变量
t
t
t表示类别,
t
=
1
t=1
t=1表示类别
C
1
C_1
C1,
t
=
0
t=0
t=0表示类别
C
2
C_2
C2。它使用sigmoid激活函数
y
=
σ
(
a
)
=
1
1
+
exp
(
−
a
)
(12)
y = \sigma(a) = \frac{1}{1+\exp(-a)}\tag{12}
y=σ(a)=1+exp(−a)1(12)
从而
0
≤
y
(
x
,
w
)
≤
1
0\leq y(\pmb{x},\pmb{w})\leq 1
0≤y(xxx,www)≤1。若
p
(
C
1
∣
x
)
=
y
(
x
,
w
)
p(C_1|\pmb{x})=y(\pmb{x},\pmb{w})
p(C1∣xxx)=y(xxx,www),则
p
(
C
2
∣
x
)
=
1
−
y
(
x
,
w
)
p(C_2|\pmb{x})=1-y(\pmb{x},\pmb{w})
p(C2∣xxx)=1−y(xxx,www)。于是对于目标变量
t
t
t,其类条件概率为
p
(
t
∣
x
,
w
)
=
y
(
x
,
w
)
t
(
1
−
y
(
x
,
w
)
)
1
−
t
(13)
p(t|\pmb{x},\pmb{w}) = y(\pmb{x},\pmb{w})^t (1-y(\pmb{x},\pmb{w}))^{1-t}\tag{13}
p(t∣xxx,www)=y(xxx,www)t(1−y(xxx,www))1−t(13)
则对于数据集而言,似然函数可以表示为
p
(
t
∣
X
,
w
)
=
∏
n
=
1
N
y
n
t
n
(
1
−
y
n
)
t
n
(14)
p(\pmb{t}|X,\pmb{w}) = \prod_{n=1}^N y_n^{t_n} (1-y_n)^{t_n}\tag{14}
p(ttt∣X,www)=n=1∏Nyntn(1−yn)tn(14)
损失函数(交叉熵损失)取为似然函数的负对数,即
E
(
w
)
=
−
∑
n
=
1
N
{
t
n
ln
y
n
+
(
1
−
t
n
)
ln
(
1
−
y
n
)
}
(15)
E(\pmb{w}) = -\sum_{n=1}^N \{t_n\ln y_n + (1-t_n)\ln(1-y_n) \}\tag{15}
E(www)=−n=1∑N{tnlnyn+(1−tn)ln(1−yn)}(15)
针对多个独立二分类问题,类似地有类条件概率、损失函数如下
p
(
t
∣
x
,
w
)
=
∏
k
=
1
K
y
k
(
x
,
w
)
t
k
(
1
−
y
k
(
x
,
w
)
)
1
−
t
k
E
(
w
)
=
−
∑
n
=
1
N
∑
k
=
1
K
{
t
n
k
ln
y
n
k
+
(
1
−
t
n
k
)
ln
(
1
−
y
n
k
)
}
(16)
p(\pmb{t}|\pmb{x},\pmb{w}) = \prod_{k=1}^K y_k(\pmb{x},\pmb{w})^{t_k} (1-y_k(\pmb{x},\pmb{w}))^{1-t_k} \\ E(\pmb{w}) = -\sum_{n=1}^N\sum_{k=1}^K \{t_{nk} \ln y_{nk}+(1-t_{nk})\ln(1-y_{nk}) \}\tag{16}
p(ttt∣xxx,www)=k=1∏Kyk(xxx,www)tk(1−yk(xxx,www))1−tkE(www)=−n=1∑Nk=1∑K{tnklnynk+(1−tnk)ln(1−ynk)}(16)
针对多分类问题,激活函数为softmax函数
y
k
(
x
,
w
)
=
p
(
C
k
∣
x
)
=
exp
(
a
k
(
x
,
w
)
)
∑
j
exp
(
a
j
(
x
,
w
)
)
(17)
y_k(\pmb{x},\pmb{w}) = p(C_k|\pmb{x}) =\frac{\exp\left(a_k(\pmb{x},\pmb{w})\right)}{\sum_j\exp(a_j(\pmb{x},\pmb{w}))}\tag{17}
yk(xxx,www)=p(Ck∣xxx)=∑jexp(aj(xxx,www))exp(ak(xxx,www))(17)
可见
∑
j
y
j
(
x
,
w
)
=
1
\sum_jy_j(\pmb{x},\pmb{w})=1
∑jyj(xxx,www)=1。损失函数可以表示为
E
(
w
)
=
−
∑
n
=
1
N
∑
k
=
1
K
t
n
k
ln
y
k
(
x
n
,
w
)
(18)
E(\pmb{w}) = -\sum_{n=1}^N\sum_{k=1}^K t_{nk}\ln y_k(\pmb{x}_n,\pmb{w})\tag{18}
E(www)=−n=1∑Nk=1∑Ktnklnyk(xxxn,www)(18)
2.2 局部二次近似
我们将损失函数在某点泰勒展开
E
(
w
)
≃
E
(
w
^
)
+
(
w
−
w
^
)
T
b
+
1
2
(
w
−
w
^
)
T
H
(
w
−
w
^
)
(19)
E(\pmb{w}) \simeq E(\hat{\pmb{w}}) + (\pmb{w}-\hat{\pmb{w}})^T\pmb{b}+\frac{1}{2}(\pmb{w}-\hat{\pmb{w}})^TH(\pmb{w}-\hat{\pmb{w}})\tag{19}
E(www)≃E(www^)+(www−www^)Tbbb+21(www−www^)TH(www−www^)(19)
使用其中的梯度信息寻找最优参数
w
w
w。具体流程详见PPT,并非重点。
3. Backpropagation 反向传播
对于整个数据集而言,损失函数表达为各数据点的损失之和
E
(
w
)
=
∑
n
=
1
N
E
n
(
w
)
(20)
E(\pmb{w}) = \sum_{n=1}^N E_n(\pmb{w})\tag{20}
E(www)=n=1∑NEn(www)(20)
对总体损失进行梯度下降会面临计算量大,数据冗余的问题,所以我们采用顺序梯度下降(也被称为在线梯度下降)
w
τ
+
1
=
w
τ
−
η
∇
E
n
(
w
τ
)
(21)
\pmb{w}^{\tau+1} = \pmb{w}^\tau - \eta\nabla E_n(\pmb{w}^\tau)\tag{21}
wwwτ+1=wwwτ−η∇En(wwwτ)(21)
现在,我们使用损失函数式(6)进行讨论。
对于一个前馈网络,我们可以由式(1)(2)得
a
j
=
∑
i
w
j
i
z
i
z
j
=
h
(
a
j
)
(22)
a_j = \sum_i w_{ji} z_i\\ z_j = h(a_j)\tag{22}
aj=i∑wjizizj=h(aj)(22)
其中我们省略了上标,即
z
i
z_i
zi表示上一层的输出(即本层输入),
z
j
z_j
zj表示这一层的输出。
我们求损失函数
E
n
E_n
En关于该层参数
w
j
i
w_{ji}
wji的导数,有:
∂
E
n
∂
w
j
i
=
∂
E
n
∂
a
j
∂
a
j
∂
w
j
i
=
δ
j
z
j
(23)
\begin{aligned} \frac{\partial E_n}{\partial w_{ji}} &= \frac{\partial E_n}{\partial a_j}\frac{\partial a_j}{\partial w_{ji}}\\ &= \delta_j z_j\tag{23} \end{aligned}
∂wji∂En=∂aj∂En∂wji∂aj=δjzj(23)
其中
δ
j
=
∂
E
n
∂
a
j
\delta_j = \frac{\partial E_n}{\partial a_j}
δj=∂aj∂En。由上式可得,想要求解(23),我们只需要得到
δ
j
\delta_j
δj的值即可。
对于神经网络的输出层单元
y
k
=
a
k
y_k=a_k
yk=ak,我们使用式(11)有
δ
k
=
∂
E
n
∂
a
k
=
y
k
−
t
k
(24)
\delta_k = \frac{\partial E_n}{\partial a_k} = y_k - t_k\tag{24}
δk=∂ak∂En=yk−tk(24)
则对于输出层的上一层,我们有
δ
j
=
∑
k
∂
E
n
∂
a
k
∂
a
k
∂
a
j
=
∑
k
δ
k
⋅
(
h
′
(
a
j
)
w
k
j
)
=
h
′
(
a
j
)
∑
k
w
k
j
δ
k
(25)
\begin{aligned} \delta_j &= \sum_k \frac{\partial E_n}{\partial a_k}\frac{\partial a_k}{\partial a_j}\\ &= \sum_k \delta_k\cdot (h'(a_j)w_{kj}) =h'(a_j)\sum_k w_{kj}\delta_k \end{aligned}\tag{25}
δj=k∑∂ak∂En∂aj∂ak=k∑δk⋅(h′(aj)wkj)=h′(aj)k∑wkjδk(25)
式(25)就是反向传播的公式。我们可以通过此式继续求解
a
j
a_j
aj所在层的上一层,以此类推。
于是反向传播的4个步骤可以表述为
- 对网络的一个输入 x n \pmb{x}_n xxxn,先通过正向传播,计算出所有的激活 z j z_j zj;
- 用公式(24)计算所有输出单元的 δ k \delta_k δk;
- 使用式(25)反向传播,获得所有hidden单元的 δ j \delta_j δj;
- 使用式(23)计算所有权重的导数。
最终我们可以用式(21)作每一轮的更新,迭代求得最优解。
4. 神经网络的正则化
对神经网络的正则化有多种方式。
神经网络的输入层和输出层通常由数据维度和目标变量维度决定,但中间的hidden layer的维度(或称隐含单元数量)M则是可调节的超参数。我们可以通过调节M的具体值来提升模型的泛化性能,如下图所示:
当然,我们有其他的方式来提升神经网络模型的泛化能力,以避免过拟合。
4.1 权值衰减及其变式
一个简单且常用的方法就是在损失函数上加入正则化项
E
~
(
w
)
=
E
(
w
)
+
λ
2
w
T
w
(26)
\tilde E(\pmb{w}) = E(\pmb{w}) + \frac{\lambda}{2}\pmb{w}^T\pmb{w}\tag{26}
E~(www)=E(www)+2λwwwTwww(26)
该式被称为权值衰减(weight decay)。权值衰减的正则化项(第二项)可以表示为权值
w
\pmb{w}
www上的零均值高斯先验分布的负对数。权值衰减的局限是它与网络映射的确定缩放性质不相容。
什么是网络映射的缩放性质?
考虑简单的两层网络
z j = h ( ∑ i w j i x i + w j 0 ) y k = ∑ j w k j z j + w k 0 (27) z_j = h\left( \sum_i w_{ji}x_i+w_{j0} \right)\\ y_k = \sum_jw_{kj}z_j+w_{k0}\tag{27} zj=h(i∑wjixi+wj0)yk=j∑wkjzj+wk0(27)
假设我们对输入变量进行线性变换,形式为
x i → x ~ i = a x i + b (28) x_i \rightarrow \tilde{x}_i=ax_i+b\tag{28} xi→x~i=axi+b(28)
为使网络给出的映射不发生变化,我们可以对权重作如下变化
w j i → w ~ j i = 1 a w j i w j 0 → w ~ j 0 = w j 0 − b a ∑ i w j i (29) w_{ji} \rightarrow \tilde{w}_{ji} = \frac{1}{a}w_{ji}\\ w_{j0} \rightarrow \tilde{w}_{j0}=w_{j0} - \frac{b}{a}\sum_iw_{ji}\tag{29} wji→w~ji=a1wjiwj0→w~j0=wj0−abi∑wji(29)
类似地,针对输出变量进行线性变换,我们也可以通过对权重进行变换而使网络的映射不发生变化:
y k → y ~ k = c y k + d (30) y_k \rightarrow \tilde{y}_k = cy_k+d\tag{30} yk→y~k=cyk+d(30)w k j → w ~ k j = c ⋅ w k j w k 0 → w ~ k 0 = c w k 0 + d (31) w_{kj} \rightarrow \tilde{w}_{kj}=c\cdot w_{kj}\\ w_{k0} \rightarrow \tilde{w}_{k0}=cw_{k0}+d\tag{31} wkj→w~kj=c⋅wkjwk0→w~k0=cwk0+d(31)
在每次线性变换时,我们都修改了权重
w
w
w的数值,这会使得权值衰减的正则化项发生变化,不满足映射的不变性。于是我们要优化权值衰减的表达式,使之满足这种不变性。这样的正则化项为
λ
1
2
∑
w
∈
W
1
w
2
+
λ
2
2
∑
w
∈
W
2
w
2
(32)
\frac{\lambda_1}{2}\sum_{w\in \mathcal{W}_1}w^2+\frac{\lambda_2}{2}\sum_{w\in \mathcal{W}_2}w^2\tag{32}
2λ1w∈W1∑w2+2λ2w∈W2∑w2(32)
其中
W
1
,
W
2
\mathcal{W}_1,\mathcal{W}_2
W1,W2分别表示第一层权重和第二层权重。我们可以通过对参数
λ
\lambda
λ进行线性变换而使正则化项不变。
式(32)就是权值衰减的一个变式,它则对应于下面形式的先验概率分布
p
(
w
∣
α
1
,
α
2
)
∝
exp
(
−
α
1
2
∑
w
∈
W
1
w
2
−
α
2
2
∑
w
∈
W
2
w
2
)
(33)
p(\pmb{w}|\alpha_1,\alpha_2) \propto \exp \left( -\frac{\alpha_1}{2}\sum_{w\in \mathcal{W}_1}w^2 - \frac{\alpha_2}{2}\sum_{w\in \mathcal{W}_2}w^2 \right)\tag{33}
p(www∣α1,α2)∝exp(−2α1w∈W1∑w2−2α2w∈W2∑w2)(33)
但是,这个形式的先验概率首先不能够被归一化,其次会给正则化系数的选择带来困难。
4.2 早停止
因为非线性网络模型的训练对应于误差函数的迭代减小,而误差函数是针对训练集定义的,且随优化算法的迭代逐渐减小(或不增)。但对于验证集数据上的损失,通常随着优化算法迭代先减小后增大,如下图所示:
早停止是指训练过程可以在关于验证集误差最小的点停止,这样可以得到一个泛化性能最强的模型。
4.3 不变性 Invariances
在许多模式识别的应用中,对于输入变量的一系列变换,模型的预测结果不应该发生变化,或者说应具有不变性。例如手写数字识别的分类问题中,图像的类别应与图片中数字的位置和大小无关,尽管位置和大小的变换会导致图片像素值发生巨大变化。
如果可以获得足够多的训练模式(即包含足够多表示各种变换的效果的样本),那么可调节的模型(例如神经网络)可以学习到不变性。但实际中训练样本受限,我们必须有其他方法来让这些模型学习不变性。具体的方法有:
-
复制训练模式,同时根据要求的不变性进行变换,对训练集进行扩展。例如在手写数字识别数据集中,把每个样本复制多次,在对每个复制的样本执行不同的平移操作。
评价:简单、可以用来处理复杂的不变性
-
为误差函数加上一个正则化项,用以惩罚当输入变换时,输出发生的改变。这引出了切线传播方法。
评价:保持了数据集不变性,给误差函数加了正则化项。
切线传播方法概述:
对于一个特定输入向量 x n \pmb{x}_n xxxn,考虑变换产生的效果。假设变换是连续的(例如平移和旋转),那么变换的模式会扫过D维输入空间的一个流形 M \mathcal{M} M。例如当D=2时,有如下图所示
![]()
假设变换由单一参数 ξ \xi ξ控制(例如 ξ \xi ξ可能是旋转的角度),那么被 x n \pmb{x}_n xxxn扫过的子空间 M \mathcal{M} M是一维的,并且以 ξ \xi ξ为参数。将此变换作用于 x n \pmb{x}_n xxxn上产生的向量设为 s ( x n , ξ ) \pmb{s}(\pmb{x}_n,\xi) sss(xxxn,ξ),且 s ( x n , 0 ) = x n \pmb{s}(\pmb{x}_n,0)=\pmb{x}_n sss(xxxn,0)=xxxn。那么曲线 M \mathcal{M} M的切线就由方向导数 τ = ∂ x ∂ ξ \pmb{\tau}=\frac{\partial\pmb{x}}{\partial \xi} τττ=∂ξ∂xxx给出,且点 x n \pmb{x}_n xxxn处有
τ n = ∂ s ( x n , ξ ) ∂ ξ ∣ ξ = 0 (34) \pmb{\tau}_n = \frac{\partial \pmb{s}(\pmb{x}_n,\xi)}{\partial \xi}\vert_{\xi=0}\tag{34} τττn=∂ξ∂sss(xxxn,ξ)∣ξ=0(34)
输入变量变换后,输出通常会发生改变,输出单元k关于 ξ \xi ξ的导数为
∂ y k ∂ ξ ∣ ξ = 0 = ∑ i = 1 D ∂ y k ∂ x i ∂ x i ∂ ξ ∣ ξ = 0 = ∑ i = 1 D J k i τ i (35) \frac{\partial y_k}{\partial \xi}\vert_{\xi=0} = \sum_{i=1}^D \frac{\partial y_k}{\partial x_i}\frac{\partial x_i}{\partial \xi}\vert_{\xi=0}=\sum_{i=1}^D J_{ki}\tau_i\tag{35} ∂ξ∂yk∣ξ=0=i=1∑D∂xi∂yk∂ξ∂xi∣ξ=0=i=1∑DJkiτi(35)
其中 J k i J_{ki} Jki是Jacobian矩阵的第(k,i)个元素。我们惩罚输出的这种改变,于是在损失函数上加入正则化项
E ~ = E + λ Ω (36) \tilde E = E + \lambda\Omega\tag{36} E~=E+λΩ(36)
λ \lambda λ为正则化系数,且
Ω = 1 2 ∑ n ∑ k ( ∂ y k ∂ ξ ∣ ξ = 0 ) 2 = 1 2 ∑ n ∑ k ( ∑ i = 1 D J n k i τ n i ) 2 (37) \Omega = \frac{1}{2}\sum_n\sum_k \left(\frac{\partial y_k}{\partial \xi}\vert_{\xi=0}\right)^2=\frac{1}{2}\sum_n\sum_k\left( \sum_{i=1}^DJ_{nki}\tau_{ni} \right)^2\tag{37} Ω=21n∑k∑(∂ξ∂yk∣ξ=0)2=21n∑k∑(i=1∑DJnkiτni)2(37)
-
抽取在所要求的变换下不发生改变的特征,这使得不变性被整合到与处理过程中,任何使用这些特征作为输入的模型就会具有这些不变性。
评价:对于数据集没有包含的变换,可以正确地进行外插(即只需要扩展特征向量即可)。
-
把不变性的性质整合到神经网络的构建中,或者对于相关向量机的方法,整合到核函数中。例如,通过使用局部接收场和共享权重的CNN算法。
5. Jacobian矩阵和Hessian矩阵
Jacobian矩阵可以求解网络输出关于网络输入的导数,Hessian矩阵计算的是误差函数的二阶导数。由于式(35)(37)使用了前者,故我们简要推导一下Jacobian矩阵的公式。而对于Hessian矩阵,它的计算有多种方法(对角近似、外积近似、有限差、精确计算),内容较多且不在考察范围内,且建议有时间可以看看PPT,本文不再赘述。
Jacobian矩阵的元素值是网络输出关于输入的导数
J
k
i
=
∂
y
k
∂
x
i
(38)
J_{ki} = \frac{\partial y_k}{\partial x_i}\tag{38}
Jki=∂xi∂yk(38)
这个矩阵的用处非常大。例如我们想关于下图的参数 w w w,最小化误差函数 E E E,那么误差函数的导数为
∂ E ∂ w = ∑ k , j ∂ E ∂ y k ∂ y k ∂ z j ∂ z j ∂ w (39) \frac{\partial E}{\partial w} = \sum_{k,j} \frac{\partial E}{\partial y_k} \frac{\partial y_k}{\partial z_j} \frac{\partial z_j}{\partial w}\tag{39} ∂w∂E=k,j∑∂yk∂E∂zj∂yk∂w∂zj(39)
其中Jacobian矩阵出现在中间项。其次,由于Jacobian矩阵度量了输出对于每个输入变量改变的敏感性(由于计算的是导数),因此它可以估计输入变量的误差 Δ x i \Delta x_i Δxi对于输出误差 Δ y k \Delta y_k Δyk的贡献
Δ y k = ∑ i ∂ y k ∂ x i Δ x i (40) \Delta y_k = \sum_i \frac{\partial y_k}{\partial x_i}\Delta x_i\tag{40} Δyk=i∑∂xi∂ykΔxi(40)
可以看到,Jacobian矩阵是关于输入向量的矩阵,故对于新的输入向量,Jacobian矩阵要重新计算。可通过反向传播算法计算:
J
k
i
=
∂
y
k
∂
x
i
=
∑
j
∂
y
k
∂
a
j
∂
a
j
∂
x
i
=
∑
j
w
j
i
∂
y
k
∂
a
j
(41)
\begin{aligned} J_{ki} = \frac{\partial y_k}{\partial x_i} &= \sum_j \frac{\partial y_k}{\partial a_j}\frac{\partial a_j}{\partial x_i}\\ &= \sum_j w_{ji}\frac{\partial y_k}{\partial a_j}\tag{41} \end{aligned}
Jki=∂xi∂yk=j∑∂aj∂yk∂xi∂aj=j∑wji∂aj∂yk(41)
其中的求和式作用于所有向单元i发送链接的单元j上(
a
j
a_j
aj是与
x
i
x_i
xi有连接的,下一层中的单元,由于
x
i
x_i
xi位于输入层,则
a
j
a_j
aj是第一个隐含层的单元)。我们可以用式(25)来进一步计算
∂
y
k
∂
a
j
=
∑
l
∂
y
k
∂
a
l
∂
a
l
∂
a
j
=
h
′
(
a
j
)
∑
l
w
l
j
∂
y
k
∂
a
l
(42)
\begin{aligned} \frac{\partial y_k}{\partial a_j} &= \sum_l \frac{\partial y_k}{\partial a_l}\frac{\partial a_l}{\partial a_j} \\ &= h'(a_j)\sum_l w_{lj}\frac{\partial y_k}{\partial a_l}\tag{42} \end{aligned}
∂aj∂yk=l∑∂al∂yk∂aj∂al=h′(aj)l∑wlj∂al∂yk(42)
其中
a
l
a_l
al又是
a
j
a_j
aj所在隐含层的下一层中的单元。这样通过不断地递归,可以求得Jacobian矩阵的值。