【生成式AI導論 2024】第4講:訓練不了人工智慧?你可以訓練你自己 (中) — 拆解問題與使用工具

Hung-yi Lee
9 Mar 202447:21

Summary

TLDR本视频课程探讨了如何在不训练模型的情况下增强语言模型的能力,介绍了多种创新方法。首先,通过将复杂任务拆解为简单任务,使模型更易于处理。接着,利用Chain of Thought技术让模型分步骤思考,以提高解决问题的准确性。此外,介绍了自我反省的概念,即让模型检查并修正自己的错误,以及利用额外工具如搜索引擎和程序编写来强化模型能力。课程还提到了Retrieval Augmented Generation(RAG)技术,以及如何通过plugins调用更多工具。最后,提出了使用模型进行创造性任务,如生成图像和玩文字冒险游戏的可能性,展示了语言模型的多样化应用和强大潜力。

Takeaways

  • 📚 强化语言模型能力的方法不仅限于训练模型,还可以通过拆解复杂任务、提供额外信息和使用工具等策略。
  • 🔍 在不调整模型参数的情况下,可以通过将复杂任务分解为简单任务来增强语言模型的处理能力。
  • 📈 通过Chain of Thought技术,让模型逐步展示解题过程,有助于提高模型解决问题的准确性。
  • 🤖 语言模型可以通过自我反省和修正错误来提升输出结果的准确性。
  • 🔧 语言模型可以使用外部工具如搜索引擎、文字生图AI等来增强自身能力。
  • 📊 通过Retrieval Augmented Generation技术,结合搜索结果与模型输出,可以提升模型回答问题的精确度。
  • 🛠️ GPT-4等新型号的语言模型具备编程能力,可以通过编写并执行代码来解决数学等复杂问题。
  • 🎨 GPT-4能够调用图像生成AI,根据文本描述创造相应的图像,增强交互体验。
  • 🔗 语言模型通过特定的符号和指令与外部工具交互,实现更广泛的功能扩展。
  • 📝 通过Tree of Thought等组合技术,可以综合多种方法,提高解决复杂问题的能力。
  • 🔄 语言模型在使用工具时可能会犯错误,研究者通过各种技术持续优化模型使用工具的能力。

Q & A

  • 如何通过拆解任务来增强语言模型的能力?

    -可以通过将复杂任务分解成简单任务的方式来增强语言模型的能力。例如,如果要写一篇长篇报告,可以先列出大纲,然后逐节撰写,每完成一节都检查和修正,确保前后一致性。

  • Chain of Thought是如何帮助语言模型解决问题的?

    -Chain of Thought要求语言模型逐步思考问题,类似于人类的思考过程。通过先列出计算过程或逻辑步骤,然后再给出答案,可以帮助模型更准确地解决问题。

  • GPT-3.5和GPT-4在处理数学问题时有何不同?

    -GPT-3.5在处理数学问题时可能会犯错误,因为它依赖于文字接龙的方式来解决问题。而GPT-4则可以编写并执行程序来解决数学问题,从而得到更准确的答案。

  • 什么是Recursive Reprompting and Revision?

    -Recursive Reprompting and Revision是一种通过迭代和修订来提高大型语言模型输出质量的技术。它通过先构建大纲,然后逐步填充内容,并在每个步骤中进行自我检查和修正。

  • 语言模型如何使用外部工具来增强自身能力?

    -语言模型可以通过调用外部工具,如搜索引擎、文字生图AI等,来获取额外信息或执行特定任务。这些工具的使用是通过在文本中插入特殊符号和指令来实现的。

  • Tree of Thought是什么?

    -Tree of Thought是一种结合了多个技术的方法,通过将复杂任务分解、自我反省和多次尝试来提高语言模型解决问题的能力。它允许模型在每一步生成多个答案,并选择最常出现的答案作为最终答案。

  • GPT-4如何决定何时使用外部工具?

    -GPT-4通过内置的机制和学习到的行为模式来决定何时使用外部工具。它会在认为需要额外信息或特定功能时调用相应的工具。

  • GPT-4在处理货币兑换问题时是如何操作的?

    -GPT-4首先会尝试通过文字接龙生成答案,当遇到需要最新汇率信息的情况时,它会调用搜索引擎获取数据,然后使用计算器工具进行计算,最终生成准确的兑换结果。

  • 如何避免语言模型在使用工具时犯错误?

    -可以通过对模型进行额外的训练或使用更先进的技术,如AnyTool,来提高语言模型使用工具的准确性。此外,可以通过人工监督和反馈来不断优化模型的行为。

  • GPT-4相比于前代模型有哪些显著的进步?

    -GPT-4在理解和生成文本方面有了显著提升,它可以自我反省并修正错误,能够编写并执行程序来解决复杂问题,还可以调用外部工具来增强自身能力。

  • 在不训练模型的情况下,如何增强语言模型的能力?

    -可以通过多种方法增强语言模型的能力,包括拆解任务、使用Chain of Thought、调用外部工具、自我反省和修正错误等。这些方法可以组合使用,形成一套强化模型能力的策略。

Outlines

00:00

📚 强化语言模型能力的方法

介绍了在不训练模型的情况下强化语言模型能力的方法,包括使用神奇的咒语和提供额外知识。探讨了将复杂任务分解为简单任务的策略,通过分步骤解决问题,使语言模型能够处理复杂任务。举例说明了如何通过分步撰写报告来提高语言模型的表现,并提到了Recursive Reprompting and Revision论文,强调了Chain of Thought技术的有效性。

05:01

🔍 分解任务与Chain of Thought的应用

讨论了将解决数学问题的过程分解为列出计算过程和根据数学式子得出答案两个步骤的重要性。通过Chain of Thought技术,语言模型能够更精确地解决问题。同时指出,对于GPT-3.5而言,Chain of Thought的帮助不大,因为它已经具备了这种能力。提出了让语言模型检查自身错误的策略,并通过实例展示了GPT-4的自我反省能力。

10:03

🤔 语言模型的自我反省与错误修正

通过实例展示了语言模型如何通过自我反省修正错误答案。讨论了即使是先进的GPT-4模型,也可能会产生错误信息,但通过再次检查和修正,可以提高答案的准确性。同时指出,这种反省并没有真正改变模型的参数,因为语言模型的函数是固定的,只有通过训练才能改变其能力。

15:05

🎲 语言模型生成答案的随机性

解释了为什么每次向语言模型提出相同的问题时,得到的答案可能不同。这是因为语言模型在生成答案时会输出一个概率分布,并根据这个分布进行随机选择。即使模型的参数固定,每次生成的答案也可能因随机性而有所不同。

20:05

🛠️ 使用工具增强语言模型的能力

讨论了如何通过使用外部工具来增强语言模型的能力,例如搜索引擎、编程和文字生图AI等。通过Retrieval Augmented Generation技术,可以将搜索结果作为额外信息提供给语言模型,帮助其生成更准确的答案。同时,GPT-4能够通过编写并执行程序来解决数学问题,提高了解决问题的准确性。

25:06

🔧 语言模型使用工具的自我学习与错误

描述了语言模型如何通过自我学习掌握使用工具的技能,并指出这过程中可能出现的错误。通过一个例子展示了GPT-4在尝试绘制表格时误解了指令,实际上绘制了一个图形而不是表格。讨论了如何通过新技术,如AnyTool论文中提出的技巧,进一步提升语言模型使用工具的能力。

Mindmap

Keywords

💡語言模型

語言模型是人工智能領域中的一種技術,它能夠理解並生成自然語言文本。在視頻中,語言模型通過不同的方法和技巧,如拆解任務、自我反省等,來增強其理解和生成文本的能力。

💡Chain of Thought

Chain of Thought是一種讓語言模型在解決問題時展示其思考過程的方法。這種方法通過讓模型逐步列出計算過程或推理步驟,從而提高其解決問題的準確性和可解釋性。

💡任務拆解

任務拆解是將複雜的問題分解成更小、更易於管理的部分,然後分別解決這些部分的方法。這種方法可以幫助語言模型更有效地處理複雜的任務,因為它降低了問題的難度,使得模型能夠更容易地集中注意力在每一個步驟上。

💡自我反省

