赞
踩
首先定义一些需要使用的变量:
L
L
L = total number of layers in the network;
s
l
s_l
sl = number of units (not counting bias unit) in layer
l
l
l
K
K
K = number of output units/classes
将神经网络的分类定义为两种情况:二类分类和多类分类,
二类分类: S L = 0 , y = 0 o r 1 S_L=0, y=0\, or\, 1 SL=0,y=0or1表示哪一类;
K K K类分类: S L = k , y i = 1 S_L=k, y_i = 1 SL=k,yi=1表示分到第 i i i类; ( k > 2 ) (k>2) (k>2)
神经网络代价函数
J
(
θ
)
J(\theta)
J(θ)将是用于逻辑回归的成本函数的推广。
逻辑回归问题中代价函数为:
J ( θ ) = − 1 m [ ∑ i = 1 m y ( i ) log h θ ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J\left(\theta \right)=-\frac{1}{m}\left[\sum_{i=1}^{m}{y}^{(i)}\log{h_\theta({x}^{(i)})}+\left(1-{y}^{(i)}\right)log\left(1-h_\theta\left({x}^{(i)}\right)\right)\right]+\frac{\lambda}{2m}\sum_{j=1}^{n}{\theta_j}^{2} J(θ)=−m1[i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2
在Logistic Regression中,只有一个输出变量,也只有一个因变量
y
y
y,但是在Neural Network中,输出层可以有多个变量,
h
θ
(
x
)
h_\theta(x)
hθ(x)是一个
K
∗
1
K*1
K∗1的列向量,故代价函数会比逻辑回归更多元,为:
\newcommand{\subk}[1]{ #1_k }
h
θ
(
x
)
∈
R
K
h_\theta\left(x\right)\in \mathbb{R}^{K}
hθ(x)∈RK
(
h
θ
(
x
)
)
i
=
i
t
h
output
{\left({h_\theta}\left(x\right)\right)}_{i}={i}^{th} \text{output}
(hθ(x))i=ithoutput
J
(
Θ
)
=
−
1
m
[
∑
i
=
1
m
∑
k
=
1
k
y
k
(
i
)
log
(
h
Θ
(
x
(
i
)
)
)
+
(
1
−
y
k
(
i
)
)
log
(
1
−
(
h
Θ
(
x
(
i
)
)
)
)
]
+
λ
2
m
∑
l
=
1
L
−
1
∑
i
=
1
s
l
∑
j
=
1
s
l
+
1
(
Θ
j
i
(
l
)
)
2
J(\Theta) = -\frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{k=1}^{k} {y_k}^{(i)} \log {(h_\Theta(x^{(i)}))} + \left( 1 - y_k^{(i)} \right) \log \left( 1- {\left( h_\Theta \left( x^{(i)} \right) \right)} \right) \right] + \frac{\lambda}{2m} \sum_{l=1}^{L-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_{l+1}} \left( \Theta_{ji}^{(l)} \right)^2
J(Θ)=−m1[i=1∑mk=1∑kyk(i)log(hΘ(x(i)))+(1−yk(i))log(1−(hΘ(x(i))))]+2mλl=1∑L−1i=1∑slj=1∑sl+1(Θji(l))2
添加一些嵌套求和来说明多个输出节点。 在等式的第一部分,在方括号之前,有一个额外的嵌套求和,它循环遍历输出节点的数量。
在正则化部分,在方括号之后,必须考虑多个 θ \theta θ 矩阵。 当前 θ \theta θ 矩阵中的列数等于当前层中的节点数(包括bias偏置单元)。当前的 θ \theta θ 矩阵中的行数等于下一层的节点数(不包括bias偏置单元)。 与之前的逻辑回归一样,对每一项进行平方。
小结:
double sum 只是将输出层中每个单元格计算的逻辑回归成本相加;
tribal sum 只是将整个网络中所有单个 Θ 的平方相加;其中 j 可看做Θ的列,i 为Θ的行;
三重总和中的 i 不是指训练示例 i。
后续修改: 上述改为"其中 i 可看做Θ的列,j 为Θ的行"
“反向传播”是神经网络术语,用于最小化成本函数,就像在逻辑回归和线性回归中使用梯度下降所做的一样。 目标是计算: m i n J ( Θ ) minJ(\Theta) minJ(Θ).
也就是说,希望使用 θ \theta θ 中的一组最佳参数来最小化的成本函数 J J J。为了计算代价函数的偏导数 ∂ ∂ Θ i j ( l ) J ( Θ ) \frac{\partial}{\partial\Theta^{(l)}_{ij}}J\left(\Theta\right) ∂Θij(l)∂J(Θ),需要采用一种反向传播算法,也就是首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。注, 第一层是输入层, 不计算误差.
在看BP前,先看FP,也就是在计算神经网络预测结果时采用了一种正向传播方法,从第一层开始正向一层一层进行计算,直到最后一层的 h θ ( x ) h_{\theta}\left(x\right) hθ(x)。
前向传播算法(Forward Propagation):
反向传播算法(Back Propagation Algorithm):
下面的公式推导之前可先查看:
<https://blog.csdn.net/weixin_45091300/article/details/119956352?spm=1001.2014.3001.5501>
从最后一层的误差开始计算,误差是激活单元的预测(
a
(
4
)
{a^{(4)}}
a(4))与实际值(
y
k
y^k
yk)之间的误差,(
k
=
1
:
k
k=1:k
k=1:k)。
用
δ
\delta
δ来表示误差,则:
δ
(
4
)
=
a
(
4
)
−
y
\delta^{(4)}=a^{(4)}-y
δ(4)=a(4)−y
利用这个误差值来计算前一层的误差:
δ
(
3
)
=
(
Θ
(
3
)
)
T
δ
(
4
)
∗
s
′
(
z
(
3
)
)
\delta^{(3)}=\left({\Theta^{(3)}}\right)^{T}\delta^{(4)}\ast s'\left(z^{(3)}\right)
δ(3)=(Θ(3))Tδ(4)∗s′(z(3))
其中
s
′
(
z
(
3
)
)
s'(z^{(3)})
s′(z(3))是
s
i
g
m
o
i
d
sigmoid
sigmoid 函数的导数,
s
′
(
z
(
3
)
)
=
a
(
3
)
∗
(
1
−
a
(
3
)
)
s'(z^{(3)})=a^{(3)}\ast(1-a^{(3)})
s′(z(3))=a(3)∗(1−a(3))。而
(
θ
(
3
)
)
T
δ
(
4
)
(θ^{(3)})^{T}\delta^{(4)}
(θ(3))Tδ(4)则是权重导致的误差的和。下一步是继续计算第二层的误差:
δ
(
2
)
=
(
Θ
(
2
)
)
T
δ
(
3
)
∗
s
′
(
z
(
2
)
)
\delta^{(2)}=(\Theta^{(2)})^{T}\delta^{(3)}\ast s'(z^{(2)})
δ(2)=(Θ(2))Tδ(3)∗s′(z(2))
因为第一层是输入变量,不存在误差。有了所有的误差的表达式后,便可以计算代价函数的偏导数了,假设
λ
=
0
λ=0
λ=0,即不做任何正则化(Regularization)处理时有:
∂
∂
Θ
i
j
(
l
)
J
(
Θ
)
=
a
j
(
l
)
δ
i
l
+
1
\frac{\partial}{\partial\Theta_{ij}^{(l)}}J(\Theta)=a_{j}^{(l)} \delta_{i}^{l+1}
∂Θij(l)∂J(Θ)=aj(l)δil+1
其中上下标的含义:
l 代表目前所计算的是第几层;
j 代表目前计算层中的激活单元的下标,也将是下一层的第j个输入变量的下标;
i 代表下一层中误差单元的下标,是受到权重矩阵中第 i 行影响的下一层中的误差单元的下标。
前向传播算法:
圈出的部分是偏置单元(bias unit), 在计算时要时刻注意. 即:
x
0
=
a
0
(
2
)
=
a
0
(
3
)
=
1
x_0=a^{(2)}_0=a^{(3)}_0=1
x0=a0(2)=a0(3)=1
FP是按照设定的参数
θ
(
l
)
\theta^{(l)}
θ(l)与特征值
x
(
i
)
x^{(i)}
x(i)逐层进行计算, 即:
a
1
(
2
)
=
s
(
θ
10
(
1
)
x
0
+
θ
11
(
1
)
x
1
+
θ
12
(
1
)
x
2
)
a
2
(
2
)
=
s
(
θ
20
(
1
)
x
0
+
θ
21
(
1
)
x
1
+
θ
22
(
1
)
x
2
)
反向传播算法做的是:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。