大语言模型LLM入门篇
大模型席卷全球,彷佛得模型者得天下。对于IT行业来说,以后可能没有各种软件了,只有各种各样的智体(Agent)调用各种各样的API。在这种大势下,笔者也阅读了很多大模型相关的资料,和很多新手一样,开始脑子里都是一团乱麻,随着相关文章越读越多,再进行内容梳理,终于理清了一条清晰的脉络。笔者希望通过三篇文章总结(入门篇、原理篇和应用篇)将思路写下来,以便跟我一样的新手读者快速了解大模型的方方面面。在这里,笔者先强调一下,本系列文章的深度有限,只是个人对大模型知识脉络的梳理,同时也会借鉴一下同行的博客内容充实本文,文末将会注明参考来源。
在开始阅读文章之前,有几个问题读者可以先思考一下:
- 什么是大模型?
- 大模型最终要解决的问题是什么?
大模型LLM与人工智能AI
提到大模型(全名,大语言模型,LLM,Large Language Model),绕不开人工智能(AI,Artificial Intelligence)这个概念。
目前业界对于AI的定义有很多,但有一个令我印象深刻的说法:让机器像人一样阅读、写作和交流。通过最近几年AGI的高速发展,AI不仅仅能写作了,还能进行各种各样的创作了。所以,笔者认为这个说明可以进一步完善:人工智能就是要让机器像人一样阅读、创作和交流。
- 阅读:机器能够像人一样接收各种各样的输入,并能够理解这些输入;
- 创作:机器能够像人一样进行创作输出,不仅仅只是写作,还包括:绘画、视频创作等等;
- 交流:在上述理解输入和创作输出的基础上,就自然而然可以实现机器像人一样交流,并且在创作输出能力上,可能比自然人更加优势。
要实现上述描述的人工智能,首先就需要让机器理解人类的输入,人类的输入方式比较多,语言和文字首当其冲。要让机器理解语言和文字,就需要进行语言建模,语言建模的输出就是语言模型LM(Language Model)。
机器通过分析学习大量人类语言和文字,最终获得一个语言模型。通过该模型,机器好像听懂了用户输入一样,对用户的输入进行对应的输出。而用户通过得到的机器输出,也感觉机器理解了自己的意思。但实际这里的听懂和理解都是机器的运算。
那么,这么厉害的模型是怎么来的呢?
大模型LLM的发展与定义
和很多有故事的人的名字一样,大模型一开始并不叫大模型。
大模型的发展经历了4个阶段:
-
统计语言模型
SLM,Statistical Language Model,统计语言模型,基于统计学习方法开发,其基本思想是基于马尔可夫假设建立词预测模型。这种模型常见于我们的全文检索和推荐系统中,通过统计词频等信息来做统计预测,这种模型通常受到维数灾难的困扰。 -
神经语言模型
NLM,Neutral Language Model,通过神经网络,如循环神经网络(RNN),来描述单词序列的概率。该模型引入了词的分布式表示这一概念,并在聚合上下文特征(即分布式词向量)的条件下构建词预测函数。word2vec提出了构建简化的浅层神经网络来学习分布式单词表示的方法,这些表示在各种NLP任务中被证明非常有效。 -
预训练语言模型
PLM,Pre-training Language Model,基于自注意力机制的高度并行化Transformer架构,在大规模无标签语料库上使用专门设计的预训练任务。该模型确立了“预训练和微调”学习范式。在这个范式下,通常需要对PLM进行微调以适配不同的下游任务。 -
大语言模型
LLM,Large Language Model。研究人员发现,扩展PLM(扩展模型大小或数据大小)通常会提高下游任务的模型性能,许多研究通过训练越来越大的PLM来探索性能极限。随后发现,当模型参数达到某一极限之后,模型在解决一系列复杂任务中展示了惊人的能力,这种能力被称为【涌现能力】。
关于涌现能力,业界目前还有很多问题待研究解决。比如:模型参数具体达到多少涌现能力会出现?大模型为什么会突然出现涌现能力等。
通过大模型的发展阶段描述,本节最后总结一下大模型LLM的定义。
大模型是一种采用Transformer架构,模型参数达到百亿或千亿级的预训练模型。
大模型LLM的分类
目前业界涌现了非常多的大模型,也看了网上一些关于对大模型分类归纳的文章,都非常不错,本节主要是对网上的分类信息进行总结。
本节将从以下三个方面来对大模型进行分类:
根据算法原理分类
大模型的架构基本都是Transformer,而Transformer详细的结构在google发布的论文《Attention Is All You Need》中进行了描述,Transformer结构中有两个非常重要的部件:Encoder和Decoder,如下图所示:
根据对Transformer结构的裁剪,可以将目前的大模型分为三类:
- Encoder-Only:裁剪了Decoder部件,代表模型BERT,到了2020年之后,这类技术基本已经不再发展。
- Encoder-Decoder:没有裁剪任何部件,代表模型T5。
- Decoder-Only:裁剪了Encoder部件,代表模型GPT,目前主导LLM领域的发展。
下面是一张结合了大模型出现时间以及所属架构分类的图片,分别详细阐述了各个分类有哪些代表模型,以及模型出现的时间。
根据输入内容分类
根据输入内容不同,可以分为以下三类:
- 语言大模型
指在自然语言处理(Natural Language Processing,NLP)领域中的一类大模型,通常用于处理文本数据和理解自然语言。
这类大模型的主要特点是它们在大规模语料库上进行了训练,以学习自然语言的各种语法、语义和语境规则。
例如:GPT 系列(OpenAI)、Bard(Google)、文心一言(百度)。
- 视觉大模型
指在计算机视觉(Computer Vision,CV)领域中使用的大模型,通常用于图像处理和分析。
这类模型通过在大规模图像数据上进行训练,可以实现各种视觉任务,如图像分类、目标检测、图像分割、姿态估计、人脸识别等。
例如:VIT 系列(Google)、文心UFO、华为盘古 CV、INTERN(商汤)。
- 多模态大模型
指能够处理多种不同类型数据的大模型,例如文本、图像、音频等多模态数据。
这类模型结合了 NLP 和 CV 的能力,以实现对多模态信息的综合理解和分析,从而能够更全面地理解和处理复杂的数据。
例如:DingoDB 多模向量数据库(九章云极 DataCanvas)、DALL-E(OpenAI)、悟空画画(华为)、midjourney。
根据应用领域分类
按照应用领域,大模型主要可以分为 L0、L1、L2 三个层级:
-
通用大模型 L0:
是指可以在多个领域和任务上通用的大模型。
它们利用大算力、使用海量的开放数据与具有巨量参数的深度学习算法,在大规模无标注数据上进行训练,以寻找特征并发现规律,进而形成可“举一反三”的强大泛化能力,可在不进行微调或少量微调的情况下完成多场景任务,相当于 AI 完成了“通识教育”。 -
行业大模型 L1:
是指那些针对特定行业或领域的大模型。
它们通常使用行业相关的数据进行预训练或微调,以提高在该领域的性能和准确度,相当于 AI 成为“行业专家”。 -
垂直大模型 L2:
是指那些针对特定任务或场景的大模型。
它们通常使用任务相关的数据进行预训练或微调,以提高在该任务上的性能和效果。
读完本文,文章开篇的两个问题应该都有答案了。感谢各位读者的关注、收藏和点赞,为后续原理篇和应用篇的编写提供动力!
参考文献
- 大模型基本概念和分类介绍总结
- 一张图总结大语言模型的技术分类、现状和开源情况
- 《Attention is all you need》
相关文章:

