【生成式AI導論 2024】第6講:大型語言模型修練史 — 第一階段: 自我學習,累積實力 (熟悉機器學習的同學從 15:00 開始看起即可)

Hung-yi Lee
23 Mar 202434:26

Summary

TLDR本课程至今为止没有训练任何模型,所有内容基于已训练好的大型语言模型。从这堂课开始,将讲解大型语言模型的训练史,分为三个阶段。在进入语言模型训练前,需了解背景知识,包括文字接龙和Token的概念。机器学习的训练分为训练和推论两个步骤,训练找到模型参数,推论使用这些参数。训练过程中可能遇到超参调试和过拟合问题,需要增加训练数据的多样性和控制初始参数。第一阶段自我学习,从网络爬取大量文字资料进行训练。

Takeaways

  • 📚 大型语言模型的训练分为三个阶段,每个阶段都专注于学习如何更好地进行文字接龙。
  • 🔍 语言模型的训练基于大量数据,通过机器学习和深度学习技术来预测文本序列中的下一个Token。
  • 🤖 模型的参数是通过训练数据自动找出的,而超参数需要人工设定,这些超参数对训练结果有重要影响。
  • 🔄 训练过程中可能遇到的问题包括训练失败或过拟合,需要通过调整超参数或增加数据多样性来解决。
  • 🌐 网络是获取训练数据的主要来源,但需要对数据进行清理,包括去除有害内容、HTML符号、低品质数据和重复内容。
  • 📈 GPT系列模型的发展显示了模型大小与回答正确率的关系,但即使是大型模型,正确率提升也有限。
  • 🔑 Prompt的设计对于语言模型的输出至关重要,尤其是在早期的GPT-3模型中,需要精确的提示来获得有用的回答。
  • 🚀 即使模型参数量巨大,如果没有适当的指导,模型可能无法有效地使用其学到的知识,需要人类进一步的引导。
  • 🛠️ 训练语言模型不仅是技术问题,还涉及到数据的法律和伦理问题,如数据授权和版权问题。
  • 📝 语言模型的训练和应用是一个不断发展的领域,需要不断地技术迭代和创新来提升模型的性能和实用性。

Q & A

  • 什么是大型语言模型的'修煉史'?

    -大型语言模型的'修煉史'指的是这些模型从最初的设计到逐渐增强能力的过程。这个过程包括了三个阶段的训练,每个阶段使用不同的训练数据,但核心目标都是学习如何更好地进行'文字接龙'。

  • 为什么大型语言模型的训练可以看作是'文字接龙'?

    -大型语言模型的训练可以看作是'文字接龙',因为模型的任务就是基于给定的文本序列预测下一个可能出现的词或字符,即生成文本中的下一个'Token'。

  • 在大型语言模型中,'Token'是什么?

    -在大型语言模型中,'Token'是构成文本的基本单位,可以是一个字、一个词或字符等。在本课程中,为了简化说明,假设一个中文字就是一个Token。

  • 为什么需要训练数据来训练语言模型?

    -训练数据用于告诉模型在给定一个未完成的句子时,哪个Token是正确的接续。通过大量的训练数据,机器学习算法能够自动找出模型中的数十亿个参数,以完成文字接龙任务。

  • 什么是'超参数'(Hyperparameter),在训练语言模型中扮演什么角色?

    -超参数是机器学习中用于设定学习过程的参数,如学习率、批次大小等。在训练语言模型时,超参数决定了优化算法的行为,影响模型训练的结果。选择合适的超参数对于模型性能至关重要。

  • 为什么训练语言模型有时会失败?

    -训练语言模型有时会失败,可能是因为选择的超参数不合适,或者训练数据不够多样化,导致模型无法准确学习到数据中的模式。此外,训练过程本身具有随机性,有时可能需要多次尝试不同的超参数组合才能获得满意的结果。

  • 什么是'过拟合'(overfitting),在语言模型训练中如何表现?

    -过拟合是指模型在训练数据上表现很好,但在未见过的数据上表现差的现象。在语言模型训练中,过拟合可能表现为模型能够完美地生成训练数据中的句子,但对于新的、不同的文本则生成不合理的续句。

  • 为什么需要从网络爬取大量文本数据来训练语言模型?

    -网络提供了几乎无限的文本资源,这些文本数据可以用于生成大量的训练样本,帮助语言模型学习广泛的语言模式和知识。自监督学习(Self-supervised learning)就是利用这些数据,让模型通过自我训练来提高能力。

  • 为什么训练语言模型时需要考虑数据的多样性和质量?

    -数据的多样性和质量直接影响模型学习的广度和深度。多样化的数据可以帮助模型学习到更广泛的语言用法和知识,而高质量的数据可以确保模型学习到正确的信息,避免学习到错误或无关的内容。

  • GPT模型的发展经历了哪些阶段,每个阶段的特点是什么?

    -GPT模型从GPT-1开始,经历了GPT-2和GPT-3等阶段。GPT-1参数较少,使用的文本数据量有限,没有引起太大关注。GPT-2参数量大幅增加,但性能提升有限。GPT-3参数量达到1750亿,使用的数据量极大,但仍然存在可控性和准确性的问题。

  • 为什么GPT-3模型即使拥有巨大的参数量,也无法总是准确回答问题?

    -GPT-3模型虽然参数量巨大,但它的学习完全基于网络数据,没有针对性地学习如何回答问题。它可能知道很多信息,但缺乏将这些信息有效组织成答案的能力,需要通过精心设计的提示(Prompt)来引导它生成准确的回答。

Outlines

00:00

📚 大型语言模型的训练基础

本段介绍了大型语言模型的训练尚未开始,之前的内容都是基于已训练好的模型进行能力强化。接下来将探讨这些模型如何被训练成今天这样强大,分为三个阶段。首先,需要了解背景知识,包括语言模型的基本任务——文字接龙,以及模型如何通过机器学习和深度学习生成答案。模型是一个含有数十亿未知参数的复杂函数,需要通过训练数据找出这些参数。训练过程中的两个主要步骤是找出参数(训练/学习)和使用参数进行文字接龙(测试/推论)。

05:02

🔧 模型训练中的优化挑战

