大型语言模型入门
大型语言模型ChatGPT
快速、全面了解大型语言模型。学习李宏毅课程笔记。
ChatGPT
目前由OpenAI公司发明的非常火的人工智能AI应用ChatGPT,到底是什么原理呢?
G:Generative(生成)
P:Pre-trained(预训练)
T:Transformer(一种类神经网络模型)
当然,类似的AI技术还有其他,如:Google Bard、Anthropic Claude等等
ChatGPT背后原理
ChatGPT真正做的事情:就是“文字接龙”。
ChatGPT又叫大型语言模型,那什么是语言模型呢?
能做“文字接龙”的模型,其实就是语言模型。
那语言模型,是怎么回答人类问题的呢?
当输入问题“台湾最高的山是哪座?”的时候,ChatGPT会把它看作成为一个未完成的句子,它会选择一个最合理的字输出,如“玉”字;接下来,它会把上次的输出,接到这个问题后面,共同作为下次的输入,以此类推,直到ChatGPT输出“end”结束。
我们再详细一点看ChatGPT的原理:
比如,如果输入“台湾大”,后面可以接的字有很多可能,可以接“学”、“哥”、“车”等等。ChatGPT的输出其实是给每个可能输出的符号一个概率,比如在这个例子中,“学”出现的概率是50%,"车"出现的概率是25%…ChatGPT就按照这些字出现的机率掷色子,掷到“学”的概率最大。所以,ChatGPT每次输出的答案不一定相同。
我们把输出有可能选择的这些符号,就叫做Token。Token是语言模型中很重要的一个概念,甚至ChatGPT在计算价格的时候,都是用生成多少token,要花多少钱来收费。
Token
其实,每个语言模型的token还不一样,token是开发者事先设定好的,就是做文字接龙的时候你可以选择的符号,有个平台(https://platform.openai.com/tohenizer)可以查询openAI的某些语言模型的token是什么。
比如:I am unkillable,虽然是3个单词,却是6个token。
其中,unkillable就被拆成了3个token,即要做3次接龙。
那为什么不能把一个单词作为一个token呢?
因为英文单词无法穷举,因为token是一个可以被选则的符号,所以它必须是一个可以被穷举的东西,这样ChatGPT才能给每个token一个概率值,英文单词那么多,而且还不断有新的新的单词产生,所以用这种相当于字首字根的东西表示更为方便。
那中文的token是什么样呢?
在OpenAI的GPT系列中,通常不是把一个中文方块字当作一个token,一个中文方块字是好几个token,当然如果你想开发自己的人工智能,想把一个方块字就当作一个token,也是合理的。
掷色子
我们已经知道ChatGPT是按照这些token出现的机率掷色子而得到最后结果。所以,ChatGPT每次输出具有随机性,答案不一定相同。
那为什么不能选则输出概率最大的那个Token,而要以掷色子的形式输出呢?
因为每次输出概率最大的那个,不一定能得到最好的结果。可以看19年的这篇论文《The curious case of neural text degeneration》,每次选择概率最大的Token,模型就容易跳帧,不断loop不断讲一样的话,如果是掷色子的话,就能输出很自然的回答。
为甚么ChatGPT有时候也会输出一本正经的胡说八道的答案?
现在我们了解了ChatGPT真正做的事是文字接龙的话,就不难想象说为什么ChatGPT也会回答错误答案,因为这些答案都是凭借接龙接出来的,ChatGPT根本不在意这些答案是否真实或对错。
比如下面这个例子,让ChatGPT介绍台大的玫瑰花节,但是台大根本没有这个节日,它仍然会像模像样的给你一个答案,这个网址也是它自己瞎造的。
ChatGPT既然是做“文字接龙”,那它是怎么知道多轮对话的呢?即怎么知道一些历史信息的呢?
举个例子:
我不需要告诉它把什么翻译成英文,它自己就知道是要把上一个问题的答案翻译成英文,这是为什么呢?
就是在做文字接龙的时候,同一则对话里面,过去你问的问题+ChatGPT的输出+这次你的问题,都会作为新的输入。
文字接龙
语言模型是怎么学会做文字接龙的呢?
网络上的任何一句话,都可以作为语言模型的学习数据,比如“人工智慧真神奇!”这句话,模型看到后就知道,“人”后面接“工”的概率比较大,那就提高“人”后面出现“工”的概率…,"!"后面没话了,那就提高“end”的概率。
那语言模型是怎么输出这个概率分布的呢?
就是Transformer模型。详见其他博客。
ChatGPT历史
OpenAI 在2018年开始就研究有关GPT的模型了。
-
第一代GPT-1:
模型参数量只有117M,训练数据才1GB。
-
2019年诞生第二代GPT-2:
模型参数量1542M,训练数据40GB。
GPT-2也可以做问答任务,但是表现一般,正确率只有55%左右。
-
2020年诞生第三代GPT-3:
模型参数量175B,足足是GPT-2的100多倍呀!训练数据580GB,相当于阅读哈利波特全集30万遍,远超过一个正常人一辈子度过的资料量。
这一代的GPT-3已经会写代码了!
但在所有的任务上的表现也一般,准确率也是50%多左右。
GPT只从网络资料学习的缺点:
有人说OpenAI走错方向了,看起来再怎么做文字接龙,也接不出一个通用的人工智能出来。但是OpenAI并没有放弃,他们有篇论文说其实GPT-3已经很聪明了,但它表现不好的原因就是,它不知道人类社会的规则,不知道人类的需求。它就像一个山野里长大的小孩,它只见过网络上的东西,在网络上随便乱学,它并不知道要做什么事情,甚至不知道要回答问题。
论文举了如下例子:
我们问它C在下面这段代码里面的含义是什么,它的回答是4个选项,可能因为网络上有很多考题,它在网络上学到的就是看到一个问题,对应四个选项。
- ChatGPT-3.5,也就是第3.5代模型
这次引入了监督式学习,就是人类老师教给它,想要让它做的事情。
反过来说,如果GPT网络上爬了数据自己学习,叫作自监督学习,就是自己教自己,相当于课堂前的预习,就叫预训练。所以预训练就是今天很多人工智能成功的关键,预训练好的模型就叫作基石模型,然后经过一些微调,经过人类老师的教学,就可以有很大的提升。
其实,ChatGPT的训练有三阶段:预训练+监督学习+增强学习(后面内容介绍)
其中,监督学习+增强学习 = 对齐,即对齐人类的需求,满足人类的需求。
- ChatGPT-4,第四代模型
OpenAI 并未公开模型参数量大小和训练数据量
GPT-4新增的功能就是可以看得见了!就是你可以给它一张图片,然后问它问题,例子:
监督式学习&预训练&增强学习
监督式学习
监督式学习的重要性:
其实到今天,ChatGPT背后的原理仍然是一种猜想。在InstructGPT这篇文中有张图,纵轴是模型的好坏,横轴是模型参数的大小,蓝色线是模型自监督学习的结果,也就是自己学习网络数据,红色线是监督式学习,就是啊加入了人类老师指导的结果。可以看到,加入了人类指导,即使参数量很小的模型,都比参数量最大的自监督学习模型厉害。就相当于天资再好的学生,都不如那个虽然天资不好,但老师好好教他的模型,所以说明老师(监督式学习)的重要性。
预训练
预训练的重要性:有预训练后,监督式学习不用大量资料!
预训练有多神奇呢?在多种语言上做预训练后,只要教某一个语言的某一个任务,模型就可以自动学习学会其他语言的同样任务。
举个例子,有个语言模型Bert,它自学过104种语言(预训练),现在人类教它学习英文阅能力测验(微调),但不教它中文的阅读能力测验,然后现场让它答中文的,它也答的出来!
那预训练后,需要多少数据就能微调呢?就是老师需要教多少就能让这个模型学生开窍呢。
仍然是InstructGPT这篇文中也可以看到,人类老师只提供了一万多的数据,就微调好模型了。
增强学习
除了监督式学习,ChatGPT还有增强学习(Reinforcement Learning, RL)来强化它的能力。增强学习就是人类老师只提供回馈哪个答案是更好的。
那监督式学习和增强学习之间什么区别呢?
一个需要人类做解答题,一个只要做选择题。监督式学习需要人类老师提供完整的正确答案(这个很花人力气,多数人可能不愿这么做,可能只有OpenAI的标记员有心力做这件事),但在增强学习中,老师不需要提供完整正确答案,只需要反馈哪个答案更好,因此每个人都可以做。
增强学习原理比较复杂,感兴趣的同学可以学习其他相关课程。
从人类的回馈学习,有个专门的简称:RLHF。
基本概念
当输入一个问题,模型给你两个答案,你就告诉它哪个答案更好,模型就会想办法把你觉得好的答案提高输出的概率,不好的答案降低它的概率。
一般先做预训练,再做监督式学习,最后做增强学习。为什么最后做增强学习呢?
因为模型要有一定程度的能力后,才适合进行增强学习,这样效果更好。
背后的假设就是,你的模型要偶有佳作,必须要有时候能得出不错的答案,人类反馈这个答案是好的,然后提高这个答案的概率才有意义。如果模型输出的效果整体不好,即使人类从两个差的答案里勉强选一个,模型相当于还是在提高差的答案的概率,可能这时候增强学习帮助就不大。因此,增强学习一般放在整个训练过的最后。
ChatGPT中的增强学习:
刚才讲到增强学习就是增强好的那一个答案的概率,但是这样的话,机器只学习到把某一个问题做好,怎样才能做到人类给某一个问题回馈,但是其他问题也能同时做好呢?
ChatGPT的增强学习过程分为两个步骤:
-
模仿人类老师的喜好
如:当人类反馈“玉山”答案更好的时候,ChatGPT就会另外再训一个Reward Model,就是把问题+所有可能的答案输入Reward Model,输出一个得分,让人类觉得好的答案的分数就高,不好的分数就低,这样就相当于训练出了一个人类老师的代替品。
好了,现在把人类老师解放了,让Reward Model来代替人类老师的角色。接下来就是步骤2。 -
向模拟老师学习
现在就可以把问题+答案输入给Reward Model了,让它替人类老师打分,对好的答案打高分,差的答案打低分。
打低分,降低概率
打高分,提高概率
总结:
ChatGPT的训练有三阶段:预训练+监督学习+增强学习
其中,监督学习+增强学习 = 对齐,即对齐人类的需求,满足人类的需求。
几个月前,OpenAI发布了GPT-4,并公开了一份近百页的技术报告,最惊人的是,其中作者群长达三页!说明GPT-4背后的工程非常浩大。这份报告主要是一份炫耀文,告诉你GPT-4有多强,但技术细节只介绍了一段话:
OpenAI 并未正式公布ChatGPT-4用了多少训练数据,以及模型的参数量。
下一步:人类的努力
现在语言模型已经非常强了,接下来就是看通过人类的努力,是否能激发语言模型更大的力量。以下就是介绍一些激发语言模型力量的秘诀。
1.把需求讲清楚
比如:是希望它润色,还是改语法,还是用什么语言扩写,扩写到多少字…
2.提供信息给ChatGPT
比如:让它写一篇作文,它写着自己停下来了,你就写“继续”,给它多提供点你的资料,用什么样的口吻、类型等
3.提供范例
例如:直接给他一个例子,让它模仿
4.鼓励ChatGPT想一想
例如:让它回答鸡兔同笼问题,不同文法,结果不同
有人对比了不同的问法的准确率:
准确率最高的问法,就是神奇的咒语
5.如何找出神奇咒语
用AI来找神奇咒语
6.上传档案
7.ChatGPT可以使用其他工具
8.拆解任务
9.自主进行规划
10.ChatGPT其实会反省
11.跟真实环境互动
相关文章:
大型语言模型入门
大型语言模型ChatGPT 快速、全面了解大型语言模型。学习李宏毅课程笔记。 ChatGPT 目前由OpenAI公司发明的非常火的人工智能AI应用ChatGPT,到底是什么原理呢? G:Generative(生成) P:Pre-trained(预训练) T:Transform…...
canvas-视频绘制
通过Canvas元素来实时绘制一个视频帧,并在视频帧上叠加一个图片的功能可以当作水印。 获取Canvas元素: let canvas document.getElementById(canvas) 通过getElementById函数获取页面中ID为canvas的Canvas元素,并将其存储在变量canvas中。 …...
红酒与美食搭配:味觉的新探索
在美食的世界里,红酒如同一位优雅的舞者,与各种佳肴共舞,创造出无尽的味觉惊喜。当定制红酒洒派红酒(Bold & Generous)与各式美食相遇,便开启了一场味觉的新探索之旅。 一、红酒与美食的邂逅ÿ…...
大模型日报 2024-08-02
大模型日报 2024-08-02 大模型资讯 博思艾伦在国际空间站部署先进语言模型 摘要: 博思艾伦在国际空间站上的超级计算机上运行了一种生成式人工智能大型语言模型。这一举措标志着语言模型在太空应用方面的重大进展。 人工智能助力研发安全有效的新型抗生素对抗耐药细菌 摘要: 德…...
【Pytorch】一文向您详细介绍 torch.sign()
🎉🧠**【Pytorch】一文向您详细介绍 torch.sign()** 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介ÿ…...
超级详细,如何手动安装python第三方库?
文章目录 1,python第三方库安装包有3种类型2,python第三方库安装包whl文件如何安装?3,python第三方库安装包zip和tar.gz文件如何安装?4, python第三方库安装包exe文件如何安装? 手动安装第三方库…...
WebSocket协议测试
WebSocket和HTTP接口有什么不一样 websocket和http都是网络接口数据交换的协议。都是基于TCP 协议区别 http:每次数据交互都是一个全新的请求;主动发起http请求调用(非实时) websocket:建立长久网络连接,服务器/客户端可以相互主动发数据…...
浅谈【C#】代码注册COM组件
在C#中注册COM组件通常涉及到使用regasm工具或者在代码中使用System.Runtime.InteropServices命名空间下的RegisterTypeForComClients方法。 下面是两种方法的简要说明和示例: 1、使用 regasm 工具 regasm 是一个命令行工具,用于将.NET程序集注册为CO…...
C++数据结构学习(顺序表)
文章目录 顺序表杭州电子科技大学在线评测2008 数值统计使用顺序表实现 2014 青年歌手大奖赛_评委会打分 Leetcode题目[LCP 01. 猜数字](https://leetcode.cn/problems/guess-numbers/description/)[LCP 06. 拿硬币](https://leetcode.cn/problems/na-ying-bi/description/)[20…...
springboot宠物用品商城系统-前端-计算机毕业设计源码74346
摘要 基于微信小程序的宠物用品商城系统是一个集商品展示、在线购物、支付结算、用户管理等功能于一体的综合性电商平台。该系统充分利用微信小程序的便捷性和用户基础,为宠物爱好者提供了一个方便、快捷的购物体验。 同时,该系统还具备完善的用户管理功…...
【vue预览PDF文件的几种方法】
vue展示PDF文件的几种方法 使用Vue插件 你需要安装vue-pdf-embed: npm install vue-pdf-embed<template><div class"pdf-container"><VuePdfEmbed :src"pdfUrl" /></div> </template><script setup lang"ts"…...
学习安卓开发遇到的问题(未解决版,有没有人帮我看看,大哭,感谢)
问题1:学习禁用与恢复按钮中: java代码报错:报错代码是 R.id.btn_enable;case R.id.btn_disable;case R.id.btn_test: 代码如下:(实现功能在代码后面) package com.example.apptest;import static java.…...
C++必修:STL之vector的模拟实现
✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C学习 贝蒂的主页:Betty’s blog 为了让我们更加深入理解vector,接下来我们将模拟实现一个简易版的vect…...
Unity Camera
课程目标 1. 了解摄像机(camera)不同视角的设计与实现;2. 感受在不同摄像机视角下观察虚拟场景。 喜欢玩游戏或者看3D动漫的朋友可以回忆在虚拟场景中摄像头的运动变化带来的视觉感受,例如:摄像头给场景中的主角来个…...
CSS雷达光波效果(前端雷达光波效果)
前言 CSS雷达光波效果是一种视觉动画效果,常用于模仿雷达扫描或检测的视觉反馈。这种效果通常涉及到动态的圆形或弧形图案,它们从一个中心点向外扩散,类似于水面上的涟漪或雷达扫描线。以下是创建CSS雷达光波效果的一些关键技术和步骤&#…...
【C语言】【数据结构】冒泡排序及优化
一、算法思想 冒泡排序是一种简单的排序算法。一次从前往后地走访待排序的元素序列被称为一趟,每一趟都会把相邻的两个元素的错误顺序交换,将当前趟次中最大或者最小的元素像“冒泡泡”一样冒到最后面,反复地走访元素序列,直到所有…...
3种 Ajax 方式:原生、jQuery、axios
毋庸多言,Ajax 技术在网页中是划时代的进步。学会它,可以说掌握了一招半式,不再是门外汉了。 这里将 3 种 Ajax 方式一并呈上。 感谢 https://run.uv.cc/ 平台,以及 /api 接口 https://andi.cn/page/621639.html https://andi…...
Node.js 根据表结构动态生成目标代码
文章目录 前言项目背景使用的技术栈步骤一:设置 Node.js 项目步骤二:连接 SQL Server 数据库步骤三:查询数据库表结构步骤四:生成模板代码步骤五:整合所有功能总结 前言 在现代的前端开发中,使用 Vue3 搭配…...
渗透测试实战—云渗透(AK/SK泄露)
免责声明:文章来源于真实渗透测试,已获得授权,且关键信息已经打码处理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本…...
【机器学习】机器学习与医疗健康在疾病预测中的融合应用与性能优化新探索
文章目录 引言第一章:机器学习在医疗健康中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 特征工程 1.2 模型选择1.2.1 逻辑回归1.2.2 决策树1.2.3 随机森林1.2.4 支持向量机1.2.5 神经网络 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Adam优化…...
MySQL(8.0)数据库安装和初始化以及管理
1.MySQL下载安装和初始化 1.下载安装包 下载地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2.解压…...
C# Web控件与数据感应之 TreeView 类
目录 关于 TreeView 一些区别 准备数据源 范例运行环境 一些实用方法 获取数据进行呈现 根据ID设置节点 获取所有结点的索引 小结 关于 TreeView 数据感应也即数据捆绑,是一种动态的,Web控件与数据源之间的交互,本文将继续介绍与…...
java使用责任链模式进行优化代码
1.什么是责任链 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。每个收到请求的对象要么处理该请求,要么将它传递给链中…...
【人工智能】边缘计算与 AI:实时智能的未来
💎 我的主页:2的n次方_ 💎1. 引言 随着物联网设备数量的爆炸性增长和对实时处理需求的增加,边缘计算与人工智能(Edge AI)成为一个热门话题。Edge AI 通过在本地设备上运行 AI 算法,减少对云计…...
Day12--Servlet实现前后端交互(案例:学生信息管理系统登录页面)
(在一个完整的项目架构中,servlet的角色和位置) Servlet、GenericServlet和HttpServlet三者之间的关系是Java Web开发中的一个重要概念,它们共同构成了基于Java的服务器端程序的基础。以下是具体分析: 1. Servlet接口…...
Android 安装应用-准备阶段
安装应用的准备阶段是在PackageManagerService类中的preparePackageLI(InstallArgs args, PackageInstalledInfo res),代码有些长,分段阅读。 分段一 分段一: GuardedBy("mInstallLock")private PrepareResult preparePackageLI(I…...
【JKI SMO】框架讲解(九)
本节内容将演示如何向SMO框架添加启动画面。 1.打开LabVIEW新建一个空白项目,并保存。 2.找到工具,打开SMO Editor。 3.新建一个SMO,选择SMO.UI.Splash。 4. 打开LabVIEW项目,可以看到项目里多了一个SystemSplash类。 打开Process…...
Linux通过Docker安装Microsoft Office+RDP远程控制
之前根据B站教程《在linux上安装微软office》:在linux上安装微软office_哔哩哔哩_bilibili 写过一篇使用KVM虚拟机安装Microsoft OfficeRDP远程控制的文章,根据B站的教程安装后,发现有远程控制延迟的问题,比如拖动Office窗口时会…...
利用Qt实现调用文字大模型的API,文心一言、通义千问、豆包、GPT、Gemini、Claude。
利用Qt实现调用文字大模型的API,文心一言、通义千问、豆包、GPT、Gemini、Claude。 下载地址: AI.xyz 1 Qt实现语言大模型API调用 视频——Qt实现语言大模型API调用 嘿,大家好!分享一个最近做的小项目 “AI.xyz” 基于Qt实现调用各家大模型…...
借助医疗保健专用的 LLM提高诊断支持与准确性
概述 最近的研究表明,大规模语言模型在医疗人工智能应用中非常有效。它们在诊断和临床支持系统中的有效性尤为明显,在这些系统中,它们已被证明能为各种医疗询问提供高度准确的答案(例如,医生在诊断过程中需要用到语言…...
网页网站开发平台/学开网店哪个培训机构好正规
layout动画在每次布局发生变化的时候系统调用的一个预加载动画效果,使用layout动画可以让布局的变化过度看起来更自然。使用起来很简单,只需在控件中添加一个属性就可以了,系统默认是不会启动layout动画的,因此我们平时的应用中不…...
网站设计构想/百度网站官网网址
自从毕业后,你多久没有进行过考试了?如果再给你一次重新考试的机会,你会怎么考?今天分享给大家的是python数据挖掘试题四十道,文末有答案,但希望你从接受挑战那一刻起,就像期末考试一样对待! 1.某超市研究销售纪录数…...
网站怎么申请备案/湖南平台网站建设设计
是的,这是可能的。有用于这些目的的模块,称为MSG PY。例如:from independentsoft.msg import Messagefrom independentsoft.msg import Recipientfrom independentsoft.msg import ObjectTypefrom independentsoft.msg import DisplayTypefro…...
自己做的html网页怎么发布/seo标题优化步骤
西湖区附近上门维修电脑费用池故障、电池不充电、电池不放电、使用电池不能开机、电池供电时间缩短专业电脑精修 网络布线 安防安装专业维修:台式机 笔记本 网络维护 安防 网络布线 数据恢复 笔记本除尘 苹果系统安装 维修打印机 维修复印机专为电脑用户提供软硬件上…...
设计的很好的网站/临沂网站建设
最近有空研究了一下基于Opencv的视频人数统计。总结了一下,视频人数统计系统的工作流程主要包括以下几个部分: 1.视频捕获 从视频源(摄像头或视频文件)获取到视频图像数据。 2.目标提取(背景建模、前景分析ÿ…...
简易广州网站建设/外贸建站seo
第四章 进程 1、windows支持两种应用程序:GUI程序和CUI程序,即图形用户界面程序和控制台应用程序。 在Visual Studio中,可以使用项目属性的连接器开关设置选择哪种程序,/SUBSYSTEM:CONSOLE和/SUBSYSTEM:WINDOWS 当运行应用程序时操…...