Week4 神经网络1
1.非线性模型——神经网络(Neural Networks)介绍
线性回归和逻辑回归可以解决非线性模型,为什么还需要神经网络?
因为当样本特征非常多,但是都和问题非常相关不能删去时,线性/逻辑回归很容易导致过拟合(见下图),且运算量随着特征的增加而大大增加,因为每个特征互相之间的关联都需要考虑进去。例如当输入是一张图像时,最直观的就是,每个像素点都是一个特征,因此,对于图像来说,其样本的特征数量通常都是非常大的。
为什么用神经网络更好?
神经网络会自己从输入的所有特征中学习和选择所需要的特征,具体说明见3.2节。
2.神经网络的数学表达
2.1术语和参数说明
神经元(neuron):神经网络中,每个小单元都是一个简单的学习模型,称作神经元(neuron)。
权值(weights):神经网络中,连接当前层神经元和下一层神经元之间的数值关系,叫做权值。权值是神经网络中需要学习的部分,也就相当于回归问题里的参数向量,需要根据学习过程不断迭代更新。
偏移(bias):在当前层中增加一个神经元
a
0
(
j
)
=
1
a_0^{(j)}=1
a0(j)=1,该神经元也对应一组连接到下一层所有神经元的权值
Θ
0
(
j
)
Θ_0^{(j)}
Θ0(j),其作用类似于多项式中的常数项,用来进行适当偏移。
神经网络的层(layer):神经网络分为好多层,其中包括输入层(input layer)、隐藏层(hidden layers)、输出层(output layer)。同一层具有多个神经元,同层的神经元之间是并列关系,相互之间不会有权值连接。
激励函数(activation function):神经元的输入通常是由权值和上一层神经元的输出的线性组合而得到的。为了增加模型的非线性,通常在上述线性组合后增加一次非线性的映射,从而使得模型整体具有非线性特征,这个非线性映射就叫做激励函数。例如sigmoid函数。(拓展知识,不同类型的激励函数介绍及其特征)
a
i
(
j
)
\textbf{a}_i^{(j)}
ai(j):第j层的第i个神经元的激活函数;
Θ
(
j
)
\textbf{Θ}^{(j)}
Θ(j):第j层和第j+1层之间的权值矩阵,其中
Θ
(
j
)
\textbf{Θ}^{(j)}
Θ(j)矩阵的结构是
s
j
+
1
×
(
s
j
+
1
)
s_{j+1}×(s_j+1)
sj+1×(sj+1),s_j是第j层的神经元个数;
Θ
i
k
(
j
)
\textbf{Θ}_{ik}^{(j)}
Θik(j): 第j层的第k个神经元和第j+1层的第i个神经元之间的权值;
h
Θ
(
x
)
h_Θ (\textbf{x})
hΘ(x):输出层的激活函数;
神经网络的结构(architecture):神经网络共具有多少层,每层具有多少神经元等等,都属于神经网络的设计范围内,称为神经网络的结构。
2.2 神经网络的计算
假设神经网络是上图,则其数学表达式如下:
a
1
(
2
)
=
g
(
Θ
10
(
1
)
x
0
+
Θ
11
(
1
)
x
1
+
Θ
12
(
1
)
x
2
+
Θ
13
(
1
)
x
3
)
a_1^{(2)}=g(Θ_{10}^{(1)} x_0+Θ_{11}^{(1)} x_1+Θ_{12}^{(1)} x_2+Θ_{13}^{(1)} x_3)
a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)
a
2
(
2
)
=
g
(
Θ
20
(
1
)
x
0
+
Θ
21
(
1
)
x
1
+
Θ
22
(
1
)
x
2
+
Θ
23
(
1
)
x
3
)
a_2^{(2)}=g(Θ_{20}^{(1)} x_0+Θ_{21}^{(1)} x_1+Θ_{22}^{(1)} x_2+Θ_{23}^{(1)} x_3)
a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)
a
3
(
2
)
=
g
(
Θ
30
(
1
)
x
0
+
Θ
31
(
1
)
x
1
+
Θ
32
(
1
)
x
2
+
Θ
33
(
1
)
x
3
)
a_3^{(2)}=g(Θ_{30}^{(1)} x_0+Θ_{31}^{(1)} x_1+Θ_{32}^{(1)} x_2+Θ_{33}^{(1)} x_3)
a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)
h
Θ
(
x
)
=
g
(
Θ
10
(
2
)
a
0
+
Θ
11
(
2
)
a
1
+
Θ
12
(
2
)
a
2
+
Θ
13
(
2
)
a
3
)
h_Θ (x)=g(Θ_{10}^{(2)} a_0+Θ_{11}^{(2)} a_1+Θ_{12}^{(2)} a_2+Θ_{13}^{(2)}a_3)
hΘ(x)=g(Θ10(2)a0+Θ11(2)a1+Θ12(2)a2+Θ13(2)a3)
前向传播(forward propogation)
输入层神经元的输出就是
x
\textbf{x}
x,即
a
(
1
)
=
x
\textbf{a}^{(1)}=\textbf{x}
a(1)=x。令:
x
=
[
x
0
x
1
x
2
x
3
]
z
(
2
)
=
[
z
1
(
2
)
z
2
(
2
)
z
3
(
2
)
]
=
Θ
(
1
)
a
(
1
)
=
Θ
(
1
)
x
\textbf{x}=\begin{bmatrix} x_0 \\ x_1\\ x_2 \\ x_3 \\ \end{bmatrix} \textbf{z}^{(2)}=\begin{bmatrix} z_1^{(2)} \\ z_2^{(2)} \\ z_3^{(2)} \\ \end{bmatrix}=\textbf{Θ}^{(1)}\textbf{a}^{(1)}=\textbf{Θ}^{(1)}\textbf{x}
x=⎣⎢⎢⎡x0x1x2x3⎦⎥⎥⎤z(2)=⎣⎢⎡z1(2)z2(2)z3(2)⎦⎥⎤=Θ(1)a(1)=Θ(1)x
所以有第二层神经元的输出:
a
(
2
)
=
g
(
z
(
2
)
)
\textbf{a}^{(2)}=g(\textbf{z}^{(2)})
a(2)=g(z(2)),加入偏移量
a
0
(
2
)
=
1
a_0^{(2)}=1
a0(2)=1后,则输出层有:
z
(
3
)
=
Θ
(
2
)
a
(
2
)
,
h
Θ
(
x
)
=
a
(
3
)
=
g
(
z
(
3
)
)
\textbf{z}^{(3)}=\textbf{Θ}^{(2)} \textbf{a}^{(2)},h_Θ (\textbf{x})=\textbf{a}^{(3)}=g(\textbf{z}^{(3)})
z(3)=Θ(2)a(2),hΘ(x)=a(3)=g(z(3))
3 神经网络的简单案例
3.1实现AND、OR、NOT等案例
1).用神经网络实现逻辑AND功能
神经网络的结构如下图左,注意,输出层中的激活函数为sigmoid函数。其原理只需要将
x
1
,
x
2
x_1,x_2
x1,x2的不同情况组合代入计算后(如下图右),即可掌握。
2).用神经网络实现逻辑OR功能
3).用神经网络实现逻辑NOT功能
4).用神经玩了个实现逻辑(NOT x1)AND(NOT x2)功能
3.2实现XNOR功能
分析可知,
X
N
O
R
=
(
x
1
A
N
D
x
2
)
O
R
(
(
N
O
T
x
1
)
A
N
D
(
N
O
T
x
2
)
)
XNOR=(x_1 AND x_2 )OR((NOT x_1 )AND(NOT x_2 ))
XNOR=(x1ANDx2)OR((NOTx1)AND(NOTx2)),因此,构造出的神经网络如下图。
神经网络会自己从输入的所有特征中学习和选择所需要的特征。比如案例中的XNOR功能,神经网络通过隐藏层将特征x_1,x_2进行转化提炼后,将两个特征转变为了a_1((2))和a_2((2))两个特征,未转变前的特征线性不可分(如下图左),转变后的特征线性可分(如下图右)。
另一个角度来说,理论上,如果神经网络能求出全局最优解,那么如果某些特征完全无关,很可能最后训练出来的权值会是0,即神经网络会排除掉无用特征。但上述说法仅仅是个人猜想,实际上由于现实问题通常非常复杂,神经网络通常求出的都不是全局最优解,因此无法验证。
3.3 神经网络处理多分类问题
根据week2中逻辑回归的多分类问题处理思路,搭建处理多分类问题的神经网络如上图。假设是4分类问题,则输出层最终是4个神经元,每个神经元都是一个逻辑回归模型,用来计算当前特征是某一类的概率。最终,四个输出神经元都会得到一个概率值,通常取其最大的概率,则说明是网络认为当前输入最符合某一类的特征。
注意,在上图结构中,最后输出的4个概率值相加并不是等于1的,因为这四个概率值只是分别针对问题“是否属于某一类”。通常会在该输出层后再加一个Softmax层:
(注:上图取自网络)
这样,最后输出的四个数值相加就会等于1,取其最大值则为最终分类。