您好,欢迎访问三七文档
1、智能的定义现在假设宇宙还没有产生生命,我们来想象一个生存游戏。这个生存游戏就是躲避危险从而生存下来。但这时我们追加另一个规则,环境会变。即便个体非常幸运的产生了能够满足生存的关联f,也会在下一次环境改变之际化为无机物。如果还用随机生成的方式,生命永远只能在最初始的阶段停留片刻,无法进入下一个阶段。因此生命想要延续,就需要一种能力,可以适应变化的能力。Intelligenceistheabilitytoadapttochange.进化核心:繁殖、变异、筛选的动态循环关键在于,关联的更新速度环境的变化速度。刚才的描述是蛋白质层面上的低等智能,通过自我繁殖来进行进化。自然界无法瞬间产生特别复杂的功能,高等智能都是由低等智能迭代生成的。高等智能最具代表性的就是可以思考。但是思考的原理实在难以解读。还是用老方法,转而问为什么会进化出意识允许我们思考,它能够解决什么问题?因为环境的变化是随机的,所以进化并没有方向,但是却有增加差异性的趋势。通过自我复制的方式,能够产生的差异性还是较弱。所以自然界慢慢的开始形成了有性繁殖,两个不同的个体进行交配,增加子代的差异性。但是有性繁殖使得大范围移动成为了必然需求。环境会随着移动而变化,个体在上一环境中通过自然学习所学习到的关联,在下一个环境并不适用。需要新的学习方式:•生长周期:无法自然选择试错•大脑模拟:预测未来事件•神经网络:寻找过去事件到未来事件的关联f(任意两个空间)2、神经网络2.1、神经元2、神经网络2.1、基本变换:层神经网络是由一层一层构建的,那么每层究竟在做什么?数学式子:𝑦=𝑎𝑊∙𝑥+𝑏其中𝒙是输入向量,𝒚是输出向量,𝒃是偏移向量,W是权重矩阵,a()是激活函数。每一层仅仅是把输入𝒙经过如此简单的操作得到𝒚。数学理解:通过如下5种对输入空间(输入向量的集合)的操作,完成输入空间—输出空间的变换(矩阵的行空间到列空间)。①升维/降维②放大/缩小③旋转④平移⑤弯曲这5种操作中,1,2,3的操作由𝑾∙𝒙完成,4的操作是由+𝒃完成,5的操作则是由a()来实现。每层神经网络的数学理解:用线性变换跟随着非线性变化,将输入空间投向另一个空间。例子:𝒙是二维向量,维度是碳原子和氧原子的数量[C;O],数值且定为[1,1],若确定y是三维向量,就会形成如下网络的形状(神经网络的每个节点表示一个维度)。通过改变权重的值,可以获得若干个不同物质。右侧的节点数决定了想要获得多少种不同的新物质。(矩阵的行数)每层神经网络的物理理解:通过现有的不同物质的组合形成新物质。2.2、理解视角现在我们知道了每一层的行为,但这种行为又是如何完成识别任务的呢?2.2.1、数学视角:“线性可分”二维情景:平面的四个象限也是线性可分。但上图的红蓝两条线就无法找到一超平面去分割。神经网络的解决方法是用所说的5种空间变换操作转换到另外一个空间下。比如经过放大、平移、旋转、扭曲原二维空间后,在三维空间下就可以成功找到一个超平面分割红蓝两线(同SVM的思路一样)。上面是一层神经网络可以做到的,如果把一层神经网络的输出当做新的输入再次用这5种操作进行第二遍空间变换的话,网络也就变为了二层。设想网络拥有很多层时,对原始输入空间的“扭曲力”会大幅增加,如下图,最终我们可以轻松找到一个超平面分割空间。当然也有如下图失败的时候,关键在于“如何扭曲空间”。所谓监督学习就是给予神经网络网络大量的训练例子,让网络从训练例子中学会如何变换空间。每一层的权重W就控制着如何变换空间,我们最终需要的也就是训练好的神经网络的所有层的权重矩阵。线性可分视角:神经网络的学习就是学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。增加节点数:增加维度,即增加线性转换能力。增加层数:增加激活函数的次数,即增加非线性转换次数。2.2.2、物理视角:“物质组成”回想上文由碳氧原子通过不同组合形成若干分子的例子。从分子层面继续迭代这种组合思想,可以形成DNA,细胞,组织,器官,最终可以形成一个完整的人。不同层级之间都是以类似的几种规则再不断形成新物质。例子:人脸识别物质组成视角:神经网络的学习过程就是学习物质组成方式的过程。增加节点数:增加同一层物质的种类,比如118个元素的原子层就有118个节点。增加层数:增加更多层级,比如分子层,原子层,器官层,并通过判断更抽象的概念来识别物体。2.3、神经网络的训练神经网络的学习过程就是学习控制着空间变换方式(物质组成方式)的权重矩阵W,那如何学习每一层的权重矩阵W呢?2.3.1、激活函数激活函数的主要作用是提供网络的非线性建模能力。如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的。因此也可以认为,只有加入了激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。1.可微性:当优化方法是基于梯度的时候,这个性质是必须的。2.单调性:当激活函数是单调的时候,单层网络能够保证是凸函数。3.输出值的范围:当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效。Sigmoid此外,sigmoid函数的输出均大于0,使得输出不是0均值,这称为偏移现象,这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。sigmoid是使用范围最广的一类激活函数,具有指数函数形状,它在物理意义上最为接近生物神经元。此外,(0,1)的输出还可以被表示作概率,或用于输入的归一化,代表性的如Sigmoid交叉熵损失函数。然而,sigmoid也有其自身的缺陷,最明显的就是饱和性。软饱和激活函数:硬饱和激活函数:由于在后向传递过程中,sigmoid向下传导的梯度包含了一个𝑓′(𝑥)因子,因此一旦输入落入饱和区,𝑓′(𝑥)就会变得接近于0,导致了向底层传递的梯度也变得非常小。此时,网络参数很难得到有效训练。这种现象被称为梯度消失。一般来说,sigmoid网络在5层之内就会产生梯度消失现象。Tanhtanh也是一种非常常见的激活函数。与sigmoid相比,它的输出均值是0,使得其收敛速度要比sigmoid快,减少迭代次数。然而,从途中可以看出,tanh一样具有软饱和性,从而造成梯度消失。ReLU可以看到,当x0时,ReLU硬饱和,而当x0时,则不存在饱和问题。所以,ReLU能够在x0时保持梯度不衰减,从而缓解梯度消失问题。然而,随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。这种现象被称为“神经元死亡”。ELU融合了sigmoid和ReLU,左侧具有软饱和性,右侧无饱和性。右侧线性部分使得ELU能够缓解梯度消失,而左侧软饱能够让ELU对输入变化或噪声更敏感。ELU的输出均值接近于零,所以收敛速度更快。Maxout这个激活函数有点大一统的感觉,因为maxout网络能够近似任意连续函数,且当w2,b2,…,wn,bn为0时,退化为ReLU。Maxout能够缓解梯度消失,同时又规避了ReLU神经元死亡的缺点,但增加了参数和计算量。2.3.2、损失函数我们希望网络的输出尽可能的接近真正想要预测的值。那么就可以通过比较当前网络的预测值和我们真正想要的目标值,再根据两者的差异情况来更新每一层的权重矩阵。因此就需要先定义“如何比较预测值和目标值的差异”,这便是损失函数或目标函数,用于衡量预测值和目标值的差异的方程。损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是指经验风险损失函数加上正则项。通常表示为如下:①0-1损失函数②绝对值损失函数③log对数损失函数逻辑回归算法④平方损失函数⑤指数损失函数AdaBoost算法⑥Hinge损失函数y是预测值,在-1到+1之间,t为目标值(-1或+1)。多用于SVM。3.2.3、梯度下降损失函数的输出值(𝑙𝑜𝑠𝑠)越高表示差异性越大。那神经网络的训练就变成了尽可能的缩小𝑙𝑜𝑠𝑠的过程。所用的方法是梯度下降:通过使loss值向当前点对应梯度的反方向不断移动,来降低𝑙𝑜𝑠𝑠。一次移动多少是由学习速率来控制的。梯度:在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数𝑓(𝑥,𝑦),分别对𝑥,𝑦求偏导数,求得的梯度向量就是(𝜕𝑓/𝜕𝑥,𝜕𝑓/𝜕𝑦)𝑇,简称𝑔𝑟𝑎𝑑𝑓(𝑥,𝑦)。对于在点(𝑥0,𝑦0)的具体梯度向量就是(𝜕𝑓/𝜕𝑥0,𝜕𝑓/𝜕𝑦0)𝑇,如果是3个参数的向量梯度,就是(𝜕𝑓/𝜕𝑥,𝜕𝑓/𝜕𝑦,𝜕𝑓/𝜕𝑧)𝑇以此类推。梯度的意义:从几何意义上讲,梯度就是函数变化增加最快的地方。梯度下降:比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。梯度下降的问题•梯度的计算:如何快速计算梯度+如何更新隐藏层的权重反向传播算法•局部极小值梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。解决办法:1.调节步伐:调节学习速率,使每一次的更新“步伐”不同。(1)随机梯度下降(SGD):每次只更新一个样本所计算的梯度(2)小批量梯度下降(MGD):每次更新若干样本所计算的梯度的平均值(3)动量(Momentum):不仅仅考虑当前样本所计算的梯度,还考虑到Nesterov动量(4)Adagrad、RMSProp、Adadelta、Adam:这些方法都是训练过程中依照规则降低学习速率,部分也综合动量2.优化起点:合理初始化权重、预训练网络,使网络获得一个较好的“起始点”。常用方法有:高斯分布初始权重(Gaussiandistribution)均匀分布初始权重(Uniformdistribution)Glorot初始权重、He初始权重稀疏矩阵初始权重(sparsematrix)3.2.4、具体流程①收集训练集:也就是同时有输入数据以及对应标签的数据。②设计网络结构:确定层数、每一隐藏层的节点数和激活函数,以及输出层的激活函数和损失函数。③数据预处理:将所有样本的输入数据和标签处理成能够使用神经网络的数据,标签的值域符合激活函数的值域。④权重初始化:每层的权重在训练前不能为空,要初始化才能够计算损失值从而来降低。⑤训练网络:训练过程就是用训练数据的输入经过网络计算出输出,再和标签计算出损失,再计算出梯度来更新权重的过程。⑥预测新值:训练过所有样本后,打乱样本顺序再次训练若干次。训练完毕后,当再来新的数据输入,就可以利用训练的网络来预测了。感知机(perceptron)是由两层神经元组成的结构,输入层用于接受外界输入信号,输出层(也被称为是感知机的功能层)就是M-P神经元。感知机能容易的实现逻辑与、或、非运算。一般的,对于给定训练集,所需的权重以及阈值都可以通过学习得到。感知器只能做简单的线性分类任务。4.1多层前馈神经网络要解决非线性可分问题,就要使用多层神经网络。最基础的多层神经网络就是多层前馈神经网络。4.2、BP算法多层网络的学习能力显然要比单层感知机强的多。但是简单的感知机学习就不够了,需要更强大的学习算法。不得不提其中最杰出、最成功的代表——误差逆传播(errorBackPropagation,简称BP)算法。其中输出层第𝑗个神经元的阈值用𝜃j表示,隐层第ℎ个神经元的阈值用𝛾h表示。假设隐层和输出层的激活函数都是𝑆𝑖𝑔𝑚𝑜𝑖𝑑函数。对训练样例(𝑥𝑘,𝑦𝑘),假定神经网络的输出为𝑦𝑘=(𝑦1𝑘,𝑦2𝑘,…,𝑦𝑙𝑘)
本文标题:深度学习-神经网络
链接地址:https://www.777doc.com/doc-2435383 .html