目录
引入
一、深度学习算法
1、人工神经网络结构
2、卷积神经网络
3、循环神经网络:模拟记忆
①循环神经网络
②长短时记忆网络(LSTM)
4、强化学习
①强化学习的控制论
②强化学习的反馈机制
③马尔可夫决策过程
④强化学习的重要地位
往期精彩:
任何一项技术的发展都不会一帆风顺,深度学习的发展也经历了“三起两落”!
①第一代神经网络——单层感知器(MP)模型,感知器模型实际就是将神经元模型中的激活函数作为符号函数,写成向量形式,即
它简洁且功能强大,可以实现自我迭代,只要有足够数量的样本,感知器模型就能找到一组合适的权重。但存在一个致命缺陷——无法解决“异或”问题“,即意味着只能作线性分割任务,无法很好解决非线性问题!
②第二代神经网络——多层感知器(MLP)模型,采用Sigmoid函数进行非线性映射,解决了”异或问题“,难题在于如何训练复杂模型参数,辛顿提出反向传播算法(BP)。
但是随着层数变多,BP存在梯度消失等问题,深度学习算法陷入低谷期。而此期间决策树算法、支持向量机、AdaBoost模型等被提出,受到大力推崇!
③第三代神经网络——深度学习,2006年辛顿提出:先无监督学习以预训练方式初始化权重,再监督学习对权重进行训练微调,这样可减缓梯度消失问题,但仍不温不火!
直到2011年,ReLU激活函数被提出,该函数直观简洁地模拟了人脑对刺激信号的处理机制,从根本上区别于Sigmoid函数特性。
深度学习算法有很多种,还有很多变种算法和混合算法,这里只对一些主流的深度学习算法进行介绍。人脑神经元是人工神经网络的设计雏形,树突和轴突从细胞体中伸出,一个神经元有很多树突(输入),只有一个轴突(输出),神经元之间的连接部位称为突触(权重)!
一般分为输入层、隐藏层、输出层三个层级,输入输出层都只有一层,隐藏层可以有若干层,一般来说层数越多,模型越复杂性能越好!如下图,每一层的圆圈(节点)称为神经元,它获取前一层的所有神经元的输出值,按照特定的数学函数(激活函数)进行运算,并将输出结果传递给下一层。很多复杂的深度学习算法基本都是从这个网络结构派生和演化而来的。——将所有输入值乘以各自权重后线性求和,再用激活函数计算得到输出。
激活函数很多,以前常使用的线性激活函数基本都弃用了,取而代之的是Sigmoid、ReLU等非线性激活函数。Sigmoid函数是一个S型函数,无论输入数据是多少,该函数都会把它映射成一个0到1之间的数。ReLU函数,如果输入是负数,则输出为0;输入是非负数,则输出等于输入——即没达到特定阈值时(实际值-阈值为负数),不会对刺激做出任何反应(输出为0);只有受到达到特定阈值的刺激之后,神经元才会做出反应,并且输出神经信号强度与输入刺激强度呈线性增长。
网络设计:要构建一个神经网络,需要提前定义网络结构,如神经元个数和网络层数,这里涉及两组参数。一组是模型训练得到的参数(如神经元的连接权重);另一组是定义网络结构的参数(如神经元个数和网络层数),后者是在搭建网络之前就要手工设置的参数(超参数)。——定义超参数没有标准方法,需要大量实践。
优化策略:需建立一个能够量化权重好坏的函数——代价函数。当有一组权重时,代价函数要计算的是神经网络基于这组权重得到输出和真实值之间的误差,只要误差足够小,这组权重就足够好!常用的一种能最小化代价函数的过程为梯度下降法,(梯度是向量或函数在该点处变化最快的方向)。
有了优化目标(代价函数)和优化方法(梯度下降法),接下来需要考虑优化步骤——难点是虽能方便地计算出输出值和真实值之间的误差,但是这个误差应该如何修正并分配到网络各层的权重上?
直到辛顿提出反向传播算法(BP算法博客),它计算网络每个权重的梯度,从误差已知的输出层开始,逐层计算上一层权重的梯度,然后进行修正。
1962年神经学家发现生物的视觉神经会对视觉刺激进行逐层处理,然后理解复杂的视觉特征,形成视觉认知。1989年Yann LeCun等受此启发,提出一种善于处理图像信息的网络结构——卷积神经网络,它通过寻找低层次的特征,如边缘和曲线,然后用一系列的卷积计算得到一个更抽象的概念。卷积神经网络往期博客
为何不用传统的神经网络来做图像处理,而要使用复杂的卷积操作?答案是前者的算力不够,传统的神经网络,各个神经元都是全连接的,输入节点较多,计算量大。而卷积神经网络可经过卷积、池化、权值共享等操作,大大缩减训练过程中的参数量。——本质是对计算机算力的一种妥协。
主流的卷积神经网络包含以下三层结构:
①卷积层。网络核心,利用一个局部区域(数学矩阵/卷积核)去扫描整个图像进行卷积计算。实际是个滤波器,不同的滤波器提取出图像的不同特征,并增强原始图像信号的某些特征,减少噪声的干扰。每层不同的滤波器(卷积层)提取不同的特征,最后组合到一起,如数字识别,某个卷积核提取“一”,另一个卷积核提取“|”,那么这个数字很有可能为“7”。
减少参数:卷积操作实际在提取一个个局部信息,能局部感知(局部连接),局部感知可减少用于计算的参数。为了进一步减少参数,在局部感知时,同一个卷积核针对不同的图像区域具有相同功能,即卷积核在一个区域提取到的特征也适用于其他区域;数学上体现在,卷积核用相同的权值处理不同输入层的神经元连接上——权值共享,可有效减少参数量。
此外卷积操作还可虚化、锐化、营造艺术氛围等操作!
②池化层。又叫下采样层,用于压缩数据,降低数据维度。通常每个卷积层后面都会接一个池化层,以压缩原来卷积层的输出矩阵大小。常见的池化操作又最大池化和平均池化,最大池化是在一个给定区域中求出最大值,平均池化是取平均值,一般取整。
池化层提高了模型的健壮性,将准确描述变为概略描述。对图像做了模糊操作(打“马赛克”),势必丢失一部分信息,可在一定程度上防止模型过拟合,不影响图像整体信息的获取!
“卷积”+“池化”会让图像识别具有“平移不变性”——即使图像被平移,卷积保证仍然能检测到它的特征,池化则尽可能地保证表达一致(即平移后图像经过卷积操作得到矩阵可能与之前稍有差别,池化这一步尽可能“修正”这一差别“)!
③全连接层。它和普通神经网络中的隐藏层的功能相似,主要是对提取的特征进行非线性组合以得到输出。实现对原始输入对象的最后把关,完成数据分类预测。
常见的卷积神经网络连接方式是:输入层后接多个卷积层和池化层,其中卷积层和池化层交替连接,最后接全连接层,最后接输出层。
传统神经网络和卷积神经网络都只会处理当下输入的数据,从模型结构上都属于基于空间的网络结构模型,并没考虑时间维度。但是有些问题与时间也有关系,前后发生的事情具有关联,于是人们期望设计一种具有”记忆“功能的算法模型——循环神经网络。
“灾难性忘却”难题:技术角度要使神经网络具有记忆力是困难的,对于原来设计的网络结构,其一旦接受到新的信号输入,网络会随之做出反馈,更新神经元之间的状态,这时就必须保留旧的关联特性,但这样的计算次数越多,要被保留的信息越多。
循环神经网络特点:网络的输出结果不仅和当前的输入有关,还和过往的输出有关。模型结构上,允许节点连接为有向环,在传统的前馈神经网络中增加了反馈连接。——这与人类大脑记忆的工作机制非常类似。
如下图所示,循环神经网络的各个时刻共享同一个参数矩阵(即权重W),它在T+1时刻的状态Y,取决于T时刻的状态Y和T+1时刻的输入X。具体来说,T+1时刻的状态Y,是由参数矩阵W先乘以T时刻的状态Y与T+1时刻的输入X的联合向量,再经过一个提前定义好的激活函数,最终得到的向量结果。
循环神经网络擅长处理时间序列数据,也可建立不同时段数据之间的依赖关系,所以也常用于自然语言的处理,如典型的诗词接龙。它有不同的结构类型,如Elman网络和Jordan网络,不同类型网络的主要差别是隐藏层的设计上。除此之外有的网络既与过去的状态有关,也与未来的状态有关,即双向循环模式。
由于模型在数学上的限制,只能做短暂记忆,为了解决此问题也提出了其他网络,最典型的属长短时记忆(LSTM)网络。
相较于传统的循环神经网络,LSTM有效解决了梯度消失的问题。循环神经网络依靠反向传播的相关算法来修正权重,但当网络层数过多或者关联事件时间间隔过长,修正的效果就可能变得无限小(梯度消失)或无限大(梯度爆炸),尤其梯度消失会导致模型失效。LSTM做法是,在原来的神经元上增加一套控制机制,它可以让网络选择性地长期保存某些状态。
生物学角度,记忆实质是一种需要能量的生物运算,大脑平日不会记忆所有事情,它会选择性遗忘和记忆,实质上是一种生物自我保护机制。LSTM就是模拟此种机制!
循环神经网络只有1个参数矩阵,而LSTM网络有4个,多出的3个参数矩阵就是长LSTM网络用于控制的3个“门”。“门”是一种形象的比喻,算法中实际是一个全连接的网络层,它的输入是一个矩阵向量,输出是一个介于0和1之间的实数向量,简单来说“门”可以有选择地让信息通过。
LSTM网络用一些称为记忆块的子网络来替代循环神经网络的隐藏节点,记忆块的网络结构中有一个基本单元,相当于记忆细胞,可存储是一个时刻的状态。相较于循环神经网络,LSTM多了一条“传送带”,可让过去的信息很容易地传送到下一时刻,以实现更长时间的记忆。信息的写入和读取时会受到不同“门”的控制。
如下图,LSTM网络拥有输入门、遗忘门和输出门:
①输入门。设定一个阈值来控制输入,输入门是上一个状态输出和当前状态输入的函数,决定了前一个长期记忆多大程度被保留在当前记忆中。
②遗忘门。让网络能够记忆和忘记一些数据,它控制当前时刻的状态,并确认它是否可以存入长期记忆。遗忘门是上一个状态输出和当前状态输入的函数。如果它的某个维度值是0,说明输入向量中对应元素不能通过,输出就是0;反之若某个维度值为1,能通过,输出是原始数值。
有了输入门和遗忘门,就可以得到当前记忆的状态,首先在过去的记忆中,有一部分信息需要被“遗忘”,同时它又要增加新的信息,也就是对当前状态输入进行处理后得到的信息。
③输出门。设定一个阈值来控制输出,决定了当前记忆状态是否可以成为一个长期记忆,作为模型的输出。
如下图所示,长短时记忆网络通过3个可以开关的“门”处理网络中的记忆和遗忘问题。简单来说,这三个门控制了在过去、现在、将来状态中有多少信息需要被“记忆”,有多少信息可以被“遗忘”。
强化学习也称增强学习,塞缪尔的跳棋程序是强化学习的雏形。持有强化学习观点的人工智能派称为行为主义,有别于之前的符号主义和连接主义,行为主义对智能有不同的理解——只能不需要知识、表示和推理,模拟智能的关键在于采取行动并于外界环境交互。强调的是行为与反馈之间的关系,尝试解决有关交互性和决策性的数学问题。
这里的难点在于,通常反馈都有延时,如下棋时只有比赛结束,才能知道输还是赢,那么胜利应该归功于之前若干步棋的哪些步骤?输了又该如何反思?强化学习擅长解决这些问题,它给出了一种解决贡献权重分配问题的计算方法。
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(上):机器学习算法之回归&分类