这一段讨论了在模型训练中寻找参数的过程,即优化问题。优化被比喻为机器,需要设置超参数来决定其工作方式。训练过程具有随机性,可能失败,此时需要更换超参数并重复训练。训练成功但测试失败的情况被称为过拟合,意味着模型只学习了训练数据的表面特征,而没有理解其深层含义。解决过拟合的方法之一是增加训练数据的多样性。此外,初始参数的设定也对训练结果有重要影响,有时可以从其他模型那里继承更好的初始参数。

10:04

🌐 网络数据在语言模型训练中的应用

本段讲述了如何利用网络数据来训练语言模型。网络提供了大量的文本数据,可以用来生成训练数据。通过自监督学习,模型可以自我训练而不需要人工介入。然而,网络数据需要经过清理,包括过滤有害内容、去除HTML符号、控制数据品质、去除重复数据等步骤。尽管自监督学习减少了人工参与,但一些基本的数据清洗工作仍然是必要的。

15:06

📝 训练数据的清洗与版权问题

这一段进一步讨论了训练数据的清洗工作,强调了去除有害内容、HTML符号、低品质数据和重复数据的重要性。同时提到了使用网络数据进行训练可能涉及的版权问题,如《纽约时报》对OpenAI和Microsoft的诉讼案例。文章指出,尽管大多数开发团队在训练模型时会使用任何可获取的数据,但也有团队如国科会的臺德计划会要求每笔数据都有授权。

20:07

🚀 GPT模型的发展历程

本段概述了OpenAI开发的GPT系列模型的发展历程。从2018年的第一代GPT的1.17亿参数到GPT-2的15亿参数,再到GPT-3的1750亿参数,模型的规模和使用的资料量都有了显著增长。尽管GPT-2和GPT-3在回答问题的正确率上并未达到惊人的水平,但模型的增长展示了参数量和资料量对模型性能的影响。

25:07

🤖 GPT-3模型的实际体验与局限性

这一段通过实际体验GPT-3模型,展示了其在对话中的表现和局限性。GPT-3有时能够提供有用的回答,但有时又显得不够稳定和可控。文章指出,为了获得更好的回答,需要精心设计提示(Prompt),这对GPT-3的性能有显著影响。同时,尽管GPT-3使用了大量数据进行训练,但其回答的正确率并没有达到预期的高度,引发了对模型发展方向的讨论。

30:08

🛠️ 人类指导在语言模型训练中的必要性

最后一段指出,尽管GPT-3等模型拥有巨大的参数量和训练数据,但它们仍然需要人类的指导来发挥潜力。模型虽然从网络上学到了知识,但缺乏将这些知识应用起来的能力。因此,需要第二阶段的训练,即人类的介入和指导,以帮助模型更好地理解和回答问题。

Mindmap

Keywords

💡大型语言模型

大型语言模型是指具有大量参数和能力强大的语言处理模型。在视频中,讲解了这些模型的训练过程以及它们如何通过海量文本数据进行学习,如GPT-3,它拥有1750亿个参数。

💡训练

训练是指通过提供大量训练数据让模型学习如何完成特定任务的过程。在视频中,训练过程被详细解释,包括如何通过优化找到模型的参数。

💡自监督学习

自监督学习是一种机器学习方法,模型通过自身的数据生成和反馈进行训练。在视频中提到,通过网络爬取大量数据,模型可以通过自监督学习提高文字接龙的能力。

💡超参数

超参数是模型训练前需要设定的参数,用来决定训练过程中的优化方法。视频中讲解了调节超参数的重要性以及它对训练结果的影响。

💡过拟合

过拟合是指模型在训练数据上表现良好,但在新数据上表现差的情况。视频中举例说明了过拟合的现象,并解释了导致过拟合的原因。

💡测试

测试是指在模型训练完成后,用新的数据验证模型的性能。视频中提到训练成功但测试失败的情况,并讨论了如何通过增加训练数据多样性来改善模型表现。

💡参数优化

参数优化是指通过算法调整模型参数以提高模型性能的过程。视频中提到训练模型的核心就是参数优化,以及在优化过程中可能遇到的挑战。

💡文本数据

文本数据是指用于训练语言模型的文本内容。视频中提到从网络上爬取大量文本数据用于训练模型,以及如何过滤和清理这些数据以提高训练效果。

💡初始参数

初始参数是指优化算法开始前设定的参数值。视频中提到如何通过设定合理的初始参数来提高优化结果,以及从随机初始参数开始的训练方法。

💡优化算法

优化算法是用于调整模型参数以找到最佳参数组合的算法。视频中提到优化算法在训练过程中的作用,并解释了优化算法如何帮助找到符合训练数据的参数。

Highlights

课程开始讨论大型语言模型的训练过程,揭示了模型如何从无到有,达到今天的无所不能。

语言模型的训练分为三个阶段,每个阶段使用不同的训练数据,但核心任务都是学习文字接龙。

介绍了Token的概念,将中文字符视为模型生成的基本符号,简化了模型生成过程的说明。

解释了机器学习和深度学习在语言模型训练中的应用,强调了模型参数的重要性。

讨论了训练数据如何指导模型学习正确的Token序列,以及训练过程中的随机性和可能的失败。

提到了超参数(Hyperparameter)在训练过程中的作用,以及调整超参数对结果的影响。

分析了过拟合(overfitting)问题,即模型在训练数据上表现良好,但在新数据上失败的情况。

提出了增加训练数据多样性作为解决过拟合问题的一种方法。

讨论了初始参数的设定对模型训练结果的影响,以及如何选择合适的初始参数。

介绍了自监督学习(Self-supervised learning)的概念,即机器使用大量网络数据自我训练。

提到了从网络爬取数据进行训练时,需要进行数据清洗和质量控制。

讨论了去除训练数据中的重复内容的重要性,以及对实验严谨性的影响。

提到了使用网络数据训练可能带来的版权问题,以及对数据授权的关注。

回顾了OpenAI GPT模型的发展历程,从GPT-1到GPT-3的参数量和训练数据量的增长。

分析了GPT-3模型的性能,尽管模型庞大,但在回答问题的正确率上并没有显著提升。

