任何一项技术的发展都不会一帆风顺,
深度学习
的发展也经历了“三起两落”!
①第一代神经网络
——
单层感知器(MP)
模型,
感知器模型实际就是将神经元模型中的激活函数作为符号函数,写成向量形式,即
它简洁且功能强大,可以实现自我迭代,只要有足够数量的样本,感知器模型就能找到一组合适的权重。但存在一个致命缺陷——
无法解决“异或”问题“,即意味着只能作
线性分割任务
,
无法很好解决非线性问题!
②第二代神经网络
——
多层感知器(MLP)
模型
,采用Sigmoid函数进行非线性映射,解决了”异或问题“,难题在于如何训练复杂模型参数,辛顿提出
反向传播算法(BP)
。
但是随着层数变多,BP存在梯度消失等问题,深度学习算法陷入低谷期。而此期间决策树算法、支持向量机、AdaBoost模型等被提出,受到大力推崇!
③第三代神经网络
——
深度学习
,2006年辛顿提出:先无监督学习以预训练方式初始化权重,再监督学习对权重进行训练微调,这样可减缓梯度消失问题,但仍不温不火!
直到2011年,
ReLU激活函数
被提出,该函数直
观简洁地模拟了人脑对刺激信号的处理机制,从根本上区别于Sigmoid函数特性。
一、深度学习算法
深度学习算法有很多种,还有很多变种算法和混合算法,这里只对一些主流的深度学习算法进行介绍。人脑神经元是人工神经网络的设计雏形,树突和轴突从细胞体中伸出,一个神经元有很多
树突(输入),只有一个轴突(输出),神经元之间的连接部位称为突触(权重)!
1、人工神经网络结构
一般
分为
输入层、隐藏层、输出层
三个层级
,输入输出层都只有一层,隐藏层可以有若干层,一般来说层数越多,模型越复杂性能越好!如下图,每一层的圆圈(节点)称为神经元,它获取前一层的所有神经元的输出值,按照特定的数学函数(
激活函数
)进行运算,并将输出结果传递给下一层。很多复杂的深度学习算法基本都是从这个网络结构派生和演化而来的。——
将所有输入值乘以各自权重后线性求和,再用激活函数计算得到输出。
激活函数
很多,以前常使用的线性激活函数基本都弃用了,
取而代之的是
Sigmoid、ReLU
等非线性激活函数。
Sigmoid函数
是一个S型函数,无论输入数据是多少,该函数都会把它映射成一个0到1之间的数
。ReLU函数
,如果输入是负数,则输出为0;输入是非负数,则输出等于输入——即没达到特定阈值时(实际值-阈值为负数),不会对刺激做出任何反应(输出为0);只有受到达到特定阈值的刺激之后,神经元才会做出反应,并且输出神经信号强度与输入刺激强度呈线性增长。
网络设计:
要构建一个神经网络,需要提前定义网络结构,如神经元个数和网络层数,这里涉及两组参数。一组是
模型
训练得到的参数
(如神经元的连接权重
);另一组是
定义
网络结构的参数
(如神经元个数和网络层数),后者是在搭建网络之前就要手工设置的参数(
超参数
)
。——定义超参数没有标准方法,需要大量实践。
优化策略:
需建立一个能够量化权重好坏的函数——
代价函数
。当有一组权重时,代价函数要计算的是
神经网络基于这组权重得到输出和真实值之间的
误差
,只要误差足够小,这组权重就足够好!
常用的一种
能最小化代价函数
的过程为
梯度下降法
,
(梯度是向量或函数在该点处变化最快的方向)。
有了优化目标(代价函数)和优化方法(梯度下降法),接下来需要考虑优化步骤——难点是虽能方便地计算出输出值和真实值之间的误差,但是
这个误差应该如何修正并分配到网络各层的权重上?
直到辛顿提出
反向传播算法
(
BP算法博客
),它计算网络每个权重的梯度,从误差已知的输出层开始,逐层计算上一层权重的梯度,然后进行修正。
2、卷积神经网络
1962年神经学家发现生物的视觉神经会对视觉刺激进行逐层处理,然后理解复杂的视觉特征,形成视觉认知。1989年Yann LeCun等受此启发,提出一种善于处理图像信息的网络结构——卷积神经网络,它通过寻找低层次的特征,如边缘和曲线,然后用一系列的卷积计算得到一个更抽象的概念。
卷积神经网络往期博客
为何不用传统的神经网络来做图像处理,而要使用复杂的
卷积操作
?
答案是
前者的算力不够
,传统的神经网络,各个神经元都是全连接的,输入节点较多,计算量大。而卷积神经网络
可经过
卷积、池化、权值共享
等操作,大大缩减训练过程中的参数量
。——本质是对计算机
算力的一种妥协
。
主流的卷积神经网络包含以下三层结构:
①卷积层
。网络核心,利用一个局部区域(数学矩阵/卷积核)去扫描整个图像进行卷积计算。实际是个滤波器,不同的滤波器提取出图像的不同特征,并增强原始图像信号的某些特征,减少噪声的干扰。
每层不同的滤波器(卷积层)提取不同的特征,最后组合到一起,
如数字识别,某个卷积核提取“一”,另一个卷积核提取“|”,那么这个数字很有可能为“7”。
减少参数:
卷积操作实际在提取一个个局部信息,能局部感知(局部连接),
局部感知
可减少用于计算的参数。
为了进一步减少参数,在局部感知时,
同一个卷积核针对不同的图像区域具有相同功能,即卷积核在一个区域提取到的特征也适用于其他区域
;数学上体现在,
卷积核用
相同的权值
处理不同输入层的神经元连接上——
权值共享
,可有效减少参数量。
此外卷积操作还可虚化、锐化、营造艺术氛围等操作!
②池化层
。又叫
下采样层
,用于压缩数据,降低数据维度。
通常每个卷积层后面都会接一个池化层,以
压缩原来卷积层的输出矩阵大小
。常见的池化操作又
最大池化
和
平均池化
,最大池化是在一个给定区域中求出最大值,平均池化是取平均值,一般取整。
池化层提高了模型的健壮性,将准确描述变为概略描述。对图像做了模糊操作(打“马赛克”),势必丢失一部分信息,
可在一定程度上
防止模型过拟合
,不影响图像整体信息的获取
!
“卷积”+“池化”
会让图像识别具有“
平移不变性
”
——即使图像被平移,卷积保证仍然能检测到它的特征,池化则尽可能地保证表达一致(即平移后图像经过卷积操作得到矩阵可能与之前稍有差别,池化这一步尽可能“修正”这一差别“)!
③全连接层
。它
和
普通神经网络中的隐藏层
的功能相似
,主要是
对提取的特征进行
非线性组合
以得到输出。
实现对原始输入对象的最后把关,完成数据分类预测。
常见的
卷积神经网络连接方式
是:
输入层后接多个卷积层和池化层,其中卷积层和池化层交替连接,最后接全连接层,最后接输出层。
3、循环神经网络:模拟记忆
①循环神经网络
传统神经网络
和
卷积神经网络
都只会处理当下输入的数据
,从模型结构上
都属于
基于空间
的网络结构模型,并
没考虑时间维度
。
但是有些问题与时间也有关系,前后发生的事情具有关联,于是人们期望设计一种具有”
记忆“功能
的
算法模型——
循环神经网络
。
“灾难性忘却”
难题:技术角度要使神经网络具有记忆力是困难的,对于原来设计的网络结构,其一旦接受到新的信号输入,网络会随之做出反馈,更新神经元之间的状态,这时就必须保留旧的关联特性,但这样的
计算次数越多,要被保留的信息越多
。
循环神经网络
特点
:网络的输出结果不仅和当前的输入有关,还和过往的输出有关。模型结构上,
允许节点连接为
有向环
,在传统的前馈神经网络中增加了
反馈连接
。
——这与人类大脑记忆的工作机制非常类似。
如下图所示,循环神经网络的
各个时刻
共享同一个参数矩阵
(即权重W)
,它在T+1时刻的状态Y,取决于T时刻的状态Y和T+1时刻的输入X。具体来说,T+1时刻的状态Y,
是由参数矩阵W先乘以T时刻的状态Y与T+1时刻的输入X的
联合向量
,再经过一个提前定义好的激活函数,最终得到的向量结果。
循环神经网络
擅长处理
时间序列数据
,也可建立不同时段数据之间的依赖关系
,所以也常用于
自然语言的处理,
如典型的诗词接龙。它有不同的结构类型,
如
Elman网络
和
Jordan网络
,不同类型网络的主要差别是
隐藏层的设计
上。
除此之外有的网络既与过去的状态有关,也与未来的状态有关,即
双向循环
模式。
由于模型在数学上的限制,
只能做短暂记忆
,为了解决此问题也
提出了其他网络,最典型的属
长短时记忆(LSTM)
网络。
②长短时记忆网络(LSTM)
相较于传统的循环神经网络,
LSTM有效
解决了
梯度消失
的问题
。循环神经网络依靠反向传播的相关算法来修正权重,但
当网络
层数过多
或者关联事件
时间间隔过长
,修正的效果就可能变得无限小(
梯度消失
)或无限大(梯度爆炸)
,尤其梯度消失会导致模型失效。LSTM做法是,在原来的神经元上增加一套控制机制,它可以让网络
选择性地长期保存某些状态。
生物学角度,记忆实质是一种需要能量的生物运算,大脑平日不会记忆所有事情,它会选择性遗忘和记忆,实质上是一种生物自我保护机制。LSTM就是模拟此种机制!
循环神经网络只有1个参数矩阵,而LSTM网络有4个,多出的3个参数矩阵就是长LSTM网络用于控制的3个“门”。
“门”
是一种形象的比喻,
算法中实际是一个全连接的网络层
,它的
输入是一个矩阵向量,输出是一个介于0和1之间的实数向量
,简单来说“门”可以有选择地让信息通过。
LSTM网络用一些
称为记忆块的子网络
来
替代
循环神经网络的
隐藏节点
,记忆块的网络结构中有一个基本单元,相当于记忆细胞,可存储是一个时刻的状态。相较于循环神经网络,LSTM多了一条“传送带”,可让过去的信息很容易地传送到下一时刻,以实现更长时间的记忆。
信息的写入和读取时会受到不同“门”的控制。
如下图,LSTM网络拥有
输入门、遗忘门
和
输出门
:
①输入门
。设定
一个阈值来控制输入
,输入门是
上一个状态输出和当前状态输入的函数
,决定了前一个长期记忆多大程度被保留在当前记忆中。
②遗忘门
。让网络能够记忆和忘记一些数据,它控制当前时刻的状态,并
确认它是否可以存入长期记忆
。遗忘门是
上一个状态输出和当前状态输入的函数
。如果它的某个维度值是0,说明输入向量中对应元素不能通过,输出就是0;反之若某个维度值为1,能通过,输出是原始数值。
有了输入门和遗忘门,就可以得到当前记忆的状态,首先在过去的记忆中,有一部分信息需要被“遗忘”,同时它又要增加新的信息,也就是对当前状态输入进行处理后得到的信息。
③输出门
。设定
一个阈值来控制输出
,
决定了当前记忆状态是否可以成为一个长期记忆
,作为模型的输出。
如下图所示,长短时记忆网络通过3个可以开关的“门”处理网络中的记忆和遗忘问题。简单来说,这三个门控制了在过去、现在、将来状态中有多少信息需要被“记忆”,有多少信息可以被“遗忘”。
4、强化学习
强化学习
也称
增强学习
,塞缪尔的跳棋程序是强化学习的雏形。持有强化学习观点的人工智能派称为
行为主义
,有别于之前的符号主义和连接主义,
行为主义对智能有不同的理解——只能不需要知识、表示和推理,模拟智能的
关键在于采取行动并于外界环境交互
。
强调的是行为与反馈之间的关系,尝试解决有关交互性和决策性的数学问题。
这里的难点在于,通常反馈都有延时,如下棋时只有比赛结束,才能知道输还是赢,那么胜利应该归功于之前若干步棋的哪些步骤?输了又该如何反思?强化学习擅长解决这些问题,它给出了一种
解决贡献权重分配问题的
计算方法。
①强化学习的控制论
20世纪三四十年代,受心理学成果启发维纳等建立了
控制论
,与香农信息论、贝塔朗菲的系统论并称20世纪科学技术发展的“三论”。人工智能技术的发展很大程度上受到这些基础理论的影响,
强化学习的设计思想
有一部分源于控制论。
控制论的核心思想是,想要构建一个控制系统,就要获得每次输入后的反馈,并通过一种
反馈回路
或机制来不断修正这个控制系统。
强化学习的构建也是一个
闭环
的控制系统,它通过不断地与环境交互产生动态数据,并通过偏差修正和反馈回路,最终让模型找到最佳策略
。
②强化学习的反馈机制
强化学习的
关键策略
是
通过行动不断与环境交互,并获得奖惩反馈
。比如让计算机学习走出迷宫的策略,或者解决机器人在斜坡稳定行走的问题,当计算机行动后就会获得与外界交互的反馈数据。——
与监督学习、无监督学习不同的是,反馈回来的数据是
通过交互
不断产生的,且是
动态的
。
无数次迭代后,计算机积累了大量的行动和状态数据,这些数据最终让计算机获得执行某项任务的最佳策略。
反馈包括
正向反馈(奖励)
和
负向反馈(惩罚)
,通常正确的决定迟早会带来奖励,错误的决定迟早会受到惩罚。例如让一台智能汽车通过强化学习的方式自己学会停车到指定车位,就可以设置这样的反馈机制——当汽车靠近目标车位时,获得奖励(加分),发生碰撞时,得到惩罚(扣分)。这样大量学习和训练后,汽车就会避开障碍物的情况下接近目标车位。
强化学习中,
只有在奖励之前发生的状态才被认为与奖励有关(惩罚同理),越早的状态对当前回报的影响越小
。
同时当前时刻的回报不能只在当前时刻做出判断,因为在很多情况下,当前时刻的某个状态或动作会影响很长一段时间之后的结果。反映到
数学上
,即
当前时刻的回报由未来各个时刻的累积反馈值得到,并且这些反馈值都会乘以一个随时间变化的衰减系数
——也就是
当前时刻的回报是未来各个时刻反馈的加权求和。
③马尔可夫决策过程
马尔可夫决策过程
是强化学习的
理论基石
,也是一个
通用框架
!
马尔可夫性质
:一个事件的下一个状态只与当前状态有关,与过去的所有状态无关——即一个系统无论初始状态如何,都会收敛于某个特定的状态,且该状态与历史状态无关。
我们把具有马尔可夫性质的随机过程称为马尔可夫过程,在马尔可夫过程的基础上,如果把强化学习过程中的动作和奖励也纳入考虑,就得到一个马尔可夫决策过程!
马尔可夫决策过程需要
定义以下变量
:
①一个有限状态集
。它是智能体所有状态的集合。
②一个有限行动集
。它是智能体可以采取哪些行动的集合。
③状态转移矩阵
。它表示前后两个状态有
多大概率会发生转移
。注意:当智能体在某个状态下执行了某个行动后,它的状态更新受到两部分因素的影响——
一是
某个行动,通常由基于概率分布的行动策略决定
;
二是
外部环境的随机变化
。这里的状态转移考虑的是环境的随机性。
④反馈函数
。它
定义了
采取行动后会得到多大的
奖励或惩罚
。该函数定义的好坏直接影响强化学习的结果。
⑤折扣因子
。即
计算回报要用到的
衰减系数
。因为未来具有不确定性,我们对未来的奖励要打折扣,即离现在越远,价值就越小。
强化学习的目的是根据给定的马尔可夫决策过程,让行动的回报价值最大,也就是寻找最优策略。
数学上
,该策略
是一个关于状态和行为的
映射矩阵
,矩阵中存储的都是
概率值
——也就是说,策略给出了当前状态下具体执行各项行动的概率,比如执行行动A的概率是90%,执行行动B的概率是10%。最终执行哪个行动,由智能体根据概率来决定。
为什么要用概率表示?
因为策略的执行
需要把不确定性纳入考量
,这样智能体能在采取行动时做出一些尝试性的探索,也能增强模型的
健壮性
和
抗干扰能力
。尤其是与人博弈时,确定的策略可能会被对手发现规律,采用
具有一定不确定性的策略更能增强胜率
。
有了马尔可夫决策过程思想,可完成强化学习的建模过程,
随后需要使用一系列
数学方法来求解
这个强化学习过程。
如可直接寻找基于概率的行动策略(如策略网络),也可用函数来评价当前状态下每个行动的价值和收益(如深度Q网络)。
不展开讨论。。。
④强化学习的重要地位
强化学习研究的是关于策略优化问题,如
下棋(AlphaGo核心技术)、博弈、打游戏、汽车驾驶、机器人动作模仿等
。严格说,
强化学习并不等同于深度学习
,一些强化学习算法与值函数逼近、策略搜索算法有关,
并不一定都是深度学习算法。
强化学习被认为是最有可能实现通用人工智能的方法,AlphaGo项目主要负责人大卫.西尔弗认为:
强化学习+深度学习=人工智能!
Yann Lecun 曾通过一个“黑森林蛋糕”的比喻来形容他所理解的监督学习、无监督学习和强化学习之间的关系:
如果把机器学习视作一个黑森林蛋糕,那么纯粹的强化学习是蛋糕上不可或缺的樱桃,只需要几比特样本量;
监督学习是蛋糕外层的糖衣,需要10到10000比特的样本量;无监督学习则是蛋糕的主体,需要百万比特样本量
。但他强调樱桃是必须出现的配料,它是不可或缺的。
但是,强化学习也存在一些局限性,例如算法是通过最大化最终奖励来达到训练的目的,但并不是所有的激励函数都可以被精确定义——现实生活中的激励函数很难构建。例如汽车驾驶,你可找到如破坏车辆等的负向反馈,但是很难找到一个规范驾驶行为的正向奖励,更不用说找到衡量驾驶方式最优的方法。如果让AI只盯住一个目标,不择手段地去实现,则可能会发生有悖于设计初衷的事情!
往期精彩:
【AI底层逻辑】——篇章5(下):机器学习算法之聚类&降维&时间序列
【AI底层逻辑】——篇章3(下):信息交换&信息加密解密&信息中的噪声
【AI底层逻辑】——篇章3(上):数据、信息与知识&香农信息论&信息熵
【机器学习】——续上:卷积神经网络(CNN)与参数训练
【AI底层逻辑】——篇章1&2:统计学与概率论&数据“陷阱”
【AI底层逻辑】——篇章5(上):机器学习算法之回归&分类
任何一项技术的发展都不会一帆风顺,深度学习的发展也经历了“三起两落”!①第一代神经网络——单层感知器(MP)模型,感知器模型实际就是将神经元模型中的激活函数作为符号函数,写成向量形式,即它简洁且功能强大,可以实现自我迭代,只要有足够数量的样本,感知器模型就能找到一组合适的权重。但存在一个致命缺陷——无法解决“异或”问题“,即意味着只能作线性分割任务,无法很好解决非线性问题!
1 人工智能
1956年夏季,在美国的达特茅斯学院中, John McCarthy、Marvin Minsky、Claude Shannon、Allen Newel、Herbert Simon等科学家聚在一起,共同研究和探讨用机器模拟智能的一系列有关问题,并首次提出了“人工智能”这一术语,它标志着“人工智能”这门新兴学科的正式诞生。
人工智能是计算机科学的一个分支,它试图了解智能的实质,并生产出一种新的能以与人类智能相似的方式做出反应的智能机器。人工智能是研究使计算机来模拟人的某些思维过程和智能行为的学科,
前言:人工智能机器学习有关算法内容,请参见公众号“科技优化生活”之前相关文章。人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类。今天我们重点探讨一下循环神经网络(RNN)算法。循环神经网络(RNN)现已成为国际上神经网络研究的重要对象之一。它是一种节点定向连接成环的人工神经网络,初由Jordan,Pineda.Williams,Elman等于上世纪80年代末提出的一种神经网络结构模型。引领循环神经网络RNN研究的主要是JuergenSchmidhuber和他的学生——其中包括SeppHochreiter,他发现了高深度网络所遇到的梯度消失问题,后来又发明了长短期记忆(LSTM)循环
机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法。这里我们将为您总结一下常见的机器学习算法,以供您在工作和学习中参考。机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的类似性。根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。在机器学习领域,有几种主要的学习方式。将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合
1.1 人工智能
诞生:人工智能这个学科的诞生有着明确的标志性事件,就是1956年的达特茅斯(Dartmouth)会议。在这次会议上,“人工智能” 被提出并作为木研究领域的名称。
人工智能=计算机控制+智能行为;
人工智能就是要让机器的行为看起来就像是人所表现出的智能行为一样。 ——John McCarthy ( 1927-201
对于关注和分享TensorFlow深度学习算法设计的人工智能学习者来说,《深入理解人工智能算法设计》这本书是一本非常宝贵的学习资源。TensorFlow是一个开源的机器学习框架,它提供了丰富的工具和库,可以帮助开发者设计和训练高效的深度学习模型。
这本书对于TensorFlow深度学习的算法设计提供了详细、系统的解读,对于想要深入学习和掌握TensorFlow的人来说非常有帮助。书中包含了各种不同的算法设计案例,从基础的神经网络模型到复杂的深度学习网络,涵盖了各个方面的知识。
通过关注和分享《深入理解人工智能算法设计》这本书,可以帮助更多的人了解和学习TensorFlow深度学习的算法设计。同时,分享这本书也可以推广和宣传TensorFlow这个强大的工具,让更多的人受益于人工智能算法设计的知识。
为了方便更多人获取这本书,《深入理解人工智能算法设计》的PDF版本可以通过下载来获得。PDF格式的书籍可以在各种电子设备上阅读,包括电脑、平板和手机。通过下载PDF版本,学习者可以随时随地地查阅这本书,提高学习效率。
因此,我鼓励大家关注和分享《深入理解人工智能算法设计》这本书,通过深入学习TensorFlow深度学习的算法设计,提升自己在人工智能领域的技能和能力。同时,也希望更多人可以通过下载PDF版本的方式获取这本书,便捷地进行学习。