大型语言模型入门

news2025/1/12 10:48:32

大型语言模型

快速、全面了解大型语言模型。学习李宏毅课程笔记。

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,也就是第四代模型
    这次引入了监督式学习,就是人类老师教给它,想要让它做的事情。
    反过来说,如果GPT网络上爬了数据自己学习,叫作自监督学习,就是自己教自己,相当于课堂前的预习,就叫预训练。所以预训练就是今天很多人工智能成功的关键,预训练好的模型就叫作基石模型,然后经过一些微调,经过人类老师的教学,就可以有很大的提升。
    在这里插入图片描述

监督式学习&预训练&增强学习

监督式学习

监督式学习的重要性:
其实到今天,ChatGPT背后的原理仍然是一种猜想。在InstructGPT这篇文中有张图,纵轴是模型的好坏,横轴是模型参数的大小,蓝色线是模型自监督学习的结果,也就是自己学习网络数据,红色线是监督式学习,就是啊加入了人类老师指导的结果。可以看到,加入了人类指导,即使参数量很小的模型,都比参数量最大的自监督学习模型厉害。就相当于天资再好的学生,都不如那个虽然天资不好,但老师好好教他的模型,所以说明老师(监督式学习)的重要性。
在这里插入图片描述

预训练

预训练的重要性:有预训练后,监督式学习不用大量资料!

预训练有多神奇呢?在多种语言上做预训练后,只要教某一个语言的某一个任务,模型就可以自动学习学会其他语言的同样任务。
举个例子,有个语言模型Bert,它自学过104种语言(预训练),现在人类教它学习英文阅能力测验(微调),但不教它中文的阅读能力测验,然后现场让它答中文的,它也答的出来!
在这里插入图片描述

那预训练后,需要多少数据就能微调呢?就是老师需要教多少就能让这个模型学生开窍呢。
仍然是InstructGPT这篇文中也可以看到,人类老师只提供了一万多的数据,就微调好模型了。
在这里插入图片描述

增强学习

除了监督式学习,ChatGPT还有增强学习(Reinforcement Learning, RL)来强化它的能力。增强学习就是人类老师只提供回馈哪个答案是更好的。

那监督式学习和增强学习之间什么区别呢?
一个需要人类做解答题,一个只要做选择题。监督式学习需要人类老师提供完整的正确答案(这个很花人力气,多数人可能不愿这么做,可能只有OpenAI的标记员有心力做这件事),但在增强学习中,老师不需要提供完整正确答案,只需要反馈哪个答案更好,因此每个人都可以做。

增强学习原理比较复杂,感兴趣的同学可以学习其他相关课程。
从人类的回馈学习,有个专门的简称:RLHF。

在这里插入图片描述

基本概念

当输入一个问题,模型给你两个答案,你就告诉它哪个答案更好,模型就会想办法把你觉得好的答案提高输出的概率,不好的答案降低它的概率。

一般先做预训练,再做监督式学习,最后做增强学习。为什么最后做增强学习呢?
因为模型要有一定程度的能力后,才适合进行增强学习,这样效果更好。
背后的假设就是,你的模型要偶有佳作,必须要有时候能得出不错的答案,人类反馈这个答案是好的,然后提高这个答案的概率才有意义。如果模型输出的效果整体不好,即使人类从两个差的答案里勉强选一个,模型相当于还是在提高差的答案的概率,可能这时候增强学习帮助就不大。因此,增强学习一般放在整个训练过的最后。

ChatGPT中的增强学习:
刚才讲到增强学习就是增强好的那一个答案的概率,但是这样的话,机器只学习到把某一个问题做好,怎样才能做到人类给某一个问题回馈,但是其他问题也能同时做好呢?

ChatGPT的增强学习过程分为两个步骤:

  • 模仿人类老师的喜好
    如:当人类反馈“玉山”答案更好的时候,ChatGPT就会另外再训一个Reward Model,就是把问题+所有可能的答案输入Reward Model,输出一个得分,让人类觉得好的答案的分数就高,不好的分数就低,这样就相当于训练出了一个人类老师的代替品。
    在这里插入图片描述好了,现在把人类老师解放了,让Reward Model来代替人类老师的角色。接下来就是步骤2。

  • 向模拟老师学习
    现在就可以把问题+答案输入给Reward Model了,让它替人类老师打分,对好的答案打高分,差的答案打低分。
    打低分,降低概率
    在这里插入图片描述
    打高分,提高概率
    在这里插入图片描述

总结:
ChatGPT的训练:预训练+监督学习+增强学习

其中,监督学习+增强学习 = 对齐,即对齐人类的需求。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1968787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手教你如何在Linux上轻松安装Python,告别编程入门难题

导语: Python作为当下最热门的编程语言之一,受到了越来越多人的喜爱。对于Linux用户来说,掌握如何在Linux上安装Python至关重要。今天,就让我带领大家一步步在Linux上安装Python,让你轻松迈入编程世界! 一…

MATLAB(7)潮汐模型

一、前言 在MATLAB中模拟潮汐通常涉及到使用潮汐的理论模型,如调和常数模型(Harmonic Constants Model),它基于多个正弦和余弦函数的叠加来近似潮汐高度随时间的变化。以下是一个简化的MATLAB代码示例,用于模拟一个基于…

centos在线安装部署2024年最新的docker版本

1.yum 包更新到最新 sudo yum update -y2.安装依赖软件包 sudo yum install -y yum-utils device-mapper-persistent-data lvm23.添加阿里的镜像,下载镜像速度比较快 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/dock…

docker compse简介与安装