讨论了Prompt模板在GPT-3模型中的重要性,以及如何通过精确的Prompt引导模型输出。

最后指出,尽管模型在不断增大,但如何有效控制模型输出仍是一个挑战。

Transcripts

play00:00

好 那到目前為止的課程呢

play00:02

我們都還沒有訓練過任何模型

play00:06

我們都還沒有討論過模型的訓練

play00:09

我們之前講的所有東西

play00:10

都是基於一個已經訓練好的大型語言模型

play00:13

想要更強化它已有的能力

play00:16

那從這一堂課開始

play00:18

我們要講大型語言模型的修煉史

play00:21

我們來回顧一下

play00:23

這些語言模型是怎麼修煉的

play00:26

怎麼練到像今天一樣 無所不能

play00:30

那語言模型的修煉呢 分成三個階段

play00:34

那在接下來的課程裡面

play00:36

我們就會一步一步的跟大家剖析

play00:39

在這三個階段

play00:40

語言模型都經過了什麼樣艱苦的修煉

play00:45

但是在講語言模型修煉的故事之前

play00:47

還是要交代一些背景知識

play00:50

那為了讓你等一下聽這個故事

play00:53

可以真的知道這個故事背後

play00:55

所要表達的是什麼

play00:56

所以我們要講一下大型語言模型的背景知識

play01:02

那有一些我們已經告訴過大家了

play01:04

比如說我們再三的強調

play01:06

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

play01:11

當它產生一個答案的時候

play01:13

大型語言模型實際上做的事情

play01:15

就是做文字接龍這件事

play01:17

把答案裡面的文字一個一個的產生出來

play01:23

在做文字接龍的時候

play01:25

每一次語言模型會產生出一個符號

play01:29

這個符號就叫做Token

play01:31

那在這門課裡面

play01:33

我們會把一個中文的字當作一個Token

play01:36

我們把中文的字當作每次大型語言模型做接龍的時候產生出來的符號

play01:40

但是實際上每一個語言模型

play01:43

它裡面的Token 它所產生的Token是不一樣的

play01:47

對於像雀GBT來說

play01:50

其實它是兩三個Token才能夠組成一個中文字

play01:54

但是為了簡化說明

play01:56

在以下的課程裡面我們都假設一個中文字

play02:00

就是一個Token

play02:03

那機器怎麼學會做文字接龍呢?

play02:07

機器學習、深度學習

play02:09

在開學第一堂課就已經跟大家簡要的介紹過了

play02:13

那機器學習的概念

play02:15

怎麼拿來做文字接龍呢?

play02:18

我們要怎麼用機器學習來學出一個語言模型呢?

play02:21

我們知道一個語言模型

play02:23

就是輸入一個未完成的句子

play02:25

輸出就是這個未完成的句子

play02:27

接下來可以接的Token

play02:30

而一個語言模型其實就是一個函式

play02:32

這邊寫做F

play02:33

它的輸入是未完成的句子

play02:35

輸出是這個句子後面可以接的Token

play02:40

那這個函式呢

play02:41

可以寫成一個有數十億個

play02:45

未知參數的函式

play02:46

因為要做文字接龍是一件非常困難的事情

play02:49

顯然這個函式非常的複雜

play02:52

他可能需要有數十億個參數

play02:55

才能完成文字接龍這個任務

play02:58

那這個有大量未知參數的函式

play03:01

就叫做模型

play03:03

那這些大量的未知參數

play03:05

要怎麼被找出來呢

play03:07

我們需要訓練資料

play03:09

訓練資料裡面告訴我們的

play03:12

就是當輸入一個未完成的句子的時候

play03:14

輸出應該是哪一個token才是對的

play03:17

比如說人工智 後面應該接會

play03:20

不要忘了今天來開 後面應該接會

play03:23

床前明月 後面應該接光 等等

play03:27

我們收集了大量這種訓練資料

play03:29

機器學習就可以自動的

play03:32

幫我們把數十億個參數找出來

play03:35

找數十億個參數的這個過程

play03:37

就叫做訓練training

play03:39

或叫做學習learning

play03:42

把這數十億個參數找出來以後

play03:44

就可以帶入這個函式裡面

play03:46

現在這些函式的 現在這個函式裡面的未知參數

play03:50

我們都知道數值是多少了

play03:52

接下來我們就可以使用這個函式來做文字接龍

play03:57

參數找出來以後 使用函式來做文字接龍這件事情

play04:01

叫做測試 Testing 或又叫做推論 Inference

play04:06

所以在機器學習裡面有兩個步驟

play04:09

找參數的部分叫做訓練 叫做學習

play04:13

那 找完參數以後 拿這組參數來使用 叫做測試 或者是叫做推論

play04:21

好 那等一下講的語言模型學習的三個階段

play04:25

都是在學文字接龍 只是訓練的資料不一樣而已

play04:32

很多人都可能都在某些地方聽過語言模型學習的過程了

play04:36

你可能會以為說 語言模型學習的不同的階段

play04:39

學的是不同的事情 其實不是

play04:42

所有的階段都在學文字接龍

play04:45

只是訓練的資料不一樣而已

play04:50

好 那在正式進入語言模型怎麼訓練之前

play04:54

我們要來講一下找參數的時候

play04:57

會遇到什麼樣的挑戰

play04:59

那我們剛才講說機器學習

play05:02

就是找到一堆訓練資料

play05:04

然後機器學習的過程

play05:06

機器學習就可以幫我們根據訓練資料

play05:10

找出符合這個訓練資料的參數

play05:14

那這個找參數的過程又叫做最佳化

play05:18

他的英文是 Optimization

play05:21

那實際上最佳化是怎麼進行的

play05:23

那我們在這一門課就不會詳談

play05:26

但是你可以把最佳化呢

play05:28

想成是一部機器

play05:29

那這部機器使用前呢

play05:31

需要設定一些參數

play05:34

那設定這個機器的參數呢

play05:36

叫做超參數

play05:38

他的英文呢是Hyperparameter

play05:41

那你設定這些超參數以後

play05:43

你就決定了最佳化的方法

play05:46

把最佳化的方法固定下來之後

play05:48

你把這一些訓練資料丟到這個機器裡面

