神经网络出现的原因
在上一篇博客中吴恩达系列视频笔记1–回归与分类,我们学习了几种比较强大的模型,可以解决一些基本问题,如房价预测,肿瘤的分类,而且所有问题都可以大致归为分类和回归两类,既然所有的问题都能解决,那为什么我们还要学习神经网络?
拿目前较热的计算机视觉来说,当我们处理图像时只处理50x50px的图像,每个像素点作为特征输入,共有2500个特征,如果我们使用彩色图像,每个像素点都包含RGB三个值,此时应该有7500个特征,所有特征我们只做二次项组合就有7500x7500个特征组合,这时我们需要处理的特征量,无论是通过筛选后使用还是直接使用都是之前的模型无法承受的,因此我们需要更为强大的神经网络智能化的提取更具表达力的特征。我们通过对神经网络原理的介绍来具体研究神经网络是如何智能化提取特征。
1.神经网络原理
正向传播过程
a
1
(
2
)
=
g
(
Θ
10
(
1
)
x
0
+
Θ
11
(
1
)
x
1
+
Θ
12
(
1
)
x
2
+
Θ
13
(
1
)
x
3
)
a
2
(
2
)
=
g
(
Θ
20
(
1
)
x
1
+
Θ
21
(
1
)
x
1
+
Θ
22
(
1
)
x
2
+
Θ
23
(
1
)
x
3
)
a
3
(
2
)
=
g
(
Θ
30
(
1
)
x
0
+
Θ
31
(
1
)
x
1
+
Θ
32
(
1
)
x
2
+
Θ
33
(
1
)
x
3
)
h
θ
(
x
)
=
a
1
(
3
)
=
g
(
Θ
10
(
2
)
a
0
(
2
)
+
Θ
11
(
2
)
a
1
(
2
)
+
Θ
12
(
2
)
a
2
(
2
)
+
Θ
13
(
2
)
a
3
(
2
)
)
a_{1}^{(2)}=g(\Theta _{10}^{(1)}x_{0}+\Theta _{11}^{(1)}x_{1}+\Theta _{12}^{(1)}x_{2}+\Theta _{13}^{(1)}x_{3})\\[2mm] a_{2}^{(2)}=g(\Theta _{20}^{(1)}x_{1}+\Theta _{21}^{(1)}x_{1}+\Theta _{22}^{(1)}x_{2}+\Theta _{23}^{(1)}x_{3})\\[2mm] a_{3}^{(2)}=g(\Theta _{30}^{(1)}x_{0}+\Theta _{31}^{(1)}x_{1}+\Theta _{32}^{(1)}x_{2}+\Theta _{33}^{(1)}x_{3})\\[2mm] h_{\theta }(x)=a_{1}^{(3)}=g(\Theta _{10}^{(2)}a_{0}^{(2)}+\Theta _{11}^{(2)}a_{1}^{(2)}+\Theta _{12}^{(2)}a_{2}^{(2)}+\Theta _{13}^{(2)}a_{3}^{(2)})
a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)a2(2)=g(Θ20(1)x1+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)hθ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))
输入的特征为x1,x2,x3,theta的计算实质是为我们提取了少量的具代表性的特征a1,a2,a3,以往的逻辑回归以及回归问题中都是需要依赖我们的经验来选取特征,神经网络这种自动提炼特征的方式使我们摆脱了传统经验提取特征的方式,使特征的提取更加科学化智能化。并且根据公式,我们能很明显的看到每层的传播规则相同,公式相似只是参数不同,也就意味着我们可以通过矩阵乘法计算一次性计算一层的所有公式加速计算速度。
反向传播算法
反向传播过程公式
δ
1
(
4
)
=
y
(
i
)
−
a
1
(
4
)
δ
1
(
3
)
=
δ
1
(
4
)
θ
11
(
3
)
δ
2
(
3
)
=
δ
1
(
4
)
θ
12
(
3
)
δ
1
(
2
)
=
δ
1
(
3
)
θ
11
(
2
)
+
δ
2
(
3
)
θ
21
(
2
)
δ
2
(
2
)
=
δ
1
(
3
)
θ
12
(
2
)
+
δ
2
(
3
)
θ
22
(
2
)
\delta _{1}^{(4)}=y^{(i)}-a_{1}^{(4)}\\[2mm] \delta _{1}^{(3)}=\delta _{1}^{(4)}\theta _{11}^{(3)}\\[2mm] \delta _{2}^{(3)}=\delta _{1}^{(4)}\theta _{12}^{(3)}\\[2mm] \delta _{1}^{(2)}=\delta _{1}^{(3)}\theta _{11}^{(2)}+\delta _{2}^{(3)}\theta _{21}^{(2)}\\[2mm] \delta _{2}^{(2)}=\delta _{1}^{(3)}\theta _{12}^{(2)}+\delta _{2}^{(3)}\theta _{22}^{(2)}
δ1(4)=y(i)−a1(4)δ1(3)=δ1(4)θ11(3)δ2(3)=δ1(4)θ12(3)δ1(2)=δ1(3)θ11(2)+δ2(3)θ21(2)δ2(2)=δ1(3)θ12(2)+δ2(3)θ22(2)
其中delta是每个节点的误差值
梯度检验
实际上在实现梯度下降法时,总会产生各种错误,使理论值和实际值相差较大,对模型结果产生较大影响。这时我们可以通过梯度检验来发现这种错误。示例公式如下:
∂
∂
θ
1
J
(
θ
)
≈
J
(
θ
1
+
ϵ
,
θ
2
,
.
.
.
,
θ
n
)
−
J
(
θ
1
−
ϵ
,
θ
2
,
.
.
.
,
θ
n
)
2
ϵ
\frac{\partial }{\partial \theta _{1}}J(\theta )\approx \frac{J(\theta _{1}+\epsilon ,\theta _{2},...,\theta _{n})-J(\theta _{1}-\epsilon ,\theta _{2},...,\theta _{n})}{2\epsilon }
∂θ1∂J(θ)≈2ϵJ(θ1+ϵ,θ2,...,θn)−J(θ1−ϵ,θ2,...,θn)