本笔记参考《深度学习入门:基于python的理论与实践》的内容。本文语言通俗易懂,适合小白!
感知机
什么是感知机?感知机接受信息,感知机的信号只有“流/不流”(1/0)两种取值。在《深度学习入门:基于python的理论与实践》中,0对应“不传递信号”,1对应“传递信号。
如图,x1,x2代表输入的信息。w1和w2表示权重(weight),y代表输出信号,一个圆表示一个神经元。输入信号被送往神经元时,会被分别乘以固定的权重w1、w2。神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1。这也称为“神经元被激活”。这里将这个界限值称为阈值,用符号θ表示。
简单的电路逻辑
这里介绍四种感知机。
AND gate (与门)
功能:两个输入均为1,才会输出1(输入和输出只能是0或1)
如图
联系前面的公式,我们知道有多种w1,w2,θ组合能够创造与门。比如(w1,w2,θ)=(1,1,1)或者(0.8,0.8,1)。满足条件的搭配其实有无数个,这里我们是人为的设置参数,而机器学习就是让机器找到这些参数。学习是确定合适的参数的过程,而人要做的是思考感知机的构造(模型),并把训练数据交给计算机。
OR gate (或门)
功能:两个输入中,有一个1就行。(只要有一个输入信号是1,输出就为1)
NAND gate (与非门)
仅当两个输入同时为1时输出0,其他时候则输出1
感知机的简单实现
换一种方法表示(增加偏置的概念)
在此之前,首先把式(2.1)的θ换成-b,于是就可以用式(2.2)来表示感知机的行为。
思考一下:为什么不用 θ,而是用b来代替-θ?这样做有什么好处?会让计算更加方便吗?
用python 实践
import numpy as np:
def AND_gate(x1,x2):
x=np.array([x1,x2])
w=np.array([0.8,0.8])
b=-1
tmp = np.sum(w*b)+b
if tmp>0:
return 1
else:
return 0
请自行实践或门,与非门。
感知机的不足
异或门 XOR gate
仅当x1或x2中的一方为1时,才会输出1
你可以确定一组(w1,w2,b)来创建异或门吗?
用图形解释
这里有一个或门的例子。我们确定这个或门的参数(w1,w2,b)=(1,1,-0.5)
能否输出1,只需要判断w1x1+w2x2+b(即x1+x2-0.5)是否大于0。
我们画出一个图像,横轴为x1,竖轴为x2,做出(x1+x2-0.5=0)的图像
图中四个点是代表四种输入。在直线以上的部分就是输出为1的点,在直线一下的部分就是输出为0的点。这里我们也可以看出,直线w1x1+w2x2+b=0的系数有多种选择,具体表现为图中的直线可以在一定范围内移动变化。
而异或门是不能用一条直线来划分的,只能用一条曲线来划分,也就是说非线性。由图2-8这样的曲线分割而成的空间称为非线性空间,由直线分割而成的空间称为线性空间。线性、非线性这两个术语在机器学习领域很常见。
有没有什么方法可以使得我们创造出异或门呢?可不可以用与门,与非门,或门来创造出异或门?请大家暂停思考一下!
我们下期继续更新!