目录
数据处理基础:
处理文本信息(text -> sequence):
simple RNN模型:
这个教程的笔记:
RNN模型与NLP应用(1/9):数据处理基础_哔哩哔哩_bilibili
数据处理基础:
不能用标量表示类别特征。
可以用one-hot编码把一些类别特征变成数值向量。
处理文本信息(text -> sequence):
1. Tokenization(string->list):把文本变成列表,一个token是一个单词或者一个字符等。
2. 统计词频(建立一个dict):把每个单词映射到一个正整数(字典的key,value,key的个数叫词汇量)。把词频按从高到低排序,然后把词频换成index,从1开始数,然后保留常用词,去掉低频词(可能是人名或拼写错误),这样可以在ont-hot编码时向量的维度变小,减小计算量。
3. sequences:进行完第二步后,每个单词映射到一个正整数,这样一个文本用一个正整数的列表表示。
4. 如果有必要,进行one-hot编码:编码后向量的维度就是第二步字典中的词汇量。
5. 将列表对齐(alignment):每段文本信息的长度不一定一样,可以采取的一种措施是取一个固定值8,当长度小于8时,用0进行填充,当长度大于8时,只选取最后8个。
6. word-embedding(词嵌入):把one-hot编码的向量用一个参数矩阵变成一个低维向量。
simple RNN模型:
RNN适用于文本、语音、时序序列等信息,按照顺序读取每一个词向量。
不如以前流行,如果训练数据足够多,效果不如transformer。在小规模上很有用。
- Simple RNN很擅长short term dependence,而不擅长long term dependence。第100个输出的状态与第一个输入几乎没有关系了,这显然是不合理的。
RNN中,在状态h中积累看到过的信息,可理解为RNN从整个序列中抽取到的特征向量,积累了之前看到的所有的信息.
新的状态是旧的状态和新的输入的tanh函数(双曲正切),它还依赖于矩阵A。
神经网络的模型参数是矩阵A,可能还有一个intercept参数向量b,参数矩阵A随机初始化之后再循环中不断学习更新。
参数矩阵的维度是shape(h)×(shape(h)+ shape(x))。simple RNN只有一个参数矩阵,不管这个时序有多长。
参数矩阵:A
下一个状态:
上一个状态:
新输入的词向量(特征):
LSTM模型:
LSTM可避免梯度消失的问题,可以有更长的记忆。
LSTM 有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个 sigmoid 神经网络层和一个 pointwise 乘法操作。
使用了一个“传送带”来获得比simple RNN更长的记忆。
包含了三个模块:
遗忘门:输出。
记忆门:包括sigmoid和tanh两个层,分别输出和。
记忆门的作用是确定什么样的新信息被存放在细胞状态(也就是前面说的单元模块)中。记忆门包括两个部分:sigmoid,决定什么值需要更新;tanh,创建一个新的候选值向量,生成候选记忆。
针对遗忘门中丢弃的属性信息,在本单元模块找到相应的新的属性信息,添加进去,以补充丢弃的属性信息。
输出门:
输出:决定从传送带到(LSTM的输出,同时输入到下一个状态)。
LSTM有四个参数矩阵:、、、、。
参数的数量:4×shape(h)×(shape(h)+ shape(x))。
参考:
Understanding LSTM Networks -- colah's blog
[译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络 - wangduo - 博客园 (cnblogs.com)
The Unreasonable Effectiveness of Recurrent Neural Networks (karpathy.github.io)