play05:51

這個機器經過一番運作以後

play05:53

就產生參數就產生你要的結果

play05:58

那呃但是呢

play06:00

這個訓練的過程

play06:02

不是每一次都會成功

play06:05

訓練是有隨機性的

play06:07

有時候訓練可能會失敗

play06:10

也就是你按下了這個機器的啟動鈕之後

play06:12

把訓練資料丟進去

play06:14

經過一番運算得出來的參數

play06:16

結果不是你要的

play06:18

所謂不是你要的意思是說

play06:20

這些參數沒有符合訓練資料的內容

play06:24

你丟人工智進去

play06:26

他出來的不是會

play06:27

他沒有符合訓練資料的內容

play06:30

那如果遇到這種狀況

play06:32

如果遇到這個訓練失敗

play06:34

得到的這個參數

play06:36

沒有符合訓練資料的時候

play06:38

怎麼辦呢?

play06:40

通常常見的做法就是

play06:42

換一組超參數再上一次

play06:44

當然這些超參數對於訓練結果的影響

play06:46

還是有一些理路可循

play06:48

但是中間的過程

play06:50

非常的複雜

play06:52

你很難搞清楚說

play06:54

為什麼這組超參數就會給你這個結果

play06:56

所以通常你的結果

play06:58

跟你預期的不一樣

play06:59

那怎麼辦

play07:00

換一組超參數

play07:02

再試一次

play07:03

這就是為什麼大家常常說這個訓練模型呢

play07:06

就需要算力

play07:07

這個算力就是用在最佳化的過程

play07:10

尤其是用在

play07:12

假設你的訓練是有可能失敗的

play07:14

你需要換多組超參數不斷的嘗試

play07:17

最後才可以找到一個你要的結果

play07:19

那你就需要

play07:20

這個時候你就需要大量的算力

play07:23

那一個人常常聽到有人說做這個機器學習

play07:26

或做深度學習

play07:27

就是調參數

play07:29

這個調參數指的並不是這裡我們要找的參數

play07:34

這邊調參數指的是調超參數

play07:37

這邊根據訓練資料找出來的參數是自動找到的

play07:43

這些參數可能有上億個

play07:45

所以你也不可能用人的力量找出來

play07:48

但是超參數還是需要人設定的

play07:51

所以在做這個最佳化的過程的時候

play07:53

你要去先調整這個超參數

play07:55

調整成你要的樣子

play07:57

再把這個最佳化的過程跑下去

play07:59

啊期待你可以

play08:00

然後就開始祈禱說

play08:01

你最後跑出來的結果是你要的

play08:04

那這個超參數往往你很難

play08:05

這一次就得到你要的結果是需要調的

play08:08

所以你才會常常聽到有人說

play08:10

做深度學習做機器學習

play08:12

就是調參數

play08:13

他指的調參數指的是調超參數

play08:17

那我們等於之後的作業

play08:18

作業五作業六都是要訓練模型的

play08:20

但超參數的部分呢

play08:21

你就不需要特別擔心

play08:23

因為助教當然都是已經幫你調好了

play08:26

這個最佳化的這個機器都是幫你設定好了

play08:28

你只要按下Enter

play08:30

應該就會跑出不錯的結果

play08:32

但是假設助教沒有給你超參數

play08:34

要你自己找

play08:35

你就會知道說這個訓練的過程

play08:38

真的是非常的痛苦

play08:39

就一攤米都吸了

play08:40

這樣你就知道說這個訓練的過程

play08:43

真的是非常的痛苦

play08:45

但是這不是找參數唯一的挑戰

play08:49

你還可能遇到另外一個狀況

play08:51

這個狀況是訓練成功

play08:54

但是測試失敗

play08:56

什麼叫做訓練成功測試失敗呢?

play08:59

假設我們現在是要做一個貓狗的分類器

play09:03

你就是要找一個函式輸入一張圖片

play09:05

輸出就是貓跟狗

play09:06

這個函式裡面有很多未知的參數

play09:09

你收集了一些訓練資料

play09:11

這些訓練資料告訴我們

play09:13

這兩隻動物叫做貓

play09:15

這兩隻動物叫做狗

play09:16

接下來你設定一組超參數

play09:19

開啟最佳化的演算法

play09:20

找出一組參數

play09:22

你實際測試了一下發現

play09:24

然後你發現這組參數有符合訓練資料

play09:29

代表訓練成功

play09:31

也就使用這組參數

play09:32

把這個動物丟到函式裡面輸出就是貓

play09:37

把這個動物丟到函式裡面輸出也是貓

play09:39

把這兩個動物丟到函式裡面輸出就是狗

play09:41

你找到一組參數

play09:42

它是符合訓練資料的代表訓練成功

play09:46

但是你不用高興的太早

play09:48

訓練成功的參數

play09:50

有可能帶入函式以後

play09:52

給一張訓練的時候沒看過的圖片

play09:55

結果是錯的

play09:57

那在這個例子裡面

play09:58

為什麼結果有可能是錯的呢

play10:01

為什麼看到這個在打電腦的黃色的貓

play10:04

今天這個函式的輸出有可能會是狗呢

play10:07

你檢查一下訓練資料

play10:08

你會發現說在訓練資料裡面

play10:11

這兩隻貓都是黑的

play10:13

這兩隻狗都是黃的

play10:15

對於這個最佳化的過程來說

play10:17

他可能會找到一組參數

play10:20

這一組參數是認定只要黑色的東西就叫做貓

play10:24

只要是黃色的東西就叫做狗

play10:27

那這一種訓練成功但測試失敗的狀況

play10:30

就叫做overfitting

play10:33

常常聽到有人說

play10:34

我在訓練過後遇到overfitting

play10:36

指的就是訓練成功了

play10:39

但是測試失敗了

play10:41

講到這邊有人可能會想說

play10:44

怎麼會發生這種事情呢

play10:46

難道機器沒有辦法判斷說

play10:49

顏色不重要 重要的是他的外型嗎

play10:52

機器沒辦法判斷這件事

play10:54

不要用你自己人類的想法

play10:57

來揣度機器學習的過程

play10:59

今天最佳化的過程只認一件事

