首页IT科技人工智能之自然语言处理(人工智能 LLM 革命前夜:一文读懂横扫自然语言处理的 Transformer 模型)

人工智能之自然语言处理(人工智能 LLM 革命前夜:一文读懂横扫自然语言处理的 Transformer 模型)

时间2025-06-13 23:16:12分类IT科技浏览5733
导读:UPDATED:2023 年 1 月 27 日,本文登上 ATA 头条。(注:ATA 全称 Alibaba Technology Associate,是阿里集团最大的技术社区) UPDATED:2023 年 2 月 2 日,本文在 ATA 获得鲁肃点赞。(注:鲁肃,本名程立,是阿里合伙人、阿里集团上一任 CTO...

UPDATED:2023 年 1 月 27 日            ,本文登上 ATA 头条            。(注:ATA 全称 Alibaba Technology Associate                   ,是阿里集团最大的技术社区) UPDATED:2023 年 2 月 2 日       ,本文在 ATA 获得鲁肃点赞                   。(注:鲁肃         ,本名程立                  ,是阿里合伙人             、阿里集团上一任 CTO)

大家好!我是麦克船长          ,目前就职于阿里巴巴集团      ,任总监/资深综合运营专家                  ,先后负责过淘宝行业产品团队                   、天天特卖      、大聚划算运营中心       。网名一直用「麦克船长」             ,中科大计算机本科毕业后先是做的音视频流媒体技术         、分布式系统等等   ,干过 Full Stack                  ,后来创业在技术                   、产品         、运营      、营销                   、供应链等等方面多年后来到阿里                ,在淘系带过不同业务的产品            、运营团队         。文本来自我的个人博客:MikeCaptain - 麦克船长的技术   、产品与商业博客,梳理了自己在春节期间对 NLP 基础模型的技术演变学习笔记记录               ,写就于大年初一在香港过春节时                  。本文包含 3 个章节:

第一章                   ,主要介绍 Transformer 出现之前的几个主流语言模型   ,包括 N 元文法(n-gram)                   、多层感知器(MLP)               、卷积神经网络(CNN)、循环神经网络(RNN)          。其中 CNN 主要应用领域在计算机视觉            ,因此没有更详细展开      。其他模型也未面面俱到                   ,主要考虑还是一个领域学习者的角度来了解和应用       ,而非研究                  。 第二章         ,是本文的核心                  ,先介绍了注意力机制(Attention Mechanism)          ,然后基于第一章对此前几大语言模型了解后      ,我们能更好地理解 Transformer 为什么会带来革命性的影响             。 第三章                  ,是一个 Transformer 的实现版本             ,基于 Tensorflow   。

春节期间   ,除了本文                  ,我还梳理了一篇关于「大型语言模型(LLM)在 Transformer 之后的演化综述」和一篇关于「LLM 引领生产力革命                ,带来的未来几年科技脉搏把控」,但没有时间整理排版               ,待日后有空再归拢后发出                   ,这些权当是在春节期间消磨时间的技术爱好   ,因为是偏向学习的技术笔记            ,所以非常欢迎大家批评                、指正                  、交流                  。

作者:钟超(麦克船长) 邮箱:zhongchao.ustc#gmail.com (#->@) 微信:sinosuperman(请注明「公司/机构   、职位」便于我备注                   ,谢谢) 时间:2023 年 1 月 22 日

前言

本文试图从技术角度搞清楚一个问题:过去一年 AIGC 爆火             、过去五年 NLP(自然语言处理)领域突飞猛进的缘起是什么?

这个问题被解答后       ,将还有两个问题         ,但暂时本文没有作答:1)如果认为通过图灵测试代表着 AGI(Artificial General Intelligence                  ,通用人工智能)的话          ,当下 NLP      ,乃至 AGI 发展到什么程度了?2)未来一些年内                  ,AGI 的发展路线可能会是怎样的?

