ChatGPT是如何生成长文的
说实话,现在我们对chatGPT的最深的印象就是他是一个各方面知识都比较全面的机器助手,我们的问题他都能生成答案,不过大家发现没有,它生成相对应的长文的时候,都是一个词一个词蹦出来的,有的时候是一个个词组蹦出来的。
所以很简单,chatGPT在做的事情就是生成下一个词!!!
那么问题就来了,chatGPT是怎么知道下一个词是什么的呢?对于同一个问题它每次生成的回答会不会一样呢?第二个问题相信大家已经知道了,基本上不会一样,可能大体意思是差不多的,大家可以想象跳迷宫,可能你第一次跳迷宫到了A宫格,下一步选择了B宫格,但是下一次到了A宫格的时候你也可以选择C宫格了。
chatGPT其实是在做选择题,它并不知道下一个词是什么,只是选择概率比较大的词,然后生成对应的文章,所以问题的关键就是,如何知道下一个概率最大的词呢?
我们先假设这样一个场景,选取一篇小说,比如大概有500万词,先对500万个词进行一个去重,比如得到了5万个词,然后统计下这5万个词互相之间下一个的概率,怎么说呢?比如我们先选取第一个词为我,我们可以从这500万个词中找到我后面跟的所有词吧,然后对应的这些词的出现次数我们可以拿到吧,比如”的”出现的次数为1万,”是”出现的次数为0.5万,所以”我” 后面出现的”的”概率相对来说最大,这样”我”后面是不是就可以跟”的”了,依次类推,”的”后面跟的词可能就是”家”,这样下来也可以让chatGPT生成一部短篇小说了;
上面是500万个词,可能生成出来的答案不够通俗,那如果我们的训练数据进一步扩大呢,到达了亿级别,10亿,百亿或者万亿级别的词,这样的话是不是基本上把握我们人类产生的几乎所有可以生成的词都囊括进去了,理论上来说,ChatGPT 是不是就可以几乎以人类的想法去合理地帮我们去生成同样的文本了呢。其实这和我们常听的大道理差不多,正所谓看得多知道的也多,就是说白了是量变可以到达质变
这个只是基于单个词去生成,实际上我们有的时候人类是会一次写一个词或者一个词组的,上面的词我们也可以替换成我们常见的词组,去计算对应的概率,只不过这样的话计算的量级会比较大,大家设想下,5万个词组成二元词组有多少对,是不是25亿;如果是三元词组呢,125万亿了吧,四元词组就是625亿亿了,就是625兆了,这个计算量可能稍微有点大,但是如果进一步扩大呢,比如20元词组呢,是不是可能比宇宙中的沙粒都多,我们计算机可能就存不下了。不过chatGPT是怎么做的呢,chatGPT就是建立一个模型,这个模型到底是如何实现的呢,我们下一步揭晓答案!