-
Notifications
You must be signed in to change notification settings - Fork 373
Home
jingyaogong edited this page Sep 13, 2024
·
2 revisions
炼丹之道,贵在明晰:
- 明确模型的输入与输出
- 定义模型的损失函数
训练任何模型,只要清楚这两个问题,就能愉快地开启炼丹之旅。
LLM,即大语言模型,本质上是一个“token接龙”高手,它不断预测下一个词符。这种推理生成方式被称为自回归模型,因为模型的输出会作为下一轮的输入,形成一个循环。
想象一下,一个初出茅庐的随机大模型,面对输入,它预测的下一个字符完全是随机的,就像在词表中随意指点江山。它对输入与下一个词符之间的联系一无所知,如同一个懵懂的孩童。
那么,它是如何学习的呢?在自注意力机制中,通过为qk增加掩码,softmax后将负无穷对应到0,隐藏掉n字符以后的内容。这样,输出的第n+1个字符只能关注到前n个字符,如同戴上了一副“只看过去”的眼镜。
有了明确的输入、输出和损失函数,再加上并行化的助力,我们就可以愉快地开始炼丹了。大模型从一个随机混沌的状态,逐渐学会输入与下一个词符之间的潜在联系。它预测下一个词的能力越来越娴熟,水平越来越高,仿佛从一个懵懂的孩童成长为一位博学的智者。
当然,以上只是为了便于理解而抽象出来的过程。实际上,大模型的输入是由数字组成的张量,而非自然语言字符。自然语言通过tokenizer(可以理解为一种词典)映射到词典的页码数字,进行输入计算。得到的输出数字再利用词典进行解码,重新得到自然语言。输出同样是一个N*len(tokenizer)的多分类概率张量,在Topk中选出的有概率的token,得到下一个词。损失函数则通过交叉熵损失函数进行计算。