神经网络学习科普延伸阅读

2016 年一月底,人工智能的研究领域,发生了两件大事。

先是一月二十四号,MIT 的教授,人工智能研究的先驱者,Marvin Minsky 去世,享年89 岁。

三天之后,谷歌在自然杂志上正式公开发表论文,宣布其以深度学习技术为基础的电脑程序 AlphaGo, 在 2015年 十月,连续五局击败欧洲冠军、职业二段樊辉。

这是第一次机器击败职业围棋选手。距离 97年IBM 电脑击败国际象棋世界冠军,一晃近二十年了。

极具讽刺意义的是,Minsky 教授,一直不看好深度学习的概念。他曾在 1969年 出版了 Perceptron (感知器) 一书,指出了神经网络技术 (就是深度学习的前身) 的局限性。这本书直接导致了神经网络研究的将近二十年的长期低潮。

神经网络研究的历史,是怎样的?

深度学习有多深?学了究竟有几分?

人工智能研究的方向之一,是以所谓 “专家系统” 为代表的,用大量 “如果-就” (If - Then) 规则定义的,自上而下的思路。

人工神经网络 ( Artifical Neural Network),标志着另外一种自下而上的思路。

神经网络没有一个严格的正式定义。它的基本特点,是试图模仿大脑的神经元之间传递,处理信息的模式。

一个计算模型,要划分为神经网络,通常需要大量彼此连接的节点 (也称 ‘神经元’),并且具备两个特性:

每个神经元,通过某种特定的输出函数 (也叫激励函数 activation function),计算处理来自其它相邻神经元的加权输入值

神经元之间的信息传递的强度,用所谓加权值来定义,算法会不断自我学习,调整这个加权值

在此基础上,神经网络的计算模型,依靠大量的数据来训练,还需要:

成本函数 (cost function):用来定量评估根据特定输入值, 计算出来的输出结果,离正确值有多远,结果有多靠谱

学习的算法 ( learning algorithm ):这是根据成本函数的结果, 自学, 纠错, 最快地找到神经元之间最优化的加权值

用小明、小红和隔壁老王们都可以听懂的语言来解释,神经网络算法的核心就是:计算、连接、评估、纠错、疯狂培训。

随着神经网络研究的不断变迁,其计算特点和传统的生物神经元的连接模型渐渐脱钩。

但是它保留的精髓是:非线性、分布式、并行计算、自适应、自组织。

神经网络作为一个计算模型的理论,1943年 最初由科学家 Warren McCulloch 和 Walter Pitts 提出。

康内尔大学教授 Frank Rosenblatt 1957年 提出的“感知器” (Perceptron),是第一个用算法来精确定义神经网络,第一个具有自组织自学习能力的数学模型,是日后许多新的神经网络模型的始祖。

Rosenblatt 乐观地预测,感知器最终可以 “学习、做决定、翻译语言”。感知器的技术,六十年代一度走红,美国海军曾出资支持这个技术的研究,期望它 “以后可以自己走、说话、看、读、自我复制、甚至拥有自我意识”。

Rosenblatt 和 Minsky 实际上是间隔一级的高中校友。但是六十年代,两个人在感知器的问题上展开了长时间的激辩。Rosenblatt 认为感应器将无所不能,Minsky 则认为它应用有限。

1969 年,Marvin Minsky 和 Seymour Papert 出版了新书:“感知器:计算几何简介”。书中论证了感知器模型的两个关键问题:

第一,单层的神经网络无法解决不可线性分割的问题,典型例子如异或门,XOR Circuit ( 通俗地说,异或门就是:两个输入如果是异性恋,输出为一。两个输入如果是同性恋,输出为零 )

第二,更致命的问题是,当时的电脑完全没有能力完成神经网络模型所需要的超大的计算量。

此后的十几年,以神经网络为基础的人工智能研究进入低潮,相关项目长期无法得到政府经费支持,这段时间被称为业界的核冬天。

