李宏毅 (Hung-yi Lee) – 大模型 + 大資料 = 神奇結果?:大模型的頓悟時刻

李宏毅 (Hung-yi Lee) - 大模型 + 大資料 = 神奇結果?:大模型的頓悟時刻

本视频介绍了大型语言模型中的大模型和大数据,以及最新推出的GPT-4模型。

精华

  • 👾 随着模型和数据的大小增加,生成式AI的表现越来越出色。
  • 💻 虽然好的文字接龙模型并不一定代表最终应用上的好表现,但是这项研究的实验结果显示模型大小和数据量对生成式AI的表现至关重要。
  • 🤖 GPT-4模型的表现值得期待,是深度学习领域的重要进展。

PPT文件:

https://t.zsxq.com/0dtYxBL1k

视频文字版:

【生成式AI】大模型 + 大資料 = 神奇結果?(1/3):大模型的頓悟時刻 – YouTube
https://www.youtube.com/watch?v=SaZTJJNOCOY

Transcript:
(00:00) 好,現場的同學,線上的同學,大家好啊 我們就來繼續講大型語言模型的故事 今天會講兩件事 我們講一下大模型跟大資料有什麼神奇的地方 然後我們講一下GPT-4 大家知道說,禮拜三的時候GPT-4釋出了 來講一下我實測的結果 今天這份投影片是要講大模型跟大資料 帶來什麼神奇的力量 左邊這個圖一樣是Midjourney生成的 我這邊下的指令是說,畫一個巨大的語言模型 colossal是巨大的意思 你知道有個電影叫《柯羅索巨獸》 柯羅索就是非常大的意思 就畫一個巨大的語言模型 然後它要展現出不可思議的力量 Midjourney就畫一個這樣子的圖 他覺得他畫一個大怪獸 我不知道為什麼這個大怪獸算是一個語言模型 然後我發現你只要叫Midjourney畫大怪獸
(01:06) 他前面一定會畫一個小人 不管你有沒有叫他畫人,他都要畫一個人 我覺得這是要對比出這個怪獸有多麼的大 怪獸相對於這個人而言,他是非常巨大的 那你可能會覺得說,大模型大資料本來就會比較好啊 那這個故事有什麼好講的呢? 確實大家都知道,大模型大資料就等於非常厲害 在2020年的時候,這邊是引用一篇比較舊的論文 有一篇Paper是OpenAI的 他的標題是 Scaling Laws for Neural Language Models 裡面就很明顯地展示 告訴你說大模型多資料結果就會好 以下是這篇比較古早的論文的實驗結果 這個縱軸是什麼呢? 縱軸是說,當我們在訓練一個語言模型的時候 你知道訓練語言模型的時候 就是去做文字接龍 那這個縱軸你可以想成是文字接龍的loss 或者是文字接龍的錯誤率 如果你不知道loss是什麼的話 就想成文字接龍的錯誤率
(02:12) 總之,越低越好 當然我知道說,文字接龍的好壞 不一定跟最後你要解的 任務的效能是成正相關的 因為畢竟文字接龍是一回事 接下來老師的調教 還有reinforcement learning的調教也是很重要的 所以文字接龍好 並不代表最後在應用的時候會做得好 等一下我們還會再看到這個議題 我知道說,語言模型、文字接龍做得好 不一定在後端的應用會做得好 不過呢,在這篇論文裡面是直接假設說 語言模型、文字接龍做得好,反正它就是好 假設要把文字接龍這件事情做好 如果你的模型的參數量越來越多 左邊這張圖從左到右代表模型越來越大 你就發現說,你在做文字接龍的時候 預測下一個字的錯誤率就會越來越低 同樣的道理,看右邊這個圖 這個橫軸代表的是訓練的資料量 當我們訓練的資料量越來越多的時候 文字接龍的錯誤率也會越來越低
(03:19) 所以這個結果很直覺 大模型就是好,多資料就是好 這個課程差不多上到這邊,就可以下課了 但是接下來我們要講講 這個大模型還有什麼樣神奇的現象呢? 這個大模型有一個神奇的現象 這邊我叫做頓悟時刻 那如果英文的話 這個論文上、文獻上都是講Emergent Ability 如果直接把翻譯成中文 也許你可以翻成湧動現象 當模型越來越大的時候 語言模型會在某一個瞬間突然就頓悟 那這個頓悟到底是什麼意思呢? 我們來看文獻上面的實驗結果 在這篇論文裡面, 就是嘗試讓各種不同大小的模型去解了八個不同的任務 這邊嘗試了很多不同的模型 包括Google的LaMDA 大家都知道OpenAI的GPT-3 還有Gopher和Chinchilla Gopher跟Chinchilla都是DeepMind的 這個我們等一下還會提到 PaLM也是Google的
(04:25) 這個圖上的縱軸 代表說這些模型在這些任務上 這邊有總共八個任務,在八個不同任務上的正確率 那虛線代表隨機亂猜的結果 那你會發現說,當模型很小的時候 那這邊模型是從10M到100個billion的參數 當模型在10M到大概1個billion參數的時候 在這些任務上,它的程度都跟隨機差不多 而模型大概超過10個billion的時候 它會在一瞬間突然頓悟 本來什麼都不會,本來從模型從10M到1B 並沒有慢慢變好 照理說你會覺得模型變大 它應該是稍微慢慢變強吧 從本來什麼都不會,到會一點點 到會更多,然後慢慢變強 但是這邊模型展現的能力 並不是隨著模型變大而慢慢變強 而是有一個頓悟的瞬間,感覺模型大概在10B到20B的時候 它會突然開悟了 突然這些任務就都做得起來了 在這之前,那就算模型加大 你都做起來都是跟隨機的結果差不多
(05:35) 所以這是一個神秘的頓悟現象 這邊其實造成你在開發這個技術的時候 你會有一個隱憂 因為你一開始 一定是先從小的模型開始train起 你先train個10M的模型,覺得很差 然後想說,加大一點點吧 加到1個billion的參數看看會怎樣 然後還是很差,那你跟老闆說 1billion的模型還是很差 能不能train個再更大一點的 老闆就會跟你說,10M到1B都沒有進步了 再更大怎麼會有進步呢? 就告訴你這個project,放棄不要浪費公司的錢 這個頓悟的現象, 也許就是我們在開發大型語言模型的時候會遇到的一個難關 它會讓你沒有辦法說服你的投資人去投資一個更大的模型 因為模型慢慢變大的時候,並不會變好啊 要大到一個程度才會突然變好 那為什麼會有這個頓悟的時刻呢? 我們來舉幾個解數學的例子 對小模型來說,你叫它解一個數學的問題 因為它很笨,所以它什麼都不會 所以它沒列式子,也解不出答案 所以直接就得到0分
(06:41) 那對一個中的模型呢? 也許中的模型 它公式列對了,但是最後計算錯誤了 這個跟安琪拉小分隊一樣 公式對了,但是代數錯了 沒人聽得懂,算了 這真不重要,這梗不重要 這甄嬛傳的梗,這真的不重要 公式對了,計算錯誤,那一樣是0分啊 那個數學的考題我們都只看最後的答案了 不看你列的過程 那大模型,公式對了 計算也對了,才有100分 所以如果你從小模型一直看到大模型 你會發現從0分 0分 然後在某一瞬間突然變成100分 就好像開悟了一樣 所以這個就是大型模型的頓悟時刻 那從這個頓悟時刻給我們的啟示應該是說 在分析這個模型效能的時候,不要只看正確率 你只要解數學問題的時候,不要只看對或錯 你就可以看一下它列的過程 那這樣也許可以給你更多的信心 也許你在從小模型開發到中模型的時候發現 它公式其實列對了,只差一點點 計算只要不要出錯,它答案就會對了 也許會給你一些信心,把模型從中模型變成大模型
(07:49) 那這個頓悟的時刻不是只在某一些task上發現 在一些我們今天已知的跟這個Pump有關的技巧 跟這個prompt大模型有關的技巧 也跟模型的大小很有關係 記不記得我們上週講了Chain of Thought 我們講Chain of Thought的時候 我們說你只要告訴模型你在想問題的時候 要一步一步慢慢來 它今天解數學的能力,就突然進入另外一個量級 但是Chain of Thought這個現象,是要大模型才會發生的 我們來看最左邊這個圖 縱軸是解這個數學問題的正確率 橫軸是模型的參數量從小到大 那如果不做Chain of Thought的時候 模型的參數量從小到大,它的進步是一點點 如果做Chain of Thought的時候 在模型小的時候,模型從1B到10B的時候 有做Chain of Thought其實是比較差的 比較模型think step by step 結果是比較差的 它是要到某一個瞬間以後,模型夠大以後 Chain of Thought才會突然發揮效用
(08:55) Instruction tuning也是一樣 就記得我們上週也講了Instruction tuning 所以你找了一堆任務讓機器去學 希望它看了在某一些任務上面 學了人類會用什麼樣的指令操控它以後 在新的任務上面,也可以有好的結果 Instruction tuning這件事情 黑色這條線是沒有做Instruction tuning的時候的正確率 沒有做Instruction tuning的時候 模型隨著越來越大,它會慢慢地進步 但進步幅度是小的 有做Instruction tuning的時候 在模型小的時候Instruction tuning 根本沒有發揮作用 模型要大到一定的程度以後 Instruction tuning才突然之間會起作用 當然現在這個也不難理解 因為Chain of Thought、Instruction tuning 都是給了模型額外的指示 比如說Chain of Thought 就是要模型去think step by step 小模型它很弱啊 你叫它think step by step 它也可能只是產生一些隨機的結果 然後反而把自己模型自己搞得非常的困惑 所以會變成有加Chain of Thought 小模型反而比較差
(09:58) 而Chain of Thought這件事情,要等模型夠大 你叫它think step by step的時候 它可以產生有道理的東西 Chain of Thought才開始發揮作用 當然如同我剛才講的,這種突然之間模型會開悟的現象 會造成你開發的時候非常大的危機 因為可能有人覺得Instruction tuning 應該是有用的方法 Chain of Thought應該是有用的方法 但一開始它開發在小模型上 然後就覺得Instruction tuning應該沒有什麼作用 那就會阻止你去使用這個技術 因為你可能在小模型的時候 發現Instruction tuning沒有作用 就放棄了,你不會想要去嘗試更大的模型了 右邊這兩個圖是什麼意思呢? 這第三個圖,我把論文的連結放在這邊 這邊有一個方法叫做Scratchpad 它其實跟Chain of Thought是差不多的意思 所謂Scratchpad就是說給機器一個白板 然後讓它在上面解數學的時候把數學式列出來 其實跟Chain of Thought的意思是差不多的 那最右邊這個 我們可以特別講一下calibration是什麼意思呢? calibration是什麼意思呢?
(11:04) 大家都知道說現在ChatGPT很多時候它會亂講話 舉例來說,你叫它介紹台大杜鵑花節 它會好好地介紹 但是你叫它介紹台大玫瑰花節的時候 它也會煞有其事地講一個玫瑰花節的故事給你聽 但是我們這邊要問的事情是 模型知不知道自己在瞎掰 它在瞎掰一個答案的時候 有沒有覺得有一點心虛呢? 怎麼知道模型有沒有在心虛呢? 就是看它在輸出這個文字的時候 它輸出文字的機率 舉例來說,假設台大杜鵑花節是 每年三月這件事情是一個事實 也許機器在預測「三」這個字的時候 它的confidence是很高的 那我這邊用不同高低的bar來代表說 「三」這個字 機器預測的時候 做文字接龍的時候預測的機率 這個機率就代表一個信心分數 機率越高代表機器對自己的答案是越有信心的 可能機器在講台大杜鵑花節是每年三月的「三」的時候 它是非常有信心的
(12:10) 在講台大玫瑰花節是每年三月的「三」的時候 也許它的信心是很低的 只是在做random sample的時候 正好sample把「三」這個字sample出來而已 如果我們來分析機器的答題的正確率 跟它信心之間的關係的話 在左上角引用的這篇paper裡面 得到這樣的一個實驗結果 那這個橫軸代表機器在答題的時候 它答題的信心分數 這邊所謂的信心分數就是它伸出那個答案的時候 那個答案的機率 你可以算出那個答案產生出來的機率 那縱軸是什麼 縱軸是指那個答案 真正是對的時候的機率有多大 那個答案真正是對的機率有多大 那你就可以看到說 這邊從黃色到深藍色指的是不同大小的模型 然後黃色是最大的模型 深藍色是最小的模型 那你發現最小的模型 它的信心分數跟它答案正確的機率關係不大 但是對於大模型而言
(13:17) 它的信心分數越高它的正確率就越高 信心分數越低它的正確率就越低 所以你發現大模型它知道自己不知道 大模型在瞎掰一個答案的時候 它是有點心虛的 對小模型來說不管是不是在瞎掰 它也不在乎 對它來說有沒有瞎掰的時候 它的信心的程度都是差不多的 那這個指的就是calibration 而要模型夠大的時候 它才具有calibration的能力 比如說我們看右邊這個圖 我們看藍色這一條線 這個橫軸是模型由小到大 縱軸是什麼 縱軸這邊說有一個東西叫做ECE ECE指的是什麼 ECE指的是calibration的程度 ECE這個值是越小越好 ECE這個值其實就是左邊這張圖的對角線 跟我們畫的這一條曲線之間所夾的面積 所以黃色這一條線ECE算起來就非常小 黑色這一條線ECE算起來就非常大
(14:23) 因為這個深藍色這一條線 跟橫軸跟對角線它的差距非常大 所以中間夾的面積很大 所以ECE算起來就很大 那你會發現calibration這個現象 在小模型的時候到10B的時候 似乎不太有calibration的現象 但是到某一個瞬間 它突然知道說有時候它會講錯話 有時候它講錯話就會開始突然覺得很心虛 這也是要模型夠大才會突然發生的現象 好 但到目前為止我們看到的 雖然說模型有一個頓悟的瞬間 但是畢竟模型越大結果還是會越來越好 只是說在某一個瞬間會突然變得很好 那有沒有一個可能是 其實模型越大結果越差呢 有一個比賽叫做Inverse Scaling Prize 這個比賽就是懸賞會讓越大模型做得很差的任務 這個是那個比賽的一個圖 它就說一般正常的狀況下 我們都是覺得模型越大結果越好
(15:26) 但是這個比賽就是要徵求 你能不能夠設計出一些奇怪的任務 是模型越大結果越差的呢 這個比賽是有獎金的 這個比賽叫Inverse Scaling Prize 那因為有獎金確實徵求到了很多奇奇怪怪的任務 這些奇奇怪怪的任務這邊就舉幾個例子 等一下會帶大家看一個神秘的例子 徵求到一些任務 這些任務是模型越大 居然做出來結果越差 怎麼會這樣呢 後來就有一篇Google的Paper他說 當年在做Inverse Scale Prize的時候 大家試的都是一些小模型 他覺得小模型GPT-3算是一個不夠大的模型 只有175個billion 然後Google就發狠拿出PaLM 有GPT-3的再三倍大 然後來打這個Inverse Scale Prize 看看會發生什麼事 來打這個Inverse Scale Prize得到任務看看會發生什麼事 他的結果是這樣子的
(16:30) 縱軸是在那一些任務上 我們說大模型會做得比較差的任務上平均的正確率 橫軸是模型從小到大 那這邊就是有各式各樣不同的模型了 Google PaLM其實也有不同大小的版本 從小的一直到最大的有540個billion的參數 他們發現一個神奇的shape 一個U型的shape 也就是說最小的模型 Performance才比較好對這些任務來說 比較大的模型結果反而比較差 到最大的模型的時候結果又好起來 所以他們說 之前在Inverse Scale Prize找出來的那一些任務 號稱會讓大模型變差 只是因為這些人試的模型不夠大 拿一個真正大的模型結果還是會好起來的 接下來要問的就是 這個神秘的U型曲線是怎麼出現的呢 那我們就來看Inverse Scale Prize裡面的其中一個任務吧
(17:36) 這個任務的輸入在這邊 我幫大家做了一下中文的翻譯 免得大家覺得英文字太小 很痛苦 這個問題是這樣 現在有一個賭局 這個賭局 你有94%會輸50塊 你有6%會贏5塊 那David決定要玩這個遊戲 玩了以後贏了5塊錢 問你說這個賭局是不是一個正確的決定 我這邊做了一個失誤 就是我不小心把答案寫出來了 但是這個答案也不一定是對的 那我問一下大家的意見吧 你覺得這個賭局 參加這個賭局是正確的 同學舉手一下 有同學覺得是正確的 那你覺得這個賭局是錯誤的同學舉手一下 請放下 因為這個答案已經顯示在這邊了 這個答案是錯誤的 為什麼是錯誤的呢 因為雖然最後贏了5元 好像這個賭局是一個正確的決定 但是如果你算賭局的期望值的話
(18:42) 你會發現這個賭局的期望值是會虧錢的 所以最終的答案是 參加這個賭局不是一個正確的決定 那如果是對一個最小的模型來說 這個題目他可能根本看不懂題目 就隨便亂猜 所以他的程度就跟亂猜是一樣的 而對於一個中模型來說 他會說贏了5元 贏了5元那不是就是一個正確的決定嗎 所以他會猜正確 結果反而比隨機還要差 那如果大模型有機會計算期望值 他才能夠得到正確的答案 我們說那個大模型有可能會比較差的那些任務 基本上他的設計都很類似這個概念 這個表格是來自於這篇論文裡面 他就是稍微猜測一下 為什麼這個U型曲線會出現 他發現那些會讓大模型比較差的任務 其實基本上這個任務裡面都包含了一個陷阱 這邊叫做distractor task 你有一個真正的任務
(19:45) 但是還有一個陷阱任務 就好像你要讓一個人中計中計 你必須要對方看得出是一個計謀 他才會中計中計 如果他看不出是一個計謀 就中不了計中計 舉例來說這邊有一個任務叫做redefine math 重新定義數學問題 那裡面的題型都是這樣 假設π等於10 然後問你π加1等於多少 當然答案是11 但是對一個中模型來說 他心裡的認知就是π等於3.14 所以他認為3.14加1應該是4.14 所以他答不出正確的答案來 他沒有辦法根據題目的敘述重新定義這些符號 那模型要到真的很大的時候 他有辦法看懂π現在等於10不是3.14 那他才有辦法在這些會讓比較大的模型結果差的任務裡面 得到真正好的結果 那這個就叫做一知半解吃大虧 你有一點點的能力 然後反而會做得比較差 所以這個就是為什麼會有U型曲線出現的原因 那接下來問的是模型還能不能夠更大呢
(20:53) 我們剛才已經看到了很多大小的模型 從BERT、GPT-2、GPT-3、LaMDA 一直到PaLM有540個billion的參數 還有沒有更大的模型呢 還有更大的模型 舉例來說有一個模型叫做Switch Transformer 它居然有1.6T的參數 那這樣它就比PaLM還要大三倍 比這個GPT-3還要大十倍 但是像Switch Transformer這種模型 因為它真的實在是太大了 所以它的結構就跟原來的Transformer還是有一些差異 比如說Switch Transformer裡面有什麼樣的差異呢 它用了一種特殊的結構叫做Mixture-of-expert Mixture-of-expert的意思是說 在它的大模型裡面其實有很多的小模組 那你今天在Inference的時候 在用這個模型的時候 不是一次用全部的模組 你只每次調用一部分的模組出來使用 就像在這個圖上
(21:57) 它可能展示說它有四個模組 那它這邊只調用了模組二 在這邊只調用了模組一 不一次用所有的參數 不一次用所有的模組 這樣的好處是它在Inference的時候比較快 它不需要所有的模組都使用 所以它在真的用這個模型的時候 並沒有真的用到所有的參數 它訓練的時候訓練到所有的參數 但是在Inference的時候在用的時候 只用了部分的參數 可以節省你Inference的時候 需要的運算資源 那這個是Mixture-of-expert的概念 那至於實際上怎麼訓練這一種 有多個不同模組 然後在Inference的時候可以選擇模組的模型 我把論文連結列在這邊 留給大家自己參考

本文地址:https://www.163264.com/2577

(0)
上一篇 2023年4月21日 下午7:29
下一篇 2023年4月22日 上午1:05