大语言模型LLM入门篇
大模型席卷全球,彷佛得模型者得天下。对于IT行业来说,以后可能没有各种软件了,只有各种各样的智体(Agent)调用各种各样的API。在这种大势下,笔者也阅读了很多大模型相关的资料,和很多新手一样&a…...
Alibaba Cloud Linux 安装mysql及注意事项
1.安装mysql #1.运行以下命令,更新YUM源。 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm#2.(可选)当操作系统为Alibaba Cloud Linux 3时,执行如下命令,安装MySQL所需的库文件…...
设计模式——工厂模式(Factory)
工厂模式(Factory Pattern)是一种常用的设计模式,它提供了一种封装创建对象过程的方法。通过工厂方法或工厂类,你可以将对象的创建与使用分离,使得代码更加灵活和可维护。工厂模式主要分为三种类型:简单工厂…...

NVIDIA Omniverse Cloud API支持数字孪生开发,可解决复杂AI问题 | 最新快讯
在全球范围内,价值超过 50 万亿美元的重工业市场,正在竞相实现数字化。 基于此,为帮助数字孪生技术更好地赋能千行百业,AI 企业 NVIDIA 在架构底层算力的同时,也搭建了 NVIDIA AI Enterprise 和 Omniverse 两大平台。 …...

智慧电力,山海鲸引领
随着科技的不断进步和电力行业的快速发展,智能化管理已成为电力行业的重要趋势。在这一背景下,山海鲸智慧电力管理系统凭借其卓越的性能和创新的功能,为电力行业带来了革命性的改变。 山海鲸智慧电力管理系统是一套集数据采集、分析、展示于…...

【文章转载】ChatGPT 提示词十级技巧: 从新手到专家
学习了微博网友宝玉xp老师《ChatGPT 提示词十级技巧: 从新手到专家》 个人学习要点: 1、关于提示中避免使用否定句,播主说:“没有人能准确解释为什么,但大语言模型在你告诉它去做某事时,表现似乎比你让它不做某事时更…...

