【生成式AI導論 2024】第10講:今日的語言模型是如何做文字接龍的 — 淺談Transformer (已經熟悉 Transformer 的同學可略過本講)

Hung-yi Lee
3 May 202438:15

Summary

TLDR本课程深入探讨了语言模型的核心——Transformer模型。首先介绍了语言模型的基础,即通过大量训练数据学习文字接龙的能力。然后,详细解释了Transformer模型的运作过程,包括Tokenization、Embedding、Attention机制以及Feedforward Network。特别强调了Attention机制的重要性,它通过计算Token间的相关性来考虑上下文信息,生成Contextualized Embedding。课程还讨论了提高Attention计算效率、处理超长文本的方法,以及未来可能取代Transformer的新模型研究方向,如Memba系列和JAMBAR模型。

Takeaways

  • 📚 课程分为两部分,前半部分深入探讨语言模型内部结构,特别是Transformer模型;后半部分讨论大型语言模型的内部机制。
  • 🌟 Transformer模型是当前语言模型中最常用的类神经网络结构,对大型语言模型至关重要。
  • 🔍 语言模型的核心任务是进行文字接龙,通过大量训练数据学习形成。
  • 📈 语言模型的演变经历了从N-Gram模型到Feed Forward Network,再到Recurrent Neural Network的过程。
  • 🔑 Tokenization是语言模型处理文本的第一步,将文字转换为模型能理解的Token序列。
  • 📝 Token是语言模型的基本处理单位,不同语言模型可能有不同的Token列表,可以通过算法如Byte Pair Encoding (BPE) 自动获得。
  • 📊 Embedding是将Token转换为向量的过程,使得语义相近的Token在向量空间中距离更近。
  • 🔄 Attention模块用于理解Token之间的关系和上下文,通过计算Token间的相关性来调整Embedding。
  • 🎯 Multi-Head Attention允许从不同角度考虑Token间的相关性,通过多个头并行处理来丰富模型的理解。
  • 🛠️ Transformer Block由Attention和Feed Forward Network组成,是Transformer模型的基本单元,可以多次迭代以深化理解。
  • ⏱️ 处理超长文本是语言模型面临的挑战,因为Attention的计算量与文本长度的平方成正比,需要大量算力。

Q & A

  • 什么是Transformer模型?

    -Transformer模型是一种类神经网络结构,广泛应用于语言模型中。它通过注意力机制(Attention)和前馈神经网络(Feedforward Network)处理序列数据,能够捕捉长距离依赖关系,是大型语言模型的核心组件。

  • 为什么Transformer模型在语言模型中非常重要?

    -Transformer模型之所以重要,是因为它能够高效地处理语言数据,支持并行计算,并且可以很好地捕捉文本中的长距离依赖关系。这使得基于Transformer的语言模型在生成文本、翻译、问答等任务上表现出色。

  • Tokenization是什么?它在语言模型中扮演什么角色?

    -Tokenization是将文本转换为Token的过程。在语言模型中,Token是模型处理的基本单位。Tokenization的目的是将句子分解成模型可以理解和处理的Token序列,为后续的Embedding和模型训练打下基础。

  • 什么是Embedding?它如何帮助语言模型理解Token?

    -Embedding是将Token转换为向量表示的过程。通过Embedding,每个Token被转换成一串数字,这些数字能够捕捉Token的语义信息。语义相近的Token会有相似的Embedding,这有助于模型在处理时理解Token之间的关系。

  • Attention机制在Transformer中的作用是什么?

    -Attention机制使Transformer能够关注输入序列中与当前处理的Token最相关的部分。它通过计算Token之间的关系权重,生成Contextualized Embedding,从而让模型能够根据上下文信息调整Token的表示。

  • 为什么在语言模型中,Attention只考虑前面的Token?

    -在语言模型中,Attention只考虑前面的Token是因为语言模型在生成文本时是自回归的。这意味着每个新的Token都是基于之前Token序列生成的,因此只需要考虑已生成的Token,而不需要考虑未来的Token。

  • 什么是Multi-Head Attention?它有什么优势?

    -Multi-Head Attention是Transformer中的一个概念,它允许模型同时从不同的角度和表征子空间捕捉信息。这种机制可以提供更丰富的上下文信息,帮助模型更好地理解复杂的语言现象。

  • Transformer Block中的Feedforward Network有什么作用?

    -Feedforward Network是Transformer Block中的一个组成部分,它对Attention模块的输出进行进一步的处理。它通过非线性变换整合信息,帮助模型学习更复杂的特征表示。

  • 什么是Positional Embedding?它如何帮助模型理解Token的位置信息?

    -Positional Embedding是向量形式的位置信息,它被添加到Token Embedding中,以提供模型关于Token在序列中位置的感知。这有助于模型理解句子结构和语序,因为同一Token在不同位置可能有不同的含义。

  • 为什么处理超长文本对语言模型是一个挑战?

    -处理超长文本是一个挑战,因为Attention机制的计算量与输入文本长度的平方成正比。这意味着随着文本长度的增加,所需的计算资源和时间会急剧增加,对硬件性能提出了更高的要求。

  • 什么是'train short test long'?它在语言模型训练中的意义是什么?

    -“train short test long”是指在训练语言模型时使用较短的文本,而在测试时使模型能够处理和理解较长的文本。这种方法的意义在于,即使模型只在训练阶段见过短文本,它也能够在测试阶段表现出对长文本的理解能力。

  • 有哪些研究方向旨在改进Transformer模型或探索其替代品?

    -改进Transformer模型或探索其替代品的研究方向包括但不限于:加快Attention计算的方法、实现无限长度的Attention、探索'train short test long'的技术,以及Memba系列和JAMBAR模型等新型神经网络架构的研究。

Outlines

00:00

📚 深入探索语言模型和Transformer架构

本段落介绍了课程的两个部分,前半部分聚焦于语言模型内部的Transformer神经网络架构,解释了Transformer的工作原理及其在大型语言模型中的重要性。后半部分讨论了如何理解大型语言模型的内在思维。为了深入探讨语言模型,首先需要了解其运作机制,特别是Transformer模型,它通过Tokenization、Attention机制和Feedforward网络等步骤来生成文本。

05:00

🔍 Token化和词嵌入(Embedding)的基础知识

此段详细讨论了语言模型如何将文本转换为Token序列,并使用Token列表来理解语言的基本单位。Token列表是根据对语言的理解而设定的,不同的语言模型可能有不同的Token列表。介绍了Byte Pair Encoding (BPE)算法,它可以自动从大量文本中提取常见的模式作为Token。此外,还解释了如何通过词嵌入将Token转换为向量,以便在神经网络中处理。

10:02

🌐 词嵌入的上下文和位置信息

