有问必答,且每次输出都不相同
支持多轮问答,且能记住前面的对话
例如,认为当我们让ChatGPT讲笑话时,ChatGPT会从开发者准备好的一堆“笑话罐头”里找一个笑话来回答。
当给ChatGPT这样的要求:
`请说一个跟人工智慧有关的笑话,其中要包含一般人对于人工智慧的误解,这个笑话是要在机器学习这门课开学的第一堂课讲的`
会生成一些人很难理解的笑话。可见,ChatGPT 并不是从已经准备好的“罐头”中来搜索答案的。
认为ChatGPT是先从网络搜索相关的内容,然后整理搜索结果后形成回答。也就是说,认为 ChatGPT 是从网络上抄句子。
可以将自己的搜索结果和 ChatGPT 生成的回答进行比较,可以发现多数 ChatGPT 的答案在网络上都找不到一模一样的句子,甚至有很多幻想出来的答案。
ChatGPT 就是一个函式(function)
输入:一个句子 输出:这个句子后面应该接的词汇的几率
例如,
输入:`什么是机器学习?`
输出:`不同几率的“机” “好” “器”等,然后采样(Sample)出某个词汇`
解释了为什么ChatGPT 每次生成的回答都不同,因为每次采样的时候是有随机性的
可是这样只能产生一个字,如何生成一个句子呢?
将生成的文字加在原先的输入后,形成新的输入。
例如,生成“机”字后,加在原先的输入后,输入变成`什么是机器学习?机`
,然后继续生成新的词汇。 这样不断生成至一个代表结束的符号,则不再生成新的词汇,这样生成一个完整的回答了。
那ChatGPT是怎么“记住”前面的对话呢。
因为输入不只是当前用户的输入,还包括历史对话。 比方说:
用户: `a`
AI:`b`
用户: `c`
此时,输入不仅是 `c`
,还包括了`a`
和`b`
。
这样一个强大的 function 非常的复杂,可能有 1700 亿个以上的参数。
对于 $f(x)=ax+b$ 来说,仅有两个参数(a 和 b)
如何训练出这样的函式呢?
需要人类老师教导+大量网络资料。注意,应该将“训练(Training)”和“测试(Testing)”区分开来,“测试(Testing)”并不需要联网。
“训练”就好比“备战”,可以读书上网。“测试”就好比“考试”,在考场上不允许学生翻书和上网。