研究生课程:高级人工智能-第3讲 人工神经网络
《高级人工智能》课程笔记:第3讲 人工神经网络
第3讲 人工神经网络
联结主义学派:又称仿生学派或生理学派
- 认为人的思维基元是神经元,而不是符号处理过程
- 认为人脑不同于电脑
核心:智能的本质是联接机制。
原理:神经网络及神经网络间的连接机制和学习算法
什么是神经网络
- 所谓的人工神经网络就是基于模仿生物大脑的结构和功能而构成的一种信息处理系统(计算机)。
- 个体单元相互连接形成多种类型结构的图
- 循环、非循环
- 有向、无向
- 自底向上(Bottom-Up)AI
- 起源于生物神经系统
- 从结构模拟到功能模拟
发展历史
- 1940年代
- 心理学家McCulloch和数学家Pitts建立了阈值加权和模型(1943)
- 心理学家Hebb提出神经元之间突触联系是可变(可学习)的假说——Hebb学习律(1949)
- 1950年代、1960年代
- 提出并完善了单级感知器(Perceptron)
- 代表性人物:Marvin Minsky,Frank Rosenblatt,Bernard Widrow
- 1980年代
- J.Hopfield提出Hopfield网络(1984)
- Hinton、Sejnowsky、Rumelhart等人提出了著名的Boltzmann机(1985)
- Rumelhart等提出多层网络的学习算法—BP算法(1986)
- 2000年代
- Hinton et al. Deep Neural Networks (2007)
生物学启示
生物神经元
- 神经元组成:细胞体,轴突,树突,突触
- 神经元之间通过突触两两相连。信息的传递发生在突触。
- 突触记录了神经元间联系的强弱。
- 只有达到一定的兴奋程度,神经元才向外界传输信息。
神经元特性
- 信息以预知的确定方向传递:一个神经元的树突-细胞体-轴突-突触-另一个神经元树突
- 时空整合性
- 对不同时间通过同一突触传入的信息具有时间整合功能
- 对同一时间通过不同突触传入的信息具有空间整合功能
工作状态
- 兴奋状态,对输入信息整合后使细胞膜电位升高,当高于动作电位的阈值时,产生神经冲动,并由轴突输出。
- 抑制状态,对输入信息整合后使细胞膜电位降低,当低于动作电位的阈值时,无神经冲动产生。
结构的可塑性:神经元之间的柔性连接:突触的信息传递特性是可变的——学习记忆的基础
神经元模型
从生物学结构到数学模型
人工神经元
,为激活函数,为组合函数
组合函数:
权重和:
➡
径向距离:
激活函数
人工神经网络(ANN)
- 多个人工神经元按照特定的网络结构联接在一起,就构成了一个人工神经网络。
- 神经网络的目标就是将输入转换成有意义的输出。
生物系统中的学习:
- 自适应学习:适应的目标是基于对环境信息的响应获得更好的状态
- 在神经层面上,通过突触强度的改变实现学习:消除某些突触,建立一些新的突触
- Hebb学习律:神经元同时激活,突触强度增加,异步激活,突触强度减弱
- 学习律符合能量最小原则:保持突触强度需要能量,所以在需要的地方保持,在不需要的地方不保持。
ANN的学习规则:能量最小
对人工神经网络,需要确定合适的能量定义;可以使用数学上的优化技术来发现如何改变神经元间的联接权重。
两个主要问题:结构和学习方法
ANN结构
- 前馈结构:没有循环,静态的
- 反馈/循环结构:有循环,动态的
ANN的学习方法:通过神经网络所在环境的模拟过程,调整网络中的自由参数。
学习策略:Error Correction:最小化实际输出与期望输出之间的误差,属于监督学习。
多层感知机
感知机实质上是一种神经元模型
阈值激活函数:
判别规则:
输入空间中
- 样本是空间中的一个点
- 权向量是一个超平面
- 超平面一边对应,另一边对应
单层感知机学习:用现在的权重进行分类,如果分类正确,权重不改变;如果分类错误,用分类错误的样本调整权重
感知机收敛定理:若训练数据集是线性可分的,则感知机模型收敛。
感知机存在的问题:如果存在噪声,或样本不是线性可分的,不会收敛。(例如不能处理异或操作),且泛化性比较差。
多层感知机:三层可以学习全部连续的函数,四层就可以学习全部的函数。层间神经元全连接,层内神经元不连接。
学习方法:反向传播
- 输入数据从输入层经过隐藏层传递到输出层
- 误差信息从输出层反向传播,通过隐藏层传递到输入层
全局误差度量:(最小平方误差)
权值更新规则采用梯度下降的方法:
误差反向传播:
实际应用中要对数据进行归一化,并且选择合适的学习率
优点:
- 很强的表达能力
- 容易执行
缺点:
- 收敛速度慢(采用Newton法)
- 过拟合(Over-fitting)(加正则化项,约束权值的平滑性;采用更少(但足够数量)的隐层神经元)
- 局部极小(尝试不同的初始化,增加扰动)
多层感知机解决了一般性学习问题,并且与生物系统相联系。
层数增加使用BP算法会存在梯度消失的问题:在后面的几层,误差反向传播后可能变得非常小,权重不太好更新。
采用sigmoid函数,多个相乘使得传递过来的残差会越来越小。
深度学习
时代背景:数据爆炸、计算性能提升
传统机器学习解决问题的思路:
- 良好的特征表达,对最终算法的准确性起了非常关键的作用,而且系统主要的计算和测试工作都耗在这一大部分。
- 但实际中一般都是人工完成的。
使用深度学习去自动学习特征!
人脑视觉机理
- “视觉系统的信息处理”:可视皮层是分级的
- 神经-中枢-大脑的工作过程,或许是一个不断迭代、不断抽象的过程。
- 关键词:一个是抽象,一个是迭代。
- 从原始信号,做低级抽象,逐渐向高级抽象迭代。人类的逻辑思维,经常使用高度抽象的概念。
为什么使用深度学习?
- 深层结构能够有效被表达
- 对相同的函数需要更少的计算单元
- 深层网络结构中,高层可以综合应用低层信息
- 深层结构可产生层次化特征表达
- 可解释性,更具有语义化信息
- 多层隐变量允许统计上的组合共享
- 深层结构有效(vision, audio, NLP等)!
深层 vs 浅层神经网络
- 多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类
- 深层网络结构中,高层可以综合应用低层信息
- 低层关注“局部”,高层关注“全局”、更具有语义化
- “深度模型”是手段,“特征学习”是目的。
- 强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;
- 明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。
- 与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。
BP算法的问题:
- 需要带标签训练数据
- 几乎所有的数据是无标签的
- 人脑可以从无标签数据中学习
- 局部极小
- 对深层网络远离了最优解
- 梯度消失
Deep learning训练:
自下向上的非监督学习(greedy layer-wise training)
- 把网络逐层进行预训练,或者找一个足够好的初始权重。
自顶向下的监督学习
- 就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调
- 微调特征(中间层),使得与问题更相关。
对输入的结构建模:建立产生输入的生成式模型,调整参数使得生成式模型的概率最大。
Deep Learning的常用模型
AutoEncoder自动编码器
学习过程:无标签数据,用非监督学习学习特征
- 将input输入一个encoder编码器,就会得到一个code,这个code也就是输入的一个表示
- 增加一个decoder解码器
- 通过调整encoder和decoder的参数,使得重构误差最小,这样就得到输入input信号的一个表示了,也就是编码code。
- 输入无标签数据,误差的来源就是直接重构后与原输入相比得到。
利用人工神经网络本身的层次结构特点
- 如果给定一个神经网络,假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重。
- 自然地,就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征。
自动编码器就是一种尽可能复现输入信号的神经网络。
为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要的因素
网络结构
- 三层结构:输入层,隐藏层,输出层
- 限定神经元的数量
- 输入层神经元数=输出层神经元数
- 隐层神经元数量<输入层神经元数量
- 意义:迫使隐藏层节点学习得到输入数据的压缩表示方法
自动编码器可以只训练单组参数,不需要关心另一半的参数。
Deep结构——逐层训练
- 自编码器“栈化”
- 通过编码器产生特征,然后训练下一层。得到第一层的code,重构误差最小让我们相信这个code就是原输入信号的良好表达了,或者牵
强点说,它和原信号是一模一样的(表达不一样,反映的是一个东西)。将第一层输出的code当成第二层的输入信号,同样最小化重构误差,就会得到第二层的参数,并且得到第二层输入的code,也就是原输入信息的第二个表达了。其他层也以同样的方法进行。
监督学习
- Deep结构,每一层都会得到原始输入的不同层次的表达。
- 有监督微调
- 为了实现分类,可以在AutoEncoder的最顶的编码层添加一个分类器(例如Logistic回归、SVM等),然后通过标准的多层神经网络的监督训练方法(梯度下降法)去训练。
- 最后层的特征code输入到分类器中,基于有标签样本,通过监督学习对网络进行微调
- 只调整分类器
- 通过有标签样本,微调整个系统
两隐层自编码网络MNIST手写数字识别:
训练一个包含两个隐含层的栈式自编码网络,用来进行MNIST手写数字分类
- 用原始输入训练第一个自编码器,学习得到原始输入的一阶特征表示
- 把上一层的一阶特征作为另一个稀疏自编码器的输入,使用它们来学习二阶特征
- 将二阶特征作为softmax分类器的输入,训练得到一个能将二阶特征映射到数字标签的模型
- 将这三层结合起来构成一个栈式自编码网络,通过反向传播算法(BP)同时调整所有层的参数以改善学习结果(称为整体微调finetuning)
栈式自编码器神经网络
- 栈式自编码神经网络具有强大的表达能力及深度神经网络的所有优点。
- 通常能够获取到输入的“层次型分组”或者“部分-整体分解”结构。
- 学习方式:前层的输出作为下一层输入的方式依次训练。
- 如果网络的输入数据是图像,网络的第一层会学习如何去识别边,第二层一般会学习如何去组合边,从而构成轮廓、角等。更高层会学习如何去组合更形象且有意义的特征。
- 如果输入数据集包含人脸图像,更高层会学习如何识别或组合眼睛、鼻子、嘴等人脸器官。
Deep Belief Networks(DBN)和Deep Boltzmann Machine(DBM)
Hopfield Network
结构:
- 单层全互连、对称权值的反馈网络
- 状态:-1(0),+1
Hopfield网络按动力学方式运行,其工作过程为状态的演化过程,即从初始状态按能量减小的方向进行演化,直到达到稳定状态。稳定状态即为网络的输出。
二值随机神经元(Bernoulli variables):以一定的概率产生1
波尔兹曼机(Boltzmann Machine):
- 结构类似于Hopfield 网络,但它是具有隐单元的反馈互联网络
- 遵循波尔兹曼分布,学习数据的固有内在表示。
- 结构:一个可见层+一个隐层,层内有连接
BM基本原理:
- Hopfield网络的神经元的结构功能及其在网络中的地位是一样的。但BM中一部分神经元与外部相连,可以起到网络的输入、输出功能,或者严格地说可以受到外部条件的约束。另一部分神经元则不与外部相连,因而属于隐单元
- 每个神经元只取1或0这两种状态:状态1代表该神经元处于接通状态,状态0代表该神经元处于断开状态
缺点:网络结构复杂、训练代价大、局部极小
受限波尔兹曼机(Restricted Boltzmann Machines):
- 通过输入数据集学习概率分布的随机生成神经网络
- 结构:一个可见层+一个隐层,层内无连接
- RBM中,隐单元在给定可视单元情况下,条件独立
Deep Belief Networks:
- 概率生成模型
- 深层结构——多层
- 非监督的预学习提供了网络好的初始化
- 监督微调(fine-tuning)
Deep Boltzmann Machines:
- 所有层间无向连接
- 同层神经元间无连接
- 高层表示由无标注数据建立
- 标注数据仅用来微调网络