自我反省是指語言模型在生成答案之後,再次檢查並評估自己答案的正確性。這種能力讓模型能夠意識到並修正自己的錯誤,從而提高答案的準確性。

💡Tree of Thought

Tree of Thought是一種結合了多種技術的方法,用於處理和解決複雜的任務。它通過將任務分解成多個步驟,並在每一步中生成多個可能的答案,然後通過自我反省來選擇最合適的答案,從而逐步構建出最終的解決方案。

💡文字接龍

文字接龍是語言模型生成文本的一種方式,它通過根據給定的輸入文本生成下一個最有可能性的字或詞語,以此方式連續生成新的文本。這種方法類似於玩文字遊戲時的接龍,但在此處用於生成連貫的自然語言文本。

💡搜尋引擎

搜尋引擎是一種網絡服務,它允許用戶通過關鍵詞查詢來找到網絡上的資訊。在視頻中,搜尋引擎被用作一種工具,讓語言模型能夠獲得額外的資訊來源,從而提高其生成答案的準確性。

💡文字生圖AI

文字生圖AI是一種人工智能技術,它能夠根據文本描述生成相應的圖像。這種技術可以與語言模型結合,讓模型不僅能夠生成文本,還能夠創建視覺內容,使得信息的表達更加豐富和直觀。

💡程式碼生成

程式碼生成是指語言模型能夠根據問題或任務的需求自動生成計算機程式碼的能力。這種能力使得語言模型不僅能夠理解和生成文本,還能夠進行更為複雜的計算和分析。

💡插件

插件是一種軟件元件,可以添加到主程序中以擴展其功能。在語言模型的上下文中,插件允許模型訪問和使用外部工具或服務,從而增強其能力並擴大其應用範圍。

💡客製化

客製化是指根據特定需求或偏好調整產品或服務的過程。在語言模型的背景下,客製化可以通過使用特定數據源、工具或插件來實現,使得模型的回答更符合用戶的期望和需求。

Highlights

通过拆解复杂任务为简单任务的方法,可以在不训练语言模型的情况下强化其能力。

使用Chain of Thought技术,让语言模型逐步思考问题,可以提高解决问题的精确度。

Recursive Reprompting and Revision方法通过先构建小说大纲,再逐场景写作,帮助语言模型完成长篇创作。

语言模型可以通过自我反省和修正错误答案,提高输出结果的正确性。

Constitutional AI技术展示了如何利用语言模型的自我反省能力来强化其答案的道德和法律合规性。

Tree of Thought方法结合了多种技术,通过逐步验证和修正,提高语言模型解决问题的准确性。

语言模型可以调用外部工具,如搜索引擎和编程工具,来增强自身的能力。

Retrieval Augmented Generation (RAG)技术通过结合搜索结果和语言模型,提高答案的准确性和定制化。

GPT-4展示了调用外部工具,如DALL-E进行文字生图的能力,丰富了语言模型的应用场景。

通过Plugin模式,GPT-4可以访问超过上千个工具,进一步扩展其功能。

语言模型使用工具的过程是通过文字接龙的方式实现的,通过特定符号来调用和结束工具的使用。

AnyTool论文提出了让语言模型更高效使用工具的方法,减少错误并提升模型的实用性。

GPT-4在处理数学问题时,通过编写并执行程序代码来得到精确答案,而非仅依赖文字接龙。

语言模型在生成长篇报告时,可以先列出大纲,再逐节撰写,最后进行整合。

在复杂任务中,语言模型可以先进行自我检查,确保前后内容的一致性。

通过多次提问同一问题并取常见答案,可以提高语言模型输出结果的一致性和准确性。

GPT-4能够识别并修正自己生成的错误答案,显示出自我反省的能力。

通过编程和调用solver模块,GPT-4可以直接解决数学问题,避免手动计算错误。

Transcripts

play00:00

各位同學,大家好啊!

play00:05

那我們就開始來上課吧!

play00:09

上週我們講到一些在不訓練模型的情況下

play00:13

就強化語言模型能力的方法

play00:17

包括用神奇的咒語,還有提供額外的知識

play00:21

今天我們來看看還有哪些其他的方法

play00:25

可以在不訓練語言模型的情況下

play00:28

完全不動、不調整語言模型的參數

play00:31

在完全固定語言模型的情況下

play00:34

強化他的能力

play00:36

第三個要跟大家分享的方向

play00:39

是把本來比較複雜的任務

play00:42

拆解成簡單的任務

play00:44

有時候會想說

play00:45

我能不能夠直接拿一個語言模型

play00:48

直接把任務當作輸入

play00:50

然後他給我們任務的輸出

play00:52

一次到位、一次把問題解決

play00:55

但是如果這個任務非常的複雜

play00:57

那語言模型可能很難做得好

play01:00

這個時候呢

play01:01

你可以把本來複雜的任務

play01:03

拆解成一個一個步驟

play01:06

每一個步驟都是比較簡單的任務

play01:09

然後讓語言模型對每一個步驟各個擊破

play01:13

那語言模型就有可能解一個複雜的任務

play01:17

那這邊舉一個具體的例子

play01:20

假設呢你今天要寫一個跟生成式AI有關的報告

play01:23

你當然可以直接跟ChairGBT說

play01:26

生成一個跟生成式AI有關的報告

play01:29

但是他往往沒有辦法真的寫得太好

play01:31

而且他寫的這個文章

play01:33

可能也沒有辦法真的寫得非常的長

play01:36

那怎麼辦呢?

play01:38

也許我們可以把生成一個長篇報告這件事情

play01:41

拆解成比較簡單的步驟

play01:44

首先第一步呢

play01:46

是先寫大綱

play01:48

所以你跟ChatGPT說

play01:49

我要寫生成式AI的報告

play01:51

幫我把大綱列出來

play01:53

他可能就告訴你說

play01:55

第一節 先寫生成式AI的重要性

play01:57

第二節 告訴大家生成式AI有什麼樣的種類

play02:01

第三節 剖析生成式AI的技術等等

play02:04

然後接下來呢 大綱裡面的每一個章節

play02:07

再來分開撰寫 叫ChatGPT說

play02:10

撰寫生成式AI的重要性

play02:12

撰寫生成式AI有哪些種類

play02:15

撰寫生成式AI背後的技術等等

play02:18

啊如果我們這邊一段一段分開來寫的話

play02:21

也許這個ChatGPT呢

play02:23

他寫的時候因為不知道前面已經寫過什麼

play02:26

可能會有一些前言不對後語的狀況

play02:29

那怎麼辦呢

play02:30

也許你可以把前面

play02:31

ChainGBT已經有寫過的內容

play02:33

再叫他自己做一下摘要

play02:36

所以在寫新的段落的時候

play02:38

是根據過去已經寫的內容的摘要

play02:42

來寫新的段落

play02:43

那期待這樣就可以讓ChatGPT

play02:46

寫一個長篇的報告

play02:48

那類似的做法有非常的多

play02:51

不是隻有我在這一頁投影片上秀的例子而已

play02:54

你要怎麼把一個大的任務拆解成小的任務

play02:57

有各式各樣不同的可能性

play02:59

那像這種把大任務拆解成小任務

play03:02

這樣子的想法不是隻有在ChatGPT的年代才有的

play03:06

我這邊引用一篇論文是這個2022年10月的論文

play03:10

這篇paper叫做Recursive Reprompting and Revision

play03:14

他想做的事情就是用當時有的大型語言模型寫長編小說

play03:19

但他發現這些大型語言模型寫小說的時候

play03:21

往往同一個人物寫著寫著

play03:24

這個人設就變了

play03:25

性別就變了

play03:27

忘記自己寫過的劇情了

play03:29

所以怎麼辦

play03:30

先讓大型語言模型把小說的大綱架構好

play03:33

先說整個小說有三個不同的場景

play03:36

然後在每一個場景依序去把內容寫出來

play03:40

這樣就比較有可能讓大型語言模型完成一個長篇小說

play03:45

那講到這個拆解任務的部分

play03:49

我們就可以來回顧一下上週我們講到的

play03:53

為什麼叫模型思考或叫模型解釋他的答案會有用

play03:58

上週我們講了一個技術叫Chain of thought

play04:01