Rosenblatt 自己则没有见证日后神经网络研究的复兴。1971年 他 43 岁生日时,不幸在海上开船时因为事故而丧生。

1970年,当神经网络研究的第一个寒冬降临时。在英国的爱丁堡大学,一位二十三岁的年轻人,Geoffrey Hinton,刚刚获得心理学的学士学位。

Hinton 六十年代还是中学生时,就对脑科学着迷。当时一个同学给他介绍关于大脑记忆的理论是:

大脑对于事物和概念的记忆,不是存储在某个单一的地点,而是像全息照片一样,分布式地,存在于一个巨大的神经元的网络里。

分布式表征 (Distributed Representation),是神经网络研究的一个核心思想。

它的意思是,当你表达一个概念的时候,不是用单个神经元一对一地存储定义;概念和神经元是多对多的关系:一个概念可以用多个神经元共同定义表达,同时一个神经元也可以参与多个不同概念的表达。

举个最简单的例子。一辆 “大白卡车”,如果分布式地表达,一个神经元代表大小,一个神经元代表颜色,第三个神经元代表车的类别。三个神经元同时激活时,就可以准确描述我们要表达的物体。

分布式表征和传统的局部表征 (localized representation) 相比,存储效率高很多。线性增加的神经元数目,可以表达指数级增加的大量不同概念。

分布式表征的另一个优点是,即使局部出现硬件故障,信息的表达不会受到根本性的破坏。

这个理念让 Hinton 顿悟,使他四十多年来,一直在神经网络研究的领域里坚持下来没有退缩。

本科毕业后,Hinton 选择继续在爱丁堡大学读研,把人工智能作为自己的博士研究方向。

周围的一些朋友对此颇为不解。“你疯了吗? 为什么浪费时间在这些东西上? 这 (神经网络) 早就被证明是扯淡的东西了。”

Hinton 1978 年在爱丁堡获得博士学位后,来到美国继续他的研究工作。

神经网络当年被 Minsky 诟病的问题之一是巨大的计算量。

简单说,传统的感知器用所谓 “梯度下降”的算法纠错时,耗费的计算量和神经元数目的平方成正比。当神经元数目增多,庞大的计算量是当时的硬件无法胜任的。

1986年 七月,Hinton 和 David Rumelhart 合作在自然杂志上发表论文, “Learning Representations by Back-propagating errors”,第一次系统简洁地阐述反向传播算法在神经网络模型上的应用。

反向传播算法,把纠错的运算量下降到只和神经元数目本身成正比。

反向传播算法,通过在神经网络里增加一个所谓隐层 (hidden layer),同时也解决了感知器无法解决异或门 (XOR gate) 的难题。

使用了反向传播算法的神经网络,在做诸如形状识别之类的简单工作时,效率比感知器大大提高。

八十年代末计算机的运行速度,也比二十年前高了几个数量级。

神经网络的研究开始复苏。

Yann Lecun (我给他取个中文名叫 “严乐春”吧) 1960年 出生于巴黎。1987年 在法国获得博士学位后,他曾追随 Hinton 教授到多伦多大学做了一年博士后的工作,随后搬到新泽西州的贝尔实验室继续研究工作。

在贝尔实验室,严乐春 1989年 发表了论文, “反向传播算法在手写邮政编码上的应用”。他用美国邮政系统提供的近万个手写数字的样本来培训神经网络系统,培训好的系统在独立的测试样本中, 错误率只有 5%。

严乐春进一步运用一种叫做“卷积神经网络” (Convoluted Neural Networks) 的技术,开发出商业软件用于读取银行支票上的手写数字,,这个支票识别系统在九十年代末占据了美国接近 20%的市场。

此时就在贝尔实验室,严乐春临近办公室的一个同事的工作,又把神经网络的研究带入第二个寒冬。

Vladmir Vapnik,1936年 出生于前苏联,90年 移民到美国,在贝尔实验室做研究。

早在 1963年,Vapnik 就提出了 支持向量机 (Support Vector Machine) 的算法。支持向量机,是一种精巧的分类算法。

