创作不易,免费的赞
前面有介绍了GPT2如何进行token化的过程,现在讲下transformer的Embedding层
Embedding层就是一个巨大的矩阵,边长分别是词汇表长度和词向量维度,矩阵里面的每一个数字都是一个随机初始化的,或者是其他地方经过训练之后拿过来的。在transformer训练过程中,这些每个token的维度浮点数会发生改变。
在训练的过程中,假设我们窗口为50个token,意思就是我们生成下一个词的时候,只使用前面50个词去预测下个词,就算前面继续有词,我也不会应用,那么就变成下图。但是当本来就没有50个词的时候怎么办,那么需要填充字符,可以是任意字符,反正你就当成是个填充码,这里使用的是PAD,PAD在token当中也是存在的,你甚至自己定义一个token,如<<notoken!>>都可以。
为什么需要填充满50个字符,不满就不满,感觉也什么问题啊?
这是因为如果限定成50个,那么在使用显卡的训练的时候速度就可以快很多,没有的话也可以。
上图这个矩阵就是输入到下一个层级的矩阵,下一层就是添加位置编码,本系列中也已经有章节介绍。