人工智能大语言模型起源篇(一),从哪里开始

序言:许多人最初接触人工智能都是在ChatGPT火热之际,并且大多停留在应用层面。对于希望了解其技术根源的人来说,往往难以找到方向。因此,我们编写了《人工智能大语言模型起源篇》,旨在帮助读者找到正确的学习路径,了解大型语言模型的大致起源。本文将分为三个部分,介绍当前主流的大型语言模型架构Transformer(变换器)模型的起源及其发展历程。Transformer并非横空出世,而是人工智能领域研究者们在长期探索和实验中逐步发展起来的。

大型语言模型(LLM)早已经征服了当今的人工智能领域——这不是开玩笑。在短短五年多的时间里,大型语言模型——即变换器(Transformers)——几乎彻底改变了自然语言处理领域。而且,它们正在彻底改变计算机视觉和计算生物学等领域。

由于变换器对每个人的研究议程产生了如此大的影响,今天的这篇文章我想为那些刚刚入门的人工智能学习研究者和从业者整理一份简短的渐进式阅读清单。

建议按下面清单的先后顺序来阅读,这些则主要是专注于学术研究论文。当然,市场上还有很多其他有用的资源:

Jay Alammar 的《Illustrated Transformer》http://jalammar.github.io/illustrated-transformer/;

Lilian Weng 的《一篇更技术性的博客文章》https://lilianweng.github.io/posts/2020-04-07-the-transformer-family/;

Xavier Amatriain 汇总并绘制的《所有主要变换器的目录和家谱》https://amatriain.net/blog/transformer-models-an-introduction-and-catalog-2d1e9039f376/;

Andrej Karpathy 为了教育目的提供的《生成语言模型的最简代码实现》https://github.com/karpathy/nanoGPT;

Sebastian Raschka的《讲座》https://sebastianraschka.com/blog/2021/dl-course.html#l19-self-attention-and-transformer-networks和《书籍》https://github.com/rasbt/machine-learning-book/tree/main/ch16。

理解主要架构和任务

如果你是第一次接触变换器 / 大型语言模型,那么最好从头开始。

(1)Bahdanau、Cho 和 Bengio 于2014年发表的《通过联合学习对齐和翻译的神经机器翻译》(Neural Machine Translation by Jointly Learning to Align and Translate),https://arxiv.org/abs/1409.0473

如果你有几分钟的时间,我建议从上述论文开始。它介绍了一种用于递归神经网络(RNN)的注意力机制,以提高长序列建模能力。这使得RNN能够更准确地翻译更长的句子——这也是后来开发原始变换器架构的动机。

图片来源:https://arxiv.org/abs/1409.0473

(2)Vaswani、Shazeer、Parmar、Uszkoreit、Jones、Gomez、Kaiser 和 Polosukhin 于2017年发表的《Attention Is All You Need》,https://arxiv.org/abs/1706.03762

上面的论文介绍了原始的变换器架构,包括一个编码器和一个解码器部分,这两个部分后来会作为独立的模块变得非常重要。此外,这篇论文还介绍了一些概念,比如缩放点积注意力机制、多头注意力模块和位置输入编码,这些都成为了现代变换器的基础。

图片来源:https://arxiv.org/abs/1706.03762

(3)Xiong、Yang、He、K Zheng、S Zheng、Xing、Zhang、Lan、Wang 和 Liu 于2020年发表的《On Layer Normalization in the Transformer Architecture》,https://arxiv.org/abs/2002.04745

