https://www.toutiao.com/a6700690948671668747/

这是简单介绍神经网络的知识,并介绍一种特别的神经网络—多层感知器(Multi Layer Perceptron,MLP)

翻译自 https://ujjwalkarn.me/2016/08/09/quick-intro-neural-networks/

这篇文章并不涉及到对数学公式的推导,只是简单介绍了神经网络的结构和基本原理。


1. 神经元

神经元(neuron)是神经网络的基本计算单元,也被称作节点(node)或者单元(unit)。它可以接受来自其他神经元的输入或者是外部的数据,然后计算一个输出。每个输入值都有一个权重(weight),权重的大小取决于这个输入相比于其他输入值的重要性。然后在神经元上执行一个特定的函数 f, 定义如下图所示,这个函数会该神经元的所有输入值以及其权重进行一个操作。

由上图可以看到,除了权重外,还有一个输入值是1的偏置值bias。这里的函数f就是一个被称为激活函数的非线性函数。它的目的是给神经元的输出引入非线性。因为在现实世界中的数据都是非线性的,因此我们希望神经元都可以学习到这些非线性的表示。

下面是一些比较常见的激活函数:

  • Sigmoid: 输出范围是[0,1]

  • tanh: 输出范围是[-1,1]

  • ReLU:

下面给出上述激活函数的图像:

这里需要简单说下偏置值bias的作用,它可以提供给每个神经元一个可训练的常量值。具体可以看下Stackoverflow上的这个回答:

http://stackoverflow.com/questions/2480650/role-of-bias-in-neural-networks

2. 前向神经网络

前向神经网络是第一个也是最简单的一种人工神经网络了。下面给出一个前向神经网络的简单例子示意图。

如上图所示,这个神经网络分为3个网络层,分别是输入层,隐藏层和输出层,每个网络层都包含有多个神经元,每个神经元都会跟相邻的前一个层的神经元有连接,这些连接其实也是该神经元的输入。根据神经元所在层的不同,前向神经网络的神经元也分为三种,分别为:

  1. 输入神经元:位于输入层,主要是传递来自外界的信息进入神经网络中,比如图片信息,文本信息等,这些神经元不需要执行任何计算,只是作为传递信息,或者说是数据进入隐藏层。
  2. 隐藏神经元:位于隐藏层,隐藏层的神经元不与外界有直接的连接,它都是通过前面的输入层和后面的输出层与外界有间接的联系,因此称之为隐藏层,上图只是有1个网络层,但实际上隐藏层的数量是可以有很多的,远多于1个,当然也可以没有,那就是只有输入层和输出层的情况了。隐藏层的神经元会执行计算,将输入层的输入信息通过计算进行转换,然后输出到输出层。
  3. 输出神经元:位于输出层,输出神经元就是将来自隐藏层的信息输出到外界中,也就是输出最终的结果,如分类结果等。

前向网络中,信息是从输入层传递到输出层,只有前向这一个方向,没有反向传播,也不会循环(不同于RNN,它的神经元间的连接形成了一个循环)。

下面是两个前向神经网络的例子:

  1. 单层感知器——最简单的前向神经网络,并且不含任何隐藏层。
  2. 多层感知器——拥有1个或多个隐藏层。

3. 多层感知器(MLP)

单层感知器只有输入层和输出层,所以只能学习线性函数,而多层感知器拥有1个或多个隐藏层,因此也就可以学习非线性函数了。下面是拥有一个隐藏层的MLP的例子示意图:

上图显示该MLP有两个输入值X1X2,隐藏层有两个神经元,然后有两个输出值Y1Y2。图中还展示了其中一个隐藏层神经元的计算:

4. 反向传播算法

MLP要能够获得更好的结果,单单通过前向传播计算是不够的,神经网络除了前向传播计算,还有反向传播算法,通过反向传播来更新权值,从而获得更好的训练结果。下面给出来自Quora 上一个回答对反向传播的解释:

https://www.quora.com/How-do-you-explain-back-propagation-algorithm-to-a-beginner-in-neural-network/answer/Hemanth-Kumar-Mantri

反向传播误差,也被简称为反向传播,是用于训练神经网络的方法之一,它是一个有监督学习方法,也就是说它是从训练数据的标签来进行学习,即相当于有一个监督者负责指导它的学习。

简单来说,反向传播是“从错误中进行学习”,监督者会在神经网络出错的时候修正它。