这一部分深入探讨了词嵌入(Embedding)的概念,包括如何通过向量表示Token以反映它们之间的语义关系。解释了位置嵌入(Positional Embedding)的重要性,它为每个Token的位置赋予了一个独特的向量,从而保留了Token在句子中的位置信息。此外,还讨论了如何将上下文信息整合到词嵌入中,生成上下文化的词嵌入(Contextualized Embedding)。

15:04

🤖 Attention机制的工作原理

本段详细介绍了Attention机制,它允许模型考虑整个句子的上下文信息。解释了Attention机制如何通过计算Token之间的关系分数来工作,这些分数被称为Attention Weight。通过这些权重,模型能够对句子中的每个Token进行加权求和,生成考虑上下文的输出。此外,还提到了'Attention Is All You Need'这篇开创性论文,它提出了不依赖于循环神经网络(RNN)的Transformer模型。

20:07

🔄 Multi-Head Attention和Transformer Block

这一部分进一步探讨了Multi-Head Attention的概念,它允许模型从不同的角度考虑Token之间的关系。解释了如何通过多个Attention模块并行处理信息,以捕获不同类型的相关性。随后,介绍了Transformer Block的结构,它结合了Attention机制和前馈神经网络(Feed Forward Network),并重复这些Block来深化模型对文本的理解。

25:09

📈 语言模型的生成过程和效率

此段讨论了语言模型如何生成文本,特别是如何通过逐步添加Token并重新输入模型来生成连续的文本。解释了为什么在生成文本时,模型只考虑每个Token左侧的Token,这是因为在生成过程中,左侧Token的相关性已经被计算过,不需要重复计算。此外,还提到了处理超长文本时的挑战,因为Attention的计算量与文本长度的平方成正比。

30:10

🔍 语言模型的未来研究方向

最后一段概述了语言模型领域的一些未来研究方向,包括如何提高Attention机制的计算效率,以及如何实现无限长度的Attention。还提到了训练时使用短文本而测试时处理长文本的可能性,即'train short test long'。此外,探讨了Transformer可能的替代架构,如Memba系列和JAMBAR模型,这些模型试图结合Recurrent Neural Network和Transformer的优势。

Mindmap

Keywords

💡Transformer

Transformer是一种在自然语言处理领域广泛使用的模型架构,它在处理语言模型时,通过注意力机制(Attention)来捕捉文本中的长距离依赖关系。在视频中,Transformer被强调为理解大型语言模型的关键技术,它通过多个模块(如Tokenization、Embedding、Attention等)来处理输入的文本,并生成下一个Token的概率分布。

💡Tokenization

Tokenization是文本预处理的一个步骤,它涉及将原始文本转换为机器可理解的Token序列。在视频中,Tokenization是Transformer模型处理输入文本的第一步,将句子分解为Token序列,以便进行后续的Embedding和Attention计算。例如,输入句子'Introduction of Generative AI'会被转换成'introduction'、'of'、'generative'、'AI'等Token。

💡Embedding

Embedding是将离散的Token转换为连续的向量表示的过程,这些向量能够捕捉Token的语义信息。在视频中,Embedding是Transformer模型中的一个关键步骤,它通过查找预训练的Token Embedding表来实现,使得模型能够理解每个Token的语义并将其转换为向量形式。

💡Attention

Attention是一种机制,它允许模型在处理信息时动态地关注输入序列中的不同部分。在视频中,Attention模块通过计算Token之间的关系权重来理解上下文,这些权重反映了不同Token之间的相关性,从而使得模型能够生成考虑上下文的Contextualized Embedding。

💡Contextualized Embedding

Contextualized Embedding是指考虑了上下文信息的Token向量表示。在视频中,通过Attention机制,模型能够为每个Token生成一个基于其上下文的向量表示,这与传统的Token Embedding不同,后者不考虑上下文。Contextualized Embedding使得模型能够更准确地捕捉词义的多样性。

💡Positional Embedding

Positional Embedding是向Token Embedding中添加的位置信息,它帮助模型理解Token在句子中的顺序。在视频中,Positional Embedding通过为每个位置分配一个唯一的向量来实现,这些向量与Token Embedding相加,使得模型能够识别同一Token在不同位置的不同含义。

💡Multi-Head Attention

Multi-Head Attention是Attention机制的一种扩展,它允许模型同时在不同的表示子空间中关注输入的不同部分。在视频中,Multi-Head Attention通过多个'头'并行处理信息,每个头学习不同的关联性,然后将这些头的输出合并,以获得更丰富的表示。

💡Feedforward Network

Feedforward Network是神经网络的一种,信息单向传播,不形成循环。在视频中,Feedforward Network作为Transformer Block的一部分,它接收Attention模块的输出,进一步整合信息,并通过非线性变换生成新的Embedding。

💡Output Layer

Output Layer是模型的最后一层,负责将Transformer Block的输出转换为最终的预测结果。在视频中,Output Layer通过Linear Transform和Softmax函数将模型的输出转换为概率分布,这个分布表示了下一个Token可能出现的概率。

💡Language Model

Language Model是一种统计模型,用于预测语言中单词序列的概率分布。在视频中,Language Model的核心任务是进行文字接龙,即基于给定的文本序列预测下一个最可能的Token。Transformer模型作为Language Model的一种实现,通过学习大量的文本数据来优化其参数。

💡Attention Is All You Need

这是一篇在2017年发表的论文,它提出了Transformer模型,并指出在处理序列到序列的任务时,不需要传统的循环神经网络(RNN),仅使用Attention机制即可获得很好的效果。在视频中,这篇论文被提及,因为它标志着Attention机制在自然语言处理领域的突破性进展。

Highlights

深入探讨了语言模型内部的Transformer模型,这是大型语言模型的核心组件。

介绍了语言模型的演变,从N-Gram模型到Feed Forward Network,再到Recurrent Neural Network。

详细解释了Transformer模型的工作原理,包括Tokenization、Embedding、Attention和Feedforward Network。

解释了Tokenization过程,即如何将文本转换为模型能理解的Token序列。

讨论了Token Embedding的概念,即将Token转换为向量表示,以便捕捉词义和上下文信息。

介绍了位置嵌入(Positional Embedding),它为模型提供了Token在句子中的位置信息。

解释了Attention机制如何使模型能够捕捉Token之间的关系和上下文信息。

讨论了Multi-Head Attention的设计,它允许模型从不同角度捕捉Token之间的关系。

阐述了Transformer Block的概念,它是Transformer模型中的基本单元,包含Attention和Feedforward模块。

讨论了Transformer模型中的Layer概念,以及它们如何堆叠以提高模型的深度和复杂性。

解释了Output Layer的作用,它将Transformer Block的输出转换为下一个Token的概率分布。

探讨了为什么在语言模型中,Attention只考虑前面的Token,而不是整个句子。

讨论了处理超长文本时的挑战,特别是Attention计算与文本长度平方成正比的问题。

