zoukankan      html  css  js  c++  java
  • 深度学习入门|第二章 感知机

    感知机

    前言

    此为本人学习《深度学习入门》的学习笔记

    一、感知机是什么

    感知机接受多个输入信号,输出一个信号。感知机的信号只有“流/不流“(1/0)两种取值,0对应不传递信号,1对应传递信号。


    图2-1 有两个输入的感知机


    神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出 1。这也称为“神经元被激活”。这里将这个界限值称为阈值,用符号 θ 表示。用数学公式表示就是

    二、简单逻辑电路

    1、与门(AND gate)

    仅在两个输入均为1时输出1,其他时候则输出0

    2、与非门(NAND gate)

    当两个输入均为1时输出0,其他时候输出1

    3、或门(OR gate)

    当两个输入均为0时输出0,其他时候输出1

    三、感知机的实现

    1、简单的实现

     利用python实现逻辑电路,先定义一个接受参数x1和x的AND参数

    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

    在函数内初始化参数w1, w2, thete, 当输入的加权总和超过阈值时返回1,否则返回0.

    2、导入权重和偏置并实现

     把式子2.1的θ 换成-b,可改为式2.2表示感知机的行为

    此处,b称为偏置,w1和w2称为权重。

    def AND(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
        else:
           return 1

    3、实现与非门和或门

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

     四、感知机的局限性

    1、异或门(XOR gate)

      异或门也称逻辑异或电路。仅当两个输入一方为1时,才会输出1.

        实际上,前面介绍的感知机无法实现异或门

    满足异或门条件的式子

     如下图,其无法用一条直线将o和△分开。

    2、线性和非线性

     感知机的局限性就在于它只能表示由一条直线分割的空间。上图这样弯曲的曲线无法用感知机表示。另外,由上图这样的曲线分割而成的空间称为非线性空间,由直线分割而成的空间称为线性空间

    五、多层感知机

    感知机的绝妙之处在于它的叠加层

    1、已有门电路的组合

    2、将其组合实现异或门

     3、异或门的实现

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

    4、用感知机表达异或门

    异或门是一种多层结构的神经网络。上图所示的叠加了多层的感知机也称多层感知机(multi-layered perceptron)

    六 从与非门到计算机

    感知机通过叠加层能够进行非线性的表示,理论上还可以表示计算机进行的处理

    小结

    • 感知机是具有输入和输出的算法。给定一个输入后,将输出一个既定的值。
    • 感知机将权重和偏置设定为参数。
    • 使用感知机可以表示与门和或门等逻辑电路。
    • 异或门无法通过单层感知机来表示。
    • 使用2层感知机可以表示异或门。
    • 单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。
    • 多层感知机(在理论上)可以表示计算机。
  • 相关阅读:
    Java中时间方法大全(持续更新)
    Set集合转换为List集合
    Maven配置【详细】
    maven配置环境变量
    idea中创建Java类时,自动在文件头中添加作者和创建时间
    linux下怎样在某个文件里面查找一个字符串?
    执行docker一系列命令失败
    如何在服务器上搭建SVN
    本地拉取服务器上的项目,SVN 由于目标计算机积极拒绝 无法连接失败
    [节选] web项目中使用freemarker [Translated By Nan Lei]
  • 原文地址:https://www.cnblogs.com/zyqy/p/10806175.html
Copyright © 2011-2022 走看看