大语言模型LLM原理篇

news2025/1/18 9:00:25

大模型席卷全球,彷佛得模型者得天下。对于IT行业来说,以后可能没有各种软件了,只有各种各样的智体(Agent)调用各种各样的API。在这种大势下,笔者也阅读了很多大模型相关的资料,和很多新手一样,开始脑子里都是一团乱麻,随着相关文章越读越多,再进行内容梳理,终于理清了一条清晰的脉络。笔者希望通过三篇文章总结(入门篇、原理篇和应用篇)将思路写下来,以便跟我一样的新手读者快速了解大模型的方方面面。在这里,笔者先强调一下,本系列文章的深度有限,只是个人对大模型知识脉络的梳理,同时也会借鉴一下同行的博客内容充实本文,文末将会注明参考来源。

笔者写原理篇时心情是有些惴惴不安的,因为毕竟对大模型的研究有限,缺乏深度。但是,还是觉得有必要记录一下学习理解心得,权当自己的学习笔记吧!如果本文有疏漏,敬请留言指正,勿喷,谢谢!

大模型架构

要说清楚大模型的原理,必须先大致了解大模型的架构。在上一篇文章中的分类中提高,大模型基本都是采用的Transformer架构,而该架构整体可以分为四个部分:

  • 输入(Input):对输入的内容进行向量化,计算机只能对数字进行计算和转换;
  • 编码器(Encoders):通过自注意力机制,将输入内容Token之间的隐含关联信息以向量的形式进行表征;
  • 解码器(Decoders):循环迭代预测下一个元素出现的概率,将本轮预测结果作为输入,进行下一轮预测。
  • 输出(Output):将预测结果进行向量化,最终得到一个矩阵。

Transformer架构图如下:

大模型原理

向量与矩阵

在正式讲解大模型原理之前,有两个数学概念需要先了解一下。

  • 向量
    向量表示形式类似于数组,但是值只能为数字,如:[1,2,3,4]。
    向量用来通过一组特征来描述一个事物。比如苹果可以描述为:一种圆形的,果皮上有纹路的,味道酸甜的水果。用向量则可以表示为:[0, 1, 3, 4],其中0表示形状值-圆形,1表示果皮是否有纹路-有,3表示口味值-酸甜,4表示物体品类-水果。
    同理,用户输入文本中的每个词也都可以用向量表示。

  • 矩阵
    矩阵类似多维数组,但是值只能为数字。多个同维度向量可以组成矩阵,向量是一种特殊的矩阵。

原理阐述

通过上述对Transformer架构的描述,可以得出一个大模型的大致原理,分为两个阶段:
(1)模型训练生成阶段
通过将海量数据输入到Transformer系统中进行训练计算,最终输出一个矩阵W,这就是训练的结果 —— (大)模型。是否为大模型,需要根据参数量和数据量来判断,这两个因素也决定了模型矩阵W的维度大小。

(2)模型应用进化阶段
将用户输入的信息转化为向量X,将向量X与模型W矩阵进行计算,得到一个向量Y,再将Y反向量化为用户能看懂的信息(比如:文本)。当然,在实际的应用过程中,模型会随着用户的使用交流,得到进化,本质上是矩阵W的某些数值会发生调整。

下图是笔者理解的大模型的训练和使用原理图:
在这里插入图片描述

上述原理阐述中有一个比较关键的问题需要弄清楚:文本如何转化为向量?

(1)先将输入文本切换为词元Token;
(2)然后用向量对单个Token进行表示;
(3)再将词元在文本中的位置信息表示为向量;
(4)将Token本身的向量与位置向量相加,则得到了该Token的表征向量。
一个文本输入最终被转为化一个向量矩阵,但是在推理过程中,仍是对一个Token进行推理的(即与一个向量进行运算),更详细的词向量化原理可以参考文末引用的文章。以下是一个词向量化示意图:
在这里插入图片描述

简单总结

  1. 所有喂给大模型的数据,都是需要先进行词向量化的,计算机只能通过数字计算来实现推理或思考;
  2. 大模型本质上是一个维度非常巨大的矩阵;
  3. 模型训练和微调本质上是调整模型矩阵的值;
  4. 大模型回答用户问题,实质上是先将用户输入向量化之后,再与模型矩阵进行运算得到值最优的向量值,再将该向量值转为用户可以理解的信息返回给用户。
