前言
感知机作为神经网路(深度学习)的算法起源,学习感知机的构造也就是学习通往神经网络和深度学习的一种重要思想。
一、什么是感知机?
1. 概念
感知机的概念很简单,接受多个输入产生一个0/1的输出。其中0表示不传递信号,1表示传递信号。
2. 原理
如图,这是一个简单的两个输入的感知机,两个输入分别为
x
1
、
x
2
x_1、x_2
x1、x2,对应的
w
1
、
w
2
w_1、w_2
w1、w2为权重,图中的圆圈称为“神经元”或者“节点”。输入信号被送往神经元时,会被乘以固定的权重·,神经元会计算传递过来的信号总和,能否产生输出取决于信号总和能否到达某个阈值,该阈值用
θ
\theta
θ表示。
y
=
{
0
,
w
1
x
1
+
w
2
x
2
≤
θ
1
,
w
1
x
1
+
w
2
x
2
>
θ
y = \begin{cases} 0, w_1x_1 + w_2x_2\le\theta\\ 1, w_1x_1 + w_2x_2 > \theta \end{cases}
y={0,w1x1+w2x2≤θ1,w1x1+w2x2>θ
感知机的多个输入信号都有各自的输入权重,这些权重代表着各个权重的重要性(权重越大,重要性越高)
后来令b = -
θ
\theta
θ,那么上式变为:
y
=
{
0
,
w
1
x
1
+
w
2
x
2
+
b
≤
0
1
,
w
1
x
1
+
w
2
x
2
+
b
>
0
y = \begin{cases} 0, w_1x_1 + w_2x_2+b\le0\\ 1, w_1x_1 + w_2x_2 +b> 0 \end{cases}
y={0,w1x1+w2x2+b≤01,w1x1+w2x2+b>0
这里,b称为偏置。
二、感知机能解决什么问题
1.单层感知机
单层感知机主要解决线性可分问题,首先举几个例子
1.1 与运算问题
x 1 x_1 x1 | x 2 x_2 x2 | y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
给定与运算的真值表,我们发现对于不同x的输入输出只有0/1,符合感知机特点,那么取怎么样的( w 1 , w 2 , θ w_1, w_2, \theta w1,w2,θ)能够满足与运算呢?满足条件的取值非常多,比如(0.5,0.5,0.7)、(0.5,0.5,0.8)等。
1.2 或运算问题
x 1 x_1 x1 | x 2 x_2 x2 | y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
当( w 1 , w 2 , θ w_1, w_2, \theta w1,w2,θ)取值为(0.5,0.5,0.4)、(0.5,0.6,0.3)等,能满足或运算问题的感知机
1.3 与非问题
x 1 x_1 x1 | x 2 x_2 x2 | y |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
当( w 1 , w 2 , θ w_1, w_2, \theta w1,w2,θ)取值为(-0.5,-0.5,-0.7)、(-0.5,-0.6,-0.8)等,能满足或运算问题的感知机
通过上面的三个例子,我们能发现单层感知机的几个问题:
- 权值和阈值是我们人为取值
- 这些问题均为线性可分问题
也就是一条直线能够分割的线性空间,那么如果是这样的,还能分割吗?
显然,任意一条直线都不能分割为两个空间,也就是说单层感知机不能完成这样的任务。
2.多层感知机
多层感知机也就是神经网络的雏形,主要解决非线性问题。
2.1 异或运算问题
x 1 x_1 x1 | x 2 x_2 x2 | y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
异或运算为上图所示的线性不可分割问题,那么无法构建这样的单层感知机,但是在已有的单层感知机能解决问题中,可以通过组合得到异或门。
如图依次为与门、或门、与非门,通过这样的组合可以得到异或门。
那么,从原理上讲,把不同的单层感知机结合也能实现这样的功能。
- 第0层的两个神经元接受输入信号,并将信号发送至第一层的神经元
- 第1层的神经元将信号发送至第2层的神经元,第2层的神经元输出y
总结
感知机将多个输入作为信号源传递给神经元,经神经元判断是否达到阈值而决定是否传递信号。感知机虽然简单,但却是神经网络的来源,了解感知机的原理有助于帮助我们掌握复杂的网络。