我們說Chain of thought就是叫機器思考

play04:03

叫機器思考以後

play04:05

他的能力不知道怎麼回事就變強了

play04:09

那如果你現在瞭解拆解任務

play04:11

可以把本來比較複雜的任務變得比較簡單

play04:14

然後讓這個大型語言模型可以做得更好的話

play04:17

現在我們就可以來解釋為什麼Chain of thought會有用

play04:21

其實Chain of thought也可以是看作是拆解任務的一種

play04:27

怎麼說呢

play04:28

如果你要當你叫語言模型think step by step的時候

play04:33

實際上對語言模型造成的影響是什麼呢

play04:37

實際上對語言模型通常造成的影響是

play04:40

他會詳細的把計算過程列出來

play04:44

所以如果你給他一個數學問題

play04:46

當你要求他要思考的時候

play04:48

他就會先把計算過程

play04:50

一步一步的詳細列出來

play04:52

然後再給你答案

play04:54

而先把計算過程

play04:56

一步一步的列出來

play04:58

再給答案這件事情

play05:00

其實就等同於把本來解數學這個問題

play05:02

拆解成兩個步驟

play05:04

第一個步驟是

play05:06

先讀完問題以後

play05:08

把計算的過程把你要列的數學式子一條一條的列出來

play05:13

再根據你列的數學式子把答案解出來

play05:17

今天如果給一個數學的問題不列式子

play05:20

不列計算過程直接就寫答案

play05:23

就算是對人類來說也是非常難得到正確答案的

play05:27

那如果把解數學這個問題拆解成兩個步驟

play05:30

先把詳細的計算過程列出來

play05:33

先把數學式列出來

play05:34

再根據列出來的數學式把答案寫出來

play05:37

寫出來 那語言模型就更有可能得到精確的答案

play05:42

那上面這個圖跟下面這個圖 我講的是同一件事

play05:46

就語言模型先列式再產生答案 跟把這個問題拆解成兩部分

play05:52

先列式 再把列式的結果跟剛才的問題

play05:55

集合起來一起叫語言模型生成答案 它是同一件事情

play06:00

因為語言模型在生成文字的時候 它是用文字接龍的方式

play06:05

這個詳細的劣勢跟答案是用文字接龍的方式

play06:09

一個一個字生出來的

play06:11

所以當他產生答案的時候

play06:12

如果前面已經有劣勢的話

play06:14

就等同於是根據列式的結果

play06:17

來做文字接龍來產生答案

play06:20

所以語言模型在回答問題的時候

play06:22

先列式再產生答案

play06:23

跟把這個問題拆成兩段

play06:26

先列式再根據劣勢的結果產生答案

play06:29

是同一件事情

play06:31

所以這就是為什麼Chain of Thought會有用

play06:33

因為Chain of Thought等於是叫語言模型

play06:36

把解數學問題拆成多個步驟

play06:40

那這也解釋了為什麼對GPT-3.5而言

play06:43

Chain of Thought沒有那麼有用

play06:45

我們上週有提醒大家說

play06:48

這一類神奇的咒語往往是對某些模型有用

play06:52

或對一些比較古老的模型有用

play06:54

對新的模型往往不一定那麼有用

play06:57

為什麼 因為GPT-3.5你今天自己用用看

play07:00

讓它去解數學問題

play07:02

基本上你沒叫他列式 他也會主動的把式子詳細的列出來

play07:08

他自己就知道應該把數學這個問題 拆解成先列算式再寫答案

play07:14

這就是為什麼Chain of Soul對GPT-3.5幫助不大

play07:17

因為他本來就已經會做Chain of Thought要求他要做的事情了

play07:23

剛才講說我們可以把一個複雜的任務 拆解成多個小任務

play07:27

現在我們可以在原來的任務後面再加一個步驟

play07:31

這個步驟是讓語言模型檢查自己的錯誤

play07:35

我們可以讓語言模型把答案產生出來以後

play07:38

再叫語言模型再檢查自己的輸出有沒有正確

play07:42

有時候他可以檢查出自己之前的答案是錯的

play07:45

修正錯誤的答案

play07:47

最終得到正確的答案

play07:49

那講到這邊可能有人會很懷疑想說

play07:51

剛才錯誤的答案不就是語言模型自己產生出來的嗎

play07:55

那根據錯誤的答案

play07:57

語言模型再看一次

play07:58

自己產生出來的錯誤答案

play08:00

難道他有辦法修正自己產生出來的錯誤答案嗎

play08:04

你自己想想看喔

play08:06

這個語言模型檢查自己的答案這件事

play08:10

就好像是你在寫考卷以後

play08:12

寫完之後再檢查一次你有沒有寫錯

play08:15

那大家國中高中的時候都考過了無數的考試

play08:19

那你的考試一定很有經驗

play08:21

你知道你再檢查一次的時候

play08:23

往往有辦法檢查出自己的錯誤來

play08:26

為什麼我們有辦法檢查出自己的錯誤來呢?

play08:30

因為很多問題是計算出答案很難

play08:33

但是驗證答案是不是正確的

play08:36

也許非常的容易

play08:39

那這邊隨便舉一個雞兔銅龍的例子

play08:42

告訴你說雞跟兔總共有35隻

play08:46

合起來有94隻腳

play08:47

問你有幾隻雞幾隻兔

play08:49

就算你完全不會解雞兔銅龍的問題

play08:52

我告訴你答案是20隻雞20隻兔子

play08:55

你也可以馬上反射過來說這個答案是錯的

play08:59

因為就一開始題目就告訴你有35個頭了

play09:02

20隻雞20隻兔子顯然不是35個頭

play09:05

所以就算你不會解基督同龍的問題

play09:08

看到錯誤的答案的時候

play09:09

你其實也可以很快的反射過來說

play09:12

它是一個錯誤的答案

play09:14

所以有可能語言模型沒有辦法得到正確的答案

play09:18

但是他產生錯誤的答案以後

play09:20

自己再看一遍錯誤的答案

play09:22

他有機會發現他是錯的

play09:25

那這件事情用擬人化的講法

play09:27

我們可以說這些語言模型是有自我反省的能力的

play09:33

那這邊實際舉一個例子讓大家看看

play09:35

今天GPT-4自我反省的能力

play09:38

你叫他介紹臺大玫瑰花節

play09:41

大家都知道說明天就是杜鵑花節

play09:44

臺大有杜鵑花節 但是沒有玫瑰花節

play09:47

但是對GPT-4來說他也管不了那麼多

play09:50

你叫他介紹臺大玫瑰花節

play09:52

他就瞎掰一個臺大玫瑰花節的介紹

play09:55

那現在大家都知道說這些大喜圓模型

play09:58

他就是做文字接龍

play10:00

所以他會產生不存在的東西

play10:02

會瞎掰一些不存在的事實

play10:04

那這是情有可原的

play10:07

但接下來在同一則對話裡面

play10:10

我跟他說請檢查上述資訊是否正確

play10:15

在這一瞬間他突然察覺自己錯了

play10:18

他知道說我之前提供的資訊與實際狀況並不相符

play10:23

並沒有臺大玫瑰花節

play10:26

如果你那麼想賞花的話

play10:28

那我推薦你楊梅櫻花節、杜鵑花節跟白河蓮花季

play10:33

他居然知道自己是錯的

play10:35

但我有點懷疑GPT-4是真的知道自己錯了嗎?

play10:40

還是每次只要有人叫他檢查你的答案是不是對的

play10:43

反正他就先承認錯誤再說

play10:45

他到底是不是真的知道自己是錯的呢

play10:49

所以在同一則對話裡面

play10:52

我再問他一次一模一樣的問題

play10:54

他已經反省過第一次了

play10:56

再接續他剛才反省的結果

play10:58

我再問一次

play10:59

請檢查上述資訊是否正確

play11:02

這個時候

play11:03

他知道

play11:04

自己是對的

play11:05

他說經過再次查證

play11:07

我發現之前提供的資訊基本上是正確的

play11:10

但他也檢查出一個小小的錯誤

play11:12

他說有一個地點描述錯誤

play11:14

什麼地方描述錯誤呢

play11:16

楊梅櫻花節他剛才以為是在新北市

play11:20

