文本处理和词嵌入
对于机器来说,不能理解一句话的意思,解决办法就是将一句话分割成多个词,用数字代表一个词,将一句话转化成数字的列表
这个词对应的字典又是怎么训练出来的呢,遍历这个词的列表,如果在字典就数字加一,不在则新建为1,排序之后,按照频率重新把值换成123456的排序。
对于这个句子,我们要分析他是正面的还是负面的,我们需要句子是一样长的,解决办法就是对于长的句子我们只取后8个(例子),小于8个的就在前面填上0。
数据处理完接下来就是训练模型。对于词典,我们要把他表示成一个数字向量,一个词典的数据必然特别多,但我们不希望参数的维度这么高,解决办法如下
xi就是得到的结果,使得维度降低,对于特征向量p转置来说d由用户决定,v是词典的长度
对于p的解释如图
p是特征向量,d是词向量的维度,v是字典含的词的个数
这个就是每个句子有20个词,每个词用8维的向量表示,字典有10k个
理解起来有些困难,具体的下节rnn说清楚
简单RNN
如图所示,rnn只有一个参数A,遇到一个词经过A处理得到一个h,用这个h计算下一个h1如图所示
因此,对一句话做出预测的时候,只需要使用最后一个h即可。
RNN遗忘问题
RNN存在缺点就是他很难处理长句子,当你用h100对x1求偏导会发现,导数基本为0,也就是说,h100基本不受到x1影响,也就是遗忘了x1.