除了基本的线性分类外,在数据样本线性不可分的时候,SVM 使用所谓 “核机制” (kernel trick) 的非线性映射算法,将线性不可分的样本转化到高维特征空间 (high-dimensional feature space),使其线性可分。

SVM,作为一种分类算法,九十年代初开始,在图像和语音识别上找到了广泛的用途。

在贝尔实验室的走廊上,严乐春和 Vapnik 常常就 (深度) 神经网络和 SVM 两种技术的优缺点,展开热烈的讨论。

Vapnik 的观点是:SVM,非常精巧地在 “容量调节” (Capacity Control) 上 选择一个合适的平衡点,而这是神经网络不擅长的。

什么是 “容量调节”? 举个简单的例子:如果算法容量太大,就像一个记忆力极为精准的植物学家,当她看到一颗新的树的时候,由于这棵树的叶子和她以前看到的树的叶子数目不一样,所以她判断这不是树;如果算法容量太小,就像一个懒惰的植物学家,只要看到绿色的东西都把它叫做树。

严乐春的观点是:用有限的计算能力,解决高度复杂的问题,比“容量调节”更重要。支持向量机,虽然算法精巧,但本质就是一个双层神经网络系统。它的最大的局限性,在于其“核机制”的选择。当图像识别技术需要忽略一些噪音信号时,卷积神经网络的技术,计算效率就比 SVM 高的多。

在手写邮政编码的识别问题上,SVM 的技术不断进步,1998年 就把错误率降到低于 0.8%,2002年 最低达到了 0.56%,这远远超越同期传统神经网络算法的表现。

神经网络的计算,在实践中还有另外两个主要问题:

第一,算法经常停止于局部最优解,而不是全球最优解。这好比“只见树木,不见森林”。

第二,算法的培训,时间过长时,会出现过度拟合 (overfit),把噪音当做有效信号。

时间: 2024-11-09 02:04:37

神经网络学习科普延伸阅读的相关文章

我的电子书《自己动手写神经网络》在百度阅读上线了

目前使用Java开发的程序猿是人数最多的猿群,但大部分人还局限在普通的程序开发中蹉跎岁月.实际上Java可以做的更多更强大! 我采用Java打造的[自己动手写神经网络]不是实验室作品,是真正的直接地气的应用,让我们的程序智能起来,让我们的程序具备感知或认知功能!请不要与市场上的神经网络教材划等号. 自己动手写神经网络 ≠神经网络类教材 自己动手写神经网络 ≠实验室作品 自己动手写神经网络 ==真真正正为我所用. <自己动手写神经网络>是一本电子书,在百度阅读上线,http://t.cn/RPj

Ajax学习教程在线阅读

  1.什么是AJAX ?(1) 2.什么是AJAX ?(2) 3.什么是AJAX ?(3) 4.什么是AJAX ?(4) 5.Ajax基础教程(1)-Ajax简介 1.1 Web应用简史 6.Ajax基础教程(1)-Ajax简介 1.2 浏览器历史 7.Ajax基础教程(1)-Ajax简介 1.3 Web应用的发展历程 8.Ajax基础教程(1)-Ajax简介 1.3 Web应用的发展历程(2) 9.Ajax基础教程(1)-Ajax简介 1.3 Web应用的发展历程(3) 10.Ajax基础教

CNN卷积神经网络学习笔记2:网络结构

