【深度学习入门】- 用电路思想解释感知机

简介: 【深度学习入门】- 用电路思想解释感知机

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
'''

相关文章
|
1月前
|
机器学习/深度学习 存储 人工智能
深度学习第1天:深度学习入门-Keras与典型神经网络结构
深度学习第1天:深度学习入门-Keras与典型神经网络结构
36 0
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
使用TensorFlow进行深度学习入门
【5月更文挑战第11天】本文引导读者入门TensorFlow深度学习,介绍TensorFlow——Google的开源机器学习框架,用于处理各种机器学习问题。内容包括TensorFlow安装(使用pip)、核心概念(张量、计算图和会话)以及构建和训练简单线性回归模型的示例。通过这个例子,读者可掌握TensorFlow的基本操作,包括定义模型、损失函数、优化器以及运行会话。
|
12天前
|
机器学习/深度学习 自然语言处理 语音技术
【Python 机器学习专栏】Python 深度学习入门:神经网络基础
【4月更文挑战第30天】本文介绍了Python在深度学习中应用于神经网络的基础知识,包括神经网络概念、基本结构、训练过程,以及Python中的深度学习库TensorFlow和PyTorch。通过示例展示了如何使用Python实现神经网络,并提及优化技巧如正则化和Dropout。最后,概述了神经网络在图像识别、语音识别和自然语言处理等领域的应用,并强调掌握这些知识对深度学习的重要性。随着技术进步,神经网络的应用将持续扩展,期待更多创新。
|
14天前
|
机器学习/深度学习 Python
【深度学习入门】- Matlab实现图片去重
【深度学习入门】- Matlab实现图片去重
|
14天前
|
机器学习/深度学习 Python
【深度学习入门】- 神经网络
【深度学习入门】- 神经网络
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
从零开始学习深度学习:入门指南与实践建议
本文将引导读者进入深度学习领域的大门,从基础概念到实际应用,为初学者提供全面的学习指南和实践建议。通过系统化的学习路径规划和案例实践,帮助读者快速掌握深度学习的核心知识和技能,迈出在人工智能领域的第一步。
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习入门:Python 与神经网络
深度学习是机器学习的一个分支,它涉及使用多层神经网络来处理和学习数据。在 Python 中,有许多流行的深度学习库和框架可以帮助我们轻松地构建和训练神经网络模型。在本文中,我们将介绍深度学习的基本概念,并使用 Python 中的 TensorFlow 和 Keras 库来构建一个简单的神经网络模型。
|
4月前
|
机器学习/深度学习 分布式计算 搜索推荐
深度学习入门:一篇概述深度学习的文章
深度学习入门:一篇概述深度学习的文章
|
6月前
|
机器学习/深度学习
小白入门机器学习深度学习实战教程
小白入门机器学习深度学习实战教程
36 0
|
14小时前
|
机器学习/深度学习 监控 自动驾驶
深度学习在图像识别中的应用与挑战
【5月更文挑战第12天】 随着计算机视觉和人工智能技术的迅猛发展,深度学习已成为图像识别领域的核心技术。本文将探讨深度学习在图像识别中的应用,包括卷积神经网络(CNN)的基本原理、关键技术及其在不同领域中的应用案例。同时,我们将分析当前面临的主要挑战,如数据集偏差、模型泛化能力和计算资源要求,并提出可能的解决方案。通过综合评述,旨在为读者提供一个关于深度学习在图像识别中应用的全面视角。