深度学习第二章笔记——感知机

目录

一、何为感知机

二、简单逻辑电路

2.1 与门、或门、与非门

三、感知机的实现

3.1 简单实现

3.2 导入权重与偏置 

3.3 使用权重和偏置的实现

四、感知机的局限性

五、多层感知机 

5.1 异或门的实现

  


一、何为感知机

        感知机接收多个输入信号,输出一个信号,可以将“信号”理解为水流那样具备流动性的东西。但与实际电流不同的是,感知机的信号只有“流/不流”(1/0)两种取值。在下面的学习中,0代表“不传递信号”,1代表“传递信号”。

        以下图接收两个输入信号的感知机为例,x_{1},x_{2}为输入信号,y是输出信号,w_{1},w_{2}为权重,圆圈就为神经元亦或者称为节点。当输入信号被送往神经元时,分别乘以固定的权重,神经元会计算传送过来的信号的总和,只有当总和大于设定的阈值时,输出1。也称“神经元激活”。阈值一般以θ表示。

图1  两输入的感知机

        以数学公式的形式表示:

y\begin{cases} 0 & \text{ }(w_{1}x_{1}+w_{2}x_{2}\leqslant \theta ) \\ 1& \text{ }(w_{1}x_{1}+w_{2}x_{2}> \theta ) \end{cases}

每个输入信号都有其固有的权重,这些权重发挥着控制各个信号的作用。权重越高,对应信号的重要性越大。

二、简单逻辑电路

2.1 与门、或门、与非门

        电路课程中有学过逻辑门电路,这里就简单的在介绍一下。

                与门:输入同时为1时,输出为1,其他的时候均为0。

                或门:两个输入中只要有有一个为1,输出就为1.

                与非门:与非门即颠倒的与门,只有两个输入同时为1时,输出为0,其余均为1。

        这里可以将逻辑电路与感知机进行一波联想,就可以发现通过适当的调整权重与阈值的大小感知机就可以变成与门、或门、与非门。

三、感知机的实现

3.1 简单实现

        先前的部分了解到感知机在一定程度上与逻辑电路类似。接下来就是利用python对三种逻辑门进行实现:

与门:

def AND(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7  # 定义两个输入的权重,以及阈值
    tmp = w1 * x1 + w2 * x2
    if tmp <= theta:  # 总和与阈值进行对比,大于阈值返回1
        return 0
    elif tmp > theta:
        return 1


print(AND(0, 1))
print(AND(1, 0))

或门,调整阈值大小:

# 或门:输入有一个为1,输出就为1
def Or(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.5
    tmp = w1 * x1 + w2 * x2
    if tmp >= theta:  # 总和与阈值进行对比,大于阈值返回1
        return 1
    elif tmp < theta:
        return 0

print(Or(0, 1))
print(Or(1, 0))
print(Or(0, 0))
print(Or(1, 1))

与非门:

def NAND(x1, x2):
    w1, w2, theta = -0.5, -0.5, -0.7  # 定义两个输入的权重,以及阈值
    tmp = w1 * x1 + w2 * x2
    if tmp <= theta:  
        return 1
    elif tmp > theta:
        return 0

3.2 导入权重与偏置 

        考虑到上述逻辑门的实现并不能满足以后的事情,将其修改为另一种实现形式。

y\begin{cases} 0 & \text{ }(b+w_{1}x_{1}+w_{2}x_{2}\leqslant 0 ) \\ 1& \text{ }(b+w_{1}x_{1}+w_{2}x_{2}> 0 ) \end{cases}

        这里的b为偏置,其他的与之前一样。就如公式所示,感知机会计算输入信号和权重的乘积,然后加上偏置,当这个值大于0则输出1,否则输出为0。

        利用python中的Numpy库实现感知机:

import numpy as np

x = np.array([0, 1])  # 使用数组来表示两个输入
w = np.array([0.5, 0.5])  # 使用数组来表示两个权重
b = -0.7
res = w * x
res1 = np.sum(res)
result = res1 + b  

print(result)

3.3 使用权重和偏置的实现

简单实现一下:

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:  # 总和与阈值进行对比,大于阈值返回1
        return 0
    else:
        return 1



# 或门:输入有一个为1,输出就为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:  # 总和与阈值进行对比,大于阈值返回1
        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:  # 总和与阈值进行对比,大于阈值返回1
        return 0
    else:
        return 1

权重是控制输入信号的重要性的参数,而偏置是调整神经元被激活的容易程度(输出信号为1的程度)的参数。当b = -0.1时,则只要输入信号的加权总和超过0.1,该神经元就会被激活,但如果b=-20.0时,那么神经元激活的条件就更难达到。因此,偏置的值就决定了神经元被激活的容易程度。 

四、感知机的局限性

        当知道感知机能够实现与门、与非门、或门的时候,就会忍不住想能否实现异或门。

异或门的特点是相同为0,不同为1:

图2  异或门的真值表 

        这里就会发现我们介绍的感知机是无法实现异或门的。在对权重参数进行调整后可以发现

(b,w_{1},w_{2}) =(-0.5, 1.0, 1.0)时是可以满足异或的真值表的。不妨将值代入之前的公式中就可以得到一个直线:

图3  感知机的或门可视化

        灰色是输出0的区域,异或门与或门不同的有点在于两个输入都为1时,其输出为0,感知机无法仅仅利用一条线性直线就将两种情况分开,而图4中的非线性曲线就能实现了。

图4  利用非线性的线将两种情况分开

五、多层感知机 

        感知机的绝妙之处在于它可以“叠加层”:

5.1 异或门的实现

        电路课程中有学过,通过一个与非门以及一个或门之间相与就能够实现异或门。

图5  异或门

        python实现:

def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = Or(x1, x2)
    y = AND(s1, s2)
    return y

        异或门是一种多层结构的神经网络。如下图6所示,一般将最左边的一列称为第0层,中间一列为第1层,最右边的一列为2层。  

图6  感知层表示异或门

第0层的两个神经元接收信号,并将信号发送至第1层的神经元,再由第1层的神经元将信号发送到第2层的神经元,最终输出结果。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cda备考学习学习笔记——基础知识篇(二)主要涉及了计算科学与技术领域的基本概念和知识。 首先,它介绍了计算网络的基础知识。网络是将多台计算通过通信链路连接起来,使它们能够相互通信和共享资源的系统。笔记中详细介绍了网络的组成、拓扑结构和通信协议等重要内容。 其次,笔记还解释了计算系统的基本组成。计算系统由硬件和软件两部分组成,其中硬件包括中央处理器、存储器、输入输出设备等,而软件则分为系统软件和应用软件。笔记详细介绍了各种硬件和软件的功能和作用。 此外,笔记还对数据库管理系统进行了介绍。数据库管理系统是一种用于管理和组织数据的软件系统,它能够实现数据的存储、检索和更新等操作。笔记中详细介绍了数据库的概念、结构和操作等内容。 最后,笔记还包括了算法和数据结构的基础知识。算法是解决问题的一系列步骤和规则,而数据结构则是组织和存储数据的方式。笔记中介绍了常用的算法和数据结构,如排序算法、树和图等。 总之,通过学习CDA备考学习笔记中的基础知识篇(二),我们能够更好地理解计算网络、计算系统、数据库管理系统以及算法和数据结构等相关概念和知识。这些基础知识对于我们深入研究计算科学与技术领域是非常重要的,也为我们日后的学习和工作奠定了坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值