神经网络(非线性分类)
产生的原因:尝试设计模仿大脑的算法。
神经元表示一个逻辑运算单元。
单一神经元的神经网络表示如下图:
一般只绘制
x1,x2,x3,⋯
x
1
,
x
2
,
x
3
,
⋯
。而
x0
x
0
称作偏置单元或偏置神经元,且
x0
x
0
总是等于1。
在描述神经元时,将之称为一个有
S
S
型函数或逻辑函数作为激励函数的人工神经元。
在神经网络术语中,激励函数是对类似非线性函数的另一个称呼。
模型参数 θ=⎡⎣⎢⎢⎢θ0θ1θ2θ3⎤⎦⎥⎥⎥ θ = [ θ 0 θ 1 θ 2 θ 3 ] 也称权重。
神经网络是由不同的神经元组合在一起:
其中,
Layer1
L
a
y
e
r
1
为输入层,
Layer2
L
a
y
e
r
2
为隐藏层,
Layer3
L
a
y
e
r
3
为输出层,
Layer1
L
a
y
e
r
1
和
Layer2
L
a
y
e
r
2
可添加偏置单元
x0
x
0
及
a(2)0
a
0
(
2
)
(值均总为1),神经网络中可包含多个隐藏层。
a(j)i
a
i
(
j
)
表示第
j
j
层的第个神经元或单元的激励函数,激励函数是指有一个具体神经元读入计算并输出值;
Θ(j)
Θ
(
j
)
为神经网络第
j
j
层到第层的权重控制矩阵。
如果神经网络中,第 j j 层有个单元,第 j+1 j + 1 层有 sj+1 s j + 1 个单元,则 Θ(j) Θ ( j ) 为 sj+1×(sj+1) s j + 1 × ( s j + 1 ) 维的矩阵。
“+1”来自 Θ(j) Θ ( j ) 中添加偏置单元 x0 x 0 和 Θ(j)0 Θ 0 ( j ) ,换句话说,输出节点不包含偏置节点,但输入节点会包括。
令 Θ(1)10x0+Θ(1)11x1+Θ(1)12x2+Θ(1)13x3=Z(2)1Θ(1)20x0+Θ(1)21x1+Θ(1)22x2+Θ(1)23x3=Z(2)2Θ(1)30x0+Θ(1)31x1+Θ(1)32x2+Θ(1)33x3=Z(2)3 Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 = Z 1 ( 2 ) Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 = Z 2 ( 2 ) Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 = Z 3 ( 2 )
则 x=⎡⎣⎢⎢⎢x0x1x2x3⎤⎦⎥⎥⎥ x = [ x 0 x 1 x 2 x 3 ] Z(2)=⎡⎣⎢⎢⎢Z(2)1Z(2)2Z(2)3⎤⎦⎥⎥⎥ Z ( 2 ) = [ Z 1 ( 2 ) Z 2 ( 2 ) Z 3 ( 2 ) ]
⇒Z(2)=Θ(1)x
⇒
Z
(
2
)
=
Θ
(
1
)
x
(
x
x
也可以替换成)
⇒a(2)=g(Z(2))
⇒
a
(
2
)
=
g
(
Z
(
2
)
)
得到
a(2)1,a(2)2,a(2)3
a
1
(
2
)
,
a
2
(
2
)
,
a
3
(
2
)
⇒Adda(2)0=1
⇒
A
d
d
a
0
(
2
)
=
1
⇒Z(3)=Θ(2)a(2)
⇒
Z
(
3
)
=
Θ
(
2
)
a
(
2
)
⇒hΘ(x)=a(3)=g(Z(3))
⇒
h
Θ
(
x
)
=
a
(
3
)
=
g
(
Z
(
3
)
)
整个计算过程称为前向传播
将上述计算过程抽象化:
⇒Z(2)k=Θ(1)k,0x0+Θ(1)k,1x1+Θ(1)k,2x2+⋯+Θ(1)k,nxn
⇒
Z
k
(
2
)
=
Θ
k
,
0
(
1
)
x
0
+
Θ
k
,
1
(
1
)
x
1
+
Θ
k
,
2
(
1
)
x
2
+
⋯
+
Θ
k
,
n
(
1
)
x
n
⇒x=⎡⎣⎢⎢⎢x0x1x2x3⎤⎦⎥⎥⎥
⇒
x
=
[
x
0
x
1
x
2
x
3
]
Z(j)=⎡⎣⎢⎢⎢Z(j)1Z(j)2Z(j)3⎤⎦⎥⎥⎥
Z
(
j
)
=
[
Z
1
(
j
)
Z
2
(
j
)
Z
3
(
j
)
]
⇒
⇒
令
x=a(1)→Z(j)=Θ(j−1)a(j−1)
x
=
a
(
1
)
→
Z
(
j
)
=
Θ
(
j
−
1
)
a
(
j
−
1
)
⇒a(j)=g(Z(j))
⇒
a
(
j
)
=
g
(
Z
(
j
)
)
在
a(j)
a
(
j
)
中增加偏置单元
a(j)0=1
a
0
(
j
)
=
1
⇒Z(j+1)=Θ(j)a(j)
⇒
Z
(
j
+
1
)
=
Θ
(
j
)
a
(
j
)
⇒hΘ(x)=a(j+1)=g(Z(j+1))
⇒
h
Θ
(
x
)
=
a
(
j
+
1
)
=
g
(
Z
(
j
+
1
)
)
应用举例:
利用神经网络计算
y=x1 AND x2
y
=
x
1
A
N
D
x
2
其中
x1,x2∈{0,1}
x
1
,
x
2
∈
{
0
,
1
}
加上偏置单元,上图变化如下:
Θ(1)=[−302020]
Θ
(
1
)
=
[
−
30
20
20
]
则:
hΘ(x)=g(−30+20x1+20x2)
h
Θ
(
x
)
=
g
(
−
30
+
20
x
1
+
20
x
2
)
在
g(z)
g
(
z
)
函数中,当
z=4.6
z
=
4.6
时,
g(z)=0.99≈1
g
(
z
)
=
0.99
≈
1
;当
z=−4.6
z
=
−
4.6
时,
g(z)=0.01≈0
g
(
z
)
=
0.01
≈
0
所以:
同理:
利用神经网络计算
y=x1 OR x2
y
=
x
1
O
R
x
2
其中
x1,x2∈{0,1}
x
1
,
x
2
∈
{
0
,
1
}
Θ(1)=[−102020]
Θ
(
1
)
=
[
−
10
20
20
]
利用神经网络计算
y=x1 NOR x2
y
=
x
1
N
O
R
x
2
其中
x1,x2∈{0,1}
x
1
,
x
2
∈
{
0
,
1
}
Θ(1)=[10−20−20]
Θ
(
1
)
=
[
10
−
20
−
20
]
利用神经网络计算
y=NOT x1
y
=
N
O
T
x
1
其中
x1∈{0,1}
x
1
∈
{
0
,
1
}
Θ(1)=[10−20]
Θ
(
1
)
=
[
10
−
20
]
则:
hΘ(x)=g(10−20x1)
h
Θ
(
x
)
=
g
(
10
−
20
x
1
)