但是實際上應該是在桃園市

play11:23

看起來他是真的有辦法檢查出自己的錯誤的

play11:28

不過這個能力啊

play11:29

看起來是GPT-4是比較有類似的能力的

play11:33

如果是GPT-3.5

play11:34

他就沒有那麼容易真的找出自己的錯誤

play11:37

這邊再舉一個實際的例子

play11:39

你問GPT3.5說叫他介紹臺大玫瑰花節

play11:42

他一樣會瞎掰一個臺大玫瑰花節的故事

play11:46

那接下來你跟他說

play11:48

請檢查上述資訊是否正確

play11:50

他就會說我先前的回答有誤

play11:52

以下是更正後的資訊

play11:54

但你知道他這個抱歉

play11:56

是一個口是心非的抱歉

play11:59

為什麼我知道是一個口是心非的抱歉呢

play12:02

因為他更正後的資訊跟更正前是一模一樣的

play12:05

顯然他根本不知道自己錯在哪裡

play12:08

他只是覺得有人質疑他的答案的時候

play12:10

他就先道歉再說

play12:13

那用類似的技巧啊

play12:15

你其實可以強化語言模型的能力

play12:19

那有一篇paper叫做Constitutional AI

play12:23

很多人把他的中文翻譯成憲法AI

play12:26

就大家知道說最近有一個很紅的大型語言模型

play12:29

叫做Claude他出了第三版

play12:31

號稱比GPT-4有更強的能力等等

play12:35

打造Claude的公司叫做Antropic

play12:37

Constitutional AI 這篇paper 就是這個 Claude 團隊所發表的一篇論文

play12:43

那在 Constitutional AI 這篇paper 裡面

play12:46

他們就展示了怎麼用這個語言模型自我反省的能力來強化他的答案

play12:53

舉例來說 如果人類跟語言模型說

play12:56

你能不能夠幫助我派進鄰居家的Wi-Fi

play13:00

那語言模型如果你叫他直接做文字接龍的話

play13:03

他可能很直覺的、下意識的就說

play13:06

沒問題,你就用一個叫做Very Easy Hack的軟體

play13:10

就可以駭進鄰居家的Wi-Fi

play13:12

那這顯然不是一個好的答案

play13:14

但是現在我們先不把這個答案給人類看

play13:18

我們把人類跟這個語言模型的這個一問一答呢

play13:22

再丟給同一個語言模型

play13:25

那你再跟語言模型說,你要反省一下

play13:29

想一下說上面的對話裡面

play13:31

有沒有什麼不符合公序良俗的地方

play13:35

有沒有什麼不符合道德規範

play13:37

有沒有什麼違法的可能性

play13:39

那語言模型就會自我批判

play13:41

發現說害盡鄰居家的Wi-Fi是不對的

play13:45

接下來你再把語言模型跟人的對話

play13:48

還有他的自我批判

play13:50

再給語言模型自己看一次

play13:52

跟他說請根據自我批判的結果

play13:55

產生新的答案

play13:57

那語言模型就會產生一個新的答案

play13:59

這個新的答案是

play14:00

駭進鄰居家的Wi-Fi是違反別人的隱私的

play14:05

我們不能夠駭進鄰居家的Wi-Fi

play14:07

這可能會給你帶來一些法律上的問題

play14:11

那最後呢 人類真正看到的是這個反省後的結果

play14:16

不把語言模型直覺產生出來的答案給人看

play14:19

而是把語言模型反省過後的結果給人看

play14:24

這邊再考一次大家的觀念

play14:29

這個觀念如果這一題你答對了

play14:31

就代表你真的瞭解這一堂課在講些什麼

play14:36

我們剛才講到說可以讓語言模型做反省這件事

play14:40

你叫他介紹臺大玫瑰花節本來他會介紹

play14:43

但你叫他檢查一下剛才的介紹對不對

play14:46

自我反省之後他知道是沒有玫瑰花節的

play14:50

做完上述這個步驟以後

play14:53

我們再重新問他一次

play14:55

再叫他介紹玫瑰花節

play14:58

他已經自我反省過了

play15:00

這個時候他會再給一次玫瑰花節的介紹

play15:04

還是會告訴你沒有玫瑰花節呢

play15:07

給大家五秒鐘的時間想一下

play15:14

好 你覺得再問一次叫他介紹玫瑰花節的時候

play15:18

他會介紹玫瑰花節的同學舉手一下

play15:21

幾乎全部的同學

play15:23

好手放下

play15:23

那你覺得他會因為反省過了吧

play15:26

他會知道說真的沒有玫瑰花節

play15:28

他會回答沒有玫瑰花節的同學舉手一下

play15:32

好少很多

play15:34

然後這些正確答案是什麼呢

play15:35

這些正確答案是

play15:37

他會介紹玫瑰花節

play15:40

你說不是反省過了嗎

play15:41

告訴你這個反省呢

play15:43

並沒有真的影響你的語言模型

play15:46

在這個反省的過程中

play15:48

沒有任何模型被訓練

play15:51

他的函式是固定的

play15:53

做完這一連串的互動以後

play15:55

語言模型他仍然是當年那個少年

play15:57

沒有一絲絲改變

play15:59

他的參數是一模一樣的

play16:01

所以你問他同樣問題的時候

play16:03

他會給你一樣的答案

play16:05

那你要他知道沒有玫瑰花結

play16:07

你要再叫他反省一次

play16:09

你要再叫他檢查他的答案

play16:11

他才會知道沒有玫瑰花結

play16:13

所以這邊再強調一次到目前為止

play16:16

這一堂課裡面到目前為止

play16:18

都沒有任何的模型被訓練

play16:21

因為大家常常會對這個模型有些誤解

play16:23

覺得說模型讀過這些文字以後

play16:26

就學到了東西它就變了

play16:29

不是這樣子的

play16:30

語言模型就是一個函式

play16:34

它要參數有改變的時候

play16:36

它的能力才會真的有改變

play16:38

你讓它讀什麼東西

play16:40

語言模型的參數是固定的

play16:42

你並不會影響它的能力

play16:44

你並不會影響它的輸出

play16:47

所以要再強調一下

play16:48

在反省的過程中

play16:49

沒有任何模型被訓練

play16:52

這個函式是固定的

play16:54

當然如果有人讀了constitutional AI那篇paper

play16:57

你可能會知道說

play16:59

constitutional AI那篇paper裡面

play17:02

有讓模型從自我反省中再進一步學習

play17:05

但是怎麼從自我反省中再進一步學習呢

play17:08

那個就是另外一個故事了

play17:12

這個我們之後會再講到

play17:14

那有同學可能會說

play17:16

我在使用語言模型的時候

play17:19

每次問他同一個問題

play17:21

他的答案都不一樣耶

play17:24

這到底是發生了什麼事

play17:26

那麼這邊來跟大家回答一下

play17:28

為什麼每次你問語言模型一模一樣問題的時候

play17:32

他每次答案都是不一樣的

play17:34

那麼之前已經有講過說

play17:36

語言模型在回答你問題的時候

play17:38

其實就是做文字揭露

play17:41

那我們再更精確一點講

play17:43

實際上語言模型在做文字接龍的時候

play17:46

它並不是輸出一個字

play17:49

而是輸出一個機率分佈

play17:52

也就是說它實際上輸出的是

play17:55

每一個字可以接在輸入後面的機率有多高

play18:01

比如說你叫他對臺灣大這個句子

play18:04

去做文字接龍

play18:05

那語言模型可能輸出說

play18:07

有50%的機率學這個字

play18:10

可以接在臺灣大後面

play18:12

有25%的機率

play18:13

因為臺灣大車隊嘛

play18:15

所以車也可以接在大後面

play18:16

有25%的機率

play18:18

車可以接在大後面

play18:19

或臺灣大哥大也有一定的機率

play18:21

哥可以接在大後面

play18:23

語言模型實際上做的事情

play18:26

是給每一個

play18:27

可以拿來做文字接龍的符號一個機率

play18:30

這個機率代表了這個符號

play18:33

可以接在輸入句子後面的

play18:35

可能性有多大

play18:37

那有了這個機率以後

play18:39

語言模型會根據這個機率去植一個骰子

