rnn相关

构成

比之前多了一个圈
rnn相关_第1张图片
这个圈包含t时刻之前的数据特征,主要用在NLP自然语言处理中。

rnn相关_第2张图片
只用最后一个结果ht,前面的当做中间结果

特点

会把之前看到的都记下来,但第n句话和第一句话之间联系不太大,没必要

LSTM

rnn相关_第3张图片

自然语言处理

考虑词的 前后顺序和相关性
rnn相关_第4张图片
构建词向量,不断向后滑动学习

cbow 和skip-gram方法

rnn相关_第5张图片

  • cbow输入上下文,输出预测最中间的位置的词
  • skip-gram 输入中间的词,输出预测的上下文

改进方法

rnn相关_第6张图片
加入一些负样本(负采样模型) 顺序的词太多了,需要加乱序的词,作为负样本

rnn相关_第7张图片
skipgram的正负样本模型

实战

词嵌入:将词转化为向量
每个词用300维的向量表示,词大小为32

(batch,maxlen,featrue)
(同时处理多少标题或者文章,序列的最大长度,feature大小(300维))
基于字做的,在此数据集中有4000+个可能,而词更多,运算量大

LSTM

rnn相关_第8张图片
self.lstm = nn.LSTM(config.embed(300维的输入特征), config.hidden_size(128个隐藏神经元), config.num_layers(两层的LSTM),
bidirectional=True(是单向的还是双向的,双向的效果好), batch_first=True, dropout=config.dropout)

双向的LSTMrnn相关_第9张图片

特征最后会拼接起来,维度更多了

rnn相关_第10张图片
上图是3层LSTM(淡蓝色部分),一般用最后一层最后一个输出作为最终输出,因为它包含并计算了前面神经元的特征信息

例子中的模型

Model(
(embedding): Embedding(4762, 300)
(lstm): LSTM(300, 128, num_layers=2, batch_first=True, dropout=0.5, bidirectional=True)
(fc): Linear(in_features=256, out_features=10, bias=True)
)

NLP任务大部分是分类任务

你可能感兴趣的:(workHappy,pytorch,rnn,人工智能,深度学习)