这段时间一直在看NER相关的工作,终于把RNN以及LSTM的基本结构整理清楚了,于是接下来码一码,以便三天后又忘了找不到出处。其实大部分内容也是搬运来的。
RNN
首先介绍RNN,RNN全称循环神经网络。
在传统的深度神经网络模型中,我们的输入信息是没有顺序的。NLP领域中,我们输入单词经常使用embedding,将词汇映射为词向量,然后输入到神经网络。但是这种输入方式会有一些问题,比如,"我 爱 你"和"你 爱 我"在传统的神经网络中不能很好的识别。
在这种情况下,有人提出了将n-gram信息加入到输入层,比如fasttext,在一定程度上解决了单词间的顺序问题,但是这种方法也有一些弊端,就是我们无法捕获长句子的单词依赖,比如一个句子n个单词,那么如果想要捕获全部的单词顺序信息,需要1+2+3…+n,所以这种方式会让embedding_lookup变得非常大。
RNN就是专门解决这种无法捕获长距离的句子信息的模型。
简单来说,RNN侧重了时序,可以捕捉到句子之前的信息。
RNN模型
RNN的基本模型很简单。直接上图。一般来说分为输入层,隐藏层和输出层三个部分