play11:02

今天機器學習的時候只問一件事情

play11:04

就是學出來的參數

play11:06

有沒有符合訓練資料所給予的限制

play11:09

他完全不管找出來的參數

play11:12

是不是有道理的找出來的參數

play11:14

是不是能夠用在其他資料上的

play11:18

所以大家要注意一下

play11:19

不要用你自己的人類的想法

play11:21

來揣摩訓練的過程

play11:24

因為機器只認訓練資料

play11:27

它完全不會思考其他的事情

play11:31

如果你想要聽一個荒謬的

play11:33

訓練成功測試失敗的故事的話

play11:36

我留一個YouTube的連結給你

play11:38

在這個連結裡面

play11:40

我會講一個

play11:41

機器成功分辨寶可夢跟數碼寶貝的故事

play11:45

一定要看

play11:46

你就可以知道說機器的想法是有多麼的荒謬

play11:51

那怎麼讓機器找到比較合理的參數呢

play11:55

那這個其實就是機器學習的核心問題

play11:59

有很多不同的想法

play12:00

而一個可能的想法是

play12:02

增加訓練資料的多樣性

play12:05

剛才只根據這四個例子

play12:07

機器會覺得黑色的都是貓

play12:09

黃色的都是狗

play12:10

那怎麼辦 增加你的訓練資料

play12:13

加一隻黃色的貓 加一隻黑色的狗

play12:16

強迫機器讓他知道說

play12:19

如果你找出來的參數是

play12:21

黑色的就是貓 黃色的就是狗

play12:23

那你沒有辦法符合訓練資料

play12:25

要符合訓練資料

play12:27

你得想點別的辦法

play12:29

不能只憑著顏色來分辨貓跟狗這兩種動物

play12:33

所以增加訓練資料的多樣性

play12:35

可能是一個幫助訓練的過程

play12:38

找最終找到合理參數的方法

play12:41

但這只是其中一個做法

play12:43

還有其他的做法

play12:45

在最佳化的過程中

play12:47

除了設定超參數以外

play12:49

其實還有另外一個你需要設定的東西

play12:52

這個東西叫做初始參數

play12:55

你在使用這個最佳化的這個機器的時候

play12:58

你一定要設置初始參數

play13:00

那你設置完初始參數以後

play13:02

最終找出來的參數

play13:04

就比較有可能跟初始參數比較接近

play13:06

因為這個最佳化的演算法呢

play13:08

會從初始參數開始找尋符合訓練資料的參數

play13:12

所以當你設置完初始參數以後

play13:15

你最終找出來的參數會跟初始參數比較接近

play13:18

但怎麼知道什麼樣的初始參數才是我們要的呢

play13:23

怎麼設定這個初始參數呢

play13:25

通常你不知道怎麼設定初始參數

play13:29

所以常見的可能性是

play13:31

你只好隨機產生初始參數

play13:34

初始參數裡面每一個初始參數每一個數值都是隨機生成的

play13:39

都是躑骰子生成的

play13:41

假設你在訓練的時候你的初始參數是躑骰子生成的

play13:46

那這一種訓練的方法這種最佳化的方法叫做Train from scratch

play13:52

但是有沒有一種可能

play13:54

就是我們找一組比較好的初始參數

play13:58

所謂的比較好的意思可能是

play14:01

這組初始參數離我們所要的合理的參數是比較接近的

play14:08

如果我們從這組好的參數開始去做最佳化

play14:12

最終我們找出來的參數比較有可能是我們要的

play14:18

那這組好的參數你可以想成就是我們給模型的先驗知識

play14:24

你可以把這組好的參數想成是機器學習的先驗知識

play14:30

在學習之前有一些知識有一些能力

play14:34

是他與生就已經有的

play14:37

那期待透過設定這個先驗知識

play14:39

讓我們最終學習的結果更接近我們想要的

play14:44

但他真正面對的難題就是

play14:46

那上哪找這個好的參數呢

play14:49

上哪找這個鮮豔知識呢

play14:52

那我們的故事就從這裡展開

play14:56

那我們就從語言模型訓練的第一階段

play14:59

開始講起

play15:01

我們都知道說語言模型的訓練

play15:03

就是學習做文字接龍

play15:05

但是需要多少文字

play15:07

語言模型才能夠學會

play15:09

做文字接龍呢

play15:11

要正確的

play15:13

接觸一個token需要

play15:15

兩個面向的知識

play15:17

第一個面向的知識是語言的知識

play15:19

今天語言模型

play15:21

必須對人類語言的文法

play15:23

有正確的瞭解

play15:25

比如說給你一個未完成的句子

play15:27

這個人突然救

play15:29

後面可以接哪一個詞彙呢

play15:31

也許可以接跑,突然就跑起來

play15:33

也許可以接飛,是個魔法使

play15:35

然後就飛起來了

play15:37

但是你可能不會接的

play15:39

因為這顯然是一個不符合文法的奇怪句子

play15:41

那需要多少文字

play15:43

才能夠讓語言模型

play15:45

學會語言知識呢

play15:47

根據過去的文獻

play15:49

也許不用太多

play15:51

多或少是相對的啦

play15:53

要讓機器學習語言知識

play15:55

語言知識也許有一個詞彙就夠了

play15:59

你收集的資料裡面也許有一個詞彙

play16:02

就足以讓語言模型學會語言的知識

play16:06

但是要正確做接龍

play16:08

光是知道一個語言的文法

play16:11

有語言知識是不夠的

play16:13

這個模型還需要世界知識

play16:16

它需要對這個世界有所理解

play16:19

可能是對物理的世界有所理解

play16:21

可能是對人類的社會有所理解

play16:24

它才能夠正確的做揭露

play16:27

舉例來說

play16:28

水的沸點是攝氏

play16:30

後面接一百度是符合文法的

play16:32

接五十度可能是符合文法的

play16:35

但你知道一百度才是正確的接法

play16:38

五十度不是一個正確的接法

play16:40

因為這不符合我們對這個物理世界的認識

play16:45

那到底需要多少的文字量

play16:47

才能夠讓語言模型學會世界知識呢

play16:51

在這一篇比較古老的論文裡面

