机器学习09:神经网络入门
什么是神经网络?
在生物学中,多个神经元之间会通过轴突传递信息,神经元收到信息后会做出某种反应或者加工处理信息再传给其他神经元。利用这种机理,我们可以创造出人工神经网络,也就是机器学习中的神经网络,但机器学习中的神经网络还是有所不同的,在机器学习中,神经网络大概会呈现出下面这种形状,它包含输入层(Input Layer)、输出层(Out Layer)、隐藏层(Hidden Layer)。
根据我的个人理解,生物学中的神经网络结构更类似于一种立体网状结构,机器学习中的神经网络更类似于一种层状结构,把上层的信息通过加工处理传递给下一层。(这种说法可能不太正确,但我们可以这样理解)。每个节点(图中的圆圈)代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。
模型表示
一般表示
用一个简单的神经网络,如下图,该神经网络一共三层,分别为输入层、隐藏层、输出层。用
a
i
(
j
)
a_i^{(j)}
ai(j)表示第
j
j
j层的第
i
i
i个**单元;用
Θ
(
j
)
\Theta^{(j)}
Θ(j)表示从第
j
j
j层到第
j
+
1
j+1
j+1的权重矩阵。
第二层:
a
1
(
2
)
=
g
(
Θ
10
(
1
)
x
0
+
Θ
11
(
1
)
x
1
+
Θ
12
(
1
)
x
2
+
Θ
13
(
1
)
x
3
)
a_1^{(2)}=g(\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3)
a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)
a
1
(
2
)
=
g
(
Θ
20
(
1
)
x
0
+
Θ
21
(
1
)
x
1
+
Θ
22
(
1
)
x
2
+
Θ
23
(
1
)
x
3
)
a_1^{(2)}=g(\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3)
a1(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)
a
1
(
2
)
=
g
(
Θ
30
(
1
)
x
0
+
Θ
31
(
1
)
x
1
+
Θ
32
(
1
)
x
2
+
Θ
33
(
1
)
x
3
)
a_1^{(2)}=g(\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3)
a1(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)
第三层:
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
)
)
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)})
hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))
上面公式中的
g
(
⋅
)
g(·)
g(⋅)为
S
i
g
m
a
Sigma
Sigma函数.
如果第
j
j
j层有
s
j
s_j
sj个单元,第
j
+
1
j+1
j+1层有
s
j
+
1
s_{j+1}
sj+1个单元,那么权重矩阵
Θ
(
j
)
\Theta^{(j)}
Θ(j)的大小为
s
j
+
1
×
(
s
j
+
1
)
s_{j+1}\times (s_{j}+1)
sj+1×(sj+1)
向量表示
还是上面的神经网络,只不过这次我们加上了偏置项。
在一般的表示中,
a
1
(
2
)
=
g
(
Θ
10
(
1
)
x
0
+
Θ
11
(
1
)
x
1
+
Θ
12
(
1
)
x
2
+
Θ
13
(
1
)
x
3
)
a_1^{(2)}=g(\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3)
a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)
a
1
(
2
)
=
g
(
Θ
20
(
1
)
x
0
+
Θ
21
(
1
)
x
1
+
Θ
22
(
1
)
x
2
+
Θ
23
(
1
)
x
3
)
a_1^{(2)}=g(\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3)
a1(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)
a
1
(
2
)
=
g
(
Θ
30
(
1
)
x
0
+
Θ
31
(
1
)
x
1
+
Θ
32
(
1
)
x
2
+
Θ
33
(
1
)
x
3
)
a_1^{(2)}=g(\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3)
a1(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)
提取,
z
1
(
2
)
=
Θ
10
(
1
)
x
0
+
Θ
11
(
1
)
x
1
+
Θ
12
(
1
)
x
2
+
Θ
13
(
1
)
x
3
z_1^{(2)}=\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3
z1(2)=Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3
z
2
(
2
)
=
Θ
20
(
1
)
x
0
+
Θ
21
(
1
)
x
1
+
Θ
22
(
1
)
x
2
+
Θ
23
(
1
)
x
3
z_2^{(2)}=\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3
z2(2)=Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3
z
3
(
2
)
=
Θ
30
(
1
)
x
0
+
Θ
31
(
1
)
x
1
+
Θ
32
(
1
)
x
2
+
Θ
33
(
1
)
x
3
z_3^{(2)}=\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3
z3(2)=Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3
x
=
[
x
0
x
1
x
2
x
3
]
,
z
(
2
)
=
[
z
1
(
2
)
z
2
(
2
)
z
3
(
2
)
]
\pmb{x}=\begin{bmatrix}x_0\\x_1\\x_2\\x_3\end{bmatrix},\quad \pmb{z^{(2)}}=\begin{bmatrix}z_1^{(2)}\\ z_2^{(2)}\\ z_3^{(2)}\end{bmatrix}
xxx=⎣⎢⎢⎡x0x1x2x3⎦⎥⎥⎤,z(2)z(2)z(2)=⎣⎢⎡z1(2)z2(2)z3(2)⎦⎥⎤
用向量的运算表示为:
z
(
2
)
=
Θ
(
1
)
a
(
1
)
=
Θ
(
1
)
x
z^{(2)}=\Theta^{(1)}\pmb{a^{(1)}}=\Theta^{(1)}\pmb{x}
z(2)=Θ(1)a(1)a(1)a(1)=Θ(1)xxx
a
(
2
)
=
g
(
z
(
2
)
)
\pmb{a^{(2)}}=g(z^{(2)})
a(2)a(2)a(2)=g(z(2))
添加偏置项
a
0
(
2
)
=
1
,
a_0^{(2)}=1,
a0(2)=1,
z
(
3
)
=
Θ
(
2
)
a
(
2
)
z^{(3)}=\Theta^{(2)}\pmb{a^{(2)}}
z(3)=Θ(2)a(2)a(2)a(2)
h
Θ
(
x
)
=
a
(
3
)
=
g
(
z
(
3
)
)
h_\Theta(x)=a^{(3)}=g(z^{(3)})
hΘ(x)=a(3)=g(z(3))
当然,神经网络可以有很多层(如下图),但都可以通过上面的方法进行正向运算。
实例
为了方便理解,我们用一个较为简单的例子。用神经网络来表示逻辑关系中的AND、OR、XNOR
- 与运算
令,
x 1 , x 2 ∈ { 0 , 1 } , y = x 1 A N D x 2 x_1,x_2\in\left\{0,1\right\},\quad y=x_1\pmb{AND}x_2 x1,x2∈{0,1},y=x1ANDANDANDx2
则,
h
Θ
(
x
)
=
g
(
−
30
+
20
x
1
+
20
x
2
)
h_\Theta(x)=g(-30+20x_1+20x_2)
hΘ(x)=g(−30+20x1+20x2)
根据
S
i
g
m
a
Sigma
Sigma函数的性质(待补充)
2. 或运算
h
Θ
(
x
)
=
g
(
−
10
+
20
x
1
+
20
x
2
)
h_\Theta(x)=g(-10+20x_1+20x_2)
hΘ(x)=g(−10+20x1+20x2)
3. 非运算
h
Θ
(
x
)
=
g
(
10
−
20
x
1
)
h_\Theta(x)=g(10-20x_1)
hΘ(x)=g(10−20x1)
4. XNOR运算
也许通过上面的几个运算你仍对神经网络理解的不够深刻,那么这个运算可以让你加深一下印象,同时也能让你感受一下神经网络的魅力。
先用下面几个运算作为铺垫,
-
x
1
A
N
D
x
2
x_1ANDx_2
x1ANDx2
-
(
N
O
T
x
1
)
A
N
D
(
N
O
T
x
2
)
(NOT\,x_1)AND(NOT\,x_2)
(NOTx1)AND(NOTx2)
-
x
1
O
R
x
2
x_1ORx_2
x1ORx2
XNOR运算:
XNOR运算可以结合上面三种运算来进行计算,如下图