共计 895 个字符,预计需要花费 3 分钟才能阅读完成。
研究这RNN,还是要为后面的Attention相关服务的,以前的工程里面也用过对特征使用Attention机制,但是业务场景只是使用而已,最近要去研究NLP相关通用能力,与NLP相关的基础算法都要去了解一下。
这个也不是RNN的基础详细解释,毕竟网上的文章都是随处可以看到了,这个也是自己到处看看然后自己做个简单的笔记记录吧!
RNN循环神经网络首先跟时间序列相关,后面与前面相关,类似马尔科夫模型一样。简单的RNN模型则只考虑历史信息。但是你也会了解BRNN,双向RNN网络。
第二点就是参数共享,就是每一个时间步其实用的都是共用权值,这个权值共享又会联想到CNN的权值共享,说起来深度学习的模型其实很多时候从某些角度去看这些问题都会发现其他都是或多或少都会有一些概念都是相同的。
下面给一张之前看吴恩达教授的深度学习模型看到的RNN模型的例子
这上面的\(x^{<1>}\)输入就是句子中的单词,1,2,3。。。表示不同的时刻,对于网络的第一个输入\(a^{0}\)是一个随机初始化的参数,一般情况下都是初始化为0向量,那么 Y输出的含义是什么呢。
比我我们要做一个命名实体识别,这个是NLP一个重要的研究方向,英文简称NER,那么你的输出就是与label标签(地点\人物\…)等等计算相应的loss,如果你的模型够好,把每一个都正确识别出来了,那么你的loss就为0。
这样大致将前向传播与loss计算说清楚 了,反向传播其实跟一般的网络都是一样的,就是理解起来有点别扭,因为看起来是时间穿越的方式反向传播进行梯度传播实现权值更新。所有它的反向传播叫BPTT,后面的TT就是through time,就是时间穿越的意思。
扯远一点,一般模型训练的时候都不希望出现数据穿越的现象。
上面说的都是基本的RNN概念,RNN有很多不同的类型,其实本质上就是不同的业务场景使用RNN做不同的事情,比如翻译输入与输出是多对多,但是情感分类就是多对1,但是大家本质核心都是RNN模型,后面牵涉到的语言模型LM也是要用到RNN,后面学习到LM的时候会提一下这里。
后续
RNN gradient vanish现象以及相关解决方案