本文将主要参考Tom M.Mitchell的《机器学习》一书说明一下人工神经网络,组织结构是这样的:先讨论人工神经网络最基本的组成单元:感知器和sigmoid单元,然后介绍由这些基本组成的多层次网络的反向算法。

前言:

人工神经网络(Artificial  Neural  Networks)在一定程度上收到了生物学的启发,利用大脑神经元的特征构建出人工神经元来进行数学建模或者计算。神经网络是一种运算模型,由大量的结点和结点之间的连接组成,它除了输入结点以外,每个结点都代表着一种特殊的输出函数,称为激励函数。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),这相当于人工神经网络的记忆。

第一节. 感知器,线性单元和sigmoid单元

   我们的大脑是有最基本的神经元组成的,这些神经元就是对不同的刺激产生不同的脉冲,我们人类的大脑大约由10^11个神经元互相连接组成,正是由这些种类繁多的神经元,才使得人类有如此神奇的大脑。而我们的人工神经网络也是由一种基本的单元组成,不同的组成单元会使得人工神经网络表现能力各由不同,这里我们将介绍三种基本组成单元:感知器,线性单元和sigmoid单元,它们的结构都如下,唯一的不同在于这个输出函数(也称激励函数)是个什么类型的,下面我将简单的介绍下各个基本组成单元。

1.1感知器

感知器是以实数值向量最为输入,计算这些输入的线性组合,若结果大于0,就为1,否则输出-1.函数形式如下

这类感知器的表现能力是很有限的,它可以表示所有的原子布尔函数:与,或,与非和或非,但是却不能表示异或函数。比如说对于输入x1,x2现在感知器要输出他们与关系,它就可以表示出来,感知器有三个变量w0,w1,w2, f(x) = w0+w1*x1+w2*x2, 我可以让w0 = -0.8, w1 = w2 = 0.5,那么大姐可以分别对x1,x2取0和1看一下这个结果,比如x1 = 0,x2 = 1,那么F(x) = -0.8 + 0.5 *1 + 0.5 * 0 = -0.3, f(x) < 0 ,所以取0,结果正确,大家可以试着把其他三种情况带进去试一下。而异或关系它就没办法表示了,看下图:

你根本不可能划一根线把上面的0和1分开。

我们的目标就是通过样例训练基本单元,更新它们对应的权值,算法很简单:

for 所有的样例输入X

更新每一个权重wi <---- wi + *wi

其中*wi  = a( t - 0 ) xi, t为样例的目标输出,而0是感知器的输出,a是一个小的常数叫学习速率。

这么简单的一个式子怎么就可以训练出正确的权值呢?

为了有一个直观的理解,我举一个例子,若感知器正确分类,则 t - o为零,权值wi不

会调整;若目标输出为+1,而感知器输出为-1,也就是感知器低估了目标输出,此时

t - 0为 2,那么wi会增加 ; 反过来,若目标输出t为-1,感知器输出为+1,感知器高估

了目标的输出,此时t - o = -2,相应的wi就会减少。这样,通过有限次的使用感知器训

练法则,我们的权值向量就会收敛到一个能正确分类的权向量了,当然这个学习速度a

也要够小。

1.2 线性单元

线性单元和上面的感知器基本类似,也是f(x) =WX(注意大写为向量表示),而它没有了这个阀值得判定,即f(n) = 1, ifWX > 0,这样它就比感知器要强大很多,当出现线性不可分的时候,感知器是毫无办法,没办法收敛,而线性单元会找到目标的最佳近似。它比感知器强大的地方在与它对问题空间的表示是连续的。

由于搜索空间为连续的,我们可以利用梯度下降来训练我们的权值W,其实现在的问题是我们能否找到一组权值W使得我们对样例的分类误差最小,那么我们应该怎样度量这个误差呢?

这里有一个很常用的度量方式E(W) = 1/2∑(t - d)^2 ,即所有样例的目标输出与线性单元输出之差平方的和最小。这是关于W的二次函数,大致图像可以表示成这样:

我们现在就是要找这个最小的那个点,在高中我们学过求抛物线的最小值,我们会进行求导,而这个梯度其实就是描述的是向量空间上的变化率。训练线性单元的梯度下降算法如下:

1.3sigmoid单元

线性单元的特点使的多个线性单元的组合产生的是一个线性函数,而如果我们想要表示非线性函数的网络时(现实生活中往往是非线性的),就需要我们的非线性单元sigmoid单元,它和感知器非常的类似,图像如下:

其中x就是线性单元的输出。sigmoid函数有一个很好的性质就是它的导数很容易用它的输出表示:f'(x)=f(x)*[1-f(x)],这个性质将再我们下面的反向传播算法中用到。

第二节 反向传播算法

对于有一系列确定的单元组成的多层网络,反向传播算法可用来学习这个网络的权值,它也是采用梯度下降的方法去最小化误差的平方。由于样例只对网络的输出提供了目标值,所以缺乏直接的目标值来计算隐藏单元的误差值,因此我们可通过如下方式计算:对受隐藏单元h影响的每个单元的误差进行加权求和,这样就刻化出了隐藏单元和输出值的关系。

这是针对只含一个隐秘层的算法:

其中上图的O代表的是sigmoid函数,t代表样例的目标输出。

