​LLM之新手入门:大预言模型的概念介绍与应用

最近,我在系统地学习大型语言模型(LLM)的相关知识。在这个学习过程中,我努力将所学的内容整理成博客文章。在这篇博客中,我首先简要介绍了人工智能的发展历史,然后探讨了大型模型的基本原理、训练方法、微调技巧、实际使用方式、模型压缩策略以及它们可能的应用场景。通过这篇文章,读者可以对大型语言模型的整体框架和功能有一个初步而全面的认识。

博客首发地址:LLM之新手入门:大语言模型LLM的概念汇总与应用 - 知乎

1 大语言模型:NLP技术的奇点时刻

1.1 技术探索:深度学习加速推进数据的无损压缩

人类对机器智能的探索由来已久:

 如何让机器像人类一样思考,获得与人类相当的智能,一直是很多工智能学者毕生的目标。自英国数学家阿兰·图灵在1950 年提出了“机器能思考吗”这一跨世纪的命题以来,人类就从未停止对机器智能的探索。从最简单的统计规则方法,到借鉴人类大脑生物结构的神经网络模型,再到如今拥有千亿级参数的超大规模预训练模型,深度学习因其能够实现非线性空间的有效变换,并能利用GPU等硬件实现加速计算,因而成为人工智研究领域的核心主线。无论是早期的RNN,还是其改进后的变体LSTM,亦或是本轮生成式AI浪潮的起源 Transformer,它们本质上都是用一个更有效的神经网络去实现数据的无损压缩,而数据的压缩能力或许就是机器智能的一种展现。

人工智能底层算法的探索历程

1.2 技术应用:预训练语言模型成为 NLP 主流

从单一小模型到预训练模型的范式转移:

 语言模型的本质是对任意一段文本序列进行概率建模,用一个高维向量来表示一个 token 的全部特征。

  • 早期的研究者发明了 Word2Vec,一种用于将自然语言中的单词表示为向量的技术,它基于神经网络,并且可以通过训练大规模语料库来学习单词之间的语义和语法关系,是深度学习应用在 NLP 领域的早期范式;
  • 随着对长文本特征提取能力更强,计算效率更高的神经网络的提出,研究者开始尝试用更多的数据去训练一个能力更强的模型——预训练模型,然后通过迁移学习的方法使其适用于下游特定的任务。这就是 Google 在 2018 年提出的 BERT(Bidirectional Encoder Representation from Transformers,基于Transformer 的双向编码器)的核心思想;
  • 然而,OpenAI 在这一时期坚定押注于 GPT(Generative Pre-Trained Transformer,基于 Transformer 的单向解码器)这一路线,坚信通过优化“下一个词预测”,以及扩大训练模型的参数量和数据量,机器能够对文本语料拥有与人类相似的“理解”能力。当前,OpenAI 与 ChatGPT 的成功,使得运用大语言模型做“预训练+提示”的范式,逐步取代了 BERT 时代“预训练+下游任务改造”的范式,成为了 NLP 业内新的主流。

自然语言处理(NLP)发生的三次技术范式转移

1.3 技术跃迁:大语言模型可能打开通往AGI之路

 直到2022年底ChatGPT发布,学界和工业界开始意识到,OpenAI 对生成类模型(GPT)和算法规模化(Scalability)的两个基础技术路线押注,可能是让机器获得智能的可行路径,甚至是打开通往通用人工智能(AGI,Artificial General Intelligence)这一终极理想的金钥匙。因此,我们可以认为,当前以ChatGPT 为代表的大语言模型开启的本轮科技浪潮,其重要性可能高于过去任何一次 AI 技术的突破,实现 AGI 的愿景可能已并不遥远。当然,技术的突破与未来的潜在瓶颈也正都源于此,大模型与生俱来的 Hallucination(幻觉)使其输出的内容天生具有可靠性低的特点;另一方面,大模型的模型规模化能力的天花板也有待进一步探索。因此,提升模型可靠性和提升模型性能共同构成了大模型未来迭代的核心靶点。

本次以 GPT 为代表的生成式 AI 技术进步路线图

2 OpenAI 与 GPT:算法、工程、商业的融合

