一个字一个字猜下去,就成了你看到的回答。下面这台机器就是照这个原理写的,你喂它什么文字它就学什么腔调,猜出来的每个字都按真实概率算,没有一处是提前写好的。
这是它读语料时的真实样子:每一列最上面是它正看着的那个字,下面六个是它认为最可能接在后面的字,红色是它会选的那个。红条越长,它越有把握。整条带子在缓缓往前推,就像它一页页翻过去。
模型不认识"句子",只认识一块一块的东西,行话叫 token。中文基本一个字一块,英文常把一个词拆成好几块。输一句话,看它被切成什么。
它学的方式特别朴素:数一数每个字后面最常跟哪个字。下面三份语料腔调完全不同,换一份再往下走,出来的味道立刻不一样。
给一个开头,看它认为下一个字最可能是哪几个。下面这些百分比是真的按语料数出来的,不是画上去的。输完按回车就行。
它不一定挑概率最高的那个字,而是按概率抽签。温度就是调这个签的旋钮:温度低几乎只挑最有把握的字,回答死板但稳;温度高时冷门字也有机会被抽中,有创意但也更爱胡说。
上面那段读着还行,是因为短。生成两百字再读一遍,句子看着通顺,但经常前后不搭、说了等于没说。
让它"看前面 1 个字"和"看前面 2 个字",在同一份没学过的考卷上比一比。准确率是猜中下一个字的比例,困惑度是它的"意外程度",越低越好。数字都是现场算的。