感知器
什么是神经网络
神经网络能解决问题
什么是神经网络
如下图是一个神经网络
上面没一个圆圈代表一个神经元,每条线表示神经元之间的连接,我们可以看到神经元被分成了多层,层与层之间的神经元有连接,层内之间的神经元没有连接。第一层叫做输入层,负责数据接收,最后一层叫做输出层,负责输出数据,输入层与输出层之间的层叫隐藏层
神经网络是一种模仿动物神经网络为特征,进行分布式并行信息处理的算法数学模型,这种网络依靠系统的复杂程度,通过调整内部大量节点之间的相互连接的关系,从而达到信息处理的目的。最简单的神经网络是感知器
如下图:
感知器可以解决最简单的二分类问题,他具体是怎么工作的呢,刚开始我看这个图也觉得非常抽象,其实神经网络就是找寻输入值与输出值之间的关系规则,该关系是通过数据训练得到的,例如用该感知器实现and运算
x1 | x2 | Y |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
我们要通过感知机去获得x1,x2与y之间的关系
感知器有如下部分组成:
- 输入权值 一个感知器有多个输入 ( x 1 , x 2 , . . . , x n ∣ x i ∈ R ) (x_1,x_2,...,x_n|x_i\in R) (x1,x2,...,xn∣xi∈R),每个输入上有一个权值 w i ∈ R w_i\in R wi∈R,此外还有一个偏置项 b ∈ R b\in R b∈R
- 激活函数,激活函数的选择有多种,这里选择阶跃函数:
KaTeX parse error: No such environment: equation at position 12: f(z)=\begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲\begin{cases}1\… - 输出 感知器输出有下面公式来计算
y = f ( w ∗ x + b ) y=f(w*x+b) y=f(w∗x+b)
我们令
w
1
=
0.5
;
w
2
=
0.5
;
b
=
−
0.8
w_1=0.5;w_2=0.5;b=-0.8
w1=0.5;w2=0.5;b=−0.8,激活函数就是阶跃函数,这是感知器就相当于and
函数
例如:当
x
1
=
0
;
x
2
=
0
x_1=0;x_2=0
x1=0;x2=0根据公式计算输出:
y
=
f
(
w
∗
x
+
b
)
y=f(w*x+b)
y=f(w∗x+b)
=
f
(
w
1
x
1
+
w
2
x
2
+
b
)
=f(w_1x_1+w_2x_2+b)
=f(w1x1+w2x2+b)
=
f
(
0.5
x
0
+
0.5
x
0
−
0.8
)
=f(0.5x0+0.5x0-0.8)
=f(0.5x0+0.5x0−0.8)
=
f
(
−
0.8
)
=f(-0.8)
=f(−0.8)
=
0
=0
=0
在这里直接给出w
与b
的值,用程序求时我们需要荣过数据训练出w
与b
的值
###感知器的训练
w
i
←
w
i
+
Δ
w
i
w_i\leftarrow w_i+\Delta w_i
wi←wi+Δwi
b
←
+
Δ
b
b\leftarrow+\Delta b
b←+Δb
其中:
Δ
w
i
=
η
(
t
−
y
)
x
i
\Delta w_i=\eta(t-y)x_i
Δwi=η(t−y)xi
Δ
=
η
(
t
−
y
)
\Delta=\eta(t-y)
Δ=η(t−y)
w
i
w_i
wi是与输入
x
i
x_i
xi对应的权重值,b
是偏重项。t
是样本的实际值,一般称为label
,y
是感知器的输出值,
η
\eta
η是学习速率常数,控制每一步调整权值的幅度。
每次从训练数据中取出一个样本输入向量x
,根据上面的规则调整权重。没处理一个样本就调整一次权重,经过多次迭代之后,就可以训练出感知器的权重,成为目标函数。
事实上仅含一个隐藏层的神经网络可以拟合任何函数,但是需要很多神经元,而深层神经网络能用少的多的神经元能拟合同样的函数。也就是为了拟合一个函数,要么使用一个浅而宽的网络,要么使用一个深而窄的网络。而后者往往更能节约资源。