第二章 感知机

2.1感知机是什么

感知机接收多个信号,输出一个信号。但是感知机的信号只有“流/不流”(1/0)两种。0对应“不传递信号”,1对“应传递信号”。
感知机
其中x1、x2作为两个输入信号,y为输出信号,w1,w2是权重(weight的首字母)。图中的○称为“神经元”或者“节点”。输入信号被送往神经元时,会分别乘以固定对应的权重(w1x1,w2x2).神经元会计算传送过来的信号总和w1x1+w2x2,只有当这个总和超过了某个界定的值时,才会输出1,也称为“神经元被激活”。这里称这个界定的值为“阈值”
在这里插入图片描述
感知机的多个输入信号都有自己的权重,这些权重发挥着控制各个信号的重要性的作用。权重越大,对应该权重的信号的重要程度就越大。

2.2简单的逻辑电路

2.2.1与门(and gate)

与门是有两个输入一个输出的门电路。与门仅在两个输入均为1时输出位1,其余都为0。
在这里插入图片描述
那么如何用感知机来表示这个与门?其实有无数种表示方法:(w1,w2,)=(0.5,0.5,0.7),(w1,w2,)=(0.5,0.5,0.8)或者(w1,w2,)=(1.0,1.0,1.0)

2.2.2与非门和或门

与非门就是颠倒了与门的输出结果 ,仅当x1,x2同时为1时,输出结果为0,其余都为1。
在这里插入图片描述
那么如何用感知机来表示这个与门?其实有无数种表示方法:只要实现把与门的参数值的符号取反就能实现与非门。

或门是“只要有一个输入信号是1,输出就为1”
在这里插入图片描述
tips:感知机是人工干预考虑了参数的值,而机器学习的课题就是将这个决定参数的工作让计算机自动进行。学习是确定合适的参数的过程,而人要做的是思考感知机的构造(模型),并把训练数据交给计算机。

2.3感知机的实现

2.3.1与门感知机的实现

与门感知机

def END(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

2.3.2导入权重和偏置

在这里插入图片描述
虽然与上一个式子符号不同,但是表达的内容是完全一样的。其中b成为偏置(bias);w1,w2称为权重(weight)。感知机会计算输入信号和权重的乘积,然后再加上偏置,如果这个值大于0则输出1,如果小于0则输出0。

2.3.3使用权重和偏置的实现

使用权重和偏置实现与门

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

==其中w1,w2是控制输入信号重要性的参数,而偏置是调整神经元被激活的难易程度的参数。==比如b=-0.1,则只要输入信号的加权和大于-0.1,神经元就会被激活;如果b=20,则输入信号的加权和大于20,神经元才能被激活。

使用权重和偏置实现与非门

def NEND(x1,x2):
    x=np.array([x1,x2])
    w=np.array([-0.5,-0.5])#仅权重和偏置与AND不同!
    b=-0.7
    temp=np.sum(w*x)+b
    if temp<=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
    temp=np.sum(w*x)+b
    if temp>=0:
        return 1
    else:
        return 0

与门、与非门、或门是具有相同构造的感知机,区别仅在于他们的权重和偏置参数不一样。因此仅通过设置不同的权重和参数的值就能实现不同的感知机。

2.4感知机的局限性

2.4.1异或门

异或门也被称为逻辑异或电路,仅当x1或x2中的一方为1时,才输出1,其余都为0。
在这里插入图片描述
其实用感知机是无法实现异或门的!
首先说一下或门,当(b,w1,w2)=(-0.5,1,1)时,满足或门的真值表。此时感知机可表示为
在这里插入图片描述
根据式子(2.3)可以得知,直线0.5+x1+x2=0把空间分为两个部分,其中一个输出为1,一个输出为0.
在这里插入图片描述
其中黄色部分为感知机输出为0的区域,图中三角形表示0,菱形表示1,要实现感知机,只需要把三角形和菱形分开就行。图中蓝色 的直线也将三角形和菱形分开了。
那么换成异或门来看看?
在这里插入图片描述
很显然,一条直线已经不能把三角形和菱形分开了!

2.4.2线性和非线性

上图中无法用一条直线将三角形和菱形分开,但如果把“直线”这条限制去掉就可以了。
感知机的局限性就在于他只能表示由一条直线分割的空间。弯曲的曲线就不能用感知机表示
在这里插入图片描述
如图,这样由曲线分割而成的空间称为非线性空间,由直线分割而成的空间称为线性空间。

2.5多层感知机

2.5.1已有门电路组合

单层感知机无法表示异或门,单层感知机无法分离线性空间。但是组合感知机(叠加层)可以实现异或门。
在这里插入图片描述
在这里插入图片描述
异或门的实现

def X1OR(x1,x2):
    s1=NAND(x1,x2)
    s2=OR(x1,x2)
    y=AND(s1,s2)
    return y

在这里插入图片描述
异或门是一种多层结构的神经网络,将最左边的一列称为第0层,中间的一列称为第1层。与门,或门是单层感知机,而异或门是2层感知机。叠加了多层的感知机称为多层感知机。

tips:上图所示的感知机由3层构成,但实质上拥有权重的层实质上只有2层(第0层和第1层,第1层和第2层之间),所以称之为2层感知机,不过有的文献认为其是三层构成的,称为“3层感知机”

单层感知机无法表示的东西,通过增加一层就可以解决,也就是说通过叠加层(加深层),感知机就能灵活的表示。

2.6从非门到计算机

已有研究表明:2层感知机(严格的说是激活函数使用了非线性的sigmoid函数的感知机)可以表示任意函数

2.7本章小结

1.感知机是具有输入和输出的算法。给定一个输入之后,并输出一个既定的值

2.感知机将权重和偏置设定为参数

3.使用感知机可以表示与门和或门等逻辑电路

4.异或门无法通过单层感知机来表示

5.使用2层感知机可以实现异或门

6.单层感知机只能表示线性空间,而多层感知机可以表示非线性空间

7.多层感知机在理论上可以表示计算机

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
多层感知机在二分类问题中的python实现可以参考以下步骤: 1. 导入所需库,包括numpy和sklearn的make_classification和train_test_split函数。 2. 准备数据并进行切分。使用make_classification函数生成分类数据集,并使用train_test_split函数将数据集划分为训练集和测试集。 3. 定义前期准备函数,包括sigmoid函数和其导数sigmoid_Derivative函数。sigmoid函数用于将输出值映射到介于0和1之间的概率值,sigmoid_Derivative函数用于计算sigmoid函数的导数。 4. 实现BP类。具体步骤如下: a. 初始化权重矩阵,可以使用随机初始化或者其他方式。 b. 定义前向传播函数,根据输入值预测输出值,并将中间结果保存。 c. 定义反向传播函数,根据损失函数的梯度计算权重的调整量,并根据调整量更新权重矩阵。 d. 定义训练函数,使用训练集进行迭代训练,根据预测值和真实值计算损失函数,并根据损失函数的梯度进行权重的更新。 e. 定义预测函数,使用测试集进行预测,返回预测结果。 f. 实例化BP类,并调用训练函数进行模型训练,再调用预测函数进行模型预测。 以上是多层感知机在二分类问题中的python实现的基本步骤。具体代码实现可以参考引用中的链接提供的内容。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [python手推多层感知机(BP网络实现)](https://blog.csdn.net/Auraro__/article/details/120612508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追寻远方的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值