热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ANN:DNN结构演进History—LSTM_NN

前言语音识别和动作识别(Action、Activities)等一些时序问题,通过微分方式可以视为模式识别方法中的变长模式识别问题。语音识别的基元为音素、音节,字母

前言

          语音识别和动作识别(Action、Activities)  等一些时序问题,通过微分方式可以视为模式识别方法中的变长模式识别问题。语音识别的基元为音素、音节,字母和句子模式是在时间轴上的变长序列;Action的基元为Pose,action的识别为pose的时间序列模式。

         我们跟随时间的脚步,试图解释现在、理解过去、甚至预测未来........ 在概率分析的层面,RNN通过循环结构展开处理变长问题,对不同的长度训练不同的概率模型,并以参数的形式存储在网络中,成为天生适合处理时序分析的复杂模型。

多层网络

        一部分最成功的深度学习方法涉及到对人工神经网络的运用。人工神经网络受到了1959年由诺贝尔奖得主大卫·休伯尔(David H. Hubel)和托斯坦·威泽尔(Torsten Wiesel)提出的理论启发。休伯尔和威泽尔发现,在大脑的初级视觉皮层中存在两种细胞:简单细胞和复杂细胞,这两种细胞承担不同层次的视觉感知功能。受此启发,许多神经网络模型也被设计为不同节点之间的分层模型[12]

        福岛邦彦提出的新认知机引入了使用无监督学习训练的卷积神经网络。燕乐存将有监督的反向传播算法应用于这一架构[13]。事实上,从反向传播算法自20世纪70年代提出以来,不少研究者都曾试图将其应用于训练有监督的深度神经网络,但最初的尝试大都失败。赛普·霍克赖特(Sepp Hochreiter)在其博士论文中将失败的原因归结为梯度消失,这一现象同时在深度前馈神经网络和递归神经网络中出现,后者的训练过程类似深度网络。在分层训练的过程中,本应用于修正模型参数的误差随着层数的增加指数递减,这导致了模型训练的效率低下[14][15]

        赛普·霍克赖特和于尔根·施密德胡伯提出的长短期记忆神经网络(long short term memory,LSTM)[16]。2009年,在ICDAR 2009举办的连笔手写识别竞赛中,在没有任何先验知识的情况下,深度多维长短期记忆神经网络取得了其中三场比赛的胜利[17][18]

        斯文·贝克提出了在训练时只依赖梯度符号的神经抽象金字塔模型,用以解决图像重建和人脸定位的问题[19]

        参考文章:DNN结构演进之RNN   ,作为预备材料。   

摘要  

       RNN通过引入神经元定向循环用于处理边变长问题,由此被称为递归网络;       再通过其他神经元(如果有自我连接则包括自身)的输入和当前值的输入,进行加权求和(logit)之后重新计算出新的行为,保存之前记忆。     通过时间轴展开成类似于FNN的新构架,因此可以使用BP算法进行网络训练;       而根据时间展开长序列会产生极深FNN,容易产生梯度的消失与爆炸问题,因此引入了LSTM-长短期记忆,保持一个常数误差流,以此保证梯度的不会爆炸消失;       用于恒稳误差,通常使用一个门单元进行误差流控制。...

        最初的RNN并没有从反传函数的角度去考虑梯度消失问题,而是从结构上引入“直连”结构,冀希望于此从概率分析的角度来缓冲深度网络的参数反传的“消失”和“爆炸”问题。


LSTM网络

       原作者写的教程:http://people.idsia.ch/~juergen/lstm/sld001.htm
       下文是转自与百度贴吧的文章:http://tieba.baidu.com/p/3405569985                                               
       BPTT很好理解,说是RNN,其实可以理解为每层权重相同的 feed forward BP,每层都用时间点上的label来训练,每层的误差都反传,这样就还原为了标准BP网络
       

        然后就会面临BP网络的经典问题,即Exponential Error Decay,误差传4层就传没了(这是普遍的深度网络的梯度消失问题)!这个东西的具体解释见 Hochreiter,Bengio, Frasconi,(2001) Gradient flow in recurrent nets: The difficulty of learning long-term dependencies 。
        链接:http://citeseerx.ist.psu.edu/viewdoc/download;jsessiOnid=3D5F45337EDCE4B9A70877162000D39F?doi=10.1.1.24.7321&rep=rep1&type=pdf
                        


        为了解决这个问题而发明了LSTM,目的是为了将这些反传的误差保存起来( 类似于隔层网络直连,用于传递常数误差 ),它纯粹是为了解决BPTT中的 Exponential Error Decay 的问题,也能同时降低梯度爆炸的风险。


LSTM-Cell

       核心部件(下图红圆)叫做error carousel(误差传送带),就是一个最简单的RNN积分器;除了这部分以外还有两个网络来控制红色部分的输入输出,分别称为in和out,用来控制红色部分在何时存取动机。
      (摘自wikipedia:however, when error values are back-propagated from the output, the error becomes trapped in the memory portion of the block. This is referred to as an "error carousel", which continuously feeds error back to each of the gates until they become trained to cut off the value. Thus, regular backpropagation is effective at training an LSTM block to remember values for very long durations.)   


 感觉即是专门嫁接在BPTT网络中的用来存储长程(lag)误差的,由神经网络控制的存储设备.........(存储直连误差)..........

     

       一大堆LSTM可以共用一些 IN/OUT Gate

       

        在Time Series Prediction (如语音识别,reinforcement learning)中,LSTM中的IN gate神经网络需要识别出哪些时间窗上的表征是重要的(只有重要的特征误差才是值得保留的),然后把这些表征存到积分器里面;OUT gate神经网络需要识别出在哪些时间窗上需要输出这些存储的表征;仅此而已............