2.1 GPT 系列模型的发展历程:千锤百炼,终见“涌现”

  • 对 GPT 路线的执着探索(GPT-1~3):2018 年 6 月,OpenAI 推出基于 Transformer Decoder 改造的 GPT-1,但其在下游理解类任务的性能远低于同 年 10 月 Google 推出的基于 Encoder 的 BERT;2019 年 GPT-2 推出后,尽管 性能仍不如 BERT,但 OpenAI 发现 Zero-shot 和 Few-shot 的方式可能可以 直接训练一个通用的语言模型;到了 2020 年的 GPT-3,OpenAI 决定直接将 模型参数扩大到了 175B,这一举动正式掀开了大语言模型的序幕;
  • 涌现能力的出现(GPT-3.5):OpenAI 在 GPT-3 的基础上通过融合指令微调 训练得到的 InstructGPT、基于代码数据训练的 Codex、以及基于人类反馈 的强化学习(RLHF,Reinforcement Learning from Human Feedback),训练 得到了 GPT-3.5,某种意义上实现了大模型能力的“涌现”(在某些复杂能力 上实现突破)。GPT-3.5 也成为了开启本轮生成式AI浪潮的爆款产品 ChatGPT背后的核心功臣。
  • AGI的曙光已现(GPT-4):2023年3月,OpenAI发布了基于GPT-3.5的 SOTA(State-Of-The-Art)模型GPT-4,该模型在多模态和可靠性方面实现 了进一步扩展。从泛化能力的角度,GPT-4在创造力、图片理解能力、长文 本处理能力和回答准确性方面都有所提升;从工程能力的角度看,通过与 Azure在算力设施上深度定制合作,GPT-4能够以千分之一的计算量去预测 在一定计算规模下的性能(预测最终模型的Loss);从可靠性的角度,GPT- 4自去年8月训练完成后,花费了大量时间做对齐(Alignment),甚至不惜 牺牲部分性能以提升其内容输出的可靠性。

OpenAI的GPT系列模型发展历程

2.2如何训练一个ChatGPT:预训练获得“智商”,指令微调提升“情商”

 模型的训练可分解为预训练基座模型和基座模型的微调。基座模型(Base Model)是经过海量数据预训练(Pre-train)所得到,它具备一定的通用能力, 并将消耗千卡级别的 GPU 算力。这一阶段模型获得了知识,具备了“智商”;但 基座模型往往不能很好地胜任下游的各式任务,以 ChatGPT 为例,模型需要通 过指令微调,才能具备与人类流畅对话的能力(其中数据集需要包含各种与人类 行为、情感相关的指令和任务),使得基座模型在预训练阶段获得的能力被进一 步解锁/激发出来,从而实现从“智商”到“情商”的跨越。值得一提的是,模 型微调不可避免将带来某些性能上的取舍,例如 OpenAI 在他们的指令微调论文 中称其为“对齐税” (alignment tax)。

GPT 模型训练流程

2.3 模型智能的“涌现”是生成式 AI 浪潮的充要条件

模型能力的涌现是生成式AI浪潮的充要条件:

 过去,模型的表现被认为与模型的规模之间服从Power Law,即随着模型规模指数级上升,模型性能只能线性增长;但Google的研究者在2022年发现,当模型规模达到某个阈值时,模型对某些复杂问题的处理性能突然呈现快速增长,这种现象则被称为Emergent Abilities,即涌现能力。例如,研究者发现当大语言模型规模达到一定程度时,思维链提示(Chain of Thought prompting,CoT)可以显著提升大语言模型的性能,尤其适用于处理涉及数学或推理的复杂任务:

  • Zero-shot-CoT:在prompt提问的结尾只需附加“Let's think step by step”这几个词;
  • Few-shot-CoT:在prompt中给与一些关键推理步骤的示例,让模型学习相应的推理过程;

 CoT的意义在于模型可能已经学到了底层的推理过程而非统计意义上记住了输入-输出的概率分布,这是模型拥有“智能”的一个重要体现,也显著打开了大语言模型未来应用的可为空间。

当模型规模达到一定程度时将会出现“涌现”现象

思维链提示可以显著提升大语言模型的性能

3 大模型应用:数据感知与代理(Agent)能力

更多内容阅读需要移步知乎:LLLM之新手入门:大语言模型的概念介绍与应用 - 知乎

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日学习笔记:C++ STL 的forward_list

定义 特点 操作函数 元素查找、移除或安插 forward_list::emplace_after arg...指的是元素构造函数的参数&#xff08;0~N个&#xff09; #include <iostream> #include <memory> #include <list> #include <forward_list> using namespace std;class…

