RNN处理语言时,训练集的特征到底什么样?语言模型改为处理时间序列时,输入特征要怎么改?

模型输入到底是什么样?
1、整个小说作为一个序列,分段,窗口滑动一位
一个很长的序列,加个随机初始点,舍弃初始点之前的,然后把剩下的长序列,根据步长平均切成多个子序列,
把多个子序列起始下标乱序放在list 里。一个子序列可能是很多句话,然后再循环所有子序列,
每次取batchsize 个子序列
X矩阵:行是batch个子序列,列是时间窗口大小t

img16png 

2、以上面这种方式做nlp,那么和股票等普通数据有以下区别
Nlp 和普通时序的区别是,nlp一行样本的特征之间是时间关系,而普通时序特征之间没关系。
nlp和时序批量取几行样本时,样本之间不用有啥顺序关系,只关注label,即y不同,因为每行样本只要和y对答案就行,不关心我旁边的样本是谁
nlp 的y,是那条样本按时间顺序整体右移一步到下一个词,比如x是"我是好",y是“是好人”,原句是我是好人。而时序的y是样本原本的下一行数据,他是下一刻的正确答案,比如x是 20240401,3,56,26,而y是20240402,4,57,27  .

教学是为了简单,做28个字符长的one hot,但不用拘泥于形式,28列代表特征数,
所有样本就是时间序列,随机抽,只要每个样本的y正确,就可以了,这样训练出模型参数。

训练是预测出y跟真实y比,再改参数,实际预测就是不用比,不改参数

 

3、 Embedding 就是特征,一个单词可能有几百种特征
所以后面就不用1,2那种one-hot了,因为one-hot用字符做特征很小只有27,如果用词表就得好几万特征
有了Embedding,每个词也不用几万特征了,只有几百个特征,就是一维的特征向量,相当于每行样本就是一个词,下一行就是下一个词

 

 

云上数据不安全,车以后可以做一个计算机器,家里就不用买电脑gpu 等电子设备了

自注意力适合看比较长的序列,几百几千,Rnn超过100的序列就悬了

位置信息也可以单独算输入

img17png

 kqv 大小跟hidden 一样,256,等等,几个头也随意,32,64,自己试,其他参数不重要
posted @ 2024-05-03 22:02  zhaot1993  阅读(14)  评论(0编辑  收藏  举报