参考文献
  • 大模型词向量:解析语义,助你成为沟通达人
  • 大模型解惑
  • Transformer模型详解(图解最完整版)
  • 模型 · 向量和矩阵

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

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

相关文章

苹果 iPhone 15 Pro Max 称霸:智能手机市场势不可挡

苹果 iPhone 15 Pro Max 称霸:智能手机市场势不可挡 概述 在拥挤且竞争激烈的智能手机市场中,苹果的 iPhone 15 Pro Max 成为明显的赢家,在 2024 年第一季度最畅销智能手机排行榜上名列前茅。根据 Counterpoint Research 的数据&#xff0c…

css: 动态设置网格线

参考这个博客做了网格线&#xff1a; http://t.csdnimg.cn/y20vM 把网格颜色&#xff0c;宽高和透明度做成可配置项。 <e-collapse title"网格线" :expand"false"><t-form-item label"颜色"><el-color-picker v-model"fo…

vue2+Ts中openLayer绘图工具组件封装

vue2Ts中openLayer绘图工具组件封装 效果&#xff1a; 封装组件代码&#xff1a; <!-- openLayer绘图工具 --> <template><a-button-group v-show"isShow"><a-button v-if"shouldShowButton(point)" click"draw(Point)"…

Axure10_win安装教程(安装、汉化、授权码,去弹窗)

1.下载Axure10 链接&#xff1a;https://pan.baidu.com/s/1fc8Bgyic8Ct__1IOv-afUg 提取码&#xff1a;9qew 2.安装Axure10 因为我的电脑是Windows操作系统&#xff0c;所以我下载的AxureRP-Setup-Beta v10.0.0.3816 (Win).exe 一直点下一步就行 3.Axure10中文 打开Axure…

(python)cryptography-安全的加密

前言 cryptography 是一个广泛使用的 Python 加密库&#xff0c;提供了各种加密、哈希和签名算法的实现。它支持多种加密算法&#xff0c;如 AES、RSA、ECC 等&#xff0c;以及哈希函数&#xff08;如 SHA-256、SHA-384 等&#xff09;和数字签名算法(如 DSA、ECDSA 等). 目录 …

Linux下Code_Aster源码编译安装及使用

目录 软件介绍 基本依赖 其它依赖 一、源码下载 二、解压缩 三、编译安装 四、算例运行 软件介绍 Code_aster为法国电力集团&#xff08;EDF&#xff09;自1989年起开始研发的通用结构和热力耦合有限元仿真软件。Code_aster可用于力学、热学和声学等物理现象的仿真分析&…

诺基亚3210复古风再起:情怀与现实的碰撞

在数字科技日新月异的今天&#xff0c;诺基亚的复古风潮却意外地掀起了波澜。这款曾经风靡一时的诺基亚3210&#xff0c;在时隔二十五年后&#xff0c;以全新的面貌再次回归市场&#xff0c;引发了无数人的怀旧与好奇。 诺基亚的这次“千禧回归”策略&#xff0c;无疑是对Y2K潮…

Java——类和对象第二节——封装

1.什么是封装 封装是面向对象程序的三大特性之一&#xff0c;面向对象程序的三大特性分别是封装&#xff0c;继承&#xff0c;多态 而封装简单来说就是套壳隐藏细节 打个比方&#xff1a; 在一些电脑厂商生产电脑时&#xff0c;仅对用户提供开关机键&#xff0c;键盘输入&a…

鸿蒙布局Column/Row/Stack

鸿蒙布局Column/Row/Stack 简介我们以Column为例进行讲解1. Column({space: 10}) 这里的space: 10&#xff0c;表示Column里面每个元素之间的间距为102. width(100%)&#xff0c;height(100%) 表示宽高占比3. backgroundColor(0xffeeeeee) 设置背景颜色4. padding({top: 50}) 设…

基于Springboot+Vue的Java项目-农产品直卖平台系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

【docker】SpringBoot应用容器镜像日志挂载