学习的目的主要是为了给隐藏层的每个节点的连接的权重分配一个正确的数值。当给定一个输入向量,这些权重可以决定输出的向量。

在监督学习中,训练集是有标签的,这意味着,对于给定的一些输入,我们是可以知道一些期望的输出值,也就是标签是什么的。

反向传播算法:

在初始阶段,所有权重都是随机分配的。对于训练集的每个输入值,经过神经网络的前向计算后,得到的输出值将会与期望的输出进行比较,然后得到的误差会传回给前面的网络层。这个误差会被记下,然后权重会进行相应的调整。这个过程会不断重复,知道输出的误差低于一个设定好的阈值。

当上述算法结束,我们就会得到一个训练好的网络,可以应用于一些新的输入数据。

下图展示了一个MLP的反向传播过程:

图中展示的是一个给定的例子的训练数据,训练数据如下:

要预测的例子如下:

这个例子中输入数据,或者说输入的特征是学习时间和中期考试成绩,输出结果是期末考试结果,并且是用0和1表示,即这是一个二分类问题。

上图展示的就是MLP是一个拥有1个隐藏层的例子,输入层有 3 个节点,其中 1 个是数值为 1,也就是它与节点的连接上的数值表示的是偏置值,另外两个节点传递的就是两个输入数据;隐藏层中,除了表示偏置值节点外,有两个节点,而输出层也是有两个输出节点,上面的节点表示通过(Pass)的概率,而下面的节点表示不通过(Fail)的概率。

在分类任务中,我们通常使用 Softmax function 作为输出层的激活函数,这是为了保证输出值是概率值,并且输出值的和是1。Softmax函数会将输入的一个包含任意实数的向量变成一个包含范围在0到1的数值的向量。因此,在这里的例子中,有

Probability(Pass) + Probability(Fail) = 1

Step 1: 前向传播

这里将上图中标记为V的隐藏层的节点拿出来介绍下前向传播的过程。假设其连接的节点上的权重分别是 w1,w2,w3。

网络首先接受第一个训练输入,也就是输入35和67,并且期望的输出值是1,也就是通过的结果。

  • 网络的输入 = [35, 67]
  • 网络的期望输出 = [1, 0]

在节点V上执行的计算为:

其他节点的计算也类似这个。最终在输出层的两个节点将分别得到两个概率值,假设分别是 0.4 和 0.6(因为权重是随机分配的,所以输出值也是随机的)。很明显,这两个数值不符合期望的数值,因此上图中左上角也说明这是一个错误的输出。

Step 2: 反向传播和权重更新

下图展示了反向传播和权重更新的过程:

这里会计算输出节点的误差,然后使用反向传播计算梯度,并将误差传回前面的网络层,进行权重的更新。这里权重的更新使用一种优化方法,比如梯度下降算法,目的是减小输出层的误差值。

这里假设经过权重更新,节点V的连接上的权重更新为新的权重 w4,w5,w6。

然后继续还是刚才的输入,此时由于经过反向传播,权重是在向着减小误差的方向下调整的,所以应该有一个更好的输出结果,如下图所示,此时输出层的误差变成[0.2, -0.2],相比于之前的[0.6, -0.4],这意味着网络已经学习到正确分类第一个训练数据了。

接下来就可以对整个训练集重复上述过程,然后就可以得到一个训练好的神经网络。此时,需要对测试例子进行输出,则只需要传递测试数据,并执行前向传播,就可以得到输出结果。

5. 小结

这里简单介绍了神经网络,以及MLP的网络结构,介绍了前向传播和反向传播的实现过程,不过忽略了详细的数学实现公式。

参考:

  1. https://www.quora.com/How-do-you-explain-back-propagation-algorithm-to-a-beginner-in-neural-network/answer/Hemanth-Kumar-Mantri
  2. http://stackoverflow.com/questions/2480650/role-of-bias-in-neural-networks
  3. https://github.com/rasbt/python-machine-learning-book/blob/master/faq/visual-backpropagation.md