虽然上面这张来自《Attention Is All You Need》(https://arxiv.org/abs/1706.03762)的原始变换器图是对原始编码器-解码器架构的有用总结,但图中层归一化(LayerNorm)的位置一直是一个备受争议的话题。

举个例子,《Attention Is All You Need》中的变换器图将层归一化放在残差块之间,这与原始变换器论文中附带的官方https://github.com/tensorflow/tensor2tensor/commit/f5c9b17e617ea9179b7d84d36b1e8162cb369f25(更新版)代码实现不一致。图中所示的变体被称为Post-LN变换器,而更新的代码实现默认使用的是Pre-LN变体。

《On Layer Normalization in the Transformer Architecture》https://arxiv.org/abs/2002.04745这篇论文指出,Pre-LN效果更好,能解决梯度问题,如下所示。许多架构在实践中采用了这一方法,但它可能会导致表示崩塌。

所以,虽然目前关于使用Post-LN还是Pre-LN的讨论仍在继续,但也有一篇新论文提出了利用两者优势的方案:ResiDual:带有双残差连接的变换器(https://arxiv.org/abs/2304.14802);它是否在实践中有用,仍有待观察。

图片来源: https://arxiv.org/abs/1706.03762(左和中)以及 https://arxiv.org/abs/2002.04745(右)

(4)Schmidhuber 于1991年发表的《Learning to Control Fast-Weight Memories: An Alternative to Dynamic Recurrent Neural Networks》,https://www.semanticscholar.org/paper/Learning-to-Control-Fast-Weight-Memories%3A-An-to-Schmidhuber/bc22e87a26d020215afe91c751e5bdaddd8e4922

这篇论文推荐给那些对历史细节以及与现代变换器(Transformers)原理上有相似性的早期方法感兴趣的人。

例如,在1991年,也就是大约在上述原始变换器论文(《Attention Is All You Need》)发布的二十五年半之前,Juergen Schmidhuber 提出了一个递归神经网络的替代方案,称为快速权重编程(Fast Weight Programmers,FWP)。FWP方法涉及一个前馈神经网络,通过梯度下降慢慢学习来编程另一个神经网络的快速权重变化。

这个与现代变换器的类比在这篇博客文章https://people.idsia.ch//~juergen/fast-weight-programmer-1991-transformer.html#sec2中是这样解释的:

在今天的变换器术语中,FROM 和 TO 分别被称为键(key)和值(value)。应用于快速网络的输入被称为查询(query)。本质上,查询通过快速权重矩阵处理,后者是键和值外积的和(忽略归一化和投影)。由于两个网络的所有操作都是可微的,我们通过加法外积或二阶张量积获得了快速权重变化的端到端可微的主动控制。[FWP0-3a] 因此,慢网络可以通过梯度下降学习在序列处理过程中快速修改快网络。这在数学上等价(除了归一化)于后来被称为具有线性自注意力的变换器(或线性变换器)。

正如上面博客摘录所提到的,这种方法现在被称为“线性变换器”或“具有线性化自注意力的变换器”,通过2020年在arXiv上发布的几篇论文《Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention》https://arxiv.org/abs/2006.16236和《Rethinking Attention with Performers》https://arxiv.org/abs/2009.14794进一步阐明了这一点。

2021年,论文《Linear Transformers Are Secretly Fast Weight Programmers》则明确展示了线性化自注意力和1990年代的快速权重编程之间的等价性。”

来源:基于https://people.idsia.ch//~juergen/fast-weight-programmer-1991-transformer.html#sec2的注释图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg功能使用

步骤:1,安装FFmpeg Download FFmpeg 在这里点击->Windows builds from gyan.dev;如下图 会跳到另外的下载界面: 在里面下拉选择点击ffmpeg-7.1-essentials_build.zip: 即可下载到FFmpeg; 使用&#…

【Unity基础】Unity中如何实现图形倒计时

为了在Unity中实现一个图形倒计时,除了代码部分,还需要一些UI元素的创建和设置。本文以环形倒计时为例,以下是完整的步骤,涵盖了如何创建UI元素、设置它们,以及如何编写控制环形倒计时进度的脚本。 1. 创建UI元素 创建…

2024 中央企业数据资产化及数据资产入表场景建设白皮书

本文介绍了中央企业数据资产化的重要性及其入表场景建设。白皮书详细阐述了数据资产化的概念、实施步骤和关键挑战,提出了一系列解决方案。文章还强调了数据资产入表的重要性,以提高数据的透明度和质量,推动企业数字化转型。 重点内容&#…

电力场景输电线本体分割数据集labelme格式1629张1类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):1629 标注数量(json文件个数):1629 标注类别数:1 标注类别名称:["csv_ct"] 每个类别标注的框数&…

【机器学习】机器学习的基本分类-无监督学习-t-SNE(t-分布随机邻域嵌入)

t-SNE(t-分布随机邻域嵌入) t-SNE(t-distributed Stochastic Neighbor Embedding)是一种用于降维的非线性技术,常用于高维数据的可视化。它特别适合展示高维数据在二维或三维空间中的分布结构,同时能够很好…

哈尔滨工业大学《2024年801自动控制原理真题》 (完整版)

本文内容,全部选自自动化考研联盟的:《哈尔滨工业大学801自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题

数据可视化:提升年度报表分析效率的新路径

在当今复杂多变的商业环境中,企业年度报表不仅是反映企业过去一年经营成果的重要文件,更是指导未来战略规划的基石。它如同一面镜子,既映照出企业的辉煌成就,也不避讳地揭示了存在的问题与挑战。本文将从企业年度报表的编制原则、…

探秘Redis哨兵模式:原理、运行与风险全解析

一、引言 Redis 概述 在当今的数据存储领域,Redis 占据着十分重要的地位。它是一个内存中的数据存储,凭借其出色的性能和丰富的功能,被数百万开发人员广泛应用于诸多场景之中,已然成为构建高性能、可扩展应用程序的得力工具。 从…

芯品荟|SWM221系列芯片之TFTLCD彩屏显示及控制

“革新未来,智驭控制新纪元”,由广东华芯微特集成电路有限公司市场总监张琢,对SWM221系列的强大功能表现进行了整体介绍。 确实,华芯微特在TFTLCD显示及控制有十多年应用基础和积累的团队,仍勇于挑战,自我…

Liinux下VMware Workstation Pro的安装,建议安装最新版本17.61

建议安装最新版本17.61,否则可能有兼容性问题 下载VMware Workstation安装软件 从官网网站下载 https://support.broadcom.com/group/ecx/productdownloads?subfamilyVMwareWorkstationPro 选择所需版本 现在最新版本是17.61,否则可能有兼容性问题…

pyfink1.20版本下实现消费kafka中数据并实时计算

1、环境 JDK版本:1.8.0_412python版本:3.10.6apache-flink版本:1.20.0flink版本:1.20kafka版本:kafka_2.12-3.1.1flink-sql-connector-kafka版本:3.3.0-1.202、执行python-flink脚本 从kafka的demo获取消…

Python 写的《桌面时钟》屏保

原代码: # 日历式时钟 # 导入所需的库 # 作者:Hoye # 日期:2024年12月16日 # 功能:显示当前日期、星期、时间,并显示模拟时钟 import tkinter as tk from tkinter import ttk import time import math import sysdef …

51c自动驾驶~合集41

我自己的原文哦~ https://blog.51cto.com/whaosoft/12830614 #SFPNet 迈向通用Lidar分割!取代Transformer的新架构SFPNet 迈向通用激光雷达语义分割(),取代Transformer的新架构SFPNet,新数据集S.MID 论文标题&am…

前端之CSS光速入门

一、CSS介绍 什么是CSS? CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式. CSS能够对网页中元素位置的排版进行像素级的精确控制,实现美化页面的效果.能够做到页面的样式和结构分离.(CSS可以理解为"东方四大邪术"的化妆术.对页面展示进行化…

P8615 拼接平方数 P8699 排列数

文章目录 [蓝桥杯 2014 国 C] 拼接平方数[蓝桥杯 2019 国 B] 排列数 [蓝桥杯 2014 国 C] 拼接平方数 题目描述 小明发现 49 49 49 很有趣,首先,它是个平方数。它可以拆分为 4 4 4 和 9 9 9,拆分出来的部分也是平方数。 169 169 169 也有…

【AIGC】结构化的力量:ChatGPT 如何实现高效信息管理

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯结构化的定义 (Structuration: Definition)1. 结构化的定义2. 结构化的示例3. 技术领域中的结构化数据 💯有序的规则的重要…

如何实现日期选择窗口

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了TimePicker Widget相关的内容,本章回中将介绍DatePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的DatePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为日期,它…

开启数字化时代心理服务新篇章:专属线上心理咨询服务小程序

在当今快节奏的社会中,心理健康问题日益受到人们的关注。然而,传统的心理咨询模式往往受限于时间和地点,使得许多人在寻求心理帮助时感到不便。与此同时,心理课程的传播也面临着诸多挑战,如何高效地触达目标客户群体&a…

ElasticSearch 简介

一、什么是 ElastcSearch? ElasticSearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎。 1.1 ElasticSearh 的基本术语概念 index 索引 索引类似与 mysql 中的数据库,ES 中的索引是存储数据的地方,包含了一堆有相似结构的文档数据…

条件概率相关公式

条件概率 条件概率是指在事件 B 已经发生的情况下,事件 A 发生的概率,记作 P(A∣B) 。其定义公式为: ( P(B) > 0 ) 全概率公式 全概率公式用于计算由一组互斥且完备的事件构成的事件的概率。设 是一组互斥且完备…