神经元:

受生物学的启发,人工神经网络是生物神经网络的一种模拟和近似。它从结构、实现机理和功能上模拟生物神经网络,传统的生物神经元模型由树突、细胞核、细胞体、突触和神经末梢组成,如图所示。

如图下图所示,神经元的输入xi对应生物神经元的树突。输入xi向细胞体传播脉冲,相当于输入权值参数wi,通过细胞核对输入的数据和权值参数进行加权求和。传播细胞体的脉冲相当于人工神经元的激活函数,最终输出结果y作为下一一个神经元的输入。


上述是人工神经网络的最基本的处理单元---------神经元,由连接、求和节点和激活函数组成:
连接:神经元中数据的流动表达方式。
求和节点:对输入信号和权值的乘积进行求和。
激活函数:一个非线性函数,对输出信号进行控制(激活函数原理与代码在下一节讲解)

为了方便理解,我们对神经元抽象,得到神经元的基本模型:

x1,x2,x3…,xn为输入信号的各个分量
w1,w2,w3…,wn为神经元的各个突触的权值
b为神经元的偏置参数
f为激活函数,一般为非线性函数,如Sigmoid、Tanh 函数等;
y为该神经元的输出。

所以神经元的基本模型为:

上述神经元的基本模型比较复杂,我们使用数学表达式对神经元的基本模型继续进行抽象,得到神经元的数学基本表达式为:

假设W=[w1,w2,…,wn]为权值向量,X=[x1,x2,…x n]为输入向量。一个神经元的基本功能是对输入向量X与权值向量W内积求和后并加上偏置参数b,经过非线性的激活函数f,得到y作为输出结果。因此神经元又可以使用矩阵形式表达为:

多层神经网络

人工神经网络由许多的神经元组合而成,神经元组成的信息处理网络具有并行分布结构,因此有了更复杂的人工神经网络。
    一个人工神经网络由多个神经元结构组成,每一层的神经元都拥有输入和输出,每一层都是由多个神经元组成。第l-1层网络神经元的输出是第I层神经元的输入,输入的数据通过神经元上的激活函数来控制输出数值的大小。该输出数值是一个非线性值,通过激活函数求得数值,根据极限值来判断是否需要激活该神经元。
    一般多层人工神经网络ANN由输入层、输出层和隐藏层组成。
                1. 输入层(Input Layer):接收输入信号作为输入层的输入。
                2. 输出层(Output Layer):信号在神经网络中经过神经元的传输、内积、激活后,形成输出信号进行输出。
                3. 隐藏层(Hidden Layer):隐藏层也被称为隐层,它介于输入层和输出层之间,是由大量神经元并列组成的网络层,通常一个人工神经网络可以有多个隐层。

如图所示,一个三层的人工神经网络模型,从左到右开始,第1层为输入层,输入向量为[x1,x2,3];第2层为带有4个节点的隐层:第3层为输出层,输出向量为[y1,y2]。

在学习人工神经网络之前,我们需要了解如下内容。

1.人工神经网络输入层与输出层的节点数往往是固定的,根据数据本身而设定,隐层数和隐层节点则可以自由指定。
    2.人工神经网络模型图中的箭头代表预测过程时数据的流向,与学习训练阶段的数据流动方向不同。
    3.人工神经网络的关键不是节点而是连接,每层神经元与下一层的多个神经元相连接,每条连接线都有独自的权重参数。此外,连接线上的权重参数是通过训练得到的。
    4.人工神经网络中不同层的节点间使用全连接的方式,也就是1-1层的所有节点对于l层的所有节点都会有相互连接。例如当前层有3个节点,下一层4个节点,那么连接线有3X4=12条,共12个权重值和4个偏置,偏置的数量依赖于下一层节点的数量而定。

训练与预测

在设计人工神经网络模型结构前,我们需要对输入和输出的数据进行量化。假设输入的数据有k个,输出为n个分类,那么输入层的神经元节点数应设置为k,输出层的神经元节点数应设置为n。隐层神经元节点的数目不确定,但其数目越多,神经网络的非线性越显著,从而增强人工神经网络的健壮性。习惯上,一般第l层神经元的节点数为1-1层节点数的1~ 1.5倍。
人工神经网络的训练实际上是通过算法不断修改权值向量W和偏置b,使其尽可能与真实的模型逼近,以使得整个神经网络的预测效果最佳。
具体做法:首先给所有权值向量W和偏置b赋予随机值,使用这些随机生成的权重参数值来预测训练数据中的样本。样本的预测值为少,真实值为y。现在定义一个损失函数,目标是使预测值^y尽可能接近于真实值y,损失函数就是使神经网络的损失值和尽可能小。其基本公式为:

现在问题转变为:如何改变神经网络中的参数W和b,让损失函数的值最小?

如何求损失函数的最小值,最终演化成为一个优化问题。对神经网络的优化就是对参数的优化,减少损失,直至损失收敛。为了解决该优化问题,可以使用梯度下降算法来优化网络中的参数W和b。于是又引入了反向传播算法,最终可以使用反向传播算法求得网络模型所有参数的梯度,通过梯度下降算法对网络的参数进行更新。

向前传播算法:

向前传播(Feed Forward)算法在神经网络的训练和预测阶段会被反复使用,是神经网络中最常见的算法。其计算方式简单,只需要根据神经网络模型的数据流动方向对输入的数据进行计算,最终得到输出的结果。

如图所示为一个简单的人工神经网络模型,其输入层有2个节点,隐层、输出层均有3个节点。下面我们通过矩阵的方式对向前传播算法进行解析。

假设z表示为第1层网络第i个神经元的输入,w为第l层网络第i个神经元到第1+1层网络中第j个神经元的连接,那么根据神经元基本公式有:
                                                    
对图的神经网络的参数进行向量化,表示为:
                                                    
那么有:
                                                    
因此,单层神经网络的向前传播算法可以使用矩阵表达为:

反向传播算法:

为什么会有反向传播(Back Propagation, BP) 算法呢?如图所示,假设神经网络中的一个参数吃,发生了小幅度的改变,那么这个改变将会影响后续激活值的输出,下一层根据这个激活值继续往后传递该改变。如此- - 层一层地往后传递, 直到损失函数接收到该改变为止。最终这个小幅度的改变影响了整个网络,犹如在水面上划了一下,水波向外扩散影响了整个湖面的平静。

          为了知道这个改变的幅度,我们选择从网络的最后一层(输出层)开始,利用损失函数向前求得每一层每一个神经元的误差,从而获得这个参数的梯度( 原始的小幅度的改变值)。
          虽然在神经网络中,求网络参数的梯度不一定使用反向传播算法,并且反向传播算法有收敛慢、容易陷入局部最小解等缺点,但是其易用性、准确率却是其他求解梯度算法无法比拟的。因此在现代神经网络中,反向传播算法被广泛使用。

为了便于理解反向传播算法,这里举一个不太恰当的例子。现在有一个口述绘画游戏,第1个人看一幅画(输入数据),描述给第2个人(隐层) …依次类推,到最后一个人(输出)的时候,画出来的画肯定与原画不太像(误差较大)。下面开始反向传播算法,我们把画拿给最后-一个人看(计算损失函数),然后最后一个人告诉前面一个人下次描述时需要注意哪些地方画错了(通过损失计算梯度) …同样依次类推,直到第1个人。当然该例子可能会与真正的反向传播算法有一定的差别。

假设神经网络模型的参数为
,那么反向传播算法的精髓是:通过链式求导法则,求出网络模型中的每个参数的导数

1.理解计算图

计算图可以看作一种用来描述计算函数的语言,图中的节点代表函数的操作,边代表函数的输入。如图所示,计算图的函数为:
f(x,y,z)=f(x+y)*z

反向传播算法希望通过链式法则得到f的各个参数的梯度:

BP神经网络推导:




计算BP1输出层误差

计算BP2第l层误差


BP3损失函数关于偏置b的偏导


BP4损失函数关于权值w的偏导

反向传播算法流程

利用反向传播算法的4个基本方程,可以很清晰地对反向传播算法流程进行总结。

●输入(Input); 输入层输入向量x。向前传播(Feed Forward):计算z,输出层误差(Output Error):根据公式BP1计算误差向量
●反向传播误差(Backpropagate Error): 根据公式BP2逐层反向计算每一层的误差
●输出(Output):根据公式BP3和BP4输出损失函数的偏置。
在训练阶段,反向传播算法的工作方式就是把数据传入神经网络,然后经过一次向前传播后,得到每- -层 的输出数据。接着开始从输出层往前计算每一层的误 差,直到第一层(输入层)为止。最后根据每一层的误差数据计算每 - -个损失函数关于偏置和权重参数的偏导,而这个偏导就是网络中参数的变化率。有了这个变化率之后,我们就可以利用梯度下降算法更新一次网络中的参数。如此循环迭代,利用反向传播算法来求得网络参数的变化率,并用于更新网络的参数,最终使得损失函数收敛到局部最小值,训练阶段结束。

