[分享] 《人工智能实践教程》2、感知机

xinmeng_wit   2024-8-13 21:53 楼主

一、感知机介绍

感知机是最早的监督式学习算法,是神经网络和支持向量机的基础。在神经网络方面,可以将它看作神经网络的一个神经元。

感知机接收多个输入信号,输出一个信号。

下图是具有两个输入信号的感知机。x1和x2是输入信号,y是输出信号,w1和w2是权重,图中的圈圈称为神经元或者节点。输入信号传递至神经元时,分别乘以固定的权重(得到w1x1、w2x2)。神经元会计算传递过来的信号的总和,只有当前这个总和超过了某个界限时,才会输出1,这称为“神经元被激活”。我们把界限称为阈值,用表示。

 

webwxgetmsgimg.jpeg
 
用数学表达式表示感知机的运行原理:
webwxgetmsgimg(1).jpeg

感知机的多个输入信号都有各自故有权重,权重的大小控制各个信号的重要性。也就是说,权重越大的信号越重要。

 

二、感知机与简单逻辑电路

书中,这一部分介绍了与门,与非门和或门等逻辑电路,并且这三种逻辑电路可以用同一个感知机模型来表示,不同的是模型参数。

通过调整模型参数就能实现不同的逻辑门电路逻辑。

具体不再这里详细介绍,了解以下即可,也比较简单,相信大家都能理解。

 

三、感知机的实现

1、简单实现

与门的简单实现如下:


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
    
print(AND(0,0))
print(AND(1,0))
print(AND(0,1))
print(AND(1,1))

运行结果:

(py_venv) xp@7010:~/work$ /home/xp/work/py_venv/bin/python3.10 /home/xp/work/ML_shao1chuan/ANN/test1.py
0
0
0
1
(py_venv) xp@7010:~/work$ ^C
(py_venv) xp@7010:~/work$ 

2、导入权重和偏重

将前面的公式里的阈值换成-b,感知机的运行原理可以重新表示为:

webwxgetmsgimg(2).jpeg

式中,b称为便置,w1和w2称为权重。感知机计算输入信号和权重的乘积,然后加上便置,若结果大于0,则输入1,否则输出0.

使用Numpy数组方式实现:

def AND2(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
    elif tmp >0:
        return 1

 四、感知机的局限性

事实上,感知机可以表示与门,与非门和或门,但是不能表示异或门,因为感知机是线性的,只能区分线性数据特性,对于非线性数据是无法用感知机等线性方法区分的。

这个就是感知机的局限性。感知机的局限性在于只能表示由一条直线分开的空间。

 

 五、多层感知机

通过多层感知机可以实现异或门。

实际上,异或门可以由与门、与非门和或门等简单的门电路组合而成,例如下面的组合就是实现异或门的一种组合方法:

webwxgetmsgimg(3).jpeg

用感知机实现的异或门如下:

webwxgetmsgimg(4).jpeg

上图的异或门是一种多层结构的神经网络。将最左边的一列称为第0层,中间的称为第1层,最后一列称为第2层。

像这种叠加了多层的感知机称为多层感知机(Multi-Layered Perceptron)。

从上面的分析可以看出,多层感知机已经能解决一些非线性问题了。

 

回复评论 (10)

这种叠加了多层的感知机称为多层感知机感觉还是比较复杂的

点赞  2024-8-14 07:19
引用: Jacktang 发表于 2024-8-14 07:19 这种叠加了多层的感知机称为多层感知机感觉还是比较复杂的

这应该算是最简单的神经网络了

点赞  2024-8-14 09:51

追本溯源。。。。。perception -----> multi layers perception(MLP)

点赞  2024-8-14 15:58

感知机: x1和x2是输入信号,y是输出信号,w1和w2是权重,图中的圈圈称为神经元或者节点。输入信号传递至神经元时,分别乘以固定的权重(得到w1x1、w2x2)。神经元会计算传递过来的信号的总和,只有当前这个总和超过了某个界限时,才会输出1,这称为“神经元被激活”。我们把界限称为阈值,用表示。这样的东西通俗易懂,如何实现是根本

点赞 (1) 2024-8-15 20:52

这个词不太知道为啥翻译成“感知机”我开始接触机器学习的时候想了半天

默认摸鱼,再摸鱼。2022、9、28
点赞  2024-8-16 16:06
引用: freebsder 发表于 2024-8-16 16:06 这个词不太知道为啥翻译成“感知机”我开始接触机器学习的时候想了半天

最初是想模拟人类的感知能力

点赞  2024-8-16 20:10

transformer,怎么翻译????????

想了好久,发现还是不翻译的好。。。。

点赞  2024-8-17 13:35
引用: hellokitty_bean 发表于 2024-8-17 13:35 transformer,怎么翻译???????? 想了好久,发现还是不翻译的好。。。。

不用翻译,直接叫transformer就好,哈哈

点赞  2024-8-17 16:47
引用: hellokitty_bean 发表于 2024-8-17 13:35 transformer,怎么翻译???????? 想了好久,发现还是不翻译的好。。。。

变压器,变形金刚

默认摸鱼,再摸鱼。2022、9、28
点赞 (1) 2024-8-20 11:23
引用: freebsder 发表于 2024-8-20 11:23 变压器,变形金刚

好翻译。。。。。。。。直白、率直、耿直。。。。。。。直率!

点赞  2024-8-20 18:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复