介绍了一些旨在加速Attention计算的研究,以及实现无限长度Attention的可能性。

探讨了训练短文本而测试长文本的可能性,即train short test long的概念。

提及了Memba系列和其他可能取代Attention的神经网络架构,展示了语言模型研究的多样性。

介绍了JAMBAR模型,它是将类似Recurrent Neural Network的结构与Transformer结合的尝试。

总结了Transformer模型背后的运作机制,以及它如何通过一系列步骤预测下一个Token的概率分布。

Transcripts

play00:00

好,那今天的課程有兩個部分

play00:04

前半段終於要深入語言模型的內部

play00:08

看一下語言模型內部的那個類神經網路

play00:11

也就是大名鼎鼎的Transformer

play00:14

它背後做的事情是什麼

play00:16

特別需要把Transformer這段提出來講

play00:19

是為了要為下半段的課程做鋪墊

play00:22

因為在下半段的課程

play00:24

我們要來探討大型語言模型

play00:27

他的心裡究竟在想些什麼

play00:30

但在探討他的心裡在想些什麼之前

play00:33

你必須要先真的瞭解他的運作的機制

play00:36

我們才能夠深入他的內心

play00:39

所以我們先來講今天語言模型是怎麼做文字接龍的

play00:45

在這個課堂上我們已經再三跟大家強調過說

play00:50

語言模型做的事情就是文字接龍

play00:54

我們也跟大家講過說

play00:56

這個語言模型文字接龍的能力

play00:58

就是從大量的訓練資料

play01:00

所學出來的

play01:02

語言模型

play01:04

它是一個函式

play01:06

內部有很多未知的參數

play01:08

而我們可以用這些訓練資料

play01:10

找出這些未知的參數

play01:12

但是

play01:14

這個語言模型

play01:16

背後的這個函式

play01:18

到底長得什麼樣子呢

play01:20

我們今天就要來看看

play01:22

到底內部運作的過程是什麼

play01:26

那可能很多同學都知道

play01:28

今天的語言模型

play01:30

它背後用的就是

play01:32

類神經網路的技術

play01:34

也就是它背後的函式就是一個

play01:36

類神經網路

play01:38

那類神經網路有很多種

play01:40

那今天語言模型最常用的

play01:42

類神經網路的類型

play01:44

叫做Transformer

play01:46

那我們今天就要來看看Transformer

play01:48

背後運作的過程

play01:50

語言模型不是一直都使用Transformer這樣的類神經網路

play01:56

這些投影片上講的是語言模型的演進史

play02:00

最早的時候在深度學習還沒有開始發達以前

play02:05

那時候人們還不知道要用深度學習的技術

play02:08

用類神經網路來做語言模型

play02:11

在有類神經網路之前

play02:13

那時候通常是用一個叫做N-Gram的模型

play02:16

它就不是類神經網路的技術

play02:18

那後來呢就用了類神經網路的技術

play02:21

比如說Feed Forward Network

play02:23

那在Feed Forward Network之後

play02:25

人們知道要用RNN

play02:27

Recurrent Neural Network

play02:28

那這些太過冗長

play02:30

所以今天我們都不會細講

play02:32

假設你想要知道語言模型的演進史

play02:35

可以參看我過去上課的錄影

play02:38

我把錄影的連結留在投影片上

play02:41

那今天呢我們主要會Focus在Transformer上面

play02:46

那ChatGPT的這個T啊

play02:48

他指的就是Transformer的T

play02:50

所以可見這個Transformer

play02:52

對於大型語言模型是非常重要的

play02:55

那今天講的是一個簡化的版本

play02:58

並不是Transformer的全部

play03:00

如果你真的想要更深入的瞭解Transformer

play03:04

那我這邊附上了兩段過去上課的錄影

play03:07

大家可以看這兩段上課的錄影

play03:09

更瞭解Transformer內部運作的原理

play03:13

好,那我們現在先來看一下Transformer這個模型

play03:18

它整體運作的過程

play03:21

我們先來對Transformer做一個概述

play03:24

當一句話被語言模型讀進去的時候

play03:27

經過了哪些步驟才得到輸出的機率分佈呢?

play03:31

首先第一個步驟叫做Tokenization

play03:35

Tokenization這個步驟是把文字轉為Token

play03:39

那等一下在下一頁投影片會再跟大家講得更清楚

play03:43

這邊所謂的Token指的是什麼

play03:46

那把文字轉成Token之後

play03:48

接下來語言模型有一個input layer

play03:52

會去理解每一個Token

play03:55

但是光理解每一個Token還不夠

play03:58

我們還要考慮Token和Token間的關係

play04:01

怎麼考慮Token跟Token間的關係呢

play04:04

這邊是透過一個叫做Attention的模組來進行的

play04:08

Attention這個模組會理解上下文

play04:12

那Attention理解上下文之後

play04:14

再經過一個Feedforward的Network

play04:17

你可以想成它是把Attention模組的輸出

play04:20

進行整合再進一步思考

play04:23

那Attention加Feedforward合起來

play04:25

叫做一個Transformer的Block

play04:28

那一個Transformer裡面

play04:30

有很多很多的Block

play04:32

那Block的數目是你自己定的

play04:34

那Block會被使用很多次

play04:37

那代表說機器在做反覆的思考

play04:40

那最後有一個output的layer

play04:42

把這個transformer block的輸出轉成機率的分佈

play04:47

那接下來我們就來仔細看每一個block在做什麼樣的事情

play04:53

第一個block是把文字轉成token

play04:57

那因為對一個語言模型來說

play05:00

它真正處理的單位叫做一個token

play05:04

它的輸入和輸出的單位都是以Token這個東西來作為單位的

play05:10

所以當你把一個句子給語言模型的時候

play05:13

它做的第一件事情是把這句話轉成Token的sequence

play05:18

它才好做進一步的處理

play05:20

舉例來說假設輸入的句子是Introduction of Generative AI

play05:25

那經過Tokenization之後它就會被切成一個一個Token

play05:29

比如說introduction可能會切成int跟reduction兩個token

play05:34

off本身就是一個token

play05:36

generative會被切成genre跟ative兩個token

play05:41

那ai本身就是一個token

play05:43

所以說一段話,它會變成一個token的sequence

play05:48

那怎麼把一句話切成token的sequence呢?

play05:51

我們怎麼知道一個語言裡面有哪些的token呢?

play05:55

你要先準備一個token的列表

play05:57

所以一開始你在打造你的語言模型的時候

play06:01

你就會根據你對語言的理解

play06:03

準備一個Token的列表

play06:05

那這個Token的列表

play06:07

就是你的語言模型處理文字的基本單位

play06:10

那這個Token的列表怎麼來呢

play06:13

它是根據你對這個語言的理解

play06:16

自己定的

play06:17

所以不同的語言模型