一文了解神经网络的基本原理相关推荐

  1. 人工神经网络的基本原理及其应用

    神经网络算法原理 4.2.1 概述. 人工神经网络的研究与计算机的研究几乎是同步发展的.1943年心理学家McCulloch和数学家Pitts合作提出了形式神经元的数学模型,20世纪50年代末,Ros ...

  2. 神经网络的基本原理,神经网络算法三大类

    1.神经网络是什么? 生物神经网络主要是指人脑的神经网络,它是人工神经网络的技术原型. 人脑是人类思维的物质基础,思维的功能定位在大脑皮层,后者含有大约10^11个神经元,每个神经元又通过神经突触与大 ...

  3. 卷积神经网络CNN基本原理

    卷积神经网络CNN基本原理 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural N ...

  4. 神经网络原理的简单介绍,神经网络的基本原理

    神经网络的基本原理是什么? 神经网络的基本原理是:每个神经元把最初的输入值乘以一定的权重,并加上其他输入到这个神经元里的值(并结合其他信息值),最后算出一个总和,再经过神经元的偏差调整,最后用激励函数 ...

  5. BP神经网络算法基本原理,bp神经网络算法的原理

    BP人工神经网络方法 (一)方法原理人工神经网络是由大量的类似人脑神经元的简单处理单元广泛地相互连接而成的复杂的网络系统.理论和实践表明,在信息处理方面,神经网络方法比传统模式识别方法更具有优势. 人 ...

  6. 人工神经网络的基本原理

    1.1 人工神经网络原理 MeCulloch 和 Pitts 基于对大脑神经元的研究提 出了人工神经元模型(M-P 模型).人工神经元模型如下图所示. M-P模型把神经元看作n个的输入对应产生1个输出 ...

  7. 卷积神经网络 (CNN) 基本原理和公式

    卷积神经网络是一种前馈型神经网络, 受生物自然视觉认知机制启发而来的. 现在, CNN 已经成为众多科学领域的研究热点之一, 特别是在模式分类领域, 由于该网络避免了对图像的复杂前期预处理, 可以直接 ...

  8. 小波神经网络的基本原理,小波神经网络数据分析

    1.什么是"小波神经网络"?能干什么用呀 小波神经网络(Wavelet Neural Network, WNN)是在小波分析研究获得突破的基础上提出的一种人工神经网络.它是基于小波 ...

  9. 神经网络控制系统的应用,神经网络控制基本原理

    神经网络控制的书籍目录 第1章神经网络和自动控制的基础知识1.1人工神经网络的发展史1.1.120世纪40年代--神经元模型的诞生1.1.220世纪50年代--从单神经元到单层网络,形成第一次热潮1. ...

最新文章

  1. 通俗易懂:图卷积神经网络入门详解
  2. R语言可视化面积图(area chart)移除轴标签与实际图形之间的空白区域实战:默认的面积图、移除轴标签与实际图形之间的空白区域
  3. Apache启动过程(PHP_MINIT_FUNCTION的调用)
  4. 5月23 注册审核
  5. JavaScript反向shell
  6. centos 源码安装 mysql
  7. java freemark 使用_freemarker单独使用介绍
  8. 机器人水下赌场争霸战!中国团队创造历史,在美国登顶世界第一
  9. 为什么家里pm25比外面高_你绝对不会相信在家用卷发棒烫发竟然比在外面烫发更伤发?...
  10. 读取ANSYS结果文件中的数据C语言,[转载][转载]如何在ANSYS中读入txt文件的数据
  11. TransE算法的整理
  12. 见证“开放式多路供水”的技术难度应大于人类上天!
  13. netperf工具的使用
  14. Openmv(一)OpenMV图像处理的基本方法
  15. 在此之前我不知道啥事JSON
  16. css3 3d头像,Three.js 3D头像
  17. TPS和事务响应时间的关系、计算公式
  18. 官方文档——AlwaysOn AG的先决条件、限制和建议
  19. 为啥说外包公司不能去?
  20. 组合m3u8视频为一个文件,m3u8转换为mp4

热门文章

  1. 问答系统的搭建与财报知识图谱关系比较密切 问题相似度方面
  2. 李航统计学习方法视频教程
  3. EJB3.0定时发送jms(发布/定阅)方式
  4. 探索可解释及稳定性,AI与博弈,自适应推理——“智源论坛:机器学习青年学者报告会”要点总结
  5. 了解大脑的“小情绪”,轻松成为“效率达人”
  6. Bruce Eckel教你如何爬出 Gradle 的“坑”?
  7. 直播实录QA | 王赟Maigo分享“知识连成一片”是怎样一种体验
  8. 图灵十月书讯 ——小长假过后的程序员学习指南
  9. JupyterLab 3.0,极其强大的下一代Notebook!
  10. 2021全球数字经济大会“北京数字经济体验周”清华数为大数据开发工具DWF体验培训工作圆满结束...