play16:54

這個是2020年的論文

play16:56

所以比較早的論文裡面發現說

play16:58

就算是你收集的資料量有300億個文字

play17:03

看起來還是不夠讓模型學會世界知識

play17:08

為什麼學習世界知識這麼難呢

play17:10

因為世界知識是有很多層次的

play17:13

看這個例子裡面

play17:15

也許設施後面接100度是合理的

play17:18

但是這個只對小學生來說是合理的

play17:20

水的沸點是會隨氣壓而改變的

play17:24

今天如果在低壓下

play17:26

沸點攝氏100度就不是一個正確的答案

play17:29

反而攝氏50度是沸點

play17:31

有可能是一個正確的答案

play17:33

所以世界知識是複雜而且有很多層次的

play17:37

需要真正非常大量的資料

play17:39

才能讓語言模型學會世界知識

play17:44

但是上哪裡去找大量的資料呢

play17:48

收集大量的資料並沒有那麼困難

play17:51

其因為任何文字資料

play17:53

都可以拿來教語言模型做文字揭露

play17:58

哪裡可以找到大量的文字資料呢?

play18:01

今天最常使用的來源就是網路

play18:04

網路上可以說是有無窮無盡的網頁

play18:07

裡面有無窮無盡的文字

play18:10

把這些文字拿出來

play18:12

就可以教語言模型做文字揭露

play18:15

那實際上的做法是這樣

play18:17

從網路上爬大量的文字資料

play18:19

那從文字資料裡面你把一個一個的句子拿出來

play18:23

然後把它整理成可以訓練文字接龍的模式

play18:27

比如說一個句子是

play18:29

人工智慧真神奇

play18:30

那整理成訓練資料以後就是

play18:32

人後面接工

play18:34

人工後面可以接智

play18:35

人工智後面可以接慧

play18:37

人工智慧後面可以接真

play18:39

所以你從網路上可以找到大量的句子

play18:41

大量的句子可以產生大量的訓練資料

play18:44

有這些大量的訓練資料

play18:46

你就可以找出一組參數

play18:48

這一組參數可以成功的做文字揭露

play18:52

而在產生這個訓練資料的過程中

play18:55

人工的介入是非常少的

play18:58

這種從網路上收集到的訓練資料

play19:00

你可以說真的是要多少就有多少

play19:04

那這種只需要非常少人工介入

play19:07

就可以取得訓練資料的學習方式

play19:10

它有一個名字叫做自督導式的學習

play19:14

它的英文是Self-supervised learning

play19:16

也就是機器自己教自己

play19:19

不需要人工介入

play19:20

只要不斷地去網爬

play19:22

就可以爬出大量的訓練資料

play19:24

語言模型就可以透過網爬的資料

play19:27

來學習做文字接龍這件事情

play19:31

那剛才雖然說用網爬的資料呢

play19:34

不太需要人工介入

play19:35

但是稍微一點人工介入往往還是必須的

play19:38

那這邊呢是引用這個DeepMind的一篇論文

play19:42

在這篇論文裡面

play19:43

他們講解了他們訓練他們的大型模型

play19:46

叫做Gopher的這個過程

play19:48

那他們說他們也做了一些資料的清理

play19:51

雖然網爬的資料

play19:52

隨便爬俯拾皆是

play19:54

但是爬下來的資料

play19:56

還是需要做過一些處理的

play19:58

什麼樣的處理呢

play19:59

比如說第一個是過濾到有害的內容

play20:02

比如說色情暴力的內容

play20:04

如果你讓機器一直看一些色情網站的話

play20:06

他就可能會講出一些色情網站裡面有的句子

play20:09

那為了避免他講出這些話

play20:11

不如在一開始的時候就不要讓他

play20:13

接觸有色情或暴力內容的網站

play20:16

所以應該要過濾掉有害的內容

play20:19

那再來這些爬下來的網頁裡面呢

play20:21

可能有很多HTML的符號

play20:24

那這些符號對語言模型的訓練是沒有必要的

play20:27

所以通常會把這些符號去掉

play20:29

你只會保留一些你覺得在文字接龍的時候

play20:33

語言模型接出來會有用的符號

play20:36

比如說今天語言模型蠻能夠產生表情符號的

play20:39

那就是在最後這個網爬資料在清理的時候

play20:42

並沒有把表情符號清掉

play20:44

所以他還是可以學會接出表情符號

play20:48

那再來也需要對這個資料的品質

play20:51

做一些控制

play20:52

尤其是去除一些低品質的資料

play20:55

但是什麼樣的資料叫高品質的資料

play20:57

什麼樣的資料叫低品質的資料

play20:59

這就是一個見仁見智的問題

play21:02

那像在這個GPT-3

play21:04

The Pile 還有PaLM

play21:06

他們都是一些知名的語言模型

play21:08

在他們的訓練過程中呢

play21:10

都有使用到一個資料品質分類器

play21:13

就開發這些模型的團隊

play21:15

他們另外訓練了一個分類器

play21:18

這個分類器會去決定說一筆資料

play21:20

它是高品質的資料還是低品質的資料

play21:24

如果是高品質的資料在訓練的時候

play21:26

就會讓語言模型看比較多次

play21:29

那它對最後訓練的結果

play21:31

就會有比較大的影響力

play21:33

那這些論文裡面通常是把這種

play21:35

維基百科比較像維基百科

play21:38

或比較像教科書裡面的句子的資料

play21:41

當作是高品質的資料

play21:44

那再來另外一件要做的事情呢

play21:46

是去除重複的資料

play21:49

那最後一步呢

play21:50

Testing Set Filtering

play21:52

這個是為了實驗的嚴謹性

play21:53

那這邊就不解釋

play21:55

那為什麼去除重複資料

play21:56

也是一個重要的步驟呢

play21:58

有一篇論文就告訴你說

play22:00

網路上爬下來的資料

play22:02

真的是有很多重複的資料

play22:04

這篇文章發現說

play22:05

以上這一個很長的段落

play22:07

居然在網爬的資料裡面重複了六萬多次

play22:11

這個資料到底是什麼呢?

play22:13

這個資料是一個婚禮公司的業配

play22:16