play06:19

它的這個Token的列表是不一樣的

play06:21

那很多這個中文的模型呢

play06:23

往往就會把一個中文的方塊字

play06:26

當作一個Token

play06:27

因為對我們這個中文的使用者來說

play06:30

把方塊字當作單位往往是最自然的

play06:33

所以很多中文的模型是以一個方塊字當作它的token

play06:37

但是像ChatGPT它並不是特別為中文所打造的

play06:42

它是為了各種不同語言所打造的

play06:44

它就不是拿一個中文的方塊字當一個token

play06:47

在對ChatGPT來說

play06:49

好幾個token才能夠組成一個中文的字

play06:52

那Token呢其實也有辦法自動取得

play06:57

有一個演算法叫做Byte Pair Encoding BPE

play07:01

它可以從大量文字裡面找出常常出現的Pattern

play07:06

那把這些Pattern當作Token

play07:08

那BPE並不是唯一找Token的方法啦

play07:10

還有很多其他的方法

play07:12

BPE只是特別有代表性的一個

play07:14

那BPE這個方法精神就是

play07:16

看看你先收集大量的文字

play07:19

這些文字裡面有沒有哪些英文的有沒有哪一些符號常常一起出現

play07:25

比如說

play07:26

Gener常常一起出現

play07:28

Active常常一起出現

play07:31

他們就是一個Token

play07:32

那如果有一些比如說像Generative這樣的這個

play07:36

符號的序列沒有很常出現那他就不會被

play07:40

當作一個Token

play07:41

所以可能Active

play07:42

很常出現是一個Token

play07:44

Generative他出現的次數還不夠多

play07:47

所以就沒有被當作一個Token來

play07:49

那總之呢要怎麼做Tokenization

play07:54

這個要問你自己

play07:55

也就是要問這個打造語言模型的人類

play07:59

那這個部分沒有需要訓練的參數

play08:02

它是一個人定好的module

play08:05

反正就是把一個句子轉成Token的sequence

play08:09

Token本身是一個比較模糊的概念

play08:12

它是人定出來的

play08:14

它本身是一個比較模糊的概念

play08:16

所以你如果拿一個符號來問我說

play08:18

它是不是一個Token

play08:19

我其實是沒有辦法回答你的

play08:21

而每個語言模型用的Token也都是不一樣的

play08:24

如果你想要知道現在的GPT-3.5跟GPT-4用的Token有什麼

play08:30

那其實有一個網站

play08:31

OpenAI提供了一個網站

play08:33

你可以把一篇文章貼給他

play08:35

他會告訴你這篇文章裡面有哪些Token

play08:38

比如說我貼給他這篇文章

play08:40

他就告訴我這篇文章總共有65個Token所組成

play08:43

他會告訴你說哪一些字是一個Token

play08:47

比如說Language本身是一個Token

play08:49

Model本身是一個Token

play08:51

但Probabilistic不是一個Token

play08:54

Probabilistic是被拆成兩個Token

play08:56

那像這邊1980這個年代

play08:59

也是被拆成兩個Token

play09:01

198是一個Token

play09:03

那0呢是被當作另外一個Token

play09:05

那裡面沒有1980這樣一個Token

play09:08

所以1980會被拆成198跟0兩個Token

play09:12

那至於為什麼會這樣

play09:13

這個都是OpenAI事先訂好的

play09:16

我們現在把一句話拆解成Token之後

play09:21

下一個步驟是要知道每一個Token是什麼意思

play09:26

那怎麼知道每一個Token是什麼意思呢

play09:29

這邊會把每一個Token用一個向量來表示

play09:34

也就是每一個Token本來是一個符號

play09:37

但是丟進這個第二個模組之後

play09:41

每一個Token會變成一串數字

play09:44

數字 每一個token會變成一個向量

play09:48

那這個把token變成一串數字

play09:51

也就把token變成一個向量的過程

play09:53

叫做embedding

play09:56

embedding的意思就是把本來一個物件

play09:59

一個東西變成一個向量

play10:02

這個過程呢就是embedding

play10:05

那把這些token變成向量有什麼好處呢

play10:09

原本每一個token都是獨立的符號

play10:12

Apple是個符號,Cat是一個符號

play10:15

這邊本來是想要打狗啦,想要打Dog啦

play10:18

不然就寫成Dog啦,也無所謂

play10:20

Round是一個符號,Jump是一個符號

play10:23

那雖然Round跟Jump都是動作

play10:26

感覺他們應該跟Round跟Jump彼此比較相近

play10:30

跟Cat跟Apple可能距離比較遠

play10:33

他們比較不相近

play10:35

但是從Token的角度來看

play10:37

因為每一個Token都是一個獨立的符號

play10:40

所以如果我們是用Token來處理語言的話

play10:43

RUN跟JUMP並沒有什麼特別的關係

play10:46

RUN跟APPLE也沒有什麼特別的關係

play10:49

就當你用Token來看待一個語言的時候

play10:52

每一個Token都是獨立的

play10:54

它們彼此這些詞彙

play10:56

這些Token彼此之間的關聯性

play10:58

並沒有辦法被反映出來

play11:00

所以怎麼辦呢

play11:02

今天我們把每一個Token呢

play11:05

表示成一個向量

play11:07

那有時候這些向量

play11:08

我們就直接把它稱之為embedding

play11:11

每一個token會被表示成一個embedding

play11:14

而語意越相近的token

play11:17

它的embedding距離就越接近

play11:20

所以如果你把

play11:21

這一些token的embedding拿出來畫成圖的話

play11:24

你可能會發現

play11:25

所有的動物

play11:26

他們的token聚集成一群

play11:29

而所有植物可能聚集成另一群

play11:31

所有的動詞可能聚集成一群

play11:34

名詞又聚集成另外一群

play11:37

所以透過把這些本來獨立的Token變成Embedding

play11:41

可以讓接下來在處理的時候

play11:44

接下來的這個類神經網路

play11:46

接下來剩餘的模組

play11:47

在處理這些Token的時候

play11:49

能夠知道這些Token跟Token之間的關聯性

play11:54

好那我們已經知道說相鄰的Token

play11:57

我們希望給他相近的Embedding

play11:59

但是到底是怎麼把相鄰的Token

play12:02

給他相近的Embedding呢

play12:05

這邊你會有一個Token Embedding的列表

play12:10

所以在Transformer裡面

play12:12

你會有一個Table裡面存了所有的Token

play12:16

跟它每一個Token所對應的Embedding

play12:20

每一個Token所對應的項量

play12:22

所以在做Embedding的時候

play12:25

實際上你做的事情就是查表

play12:27

看看有什麼樣的Token

play12:29

去這個表裡面查一下

play12:30

看看INT對應的Token是什麼

play12:32

就把它拿出來

play12:33

看INT對應的embedding是什麼就把它拿出來

