l 文本向量化是指将文本转换为数值张量的过程,所有的文本向量化的过程都是应用某种分词方案,然后将数值向量与生成的标记相关联;(文本分解而成的单元叫做标记,将文本分解成标记的过程叫做分词)
l 向量与标记相关联的方法:对标记做one-hot编码、标记嵌入(词嵌入)
l 词嵌入是从数据中学习得到的,词嵌入的作用应该是将人类语言映射到几何空间中,获取词嵌入有两种方法:一是开始是随机的词向量,然后对这些词向量进行学习,学习方式与学习神经网络的权重相同,二是在机器学习任务上与计算好词嵌入,然后加载到模型中,这叫做预训练词嵌入;
l 利用Embedding层学习词嵌入,其实这个层实际上是一种字典查找:单词索引----->Embedding层----->对应的词向量;(之前就是需要将原始的数据进行张量化,然后会得到索引)Embedding层的输入是一个二维张量(samples,sequence_length),一批数据中的所有序列具有相同的长度(因为需要将他们打包成一个张量),所以较短的序列应该用0填充,较长的序列应该截断。
l 预训练的词嵌入就是在解决一些任务之前先训练好一个词嵌入的空间,在后面可以更好的映射,这种就跟训练神经网络一样,也可以重复使用已经有的一些嵌入空间解决后面的问题;
l 循环神经网络处理序列的方式就是遍历所有序列元素,并保存一个状态(保存上一个状态留给下一个元素用)RNN是一类具有内部环的神经网络;
l 环和状态:对时间步进行遍历,对每个时间步,考虑t时刻的当前状态与t时刻的输入,对二者进行计算得到t时刻的输出,然后将t+1时刻的状态设置为t时刻的输出,对于第一个时间步,没有上一个时间步的输出作为状态需要用一个初始化全为0向量的东西作为初始状态;
l LSTM长短期记忆算法和GRU解决了在简单循环神经网络存在的梯度消失的问题,就是在参数传递的过程中,随着越来越深入状态中的信息会因为传播算法的影响丢失从而造成了梯度消失的现象;
l LSTM实际上是加入了一条类似传送带的设计,其运行方向平行于你所处理的序列,序列中的信息可以在任意位置跳上传送带,然后被传送到更晚一点的时间步,并且在需要的时候可以原封不动的传送回来;
l 循环神经网络的高级用法:循环dropout(降低过拟合)、堆叠循环层(提高网络的表示能力)、双向循环层(将相同的信息以不同的方式呈现给循环网络,可以提高精度解决遗忘问题)
l 在循环神经网络中正确使用dropout降低过拟合的方法是:对每个时间步应该使用相同的dropout掩码,而不是让掩码随着时间步的增加而随机变化,应该将不随时间变化的掩码应用于层的内部循环激活;
l 在对于某些序列处理问题的时候一维卷积神经网络的效果可以跟循环差不多但是其计算代价就很小,因为是需要处理序列相关问题考虑到卷积的计算代价较小,可以使用RNN和CNN相结合的方法进行相关文问题的处理,就是在使用RNN之前先使用一维卷积神经网络进行预处理;