目录

  • 感知机算法
    • 概念
    • 利用感知机实现简单的逻辑电路
      • 与门
        • 特点:
        • 真值表
        • 感知机实现
      • 与非门
        • 特点
        • 真值表
        • 感知机实现
      • 或门
        • 特点
        • 真值表
        • 感知机实现
      • 关于感知机的局限性
      • 异或门
        • 感知机实现

本博客参考书籍:深度学习入门(斋藤康毅著)

感知机算法

1957年由美国学者Frank Rsenblatt提出,神经网络的起源算法。

概念

接收多个输入信号,输出一个信号(0或1)

下面举一个接受三个输入信号的感知机的例子

输入信号被神经元接收前,会被分别乘以各自的权重1,然后经过神经元的处理(此处的处理为对输入的神经元加权求和),得到一个神经元的拟输出值,当这个拟输出值大于一定的阈值时,神经元才会输出1,表明该神经元被激活了2

将上面的过程用数学表达式表示为:

从上面的数学表达式中,我们可以发现阈值实际上表示的是神经元被激活的容易程度,而且实际输出值final与输入是一个线性的关系,因此上面的数学表达式也可以写为

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

感知机的理论我们大概清楚了,如何利用它来解决实际问题?

与门

特点:

输入全为1时输出1,否则输出0

真值表

与门是一个具有两个输入一个输出的门电路,输入信号与输出信号之间的关系参考下面的真值表

x1 x2 final
0 0 0
0 1 0
1 0 0
1 1 1

感知机实现

def AND(x1,x2):w1,w2,theta=0.5,0.5,0.7tmp=w1*x1+w2*x2if tmp<=theta:return 0else:return 1

改进:
从上面算法中我们看到在计算拟输出tmp时,需要计算权重与输入值相乘表达式,当输入值很多时,这个表达式会十分冗长,为了解决这个问题,我们引入numpy数组运算

def AND(x1,x2):x=np.array([x1,x2])      # 引入numpy数组w=np.arry([0.5,0.5])    # 引入numpy数组b=-0.7  tmp=np.sum(w*x)+bif tmp<=0:return 0else:return 1

与非门

特点

输入都为1时输出0,否则输出1

真值表

x1 x2 final
0 0 1
0 1 1
1 0 1
1 1 0

感知机实现

def NAND(x1,x2):x=np.array([x1,x2])w=np.arry([-0.5,-0.5])b=0.7tmp=np.sum(w*x)+bif tmp<=0:return 0else:return 1  

或门

特点

只要有一个输出信号为1即输出1,否则输出0

真值表

x1 x2 final
0 0 0
0 1 1
1 0 1
1 1 1

感知机实现

def OR(x1,x2):x=np.array([x1,x2])w=np.arry([0.5,0.5])b=-0.2tmp=np.sum(w*x)+bif tmp<=0:return 0else:return 1

关于感知机的局限性

  1. 神经网络训练本质:仔细观察我们上面三种逻辑电路的实现过程,我们可以看到,只有权重参数和阈值不同,但却实现了不同的功能,实际上,神经网络的训练本质就是不断优化权重参数,在以后的学习过程中更要注意3
  1. 感知机局限性

我们看到与门,与非门,或门都可以通过一个线性函数分割为两个空间,其中一个空间输出0,另外一个空间输出1.
但是异或门却无论如何都不能使用一个直线分割为两个空间,只能使用曲线分割为两个空间,像这样由直线分割而成的空间称为线性空间,由曲线分割而成的空间称为非线性空间

异或门

单个感知机不能表示出异或门,但是我们可以通过叠加多个感知机来实现

感知机实现

多层感知机实现异或门的方法有很多, 笔者在这里介绍一种:x1,x2输入作为与非门和或门的输入,与非门和或门的输出作为与门的输入

代码实现

def XOR(x1,x2):return AND(NAND(x1,x2),OR(x1,x2))

  1. 每个输入信号值都有各自的权重,这些权重表示输入信号的重要性。即权重值越高,对应的信号值对输出值的影响越大 ↩︎

  2. 实际上,在生物神经元的工作机理中,神经元并不会简单的对所有输入值生成输出值,而是当输入值达到一定的阈值后才会有所反应。笔者的理解:神经网络本就是一个仿生学知识,感知机这样的设定也是受到生物神经元的启发 ↩︎

  3. 笔者的感悟:所谓好的神经网络模型,就是被优化后的权重参数能够针对某一个问题达到优秀的拟合效果 ↩︎