play12:37

看AI對應的embedding是什麼就把它拿出來

play12:41

但下一個問題是

play12:43

這一個表是從哪裡來的呢

play12:46

我們怎麼知道每一個token應該對應的向量是什麼呢

play12:51

這個每一個token所對應的向量

play12:54

就是這個語言模型裡面的參數

play12:57

還記得嗎 我們說語言模型裡面有很多未知的參數

play13:01

這些未知的參數是要透過訓練資料找出來的

play13:04

而每一個token所對應的embedding

play13:08

就是我們待找的參數的一部分

play13:12

所以這些token的embedding你並不需要人去設定它

play13:16

它是自動由訓練資料所找出來的

play13:21

但是到目前為止

play13:22

我們雖然可以把token轉成embedding

play13:25

但這些embedding有一個限制

play13:27

有一個問題就是沒有考慮上下文

play13:31

同一個token

play13:33

他的embedding就是固定的

play13:35

就是同一個比如說bank

play13:36

我們知道bank這個詞會有兩個意思

play13:39

他可能指的是銀行

play13:40

也可能指的是河岸

play13:43

但是不管現在bank在句子裡面

play13:45

是表示銀行還是河岸

play13:47

他用的embedding都是同一個

play13:50

他用的token embedding都是同一個

play13:53

那在第三階段

play13:54

我們才會開始把上下文考慮進來

play14:00

那剛才是考慮了語意的資訊

play14:03

那其實還需要考慮位置的資訊

play14:07

我們需要知道每一個token

play14:09

是在句子裡面的哪一個位置

play14:12

因為同一個token

play14:13

在句子裡面的不同位置

play14:15

它可能會代表了不同的意思

play14:17

所以我們需要把位置的資訊

play14:19

也加到每一個token的embedding裡面去

play14:22

那怎麼把位置的資訊加到Token的Embedding裡面去呢?

play14:27

一個可能的做法是為每一個位置也設置一個向量

play14:33

設置一個向量 設置一串數字代表位置1

play14:37

另外一串數字代表位置2

play14:39

另外一串數字代表位置3

play14:41

以此類推

play14:42

接下來就把位置1的Token的Embedding

play14:46

加上代表位置1的向量

play14:50

那就等於是把位置1的資訊加進去

play14:53

把位置2的資訊加進去

play14:55

把位置3的資訊加進去

play14:56

以此類推

play14:57

那這樣子你的embedding裡面

play14:59

就不只有包含語意的資訊

play15:01

也包含了位置的資訊

play15:04

這些向量啊

play15:05

這些向量

play15:06

每一個位置會給它一個獨特的向量

play15:09

那這些向量呢

play15:10

又叫做positional embedding

play15:12

它們是代表了位置的embedding

play15:15

那怎麼找到這種positional embedding呢

play15:18

你可以用人設最早的Transformer

play15:23

他的Token Embedded就是人設計的

play15:26

你自己決定好說位置1他的向量要長什麼樣子

play15:29

位置2他的向量要長什麼樣子

play15:31

這個近年來Positional Embedded也是可以學的

play15:35

你可以把Positional Embedded也當作參數的一部分

play15:39

用你的訓練資料自動的找出這些Positional的Embedded

play15:45

好接下來第三步呢

play15:48

我們就要來考慮上下文

play15:51

那這個可以考慮一整個句子

play15:53

考慮上下文資訊的模組呢

play15:55

叫做Attention

play15:58

那剛才我們有講過說

play16:00

最開始的這個Token Embedding

play16:03

是沒有考慮上下文資訊的

play16:06

所以不管是蘋果電腦的果

play16:09

還是來吃蘋果的果

play16:11

他的Token Embedding都是一模一樣的

play16:14

不管這個果是代表蘋果電腦

play16:16

還是代表一個可以吃的蘋果

play16:18

他的Token Embedding都是一樣的

play16:21

但在經過這個Attention之後

play16:24

Attention會考慮整個句子的上下文

play16:28

那蘋果電腦的果跟萊斯蘋果的果

play16:31

因為他們上下文不一樣

play16:33

所以這兩個果通過了Attention之後

play16:35

他們的Embedding就會變得不一樣

play16:39

這種有考慮上下文的Embedding呢

play16:42

又叫做Contextualized Embedding

play16:46

你用Contextualized意思就是有考慮上下文的

play16:49

這個時候同一個Token 語意不一樣

play16:51

那比如說Bank有可能是銀行 有可能是河岸

play16:55

當它代表的意思不一樣的時候

play16:57

可能就可以有不同的Embedding

play17:00

這種Embedding叫做Contextualized Token Embedding

play17:06

好 講到這個Attention

play17:07

就有一篇赫赫有名的文章

play17:10

叫做Attention Is All You Need

play17:12

那這也是上古時代的文章啦

play17:14

是2017年發表的

play17:16

那很多人誤以為是

play17:17

這一篇文章提出了Attention這個想法

play17:22

那其實這是一個誤解啦

play17:24

在早在有這篇文章之前

play17:26

Attention就是語言模型裡面

play17:28

常常使用的一個機制

play17:31

只是過去覺得說

play17:33

Attention要搭配RNN一起使用

play17:36

才能夠發揮比較好的結果

play17:38

那Attention is All You Need這篇paper

play17:40

而他真正的貢獻是告訴世人說

play17:43

其實可以把RNN拿掉

play17:45

他說我把RNN拿掉

play17:46

結果沒有比較差

play17:48

那時候大家都驚呆了

play17:49

原來可以不用RNN

play17:50

那因為RNN本身訓練的時候

play17:52

有一些訓練上的效能的限制

play17:55

那所以當時人們是希望可以拿掉RNN的

play17:58

所以Attention is All You Need

play17:59

真正的貢獻並不是發明瞭Attention

play18:02

而是發現不需要使用RNN

play18:05

那從他的名字裡面也可以看出來

play18:07

他的名字叫做Attention is All You Need

play18:09

就告訴你說他只用Attention就搞定了語言模型這個任務

play18:14

他不需要再使用RNN這樣的技術

play18:19

好 那接下來我們就來看一下這個Attention是怎麼運作的

play18:23

是怎麼考慮上下文的

play18:25

那假設等一下講的東西你聽不太懂的話

play18:28

反正你就記住Attention做的一件事情

play18:30

你就記住Attention做的事情

play18:32

就是輸入一排向量

play18:35

在這一排向量裡面每一個向量都代表一個Token

play18:37

那他會輸出另外一排一樣長度的向量

play18:41

那對每一個token來說就是把上下文的資訊

play18:45

加進他的embedded裡面去

play18:48

假設你等一下講的東西聽不懂的話

play18:50

就記得這個大原則就可以了

play18:52

那接下來我們就來深入看一下Attention是怎麼運作的

play18:56

