1. 神经网络的工作原理
“人脑是如何工作的?”
“人类能否制作模拟人脑的人工神经元?”
多少年以来,人们从医学、生物学、生理学、哲学、信息学、计算机科学、认知学、组织协同学等各个角度企图认识并解答上述问题。在寻找上述问题答案的研究过程中,逐渐形成了一个新兴的多学科交叉技术领域,称之为“神经网络”。神经网络的研究涉及众多学科领域,这些领域互相结合、相互渗透并相互推动。不同领域的科学家又从各自学科的兴趣与特色出发,提出不同的问题,从不同的角度进行研究。
人工神经网络首先要以一定的学习准则进行学习,然后才能工作。现以人工神经网络对于写“A”、“B”两个字母的识别为例进行说明,规定当“A”输入网络时,应该输出“1”,而当输入为“B”时,输出为“0”。
所以网络学习的准则应该是:如果网络作出错误的判决,则通过网络的学习,应使得网络减少下次犯同样错误的可能性。首先,给网络的各连接权值赋予(0,1)区间内的随机值,将“A”所对应的图象模式输入给网络,网络将输入模式加权求和、与门限比较、再进行非线性运算,得到网络的输出。在此情况下,网络输出为“1”和“0”的概率各为50%,也就是说是完全随机的。这时如果输出为“1”(结果正确),则使连接权值增大,以便使网络再次遇到“A”模式输入时,仍然能作出正确的判断。
普通计算机的功能取决于程序中给出的知识和能力。显然,对于智能活动要通过总结编制程序将十分困难。
人工神经网络也具有初步的自适应与自组织能力。在学习或训练过程中改变突触权重值,以适应周围环境的要求。同一网络因学习方式及内容不同可具有不同的功能。人工神经网络是一个具有学习能力的系统,可以发展知识,以致超过设计者原有的知识水平。通常,它的学习训练方式可分为两种,一种是有监督或称有导师的学习,这时利用给定的样本标准进行分类或模仿;另一种是无监督学习或称无为导师学习,这时,只规定学习方式或某些规则,则具体的学习内容随系统所处环境 (即输入信号情况)而异,系统可以自动发现环境特征和规律性,具有更近似人脑的功能。
神经网络就像是一个爱学习的孩子,您教她的知识她是不会忘记而且会学以致用的。我们把学习集(Learning Set)中的每个输入加到神经网络中,并告诉神经网络输出应该是什么分类。在全部学习集都运行完成之后,神经网络就根据这些例子总结出她自己的想法,到底她是怎么归纳的就是一个黑盒了。之后我们就可以把测试集(Testing Set)中的测试例子用神经网络来分别作测试,如果测试通过(比如80%或90%的正确率),那么神经网络就构建成功了。我们之后就可以用这个神经网络来判断事务的分类了。
神经网络是通过对人脑的基本单元——神经元的建模和联接,探索模拟人脑神经系统功能的模型,并研制一种具有学习、联想、记忆和模式识别等智能信息处理功能的人工系统。神经网络的一个重要特性是它能够从环境中学习,并把学习的结果分布存储于网络的突触连接中。神经网络的学习是一个过程,在其所处环境的激励下,相继给网络输入一些样本模式,并按照一定的规则(学习算法)调整网络各层的权值矩阵,待网络各层权值都收敛到一定值,学习过程结束。然后我们就可以用生成的神经网络来对真实数据做分类。
2. 有人可以介绍一下什么是"神经网络"吗
由于神经网络是多学科交叉的产物,各个相关的学科领域对神经网络
都有各自的看法,因此,关于神经网络的定义,在科学界存在许多不同的
见解。目前使用得最广泛的是T.Koholen的定义,即"神经网络是由具有适
应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经
系统对真实世界物体所作出的交互反应。"
如果我们将人脑神经信息活动的特点与现行冯·诺依曼计算机的工作方
式进行比较,就可以看出人脑具有以下鲜明特征:
1. 巨量并行性。
在冯·诺依曼机中,信息处理的方式是集中、串行的,即所有的程序指
令都必须调到CPU中后再一条一条地执行。而人在识别一幅图像或作出一项
决策时,存在于脑中的多方面的知识和经验会同时并发作用以迅速作出解答。
据研究,人脑中约有多达10^(10)~10^(11)数量级的神经元,每一个神经元
具有103数量级的连接,这就提供了巨大的存储容量,在需要时能以很高的
反应速度作出判断。
2. 信息处理和存储单元结合在一起。
在冯·诺依曼机中,存储内容和存储地址是分开的,必须先找出存储器的
地址,然后才能查出所存储的内容。一旦存储器发生了硬件故障,存储器中
存储的所有信息就都将受到毁坏。而人脑神经元既有信息处理能力又有存储
功能,所以它在进行回忆时不仅不用先找存储地址再调出所存内容,而且可
以由一部分内容恢复全部内容。当发生"硬件"故障(例如头部受伤)时,并
不是所有存储的信息都失效,而是仅有被损坏得最严重的那部分信息丢失。
3. 自组织自学习功能。
冯·诺依曼机没有主动学习能力和自适应能力,它只能不折不扣地按照
人们已经编制好的程序步骤来进行相应的数值计算或逻辑计算。而人脑能够
通过内部自组织、自学习的能力,不断地适应外界环境,从而可以有效地处
理各种模拟的、模糊的或随机的问题。
神经网络研究的主要发展过程大致可分为四个阶段:
1. 第一阶段是在五十年代中期之前。
西班牙解剖学家Cajal于十九世纪末创立了神经元学说,该学说认为神经
元的形状呈两极,其细胞体和树突从其他神经元接受冲动,而轴索则将信号
向远离细胞体的方向传递。在他之后发明的各种染色技术和微电极技术不断
提供了有关神经元的主要特征及其电学性质。
1943年,美国的心理学家W.S.McCulloch和数学家W.A.Pitts在论文《神经
活动中所蕴含思想的逻辑活动》中,提出了一个非常简单的神经元模型,即
M-P模型。该模型将神经元当作一个功能逻辑器件来对待,从而开创了神经
网络模型的理论研究。
1949年,心理学家D.O. Hebb写了一本题为《行为的组织》的书,在这本
书中他提出了神经元之间连接强度变化的规则,即后来所谓的Hebb学习法则。
Hebb写道:"当神经细胞A的轴突足够靠近细胞B并能使之兴奋时,如果A重
复或持续地激发B,那么这两个细胞或其中一个细胞上必然有某种生长或代
谢过程上的变化,这种变化使A激活B的效率有所增加。"简单地说,就是
如果两个神经元都处于兴奋状态,那么它们之间的突触连接强度将会得到增
强。
五十年代初,生理学家Hodykin和数学家Huxley在研究神经细胞膜等效电
路时,将膜上离子的迁移变化分别等效为可变的Na+电阻和K+电阻,从而建
立了着名的Hodykin-Huxley方程。
这些先驱者的工作激发了许多学者从事这一领域的研究,从而为神经计
算的出现打下了基础。
2. 第二阶段从五十年代中期到六十年代末。
1958年,F.Rosenblatt等人研制出了历史上第一个具有学习型神经网络
特点的模式识别装置,即代号为Mark I的感知机(Perceptron),这一重
大事件是神经网络研究进入第二阶段的标志。对于最简单的没有中间层的
感知机,Rosenblatt证明了一种学习算法的收敛性,这种学习算法通过迭代
地改变连接权来使网络执行预期的计算。
稍后于Rosenblatt,B.Widrow等人创造出了一种不同类型的会学习的神经
网络处理单元,即自适应线性元件Adaline,并且还为Adaline找出了一种有
力的学习规则,这个规则至今仍被广泛应用。Widrow还建立了第一家神经计
算机硬件公司,并在六十年代中期实际生产商用神经计算机和神经计算机软
件。
除Rosenblatt和Widrow外,在这个阶段还有许多人在神经计算的结构和
实现思想方面作出了很大的贡献。例如,K.Steinbuch研究了称为学习矩阵
的一种二进制联想网络结构及其硬件实现。N.Nilsson于1965年出版的
《机器学习》一书对这一时期的活动作了总结。
3. 第三阶段从六十年代末到八十年代初。
第三阶段开始的标志是1969年M.Minsky和S.Papert所着的《感知机》一书
的出版。该书对单层神经网络进行了深入分析,并且从数学上证明了这种网
络功能有限,甚至不能解决象"异或"这样的简单逻辑运算问题。同时,他们
还发现有许多模式是不能用单层网络训练的,而多层网络是否可行还很值得
怀疑。
由于M.Minsky在人工智能领域中的巨大威望,他在论着中作出的悲观结论
给当时神经网络沿感知机方向的研究泼了一盆冷水。在《感知机》一书出版
后,美国联邦基金有15年之久没有资助神经网络方面的研究工作,前苏联也
取消了几项有前途的研究计划。
但是,即使在这个低潮期里,仍有一些研究者继续从事神经网络的研究工
作,如美国波士顿大学的S.Grossberg、芬兰赫尔辛基技术大学的T.Kohonen
以及日本东京大学的甘利俊一等人。他们坚持不懈的工作为神经网络研究的
复兴开辟了道路。
4. 第四阶段从八十年代初至今。
1982年,美国加州理工学院的生物物理学家J.J.Hopfield采用全互连型
神经网络模型,利用所定义的计算能量函数,成功地求解了计算复杂度为
NP完全型的旅行商问题(Travelling Salesman Problem,简称TSP)。这
项突破性进展标志着神经网络方面的研究进入了第四阶段,也是蓬勃发展
的阶段。
Hopfield模型提出后,许多研究者力图扩展该模型,使之更接近人脑的
功能特性。1983年,T.Sejnowski和G.Hinton提出了"隐单元"的概念,并且
研制出了Boltzmann机。日本的福岛邦房在Rosenblatt的感知机的基础上,
增加隐层单元,构造出了可以实现联想学习的"认知机"。Kohonen应用3000
个阈器件构造神经网络实现了二维网络的联想式学习功能。1986年,
D.Rumelhart和J.McClelland出版了具有轰动性的着作《并行分布处理-认知
微结构的探索》,该书的问世宣告神经网络的研究进入了高潮。
1987年,首届国际神经网络大会在圣地亚哥召开,国际神经网络联合会
(INNS)成立。随后INNS创办了刊物《Journal Neural Networks》,其他
专业杂志如《Neural Computation》,《IEEE Transactions on Neural
Networks》,《International Journal of Neural Systems》等也纷纷
问世。世界上许多着名大学相继宣布成立神经计算研究所并制订有关教育
计划,许多国家也陆续成立了神经网络学会,并召开了多种地区性、国际性
会议,优秀论着、重大成果不断涌现。
今天,在经过多年的准备与探索之后,神经网络的研究工作已进入了决
定性的阶段。日本、美国及西欧各国均制订了有关的研究规划。
日本制订了一个"人类前沿科学计划"。这项计划为期15-20年,仅
初期投资就超过了1万亿日元。在该计划中,神经网络和脑功能的研究占有
重要地位,因为所谓"人类前沿科学"首先指的就是有关人类大脑以及通过
借鉴人脑而研制新一代计算机的科学领域。
在美国,神经网络的研究得到了军方的强有力的支持。美国国防部投资
4亿美元,由国防部高级研究计划局(DAPRA)制订了一个8年研究计划,
并成立了相应的组织和指导委员会。同时,海军研究办公室(ONR)、空军
科研办公室(AFOSR)等也纷纷投入巨额资金进行神经网络的研究。DARPA认
为神经网络"看来是解决机器智能的唯一希望",并认为"这是一项比原子弹
工程更重要的技术"。美国国家科学基金会(NSF)、国家航空航天局(NASA)
等政府机构对神经网络的发展也都非常重视,它们以不同的形式支持了众多
的研究课题。
欧共体也制订了相应的研究计划。在其ESPRIT计划中,就有一个项目是
"神经网络在欧洲工业中的应用",除了英、德两国的原子能机构外,还有多
个欧洲大公司卷进这个研究项目,如英国航天航空公司、德国西门子公司等。
此外,西欧一些国家还有自己的研究计划,如德国从1988年就开始进行一个
叫作"神经信息论"的研究计划。
我国从1986年开始,先后召开了多次非正式的神经网络研讨会。1990年
12月,由中国计算机学会、电子学会、人工智能学会、自动化学会、通信学
会、物理学会、生物物理学会和心理学会等八个学会联合在北京召开了"中
国神经网络首届学术会议",从而开创了我国神经网络研究的新纪元。
3. 神经网络浅谈
人工智能技术是当前炙手可热的话题,而基于神经网络的深度学习技术更是热点中的热点。去年谷歌的Alpha Go 以4:1大比分的优势战胜韩国的李世石九段,展现了深度学习的强大威力,后续强化版的Alpha Master和无师自通的Alpha Zero更是在表现上完全碾压前者。不论你怎么看,以深度学习为代表的人工智能技术正在塑造未来。
下图为英伟达(NVIDIA)公司近年来的股价情况, 该公司的主要产品是“图形处理器”(GPU),而GPU被证明能大大加快神经网络的训练速度,是深度学习必不可少的计算组件。英伟达公司近年来股价的飞涨足以证明当前深度学习的井喷之势。
好,话不多说,下面简要介绍神经网络的基本原理、发展脉络和优势。
神经网络是一种人类由于受到生物神经细胞结构启发而研究出的一种算法体系,是机器学习算法大类中的一种。首先让我们来看人脑神经元细胞:
一个神经元通常具有多个树突 ,主要用来接受传入信息,而轴突只有一条,轴突尾端有许多轴突末梢,可以给其他多个神经元传递信息。轴突末梢跟其他神经元的树突产生连接,从而传递信号。
下图是一个经典的神经网络(Artificial Neural Network,ANN):
乍一看跟传统互联网的拓扑图有点类似,这也是称其为网络的原因,不同的是节点之间通过有向线段连接,并且节点被分成三层。我们称图中的圆圈为神经元,左边三个神经元组成的一列为输入层,中间神经元列为隐藏层,右边神经元列为输出层,神经元之间的箭头为权重。
神经元是计算单元,相当于神经元细胞的细胞核,利用输入的数据进行计算,然后输出,一般由一个线性计算部分和一个非线性计算部分组成;输入层和输出层实现数据的输入输出,相当于细胞的树突和轴突末梢;隐藏层指既不是输入也不是输出的神经元层,一个神经网络可以有很多个隐藏层。
神经网络的关键不是圆圈代表的神经元,而是每条连接线对应的权重。每条连接线对应一个权重,也就是一个参数。权重具体的值需要通过神经网络的训练才能获得。我们实际生活中的学习体现在大脑中就是一系列神经网络回路的建立与强化,多次重复的学习能让回路变得更加粗壮,使得信号的传递速度加快,最后对外表现为“深刻”的记忆。人工神经网络的训练也借鉴于此,如果某种映射关系出现很多次,那么在训练过程中就相应调高其权重。
1943年,心理学家McCulloch和数学家Pitts参考了生物神经元的结构,发表了抽象的神经元模型MP:
符号化后的模型如下:
Sum函数计算各权重与输入乘积的线性组合,是神经元中的线性计算部分,而sgn是取符号函数,当输入大于0时,输出1,反之输出0,是神经元中的非线性部分。向量化后的公式为z=sgn(w^T a)(w^T=(w_1,w_2,w_3),a=〖(a_1,a_2,a_3)〗^T)。
但是,MP模型中,权重的值都是预先设置的,因此不能学习。该模型虽然简单,并且作用有限,但已经建立了神经网络大厦的地基
1958年,计算科学家Rosenblatt提出了由两层神经元组成(一个输入层,一个输出层)的神经网络。他给它起了一个名字–“感知器”(Perceptron)
感知器是当时首个可以学习的人工神经网络。Rosenblatt现场演示了其学习识别简单图像的过程,在当时引起了轰动,掀起了第一波神经网络的研究热潮。
但感知器只能做简单的线性分类任务。1969年,人工智能领域的巨擘Minsky指出这点,并同时指出感知器对XOR(异或,即两个输入相同时输出0,不同时输出1)这样的简单逻辑都无法解决。所以,明斯基认为神经网络是没有价值的。
随后,神经网络的研究进入低谷,又称 AI Winter 。
Minsky说过单层神经网络无法解决异或问题,但是当增加一个计算层以后,两层神经网络不仅可以解决异或问题,而且具有非常好的非线性分类效果。
下图为两层神经网络(输入层一般不算在内):
上图中,输出层的输入是上一层的输出。
向量化后的公式为:
注意:
每个神经元节点默认都有偏置变量b,加上偏置变量后的计算公式为:
同时,两层神经网络不再使用sgn函数作为激励函数,而采用平滑的sigmoid函数:
σ(z)=1/(1+e^(-z) )
其图像如下:
理论证明: 两层及以上的神经网络可以无限逼近真实的对应函数,从而模拟数据之间的真实关系 ,这是神经网络强大预测能力的根本。但两层神经网络的计算量太大,当时的计算机的计算能力完全跟不上,直到1986年,Rumelhar和Hinton等人提出了反向传播(Backpropagation,BP)算法,解决了两层神经网络所需要的复杂计算量问题,带动了业界使用两层神经网络研究的热潮。
但好景不长,算法的改进仅使得神经网络风光了几年,然而计算能力不够,局部最优解,调参等一系列问题一直困扰研究人员。90年代中期,由Vapnik等人发明的SVM(Support Vector Machines,支持向量机)算法诞生,很快就在若干个方面体现出了对比神经网络的优势:无需调参;高效;全局最优解。
由于以上原因,SVM迅速打败了神经网络算法成为主流。神经网络的研究再一次进入低谷, AI Winter again 。
多层神经网络一般指两层或两层以上的神经网络(不包括输入层),更多情况下指两层以上的神经网络。
2006年,Hinton提出使用 预训练 ”(pre-training)和“微调”(fine-tuning)技术能优化神经网络训练,大幅度减少训练多层神经网络的时间
并且,他给多层神经网络相关的学习方法赋予了一个新名词–“ 深度学习 ”,以此为起点,“深度学习”纪元开始了:)
“深度学习”一方面指神经网络的比较“深”,也就是层数较多;另一方面也可以指神经网络能学到很多深层次的东西。研究发现,在权重参数不变的情况下,增加神经网络的层数,能增强神经网络的表达能力。
但深度学习究竟有多强大呢?没人知道。2012年,Hinton与他的学生在ImageNet竞赛中,用多层的卷积神经网络成功地对包含一千类别的一百万张图片进行了训练,取得了分类错误率15%的好成绩,这个成绩比第二名高了近11个百分点,充分证明了多层神经网络识别效果的优越性。
同时,科研人员发现GPU的大规模并行矩阵运算模式完美地契合神经网络训练的需要,在同等情况下,GPU的速度要比CPU快50-200倍,这使得神经网络的训练时间大大减少,最终再一次掀起了神经网络研究的热潮,并且一直持续到现在。
2016年基于深度学习的Alpha Go在围棋比赛中以4:1的大比分优势战胜了李世石,深度学习的威力再一次震惊了世界。
神经网络的发展历史曲折荡漾,既有被捧上神坛的高潮,也有无人问津的低谷,中间经历了数次大起大落,我们姑且称之为“三起三落”吧,其背后则是算法的改进和计算能力的持续发展。
下图展示了神经网络自发明以来的发展情况及一些重大时间节点。
当然,对于神经网络我们也要保持清醒的头脑。由上图,每次神经网络研究的兴盛期持续10年左右,从最近2012年算起,或许10年后的2022年,神经网络的发展将再次遇到瓶颈。
神经网络作为机器学习的一种,其模型训练的目的,就是使得参数尽可能的与真实的模型逼近。理论证明,两层及以上的神经网络可以无限逼近真实的映射函数。因此,给定足够的训练数据和训练时间,总能通过神经网络找到无限逼近真实关系的模型。
具体做法:首先给所有权重参数赋上随机值,然后使用这些随机生成的参数值,来预测训练数据中的样本。假设样本的预测目标为yp ,真实目标为y,定义值loss,计算公式如下:
loss = (yp -y) ^2
这个值称之为 损失 (loss),我们的目标就是使对所有训练数据的损失和尽可能的小,这就转化为求loss函数极值的问题。
一个常用方法是高等数学中的求导,但由于参数不止一个,求导后计算导数等于0的运算量很大,所以常用梯度下降算法来解决这样的优化问题。梯度是一个向量,由函数的各自变量的偏导数组成。
比如对二元函数 f =(x,y),则梯度∇f=(∂f/∂x,∂f/∂y)。梯度的方向是函数值上升最快的方向。梯度下降算法每次计算参数在当前的梯度,然后让参数向着梯度的反方向前进一段距离,不断重复,直到梯度接近零时截止。一般这个时候,所有的参数恰好达到使损失函数达到一个最低值的状态。下图为梯度下降的大致运行过程:
在神经网络模型中,由于结构复杂,每次计算梯度的代价很大。因此还需要使用 反向传播 (Back Propagation)算法。反向传播算法利用了神经网络的结构进行计算,不一次计算所有参数的梯度,而是从后往前。首先计算输出层的梯度,然后是第二个参数矩阵的梯度,接着是中间层的梯度,再然后是第一个参数矩阵的梯度,最后是输入层的梯度。计算结束以后,所要的两个参数矩阵的梯度就都有了。当然,梯度下降只是其中一个优化算法,其他的还有牛顿法、RMSprop等。
确定loss函数的最小值后,我们就确定了整个神经网络的权重,完成神经网络的训练。
在神经网络中一样的参数数量,可以用更深的层次去表达。
由上图,不算上偏置参数的话,共有三层神经元,33个权重参数。
由下图,保持权重参数不变,但增加了两层神经元。
在多层神经网络中,每一层的输入是前一层的输出,相当于在前一层的基础上学习,更深层次的神经网络意味着更深入的表示特征,以及更强的函数模拟能力。更深入的表示特征可以这样理解,随着网络的层数增加,每一层对于前一层次的抽象表示更深入。
如上图,第一个隐藏层学习到“边缘”的特征,第二个隐藏层学习到“边缘”组成的“形状”的特征,第三个隐藏层学习到由“形状”组成的“图案”的特征,最后的隐藏层学习到由“图案”组成的“目标”的特征。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力。
前面提到, 明斯基认为Rosenblatt提出的感知器模型不能处理最简单的“异或”(XOR)非线性问题,所以神经网络的研究没有前途,但当增加一层神经元后,异或问题得到了很好地解决,原因何在?原来从输入层到隐藏层,数据发生了空间变换,坐标系发生了改变,因为矩阵运算本质上就是一种空间变换。
如下图,红色和蓝色的分界线是最终的分类结果,可以看到,该分界线是一条非常平滑的曲线。
但是,改变坐标系后,分界线却表现为直线,如下图:
同时,非线性激励函数的引入使得神经网络对非线性问题的表达能力大大加强。
对于传统的朴素贝叶斯、决策树、支持向量机SVM等分类器,提取特征是一个非常重要的前置工作。在正式训练之前,需要花费大量的时间在数据的清洗上,这样分类器才能清楚地知道数据的维度,要不然基于概率和空间距离的线性分类器是没办法进行工作的。然而在神经网络中,由于巨量的线性分类器的堆叠(并行和串行)以及卷积神经网络的使用,它对噪声的忍耐能力、对多通道数据上投射出来的不同特征偏向的敏感程度会自动重视或忽略,这样我们在处理的时候,就不需要使用太多的技巧用于数据的清洗了。有趣的是,业内大佬常感叹,“你可能知道SVM等机器学习的所有细节,但是效果并不好,而神经网络更像是一个黑盒,很难知道它究竟在做什么,但工作效果却很好”。
人类对机器学习的环节干预越少,就意味着距离人工智能的方向越近。神经网络的这个特性非常有吸引力。
1) 谷歌的TensorFlow开发了一个非常有意思的神经网络 入门教程 ,用户可以非常方便地在网页上更改神经网络的参数,并且能看到实时的学习效率和结果,非常适合初学者掌握神经网络的基本概念及神经网络的原理。网页截图如下:
2) 深度学习领域大佬吴恩达不久前发布的《 神经网络和深度学习 》MOOC,现在可以在网易云课堂上免费观看了,并且还有中文字幕。
3) 《神经网络于深度学习》(Michael Nielsen着)、《白话深度学习与TensorFlow》也是不错的入门书籍。
4. 神经网络具体是什么
神经网络由大量的神经元相互连接而成。每个神经元接受线性组合的输入后,最开始只是简单的线性加权,后来给每个神经元加上了非线性的激活函数,从而进行非线性变换后输出。每两个神经元之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。 举个手写识别的例子,给定一个未知数字,让神经网络识别是什么数字。此时的神经网络的输入由一组被输入图像的像素所激活的输入神经元所定义。在通过非线性激活函数进行非线性变换后,神经元被激活然后被传递到其他神经元。重复这一过程,直到最后一个输出神经元被激活。从而识别当前数字是什么字。 神经网络的每个神经元如下
基本wx + b的形式,其中 x1、x2表示输入向量 w1、w2为权重,几个输入则意味着有几个权重,即每个输入都被赋予一个权重 b为偏置bias g(z) 为激活函数 a 为输出 如果只是上面这样一说,估计以前没接触过的十有八九又必定迷糊了。事实上,上述简单模型可以追溯到20世纪50/60年代的感知器,可以把感知器理解为一个根据不同因素、以及各个因素的重要性程度而做决策的模型。 举个例子,这周末北京有一草莓音乐节,那去不去呢?决定你是否去有二个因素,这二个因素可以对应二个输入,分别用x1、x2表示。此外,这二个因素对做决策的影响程度不一样,各自的影响程度用权重w1、w2表示。一般来说,音乐节的演唱嘉宾会非常影响你去不去,唱得好的前提下 即便没人陪同都可忍受,但如果唱得不好还不如你上台唱呢。所以,我们可以如下表示: x1:是否有喜欢的演唱嘉宾。x1 = 1 你喜欢这些嘉宾,x1 = 0 你不喜欢这些嘉宾。嘉宾因素的权重w1 = 7 x2:是否有人陪你同去。x2 = 1 有人陪你同去,x2 = 0 没人陪你同去。是否有人陪同的权重w2 = 3。 这样,咱们的决策模型便建立起来了:g(z) = g(w1x1 + w2x2 + b ),g表示激活函数,这里的b可以理解成 为更好达到目标而做调整的偏置项。 一开始为了简单,人们把激活函数定义成一个线性函数,即对于结果做一个线性变化,比如一个简单的线性激活函数是g(z) = z,输出都是输入的线性变换。后来实际应用中发现,线性激活函数太过局限,于是引入了非线性激活函数。
5. 神经网络是什么
神经网络是一种以人脑为模型的机器学习,简单地说就是创造一个人工神经网络,通过一种算法允许计算机通过合并新的数据来学习。
神经网络简单说就是通过一种算法允许计算机通过合并新的数据来学习!
6. 如何训练神经网络
1、先别着急写代码
训练神经网络前,别管代码,先从预处理数据集开始。我们先花几个小时的时间,了解数据的分布并找出其中的规律。
Andrej有一次在整理数据时发现了重复的样本,还有一次发现了图像和标签中的错误。所以先看一眼数据能避免我们走很多弯路。
由于神经网络实际上是数据集的压缩版本,因此您将能够查看网络(错误)预测并了解它们的来源。如果你的网络给你的预测看起来与你在数据中看到的内容不一致,那么就会有所收获。
一旦从数据中发现规律,可以编写一些代码对他们进行搜索、过滤、排序。把数据可视化能帮助我们发现异常值,而异常值总能揭示数据的质量或预处理中的一些错误。
2、设置端到端的训练评估框架
处理完数据集,接下来就能开始训练模型了吗?并不能!下一步是建立一个完整的训练+评估框架。
在这个阶段,我们选择一个简单又不至于搞砸的模型,比如线性分类器、CNN,可视化损失。获得准确度等衡量模型的标准,用模型进行预测。
这个阶段的技巧有:
· 固定随机种子
使用固定的随机种子,来保证运行代码两次都获得相同的结果,消除差异因素。
· 简单化
在此阶段不要有任何幻想,不要扩增数据。扩增数据后面会用到,但是在这里不要使用,现在引入只会导致错误。
· 在评估中添加有效数字
在绘制测试集损失时,对整个测试集进行评估,不要只绘制批次测试损失图像,然后用Tensorboard对它们进行平滑处理。
· 在初始阶段验证损失函数
验证函数是否从正确的损失值开始。例如,如果正确初始化最后一层,则应在softmax初始化时测量-log(1/n_classes)。
· 初始化
正确初始化最后一层的权重。如果回归一些平均值为50的值,则将最终偏差初始化为50。如果有一个比例为1:10的不平衡数据集,请设置对数的偏差,使网络预测概率在初始化时为0.1。正确设置这些可以加速模型的收敛。
· 人类基线
监控除人为可解释和可检查的损失之外的指标。尽可能评估人的准确性并与之进行比较。或者对测试数据进行两次注释,并且对于每个示例,将一个注释视为预测,将第二个注释视为事实。
· 设置一个独立于输入的基线
最简单的方法是将所有输入设置为零,看看模型是否学会从输入中提取任何信息。
· 过拟合一个batch
增加了模型的容量并验证我们可以达到的最低损失。
· 验证减少训练损失
尝试稍微增加数据容量。
7. 神经网络算法是用来干什么的
神经网络算法是由多个神经元组成的算法网络。
逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理;这一过程可以写成串行的指令,让计算机执行。然而,直观性的思维是将分布式存储的信息综合起来,结果是忽然间产生的想法或解决问题的办法。这种思维方式的根本之点在于以下两点:
1、信息是通过神经元上的兴奋模式分布储在网络上。
2、信息处理是通过神经元之间同时相互作用的动态过程来完成的。
思维学普遍认为,人类大脑的思维分为抽象(逻辑)思维、形象(直观)思维和灵感(顿悟)思维三种基本方式。
8. 人工神经网络是怎么学习的呢
1、神经网络的结构(例如2输入3隐节点1输出)建好后,一般就要求神经网络里的权值和阈值。现在一般求解权值和阈值,都是采用梯度下降之类的搜索算法(梯度下降法、牛顿法、列文伯格-马跨特法、狗腿法等等)。 2、这些算法会先初始化一个解,在这个解的基础上,确定一个搜索方向和一个移动步长(各种法算确定方向和步长的方法不同,也就使各种算法适用于解决不同的问题),使初始解根据这个方向和步长移动后,能使目标函数的输出(在神经网络中就是预测误差)下降。 3、然后将它更新为新的解,再继续寻找下一步的移动方向的步长,这样不断的迭代下去,目标函数(神经网络中的预测误差)也不断下降,最终就能找到一个解,使得目标函数(预测误差)比较小。 4、而在寻解过程中,步长太大,就会搜索得不仔细,可能跨过了优秀的解,而步长太小,又会使寻解过程进行得太慢。因此,步长设置适当非常重要。 5、学习率对原步长(在梯度下降法中就是梯度的长度)作调整,如果学习率lr = 0.1,那么梯度下降法中每次调整的步长就是0.1*梯度, 6、而在matlab神经网络工具箱里的lr,代表的是初始学习率。因为matlab工具箱为了在寻解不同阶段更智能的选择合适的步长,使用的是可变学习率,它会根据上一次解的调整对目标函数带来的效果来对学习率作调整,再根据学习率决定步长。
9. 神经网络是什么
神经网络可以指向两种,一个是生物神经网络,一个是人工神经网络。
生物神经网络:一般指生物的大脑神经元,细胞,触点等组成的网络,用于产生生物的意识,帮助生物进行思考和行动。
人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
人工神经网络:是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为“神经网络”或类神经网络。