深度学习-人工神经网络网络相关推荐

  1. 深度学习——人工神经网络再掀研究热潮

    人工神经网络起源于上世纪40年代,到今天已经70年历史了.就像人的一生,经历了起起落落,有过辉煌,有过黯淡,有过嘈杂,有过冷清.总体说来,过去的20年中人工神经网络的研究不温不火,直到最近三五年,随着 ...

  2. 深度学习-人工神经网络概述

    人工神经网络 简述 很多术语听起来很唬人,"人工神经网络"就属于其中之一.在很多人看来,我们对人类的神经系统还没有研究透彻,这就来了一个"人工的"神经网络,人脑 ...

  3. ann人工神经网络_深度学习-人工神经网络(ANN)

    ann人工神经网络 Building your first neural network in less than 30 lines of code. 用不到30行代码构建您的第一个神经网络. 1.W ...

  4. [深度学习]人工神经网络中激励函数作用详解

    前言 业余时间,看了关于深度学习方面的知识,对人工神经网络中激励函数存在疑惑,查阅资料,总结给大家,一起学习. 激励函数作用 不使用激励函数的话,神经网络的每层都只是做线性变换,多层输入叠加后也还是线 ...

  5. 初学者 深度学习 人工神经网络 可视化网站

    在深度学习的过程中,可能会感觉神经网络是一个灰箱,且没有完备的解析理论表达方式,机器的自学习过程过于抽象难以理解.此时通过一些可视化网址可帮助我们直观感受深度神经网络的魅力. 手写数字卷积神经网络可视 ...

  6. 深度学习——人工神经网络中为什么ReLu要好过于tanh和sigmoid function?

    参考吴恩达的深度学习课程. 先看看各个激活函数图: 第一个问题:为什么引入非线性激励函数? 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很 ...

  7. 从神经元到神经网络、从神经网络到深度学习:神经网络、深度学习、神经元、神经元模型、感知机、感知机困境、深度网络

    从神经元到神经网络.从神经网络到深度学习:神经网络.深度学习.神经元.神经元模型.感知机.感知机困境.深度网络 目录 从神经元到神经网络.从神经网络到深度学习 神经网络:

  8. 深度学习(1)基础1 -- 深度学习与神经网络基础

    目录 一.深度学习与神经网络 1.深度学习定义 2.神经网络 3.深度学习过程 4.深度学习功能 二.深度学习应用 三.分类数据集推荐 一.深度学习与神经网络 1.深度学习定义 深度学习(deep l ...

  9. 【深度学习】孪生网络(Siamese Network)的模式和训练过程

    [深度学习]孪生网络(Siamese Network)的模式和训练过程 文章目录 1 概述 2 Siamese network 孪生神经网络 3 孪生神经网络和伪孪生神经网络分别适用于什么场景呢? 4 ...

最新文章

  1. POJ1185:火炮(减少国家)
  2. 百度计算生物研究登上Nature子刊!将3D结构引入分子表征,结果超越斯坦福MIT,已落地制药领域...
  3. Linux密码文件passwd和shadow分析
  4. 【Qt】modbus之串口模式读操作
  5. 210124阶段三信号屏蔽,管道通信
  6. IDEA 的 debug 怎么实现?出于这个好奇心,我越挖越深!
  7. 淮阴工学院计算机答辩,淮阴工学院关于做好2014级研究生学位论文答辩工作的通知...
  8. SqlServer 的IDENTITY_INSERT设置为OFF问题
  9. 使用多线程与不使用多线程访问同一个网址实例对比
  10. Bailian4150 上机【DP】
  11. Mac电脑没声音的解决方法
  12. 《少有人走过的路–心智成熟的旅程》读书笔记
  13. eWebEditor编辑器的使用
  14. 【安卓】3.修改列表增加下划线样式(保姆级图文+附示例)
  15. 计算机老师教育感言,教育信息技术培训心得感言
  16. Rockchip PX30/RK3326 Android开机时间优化
  17. 技术支持----用户和产研沟通的桥梁
  18. [转载] 七龙珠第一部——第036话 恐怖的玛斯鲁塔
  19. 大数据原生集群本地测试环境搭建三
  20. Html help安装步骤,Doxgen+Graphiz+htmlhelp配置

热门文章

  1. vue IconPark 图标 的使用
  2. 销售不愿意用企业微信怎么办?
  3. PPT最强抠图技巧(收藏必备)
  4. input文本框输入溢出的时候,鼠标悬停显示全部信息
  5. 使用Perl编写协议分析脚本
  6. 算符优先算法java实现,算符优先算法
  7. adobe flash player 过期问题
  8. 小米note2不上Android9吗,我的第二部小米手机,小米9简单到不能再简单的简单体会...
  9. 在EXCEL中如何设置打印区域,只打印部分区域
  10. Uncaught SyntaxError: Unexpected identifier问题解决