AI学习日记——感知机
感知机是一种二分类线性模型,它是神经网络和支持向量机的基础。感知机的输入为实例的特征向量,输出为实例的类别(+1或-1),通过一个线性组合与阈值比较实现分类。为了理解感知机,可以把信号想象成电流,权值是电导,阈值是门槛感知机可以通过叠加层的方式,实现单层感知机无法实现的异或门,实现单层感知机无法实现的非线性分割。例:通过一个与非门,一个或门,一个与门,一个门对应一个神经元,分别对应上图的s1,s2
目录
一、感知机是什么
1.定义
感知机是一种二分类线性模型,它是神经网络和支持向量机的基础。感知机的输入为实例的特征向量,输出为实例的类别(+1或-1),通过一个线性组合与阈值比较实现分类。
为了理解感知机,可以把信号想象成电流,权值是电导,阈值是门槛
2.公式
感知机可以成为人工的神经元,信号的取值只有0或1。接受信号,然后加权求和,判断是否超过阈值来判断是输出0还是1,也称神经元是否被激活。
- y:输出信号(0/1)
- x1,x2:输入信号(0/1)
- w1,w2:权值
:阈值
当我把移到公式左边,变成-
,然后用b来替代-
,那么公式将变成
可以理解为门槛——变成-—>台阶b
3.缺点
单层感知机只能实现线性分割,不能实现非线性分割。
二、简单逻辑电路
1.与门
参数可取(w1, w2, θ) = (0.5, 0.5, 0.7),(w1, w2, θ) =(0.5, 0.5, 0.8),(w1, w2, θ) = (1.0, 1.0, 1.0)等等
2.与非门
把与门的参数全部取反即可,如(w1, w2, θ) = (−0.5, −0.5, −0.7)
3.或门
参数可取 (w1, w2, θ) = (0.5, 0.5, 0.5),(w1, w2, θ) =(0.3, 0.3, 0.3)等等
4.异或门
异或门用单一感知机无法实现,如下图所示,由于上文感知机缺陷提到感知机只能用线性分割,在函数图像中,我们希望用一条直线把(0,0)和(1,1)划分在一边;(1,0)和(0,1)
划分在另一边,显然这是不现实的。
满足与,与非,或逻辑门的参数的选择方法有无数种,以上参数都是我人为选择的,而机器学习的课题就是将这个决定参数值的工作交由计算机自动选择。学习是确定合适的参数的过程,而人要做的是思考感知机的构造(模型),并把训练数据交给计算机。
三、多层感知机
1.定义
感知机可以通过叠加层的方式,实现单层感知机无法实现的异或门,实现单层感知机无法实现的非线性分割。
例:通过一个与非门,一个或门,一个与门,一个门对应一个神经元,分别对应上图的s1,s2,y
2.多层感知机到计算机
感知机通过叠加层能够进行非线性的表示,理论上还可以表示计算机进行的处理。理论上最少只需要2层(带有非线性激活函数sigmoid的感知机)即可构成计算机,可表达任意函数
四、感知机代码实现
1.单层感知机
与门:
def AND(x1,x2):
x=np.array([x1,x2])
w=np.array([0.5,0.5])
b=-0.7
tmp=np.sum(w*x)+b
if(tmp>0):
return 1else:
return 0
2.多层感知机
异或门:
def XOR(x1,x2):
s1=NAND(x1,x2)
s2=OR(x1,x2)
y=AND(s1,s2)
return y #注意这里的y是已经经过阈值判断后的0/1
总结
- 感知机是具有输入和输出的算法。给定一个输入后,将输出一个既定的值。
- 感知机将权重和偏置设定为参数。
- 使用感知机可以表示与门和或门等逻辑电路。
- 异或门无法通过单层感知机来表示。
- 使用2层感知机可以表示异或门。
- 单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。
- 多层感知机(在理论上)可以表示计算机。
更多推荐
所有评论(0)