感知机算法基础

1、感知机:接收多个输入信号(可想象成具备流动性的东西)并输出一个信号,像电流流过导线向前方输送电子一样,感知机的信号也会形成流,向前方输送信息,取值为1/0,分别对应传递信号/不传递信号。

2、神经元激活:对于接收两个输入信号的感知机,x1,x2是输入信号,y是输出信号,w1、w2是权重,○称为神经元或节点,当输入信号被送往神经元时,会被分别乘以固定的权值(w1x1,w2x2),权重越大,对应该权重的信号的重要性就越高,神经元会计算传送来的信号总和,当总和超过某个阈值(界限值,记作Θ)时,才会输出1。
运行原理:
在这里插入图片描述
3、简单逻辑电路:相同构造的感知机只需要通过适当地调整参数值,就可以变换逻辑电路,机器学习的课题就是将这个决定参数值的工作交给计算机自动进行,学习的过程就是确定合适参数的过程,我们需要做的是思考感知机的构造(模型),并把训练数据交给计算机。

  • 与门(AND gate)——具有两个输入和一个输出的门电路,这种输入信号和输出信号的对应表即“真值表”,与门仅在两个输入均为1时才为1,其他时候输出0,参数选择方法有无数个,但是要满足设定参数后x1和x2同时为1时,信号的加权和超过给定阈值Θ;
  • 与非门(NAND gate)——颠倒了与门的输出,当且仅当x1和x2同时为1时输出0,其他情况输出1,,只要把实现与门的参数值符号取反就可以实现与非门;
  • 或门——只要有一个输入信号是1,输出就是1,当且仅当输入信号x1和x2都是0时输出为0。

4、感知机的实现:先定义一个接收参数x1和x2的AND函数,在函数内初始化参数w1、w2、theta,当输入的加权总和超过阈值时返回1,否则返回0;在与门、与非门、或门的实现中,仅设置权重和偏置值即可。
与门的实现

def AND(x1,x2):
	w1, w2 ,theta = 0.5, 0.5, 0.7
	tmp = x1*w1 + x2*w2
	if tmp<=theta:
		return 0
	elif tmp>theta:
		return 1

另将Θ换成-b可以用下式来表示感知机的行为,所表达内容完全相同,其中的b称为偏置,是调整神经元被激活的容易程度(输出信号为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 0
	else:
		return 1

与非门的实现

def NAND(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 0
	else:
		return 1

或门的实现

def OR(x1,x2):
	x = np.array([x1,x2])
	w = np.array([0.5,0.5])
	b = -0.2
	tmp = np.sum(w*x) + b
	if tmp<=0:
		return 0
	else:
		return 1

5、感知机的局限性异或门也称为逻辑异或电路,仅当x1和x2中一方为1时,才会输出1(同0异1),在使用直线的情况下,无论如何都无法把空间中的△和○(输入信号表示在二维坐标系中)分开;感知机的局限性就在于它只能表示由一条直线分割的空间(线性空间),无法表示弯曲的曲线所分割的空间(非线性空间)。

6、多层感知机:叠加了多层的感知机,实际上与门、与非门、或门是单层感知机,异或门是2层感知机,可以使用单层感知机进行叠加形成多层感知机。
感知机算法基础_第1张图片
7、异或门的实现:异或门是一种多层结构的神经网络,用x1和x2表示输入信号,作为与非门和或门的输入,而与非门和或门的输出又作为与门的输入,s1作为与非门的输出,s2作为或门的输出,用y表示输出信号。
感知机算法基础_第2张图片

  1. 第0层的两个神经元接收输入信号,并将信号发送到第1层的神经元;
  2. 第1层的神经元将信号发送至第2层的神经元,第2层的神经元输出y。
def XOR(x1,x2):
	s1 = NAND(x1,x2)
	s2 = OR(x1,x2)
	y = AND(s1,s2)
	return y

8、从与非门到计算机:多层感知机可以实现更加复杂的电路,比如,进行加法运算的加法器,将二进制转换为十进制的编码器,满足某些条件就输出1(等价检验)的电路。
实际上只需要通过与非门的组合就可以再现计算机进行的处理,计算机和感知机一样,也有输入输出,会按照某个既定规则进行计算,在用与非门等底层元件构建计算机的情况下,分阶段制作所需的零件(模块)会比较方便,即先实现与门和或门,然后实现半加器和全加器,接着实现算逻单元ALU,最后实现CPU。

你可能感兴趣的:(#,深度学习,深度学习,python)