人工神经网络(ANN)
参考资料:http://www.cnblogs.com/subconscious/p/5058741.html
从函数上来看,神经网络是回归方程的级联叠加,用来逼近目标函数的,本质是一种模拟特征与目标之间的真实关系函数的模型
一、结构
一个有向拓扑,每层有若干节点,节点间有边,边上有权值。
二、组成
- 输入层
- 隐藏层:多层;后层是前层各节点值的线性组合的函数,即Y=f(x0+w1x1+w2x2+...+wnxn),线性组合的系数就是边的权值,为免计算量复杂,规定最多只能对线性组合做一次非线性变换,如sgn函数(0个隐藏层,此时即感知机)、Sigmoid函数(1个隐藏层)、ReLU函数(更多个隐藏层)等;
- 输出层:对于一次输入,输出层各节点都有一个值,把模式归为输出点值大的那一类
三、设计
设计神经网络通常要做的就是设计网络有几层、每层有几个节点、以及节点间边的权值,权值通过神经网络训练调整得到。主要的任务是训练权值,因此实现一个神经网络最需要的是线性代数库。
BP算法
在训练权值上,有BP反向传播算法
主要思想
反向逐层传播输出层的误差,以间接计算隐藏层的误差并基于此修正权值。
核心步骤
正向传播:信息从输入层经隐藏层逐层计算各单元的输出值;反向传播:由输出层误差逐层向前计算隐藏层各单元的误差,并基于此修正前层权值。
不足
- 用梯度法求非线性函数极值,因而有可能陷入局部极小点,不能保证收敛到全局极小点。
- 权值初始值:如果权值初始值都为零或都相同,隐层各单元不能出现差异,运算不能正常进行。因此,通常用较小的随机数(例如在-0.3~0.3之间的随机数)作为权值初始值。初始值对收敛有影响,当计算不收敛时,可以改变初始值试算。
四、分类
注:图中的单层指一个计算层,所以整个网络有两层(此时即感知机);类似,两层网络指两个计算层,所以整个网络有三层。

五、其他
隐藏层的参数矩阵的作用就是使得数据的原始坐标空间从线性不可分,转换成了线性可分,后一层是前一层的线性组合的函数,即是对前一层的线性分类,因此就达到了总体效果——对原始数据进行非线性分类。
理论证明,三层神经网络(一个隐藏层)可以实现任意的逻辑运算,在激活函数为Sigmoid函数的情况下,可以逼近任何非线性多元函数。
优化问题只是训练中的一个部分。机器学习问题之所以称为学习问题,而不是优化问题,就是因为它不仅要求数据在训练集上求得一个较小的误差,在测试集上也要表现好。因为模型最终是要部署到没有见过训练数据的真实场景。提升模型在测试集上的预测效果的主题叫做泛化(generalization),相关方法被称作正则化(regularization)。神经网络中常用的泛化技术有权重衰减等。
尽管使用了BP算法,一次神经网络的训练仍然耗时太久,而且困扰训练优化的一个问题就是局部最优解问题,这使得神经网络的优化较为困难。同时,隐藏层的节点数需要调参,这使得使用不太方便,工程和研究人员对此多有抱怨。
在单层(一个计算层,即总共两层)神经网络时,我们使用的激活函数是sgn函数。到了两层神经网络时,我们使用的最多的是sigmoid函数。而到了多层神经网络时,通过一系列的研究发现,ReLU函数在训练多层神经网络时,更容易收敛,并且预测性能更好。因此,目前在深度学习中,最流行的非线性函数是ReLU函数。ReLU函数不是传统的非线性函数,而是分段线性函数。其表达式非常简单,就是y=max(x,0)。简而言之,在x大于0,输出就是输入,而在x小于0时,输出就保持为0。这种函数的设计启发来自于生物神经元对于激励的线性响应,以及当低于某个阈值后就不再响应的模拟。