反向传播算法实现了一种对可能的网络权值空间的梯度下降搜索,而对于多层网络来说,误差的曲面可能包含多个局部极小值(而不是像我们上图那样只有局部最小值就是全局最小值),反向传播算法只能保证收敛到局部最小值,但在现实应用中,人们发现局部最小值得问题并没有那么严重,你可以这样理解:网络的权越多(即维度越高),也就越为梯度下降提供更多的逃逸路线,让梯度下降离开相对该权值的局部最小值。

人工神经网络(ANN)相关推荐

  1. 福利 | 从生物学到神经元:人工神经网络 ( ANN ) 简介

    文末有数据派THU福利哦 [ 导读 ] 我们从鸟类那里得到启发,学会了飞翔,从牛蒡那里得到启发,发明了魔术贴,还有很多其他的发明都是被自然所启发.这么说来看看大脑的组成,并期望因此而得到启发来构建智能 ...

  2. DL之ANN/DNN: 人工神经网络ANN/DNN深度神经网络算法的简介、应用、经典案例之详细攻略

    DL之ANN/DNN: 人工神经网络ANN/DNN深度神经网络算法的简介.应用.经典案例之详细攻略 相关文章 DL:深度学习(神经网络)的简介.基础知识(神经元/感知机.训练策略.预测原理).算法分类 ...

  3. ann matlab,人工神经网络ann及其matlab仿真.ppt

    人工神经网络ann及其matlab仿真 人工神经网络 的研究方法及应用刘 长 安2004. 12. 31 引 言 利用机器模仿人类的智能是长期以来人们认识自然.改造自然和认识自身的理想. 研究ANN目 ...

  4. 人工神经网络ANN建模基础须知

    链接文章:机器学习基础须知.神经网络建模实践,其他博文 人工神经网络ANN 0.感知机:包括输入节点.输出节点两部分,输入节点和输出节点用一个表示权重的值连接.感知机的输出值是计算输入节点的加权和,减 ...

  5. 人工神经网络 ANN

    卷积神经网络CNN图解 本文参考人工神经网络ANN 神经网络是一门重要的机器学习技术.它是深度学习的基础. 神经网络是一种模拟人脑的神经网络以期望能够实现人工智能的机器学习技术.人脑中的神经网络是一个 ...

  6. 深度学习(一)多层感知器MLP/人工神经网络ANN

    目录 一.定义和公式 1. 多层感知器 Multi Layer Perceptron MLP 2. MLP实现非线性分类 3. Keras介绍 二. 代码实战 1. 建立MLP模型实现二分类 1.1  ...

  7. 实现人工神经网络ANN对医疗数据分类

    2.3 使用ANN对医疗数据分类 IBM在2015年5月宣布推出Watson Health服务,收集健康数据交给Watson超级计算机进行分析.目前IBM Waston Health最主要的应用便是在 ...

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

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

  9. R语言应用实战系列(六)-基于R的人工神经网络ANN算法和KNN算法(k-Nearest Neighbour)

    一.神经网络 人工神经网络算法(ANN),是一种模仿生物神经网络的结构和功能的数学模型和计算模型.神经网络由大量的人工神经元联结进行计算.大多数情况下,人工神经网络能在外在信息的基础上改变内部结构,是 ...

  10. 机器学习:支持向量机SVM和人工神经网络ANN的比较

    在统计学习理论中发展起来的支持向量机(Support Vector Machines, SVM)方法是一种新的通用学习方法,表现出理论和实践上的优势.SVM在非线性分类.函数逼近.模式识别等应用中有非 ...

最新文章

  1. vue-concise-slider vue滑动组件
  2. linux——yum的搭建说明
  3. pyinstaller使用方法及案例
  4. SQLServer常用系统视图
  5. python开源考试_可能是 Python 中最火的第三方开源测试框架 pytest
  6. Linus Torvalds谈ECC内存的重要性 痛斥英特尔正在扼杀它
  7. latex 分页_latex 图片跨页显示问题???
  8. 配置V530交换机步骤
  9. 11月7日简单标签与Listener培训日记
  10. 牛客网 F-The Biggest Water Problem
  11. 三菱plc编程软件怎么用c语言,各种三菱PLC编程软件的用途介绍
  12. 任务含有时间窗与资源含有上下班时间的时间冲突约束构建思路
  13. 逢看必会的三子棋小游戏:原来可以这么简单
  14. UvaLA 4670 Dominating Patterns
  15. 19、Jetson Xavier NX使用yolov5对比GPU模型下的pt、onnx、engine 、 DeepStream 加速性能
  16. FPGA - Zynq - 加载 - BootRom
  17. Android 发表说说一般用到的界面布局
  18. 网站空间和独享主机的区别是什么
  19. 原神机器人Yunzai Bot搭建
  20. 全球与中国老年人代步车市场深度研究分析报告

热门文章

  1. Android使用第三方字体
  2. qt windows ble低功耗蓝牙
  3. 如何培养青少年的阅读习惯?父母应该从三个方面培养青少年的好兴趣
  4. Tekton系列之实践篇-我的第一条Pipeline
  5. Tushare简单的数据使用以及mysql存储教程
  6. 深圳市文化创意产业百强(2011-2012)公示
  7. 计算机工程与科学是sci,系统科学与系统工程有哪些sci期刊
  8. c++按行读取txt
  9. 设计模式(10)——策略模式
  10. Matlab实现图像阈值分割