一个简单的例子

梯度爆炸/消失问题

      文章的第三部分简单分析了BPTT的梯度消失问题,具体细节要看他们之前的文章

      公式(1)的意思是,在时间t上的神经元u的误差,反传到时间t-q的神经元v上衰减了多少

      公式(2)是通式


从后面的分析可以看出,
      当这一坨大于1.0的时候,误差会随传播深度指数爆炸,导致神经网络权重震荡而无法收敛
  and

     而当这一坨小于1.0的时候,误差会指数衰减,导致神经网络参数反传更新极慢:
  and

后面更细节的分析我就不看了,其实了解到这里已经够了。以上是对BPTT的分析。

———...................———我是华丽的————.................————分割线————..................————


constant error flow
以下是LSTM的解决策略,使这一坨全都固定在1,这样就会出现一个constant error flow,作者称为“90年代最伟大的发现
and

积分得到这个:

and


因此输入输出函数必须是:f(x)=x。

虽然自己对自己的权重被封死了,但这样误差就能穿越时空往回传了,并且增加了IN和OUT两个网络来控制。
完毕..............
仅看LSTM的实施步骤是超级简单的,这些数学推倒只是告诉我们为什么要这样做......................

  

问题、疑问?


       好吧,终于算是认同这个模型了。从BPTT的角度来看,强行设定一些神经元的自连接权重为1 ,并取消和其它神经元的连接权重,使得他们的贡献相当于直接穿过时间作用到输出上,故误差反向传播时是一阶的,不存在衰减或爆炸问题。如果换种理解方式,这本质上是在用神经网络训练一个有限状态机,加入权重为1的积分器使得可以接受类似A*B*C....的正则语言,也就是说在关键字符中间插入若干任意字符不影响输出结果,故具有长时记忆效果

现在我还存有几点问题:
       1.那怎么训练呢?
       2.为什么我们不直接采用延时机制实现constant error flow?
             我的看法:延时和临时存储本质上是一样的,都是把历史数据直接当作当前数据输入,使得误差反向传播只是一阶。但临时存储是可以控制的,而延时长度暂时不知如何灵活控制。
       3.从有限状态机的角度来看,LSTM分辨一定的语言至少需要多少神经元?
       4.从动力系统的角度分析是否更简单?

2回复:
       2. 延时就是指net_j(t)=求和W_ijτ * x_i(t-τ) ;
       3. 不一定,比如要设计一个只需分辨是否1*0的状态机,*为任意字串,那么只许3个单元就可以了,而这样只需3个单元的状态机却可以识别任意有限长度的字串,所以并不是词向量维度越高需要越多的神经元。直观感觉是取决于需要分辨的字串总数(分类类别数),但又和字串之间的关联也有关,所以不知道怎么分析。
       4.看到一篇从动力系统分析TDNN的(就是2说的延时)paper,貌似不能用来分析LSTM= =。


3回复  :
       "延时的意思就是把时间当作空间处理?"--反正我也是这么理解的,按理说直接把时间当做空间处理不会有问题,但经过LSTM这个理论洗脑后我开始明白时间比空间更具有长程关联(跨度大的统计/重要特征-好吧,这词好像是我造的?),而且分布密度低,所以虽然TDNN也可以处理时间序列,但是为了密度极低的长程关联要花费的代价实在太高,而且随着跨度的增加要不停增加神经元(LSTM不一定,因为长程特征相比来讲极少,增加的神经元数不必正比于跨度的增加)。要弥补TDNN这一点也不是没有办法,粗略的想了想还是挺麻烦的。

注:
       说统计/重要特征,是因为LSTM貌似没有统计学习过程,而只有最小化误差的过程,我希望它能学到统计特征但事实上它只能学到用来减小误差的特征。但我觉得只需要在前面加DL即可,弥补它的统计能力,主要针对短程统计特征(好比图片中的小线条,边边角角)
..................................................


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • Visualizing and Understanding Convolutional Networks(ZFNet网络)论文阅读笔记
    VisualizingandUnderstandingConvolutionalNetworksZFNet网络架构论文阅读笔记2022.4.4论文地址https:arxiv ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • PRML读书会第十四章 Combining Models(committees,Boosting,AdaBoost,决策树,条件混合模型)...
    主讲人网神(新浪微博:豆角茄子麻酱凉面)网神(66707180)18:57:18大家好,今天我们讲一下第14章combiningmodel ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 大数据环境下的存储系统构建:挑战、方法和趋势
    大数据环境下的存储系统构建:挑战、方法和趋势陈游旻,李飞,舒继武清华大学计算机科学与技术系,北京100084摘要:互联网规模的迅速扩展促使 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
author-avatar
mobiledu2502922357
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有