目录 1. Docker Compose 简介 2. Docker Compose 安装 2.1 在 Ubuntu 上安装 Docker Compose 2.1.1 通过 apt 安装 2.1.2 使用官方脚本安装最新版本 2.2 在 CentOS 上安装 Docker Compose 2.2.2 使用官方脚本安装最新版本 2.2.3 使用 pip 安装 2.3 在 openEuler 上安装…

【跨时代】第四次工业革命彻底来袭!什么是AI+

你有没有一种很割裂的感觉,就是在短视频里,AI已经要改变全世界了 但自己一用,却发现只能和AI聊聊天 画几张图 难道是姿势不对?但具体是哪里不对呢。 作为一个老牌程序员,我前面分享了很多计算机相关内容,总…

java基础概念06-原码、反码、补码

一、八位二进制的取值范围(没有符号位) 二、原码 三、反码 若是反码的计算结果跨0了,则会溢出,计算结果又误差! 原因:在反码当中0有两种表现形式: 解决方式:将反码中的两个0&#x…

SSM大学生体质管理系统-计算机毕业设计源码75960

摘要 基于SSM的大学生体质管理系统是一款综合性平台,融合了在线课程、健康知识、体测报告等多项功能,旨在为广大大学生提供全方位的健康管理服务。通过在线课程和健康知识模块,用户可以随时学习健康知识,掌握科学的健康管理方法&a…

推荐一个比较好的开源位置服务平台

平台简介 一直想做一款后台管理系统,同时可以管理人,车,物品,猫,狗,牛羊等一切可以移动的室外事物进行集中化管理,最初的需求聚焦——谁在哪儿! 系统框架是基于当前最常用的RuoYi框架…

C# 设计模式之创建者模式

总目录 前言 在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成。例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象&…

DVWA (SQL注入 low)

(1)判断注入是字符型还是数值型 判断恒为真,字符型,输出ures表中全部用户信息。 1 or 123 123 # (2)猜测SQL查询字段数 1后面加 闭合 id 查询的 ,末尾加# 是注释了后面 的内容&#xff…

LLM智能体工程落地思考(一)

人工智能领域著名教授吴恩达在今年3月份红杉资本的人工智能峰会(AI Ascent)以及最近Snowflake峰会开发者日上都发表了关于AI Agent(人工智能体)的演讲。演讲中,其分享了对AI Agent未来发展潜力的展望。认为AI Agent能够让人工智能胜任更多种类的任务,甚至…

STL源码刨析:树的导览

目录 1.前言 2.关联式容器 3.二叉搜索树 4.平衡二叉搜索树 前言 在阅读了STL源码刨析系列的前几章,我们可以知道容器分为序列式容器和关联式容器。在前几个小节中,我们对序列式容器中的vector和list容器进行了讲解,并比较了vector和list的区别…

学习记录——day24 多线程编程

目录 多线程局部概念 线程支持函数(多线程编程) pthread_create:创建线程 pthread -self:线程号获取 pthread_exit:线程退出函数 pthread_jion:线程资源回收 pthred_detath:线程分离态 p…

检索增强生成(RAG):智能内容生成的新纪元

引言 在大 AI 时代,生成式人工智能(GenAI)模型,尤其是大型语言模型(LLM),已经展现出了令人瞩目的能力。然而,这些模型在提供信息的准确、即时、专业、权威等方面仍存在局限。检索增…

1.2、安装k8s-node1 和 k8s-node2节点虚拟机

k8s-master节点的虚拟机环境弄好之后,这小节继续介绍k8s-node1 和 k8s-node2节点虚拟机环境安装。 节点主机名ip主节点k8s-master172.31.0.10节点1k8s-node1172.31.0.11节点2k8s-node2172.31.0.12 在D:\vagrant目录下新建centos_stream_9_node1文件夹,然…

如何在Python中使用网页抓取API获得Google搜索结果

SERP是搜索引擎结果页的缩写,它是你在百度、谷歌、Bing等搜索引擎中提交查询后所得到的页面。搜索引擎需要给所有页面做排序,把最能解决我们需求的页面展示给我们,企业会非常关注结果页的排序,也就是本企业内容的自然排名情况。手…

革新IT架构管理,宝兰德全新中间件统一管理平台助力企业数字化转型

近期,宝兰德在金融行业科技盛会“2024中国国际金融展”上正式发布了拳头产品「中间件统一管理平台MCP2.0」,旨在推动业务与中间件解耦,解决中间件管理中的版本不统一、自动化程度低、监控不完善、运维效率低、管理分散等问题,实现…

8月1日学习笔记 java环境安装以及tomcat配置

一,java环境安装 1. 效果 2. 步骤 1. 下载 jdk22 # 官网地址 https://www.oracle.com/cn/java/technologies/download s/ wget https://download.oracle.com/java/22/latest/jdk- 22_linux-x64_bin.tar.gz 2. 解压 tar -zxvf jdk-22.2.tar.gz 3. 移动到 us…

快速搞定分布式Kafka

本文从kafka中的实际应用场景分析,讲述kafka的一些基本概念。再讲述zookeeper集群环境的构建;kafka的搭建以及脚本文件编写;最后是一个快速入门的demo.内容会比较多,希望大家能有所收获! 1.Kafka(MQ)实战应用场景剖析…

linux系统ShellCheck检查shell脚步语法正确的工具

目录 ShellCheck 安装ShellCheck 、dnf、yum 源代码编译 步骤如下: 示例命令: 方法三:使用其他第三方仓库、COPR 仓库 假设 ShellCheck 输出如下: 分析输出 修改脚本 再次运行 ShellCheck 1. Shell 脚本最佳实践 主题…