他告訴你說

play22:17

你要把這些方案通通都用在你的婚禮上

play22:21

旁邊的人就會覺得你真是太棒了

play22:24

這句話在網路上足足出現了六萬次

play22:27

所以如果你拿這樣子的資料來訓練你的語言模型

play22:30

他之後就會動不動幫這個婚禮公司業配

play22:33

動不動就講這個段落出來

play22:35

所以我們需要去除重複的資料

play22:39

那所有的文字資料都能拿來讓語言模型學做文字接龍嗎?

play22:45

這就是一個見仁見智的問題了

play22:49

最近有一個新聞,是去年年底有一個新聞

play22:52

就是New York Times告了OpenAI跟Microsoft

play22:55

因為他們認為OpenAI拿了他們的新聞

play23:00

而且可能是付費會員才讀得到的新聞

play23:03

來訓練語言模型

play23:06

至於誰是誰非 我又不是法律的專家

play23:08

在這邊就不做評論

play23:10

只想要告訴你說

play23:11

如果是任何資料都拿來訓練

play23:14

教機器做文字接龍

play23:16

也有可能會讓你惹上一些麻煩

play23:19

不過今天其實多數的那個開發團隊啊

play23:23

在訓練語言模型的時候

play23:24

嗯 就是隨便爬資料隨便訓練啦

play23:29

只要我看得到的資料

play23:30

我爬得到的資料

play23:31

通通都是我可以拿來用的

play23:33

我聽到會很小心

play23:35

要求每一筆資料都有授權的

play23:37

只有那個科技

play23:39

只有國科會的那個臺德計畫有這樣做耶

play23:42

好 那這個ChatGPT啊

play23:44

其實在ChatGPT之前

play23:46

OpenAI就已經開發了一系列的GPT模型

play23:51

這些GPT模型就是用

play23:53

大量的網路上找到的文字訓練出來的

play23:57

很多人以為OpenAI是這幾年才開始開發大型的模型

play24:02

其實不是

play24:03

OpenAI早在2018年的時候

play24:06

就釋出了第一代的GPT

play24:09

只是第一代的GPT模型非常的小

play24:11

它只有117個million的參數

play24:16

也就是這個一億個參數

play24:19

那一億這個參數你可能覺得一億這個數量很大

play24:22

但其實就模型而言

play24:23

這不是一個特別大的模型

play24:26

就算放在2018年

play24:28

也不是一個特別大的模型

play24:31

那他用的訓練資料也不多

play24:34

大概就是這個700本書左右的內容而已

play24:38

那上面這個數字啊

play24:40

代表的是那個模型裡面的參數量

play24:43

那如果你沒有辦法想像參數量是什麼意思的話

play24:46

你就想成是模型的複雜程度

play24:49

如果要做個比喻的話

play24:51

這個參數量代表的就是人工智慧的天資

play24:55

這個參數量越大就代表這個模型天生越聰明

play25:00

但是光是有天資是不夠的

play25:03

還需要後天的努力

play25:04

那下面這個數字代表的是資料量

play25:07

也就是用了多少的資料來教人工智慧做文字接龍

play25:13

所以下面這個數字代表了後天的努力

play25:16

所以要有天資也要有努力

play25:19

兩者缺一不可才能夠訓練出一個聰明的語言模型

play25:24

在2018年的時候GPT-1

play25:26

它不是個聰明的模型

play25:27

也不是個努力的模型

play25:29

它沒有什麼特別的攻擊

play25:31

所以就沒有掀起任何的波瀾

play25:35

過了一年之後

play25:36

OpenAI釋出了GPT-2

play25:39

GPT-2是GPT-1的10倍大

play25:42

它有15億個參數

play25:45

15億在當年看來

play25:48

是一個毀天滅地的巨大模型

play25:50

但如同我在第一堂課就跟大家講的

play25:52

今天GPT-2只是一個小模型

play25:55

你在作業5要用的模型

play25:57

比GPT-2還要大5倍左右

play26:01

GPT-2也用了很多的資料

play26:03

用了40GB的資料來進行訓練

play26:07

這個數字指的是

play26:08

它所使用的文字量的檔案大小

play26:11

GPT-2有什麼神奇的結果嗎?

play26:15

沒什麼神奇的結果

play26:17

這是當年GPT-2文章裡面的一個數據

play26:19

他說我們試OpenAI試了不同大小的模型

play26:23

從GPT-1一直到GPT-2

play26:26

縱軸是回答問題的正確率

play26:30

當然越大的模型回答問題的正確率就越高

play26:34

這個正確率大概是55%左右

play26:37

但這個正確率就算放在2019年

play26:40

也不是一個特別厲害的成果

play26:43

這個綠色的虛線是其他模型的成果

play26:46

有某一個模型可以得到遠比GPT-2還要更高的正確率

play26:52

GPT-2沒有好的表現

play26:54

怎麼辦呢?

play26:56

OpenAI並沒有就此放棄

play26:58

他們想說也許是因為模型不夠大

play27:02

那我們就弄一個更大的模型

play27:04

足足有GPT-2的100倍

play27:07

GPT-3 2020年的時候發表的

play27:10

他足足有GPT-2的再100倍大

play27:14

他的訓練資料量也非常的驚人

play27:18

有580GB的文字量

play27:21

如果你對580GB的檔案大小沒有什麼概念

play27:24

我告訴你580GB的文字量裡面

play27:27

大概有3000億個token那麼多

play27:31

如果你對3000億個token也沒有什麼概念的話

play27:34

我會告訴你

play27:35

這差不多相當於哈利波特全集閱讀了30萬遍

play27:40

所以這個巨大的模型

play27:42

他用哈利波特全集30萬遍的資料量

play27:46

來學習做文字接龍

play27:49

他的背後的知識儲備應該是非常的驚人

play27:54

但這個巨大的模型

play27:56

用了巨大的資料訓練的結果怎麼樣呢

play27:59

還是不怎麼樣

play28:01

這個是GPT-3的論文

play28:03

這個橫軸是模型的大小

play28:06

從最小的模型一直到最大的GPT-3

play28:09

隨著模型越大

play28:11

做正確率呢 回答問題的正確率呢 當然是越來越高