在上篇笔记<CNN卷积神经网络学习笔记1:背景介绍>中已经介绍过CNN的结构,这篇笔记中,通过一个简单的CNN的例子,梳理一下CNN的网络结构的细节. 以下是一个6层的CNN网络,这个简单的CNN网络是DeepLearning Toolbox里面CNN的一个例子,后面要通过DeepLearning Toolbox中CNN的代码来进一步理解CNN的整个过程.我们输入的是1张大小为28*28的图片. 需要注意的有: 1,这里输入的是一张图片,如果我们输入了50张图片,那么下图中的每一个方框(代表一

Duanxx的神经网络学习: 自己动手写神经网络(二) 前馈网络的实现

本文是继续Duanxx的神经网络学习: 自己动手写神经网络(一) 搭建一个简单的网络框架 写的第二篇文章,将神经网络的前馈网络实现并测试. 本文的代码下载地址 1 为神经元Neuron添加权Weight 在上一篇文章中,我已经搭起了一个神经网络的框架. 但是那只是一个框架而已,什么都没有是实现,而这个框架的最基本的东西就是神经元Nenron,这里就考虑将Neuron实现一下. 对于一个神经元而言,它的输入是上一层神经元的输出,可以不用太关心,它也有自己的输出outputvalue,同时,它还要控

CNN卷积神经网络学习笔记3:权值更新公式推导

在上篇<CNN卷积神经网络学习笔记2:网络结构>中,已经介绍了CNN的网络结构的详细构成,我们已经可以初始化一个自己的CNN网络了,接下来就是要用训练得到一个确定的CNN的模型,也就是确定CNN的参数. CNN本质上就是人工神经网络的一种,只是在前几层的处理上有所不同,我们可以把卷积核看成是人工神经网络里的权值W,而采样层实质上也是一种卷积运算.所以可以基于人工神经网络的权值更新的方法来推导CNN里的权值更新公式.人工神经网络里是用反向传播算法将误差层层回传,利用梯度下降法更新每一层的权值,C

RBF神经网络学习算法及与多层感知器的比较

对于RBF神经网络的原理已经在我的博文<机器学习之径向基神经网络(RBF NN)>中介绍过,这里不再重复.今天要介绍的是常用的RBF神经网络学习算法及RBF神经网络与多层感知器网络的对比. 一.RBF神经网络学习算法 广义的RBF神经网络结构如下图所示: N-M-L结构对应着N维输入,M个数据中心点centers,L个输出. RBF 网络常用学习算法 RBF 网络的设计包括结构设计和参数设计.结构设计主要解决如何确定网络隐节点数的问题.参数设计一般需考虑包括3种参数:各基函数的数据中心和扩展常

【神经网络学习笔记】LIBSVM参数讲解

支持向量机SVM(Support Vector Machine)作为一种可训练的机器学习方法可以实现模式分类和非线性回归,本文就matlab中的LIBSVM工具箱展开说明. 在matlab中调用LIBSVM工具箱可以方便的使用LIBSVM网络,台湾大学的林智仁教授已经封装好各方法,大家可以在此下载. LIBSVM工具箱的主要函数为svmtrain和svmpredict,调用格式为 model = svmtrain(train_lable,train_data,options); [predict

RNN循环神经网络学习——概述

循环神经网络(Recurrent Neural NetWork,RNN)是一种将节点定向连接成环的人工神经网络,其内部状态可以展示动态时序行为. 循环神经网络的主要用途是处理和预测序列数据.循环神经网络最初就是为了刻画一个序列当前的输出与之前信息的关系.从网络结构上来看,循环神经网络会记忆之前的信息,并利用之前的信息影响后面节点的输出.也就是说,循环神经网络的隐藏层之间的节点是有连接的,隐藏层的输入不仅包含输入层的输出,还包括上一时刻隐藏层的输出. 如图为典型的RNN结构示意图.RNN主体结构的

最容易读进去的深度学习科普贴

(一) 一 2016 年一月底,人工智能的研究领域,发生了两件大事. 先是一月二十四号,MIT 的教授,人工智能研究的先驱者,Marvin Minsky 去世,享年89 岁. 三天之后,谷歌在自然杂志上正式公开发表论文,宣布其以深度学习技术为基础的电脑程序 AlphaGo, 在 2015年 十月,连续五局击败欧洲冠军.职业二段樊辉. 这是第一次机器击败职业围棋选手.距离 97年IBM 电脑击败国际象棋世界冠军,一晃近二十年了. 极具讽刺意义的是,Minsky 教授,一直不看好深度学习的概念.他曾