如何实现大模型自动生成一段诗词?与ChatGPT一样,按照指令生成一段文本相对复杂,可以将目标简化为“随机给出一个词作为输入,让大模型自动生成一段新的诗词”。回顾所使用的大模型的生成效果,它是否逐字输出?同一句话逐渐生成的过程,实际上是不断预测的过程。假设大模型生成了一句话:“三十功名尘与土,八千里路云和月。”
每次预测后的结果将作为输入,加入到下一次预测中,形成一个循环。由此可见,大模型的文本生成过程实质上是一个连续的预测过程。该预测过程可以抽象为一个模型,模型的输入是一个词,输出是下一个词。该模型的结构是一个神经网络,神经网络的输入是一个词,输出是下一个词。
从简单的二元语法模型开始,输入为一个词,输出为下一个词。传统二元语法模型所涉及的统计公式如下:
其中, w t 是输入的词, w t +1 是输出的词。该公式表示给定一个词 w t ,需要预测下一个词 w t +1 出现的概率,该概率由两部分组成:分子为 w t 和 w t +1 同时出现的概率,分母为 w t 出现的概率。
从神经网络的实现角度,二元模型通常使用嵌入层将词汇转换为密集向量表示,接着通过一个或多个线性层(可能包含激活函数)预测下一个词的概率分布。模型还可能包括Softmax层,将输出转换为概率分布。该过程用数学公式表示如下:
其中,
v
t
为输入词
w
t
的嵌入向量,NN为神经网络,
z
t
+1
为神经网络的输出,
为下一个词
w
t
+1
的概率分布。该公式表示给定一个词
w
t
,预测下一个词
w
t
+1
的概率分布。此概率分布由神经网络NN计算,并通过Softmax函数转化为概率分布。
下面通过代码实现一个简单的二元语法模型。代码包括模型准备、参数初始化、训练过程和生成过程4个部分。