1.感知机
感知机接受多个信号,输出一个信号(感知机的信号只对应1/0两种情况)
x1,x2为输入信号,w1.w2为一开始给定的权重,y为输出的信号,每个圈为一个神经元,神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出 1。这也称为“神经元被激活”。这里将这个界限值称为阈值,用符号 θ 表示。
2.简单逻辑电路
学习是确定合适的参数的过程,而人要做的是思考感知机的构造(模型),并把训练数据交给计算机。
与门,与非门,或门
与门:
输入 输出 X1 X2 y00 0010100111与非门:
输入 输出 X1 X2 y00 1011101110
或门:
输入 输出 X1 X2 y00 00111011113.感知机的实现
主要是权重和偏置不同,b为偏置,也为神经元的易激活的程度
与门:
import numpy as np def AND(x1,x2): t = np.array([x1,x2]) w = np.array([0.5,0.5]) g = np.sum(t*w) f = g - 0.7'''(偏置b)''' if f >=0: return 1 else: return 0 与非门: import numpy as np def NAND(x1,x2): t = np.array([x1,x2]) w = np.array([-0.5,-0.5]) g = np.sum(t*w) f = g + 0.7 if f >=0: return 1 else: return 0
或门:
import numpy as np def OR(x1,x2): t = np.array([x1,x2]) w = np.array([1,1]) g = np.sum(t*w) f = g - 0.1 if f >=0: return 1 else: return 04.感知机的局限性
单层感知机可表示线性空间,但不能表现非线性空间
XOR(异或)要区分0,1区域,必须借用曲线区分,如图:
异或要用二次感知机才能实现
def XOR(x1,x2): s1 = NAND(x1,x2) s2 = OR(x1,x2) y = AND(x1,x2) return y
5.多层感知机
与,或,与非叫做单层感知机
异或需要两层感知机才能实现,所以叫做多层感知机