ViT (Vision Transformer) ---- Text Generation(文本生成器)

  1. 使用RNN对文本预测

假如输入的文本是:the cat sat on the ma     那么下一个字符什么呢?

 

这里采用的是many to many模型,如下:

此时模型的输出字符概率为:

  1. 如何训练RNN模型?

如上一段英语文字,我们采用分割的方法,这里采用输入的长度为40,滑动距离为3,即从开始到第40个字符用作输入,

第41个字符用作标签数据label,如上:

输入为:Machine learning is a subset of artifici   label为:a

上面是第一个训练数据对即pairs

第二个如下:

因为滑动为3,因此在第一个训练对的基础上,向后滑动三个字符在进行分割,分割距为40个字符,后面一个为对应的预测label,因此训练标签对为:

输入为:hine learning is a subset of artificial             label为 :I

以此类推,直到把这个段落分割完,做成训练对

制作好的数据集,开始训练,输入数据,通过rnn的最后一个状态查找字符字典,然后和label进行比对,通过交叉熵进行计算loss,在通过优化机制和反向传播更新rnn的参数矩阵,然后迭代多次即可完成训练

  1. 制作数据集

下面就开始整个数据集的制作和训练

  • 分割数据

该步骤主要是把一段话或者一篇文章或者一本书进行字符分割,分割时有两个需要设置的参数,分割的长度,滑动长度,这里分割长度是60,滑动长度为3

  • 字典制作

这里是制作字符的字典,英文有26个字符还要加上各种标点和空格总共有57个字符向量,现在按照顺序进行编号,然后给编号进行向量化,这样从字符到向量就完成了

第一步假设分割的段落长度为60,字符字典为57

那么每个段落对应的矩阵就表示为:

假如这里有200278这样的pair,都这样进行矩阵化,这样数据集就制作完成了

下面就是搭建模型训练了:

  • 搭建模型并训练