【深度学习入门】- 用电路思想解释感知机
🤖🤖🤖🤖 欢迎浏览本博客 🤖🤖🤖🤖
😆😆😆😆😆😆😆大家好,我是:我菜就爱学😆😆😆😆
😆😆😆一名刚刚入行小白👻👻
👻👻从事方向:计算机视觉
🔔🔔我菜就爱学,分享有误,欢迎大佬指出🔔🔔
🌏🌏🌏本篇介绍:单层感知机、多层感知机
文章目录
1 感知机是什么
感知机接收多个输入信号,输出一个信号。感知机信号只有“流/不流(0/1)"两种取值。0对应“不传递信号”,1对应“传递信号”
如下:是一个接收两个输入信号的感知机例子。x1,x2是输入信号,y是输出信号,w1、w2是权重。O为神经元或者节点。输入信号被送往神经元时,会被分布乘以相对的权重(权重越大,对该权重的信号越重要)。然后神经元计算传送过来的总和,当总和超过某个界限时,输出1,该种情况也叫“神经元激活。
2 简单逻辑电路
2.1 与门
说明:与门是有两个输入和一个输出的门电路。真值表如下。满足真值表的w1、w2、θ的取值如: (w1, w2,θ)=(0
.5,0.5,7)或者(0.5, 0.5,0.8)。仅x1和x*2同时为1,信号的加权总和才会超过给定的阈值 θ 。
2.2 与非门
说明:与非门就是颠倒了与门的输出。真值表如下。(w1, w2, θ)=(−0.5,−0.5,
−0.7)
2.3 或门
说明:或门是只要有一个输入信号是1,输出就是1。真值表如下。
3 感知机的实现
3.1 简单的实现
说明:按照下面程序,简单的实现与门的感知机代码
def AND(x1,x2):
w1,w2,theta=0.5,0.5,0.7
tmp=x1*w1+x2*w2
if tmp<=theta:
return 0
else:
return 1
print(AND(0,0))
print(AND(1,0))
print(AND(0,1))
print(AND(1,1))
'''
0
0
0
1
'''
3.2 导入权重和偏置
说明:把上面的θ换成b,b作为偏置,w1和w2依然函数权重。感知机会计算输入信号和权重的乘积,然后加上偏置。如果这个值大于0则输出1,否则输出0。具体的说:w1和w2是控制输入信号的重要性的参数,而偏置是调整神经元被激活的容易程度(输出信号为1)的参数。比如,若b=-0.1,则输入信号的权重超过0.1,神经元就会被激活。但如果b=-20.0,则输入信号的加权超过20才会被激活。
# Numpy数组的乘法中,当两个数组的元素个数相同时,各个元素分布相乘。
x=np.array([0,1]) #x1=0,x2=1
w=np.array([0.5,0.5])# w1=0.5 w2=0.5
b=-0.7
y=np.sum(w*x)+b
print(y)
# -0.19999999999999996
1)使用权重和偏置实现与门
def AND():
x = np.array([0, 1]) # x1=0,x2=1
w = np.array([0.5, 0.5]) # w1=0.5 w2=0.5
b=-0.7
tmp=np.sum(x*w)+b
if tmp<=0:
print(0)
else:
print(1)
AND()
# 0
4 感知机的局限性
4.1 异或门
说明:用上面介绍的感知机对应异或门的话是无法实现的。如下是异或门的真值表。
假设权重参数设置为:(b, w1, w2)=(−0.5, 1.0,1.0),用或门限量解释,在(x1,x2)=(0,0)时输出0,在(x1,x2)=(0,1)或者(1,0)或者(1,1)时输出1。
如果变成异或门的话,(x1,x2)=(1,1)时输出0,此时无法做到一条线把0和1分割开。
4.2 线性和非线性
说明:感知机的局限性就是在于它只能表示由一条直线分割的空间。若用如下的分割方法,由曲线分割而成的空间为非线性空间,上面或门由直线分割的而形成的空间称为线性空间。
5 多层感知机
说明:虽然感知机不能表示异或门,但是它有叠加层的特性。可以通过叠加层的特性来表示异或门。
5.1 用已有门路组成异或门
如下:分别表示与门、与非门和或门
然后,组合成为异或门
5.2 异或门代码实现
说明:代码实现了异或门,异或门是一种多层结构的神经网络。也叫2层感知机。
def AND(x1,x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b=-0.7
tmp=np.sum(x*w)+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(x * w) + 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(x * w) + b
if tmp<=0:
return 0
else:
return 1
def XOR(x1,x2):
s1=NAND(x1,x2)
s2=OR(x1,x2)
y=AND(s1,s2)
return y
print(XOR(0,0))
print(XOR(0,1))
print(XOR(1,0))
print(XOR(1,1))
'''
输出:
0
1
1
0
'''
相关文章
- .net Elasticsearch 学习入门笔记
- 深度学习:Keras入门(一)之基础篇
- 重视基础学习的大一同学
- 零基础入门深度学习:感应器、线性单元和梯度下降
- OpenGL入门学习[一]
- 【深度学习之美】一入侯门“深”似海,深度学习深几许(入门系列之一)
- 《TensorFlow技术解析与实战》——1.3 深度学习的入门方法
- 【深度学习之美】人工“碳”索意犹尽,智能“硅”来未可知(入门系列之二)
- 机器学习中的常见学习模型
- 《Swift入门经典(第2版)》——第2章 学习Swift的基本数据类型 2.1Swift中的常量
- 零基础入门网络安全需要学习些什么呢?
- SwiftUI进阶之 17 为何说计算机是思维的变革? (《SICP》学习笔记)
- android源码学习-View如何显示到屏幕上
- 7月7日云栖精选夜读:专访 | 杨强教授谈CCAI、深度学习泡沫与人工智能入门
- 知识图谱入门学习笔记(五)-知识抽取之数据采集&命名实体识别
- 【数字IC验证快速入门】20、SystemVerilog学习之基本语法7(覆盖率驱动...内含实践练习)
- 【数字IC验证快速入门】1、浅谈数字IC验证,了解专栏内容,明确学习目标
- 【树莓派4B学习】三、接入USB摄像头,搭建Python2.7.16+OpenCV3.2.0开发环境
- 【深度学习入门】基础概念记录
- 【嵌入式Linux学习】8、多文件编译与Makefile初探
- 从入门机器学习的零单排:OctaveMatlab经常使用绘图知识
- (1.3)学习笔记之mysql体系结构(C/S整体架构、内存结构、物理存储结构、逻辑结构、SQL查询流程)
- 学习笔记——取余与取模之间的关系总结
- 【深度学习之美】Hello World感知机,懂你我心才安息 (入门系列之五)
- 【深度学习之美】卷地风来忽吹散,积得飘零美如画(入门系列之十)
- CAD入门学习:调用约束功能画几何CAD练习图步骤
- 【Linux学习笔记】解决:yum install python-dev 报错(CentOS安装Python-dev库)
- 操作系统学习入门0
- msp430入门学习37
- 【深度学习之美】全面连接困何处,卷积网络见解深(入门系列之九)