类的生命周期
目录 一、概述 二、加载阶段 三、连接阶段 连接阶段之验证 连接阶段之准备 连接阶段之解析 四、初始化阶段 五、总结 一、概述 类的生命周期描述了一个类加载、使用、卸载的整个过程。 也是其他知识的基础: 类的生命周期: 二、加载阶段 加载(Loading…...

AI赋能分层模式,解构未来,智领风潮
🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自热榜文章🔥:探索设计模式的魅力:AI赋能分…...

Linux平台下muduo网络库源码编译安装与测试,包含boost库的安装与测试!!!!
最近在学习muduo网络库,先来记录一下如何在Linux平台下编译安装以及测试muduo网络库源码。 获取源码 muduo库源码github仓库地址: https://github.com/chenshuo/muduo 在linux系统下,输入 git clone https://github.com/chenshuo/muduo.git…...

MATLAB 函数
MATLAB 函数 函数是一起执行任务的一组语句。在MATLAB中,函数是在单独的文件中定义的。文件名和函数名应该相同。 函数在其自己的工作空间(也称为本地工作空间)中对变量进行操作,与在MATLAB命令提示符下访问的工作空间࿰…...

spring高级篇(七)
1、异常处理 在DispatcherServlet中,doDispatch(HttpServletRequest request, HttpServletResponse response) 方法用于进行任务处理: 在捕获到异常后没有立刻进行处理,而是先用一个局部变量dispatchException进行记录,然后统一由…...
根据token获取了username后,能否在其他地方使用这个获取的username,或者在其他地方如何获取username?
当然可以在其他地方使用获取到的用户名。一旦你从token中获取到用户名,你可以将其存储在能够在整个应用程序中访问的地方。 在你的代码中,你从token中获取用户名的地方是这里: String username getUsernameFromToken(token);在这行之后&am…...
值模板参数Value Template Parameters
模板通常使用类型作为参数,但它们也可以使用值。使用类型和可选名称声明一个值模板参数,方式与声明函数参数类似。值模板参数仅限于可以指定编译时常量的类型是bool、char、int等,但不允许使用浮点类型、字符串字面值和类。 #include <io…...

Splashtop 荣获 TrustRadius 颁发的“2024年度最受欢迎奖”
2024年5月8日 加利福尼亚州库比蒂诺 Splashtop 在全球远程访问和支持解决方案领域处于领先地位,该公司正式宣布将连续第三年荣获远程桌面和远程支持类别的“TrustRadius 最受欢迎奖”。Splashtop 的 trScore 评分高达8.6分(满分10分)&#x…...

使用python将`.mat`文件转换成`.xlsx`格式的Excel文件!!
要将.mat文件转换成.xlsx格式的Excel文件 第一步:导入必要的库第二步:定义函数来转换.mat文件第三步:调用函数注意事项 要将.mat文件转换成.xlsx格式的Excel文件,并保持文件名一致,你可以使用scipy.io.loadmat来读取.m…...
python基础 面向练习学习python1
python基础 面向练习学习python1 1. 电话查询问题描述1. 问题分析1. 输入输出分析2. 需求分析:将题目的数据存储并查询2. 所需知识: python 数据存储的类型3. 确定数据存储类型4. 如何书写代码拓展 从键盘中添加或删除联系人5. 回到数据查询 代码拓展 功…...
Ubuntu安装Docker和Docker Compose
文章目录 Docker安装Docker Compose安装示例前端Dockerfile示例 Docker官网: https://docs.docker.com/ Docker镜像仓库: https://hub.docker.com/ Docker安装 安装curl(可选) 如果已经安装了curl,则跳过此步骤 # 更新包缓存 sudo apt u…...

【linux软件基础知识】-死锁问题
死锁问题 当两个或多个线程由于每个线程都在等待另一个线程持有的资源而无法继续时,就会发生死锁 如下图所示, 在线程 1 中,代码持有了 L1 上的锁,然后尝试获取 L2 上的锁。 在线程 2 中,代码持有了 L2 上的锁,然后尝试获取 L1 上的锁。 在这种情况下,线程 1 已获取 L…...
C#面:简要谈对微软.NET 构架下 remoting 和 webservice 两项技术的理解以及实际中的应用
在微软 .NET 框架下,Remoting 和 WebService 是两种常用的技术,用于实现分布式应用程序的通信和交互。 Remoting(远程调用): Remoting是一种用于在不同应用程序域之间进行通信的技术。它允许对象在不同的进程或计算机…...
《21天学通C++》(第十九章)STL集合类(set和multiset)
为什么需要set和multiset: 1.自动排序: set和multiset会自动按照元素的值进行排序。 2.快速查找: 由于元素是有序的,set和multiset可以提供对元素的快速查找,通常是基于二叉搜索树实现的,查找操作的时间复杂度为O(log …...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...