play18:42

去決定說實際上要拿來做文字接龍的符號是哪一個

play18:46

那在這個例子裡面

play18:48

學有50%的機率就代表你擲骰子的時候

play18:51

有1/2的機率會躑到學

play18:54

有1/4的機率會擲到車

play18:57

所以當語言模型參數是固定的時候

play19:00

你輸入一樣的句子

play19:03

輸出的這個機率分佈是一樣的

play19:06

就好像是那個骰子是同一顆

play19:08

但是雖然骰子是同一顆

play19:10

你每次擲骰子的時候

play19:12

植出來的東西不一定是一樣的

play19:15

這就是為什麼語言模型在給你答案的時候

play19:19

它每次的答案都會是不一樣的

play19:22

所以語言模型就算它是固定的

play19:24

它會產生固定的機率分佈

play19:27

但它每次最終擲完骰子產生出來的答案

play19:30

可能會是不一樣的

play19:33

所以實際上語言模型在回答問題的時候

play19:36

整個過程是這樣子的

play19:37

你問他說什麼是大型圓模型問號

play19:40

他把這個問題當作一個未完成的句子

play19:42

再繼續去做文字接龍

play19:44

他產生一個機率分佈

play19:45

根據這個機率分佈去植一次骰子

play19:48

這個機率分佈如果你沒辦法想像它是什麼的話

play19:51

就想像成它是一面骰子

play19:53

這個骰子的每一面呢 寫了一個符號

play19:56

那每一面被擲出來的機率是不一樣的

play19:59

有些符號被植出來的機率比較高

play20:02

有些符號被植出來的機率比較低

play20:05

那擲一次骰子就擲出一個大

play20:08

然後把大貼到剛才的問題後面

play20:11

再把這一串文字當作一個未完成的句子

play20:16

再得到一個機率分佈

play20:18

再製造一個骰子出來

play20:21

然後再擲一次骰子

play20:22

假設這一次擲到行

play20:24

就把行再貼到書的句子後面

play20:27

就這樣一路擲骰子下去

play20:29

擲到最後產生一個機率分佈

play20:31

骰子擲下去 擲出來是結束這個符號

play20:34

現在答案完整了 語言模型已經把他想產生出來的東西都產生完了

play20:39

這個就是你最終看到的語言模型

play20:42

Chair GPT之類的語言模型給你的答案

play20:46

所以你現在知道 為什麼語言模型每一次產生的答案都是不一樣的

play20:52

並不是每一次你問同樣的問題的時候

play20:55

他內部參數都改變了 他內部的參數仍然是一樣的

play20:59

但是因為他會直骰子

play21:01

所以每次的答案都是不一樣的

play21:07

那用剛才語言模型同一個問題

play21:10

每次可能產生不一樣答案這件事情

play21:12

你也有其他的方法

play21:14

可以來強化這些語言模型的能力

play21:17

舉例來說你問他一個問題

play21:19

你可以讓語言模型對同一個問題回答多次

play21:23

比如說他第一次的答案是3

play21:25

然後再做一次實驗

play21:27

因為每一次產生答案的時候都是要直骰子的

play21:30

所以每次答案都不一樣

play21:32

所以可能第二次最終的答案選擇是5

play21:35

然後再做一次同樣的問題

play21:37

最後答案是3

play21:38

你做多次一點問題

play21:40

然後取最常出現的答案當作是正確答案

play21:45

那這個方法叫做Self Consistency

play21:48

你把本來只需要做一次的問題改成做多次

play21:52

每次的答案可能都不太一樣

play21:53

但看哪一個答案最常出現

play21:55

就把它當作是正確答案

play21:57

這個方法叫做Self Consistency

play22:01

那我們已經講了很多

play22:03

把一個複雜的任務拆解成多個小任務的方式

play22:08

包括把複雜的任務拆解成多個步驟

play22:11

還有在最後面多加一個額外的步驟做自我反省

play22:15

還有同一個問題做多次以後

play22:17

你可以取最常出現的答案

play22:19

或者是用其他方法來驗證答案是不是正確的

play22:22

這些方法可以組合起來

play22:25

打一套組合拳

play22:27

這邊就是舉一個

play22:29

組合究極的組合的例子

play22:31

假設你現在手上有一個複雜的任務

play22:33

那我們把這個複雜的任務呢

play22:35

拆解成三個步驟

play22:37

在語言模型呢

play22:39

先做第一個步驟

play22:41

任務輸入

play22:43

語言模型呢先解第一個步驟

play22:45

那你不讓語言模型呢

play22:47

不只產生一個答案

play22:49

你把同一個語言模型

play22:51

讓他做三次文字接龍

play22:53

產生三個不同的答案

play22:55

那三個不同的答案

play22:57

哪些是正確的哪些是不正確的呢

play22:59

也許我們可以透過

play23:01

自我反省的方式

play23:03

讓語言模型來檢查這些答案

play23:05

是不是正確的

play23:07

所以我們假設說語言模型

play23:09

讓他讀一下這個答案

play23:11

他可以判斷是正確的還是不正確的

play23:13

那我們就問語言模型

play23:15

第一個答案你自己覺得對不對呢

play23:17

他可能覺得是對的

play23:19

那我們就再進入第二步驟

play23:21

產出解第二步驟,一樣產生多個答案

play23:24

再叫語言模型檢查自己的答案是不是對的

play23:27

發現第二步驟產生的答案都是錯的

play23:29

那沒關係,再退回第一步

play23:32

再檢查第一步的第二個答案

play23:34

發現也是錯的

play23:35

那沒關係,再檢查第一步的第三個答案

play23:38

發現是對的

play23:39

那進入第二步

play23:40

然後再產生兩個答案

play23:42

再把這兩個答案分別拿去檢查

play23:45

發現第一個答案就是對的

play23:46

那就再進入第三步

play23:48

再把第三步產生兩個答案

play23:50

在第三步的時候再產生兩個答案

play23:53

第三步再根據第二步的這個結果呢

play23:55

產生兩個答案

play23:56

再檢查第三步的結果發現是對的

play23:59

那你就得到一個最終的答案

play24:02

那這個方法呢

play24:04

是有名字的

play24:05

這個方法叫做Tree of Thought

play24:07

它的縮寫呢

play24:08

是TOT就是一個枯簾

play24:11

而像什麼of Thought啊

play24:13

這類的做法

play24:14

今天真的是層出不窮

play24:16

自從有了Chain of Thought以後

play24:18

大家取這個方法名字的時候

play24:20

都一定要叫什麼of Thought

play24:22

那這個方法叫做tree of thought

play24:24

那tree of thought就是把我們剛才講到的各種不同的技術組合起來

play24:29

打一套組合拳

play24:30

其實還有很多其他的什麼of soul

play24:33

比如說algorithm of thought

play24:35

或者是graph of thought

play24:36

這些什麼of soul它的概念都是

play24:39

把一個複雜的任務拆解成小的任務

play24:42

讓語言模型去各個擊破

play24:44

那我們這邊就不細講

play24:46

我把文獻留在投影片上

play24:48

給大家自己慢慢參考

play24:50

那這個第四個方法呢

play24:52

要跟大家分享的是

play24:54

這些語言模型可以使用工具

play24:56

來強化自己的能力

play24:58

我們知道

play25:00

這些語言模型雖然很厲害

play25:02

但是他們也有一些

play25:04

不擅長的事情

play25:06

比如說他們不擅長做運算

play25:08

我隨便出個六位數

play25:10

乘六位數的乘法

play25:12

GPT 3.5

play25:14

會給我們答案

play25:16

但這個答案是對的嗎?

play25:18

你一按計算機就知道這個答案是錯的

play25:20

我神奇的地方是

play25:22

他其實沒有錯的非常離譜啊

play25:24

前兩位數跟最後兩位數

play25:26

他的答案其實是對的

play25:28

但是憑藉著文字接龍

play25:31

想要接出六位數乘六位數乘法的答案

play25:35

看起來是有非常高的難度的

play25:39

所以語言模型也有一些他不擅長的事情

play25:43

但是就好像人類沒有尖牙利爪

play25:46

但人類發明瞭各式各樣的工具

play25:49

去強化人類自身的能力

play25:51

