ChatGPT:优化语言模型
我们训练了一个名为ChatGPT的模型,该模型以对话方式进行交互。对话格式使ChatGPT能够回答后续问题,承认其错误,质疑不正确的前提,并拒绝不适当的请求。ChatGPT是InstructGPT的兄弟姐妹模型,它经过培训,可以按照提示中的指示进行操作并提供详细的响应。
在下面的示例中,ChatGPT提出澄清问题来调试代码。
这个代码没有像我预期的那样工作——我该如何修复它?
resultWorkerErr := make(chan error)
defer close(resultWorkerErr)
go func() {
defer cancel()
resultWorkerErr <- b.resultWorker(ctx)
}()
err := b.worker(ctx)
cancel()
if err == nil {
return <-resultWorkerErr
}
return multierror.Append(err, <-resultWorkerErr)
如果没有更多的上下文,就很难说出代码出了什么问题。你能提供更多关于代码应该做什么以及什么不能正常工作的信息吗?此外,这是整个代码还是只是其中的一部分?
只是其中的一部分——错误永远不会浮出水面。我觉得这个频道有问题
如果没有关于代码应该做什么以及执行时会发生什么的更多信息,就很难说。您提供的代码的一个潜在问题是,resultWorkerErr
通道永远不会关闭,这意味着如果从未写入resultWorkerErr
通道,代码可能会挂起。如果b.resultWorker
从不返回错误,或者在有机会返回错误之前被取消,可能会发生这种情况。
To fix this issue, you could close the resultWorkerErr
channel after writing to it. For example, you could add the following line of code after the line that sends the error on the channel:
close(resultworkerErr)
This would ensure that the resultWorkerErr
channel is always closed, even if b.resultWorker
never returns an error. Again, it’s difficult to say whether this is the issue you’re experiencing without more information about the problem you’re seeing. Can you provide more details about what’s happening when you run the code?
方法
我们使用来自人类反馈的强化学习(RLHF)训练了该模型,使用与InstructGPT相同的方法,但在数据收集设置方面略有差异。我们使用监督微调训练了一个初始模型:人类人工智能培训师提供了对话,他们在对话中扮演双方——用户和人工智能助理。我们让培训师访问模型编写的建议,以帮助他们编写回复。我们将这个新的对话数据集与InstructGPT数据集混合在一起,并将其转换为对话格式。
为了创建强化学习的奖励模型,我们需要收集比较数据,其中包括两个或多个按质量排名的模型响应。为了收集这些数据,我们进行了人工智能培训师与聊天机器人的对话。我们随机选择一条模型编写的消息,对几个替代完成进行采样,并让人工智能培训师对其进行排名。使用这些奖励模型,我们可以使用近端策略优化来微调模型。我们执行了这个过程的几次迭代。
-
扫码下载安卓APP
-
微信扫一扫关注我们
微信扫一扫打开小程序
手Q扫一扫打开小程序
-
返回顶部