从零到一实现神经网络(一):感知机算法相关推荐

  1. C++从零实现简单深度神经网络(基于OpenCV)

    代码地址如下: http://www.demodashi.com/demo/11138.html 一.准备工作 ####需要准备什么环境 需要安装有Visual Studio并且配置了OpenCV.能 ...

  2. 【转】零基础理解卷积神经网络

    转自:https://zhuanlan.zhihu.com/p/32472241 本文译自A Beginner's Guide To Understanding Convolutional Neura ...

  3. 人工神经网络有哪些算法,神经网络都有哪些算法

    人工神经网络分类方法 从20世纪80年代末期,人工神经网络方法开始应用于遥感图像的自动分类. 目前,在遥感图像的自动分类方面,应用和研究比较多的人工神经网络方法主要有以下几种:(1)BP(BackPr ...

  4. 深度学习系列:全连接神经网络和BP算法

    前言 注:以后我的文章会写在个人博客网站上,本站文章也已被搬运.本文地址: https://xiaodongfan.com/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E ...

  5. 人工神经网络ANN的算法总结

    用笔记,记录自己的点滴进步:用行动,驱赶心中的彷徨 --杰 人工神经网络ANN的算法总结 前言 卷积神经网络 相关名词解释 卷积层 激励层 池化层 全连接层 补充 参考资料与原文 前言 人工神经网络( ...

  6. 深层神经网络与优化算法

    深层神经网络与优化算法 为什么使用深层网络 对于人脸识别等应用,神经网络的第一层从原始图片中提取人脸的轮廓和边缘,每个神经元学习到不同边缘的信息:网络的第二层将第一层学得的边缘信息组合起来,形成人脸的 ...

  7. 感知机算法的两种表示

    感知机算法的原始形式 输入:训练数据集T={(x1,y1),(x2,y2),...,(xn,yn)},其中xi属于Rn(n维空间向量),yi={-1,+1},i=1,2,...,N 学习率t(0< ...

  8. 一看就懂的感知机算法PLA

    个人网站:红色石头的机器学习之路 CSDN博客:红色石头的专栏 知乎:红色石头 微博:RedstoneWill的微博 GitHub:RedstoneWill的GitHub 微信公众号:AI有道(ID: ...

  9. 【附源码】一看就懂的感知机算法PLA

    AI有道 一个有情怀的公众号 本文所有的源代码均放在了我的GitHub上,需要的点击文末「阅读原文」获取.如果对你有用的话,别忘了Fork和Star哦! 什么是感知机「Perceptron」 PLA全 ...

最新文章

  1. ant指定servlet版本_阅读SpringMVC源码前,不妨看下简易版本SpringMVC框架的搭建
  2. [剑指offer]面试题第[54]题[JAVA][二叉搜索树的第k大节点][递归][迭代]
  3. java 中negate()_Java BigInteger negate()用法及代码示例
  4. 带有服务器回调的通用客户端——服务器 DotNet远程处理
  5. 【推荐实践】阿里飞猪“猜你喜欢”推荐排序实践
  6. poj 2573 Bridge(有A、B、C、D四个人,要在夜里过一座桥……)
  7. Android开发之onCreate
  8. N720实现4G的TCP连接,数据上云的方法
  9. 高版本Matlab运行时//在当前文件夹或MATLAB路径中未找到文件//函数或变量 ‘xx‘ 无法识别//解决方法
  10. 2021年新安全生产法知识考试题库
  11. Spring框架中的aop操作之一 及aspectjweaver.jar与aopalliance-1.0.jar下载地址 包含beans 注解context 和aop的约束
  12. 进一步学习操作系统 - 哈工大李治军老师 - 学习笔记 L13L14L15
  13. 项目中有时候为什么加载不出来图片
  14. 【JZOJ4598】准备食物
  15. A Game of Thrones(101)
  16. 【机器学习】22个开源的机器学习库,帮助您选择一个适合您的管道工具。
  17. 传奇登录器修改服务器列表,传奇登录器TCP服务器远程列表「防劫持」设置教程...
  18. mysql not exists无效_MySQL MATCH AGAINST无效
  19. 特斯拉这样的新贵,也逃不开给宁德时代打工
  20. 关于asp输出json对象的方法及实例

热门文章

  1. vc++常用函数方法
  2. 利用switch语句制作的抽卡小游戏。
  3. c语言实训报告总结300字,社会实践报告或者心得300字.doc
  4. android编辑keynote,Keynote文本如何编辑?文本编辑方法图文分享
  5. Python代码自动打开App
  6. mysql聚合索引、组合索引
  7. html403禁止访问怎么解决,打开网址出现 http 403 禁止访问是怎么回事?解决方法...
  8. 美团点评西安站面经整理
  9. 锐思华创与全球汽车零部件公司安波福将展示AR-HUD智能座舱
  10. cpython gil,CPython的线程与GIL