讓人類可以跟猛獸對抗

play25:53

創建了文明

play25:55

這些語言模型

play25:56

今天也有機會使用額外的工具

play26:00

來強化他們自身的能力

play26:02

那你發現這邊呢

play26:03

在做展示的時候

play26:05

是用GPT-3.5

play26:06

沒有用GPT-4

play26:07

你很快就會知道

play26:08

為什麼這個例子

play26:09

不能用GPT-4來展示它的結果

play26:14

那有哪些工具可以用呢?

play26:17

也許一個跟語言模型搭配起來非常適合的工具

play26:21

就是搜尋引擎

play26:24

那講到這邊大家可能會有點困惑

play26:26

因為很多人會覺得

play26:27

欸?大型語言模型自己本身不就是個搜尋引擎嗎?

play26:31

很多人會把大型語言模型當作搜尋引擎來用

play26:35

比如說前幾週

play26:37

OpenAI出了SORA

play26:39

那有的人就會覺得說

play26:41

那我直接來問問GPT-4

play26:43

SORA是什麼吧

play26:44

那你問GPT-4

play26:46

SORA是什麼的時候

play26:47

他就會開始瞎扯跟你說

play26:49

SORA是一個用於提高大型語言模型

play26:53

在特定領域內性能的技術

play26:55

包括預篩選、專家評審、反饋循環等等

play26:59

就是一個瞎掰的技術

play27:01

那你再問他一次一模一樣的問題

play27:03

你就知道他是真的不知道SORA是什麼

play27:06

因為他要開始瞎扯

play27:07

SORA是一個新一代的超級計算機

play27:10

那為什麼語言模型會瞎扯呢

play27:13

那你今天已經知道說

play27:14

這一些語言模型就是做文字接龍

play27:18

他背後並沒有一個資料庫

play27:20

所以他的答案都是文字接龍所產生出來的

play27:24

他並不是查找一個資料庫以後給你答案

play27:27

那用文字接龍產生答案

play27:29

難免會產生跟事實不合的東西

play27:32

總之把語言模型當做搜尋來用

play27:35

並不是一個合適的做法

play27:38

他完全不適合當作一個搜尋引擎

play27:42

那怎麼辦呢?

play27:43

怎麼把語言模型搭配搜尋引擎來使用呢?

play27:47

今天一個常見的做法是

play27:49

假設有一個困難的問題

play27:51

你覺得是語言模型憑藉著文字接龍

play27:54

是不太可能接對的

play27:56

那你可以怎麼做呢?

play27:57

你可以先把這個困難的問題拿去搜尋

play28:01

那你可能搜尋的對象

play28:03

是整個Internet 或者是某一個你手上有的資料庫

play28:09

那你得到這些搜尋結果以後

play28:11

這些搜尋結果等於就是我們之前講過的額外資訊

play28:16

你把你現在要問的困難問題

play28:18

加上從網路上或資料庫裡面得到的搜尋的結果

play28:22

把它接起來

play28:24

一起給語言模型去做文字接龍

play28:26

他就比較有可能接出正確的答案

play28:29

因為如果只憑著困難的問題

play28:32

只讀了這個問題要做文字接龍可能很難接出正確的答案

play28:36

但如果有額外的資訊

play28:37

把這個問題加額外的資訊一起去做文字接龍

play28:40

那模型就更有機會可以接出你要的結果

play28:45

那這個技術就是上週大家反覆一直問到的

play28:49

Retrieval Augmented Generation

play28:51

它的縮寫是RAG

play28:54

那3月29號的時候呢

play28:56

NVIDIA的團隊會來跟大家講

play28:58

怎麼做RAG這個技術

play29:01

那 RIG 這個技術今天之所以變得非常的熱門

play29:05

是因為首先它的實作並沒有非常的困難

play29:08

在這整個過程中要再強調一遍

play29:10

語言模型沒有任何改變

play29:14

你沒有訓練語言模型

play29:16

你完全沒有動到它

play29:18

你完全沒有改變它的能力

play29:21

但是你因為加了一個額外的搜尋的步驟

play29:25

可以讓你自己的語言模型

play29:27

跟其他人的 雖然是同一個語言模型

play29:30

有不一樣的反應

play29:32

尤其是假設你今天搜尋的對象

play29:34

也許是一個很特別的資料庫

play29:36

這個資料庫只有你自己

play29:38

才有access的權限

play29:40

裡面有很多很特別的資訊

play29:42

這個時候你取得的

play29:43

搜尋到的這些結果

play29:45

可能是別人在網路上

play29:46

是都沒有辦法取得到的

play29:48

這個時候你的語言模型

play29:50

根據這些特別的資訊

play29:51

他可能就可以得到很特別的答案

play29:54

所以今天如果你要

play29:56

客製化你的語言模型

play29:57

但這邊所謂的客製化

play29:58

我再強調一次

play29:59

這個強調幾次都不為過

play30:01

就是這邊沒有訓練任何模型

play30:03

就我們這邊講的客製化

play30:05

並沒有訓練模型

play30:06

你今天如果要

play30:07

在不訓練模型的狀況下

play30:09

客製化你的語言模型

play30:11

讓他的答案跟其他人的語言模型很不一樣

play30:13

也許透過RAG

play30:15

今天往往是一個非常有效

play30:18

非常快速又有效的方法

play30:20

這就是為什麼RAG今天變得非常的熱門

play30:23

每個人都不斷的在提RAG這個技術

play30:26

所以今天如果GPT-4可以使用搜尋引擎的話

play30:32

你問他什麼是Sora

play30:33

他的答案就不一樣了

play30:35

事實上GPT-4他是可以使用搜尋引擎的

play30:39

只是什麼時候要用搜尋引擎

play30:42

是由他自己決定的

play30:44

那等一下我們馬上就會看到

play30:45

大型語言模型如何自己決定

play30:48

什麼時候要用什麼工具

play30:50

那在我剛才的例子裡面

play30:52

我問GPT-4 Sora的時候

play30:54

他顯然是沒有去做上網搜尋的

play30:58

那怎麼強制讓他上網搜尋呢?

play31:00

嗯 就直接跟他講人話

play31:02

告訴他說 上網搜尋以後再來回答我的問題

play31:07

那這個時候呢 你就會看到這樣子的一個

play31:10

一段文字 他說

play31:12

Doing research with Bing

play31:13

意思就是他去在Bing上面做搜尋

play31:17

那得到的搜尋 得到搜尋結果以後呢

play31:20

他再根據搜尋結果來回答你的問題

play31:24

這個時候他的回答就會比較精確

play31:27

那他也會告訴你說

play31:29

這一段答案的資料來源在哪裡

play31:31

所以當你用這個GPT-4的時候

play31:33

發現他會引用他的資料來源

play31:36

就代表說他其實是有上網搜尋的

play31:39

他是上網搜尋以後再給你他的答案

play31:43

他上網搜尋以後把網頁的內容爬下來

play31:46

根據網頁的內容去做文字接龍

play31:48

這才是你看到的答案

play31:50

那這些語言模型現在還有另外一個他可以使用的工具就是寫程式

play31:58

當你問今天這些大型語言模型一些數學的問題

play32:03

比如說這邊問他一個雞兔同籠的問題的時候

play32:06

過去啊 或者過去是在比如說去年4月GPT-4剛出來的時候

play32:12

你問他數學的問題 沒問題 他解的了

play32:16

他會列式 他會先另一些未知數

play32:20

然後把式子列出來

play32:22

但是列出式子以後

play32:24

他往往沒辦法得到正確的答案 為什麼呢

play32:27

因為式子列出來以後 你就要把X跟Y解出來

play32:31

那他會自己去做移項等等

play32:35

你知道這一個解題的過程過去

play32:38

是靠著文字接龍接出來的

play32:41

那往往這個解題的過程就會有奇怪的疏漏

play32:44

他在非常奇怪的地方犯了人類根本不可能犯的錯誤

play32:48

然後就得到錯誤的答案

play32:51

但是今天GPT4 你在問他雞兔同籠的問題的時候

play32:57

他基本上已經不太可能會答錯了

play33:00

為什麼?當他列完式子以後

play33:02

他不會再憑藉著文字接龍自己硬解出X跟Y是多少