EditText不显示系统键盘,可用来显示自定义的键盘

系统键盘 包含普通键盘和现在很多ROM定制的密码安全键盘 调用已下方法即可解决: https://developer.android.google.cn/reference/android/widget/TextView#setShowSoftInputOnFocus(boolean) 但是,此方法是API 21Android 5.0加入的, 所以为了兼容低版本, 建议使用已下方法: p…

springboot整合最新版minio和minio的安装(完整教程,新人必看)

概述&#xff1a;这种东西&#xff0c;多写点&#xff0c;方便以后自己使用 目录 第一步&#xff1a;docker安装配置minio 第一步&#xff1a;拉取镜像 第二步&#xff1a;创建用于存储MinIO数据的卷 如果是最新版minio直接就使用最后的那个命令创建容器 第三步&#xff…

RabbitMQ 模拟实现【一】:需求分析

文章目录 消息队列消息队列消息队列的作用图解生产者消费者模型BrokerSever 内部涉及的关键概念交换机功能消费的实现方式数据存储方式网络通信消息应答模式 消息队列模拟实现Gitee网址 消息队列 采用 SpringBoot 框架实现 消息队列 通常说的消息队列&#xff0c;简称MQ&am…

json展示curl 请求接口返回结果

使用curl发送请求并将返回结果以JSON格式展示&#xff0c;通常需要确保请求的响应本身就是JSON格式。可以结合jq这个JSON处理工具来格式化输出。 首先要安装jq 工具。 Linux发行版中&#xff0c;你可以使用包管理器来安装它。 sudo yum install jq # 对于CentOS/RHEL 安装成…

多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测

多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测 目录 多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现VMD-CN…

Unity Timeline学习笔记(3) - SignalTrack信号轨道和自定义带参数的Marker信号和轨道

信号轨道&#xff0c;顾名思义就是运行到某处发送一个信号。 普通用法 普通用法就是没有任何封装的&#xff0c;个人感觉特别难用&#xff0c;但是有必要理解一下工作原理。 添加信号 我们添加一个信号资源 生成后可以看到资源文件&#xff0c;这个是可以拖到SignalTrack上…

【Unity】persistentDataPath、streamingAssetsPath和dataPath

介绍 我们在用Unity进行开发时&#xff0c;资源路径是我们最常用到的&#xff0c;下面我就来简单介绍一下几种常用的路径。 1.dataPath dataPath是包含游戏数据文件夹的路径&#xff0c;是app程序包安装路径 Windows: xxx /Assets &#xff08;如下图&#xff09; Mac: xxx…

opencv dnn模块 示例(25) 目标检测 object_detection 之 yolov9

文章目录 1、YOLOv9 介绍2、测试2.1、官方Python测试2.1.1、正确的脚本2.2、Opencv dnn测试2.2.1、导出onnx模型2.2.2、c测试代码 2.3、测试统计 3、自定义数据及训练3.1、准备工作3.2、训练3.3、模型重参数化 1、YOLOv9 介绍 YOLOv9 是 YOLOv7 研究团队推出的最新目标检测网络…

MYSQL 是如何保证binlog 和redo log同时提交的?

MYSQL 一个事务在提交的时候能够保证binlog和redo log是同时提交的&#xff0c;并且能在宕机恢复后保持binlog 和redo log的一致性。 先来看看什么是redo log 和binlog&#xff0c;以及为什么要保持它们的一致性。 什么是redo log&#xff0c;binlog redo log是innodb引擎层…

Spring启动“--”设置参数没生效

现象 在idea中启动SpringBoot项目时&#xff0c;使用“--”设置的启动参数没有生效&#xff0c;如修改端口号“--server.port8082” 原因 排查发现是因为在使用SpringApplication.run启动项目时&#xff0c;没有将args参数传入run方法。 修复方案 SpringApplication.run参数中…

【Sql】MVCC有关问题,以及锁,日志和主从复制原理

目录 MVCC 解决什么问题? 实现原理 隐式字段 undo log Read View(读视图) InnoDB 对 MVCC 的实现 锁 分类 锁升级&#xff1f; InnoDB 的行锁&#xff1f; 死锁避免&#xff1f; 乐观锁和悲观锁 日志 主从复制原理 主从复制的作用 MySQL主从复制解决的问题 涉…