神经网络的发展背后的外在原因可以被总结为:更强的计算性能,更多的数据,以及更好的训练方法,只有满足这些条件时,神经网络的函数拟合能力才能得已体现。
人工神经网络(ANN)的更多相关文章
- 机器学习笔记之人工神经网络(ANN)
人工神经网络(ANN)提供了一种普遍而且实际的方法从样例中学习值为实数.离散值或向量函数.人工神经网络由一系列简单的单元相互连接构成,其中每个单元有一定数量的实值输入,并产生单一的实值输出. 上面是一 ...
- 【机器学习】人工神经网络ANN
神经网络是从生物领域自然的鬼斧神工中学习智慧的一种应用.人工神经网络(ANN)的发展经历的了几次高潮低谷,如今,随着数据爆发.硬件计算能力暴增.深度学习算法的优化,我们迎来了又一次的ANN雄起时代,以 ...
- 人工神经网络--ANN
神经网络是一门重要的机器学习技术.它是目前最为火热的研究方向--深度学习的基础.学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术. 本文以一种简单的,循序的方 ...
- [数据挖掘课程笔记]人工神经网络(ANN)
人工神经网络(Artificial Neural Networks)顾名思义,是模仿人大脑神经元结构的模型.上图是一个有隐含层的人工神经网络模型.X = (x1,x2,..,xm)是ANN的输入,也就 ...
- [DL学习笔记]从人工神经网络到卷积神经网络_2_卷积神经网络
先一层一层的说卷积神经网络是啥: 1:卷积层,特征提取 我们输入这样一幅图片(28*28): 如果用传统神经网络,下一层的每个神经元将连接到输入图片的每一个像素上去,但是在卷积神经网络中,我们只把输入 ...
- C#中调用Matlab人工神经网络算法实现手写数字识别
手写数字识别实现 设计技术参数:通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方法,有较高的识别率 关键字:二值化 投影 矩阵 目标定位 Matlab 手写数字图像识别简介: 手写 ...
- 人工神经网络入门(4) —— AFORGE.NET简介
范例程序下载:http://files.cnblogs.com/gpcuster/ANN3.rar如果您有疑问,可以先参考 FAQ 如果您未找到满意的答案,可以在下面留言:) 0 目录人工神经网络入门 ...
- 人工神经网络 Artificial Neural Network
2017-12-18 23:42:33 一.什么是深度学习 深度学习(deep neural network)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高 ...
- 微软“小冰”识狗与人工神经网络(I)
2014年8月21日,微软"小冰"网络机器人推出了一项图像识别技能:"小冰识狗". "小冰"怎么会"识狗"呢? 依据微软 ...
- ML三(人工神经网络)
人工神经网络 Artificial Neural Nerworks 基本术语概念: 人工神经网络(Artificial Neural Networks,ANN) 感知器(Perceptron):以一个 ...
随机推荐
- HttpClient, 使用C#操作Web
我们知道, .Net类库里提供了HttpWebRequest等类,方便我们编程与Web服务器进行交互. 但是实际使用中我们经常会遇到以下需求,基础类里没有直接提供相应的功能(WebClient类包含这 ...
- 重新理解:ASP.NET 异步编程(转)
http://www.cnblogs.com/xishuai/p/asp-net-async-await-and-exception-handling.html 相关博文: 异步编程 In .NET( ...
- MVC中利用自定义的ModelBinder过滤关键字
上一篇主要讲解了如何利用ActionFilter过滤关键字,这篇主要讲解如何利用自己打造的ModelBinder来过滤关键字. 首先,我们还是利用上一篇中的实体类,但是我们需要加上DataType特性 ...
- JS 之高级函数
作用域安全的构造函数 当使用new调用构造函数时,构造函数内部this对象会指向新创建的对象实例.如果不使用new,直接调用的话,则this对象会映射到window对象上.所以需要判断下. eg: f ...
- android json解析及简单例子
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
- LeetCode:Word Break(DP)
题目地址:http://oj.leetcode.com/problems/word-break/ 简单的动态规划问题,采用自顶向下的备忘录方法,代码如下: class Solution { publi ...
- 郝文菲get技能的经验--20155308
郝文菲get技能的经验--20155308 比其他人更好的技能 谈到自己的特长,作为新一代成长的自己来说,有一箩筐的话可以说.但是若是谈到自己比大多数人更好的技能,我却觉得回答这个问题有很大的难度.当 ...
- Openwrt flash 空间不足的临时解决方法
最近有网友在安装软件的时候发现flash空间不够用了: 一个临时的解决方案是在RAM里面使用这个程序.因为 1.路由器改机后的RAM有64MB,flash一般有16MB,RAM空间比较大./tmp是挂 ...
- Java集合类: Set、List、Map、Queue使用场景梳理
本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E ...
- 模态窗口插件之Jbox
$.jBox.tip("报损数量不能大于库存数!", 'error'); $.jBox.tip("请选择要报损的产品", "warn"); ...