重要的人工神经元–感知器和Sigmod神经元

什么是神经元

首先先来解释一下什么是神经元,他有什么用。

人工神经网络是受到人类大脑的结构的启发而创造出来的,如下图所示,在我们的大脑中,有数十亿个称为神经元的细胞,它们互相链接形成了一个神经网络。

神经网络算法正是模仿了上面的网络结构,下面是一个人工神经网络的构造图,每一个圆都代表着一个神经元,它们连接起来构成了一个网络。

那么为什么会需要这么多的神经元呐?其实在神经元的数目多了之后相当于是一种简化。如果我们把整个神经网络要完成的工作想象成一个黑盒,那么在其需要完成的功能总量不变时,我们将其分解成很多份的话,每一份需要完成的任务就很少,每一份就代表着我们上图中的每一层也就是每一列的神经元。对于每一列神经元来说,他只需要完成固定的任务,然后将它的输出传递给后面一层的神经元即可。

在了解到这些之后,我们的任务就从设计一整个神经网络转变到了设计每一层神经网络要完成的工作。而对于每层中的单个神经元来说,他需要完成的任务就是接受一系列的输入,然后经过一定的处理得到一个输出,仅此而已。

接下来介绍一下最简单的两种神经元模型。

第一种是感知器神经元模型,第二种是Sigmod神经元模型。在当前的很多神经网络工作中,主要使用的S型神经元模型。但在了解S型神经元模型之前先来了解一下感知器神经元模型是怎么工作的。

感知器(Perceptrons)

感知器是如何工作的呢?一个感知器接受几个二进制输入, x 1 , x 2 , . . . x_1,x_2,... x1​,x2​,...,并产生一个二进制的输出,其模型如下图:

示例中的感知器有三个输入, x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​。通常可以有更多或更少的输出。Rosenblatt提议一个简单的规则来计算输出。他引入权重, w 1 , w 2 , . . . w_1,w_2,... w1​,w2​,...,表示相应输出对于输出重要性的实数。神经元的输出,0或1,则由分配权重后的总和 ∑ j w j x j \sum_j w_jx_j ∑j​wj​xj​小于或大于一些阈值决定。和权重一样,阈值是一个实数,一个神经元的参数,可以用更精确的代数形式表示:

o u t p u t = { 0 i f ∑ j w j x j ≤ t h r e s h o l d 1 i f ∑ j w j x j > t h r e s h o l d output= \begin{cases} 0\ \ \ \ if \sum_j w_jx_j \le threshold \\ 1\ \ \ \ if \sum_j w_jx_j \gt threshold \end{cases} output={0    if∑j​wj​xj​≤threshold1    if∑j​wj​xj​>threshold​

也就是说对于将输入按照一定的权重加权起来之后,当其大于一定的阈值之后,该感知器神经元会输出1,否则则会输出0。

将上式进行一点简单的变形,第一个变动是把 ∑ j w j x j \sum_j w_jx_j ∑j​wj​xj​改写成点乘,即 w ⋅ x = ∑ j w j x j w · x =\sum_j w_jx_j w⋅x=∑j​wj​xj​,这里的 w w w和 x x x对应权重和输入的向量;第二个变动是把阈值一道不等式的另一边,并且用感知器的偏置 b = − t h r e s h o l d b=-threshold b=−threshold 代替。则可以将上式改写为如下形式:
o u t p u t = { 0 , w ⋅ x + b ≤ 0 1 , w ⋅ x + b > 0 output= \begin{cases} 0\ \ \ \ ,\ w · x +b \le 0 \\ 1\ \ \ \ ,\ w · x +b \gt 0 \end{cases} output={0    , w⋅x+b≤01    , w⋅x+b>0​
这就是一个感知器所要做的所有事情。这也是一个最基本的数学模型,可以将感知器看做依据权重来做决定的设备。

其函数图像如下图所示,即阶跃函数,其中 z = w ⋅ x + b z=w\cdot x+b z=w⋅x+b

对于如下神经网络第⼀列感知器——是我们称其为第⼀层感知器 —— 通过权衡输⼊依据做出三个非常简单的决定。那第⼆层的感知器呢?每⼀个都在权衡第⼀层的决策结果并做出决定。以这种⽅式,⼀个第⼆层中的感知器可以⽐第⼀层中的做出更复杂和抽象的决策。在第三层中的感知器甚⾄能进⾏更复杂的决策。以这种⽅式,⼀个多层的感知器网络可以从事复杂巧妙的决策。

S型神经元

对于我们给神经网络设计的算法,我们希望的是当我们的模型发现实际输出值与预期输出值之间有偏差时,模型会自动调整我们的权重或偏置,从而使得实际输出向预期输出靠近,但是对于感知器来说,当我们调整 w w w或者 b b b使得 z z z值在0附近发生了偏动的话,就会导致输出值发生非常大的变化, 0 → 1 0\rightarrow1 0→1或 1 → 0 1\rightarrow 0 1→0。

这并不是我们期望的,我们想要的是对于权重或者偏置的微小改动仅仅会引起输出微小的变化,那么我们可以利用这一事实来修改权重和偏置,让我们的网络能够表现得像我们想要的那样。

这时候就可以引入一种称为S型神经元的新人工神经元来克服这个问题。S行神经元和感知器类似。但是被修改为权重和偏置的微小改动只引起输出的微小改变。

S型神经元与感知器在某些方面是相似的,也是获取一系列的输入,对于每个输入经过一个权重同时加入偏置的作用得到一个输出,可以表示成与感知器类似的样子:

S型神经元与感知器不同的方面在于:在感知器中,其输入与输出仅能为 0 0 0或者 1 1 1,但是在S型神经元中,这些输入可以取0和1之间的任意值,而不仅仅是0或者1。并且S型神经元的输出也不再是0或1。相反,其值为 σ ( w ⋅ x + b ) \sigma(w\cdot x+b) σ(w⋅x+b),这里的 σ \sigma σ称为S型函数,其定义为:

S型函数,全称为Sigmoid function,有时也被称为逻辑函数

σ ( z ) ≡ 1 1 + e − z \sigma(z) \equiv \frac 1 {1+e^{-z}} σ(z)≡1+e−z1​

将 z = w ⋅ x + b z=w\cdot x+b z=w⋅x+b展开为如下形式:
1 1 + e x p ( − ∑ j w j x j − b ) \frac 1 {1+exp(-\sum_j w_jx_j-b)} 1+exp(−∑j​wj​xj​−b)1​
其函数图像如下:

通过图像我们可以发现 σ \sigma σ的图像是连续的,也就是说当z的值发生微小改变时, σ ( z ) \sigma(z) σ(z)的值也只会发生很小的改动,可以表示成如下形式:
Δ o u t p u t ≈ ∑ j ∂ o u t p u t ∂ w j Δ w j + ∂ o u t p u t ∂ b Δ b \Delta output \approx \sum_j \frac{\partial output} {\partial w_j} \Delta w_j+\frac{\partial output}{\partial b}\Delta b Δoutput≈j∑​∂wj​∂output​Δwj​+∂b∂output​Δb
其中求和是在所有权重 w j w_j wj​上进行的,虽然它的形式非常复杂,但是他表示的含义非常简单: Δ o u t p u t \Delta output Δoutput是一个反映权重和偏置的变化,并且其为 Δ w j \Delta w_j Δwj​和 Δ b \Delta b Δb的线性函数。这一线性使得选择权重和偏置的微小变化来达到输出的微小变化的运算变得容易

重要的人工神经元--感知器和Sigmod神经元相关推荐

  1. 多层神经元感知器模型_使用多层感知器模型对星系进行分类

    多层神经元感知器模型 Cosmos is an intriguing space to observe and analyse, it is the stronghold for any scienc ...

  2. 人工神经网络——感知器介绍

    让我们来看一个经典的神经网络.这是一个包含三个层次的神经网络.红色的是输入层,绿色的是输出层,紫色的是中间层(也叫隐藏层).输入层有3个输入单元,隐藏层有4个单元,输出层有2个单元.后文中,我们统一使 ...

  3. 人工神经网络—感知器算法

    感知器算法 1. 回顾 2. 感知器算法 2.1 感知器算法的实现步骤 2.2 算法能停得下来吗? 2.3 基于增广向量的感知器算法 2.4 感知器算法收敛定理 3. 感知器算法收敛的MATLAB程序 ...

  4. 人工神经网络—感知器算法的意义

    感知器算法的意义 1. 回顾 2. 感知器算法的意义 2.1 机器学习算法的框架的提出 2.2 框架的介绍 2.3 感知器算法的优势 3. 结尾 参考资料 1. 回顾 在上一讲中,我们讲到了Rosen ...

  5. BP神经网络模型----第二篇(感知器网络模型)

    感知器网络 感知器网络的简单认识 感知器神经元模型 感知器的输入和输出 output向量的第i个元素的表达: 单神经元感知器 判定边界 感知器学习规则 感知器网络的简单认识 上一篇介绍了人工神经网络背 ...

  6. 深度学习入门系列1:多层感知器概述

    本人正在学习<deep learning with python>–Jason Brownlee,有兴趣的可以一起学习. 仅供学习参考,不做商用! 大家好,我技术人Howzit,这是深度学 ...

  7. 多层感知器用实际例子和Python代码进行解释情绪分析

    多层感知器用实际例子和Python代码进行解释情绪分析 多层感知器是一种学习线性和非线性数据之间关系的神经网络. 这是专门介绍深度学习系列的第一篇文章,深度学习是一组机器学习方法,其根源可以追溯到20 ...

  8. 为什么在反向传播中感知器初始值不能为0_深度学习理论分享之——单层感知器简述...

    1单层感知器概述单层感知器(Single Layer Perceptron)是最简单的神经网络.它包含输入层和输出层,而输入层和输出层是直接相连的.单层感知器属于感知器中最简单的一种分类器,属于机器学 ...

  9. 单层感知器python_感知器及其在Python中的实现

    本文涵盖以下主题: 什么是感知器?算法.Python实现.局限性. 什么是感知器? 生物神经元示意图 感知器的概念类似于大脑基本处理单元神经元的工作原理.神经元由许多由树突携带的输入信号.胞体和轴突携 ...

最新文章

  1. 机器学习算法加强——回归
  2. 最常用的ES6特性(转)
  3. TensorFLow 常用错误总结
  4. 使用postman发送HttpServletRequest请求
  5. C语言 neutralize函数,关于因子数据处理函数中的中性化函数的几个问题
  6. 4种常用压缩格式在hadoop中的应用
  7. 201521123106《java程序设计》第三周学习总结
  8. MacOS 下载JDK11 Java
  9. vue2.0网易云音乐播放器 (实时更新)
  10. python访问陌生人qq空间_自己的QQ空间怎么不让陌生人进入—设置访问权限
  11. 使用腾讯云服务器搭建鸿蒙操作系统编译环境
  12. ACO 蚁群算法(算法流程,TSP例子解析)
  13. HTTP协议详解(一)
  14. Pipeline流水线及分布式流水线发布PHP项目及JAVA项目
  15. java 组合实现汽车类 问题描述:一辆Car有(has)四个轮子(Wheels)和一个发动机(Engine)。现在要求用组合方法设计类Car、类Wheel和类Engine。
  16. 申请注册GMAIL的免费企业邮箱
  17. Sqoop 实际应用及样例
  18. stm32mp15x环境搭建基于linux环境(上)
  19. C++:链表(初识链表)
  20. linux 应用层gpio中断_树莓派官方自带gpio中断驱动bcm2708_gpio.c原理分析 linux 中断架构 中断子系统...

热门文章

  1. C语言主函数返回值含义
  2. php同时抢购 代码,PHP秒杀抢购问答题解决方案
  3. 老师讲,这是个hin重要的C语言习题
  4. MacOS系统tomcat修改端口到80(端口转发)
  5. Facade模式和Mediator模式
  6. js对json、xml字符串格式化(美化增强可读性)
  7. Java 获取本地时间与网络时间
  8. 【踩坑】iOS 状态栏没显示问题
  9. 基于JAVA高校学生综合素质测评系统计算机毕业设计源码+数据库+lw文档+系统+部署
  10. 【前端】之websql实现增删改查,包含简单示例