我們來看一下當我們看中間這個embedded

play19:00

進入Attention的時候是發生了什麼事

play19:03

讓他得出輸出的這個embedded

play19:06

然後在Attention這個模組裡面

play19:08

第一件要做的事情

play19:10

是要先從整個句子裡面

play19:12

找出相關的Token

play19:15

所以會有一個叫做

play19:17

計算相關性的模組

play19:19

這個模組它做的事情

play19:21

就是把你現在要考慮的

play19:23

這個Embedding讀進去

play19:25

再把整個句子裡面的

play19:27

某一個Token的Embedding讀進去

play19:30

它就會輸出一個分數

play19:32

這個分數代表這兩個Token

play19:34

Token之間的關聯性

play19:37

那這個分數是怎麼計算出來的呢

play19:40

那這個計算相關性的模組

play19:43

他也是一個函式

play19:45

我們這邊用F來表示他

play19:47

他輸入就是兩個embedded

play19:49

輸出就是一個分數

play19:51

那這個F裡面呢

play19:52

是有參數的

play19:53

所以他也是需要學的

play19:56

這個F裡面是有參數的

play19:57

怎麼計算相似性

play19:59

也是透過訓練資料所得到的

play20:03

總之我們現在有一個可以計算相似性的模組

play20:06

給他兩個Token Embedding

play20:07

他就告訴你說這兩個Token Embedding有多相近

play20:12

那接下來呢

play20:13

你就會把這個向量

play20:16

跟這個句子裡面的每一個向量

play20:19

包括他自己都來計算一下相關性

play20:23

跟每一個項量都計算相關性

play20:26

那這個相關性呢

play20:27

有一個名字叫做Attention Weight

play20:30

總之中間這個向量會跟每一個項量計算一個相關性

play20:35

這個相關性呢 叫做Attention的Weight

play20:39

那計算出這個Attention的Weight以後

play20:41

下一步要做什麼呢

play20:42

下一步就是根據這個Attention的Weight

play20:46

把這個句子裡面的Embedding加起來

play20:50

這一個Embedding 它的Weight是0.1

play20:52

這個Embedding是0.5 這個Embedding是0.4

play20:55

你就把0.1乘上這一個項量

play20:57

把0.5乘上這個項量

play20:59

0.4乘上這個項量全部加起來

play21:02

就是你的Attention的模組的輸出

play21:05

所以輸入這個項量

play21:07

怎麼得到它的輸出呢

play21:09

就是先計算出Attention

play21:11

根據Attention的權重做weighted sum

play21:14

然後就得到你現在這個Attention的模組的輸出

play21:18

等於就是先看看哪些資訊是相關的

play21:21

再把相關的資訊集合起來

play21:23

就是Attention這個模組的輸出

play21:25

那剛才是舉說輸入中間這個怎麼得到輸出

play21:31

那我們再反覆看一下

play21:33

那如果是得到右邊數來第二個向量

play21:37

怎麼得到它的輸出呢

play21:39

那跟剛才的原理是一樣的

play21:41

就拿這個向量去跟其他所有的向量

play21:45

都去計算相關性

play21:47

有了這些相關性以後

play21:49

你就可以做weighted sum

play21:51

把綠色的向量乘0.3

play21:54

加黃色的向量乘0.3

play21:56

加藍色的向量乘0.4

play21:58

全部加起來就得到

play22:00

這個位置Attention Module的輸出

play22:03

把相關的資訊集合起來

play22:05

就得到這個位置Attention Module的輸出

play22:09

這個是Attention這個模組的基本概念

play22:13

當然這邊其實做過一些簡化啦

play22:15

如果你真的想了解它

play22:17

可以再參看原始論文或我過去上課的錄影

play22:21

好 那根據剛才的講法

play22:23

我們需要計算所有Token兩兩之間的相關性

play22:29

也就我們需要計算所有Token兩兩之間的Attention Weight

play22:33

所以第一個Vector要跟這五個Vector計算Attention Weight

play22:36

第二個Vector要跟這五個Vector計算Attention Weight

play22:39

以此類推

play22:40

所以現在假設有五個Vector的話

play22:43

我們就會計算出5x5總共25個Attention Weight

play22:47

那這些Attention Weight集合起來也是有名字的

play22:51

叫做Attention的Matrix

play22:55

但實際上語言模型在實作的時候

play22:58

我們只會考慮每一個Token的左邊

play23:02

也就是每一個Token前面的那些Token

play23:07

我們計算某一個Token的Attention Weight的時候

play23:10

不會去管它右邊的Token

play23:13

只會管它左邊

play23:14

也就只會管它在這個句子前面的Token

play23:18

那為什麼會這樣

play23:19

等一下再為大家揭曉

play23:22

我們先無視這件事

play23:25

那這種只考慮前面

play23:28

也就是左半邊的Token的這種Attention

play23:31

它是有名字的 它叫做Koso的Attention

play23:35

那Attention裡面其實還有一個特別的設計

play23:39

叫做Multi-Head Attention

play23:41

那今天其實我們的語言模型用的

play23:43

都是Multi-Head Attention

play23:45

那為什麼要考慮Multi-Head Attention呢

play23:48

因為相關性是不只一種的

play23:52

你要問兩個詞彙的相關性

play23:54

那所謂的什麼叫做相關

play23:56

是可以從不同面向來看待的

play23:59

比如說Dog跟Cat都是動物

play24:02

所以它們相關

play24:04

Dog跟Bark它也相關

play24:07

為什麼 因為Bark是狗可以做的一個動作

play24:10

所以它們也是相關

play24:12

但這個跟狗跟Cat的關聯性是不一樣的

play24:16

所以關聯性有很多種

play24:18

只用一個計算關聯性的模組

play24:21

可能沒有辦法準確的計算關聯性

play24:25

所以怎麼辦呢

play24:27

我們需要有多個計算關聯性的模組

play24:31

所以剛才只用藍色的這個計算關聯性的模組

play24:34

計算出Attention Weight

play24:36

這是不夠的

play24:37

還需要其他的計算關聯性的模組

play24:39

這邊假設有另外一個黃色的計算關聯性的模組

play24:43

它可以計算出另外一組的Attention的位

play24:47

就是另外一個計算關聯性的模組

play24:49

它裡面也有它自己的參數

play24:51

這些參數也是透過訓練資料學出來的

play24:55

那如果透過訓練資料學出另外一組參數

play24:58

那這個黃色的模組就會計算出

play25:00

另外一組跟藍色的模組不一樣的Attention的weight

play25:04

實際上在實作的時候

play25:06

這個Multihead Attention也不會只有兩組

play25:09

通常也至少會弄個16組這麼多

play25:12

所以是非常多組的這個Attention Weight

play25:15

那接下來就根據每一組Attention Weight去做Weighted Sum

play25:21