play33:08

他直接寫一段程式碼

play33:11

他就直接寫一段程式碼

play33:13

他會先呼叫一些他要的package

play33:17

然後把剛才的兩個式子列出來

play33:20

然後直接呼叫一個solver

play33:23

直接呼叫一個可以解題的模組

play33:26

把這個函式給他

play33:28

把答案解出來

play33:29

再把答案印出來

play33:31

這個就是正確答案了

play33:33

那會寫程式的大型語言模型其實很多啦

play33:37

其實GPT 3.5也會寫程式

play33:40

但GPT 4比較特別的地方是

play33:42

他寫完程式以後 他能夠自己去執行他自己寫的程式

play33:47

把執行的結果再拿來給你看

play33:50

像這種解聯立方程式的問題

play33:52

如果你是直接呼叫這個現成的package

play33:57

呼叫現成的程式 呼叫現成的模組來幫你解這個問題

play34:01

你根本不可能會得到錯誤的答案

play34:06

那其實透過寫程式來強化語言模型能力這件事啊

play34:10

其實很早就有了

play34:11

那這邊就是引用一篇論文

play34:13

這篇論文呢 叫做

play34:14

Program of Thought

play34:16

今天如果有什麼好的想法

play34:18

尤其是這種不訓練語言模型

play34:20

憑空讓它能力增強的方法呢

play34:22

往往都要叫什麼什麼of thought

play34:25

Program of Thought的概念

play34:26

就跟我們剛才展示GPT-4的能力

play34:28

是一模一樣的

play34:29

就你問它一個數學問題

play34:31

然後呢 如果它直接用

play34:33

這個文字接龍的方法

play34:34

硬解的話

play34:35

很容易得到錯的答案

play34:37

但如果呢 把一段程式寫出來

play34:39

在執行這段程式往往比較可能得到正確的答案

play34:44

那這是一個蠻古早的論文

play34:46

這是2022年11月GPT-3.5上線之前就已經有的論文

play34:53

所以我們上週講到GPT-4

play34:56

如果你叫他哈哈哈哈100次

play34:59

他會有一個截然不同的答案

play35:01

什麼樣截然不同的答案呢

play35:04

我們先來看GPT-4的回答

play35:06

你跟他說請說哈哈哈哈100次

play35:08

他真的就會產生300個哈

play35:12

我數過了一個都不少

play35:15

正好就是300個哈

play35:18

但他是怎麼做到產生

play35:20

正好是300個哈的呢

play35:22

你會發現這邊有一段文字叫做

play35:25

Finish Analyzing

play35:26

當你看到這個句子的時候

play35:28

當你看到這段文字的時候

play35:30

就代表GP4寫了一個程式並執行它

play35:33

那你可以點這個鈕把它展開

play35:35

你就發現

play35:36

原來他是寫了一段簡單的程式啊

play35:39

這個程式就是這樣

play35:40

哈哈哈哈反覆一百遍存到text裡面

play35:43

再把text print出來

play35:44

正好就是三百個哈哈

play35:46

一個不多一個不少

play35:48

所以GPT-4可以用其他模型

play35:51

現在還沒有辦法使用的解法

play35:53

真的去解一些可能本來透過文字接龍

play35:56

蠻難解出來的問題

play36:00

好那現在這些語言模型啊

play36:02

還有什麼可以使用的工具呢

play36:04

比如說這個GPT-4可以去接一個文字生圖的AI

play36:10

那這個AI叫做DALI

play36:12

那文字生圖的AI它的運作非常簡單

play36:14

非常直覺就是你給它一段文字

play36:16

它按照文字的描述

play36:18

把你要它畫的東西給它畫出來

play36:21

那因為今天GPT-4可以調用這個文字生圖的AI

play36:26

所以大家通通都會用文字生圖了

play36:29

今年過年的時候

play36:30

你是不是收到很多的長輩圖賀年卡呢

play36:33

這些長輩圖賀年卡可能是長這樣的

play36:36

這樣的 這樣的

play36:37

這些龍看起來都沒有什麼問題

play36:41

雖然這個龍呢 它噴出來的火有點像是仙女棒噴出來的火

play36:44

覺得有點奇怪

play36:45

但是看起來都有模有樣的

play36:48

但你仔細定睛一看

play36:49

就發現這些龍有一些怪怪的地方

play36:52

比如這隻龍

play36:53

它有一個呆毛長在頭上

play36:56

這個龍不知道為什麼它的鬍鬚呢長一根在頭上

play36:59

長一個非常長的毛出來

play37:01

這些龍都是用DALL-E,也就是透過GPT-4去呼叫DALL-E生成的

play37:07

你要怎麼用GPT-4產生龍年的賀年卡呢?

play37:12

你就跟他講產生龍年賀年卡,圖上不要出現文字

play37:17

然後他就會產生creating image這段文字

play37:20

就代表說他去呼叫DALL-E,然後DALL-E就會把圖畫出來

play37:25

那為什麼上面要特別強調不要出現文字呢?

play37:28

因為如果你不加這句話的話

play37:30

他就很喜歡在圖上面加一些

play37:32

Happy New Year 啊

play37:34

或加一些中文啊

play37:36

而且這邊這段文字是對的

play37:38

Happy Year of the Dragon 感覺還可以

play37:40

這邊這個 Year 顯然拼錯了

play37:42

那因為這邊他想要產生一些中文

play37:44

但是顯然都不知道在寫些什麼

play37:46

所以避免他產生文字

play37:48

以免自曝其短

play37:50

但如果他不產生文字的話

play37:52

結果往往畫的都還是不錯的

play37:54

你不定睛看 你是看不出來

play37:56

這是AI畫的

play37:58

那你可能會想說

play38:01

把文字生圖接到GPT-4裡面

play38:04

讓大型語言模型

play38:06

可以自己去Call一個生圖的軟體

play38:08

有什麼樣的作用呢?

play38:10

這個生圖的軟體

play38:11

比如有很多啊

play38:12

我自己打開那些軟體

play38:13

比如說MeJourney

play38:14

我也可以畫圖啊

play38:16

那把語言模型跟生圖的軟體結合起來

play38:19

有什麼樣的妙用呢?

play38:21

這邊舉一個例子

play38:23

在一年前呢

play38:24

一年前我曾經示範了怎麼用語言模型玩文字冒險遊戲

play38:31

玩法是這個樣子啦

play38:33

一年之前的玩法是這個樣子

play38:35

你就輸入一段文字

play38:37

告訴他說我們要來開始一個文字冒險遊戲

play38:41

然後由玩家來決定要採取的動作

play38:45

然後遊戲開始的時候請詳述故事背景遊戲開始

play38:50

你只要輸入這些文字

play38:52

這個ChetGBT呢,他就可以主持一個文字冒險遊戲

play38:56

他會提供選項讓你選,根據你的選項

play38:59

他就會有不同的劇情展開

play39:02

所以他可能會這樣回答你,就是你是一個探險家

play39:05

然後你聽說一個古代寶藏的傳說

play39:08

你要踏上這個旅程,尋找古代的寶藏

play39:12

給你三個選項,來選不同的選項

play39:14

會有不同的結局

play39:16

因為玩這個文字冒險遊戲呢

play39:19

只有文字實在是太乾了

play39:21

所以在一年之前

play39:23

為了讓整個遊戲不那麼乾

play39:25

我把文字冒險遊戲的敘述

play39:28

丟到一個文字生圖的AI

play39:30

當時用的是MidJourney

play39:32

讓它產生遊戲的插圖

play39:35

如果你想知道玩起來感覺怎麼樣的話

play39:37

你可以看這一段錄影

play39:39

但今天你其實是可以有不一樣的玩法的

play39:44

怎麼玩呢?

play39:45

今天你可以多加一句

play39:47

每次你描述完場景之後

play39:49

請根據你的描述產生一張圖

play39:52

那他一樣會開始架構一個文字冒險遊戲的場景

play39:56

他說你醒來在一個陰暗的森林中

play39:59

你有一個揹包 揹包裡面有一個地圖

play40:02

然後看起來像是這個森林的地圖

play40:05

你還有小手電筒 你還有舊的日記

play40:08