play28:15

但是最高也不過高到50幾%而已

play28:20

所以當年很多人覺得這個OpenAI就是走錯方向了

play28:24

做文字接龍不斷地接 怎麼可能接出人工智慧來

play28:28

到底這個GPT-3用起來 它是什麼樣的感覺呢

play28:33

其實現在在OpenAI的Playground上面

play28:36

你還是可以玩到GPT-3的某一個版本的

play28:39

那我這邊就操作一下,讓你感受一下當年我們看到GPT-3的時候

play28:44

它的感覺,它用起來是什麼樣子的

play28:50

好,那我們來真的用一下GPT-3

play28:53

讓你感受一下當年的GPT-3

play28:56

用起來跟它對話是什麼樣的感覺

play29:00

現在在OpenAI的Playground上面

play29:03

你還可以找到當年殘留下來的GPT-3的幾個版本

play29:08

那這邊用的是DAVINCI 002 GPT-3的某一個版本

play29:13

那當你要用DAVINCI 002的時候他跟你說這個是個歷史的遺跡現在有

play29:19

更好的模型了

play29:21

那我們就來試用一下讓你

play29:23

這個可以體驗一下當年我看到GPT-3的感受

play29:28

還可以跟他說比如說問他

play29:32

What is

play29:33

Machine learning

play29:36

看看他能不能夠回答你的問題喔

play29:41

可以他告訴你

play29:42

Machine learning是什麼什麼什麼

play29:45

但他不是每次都可以回答你的問題

play29:48

我們再試一次

play29:54

他說What is machine learning

play29:56

I want to do seriously machine learning

play30:01

What course I should take

play30:02

就我問他什麼是Machine Learning

play30:04

那他反問我說

play30:06

那我應該上什麼課

play30:08

我才能夠學到Machine Learning呢

play30:10

所以你知道這個模型

play30:12

有時候好像在跟你講話

play30:14

有時候又好像不知道你要什麼

play30:16

好那這個模型

play30:18

其實也知道蠻多

play30:20

那如果你要讓這個模型

play30:22

真的一定能夠回答你的問題的話

play30:24

那你需要有一些小技巧啦

play30:26

告訴他說這是一個問題

play30:28

好接下來呢

play30:30

強制他一定要產生一個答案

play30:34

那這樣你就比較容易呢讓這個模型呢一定會回答你的問題

play30:39

這邊呢先打ANS冒號那模型就會知道說後面呢

play30:44

是要產生這個問題的答案不要產生奇奇怪怪的東西再試一次

play30:50

他會

play30:51

試著這個回答你的問題說machine learning是什麼回答完以後呢

play30:56

又再自問自答產生新的問題跟新的答案

play31:00

使用GPT-3的時候這個Prompt的template真的就非常重要

play31:07

你怎麼下Prompt真的會大幅影響GPT-3的能力

play31:12

那今天其實當你在用這些比較新的語言模型Cloud GPT-4的時候

play31:19

老實說我覺得Prompt的template、Prompt的格式

play31:24

對於語言模型的能力真的是影響不大

play31:27

那我猜很多人會感覺這個Prompt的template、PUMP的格式非常重要

play31:33

可能是當年使用GPT3的時候遺留下來的心理陰影

play31:38

它真的是一個非常不受控的模型

play31:41

大家知道蠻多事情的

play31:43

比如說我問他說什麼是LOL

play31:50

他會知道說LOL就是這個Left Out Loud

play31:55

那LOL有很多不同的含義啊

play31:58

怎麼讓他把多種不同的含義都講出來呢?

play32:02

也許你可以這邊寫個1

play32:04

暗示他說一定要產生多個答案

play32:09

好他就會說LOL有很多不同的縮寫

play32:12

可能是laughing out loud

play32:13

可能是lots of love

play32:15

可能是lots of laughter

play32:17

可能是love of life等等

play32:19

有各種不同的縮寫

play32:21

總之你要非常認真的下Prompt

play32:23

GPT-3才會給你答案

play32:25

這個GPT-3用起來的感覺啊

play32:28

真的是一言難盡

play32:31

有時候好像覺得他很厲害

play32:33

有時候又覺得

play32:35

哎呀這個東西怎麼這麼不受控

play32:40

你可能會想說

play32:42

那是不是因為模型還不夠大呢

play32:45

也許什麼750個175個Billion參數

play32:49

1750億個參數還是太小了

play32:53

那Google告訴你說 它訓練了一個更大的模型

play32:56

叫做PaLM

play32:58

足足是GPT-3的再三倍大

play33:01

但是 剛才看到的那個控制不住自己說話的鏡頭還是存在

play33:06

他們問模型一個問題 一個數學問題

play33:09

你以為模型會回答你嗎?

play33:10

不 它反問更多數學問題給你

play33:15

你根本就控制不住這些模型的輸出

play33:18

但是 為什麼我們控制不住語言模型的輸出呢?

play33:22

為什麼他不能好好回答問題呢

play33:26

如果你仔細一想你會發現

play33:28

你其實也沒有教他回答問題啊

play33:31

他的一切知識都是從網路上取得的

play33:36

你拿臺灣最高的山是哪座山去網路搜尋

play33:39

你可能得到這個網頁

play33:41

告訴你臺灣最高山是哪座山

play33:43

後面應該接三個選項

play33:45

我臺灣最高的山是哪座山

play33:47

知道答案的朋友請留言

play33:49

對機器來說

play33:50

他根本不知道要怎麼回答問題啊

play33:54

所以第一階段機器自我學習之後

play33:58

他好像從網路上學了點的東西

play34:01

但是他不知道使用的方法

play34:04

他就好像是這個石破天在摩天矮上

play34:08

練了上乘的內功

play34:09

但他根本不知道自己練了內功

play34:12

他沒有辦法把他所學的內功使用出來

play34:16

所以接下來就需要第二階段

play34:19

由人類來指導這些語言模型

play34:22

讓它發揮真正的潛力

Rate This

5.0 / 5 (0 votes)

Related Tags
语言模型机器学习深度学习自我学习优化算法超参数过拟合训练数据网络爬虫知识储备
Do you need a summary in English?