那在剛才的例子裡面只針對第一組Attention Weight做Weighted Sum

play25:25

那如果我們有第二組Attention Weight的話

play25:28

你也要對第二組Attention Weight做Weighted Sum

play25:31

第二組Attention Weight說藍色的要乘0.3

play25:34

紅色的要乘0.4 黃色的要乘0.3

play25:37

加起來你就得到另外一個輸出

play25:40

所以實際上這個Attention的module給我們的不是只有一組輸出

play25:45

而是多組輸出

play25:47

根據每一種關聯性都會給我們一組輸出

play25:52

那Attention的這個module呢

play25:55

Attention的這個模組給我們多種輸出以後

play25:57

接下來我們需要再整理一下

play26:00

把多種輸出把它整合起來

play26:02

所以這邊需要另外一個模組

play26:05

這個模組是一個 feed forward的network

play26:08

那這個Feed Forward Network做的事情

play26:10

就是把這個Attention的輸出呢

play26:12

這個多個向量呢

play26:14

通通丟進去

play26:16

綜合考慮一下

play26:18

最終輸出一個向量出來

play26:20

把多個Embedding綜合考慮一下

play26:22

輸出一個Embedding出來

play26:24

那Attention

play26:26

加上Feed Forward這個模組

play26:28

Feed Forward的這個模組

play26:30

也是一個Neural Network

play26:32

其實它裡面也有很多層

play26:34

那裡面也是有很多的參數

play26:36

是透過訓練資料被學習出來的

play26:40

然後呢,這個Attention的模組

play26:43

加上Feedforward的模組合起來呢

play26:46

就叫做一個Transformer的Block

play26:49

所以這是一個Transformer裡面的單位

play26:52

基本單位

play26:53

那一個Transformer裡面

play26:55

不會只有一個Transformer Block

play26:57

會有多個Transformer Block

play27:00

所以一開始我們通過這個

play27:03

第一個模組是做Tokenization

play27:06

第二個模組是Token Embedding

play27:08

得到第一組的Token Embedding以後

play27:11

你就會通過Transformer的Block

play27:13

裡面有Attention、有Feedforward Network

play27:16

你會得到另外一組Embedding

play27:18

這組Embedding是考慮過上下文的Embedding

play27:22

光通過一個Transformer Block是不夠的

play27:25

你會把他再通過下一個Transformer Block

play27:29

一直一直下去

play27:30

就看你要兜幾個Transformer Block

play27:32

你就可以通過幾次Transformer Block

play27:34

那通常在文獻裡面

play27:36

每一個Transformer Block

play27:38

我們會稱為一個Layer

play27:40

雖然實際上如果從Neural Network的角度來看

play27:42

一個Transformer Block裡面

play27:44

也有很多層的

play27:46

已經有很多層的Neural Network

play27:47

不過在文獻上

play27:48

通常一個Transformer Block

play27:50

就視為一個Layer

play27:52

所以輸入的這個Embedding

play27:54

會通過多個Transformer Block

play27:57

一直到通過最後一個Transformer Block之後

play28:01

把句尾的這一個向量拿出來

play28:05

再把句尾的向量呢

play28:07

通過一個Output Layer

play28:09

Output Layer它也是一個

play28:11

Function,這個Function裡面做的是呢

play28:13

是,不好意思,這邊打錯了

play28:15

這是Linear Transform

play28:17

不是Linear Transformer

play28:19

Linear Transform

play28:21

這個Output Layer裡面呢

play28:23

有一個Linear Transform

play28:25

有一個Soft Max

play28:27

然後呢,會得到一個

play28:29

機率的分佈

play28:30

那如果這個地方你沒有聽得很懂的話

play28:32

反正就是把這個Transformer Block

play28:35

最後一層的最後一個輸出

play28:37

丟給另外一個模組

play28:38

這個模組呢

play28:39

就會輸出一個機率分佈給我們

play28:44

好那所以到目前為止呢

play28:46

我們就知道了一句話

play28:47

一個句子從輸入到Transformer

play28:50

一直到最終輸出一個機率分佈

play28:53

代表下一個Token

play28:55

應該接哪一個Token的機率

play28:57

這整個過程到底發生了什麼事

play29:02

接下來我要回答的問題是

play29:04

為什麼語言模型在做Attention的時候

play29:07

只考慮他左半邊

play29:10

只考慮他前面的Token呢

play29:13

那這要回到語言模型的運作的

play29:17

基本邏輯了

play29:18

我們知道語言模型在運作的時候

play29:21

他就是做文字接龍

play29:23

所以當你問ChatGPT問語言模型一個問題的時候

play29:27

他實際上看到的輸入可能是user冒號

play29:31

你打的文字AI冒號

play29:33

然後接下來語言模型要做文字接龍

play29:37

他可能先接出第一個token叫做W1

play29:41

那接下來他會把W1再當作輸入

play29:45

再讓語言模型根據這一整串的文字

play29:48

再做一次文字接龍就輸出W2

play29:52

再把W2貼到剛才的句子 剛才的輸入後面

play29:56

變成有這一整串輸入

play29:58

再讓語言模型再去做一次文字接龍

play30:02

以此類推 直到產生結束這個符號

play30:05

這是語言模型產生答案的過程

play30:09

那現在我們已經知道語言模型背後運作的機制了

play30:13

那我們再來想一次 語言模型是怎麼運作的

play30:17

當你輸入這一串文字 是怎麼產生W1的呢

play30:21

裡面有一大堆的Transformer的Block

play30:25

每一個Transformer的Block裡面

play30:27

有Attention跟Free Forward Network的模組

play30:31

那在Attention這個模組裡面

play30:34

AI這一個Token

play30:36

它是在這整個句子最右邊的那個符號

play30:40

所以它會跟在它左邊的所有的符號

play30:43

去計算相關性

play30:45

去計算Attention的Weight

play30:48

那這個計算Attention的Weight的過程

play30:50

所以在每一個transformer block裡面反覆發生

play30:53

transformer block有好多個

play30:55

直到最後產生一個token出來

play30:58

然後產生這個token之後

play31:00

你會把這個token變成輸入

play31:03

你會把這個token串在原來的輸入後面

play31:06

再把這一串句子輸入給同樣一個語言模型

play31:12

那因為輸入的語言模型是一樣的

play31:15

所以你再想想看

play31:17

AI這個token

play31:18

他跟左邊的這一些Token之間的相關性

play31:22

剛才已經算過了

play31:24

所以當你輸入一個新的句子

play31:26

是User輸入AI

play31:28

後面再加上W1的時候

play31:30

AI跟左邊這一些Token

play31:32

他之間的關聯性已經不用再計算第二次了

play31:36

所以這邊的關聯性

play31:38

AI跟左邊這些Token的關聯性是算過的

play31:41

完全不需要再算一次

play31:43

把剛才在前一個步驟