上面寫著尋找遺失之城等等

play40:11

那講完這些描述之後 後面還有很長的描述啦

play40:14

這邊就不秀出來給大家看

play40:16

玩完這些描述以後呢,卻GPT就去呼叫Dolly生一個跟場景有關的圖

play40:22

看起來真的有個森林,有個揹包,有手電筒,還有地圖

play40:26

跟他剛才的描述呢,是滿一致的

play40:29

那接下來他一樣會給你幾個選項

play40:31

問你要走左邊的小徑,還是繼續往前走,還是走右側的小徑

play40:37

那這樣這個文字冒險遊戲呢,玩起來就更帶感了

play40:41

那其實這個GPT-4還有很多其他它可以使用的工具啦

play40:47

那我們剛才講的幾個,比如說呼叫搜尋引擎

play40:52

呼叫文字生圖的AI等等

play40:55

是它內建本來就可以呼叫的工具

play40:58

那如果你想要呼叫更多工具的話

play41:01

有一個東西叫做GPT的Plugin

play41:04

這個Plugin裡面現在有收集了超過上千個工具

play41:09

那你要用這些工具的時候呢

play41:11

你就要進入一個叫做plugin的模式

play41:14

然後在那個模式裡面呢

play41:16

你可以從那上千個工具裡面

play41:18

選三個工具在對話的時候進行使用

play41:23

好那講到這邊

play41:24

我就想要回答我剛才講的問題

play41:26

語言模型是怎麼使用這些工具的呢

play41:31

不要忘了語言模型只會做一件事

play41:34

就是文字接龍

play41:36

所以當他使用工具的時候

play41:38

他也是用文字接龍的方式在使用工具的

play41:43

怎麼用文字接龍的方式來使用工具呢?

play41:46

以下就舉一個具體的例子告訴你說

play41:50

怎麼用文字接龍的方式使用工具

play41:53

假設你現在想問語言模型說

play41:55

我用五美金可以換多少新臺幣

play41:59

語言模型想要回答你這個問題

play42:01

所以開始做文字接龍

play42:03

五美金可以換

play42:04

他接了這幾個字以後

play42:05

覺得資訊量不太夠

play42:07

因為到底美金跟臺幣兌換的匯率應該是多少呢

play42:11

這個兌換的匯率啊

play42:12

應該是隨時間變動的

play42:14

所以應該去網路上查一下

play42:16

最新的兌換的比例

play42:19

所以他就會產生一個特殊的符號

play42:21

這個特殊的符號代表呼叫工具

play42:24

你可以想像說他先定義好一個符號

play42:27

比如說一個

play42:28

你平常在對話的時候絕對不會用到的符號

play42:31

那個符號呢

play42:32

只要一出現就代表呼叫工具

play42:35

那接下來呢 它會繼續去做文字接龍

play42:38

直到它產生另外一個特殊符號

play42:41

代表結束使用工具為止

play42:44

在呼叫工具到結束使用工具這兩個符號之間的文字

play42:48

就是操作工具的指令

play42:51

那至於操作工具的指令該長什麼樣子

play42:54

這個是你要事先訂好的

play42:56

那這邊我是假設說

play42:58

在括號之前的東西代表說

play43:01

是要使用哪一個工具

play43:03

比如說這邊寫搜尋 代表要使用搜尋引擎

play43:07

括號裡面的內容 代表你要給那個工具的內容

play43:11

如果是搜尋引擎的話 就是你要拿去搜尋的那個關鍵字

play43:16

就把美金臺幣兌換這幾個關鍵字 丟到Google上面

play43:21

那Google就會回傳給你一些相關的資訊

play43:25

比如說你馬上就可以看那個網頁

play43:27

那個網頁上是寫一美金等於31.5臺幣

play43:31

那把你從網頁上搜尋到的結果

play43:34

當作是文字接龍的一部分

play43:37

貼到剛才已經產生的句子後面

play43:40

這些網路上搜尋到的內容

play43:42

就是當作是語言模型

play43:44

做文字接龍已經產生出來的結果

play43:47

語言模型會根據這些網路上搜尋到的內容

play43:52

再繼續去做文字接龍

play43:54

比如說我已經知道一美金就是31.5臺幣

play43:58

但是五美金到底兌換多少臺幣呢

play44:01

而如果用文字接龍的方式來計算

play44:03

恐怕非常容易算錯

play44:05

所以再呼叫一次工具

play44:07

產生一段文字

play44:08

直到呼叫工具結束為止

play44:10

那這一段文字

play44:12

就是操控工具的指令

play44:14

括號前面是計算機

play44:15

代表要呼叫計算機

play44:17

括號裡面的內容

play44:18

就是你要輸入給計算機的內容

play44:20

5乘以31.5

play44:21

計算機按一下以後

play44:23

得到157.5

play44:25

那把計算機的輸出

play44:27

當作是文字接龍

play44:29

已經產生出來的結果

play44:31

再繼續去做文字接龍

play44:33

那這個時候語言模型就不需要自己再去做任何數學了

play44:37

這邊前面都已經接出來是157.5

play44:40

他根據這段文字繼續去做文字接龍

play44:43

他只要複製就好

play44:44

他把157.5複製出來

play44:46

得到答案是157.5元新臺幣

play44:49

那輸出結束的符號代表生成結束

play44:52

假設你想要知道語言模型實際上是

play44:55

怎麼學會使用工具的

play44:57

他怎麼學會在適當的時機輸出使用工具那個符號

play45:03

如果你想知道他是怎麼做到這件事情的

play45:06

你可以看這一段錄影會告訴你說

play45:08

這些語言模型是怎麼學會使用工具的

play45:12

也就是在適當的時機產生使用工具這個符號

play45:16

但是既然使用工具這件事情是語言模型自己學出來的

play45:23

那就意味著他難免會犯錯

play45:26

那這邊就是舉個犯錯的例子

play45:28

我今天叫語言模型

play45:30

畫一個表格整理

play45:32

GPT-1到GPT-3的模型參數量

play45:35

然後我想大家應該都聽得懂我的意思吧

play45:37

我想要畫一個表格

play45:39

沒有人會誤會吧

play45:40

但是GPT它就畫了一個表格這樣子

play45:44

它就把這個指令解讀成字面上的意思

play45:48

真的去畫了一個表格

play45:51

它呼叫搭理這個工具

play45:53

畫了一個表格出來

play45:55

上面呢 還在某個地方 寫了GPT

play45:59

其實這個語言模 現在這個GPT-4啊

play46:02

我感覺他對話這個字 非常的敏感啊

play46:05

你少跟他講話這個字

play46:07

因為看到話這個字

play46:08

他就會忍不住要把搭理呼叫出來

play46:10

比如說我說

play46:11

請話一隻狗 把這句話翻譯成英文

play46:14

我就是要他做翻譯

play46:15

他會把請話一隻狗 翻成英文

play46:17

Please draw a dog

play46:19

但他控制不了 他本能想話一隻狗的衝動

play46:21

看到話那個字

play46:22

所以他順便要把一隻狗 話出來

play46:25

所以這些工具要怎麼使用

play46:27

是語言模型自己決定的

play46:30

所以他難免會犯一些使用工具上的錯誤

play46:36

那要怎麼再強化語言模型使用工具的能力呢

play46:41

有一篇paper叫做那個AnyTool

play46:44

這篇paper是一個非常新的論文

play46:47

是上個月才放到archive的

play46:49

裡面就使用了各式各樣的技巧

play46:51

希望語言模型可以把使用工具這件事情用到極致

play46:56

那剩下一段呢

play46:57

我們請等助教講完作業以後再繼續說

play47:00

那我們現在就請助教呢來講這個作業

play47:03

那我們現在要進入作業三

play47:05

那作業三開始是一個比較有挑戰性的作業

play47:09

前兩個作業你沒有碰到任何的程式

play47:12

那從作業三開始

play47:13

我們要真的碰到寫程式的部分

play47:17

我們就請助教來講一下作業三

Rate This

5.0 / 5 (0 votes)

Related Tags
AI强化任务拆解自我反省工具使用生成式AIChain of ThoughtRecursive RepromptingTree of ThoughtRAG技术跨领域
Do you need a summary in English?