深度学习入门之感知机

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


深度学习入门——感知机

记录自己的学习过程。


一、感知机是什么?

这里所说的感知机具体指的是“人工神经元”。,接收多个输入信号,输出一个信号。信号可以理解为电流。感知机的信号只有0,1即不流与流。一个感知机接受的所有信号x乘以各自权重w的总和如果超过了阈值θ,则称为“神经元被激活”。

二、用感知机实现简单的逻辑电路

1.与门

与门(AND gate)真值表如下:

x1x2y
000
100
010
111

为了用感知机来实现与门,我们要做的就是调整权重和阈值,比如(w1, w2, θ) = (0.5, 0.5, 0.7)可以满足,又比如(0.5, 0.5, 0.8)也可以满足。只要信号(x)的加权总和能超过阈值就能满足,所以参数的选择为无数个。
为了以后的理解,将b= -θ。下文的括号内都为b。
数学表达式为:
神经元激活表达式

代码实现为:

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

2.与非门和或门

与非门不必多说,反转与门输出即可,将权重和阈值设置为相反数。或门需要对权重和阈值进行设置,例如(w1, w2, b) = (0.5, 0.5, -0.2)
代码实现为:

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

3.异或门

我们先来看看异或的真值表:

x1x2y
000
101
011
110

来画个图
异或1
异或2
我们发现一条直线无法实现真值表中的状态,所以我们需要曲线,异或也就是非线性的。无法使用一层感知机实现。
有趣的是,我们能够使用与,与非,或三个门的组合实现异或
二层感知机
这就叫二层感知机,代码如下:

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

总结

感知机是神经网络的基础,单层感知机可以实现线性空间,多层感知机可以实现非线性空间,理论上可以实现计算机。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值