利用春节时间             ,写了这么一篇数万字的长文笔记   ,希望共同爱好的朋友能读完多多指正                。

1                   、我来阿里之后第一个新增爱好是「变形金刚模型」                  ,第二个新增爱好是「变形金刚模型」

写了个这么冷的梗                ,其实想说的是,前者指的是著名 IP「变形金刚」相关的手办玩具模型               ,后者指的是这个引领革命的人工智能语言模型 Transformer。这两个爱好                   ,都与目前从事的电商工作本职没有表面上的直接联系   ,权当爱好了               。

2022 年「生成式 AI」应用取得了突飞猛进的发展            ,作为一个「古典互联网」从业者                   ,深切地感到这一次 AI 技术可能会带来的颠覆式变革       ,这让我兴奋又焦虑                   。2022 年上半年         ,我从天天特卖业务负责人到大聚划算运营中心负责人                  ,在去年相当长一段时间里在关注直播带货在营销平台的模式命题          ,一直在思考一个问题:直播电商的高效(更适合的商品演绎方式 + 私域权益 + 冲动购买等」vs. 直播电商的低效(直播分发无人货匹配 + 直播间内千人一面 + 货品状态未知 + 主播不可控等)      ,能否推动一个保留直播的高效                  ,同时解决直播的低效的模式呢?

这里面有大量的内容值得探讨             ,不过这不是麦克船长该系列文章的初衷   ,但这是我为什么开始非常关注 AI 的引子   。直播电商的数字人技术基础                  ,有动作捕捉      、面部表情模拟         、视觉渲染                   、直播话术生成         、语音合成等等            。依据第一性原理抽丝剥茧后                ,我发现尽管动作捕捉      、视觉渲染等等很多技术仍有很大挑战,但是从商业视角看真正最影响用户心智的               ,是直播话术生成和演绎                   ,除了头部主播   ,绝大多数直播带货在这方面都做的很糟糕            ,那么这里面就有巨大的「机器学习」生成内容超越非头部的大多数从业者的市场空间                   ,而这完全依赖自然语言处理(NLP)                   。

这个问题就属于「生成式 AI」的范畴了       ,国外科技圈叫它「Gen-AI」         ,即 Generative AI                  ,中国科技圈都叫它「AIGC」          ,即 AI Generated Content      ,与 UGC                   、PGC 相对应       。Gen-AI 的叫法更关注主体                  ,具体地说是「生成式 AI 模型」             ,它是个「内容引擎」         。而中国的叫法更关注「内容应用」                  。

讲到 AIGC 这里   ,大家熟悉的 ChatGPT 就在 2022 年年底登场了          。也是因为 ChatGPT 的破圈                  ,带来了 AIGC 在国内科技圈的关注度暴涨      。我从去年年中开始关注「文生图                ,text2image」领域的明星 Stable Diffusion 开源,进而关注到了 text2image 应用的爆发               ,包括 Disco Diffusion            、MidJourney   、DALL·E 2 等等                   ,这些都源于 CV(计算机视觉)领域因为 Diffusion 模型发展带来的技术突破                  。

AI 生成图片确实非常惊人             。我酷爱变形金刚模玩   ,进而对机甲类都非常喜欢            ,所以随手生成了几张图                   ,这里贴一下大家看看       ,分钟级的创作速度   。(注意:当下 AI 生成图片主要是基于 Diffusion 的应用发展         ,AI 生成文本的核心驱动才是 Transformer 模型                  ,此处只是展示)

但是从第一性原理角度讲          ,生成图片的应用广度      ,远远小于生成文本                  。文本内容的本质是语言文字的理解与生成                  ,人类历史有 600 万年             ,但是人类文明历史大概就 6000 年   ,文明的大发展出现在近 2000 多年的原因                  ,主要来自 3500 多年前人类发明了文字                。所以 AI 生成文本                ,意味着 AI 可以用人类熟悉的方式(语言文字)与人类高效协作,这必将引爆生产力革命。而这必将深入影响电商                   、内容               、游戏、云计算                、企业服务等众多领域               。

2                  、掌握技术基础               ,是当下读懂 AI 脉搏的基本功                   ,而这个脉搏将带动各行各业

一旦深入关注 AI   、关注 NLP 领域   ,你就会发现当下仍然处于一个技术发展突破的阶段            ,不关注技术的情况下来聊 AI             、聊 NLP                   、聊 AIGC                   ,那就只能是一个「爱好者」       ,而无法深入与这个行业内的弄潮儿对话         ,更不要提参与其中了                   。所以这个春节                  ,麦克船长回归了当年做技术时的初心          ,翻了一些材料      ,学习了 NLP 语言模型的关键技术                  ,在此作为技术学习笔记             ,与大家分享   。尽管担心班门弄斧   ,但是本着费曼老师提倡的输出学习法                  ,我把自己学习梳理的内容抛出来                ,除了会更帮助到我自己,也能结交一些对此同样在关注的同学们               ,欢迎感兴趣的同学加我的微信(微信号 sinosuperman)在业余时间和我交流            。

阅读本文                   ,先对你过往的基础知识做了一些假设   ,如果你暂未了解            ,可能在阅读时遇到以下内容做一些简单地查询即可:

Word Presentation:自然语言处理中的词表示法                   ,主要涉及 embedding                   。 张量:需要一点基础       ,比如了解张量的形状      、升降维度等       。但不会涉及到复杂问题         ,对一阶张量(向量)         、二阶张量(矩阵)的简单运算有数学基础即可         。对三阶张量                  ,大概能想象出其空间含义即可                  。语言模型里理解词之间的距离          ,是有其空间几何意义的          。 技术框架:PyTorch 或 TensorFlow 框架      。由于时间和篇幅关系      ,春节期间梳理这些时                  ,对于框架基础             ,我主要是 Google 现用现查   ,询问 ChatGPT 以及在微信读书里直接搜索全文                  。

作为技术笔记难免有纰漏或理解错误                  ,欢迎指正             。文中自绘图片用的是 Graphviz                ,公式生成用的是 KaTeX,贴到 ATA 后难免有一些没有兼容的部分(发现的已做了 fix)               ,望见谅   。

第一章 · 2017 年之前的几个关键 NLP 语言模型

NLP 的技术基础方面                   ,我认为主要是这两部分:词表示法(Word Presentation)                   、语言模型(Language Model)                  。对于词表示法   ,这里不做详细介绍            ,基本的思路就是把词表示为向量(一维张量)                   ,最基本的 One-Hot         、Word2Vec      、GloVe                   、fastText 等                。这部分的技术演进也在不断前进       ,比如本文将要重点介绍的 Transformer 模型里         ,用到的词表示法是「引入上下文感知的词向量」。

语言模型从早期的 N 元文法(N-Gram                  ,本文要介绍的)          ,到神经网络被提出后最早期的感知器(Perceptron)      ,再到后来席卷计算机视觉(CV)领域的卷积神经网络(CNN)                  ,然后出现考虑序列特征的循环神经网络(RNN             ,包括 Encoder-Decoder 模型)   ,直到 2017 年横空出世的 Transformer                  ,大概分这五个主要阶段               。因为本文的重点是 Transformer                ,所以前面四个模型我会快速概览一下,然后介绍下最朴素的注意力(Attention)机制               ,基于此再详细介绍下 Transformer                   ,并对一个完整的            、精炼实现的代码实例进行精讲                   。

第 1 节 · N 元文法语言模型

1.1   、马尔科夫假设(Markov Assumption)与 N 元文法语言模型(N-gram Language Model)

下一个词出现的概率只依赖于它前面 n-1 个词   ,这种假设被称为「马尔科夫假设(Markov Assumption」   。N 元文法            ,也称为 N-1 阶马尔科夫链            。

一元文法(1-gram)                   ,unigram       ,零阶马尔科夫链         ,不依赖前面任何词; 二元文法(2-gram)                  ,bigram          ,一阶马尔科夫链      ,只依赖于前 1 个词; 三元文法(3-gram)                  ,trigram             ,二阶马尔科夫链   ,只依赖于前 2 个词; ……

通过前 t-1 个词预测时刻 t 出现某词的概率                  ,用最大似然估计:

P

(

w

t

w

1

,

w

2

.

.

.

w

t

1

)

=

C

(

w

1

,

w

2

,

.

.

.

w

t

)

C

(

w

1

,

w

2

,

.

.

.

w

t

1

)

P(w_t | w_1,w_2...w_{t-1}) = \frac{C(w_1,w_2,...w_t)}{C(w_1,w_2,...w_{t-1})}

P(wtw1,w2...wt1)=C(w1,w2,...wt1)C(w1,w2,...wt)

进一步地                ,一组词(也就是一个句子)出现的概率就是:

P

(

w

1

,

w

2

,

.

.

.

w

t

)

=

P

(

w

t

w

1

,

w

2

,

.

.

.

w

t

1

)

P

(

w

t

1

w

1

,

w

2

,

.

.

.

w

t

2

)

.

.

.

P

(

w

1

)

=

i

=

1

t

1

P

(

w

i

w

1

:

i

1

)

\begin{aligned} P(w_1,w_2,...w_t) &= P(w_t | w_1,w_2,...w_{t-1}) \cdot P(w_{t-1} | w_1,w_2,...w_{t-2}) \cdot ... \cdot P(w_1) \\ &= \displaystyle\prod_{i=1}^{t-1}P(w_i | w_{1:i-1}) \end{aligned}

P(w1,w2,...wt)=P(wtw1,w2,...wt1)P(wt1w1,w2,...wt2)...P(w1)=i=1t1P(wiw1:i1)

为了解决句头                   、尾逇概率计算问题,我们再引入两个标记 <BOS> 和 <EOS> 分别表示 beginning of sentence 和 end of sentence               ,所以

w

=

w_0 =

w0= <BOS>               、

w

l

e

n

g

t

h

+

1

=

w_{length + 1} =

wlength+1=
<EOS>                   ,其中 length 是词的数量                   。

具体地   ,比如对于 bigram            ,该模型表示如下:

P

(

w

1

,

w

2

,

.

.

.

w

t

)

=

i

=

1

t

1

P

(

w

i

w

i

1

)

P

(

w

t

w

t

1

)

=

C

(

w

t

1

,

w

t

)

C

(

w

t

1

)

\begin{aligned} P(w_1,w_2,...w_t) &= \displaystyle\prod_{i=1}^{t-1}P(w_i | w_{i-1}) \\ P(w_t | w_{t-1}) &= \frac{C(w_{t-1}, w_t)}{C(w_{t-1})} \end{aligned}

P(w1,w2,...wt)P(wtwt1)=i=1t1P(wiwi1)=C(wt1)C(wt1,wt) 如果有词出现次数为了 0                   ,这一串乘出来就是 0 了       ,咋办? 因为基于马尔科夫假设         ,所以 N 固定窗口取值                  ,对长距离词依赖的情况会表现很差       。 如果把 N 值取很大来解决长距离词依赖          ,则会导致严重的数据稀疏(零频太多了)      ,参数规模也会急速爆炸(高维张量计算)         。

上面的第一个问题                  ,我们引入平滑 / 回退 / 差值等方法来解决             ,而后面两个问题则是在神经网络模型出现后才更好解决的                  。

1.2、平滑(Smoothing)/ 折扣(Discounting)

虽然限定了窗口 n 大小降低了词概率为 0 的可能性   ,但当 n-gram 的 n 比较大的时候会有的未登录词问题(Out Of Vocabulary                  ,OOV)          。另一方面                ,训练数据很可能也不是 100% 完备覆盖实际中可能遇到的词的      。所以为了避免 0 概率出现,就有了让零平滑过渡为非零的补丁式技术出现                  。

最简单的平滑技术               ,就是折扣法(Discounting)             。这是一个非常容易想到的办法                   ,就是把整体 100% 的概率腾出一小部分来   ,给这些零频词(也常把低频词一起考虑)   。常见的平滑方法有:加 1 平滑                、加 K 平滑                  、Good-Turing 平滑   、Katz 平滑等                  。

1.2.1             、加 1 平滑 / 拉普拉斯平滑(Add-One Discounting / Laplace Smoothing)

加 1 平滑            ,就是直接将所有词汇的出现次数都 +1                   ,不止针对零频词                   、低频词                。如果继续拿 bigram 举例来说       ,模型就会变成:

P

(

w

i

w

i

1

)

=

C

(

w

i

1

,

w

i

)

+

1

j

=

1

n

(

C

(

w

i

1

,

w

j

)

+

1

)

=

C

(

w

i

1

,

w

i

)

+

1

C

(

w

i

1

)

+

V

P(w_i | w_{i-1}) = \frac{C_(w_{i-1},w_i) + 1}{\displaystyle\sum_{j=1}^n(C_(w_{i-1},w_j) + 1)} = \frac{C(w_{i-1}, w_i) + 1}{C(w_{i-1}) + |\mathbb{V}|}

P(wiwi1)=j=1n(C(wi1,wj)+1)C(wi1,wi)+1=C(wi1)+VC(wi1,wi)+1

其中

N

N

N 表示所有词的词频之和         ,

V

|\mathbb{V}|

V
表示词汇表的大小。

如果当词汇表中的词                  ,很多出现次数都很小          ,这样对每个词的词频都 +1      ,结果的偏差影响其实挺大的               。换句话说                  ,+1 对于低频词很多的场景             ,加的太多了   ,应该加一个更小的数( 1 < δ < 1)                   。所以有了下面的「δ 平滑」技术   。

1.2.2      、加 K 平滑 / δ 平滑(Add-K Discounting / Delta Smoothing)

把 +1 换成 δ                  ,我们看下上面 bigram 模型应该变成上面样子:

P

(

w

i

w

i

1

)

=

C

(

w

i

1

,

w

i

)

+

δ

j

=

1

n

(

C

(

w

i

1

,

w

j

)

+

δ

)

=

C

(

w

i

1

,

w

i

)

+

δ

C

(

w

i

1

)

+

δ

V

P(w_i | w{i-1}) = \frac{C_(w_{i-1},w_i) + \delta}{\displaystyle\sum_{j=1}^n(C_(w_{i-1},w_j) + \delta)} = \frac{C(w_{i-1}, w_i) + \delta}{C(w_{i-1}) + \delta|\mathbb{V}|}

P(wiwi1)=j=1n(C(wi1,wj)+δ)C(wi1,wi)+δ=C(wi1)+δVC(wi1,wi)+δ

δ 是一个超参数                ,确定它的值需要用到困惑度(Perplexity,一般用缩写 PPL)            。另外               ,有些文章里也会把这个方法叫做「加 K 平滑                   ,Add-K Smoothing」                   。

1.2.3         、困惑度(Perplexity)

对于指定的测试集   ,困惑度定义为测试集中每一个词概率的几何平均数的倒数            ,公式如下:

PPL

(

D

t

e

s

t

)

=

1

P

(

w

1

,

w

2

.

.

.

w

n

)

n

\operatorname{PPL}(\mathbb{D}_{test}) = \frac{1}{\sqrt[n]{P(w_1,w_2...w_n)}}

PPL(Dtest%3

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
vue-router failed to resolve(关于Vue3警告:Failed to resolve component:XXX的解决办法) 有没有挂机赚钱的平台挂机看小视频赚钱软件有哪些-挂机网创,小白也能解放双手日赚200元