启动镜像时候使用 -v 挂载 首先得在宿主机创建目录&#xff1a;/workspace/java/demo/logs mkdir -pv /workspace/java/demo/logs 启动镜像 docker run -p 8080:8080 -itd -v /workspace/java/demo/logs/:/logs/ 192.168.2.1:5000/demo:0.0.1-SNAPSHOT -v /workspace/ja…

VMware虚拟机没有网,无法设置网络为桥接状态

今天需要使用Ubuntu18但现有虚拟机是Ubuntu20&#xff0c;由于硬盘空间不够大&#xff0c;所以删除了原来的虚拟机并重新搭建Ubuntu18的环境&#xff0c;然后发现虚拟机没有网络&#xff0c;而我之前的虚拟机这一切都是正常的。 在网络设置里勾选的是桥接模式但无法联网&#x…

如何基于可靠事件模式实现最终一致性?

今天我们一起来探讨一个分布式环境下的常见问题,这个问题与数据的一致性有关。那么,什么是数据一致性呢?要回答这个问题,需要我们回顾一下单块系统和分布式系统中对于数据处理的不同需求。 我们知道,传统的单块系统通常都只与一个数据库进行交互,所有的数据处理过程都位于…

前端连续发送同一个请求时,终止上一次请求

场景&#xff1a;几个tab页之间快速的切换&#xff08;tab页只是参数不同&#xff0c;下边的数据渲染给同一个data&#xff09;就会导致如果我在1,2,3&#xff0c;tab页按照顺序快速点击&#xff0c;发送三个请求&#xff0c;我想要展示的是3但是如果1或者2请求响应的时间比3长…

广汽原车控制系统CAN协议控制汽车基本信息获取及数据应用

在现代汽车工业的迅速发展中&#xff0c;车辆控制系统的智能化和网络化已成为提升汽车性能的关键。广汽作为中国汽车行业的佼佼者&#xff0c;其在原车通信网络方面也取得了显著的成就。特别是广汽原车CAN&#xff08;Controller Area Network&#xff09;协议的应用&#xff0…

unordered_map、unordered_set底层封装

文章目录 一、先实现哈希桶1.1哈希桶的实现方法1.2日常普遍的哈希桶存放的数据有两种&#xff1a;字符串和整形1.3哈希桶的实现代码详解1.3.1哈希桶的两种仿函数&#xff08;int和string&#xff09;1.3.2哈希桶的节点&#xff08;如果桶非常深&#xff0c;这里考虑挂红黑树&am…

k8s 网络组件详细 介绍

目录 一 k8s 有哪些网络组件 二 k8s 网络概念 1&#xff0c; k8s 三种网络 2&#xff0c;K8S 中 Pod 网络通信 2.1 Pod 内容器与容器之间的通信 2.2 同一个 Node 内 Pod 之间的通信 2.3 不同 Node 上 Pod 之间的通信 三 Flannel 网络组件 1&#xff0c;Flannel …

leetcode.所有可能的路径(python)

找到从节点0到n-1的所有路径&#xff0c;肯定是用dfs算法&#xff0c;不过有两种思考方式&#xff1a; 一种是&#xff1a;从后往前考虑。如果这条路能到n-1节点&#xff0c;那么dfs返回一个rec列表&#xff0c;里面存路径。 class Solution:def allPathsSourceTarget(self, …

C语言数据结构(超详细讲解)| 栈和队列的实现

栈和队列的实现 引言 在计算机科学的世界里&#xff0c;数据结构是我们构建各种复杂算法和解决问题的基石。其中&#xff0c;栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;作为两种经典的数据结构&#xff0c;在解决实际问题时发挥着不可或缺的作用。…

【回溯 代数系统】679. 24 点游戏

本文涉及知识点 回溯 代数系统 LeetCode679. 24 点游戏 给定一个长度为4的整数数组 cards 。你有 4 张卡片&#xff0c;每张卡片上都包含一个范围在 [1,9] 的数字。您应该使用运算符 [‘’, ‘-’, ‘*’, ‘/’] 和括号 ‘(’ 和 ‘)’ 将这些卡片上的数字排列成数学表达式…