热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ChatGPT原理

ChatGPT一经发布就在科技圈火得不行,这两天也是被传得神乎其神,听说它写得了代码、改得了Bug,小说、段子统统不再话下!

ChatGPT一经发布就在科技圈火得不行,这两天也是被传得神乎其神,听说它写得了代码、改得了 Bug,小说、段子统统不再话下!那他到底是怎么训练成现在这样的呢?本文介绍李宏毅老师的分析。


那么接下来我们就来介绍Chat GPT是怎样练成的!


1.找寻资料参考:

        李老师在翻看OpenAI的博客发现,其目前并没有发表关于ChatGPT的论文。但是!在OpenAI官方博客介绍中,我们可以发现CharGPT有一个兄弟,InstructGPT,因此他决定依靠InstructGPT去寻找一些ChatGPT的训练逻辑。



        当我们看到ChatGPT与InstructGPT的对比时,更加坚定的确定通过InstructGPT是可以找到ChatGPT模型的蛛丝马迹的。如下,上面为ChartGPT的训练流程下面为InstructGPT的流程图。可以说像的7788了,比较面明显的区别其实只有GPT的版本不同而已,前者是GPT3.5,后者是GPT3。所以李老师决定直接分析InstructGPT来推测Chat GPT是怎样练成的!






2.正式开始介绍Chat GPT的学习四阶段:


2.1 学习文字接龙

        学习文字接龙,其实就是依据目前已有的信息,去推测下一个可能出现的字,以此类推。与我们在学习机器学习中的文字翻译Transformer架构很相似。

        正如下面的例子所演示的,当我们有目前有:“你好”这一个不完整的句子的时候,程序可以基于在互联网上学习到的知识去预测下一个字,有可能是 “美” 

         这种学习的好处是,我们并不需要人工标注出机器需要训练的内容,只需要把他放到互联网上,看到文字就自我学习文字接龙即可。

        但是,坏处也显而易见了,对于一个不完整的句子,我们后面的词可以是很多种多样的,比如说在 “你好” 后面,我们可以接上 “吗” 、 “高”、“美” 等,所以GPT返回的其实是一个概率分布,也就是说每次回答的内容其实都是随机的。这次说 “你好吗”,下次可能就说 “你好美了” 。

        但是单单依靠文字接龙,其实GPT就已经可以回答问题了。比如下面的例子,我们问出“台湾最高的山是哪座?” 当GPT在网上看过这么多资料,它通过文字接龙的形式回答,可能可以直接回答出玉山,也可能给你出一道选择题(如果他读过的资料是这么连接起来的),也可能反问你 “谁来告诉我呀?”



2.2 人类老师引导文字接龙方向

        经过了文字接龙,我们会发现GPT虽然能回答我们的问题,但是并不一定能回答出我们想要的答案。说白了就是人工来筛选哪些是我们需要的答案(还是逃离不了有多人工就有多智能呐!)


 2.3 模仿人类老师的喜好

        人类希望获得的答案就会被赋予更高的分数 


2.4 使用增强向模拟老师学习

        就是我们将每次GPT得到的答案都丢给TeacherModel来评判,如果是人类希望的答案就给高分,如果不是则给低分,这个模式被称为增强式学习种的“Reward”模块 


3. 当然,ChatGPT目前并不是完美的...

        目前ChatGPT模型已经很难再被找到错误了,但是根据上面的分析,我们只需要问出一些没有人问过的内容,他就回答不出来了。比如说:我问 “numbers”是由几个字母组成的,他会回答八个,这是八个吗???这明明就是七个!!!


4.总结 

        李宏毅老师认为ChatGPT是GPT的社会化过程,从一开始的想说什么就说什么,一直到后面的人类引导他说出期望的答案。 


推荐阅读
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 本文将介绍由密歇根大学Charles Severance教授主讲的顶级Python入门系列课程,该课程广受好评,被誉为Python学习的最佳选择。通过生动有趣的教学方式,帮助初学者轻松掌握编程基础。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本实验主要探讨了二叉排序树(BST)的基本操作,包括创建、查找和删除节点。通过具体实例和代码实现,详细介绍了如何使用递归和非递归方法进行关键字查找,并展示了删除特定节点后的树结构变化。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 本文介绍了一种解决二元可满足性(2-SAT)问题的方法。通过具体实例,详细解释了如何构建模型、应用算法,并提供了编程实现的细节和优化建议。 ... [详细]
  • 本题旨在通过给定的评级信息,利用拓扑排序和并查集算法来确定全球 Tetris 高手排行榜。题目要求判断是否可以根据提供的信息生成一个明确的排名表,或者是否存在冲突或信息不足的情况。 ... [详细]
  • 数据结构入门:栈的基本概念与操作
    本文详细介绍了栈这一重要的数据结构,包括其基本概念、顺序存储结构、栈的基本操作(如入栈、出栈、清空栈和销毁栈),以及如何利用栈实现二进制到十进制的转换。通过具体代码示例,帮助读者更好地理解和应用栈的相关知识。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
author-avatar
C3calm_daidai_649
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有