感知机
感知机的功能类似于线性分类器。它接受多个刺激,如果刺激强度大于激活阈值,则感知机被激活。
对所有输入刺激x1,x2考察感知机状态。如图,图中的感知机在灰色区域与白色区域分别处于‘未被激活’和‘被激活’的状态。
用感知机实现逻辑门
与
def AND(x1, x2):
x = np.array([x1, x2])
W = np.array([1.0, 1.0])
b = -1.5
value = np.sum(W * x) + b
if value > 0:
return True
else:
return False
与非
def NAND(x1, x2):
x = np.array([x1, x2])
W = np.array([-1.0, -1.0])
b = 1.5
value = np.sum(W * x) + b
if value > 0:
return True
else:
return False
或
def OR(x1, x2):
x = np.array([x1, x2])
W = np.array([1.0, 1.0])
b = -0.5
value = np.sum(W * x) + b
if value > 0:
return True
else:
return False
异或
单凭一个感知机实现不了异或,原因如图:
显然,只用一条直线不能将三角和圆圈分开。但是,由数理逻辑可知,任何逻辑函数都可以用与或非三种基本运算组合实现,异或也不例外:
def XOR(x1, x2):
return AND(OR(x1, x2), NAND(x1, x2))
从感知机的角度讲,这相当于把多个感知机叠加起来:
由此可知,多层感知机可以模拟所有的逻辑函数。事实上,已有研究证明,激活函数使用了非线性的 sigmoid 函数的2层感知机可以拟合任意函数。
小结
多层感知机可以拟合任意复杂的函数。