play31:45

在剛才在前一個時間點產生W1的這一些Attention把它記錄下來就好了

play31:51

你不需要再重算第二次

play31:53

你需要重算AI冒號這個Token跟W1之間的Attention

play31:59

因為這是剛才在前一步產生W1的時候

play32:02

沒有計算過的東西

play32:05

這是需要耗費額外的資源來進行計算的

play32:10

但能不能夠乾脆就不要算了呢

play32:14

可以 現在就是發現說

play32:17

你根本不需要再去管AI跟W1的Attention

play32:20

管AI跟他左邊的Attention就好了

play32:24

你可能想說 欸 如果我Attention算多一點

play32:27

我能不能夠用算力來交換更好的結果呢

play32:30

讓AI不只考慮

play32:32

讓AI這個Token不只考慮左半邊這些Token

play32:35

連新書的這些Token也考慮

play32:37

我應該會得到更精確的結果吧

play32:40

那現在的實驗就是告訴你說

play32:42

以過去確實有一些模型採取了類似的做法

play32:47

他不只考慮左半邊的Attention

play32:49

他會把完整的Attention都算出來

play32:52

但是現在看起來這些模型的表現並沒有比較好

play32:56

而ChatGPT那個系列的語言模型

play32:59

都是隻考慮左半邊的Attention

play33:01

而他們的表現是非常驚人的

play33:04

所以現在的認知就是

play33:06

你其實不需要再多計算額外的Attention

play33:09

把剛才有計算過的跟左邊這些Token的Attention

play33:13

保留起來就足夠了

play33:17

那你現在瞭解了語言模型的機制以後

play33:20

你就知道為什麼處理超長的文本

play33:23

會是一個巨大的挑戰

play33:25

你知道今天各路各大語言模型

play33:28

在炫耀他們語言模型的效能的時候

play33:31

往往其中一個炫耀的指標

play33:33

就是他可以讀多長的文本

play33:37

那為什麼輸入超長的文本會是一個挑戰呢

play33:41

如果你瞭解Attention的運作機制

play33:44

你就會知道到底困難出在哪裡

play33:47

到底困難出在哪裡呢

play33:50

困難出在說

play33:51

假設你今天輸入是100K個Token

play33:56

對於你的語言模型來說

play33:59

它裡面的Attention的模組

play34:01

不是把100K個Token讀過就算了

play34:06

他需要把100K個Token兩兩之間去計算Attention

play34:12

所以他需要計算Attention的次數

play34:14

是你輸入長度的平方是100K的平方

play34:19

所以假設你把文本的長度當作橫軸

play34:24

計算Attention的次數當作縱軸的話

play34:27

你會發現說計算Attention的次數

play34:29

他的增長是非常快的

play34:31

計算Attention的次數是跟文本的長度的平方乘正比的

play34:37

所以你會發現說計算Attention的次數

play34:39

它的成長是非常迅速的

play34:43

這就是為什麼要處理長的文本

play34:46

會需要耗費大量的算力

play34:49

而這個算力的耗費

play34:50

並不是跟文本的長度乘正比

play34:53

而是跟文本長度的平方乘正比

play34:57

這就是為什麼你處理超長的文本

play35:00

會是一個挑戰

play35:03

好 那今天這一堂課呢

play35:06

就是跟大家非常簡單的介紹了

play35:10

Attention 的機制

play35:12

那為下一堂課呢

play35:13

做鋪墊

play35:15

那有一些

play35:16

特別值得關注的研究方向

play35:19

那比如說我剛才講說

play35:21

Attention

play35:22

它是一個非常耗費算力的東西

play35:25

因為它跟輸入文本的長度的平方

play35:28

成正比

play35:28

所以怎麼加快Attention的計算

play35:31

就變成一個非常關鍵的議題

play35:34

那如果你想了解怎麼加快Attention的計算的話

play35:37

可以看我過去上課的錄影

play35:39

我對加快Attention計算的方法

play35:41

做了一個非常完整的整理

play35:44

那近年來也有一些文獻表明

play35:47

他們期待能夠做到無限長度的Attention

play35:52

那這個聽起來就非常帥

play35:53

他可以做無限長度的Attention

play35:57

那這件事要怎麼做呢

play35:58

我這邊就是留了兩篇文獻給大家參考

play36:01

這兩篇文獻採取的是截然不同的做法

play36:04

就告訴你說要研究怎麼把Attention做好

play36:07

今天仍然有非常多可以思考的方向

play36:11

另外呢 要收集超長的文本

play36:14

這超長的文本你可能很難收集到非常多啦

play36:18

我們有沒有可能在訓練語言模型的時候

play36:21

訓練在比較短的文本上

play36:23

但是在測試的時候

play36:25

他讀得懂比較長的文本呢

play36:28

雖然他在練習閱讀的時候都只看過短篇小說

play36:32

但是他能不能夠在練習完之後讀長篇小說

play36:35

也沒有問題呢

play36:37

能不能夠train short test long呢

play36:39

那有一系列的技術來告訴你

play36:42

怎麼達到transhort test long這件事

play36:45

那我就把一些比較重要的文獻

play36:47

列在這邊給大家參考

play36:49

那Transformer不一定是語言模型最終的答案

play36:54

今天還有其他可能的類神經網路的架構

play36:58

正在研究中看看有沒有辦法取代Attention

play37:02

那其中比較知名的就是Memba系列

play37:06

Memba系列它其實跟Recurrent Neural Network很像

play37:11

只是它去掉了Recurrent Neural Network訓練的時候

play37:15

比較沒有效率的那個問題

play37:18

所以感覺如果Memba復興的話

play37:20

就像是Recurrent Neural Network又回來了

play37:23

之前Attention取代了Recurrent Neural Network

play37:27

現在Recurrent Neural Network又要回來取代掉Attention了

play37:32

那還有一個 最近有一個模型叫做JAMBAR

play37:35

它就是MEMBAR的一個延伸啦

play37:37

你可能會問說Attention跟Recurrent Neural Network一定是互斥的嗎

play37:40

能不能把它結合起來

play37:42

其實JAMBAR就是把那個MEMBAR

play37:45

就是類似Recurrent Neural Network的東西

play37:48

跟那個Transformer結合起來

play37:50

這個都是非常新的論文

play37:52

總之這個部分我們今天就不適合在今天的課堂上細講

play37:56

這個日後有機會再跟大家分享

play38:00

那今天最主要想跟大家講的就是Transformer背後的運作機制

play38:05

一個句子讀入語言模型的時候

play38:07

它是怎麼通過一連串的步驟求出下一個Token的機率分佈的

Rate This

5.0 / 5 (0 votes)

Étiquettes Connexes
Transformer注意力机制语言模型深度学习Token化嵌入表示序列生成模型演进上下文理解神经网络
Besoin d'un résumé en anglais ?