
來源 | Datawhale
作者 | 李宏毅教授,國立臺灣大學

影片連結:
https://www.youtube.com/watch?v=M2Yg1kwPpts
PPT連結:
https://docs.google.com/presentation/d/1kTxukwlmx2Sc9H7aGPTiNiPdk4zN_NoH
今天我們要講的是AI agent,這是一個現在非常熱門的話題。在課程開始之前,先講一個免責宣告,我知道你在各個地方可能都聽過AI agent這個詞彙,它是一個被廣泛應用的詞彙,每個人心裡想的AI agent可能都不一樣。
我們要講的AI agent是什麼呢?
今天我們使用AI的方式,通常是人類給一個明確的指令,你問AI說AI agent的翻譯是什麼?那AI按照你的口令,一個口令,一個動作,把你要求的翻譯翻譯出來,它也不會再做更多的事情了。

AI agent的意思是說,人類不提供明確的行為或步驟的指示,人類只給AI目標,至於怎麼達成目標,AI要自己想辦法。比如,你給AI某一個研究的議題,那你期待一個AI agent就應該能夠自己提出假設,設計實驗,進行實驗,分析結果。如果分析出來的結果跟假設不符合,要回頭去修正假設。
通常你期待AI agent要要達成的目標需要透過多個步驟,跟環境做很複雜的互動才能夠完成。而環境會有一些不可預測的地方,所以AI agent還要能夠做到靈活地根據現在的狀況來調整計劃。
AI agent是怎樣做到人類給予一個目標,用多個步驟來完成目標的呢?我們可以把AI agent背後運作的過程簡化成以下這張幻燈片。

AI agent的第一個輸入是一個目標,這個目標是人給定的。接下來,AI agent會觀察目前的狀況,我們叫做observation。AI agent會看目前的狀況,分析目前的狀況,決定要採取什麼樣的行動。今天這個AI agent做的事情,叫做action。它執行個action以後,會影響環境的狀態,會看到不一樣的observation。看到不一樣的observation,就會執行不同的action。這個步驟會一直迴圈,直到AI agent達成我們要他達成的目標為止。

講到這裡,你可能還會覺得非常的抽象,那我們可以用下圍棋來舉例。大家非常熟悉AlphaGo,它其實也可以看作是一個AI agent。這個AI agent的目標是下棋要贏,它的observation是現在棋盤上黑子跟白子的位置,現在棋盤上的盤勢,可以採取的action就是在棋盤上的19×19路的範圍中選擇一個可以落子的位置。選擇完可以落子的位置,他落下一次以後,會改變它對手的輸出。你的對手會落下另外一次子,那會改變它觀察到的observation,那它就要採取下一個action。
所以AlphaGo是一個AI agent。它背後運作的原理,大家其實或多或少也都已經聽過。如果你有上過任何基礎的 reinforcement learning RL(強化學習)的課程,往往都是用這樣方式來開場的。

為什麼呢,因為過去要打造AI agent的時候,往往覺得就是要透過RL的演算法來打造AI agent。
那怎麼透過RL的演算法來打造AI agent呢?RL這個演算法就是它可以讓一個agent 去maximize reward。所以你要把你的目標轉換成一個叫做reward的東西。這個reward是人定義的,越接近你的目標reward就越大。
如果在下圍棋裡面,通常就會設定贏棋reward就是正一,輸棋reward就是負一。然後訓練的那個AI agent就會學習去maximize reward,透過RL的演算法。
但是透過RL演算法的侷限是,你需要為每一個任務都用RL的演算法訓練一個模型。AlphaGo在經過了大量訓練以後,可以下圍棋,但並不代表他可以下其他的棋類,比如西洋棋或將棋。
我知道你可能看過一篇文章,AlphaZero除了圍棋外也可以下將棋和西洋棋,那是另外訓練後的結果。能夠下將棋的那個模型,並不是原來可以下圍棋的那個AlphaGo,它們是不同的模型,有不同的引數。

今天AI Agent又再次被討論,是因為人們有了新的想法——我們能不能夠直接把Large Language Model,把LLM直接當成一個AI Agent來使用呢?也就是說我們的Agent背後,就是個Language Model。
你要告訴它你的目標是什麼的時候,直接用文字輸入,要告訴他下圍棋,就先給他圍棋的規則,然後跟他說你的目標就是贏得勝利。那接下來環境,因為一般語言模型是用文字作為輸入,所以你可能需要把環境轉化為文字的描述。
不過我寫了一個option,今天有很多語言模型都是可以直接看圖片的,所以把環境轉化為文字的描述,今天也不一定是必要的。那接下來語言模型要產生action,那產生action的方式,可能就是用一段文字來決定它的action是什麼。它的action用一段文字來描述,那我們需要把那段文字轉譯成真正可以執行的行動,然後就會改變環境,看到不一樣的observation,然後AI agent的運作就可以持續下去,直到達成目標。

今天AI agent再次爆紅,並不是真的有了什麼跟AI agent本身相關的新技術,而是在LLM變強之後,人們開始想,我們能不能直接用large language model來實踐人類擁有一個agent的渴望。
我們還是拿下棋做例子。也許你就會很好奇說,現在的語言模型能不能夠下棋呢?其實早就有人嘗試過了。
有一個在語言模型領域很多人使用的benchmark叫做Big-Bench。它是什麼時候做的呢?它是2022年“上古時代”做的。以後有ChatGPT之前,我們都叫“上古時代”。然後在2022年上古時代的時候,就有人嘗試過用那個時候的語言模型下西洋棋。
那時候語言模型沒有能力真的看圖,所以你需要把棋盤上黑子和白子的位置轉成文字的描述,輸入給這個語言模型。

這個就是語言模型實際上看到的棋盤的樣子。下一步要下哪裡,才能給對方將軍呢?那語言模型就會給你一個答案。
右上角這個圖,橙色的線是正確答案,綠色的線是當時各個不同的語言模型所給的答案。沒有任何一個語言模型給出正確的答案。
雖然沒有任何語言模型給出正確的答案,但你可以看到,當時比較強的模型所選擇走的路是符合西洋棋規則的。但是也有很多比較弱的模型,這個虛線代表比較弱的模型,它們都是亂走的,根本搞不懂西洋棋的規則。不過這個是“上古時代”的事情了。

現在更強的LLM能不能下西洋棋呢?有人試過了。有一個很知名的影片是直接拿ChatGPT o1跟DeepSeek-R1兩個模型來下西洋棋。那這是一場驚天動地的對決,有幾百萬人觀看這個影片。
這兩個模型殺的難分難解,難分難解是因為他們實在是太弱了,有很多不符合西洋棋規則的動作,比如把兵當作馬來用,或者是他的那個主教可以無視前面的一切阻擋,或者是他突然空降一個自己的子在對方的陣地裡面,把對方的子吃掉。然後DeepSeek還在自己的棋盤上隨便變出一個城堡,最後DeepSeek用自己的城堡把自己的兵吃掉以後,宣佈他贏了,然後ChatGPT想了一下覺得,我確實輸了,然後就投降了。這個棋局就這樣結束了。
所以看起來,現在這個最強的語言模型距離下棋還有一段距離,但這並不代表他們不能夠作為AI agent來做其他事情。

接下來我會舉一些例子,看看現在的語言模型可以做什麼樣的事情。這門課最想要強調是,我們還能多做些什麼,讓這些語言模型作為AI agent的時候,運作得更加順利。
剛才講的比較像是從過去常見的agent的視角,來看語言模型,怎麼套用到agent的框架下。
那接下來我們換一個角度。從large language model的角度來看,當他作為一個agent的時候,他要解決的問題有什麼不同。
從large language model的角度來看,首先ta得到一個目標,然後接下來得到一個observation,然後根據這個observation,決定接下來要採取什麼樣的action。當它採取完動作之後,他的動作會影響外界的環境,看到新的observation。看到新的observation以後,要採取新的動作,這個過程就會再反覆繼續下去。
在那一系列的過程中,看到observation採取action,看到observation採取action,其實憑藉的都是語言模型原來就有的文字接龍能力。
所以從語言模型的角度來看,當我們把它當作一個 agent來使用的的時候,對它而言,所做的事情是完全沒有什麼不同的,就是在繼續做他唯一會做的文字接龍而已。

所以從語言模型的角度來看,AI agent並不是一個語言模型的新技術,它比較像是一個語言模型的應用。所謂AI agent意思就是依靠現在語言模型已經有一定程度的通用能力,看看能不能夠直接把它們當作agent來使用。

因為我說的AI agent並不是語言模型的新技術,它只是一個語言模型的應用,所以要注意一下在以下課程中沒有任何的模型被訓練。我所講的東西都是依靠一個現有的語言模型的能力來達成的。

AI agent其實不是最近才熱門,一直有人在嘗試怎麼讓語言模型變成一個agent,或者怎麼把語言模型當作AI agent來使用。
ChatGPT在2022年年底爆紅,所以在2023年的春天就有一波AI agent的熱潮,好多人都用ChatGPT作為背後運作的語言模型來打造AI agent。那時候最有名的就是AutoGPT。
其實在2023年的機器學習課程中我們也有一堂課是講那時候的AI agent,大家看看那一堂課的AI agent跟今天講的有什麼樣的差異。
不過後來2023年AI agent的熱潮,過一陣子就消退了,因為人們發現這些AI agent沒有我們想象的厲害。一開始好多網紅在吹噓這些AI agent有多強,但真正試下去也沒那麼強,所以熱潮就過去了。
那用LLM來執行一個AI agent,相較於其他的方法,可能有樣什麼樣的優勢呢?
過去當你執行一個agent的時候,比如說像AlphaGo,它能做的只有有限的事先設定好的行為。AlphaGo真正能做的事情就是在19×19個位置上選擇一個可以落子的位置。

但如果你的agent是一個large language model的話,它就有了近乎無限的可能。large language model可以講任何話,可以產生各式各樣近乎無窮無盡的輸出,這就讓AI agent可以採取的行動不再有侷限,有更多的可能性。
舉例來說,我們等一下就會很快看到,今天這些AI agent在有些問題他解不了的時候,他可以直接呼叫一些工具,來幫忙解決本來解決不了的問題。
另外一個用large language model執行AI agent的優勢,是過去如果用reinforcement learning的方法來訓練一個AI agent,那意味著你必須定一個東西叫做reward。如果你今天要訓練一個AI programmer,那你可能會告訴AI programmer說,如果你今天寫的程式有一個compile的error,那你就得到reward:-1。
但為什麼是-1?為什麼不是-10?為什麼不是-17.7?這種東西就是沒人說得清楚。所以這個reward在做reinforcement learning的時候就是一個要調教的東西。

今天如果是用LLM驅動的AI agent呢?你今天就不用幫它訂reward了。今天有compile error,你可以直接把compile error的log給它,他也許讀得懂那個log,可以對程式做出正確的修改。而且相較於reward只有一個數值,直接提供error的log可能提供給agent更豐富的資訊,讓它更容易按照環境給的反饋,來修改它的行為。
接下來舉幾個AI agent的例子。講到AI agent,也許最知名的例子就是用AI村民所組成的一個虛擬村莊。這個虛擬村莊在2023年成立,虛擬村莊裡面的NPC都是用語言模型來執行的。

這些NPC是怎麼執行的呢?首先每個NPC都一個人為設定的目標,有的NPC要辦情人節派對,有的NPC要準備考試,每個人都一個他自己想做的事情。這些NPC會觀察會看到環境的資訊。那時候Language Model都只能讀文字,所以環境的資訊需要用文字來表示。

環境的資訊對一個語言模型來說,看起來可能就是,有一個叫做Eddy的人,他正在讀書,然後他看到廚房,然後他看到一個櫃子,然後看到伊麗莎白正在裝飾房間等等。然後根據這些observation,這個語言模型要決定一個他想要做的行為,比如說也許不早了,所以就上床睡覺。那需要有一個轉譯器把它說出的這個行為轉成真正能夠執行的指令。那這個agent就真會走到床邊,然後去睡覺。所以這個是2023年的時候用AI來執行NPC的一個實驗。

其實後來還有更大規模的實驗,有人把Minecraft中的NPC通通換成AI的NPC。根據這個影片描述,這些AI很厲害,他們組織了自己交易的金融體系,然後還組織了自己的政府部門,自己制定法規,自己管理自己。不確定是真的還是假的。

剛才講的那些遊戲,你可能不容易接觸到,對現實世界可能也沒什麼影響。
但今天也許你馬上就會接觸到的AI agent就是讓AI來真正使用電腦。雖然這個聽起來有點奇怪,AI本身也就是一個電腦,但現在要真正的像人類一樣來使用另外一個比較低端的電腦來做事。其中比較有代表性的例子就是Claude的computer use,還有ChatGPT的operator。
operator介面長這樣。它可以做的事情,比如說可以訂pizza,可以預約下週的居家清潔等等。

像這種使用電腦的AI agent,他的目標就是你的輸入,就是你告訴他我要去訂pizza,上網幫我買一個東西,那這就是他的目標。那他的observation呢?他的observation可能是那個電腦的螢幕畫面。
今天很多語言模型都是可以直接看圖的,所以其實可以直接把圖片當作輸入,提供給AI agent。AI agent要決定的就是要按鍵盤上哪一個鍵,或者是要用滑鼠按哪一個按鈕。

其實讓AI使用電腦不是最近才開開始的。早在2017年,就有篇paper叫words of bits嘗試過使用AI agent。這個文章的標題說它是一個web-based agent。
只是那個時候能夠互動的頁面還是比較原始的頁面。你可以看到下面這些AI agent,他真正能夠處理的是比較原始的頁面。那時候也沒有大型語言模型,所以那時候的方法就是硬訓練一個CNN,直接吃螢幕畫面當作輸入,輸出就是滑鼠要點的位置,或者是鍵盤要按的按鈕。看看用這個方法能不能夠讓AI agent在網際網路的世界中做事。
這個發生在2017年,甚至不能說是上古時代,這個還是有BERT以前的時代,就是史前時代。這個不只是史前時代,它比史前時代還早,所以這是舊石器時代的產物。

後來有了語言模型之後,人們就開始嘗試用語言模型來當作AI agent,來執行一個agent,讓它在網際網路的世界中活動。
這一頁幻燈片是列舉了幾個比較具代表性的例子。那一波潮流大概是在2023年的暑假開始的,像Mind2Web、WebArena還有VisualWebArena,就跟今天的operator非常的像,就是給這個語言模型看一個螢幕的畫面,或者是看HTML的code,然後讓它自己決定要幹什麼,期待它最後可以解決一個問題。比如在Mind2Web的第一個例子裡面,就給他這個畫面,然後跟它說,請它幫我們訂一個機票。

還有什麼樣AI agent的應用呢?今天你可以用AI來訓練另外一個AI模型。

用AI來訓練模型,其實這個運作的過程是:你的目標是要過strong baseline,然後你提供給LLM訓練資料,它寫一個程式用這些訓練資料來訓練模型,那它可能會得到這個模型的正確率,根據正確率再重新寫一個程式,再得到新的正確率,就這樣一直運作下去。
有很多知名的用AI來訓練模型的framework,比如說AIDE。你看他的這個技術報告的標題就知道他們想做什麼。它是要做一個machine learning engineer agent,用multi-agent的framework來解data science的competitions。

最近Google說他們做了一個AI,不過他們並沒有真的釋出模型,也不知道說實際上做得怎麼樣,因為這個服務並不是公開的。
他們說的是他們做了一個AI Coscientist,就是用AI來做研究,不過這個AI Coscientist還是蠻有侷限的,不能真的做實驗,只能夠提Proposal,就是你把一些研究的想法告訴他,他把完整的Proposal規劃出來。實際上做得怎麼樣,不知道,他的Blog裡面有些比較誇張的案例,說什麼本來人類要花十年才能夠得到研究成果,AI agent花兩天就得到了,也不知道真的還是假的。他舉的是一些生物學的例子,所以我也無法判斷他講的是不是真的,那個發現是不是真的很重要。這個AI Coscientist就是用AI agent來幫研究人員做研究。
我們剛才講的AI agent,它的互動方式是侷限在回合制的互動,有一個observation,接下來執行action,有一個observation,接下來執行action。但是在更真實的情境下,這個互動是需要及時的,因為外在的環境也許是不斷在改變的。
如果你在action還沒有執行完的時候,外在環境就改變了,那應該怎麼辦呢?有沒有辦法做到更及時的互動呢?
更及時的互動可能應該像是這個樣子,當模型在決定要執行action one,正在執行的過程中,突然外在環境變了,這個時候模型應該有辦法立刻轉換行動,改變他的決策,以因應外界突如其來的變化。

你可能想問什麼樣的狀況,我們會需要用到這種能夠做及時互動的AI agent呢?其實語音對話就需要這種互動的模式,文字的對話使用ChatGPT是大家比較熟悉的,你輸入一段文字,他就輸出一段文字,這是一來一往回合制的互動。

但是人與人之間真正的對話不是這個樣子的。當兩個人在對話的時候,他們可能會互相打斷,或者是其中一個人在講話的時候,另外一個人可能會同時提供一些反饋,比如說;嗯,好,你說的都對。
這些反饋可能沒有什麼特別語意上的含義,他只是想要告訴對方我有在聽。但是像這樣的反饋,對於流暢的交流來說,也是非常重要的。如果在講電話的時候對方完全沒有反應,你會懷疑他到底有沒有在聽。
所以我們今天能不能夠讓AI在跟使用者互動的時候,用語音互動的時候,就跟人與人間的互動一樣,而不是一來一往回合制的互動呢?其實也不是不可能的,今天GPT-4o的一個Voice Mode,高階語音模式,也許在某種程度上就做到了這種及時的互動。

那這個幻燈片上是舉一個例子,假設有人跟AI說你說一個故事,那這個是AI觀察到的第一個observation,有人叫他說一個故事,現在就開始講故事了,他就說從前從前,這時候人說了一個好,這個可能是第二個observation,但AI要知道說這個observation不需要改變他的行為,跟他的行為沒有直接的關係,只要故事就繼續講下去。“有一個小鎮”…然後人說這個不是我要聽的故事,這個我聽過了,那AI可能要馬上知道說那這個不是人要聽的,那也許我覺得應該停下來,換另外一個故事。

今天AI有沒有辦法做到這種及時的互動呢?那怎麼做這種及時的互動,非回合制的互動,就有點超過我們這門課想要講的範圍。
如果你有興趣的話,你可以讀這篇文章,這篇文章想要做的事情是評估現在這些語音模型互動的能力。那在這篇文章裡面,也對現在這個可以互動的語音模型做了一個比較完整的survey,是一直survey到今年的1月。所以你可以看這篇文章,知道說現在這些可以互動的模型,他可以做到什麼樣的地步。

那接下來呢,我們會分三個方面來剖析今天這些AI agent的關鍵能力。
那第一個方面是我們要來看這些AI agent能不能夠根據它的經驗,透過過去的互動中所獲得的經驗來調整他的行為。第二部分是要講這些AI agent如何呼叫外部的援助,如何使用工具。第三部分要講AI agent能不能夠執行計劃,能不能做計劃。

AI怎麼根據過去的經驗或者是環境的反饋來調整他的行為。
AI agent需要能夠根據經驗來調整行為,比如說有一個作為AI programmer的AI agent,他一開始接到一個任務,他寫了一個程式,那這個程式compile以後有錯誤資訊,compile以後有error,那應該要怎麼辦呢?他應該要能夠根據這個error的message來修正他之後寫的程式。
在過去,講到說收到一個feedback接下來要做什麼的時候,也許多數機器學習的課程都是告訴你來調整引數,根據這些收集到的訓練資料,也許使用reinforcement learning的algorithm來調整引數。

但不要忘了我們剛才就強調過,在這堂課裡面,沒有任何模型被訓練,所以今天不走這個路線。
不更新模型的引數,模型要怎麼改變它的行為呢?依照今天Large Language Model的能力,要改變它的行為,你也不用微調引數,直接把錯誤的訊息給他,他接下來寫的程式就會不一樣了,就結束了。

那可能會問說,那之前他寫的程式是錯的,為什麼給錯誤訊息,他寫的程式就對了呢?明明就是同一個模型,但你想想看,模型做的事情就是文字接龍。你給他不同的輸入,他接出來的東西就不一樣。

一開始會寫錯的程式,是因為他前面要接的部分只有這麼多,所以寫個錯的程式。當今天要接的內容包含了錯誤的訊息的時候,它接出來的結果可能就會是正確的了。

今天已經有太多的證據說明,這些語言模型可以根據你給他的反饋改變他的行為,不需要調整引數。如果你有使用這些語言模型的經驗,你也不會懷疑他們有根據你的反饋調整行為的能力。

這真正的問題是,如果我們把過去所有的經驗都存起來,要改變語言模型的行為,要讓它根據過去的經驗調整行為,就是把過去所有發生的事情一股腦給它,那就好像是語言模型每次做一次決策的時候,他都要回憶它一生的經歷。也許在第100步的時候還行,到第1萬步的時候,過去的經驗太長了,它的人生的資訊已經太多了,也許沒有足夠的算力來回顧一生的資訊,就沒有辦法得到正確的答案。

這讓我想到有些人有超長自傳式記憶,他可以把他一生中所有發生的事情記下來,然後那些人,你可以隨便問他一個某個人的電話號碼,他都會背出來,你告訴他某年某日某時發生了什麼事,他也都可以講出來。但這種超長自傳式記憶,又被叫做超憶症。你看到症這個字就知道,人們覺得這是一種疾病。據說這些患者其實日常生活並沒有辦法過得很開心,因為他們不斷的在回憶他的人生,往往一不小心就陷入了一個冗長的回憶之中,那也很難做抽象的思考,因為他的人生已經被他的記憶已經被太多知為末節的事所佔據,所以沒有辦法做抽象式的思考。
所以讓一個AI agent記住它一生所有經歷的事情,告訴他每次做一個決策的時候,都是根據你一生所有經歷過的事情再去做決策,也許對AI agent來說並不是一件好事。最終當它的人生過長的時候,它沒有辦法做出正確的決策。

所以怎麼辦呢?也許我們可以給這些AI agent memory,這就像是人類的長期記憶一樣,把發生過的事情存到這個memory裡面。當AI agent看到第一萬個observation的時候,他不是根據所有存在memory裡面的內容去決定接下來要採取什麼action,而是有一個叫做read的模組,這個read的模組會從memory裡面選擇跟現在要解決的問題有關係的經驗,把這些有關係的經驗放在observation的前面,讓模型根據這些有關係的經驗跟observation再做文字接龍,接出他應該進行的行動。你有這個read的模組,就可以從memory裡面,從長期記憶中篩選出重要的資訊,讓模型只根據這些跟現在情境相關的資訊來做出決策。

怎麼樣打造這個read的模組呢?其實你可以把這個read模組想成一個retrieval的system,想成一個檢索的系統。
第一萬步看到的observation其實就是問題,模型的AI agent的memory長期記憶其實就是資料庫,那你就根據這個問題從這個資料庫裡面檢索出相關的資訊。這個技術跟RAG沒有什麼不同,其實它就是RAG。

你可以直接把RAG的任何方法直接套用到這個地方。唯一不一樣的地方只是,如果是RAG的話,存在memory裡面的東西等於整個網路,是別人的經驗。而對AI agent而言,現在存在memory裡面的東西是他自己個人的經歷。差別是經歷的來源,但是用來搜尋的技術是可以完全直接巢狀RAG的技術。
如果你今天想要研究AI agent按照經驗來修改它的行為,那你可以考慮一個叫做streambench的benchmark。在streambench裡面會有一系列問題,AI會依序去解這些問題,他先解第一個問題,得到第一個問題的答案,然後接下來他會得到第一個問題答案的反饋。streambench所有的問題都是有標準答案的,所以AI agent得到的反饋是唯一的,就是對或者是錯。根據它過去的經驗,它就可以修正它的行為,期待它在第二個問題的時候,可以得到更準確的答案,得到更高的正確率,然後這個過程就一直持續下去。

那假設有1000個問題的話,那就等AI agent回答完最後一個問題的時候,這個互動就結束了。最後結算一個根據經驗學習能力的好壞,根據經驗調整行為能力的好壞,那就看整個回答過程中平均的正確率。越能夠根據經驗學習的agent,它應該能夠用越少的時間,看過越少的反饋,就越快能夠增強他的能力,就可以得到比較高的平均的正確率。

這個benchmark是API的研究人員打造的一個benchmark。在這個benchmark裡面的baseline就有使用到我剛才講的類似RAG的技術。

也就是說,當模型在回答第100個問題的時候,他並不是把前面第一個到第99個問題通通丟給它去做文字接龍,這樣會導致sequence太長了,一般的語言模型根本讀不了這麼長的輸入。
所以實際上的做法就是需要有一個檢索的模組,這個檢索的模組只從過去所有的經驗中檢索出跟現在要回答的問題有關係的經驗,然後語言模型只根據這些有關係的經驗,還有現在的問題來進行回答,來產生它的行動,來產生它的答案。

那這一招有沒有用呢?這一招其實非常的有用。在這頁圖裡面橫座標,用詞是time step,但其實指的就是一個一個的問題,總共有1750幾個問題。那縱軸指的是平均的正確率。
在這個圖上面,最低的灰色線指的是假設沒有讓模型做任何學習,他回答每一個問題都是independent的,回答問題間沒有任何的關聯,他完全沒有調整他的行為,那你得到的正確率是灰色的這條線,也是最低的。
黃色這條線是說只固定隨機選五個問題,那每次模型回答問題的時候都是固定看那五個問題來回答,都是固定把五個問題當作經驗來回答,可以得到的是黃色這一條線。
如果你是用RAG的方法,從一個memory裡面去挑選出最有關係的問題,選擇跟現在要解決的問題最有關係的經驗,你可以得到粉紅色的這一條線。可以看到,比黃色的線,正確率還要高上不少。最後結果最好的是紅色這條線。

在這個streambench裡面還發現一個有趣的現象值得跟大家分享。這個現象是,對現階段的語言模型而言,負面的反饋基本上沒有幫助。所以你要提供給語言模型經驗,讓他能夠調整他行為的時候,給他正面的例子比給他負面的例子要好。
具體而言,提供給它過去哪些類似的問題得到正確答案,比提供給它過去哪些問題得到錯誤的答案更有效,還能更能引導模型得到正確的答案。

這是真正的實驗結果,在好幾個不同的data set上面的實驗結果。streambench裡面本來就包含了好幾個不同的data set。這個縱軸呢,0代表完全沒有任何根據經驗調整行為,然後藍色代表說不管是正面還是負面的例子都用。不管正面還是負面的例子都用,在多數情況下,模型都可以表現得比較好,當然有一些例外。但是如果只用負面的例子,基本上是沒有幫助,而且甚至是有害的。如果只用正面的例子,在所有的情況下,模型可以得到更好的結果。
這也符合過去的一些研究,有人研究過使用語言模型要怎麼樣比較有效,有一個發現就是與其告訴語言模型不要做什麼,不如告訴他要做什麼。如果你希望它文章寫短一點,你要直接跟它說寫短一點,不要告訴它不要寫太長。讓它不要寫太長,它不一定聽得懂,叫它寫短一點,比較直接,它反而比較聽得懂。這也符合這個Streambench的發現——負面的例子比較沒有效。與其給語言模型告訴他什麼做錯了,不如告訴他怎麼做是對的。

我們剛才還講到了一個read的模組,那有關記憶的部分,是不是要把所有的資訊存到memory裡面呢?存到長期的記憶庫裡面呢?如果我們把這些agent經歷的所有的事情都放到長期的記憶庫裡面的話,那裡面可能會充斥了一堆雞毛蒜皮不重要的小事,最終你的memory長期記憶庫也可能被塞爆。
所以怎麼辦呢?也許應該有更有效的方式來決定什麼樣的資訊應該被記下來,應該只要記重要的資訊就好。

怎麼讓語言模型只記重要的資訊就好呢?你可以有一個write的module,那write的module決定什麼樣的資訊要被填到長期的記憶庫裡面,什麼樣的資訊乾脆直接就讓他隨風而去就好了。
那怎麼打造這個write的記憶庫呢?有一個很簡單的辦法就是write的模組也是一個語言模型,甚至就是AI agent自己。這個AI agent他要做的事情就是根據他現在觀察到的東西,然後問自問一個問題,這件事有重要到應該被記下來嗎?如果有,就把它記下來,如果沒有就讓他隨風而去。

除了Read跟Write這兩個模組以外,還有第三個模組,我們可以暫時叫reflection反思的模組。這個模組的工作是對記憶中的資訊做更好的,更high level的,可能是抽象的重新整理。
你可以把這些記憶裡面的內容,在經過reflection的模組重新反思之後,得到新的想法。那也許read的模組可以根據這些新的想法來進行搜尋,這樣也許可以得到更好的經驗,那幫助模型做出更好的決策。
而這個reflection模組可能也是一個語言模型,就是AI agent自己。你可以只是把過去的這些記憶丟給reflection的模組,然後叫reflection模組想一想,看它從這些記憶裡面能不能夠有什麼樣新的發現。
比如說可能有一個observation是我喜歡的異性每天都跟我搭同一部公車,另外一個observation是他今天對我笑了,推出來的reflection模型結果就說,他喜歡我這樣。就是得到一些新的想法。

之後在做決策的時候,就可以用這些新的想法。雖然你可能沒有實際觀察到,但是它是被推論出來的,根據這些推論出來的想法來做決策。除了產生新的想法之外,也可以為以前觀察到的經驗建立經驗與經驗之間的關係,也就是建立一個knowledge graph,然後讓read的module根據這個knowledge graph來找相關的資訊。
在RAG的領域使用knowledge graph現在也是一個非常常見的手法。最知名的,可能是graph RAG系列研究,就把你的資料庫變成一個knowledge graph,今天在搜尋和回答問題的時候,是根據knowledge graph來搜尋回答問題,可以讓RAG這件事做得更有效率,或者是另外一個非常類似的例子。

HippoRAG,這個Hippo不是指真正的海馬,他指的應該是那個海馬迴,人腦中的一個結構,然後他覺得建這種knowledge graph就跟海馬迴的運作非常的類似,所以他叫做HippoRAG。有一些跟graph有關係的RAG的方法,你完全可以透過reflection的模組把經驗建成一個graph,把那一些graph RAG的手法直接套到AI agent裡面。

大家可能都知道ChatGPT現在其實真的是有記憶的,所以可以感受到OpenAI想把ChatGPT變成一個AI agent的決心。
比如,我跟ChatGPT說,我週五下午要上機器學習這門課,那他就給我一個回答,說要我幫助你做什麼事情嗎?接下來,我告訴他記下來,你跟他講記下來之後,他的write的模組就啟動了。它知道這件事情是要被記下來的,他就會說我記下來了。以後你週五要上機器學習這門課,那write的模組什麼時候要啟動,是他自己決定的。

很多時候你希望他記下來的時候,他就是不啟動,或者你不希望他啟動的時候,他就是啟動,那是模型自己決定的。但是有一個方法基本上一定能讓他啟動,就明確的跟他講,把這件事記下來,基本上都能確定能夠啟動那個write的模組,讓write的模組把這件事情記下來。
那接下來的東西在哪裡呢?你可以看在設定裡面,個性化裡有一個叫記憶的部分,你點管理記憶,就可以看到它透過write的模組寫在memory裡面。

這個就是它作為一個AI agent的長期記憶裡面的東西。他也記得,就我剛才跟他講的,週五下午要上機器學習這門課。
但是,模型的記憶也是會出錯的,因為要寫什麼樣的東西到記憶裡面,是模型自己決定的。而且他並不是把對話的內容就一五一十的直接放到記憶裡面,他是經過一些昇華反思之後才放進去的。
所以他的反思可能會出錯,比如說他覺得我是一學生。雖然我是老師,但是它從過去的對話,誤以為我是一個學生,所以就存了一個錯誤的資訊在它的記憶裡面。

ChatGPT可以使用它的記憶,比如說我跟他說禮拜五下午是去玩好嗎,這個時候記憶模組就被啟動了。但是它是怎麼被啟動的,其實就不太清楚了。它到底是把所有記憶的內容通通都放到這個問題的前面,直接讓模型做回答,還是說也有做RAG,只選擇下載相關的記憶內容呢?這個我們就不得而知了。
總之當我問他說,週五下午出去玩好嗎,這個read的模組就啟動了,他就說下午不是要上課嗎?怎麼能出去玩?好聰明啊,他知道下午要上課,挺厲害的。

如果你想要知道更多有關AI Agent記憶的研究,放了幾篇經典的論文給大家參考,包括Memory GPT,這是23年的論文,Agent Workflow Memory是24年的論文,還有一個最近的Agent Memory Agent是25年的論文。所以23到25年各引用一篇,這方面的研究是持續不斷的。

接下來,我們要跟大家講,現在這些語言模型怎麼使用工具。什麼叫做工具呢?語言模型本身對我們人類來說也是工具,那對語言模型來說,什麼東西又是它的工具呢?

所謂的工具就是這個東西,你只要知道怎麼使用他就好,他內部在想什麼,他內部怎麼運作的,你完全不用管。這個就是工具的意思。
有哪些語言模型常用的工具呢?最常用的就是搜尋引擎,然後語言模型現在會寫程式,而且可以執行他自己寫的程式,那這些程式也算是某種工具,甚至另外一個AI也可以當作是某一個AI的工具,有不同的AI,有不同的能力。
比如說現在的語言模型,如它只能夠讀文字的話,那也許可以呼叫其他看得懂圖片,聽得懂聲音的AI,來幫他處理多模態的問題。
或者是不同模型它的能力本來就不一樣,也許平常是小的模型在跟人互動,但小的模型發現它自己解不了問題的時候,它可以叫一個大哥出來,大哥是個大的模型,大的模型運作起來就比較耗費算力,所以大的模型不能常常出現,大的模型要在小的模型召喚它的時候,才出面回答問題,大哥要偶爾才出來幫小弟解決事情。

其實這些工具對語言模型來說都是function,都是一個函式。當我們說語言模型在使用某一個工具的時候,其實意思就是它在呼叫這些函式。它不需要知道這些函式內部是怎麼運作的,它只需要知道這些函式怎麼給它輸入,這些函式會給什麼樣的輸出。因為使用工具就是呼叫函式,所以使用工具又叫做function call。

所以有一陣子很多語言模型都說他們加上了function call的功能,其實意思就是這些語言模型都有了使用工具的功能。
那語言模型怎麼使用工具呢?等一下我會講一個通用的使用工具的方法,但實際上使用工具的方法很多,甚至有一些模型是專門訓練來使用工具的。
他如果是針對使用工具這件事做訓練,那他在使用工具的時候,你可能需要用特定的格式才能夠驅動他,那就不是我們今天討論的問題。我講的是一個最通用的用法,對所有的模型,今天能力比較強的模型,應該都可以使用。

什麼樣的通用方法可以讓模型使用工具呢?就是直接跟他講,告訴他怎麼使用工具,你就交代他可以使用工具,那你就把使用工具的指令放在兩個Tool符號的中間,使用完工具後你會得到輸出,輸出放在兩個Output符號的中間。所以他就知道工具使用的方式了。

接下來告訴他有哪一些可以用的工具,有一個函式叫做Temperature,他可以查某個地點某個時間的溫度,他的輸入就是地點跟時間。給他的使用範例 Temperature,他就會告訴你臺北在這個時間的氣溫。接下來你就把你的問題連同前面這些工具使用的方式當作Prompt一起輸入給語言模型,然後如果他需要用工具的話,他就會給你一個使用工具的指令。

前面這些教模型怎麼使用工具的這些敘述,他叫做System Prompt,那查詢使用呼叫這些工具的這些話,比如“某年某月某日高雄氣溫如何”,這個是User Prompt。如果你有在使用這個ChatGPT的API的話,你的輸入要分成System Prompt和User Prompt。

很多同學會搞不清楚System Prompt和User Prompt有什麼樣的差別,那System Prompt指的是說,你在開發應用的這個Developer下的Prompt。這個Prompt是每次都是一樣的,每次你都想放在語言模型最前面,讓他去做文字接龍的這個敘述叫做System Prompt。每次使用他的時候都不一樣,通常是這個服務的使用者輸入的內容叫做User Prompt。
在ChatGPT的API裡面,特別把System Prompt跟User Prompt分開,也是要分開輸入的,因為System Prompt跟User Prompth有不同的優先順序,System Prompt優先順序比較高。如果System Prompt跟User Prompt有衝突的時候,模型知道他要聽System Prompt的,不要聽User Prompt的。
有了這些Prompt以後,告訴模型怎麼使用工具,問他一個問題,那他發現這個問題呼叫工具可以回答,他就會自動輸出 Tool, Temperature、高雄、時間,然後Tool告訴你說,他想根據我們的敘述去呼叫這個工具。但是不要忘了語言模型真正做的事就是文字接龍,所以這一串東西實際上就是一串文字,它沒辦法真的去呼叫一個函式。

這一段文字要怎麼去呼叫函式呢?那就要你自己幫模型把這個橋樑搭建好。所以你可以先設定說只要出現在Tool中間的這段文字,不要呈現給使用者看,當出現Tool這段文字以後,把這段內容直接丟給temperature這個function。那temperature這個function是已經事先設計好的,它就會回傳一個溫度。這個溫度要放在output的token裡面,然後這個output token裡面的內容也不要呈現給使用者看。這套指令碼是agent的開發者,你自己需要先設定好的流程。

所以現在有工具使用的這段文字,有得到工具輸出的這段文字,接下來就繼續去做文字接龍。對語言模型來說,他就根據輸入還有這邊已經產生的輸出,語言模型會以為是自己的輸出,雖然是你強塞給他的,那他就繼續去做文字接龍,他就會接出來說在某年某月某日高雄的氣溫是攝氏32度。
那是使用者真正看到的輸出,使用者就會看到說他輸入了一個問題,然後語言模型真的給他一個答案。他不一定知道背後呼叫了什麼樣的工具,你完全可以做一個設計,把這個呼叫工具的步驟藏起來不讓使用者知道。

語言模型最常使用的工具就是搜尋引擎。我想這個大家都已經非常熟悉了,使用搜索引擎又叫做 Retrieval Augmented Generation,也就是RAG。使用搜索引擎當然非常有用,這個RAG技術已經被吹捧到不能再吹捧了,所以我就不需要再告訴你RAG這個技術有多重要。

其他使用工具的方式也可能一樣有用。舉例來說,我們剛才說可以拿其他的AI來當作工具。
今天假設一個文字的模型,它本來只能吃文字的輸入,產生文字的輸出。那現在假設你要它處理一段語音的話怎麼辦呢?讓模型處理語音有什麼好處呢?你就可以問他各式各樣的問題,問它說這個人在說什麼,那他可以告訴你這句話的內容。問它說,這個人心情怎麼樣,如果它完全聽懂這段聲音,他也許可以做情緒辨識,告訴你這個人的情緒怎樣,並做出適當的回饋。
一般的文字模型,比如說GPT,多數的模型都是文字模型,沒有辦法真正讀懂語音。所以怎麼辦呢?當你問它一個問題說這邊有段聲音,你覺得這個人他心情怎麼樣?他講了什麼,根據背景雜性你覺得他在哪裡,如果你不做特別的處理文字模型是完全沒有辦法回答的。

但你可以讓文字模型使用工具,可以告訴它這邊有一堆跟語音相關的工具,有語音辨識的工具,這個語音偵測的工具,有情緒辨識的工具,有各式各樣的工具。可能需要寫一些描述告訴他每一個工具是做什麼用的,把這些資料都丟給ChatGPT,然後他就自己寫一段程式,在這些程式裡面他想辦法去呼叫這些工具,他呼叫了語音辨識的工具,呼叫了語者驗證的工具,呼叫了這個sum classification的工具,呼叫了emotion recognition的工具,最後還呼叫了一個語言模型,然後得到最終的答案。這個答案其實是蠻精確的,這個方法其實有非常好的效果。

這篇文章是我們助教的文章,所以特別拿出來講一下。這個結果是做在一個叫做Dynamic Super的Benchmark。Dynamic Super是一個衡量語音版的語言模型能力的資料集,這也是我們實驗室跟其他團隊一起做的。這個讓文字模型使用工具的方法,它得到的結果是最下面這一行。
我們就看最後一欄,是各種不同模型在55個語音相關任務上的能力的平均成績,會發現讓語言模型使用工具得到的正確率是最高的,可以完勝當時其他號稱可以直接聽語音的模型。所以使用工具可能可以帶來很大的幫助。
但使用工具也有其他的挑戰,我們剛才使用工具的方法是每一個工具都要有對應的文字描述,告訴語言模型說這個工具要怎麼被使用。但假設工具很多怎麼辦呢?假設現在可以用的工具有上百個上千個,那你豈不是要先讓語言模型讀完上百個上千個工具的使用說明書才開始做事嗎?
就跟剛才我們說不能夠讓AI agent先回顧他的一生,然後才來決定下一個指令一樣,才能決定下一個行動一樣。我們也沒有辦法讓語言模型讀完上百個上千個工具的說明書才來決定某一個工具要怎麼使用。

所以當你有很多工具的時候,你可以採取一個跟我們剛才前一段講AI agent memory非常類似的做法,你就把工具的說明通通存到AI agent的memory裡面,打造一個工具選擇的模組。這個工具選擇模組跟RAG其實也大差不差,這個工具選擇模組就根據現在的狀態去memory的工具包選出合適的工具。
語言模型真的在決定下一個行為的時候只根據被選擇出來的工具的說明跟現在的狀況去決定接下來的行為。至於如何選擇工具,右上角引用兩篇論文,一篇23年比較舊的論文,一篇是上個月的論文給大家看。

另外一方面,語言模型甚至可以自己打造工具,語言模型怎麼自己打造工具呢?不要忘了所有的工具其實就是函式,語言模型今天是可以自己寫程式的,所以他就自己寫一個程式,自己寫一個function出來就可以當作工具來使用。如果他寫一個function,並發現這個function運作的非常的順利,他就可以把這個function當作一個工具。放到他的工具包裡面,那之後這個工具就有可能在選擇工具的時候被選出來,用在接下來的互動中使用。
類似的技術非常的多,我在右上角就引用了一系列的論文,從23年到24年的論文都有,這是一個熱門的研究方向。
其實讓模型自己打造工具這件事情,跟模型把過去的記憶,比如說一些比較成功的記憶放到memory裡面再提取出來,其實是差不多的意思。只是這邊換了一個故事,說現在放到memory裡面的東西是一個叫做工具的東西,是一段程式碼,但他們背後的基本精神其實跟根據經驗來讓模型改變它的行為可以說是非常類似的。

今天人類把語言模型當作工具,語言模型把其他工具當作工具,比如說把搜尋引擎當作工具,所以搜尋引擎現在很慘,它是工具的工具,人類還不使用它,人類是使用語言模型,那個工具的工具還沒有被人使用的資格,它只能被語言模型使用而已。
但我們知道工具有可能犯錯,語言模型有可能犯錯,過度相信工具是不對的。這些語言模型會不會也過度相信了它們的工具,所以得到錯誤的結果呢?這是可能的。

我們拿RAG作為一個例子,這是一個非常知名的例子。之前Google出了一個叫做AI Overview的功能,這個功能其實就是一個RAG的功能,根據Google搜尋型的結果,用語言模型總結搜尋型的答案。
有一個人問了一個問題,我的披薩上面的起司黏不住怎麼辦呢?AI Overview就說弄個膠水把它黏上去就好了,而且它是非常認真在回答這個問題,因為它說不只要用一般的膠水,要用無毒的膠水才可以。這個答案其實就是來自於Reddit上一個網友的玩笑。這是個玩笑話,但是對於AI agent來說,他沒辦法判斷這個到底是不是開玩笑,他看到網路上寫的文章,照單全收都當作是正確答案。

所以就像是我們今天都會告訴人類,要有自己的判斷能力,不要完全相信工具的結果。所以我們也要告訴我們的工具說,這些不要完全相信工具的工具,要有自己的判斷能力,不要完全相信工具的工具給你的結果。
今天這些語言模型有沒有自己的判斷能力,知道工具的工具可能會出錯呢?舉一個實際的例子,我們剛才在講怎麼使用工具的時候,說我們有一個叫做temperature的function,語言模型呼叫temperature的function可以知道溫度。

現在我給你一個亂七八糟的溫度,我說現在高雄是攝氏100度。那語言模型知不知道這有問題呢?它不知道,它就告訴你說高雄的氣溫是100度,真的非常的熱。

如果你把溫度再調高一點,說現在是10000度,哇,比太陽上還熱,這個時候會發生什麼事呢?語言模型繼續做文字接龍的時候,他就知道說這顯然有問題,這個API給我的答案是一萬度,這是不合理的,怎麼可能比太陽上的溫度還高呢?
可見工具輸出有錯,如果你需要其他幫助的話再告訴我。所以語言模型今天是有自己一定程度的判斷力的,它也不是完全相信工具,就像你今天不完全相信語言模型的輸出一樣,它也不完全相信它的工具的輸出,它還是有一定程度的判斷力的。

所以實際上語言模型在使用工具,或者是它在做RAG的時候,它內部是有一個角力的,就是語言模型有它內部對世界的信念,這是它的internal knowledge,存在它的引數裡面。
它從工具會得到一個外部的knowledge,那它會得到什麼樣的答案,其實就是internal knowledge跟external knowledge,內外的知識互相拉扯以後得到的結果。
接下來我們要問的問題是,那什麼樣的外部知識比較容易說服AI,讓他相信你說的話呢?
為什麼這是一個重要的議題呢?想想看,現在大家都用Deep Research來查詢答案,甚至很多人都已經用Deep Research來寫報告了,所以現在大家已經不會直接去用搜索引擎搜尋了,你看到的是Deep Research告訴你的結果。
今天假設某個議題是有爭議性的,有正反兩派的觀點,那誰能夠寫出來的文字比較能夠說服AI,誰就可以在AI搜尋的結果裡面佔據優勢,就可以比較有機會影響人類。所以知道怎麼樣比較能夠說服AI相信你的話是一個重要的議題。

什麼樣的外部資訊AI比較容易相信呢?這篇文章給出了一個非常符合我們直覺的實驗結果。
這篇文章做了什麼樣的實驗呢?它說我們先來看看AI內部的知識是什麼,他就問AI說某種藥物,這種藥物每人每日的最大劑量是多少,那AI說是20毫克,那真正的答案呢是30毫克。
你給它醫學的知識,告訴它這是醫學報告,醫學報告裡面是寫30毫克。你再問他同樣的問題,這種藥物每天最多劑量多少,它會知道是30毫克。
那接下來我們刻意修改報告的內容,如果你把30毫克改成3毫克,變成原來的十分之一,模型相不相信呢?它就不相信了,他就直接回答是20毫克,用他本身的知識來回答這個問題。
但你把30毫克變成60毫克,模型相不相信呢?他相信,他相信這個報告裡面寫的。那這個時候它又不相信自己的內部知識,但如果你把30毫克乘10倍,變成300毫克,這時候他又相信誰了呢?他相信自己的知識,不相信你額外提供的外部知識。
所以這邊的結論其實非常好,符合你的直覺,外部的知識如果跟模型本身的信念差距越大,模型就越不容易相信。如果跟本身的信念差距比較小,模型就比較容易相信。這是個很符合直覺的答案。
同一篇文章的另外一個發現就是,模型本身對它目前自己信念的信心,也會影響它會不會被外部的資訊所動搖。有一些方法可以計算模型現在給出答案的信心,如果他的信心低,他就容易被動搖。如果他的信心高,他就比較不會被動搖。這都是非常直覺的結果。

另外一個問題是,假設今天你給模型兩篇文章,那這兩篇文章的意見是相左的,那模型傾向於相信什麼樣的文章呢?
有一篇論文的發現是,如果這兩篇文章答案不同,一篇是AI寫的,一篇是人類寫的,現在這些語言模型都傾向於相信AI的話。而且那個AI不需要是他自己,Claude就可能比較相信ChatGPT的話,ChatGPT比較相信Gemini的話,他們比較相信AI同類的話,比較不相信人類的話。
那到底為什麼會有這樣子呢?這篇文章裡面先提出一個第一個假設,然後再否定了這個假設。他一個假設是說,會不會是因為AI的觀點都比較類似,因為現在這些模型訓練的資料都是網路上爬的,爬到差不多的資料,所以他們講的話都差不多,想法都差不多。

但他們刻意做了一個實驗,他們刻意找那些問題是在沒有提供這些資料的情況下,他的答案跟人類和另外一個AI的想法都是完全不同的狀況。就算是這種情況下,一個AI一個語言模型還是傾向於相信它的AI同類講的話。所以這就給我們一個啟示說,未來如果你要說服一個AI的話,用AI產生出來的論點,產生出來的文章,可能更容易說服另外一個AI接受你的觀點。
這篇文章還有做了其他分析,比如說他覺得,也許AI寫的文字就是比人類寫得好,更有結構,更有條理、更明確、更簡潔,所以AI比較容易相信另外一個AI講的話。那是不是這樣呢?那可以未來再做更多的研究。

另外我們實驗室的同學研究了一個文章的meta data對於AI會有多相信這篇文章裡面的資訊做了研究。
論文的設定是這個樣子,你問AI一個問題,比如說某一個計劃,有沒有編輯豹這種動物的基因,然後接下來給他兩篇文章,這兩篇文章都是假的,都是AI生成的。所以並沒有AI比較喜歡人還是AI寫的文章這個問題。兩篇都是語言模型生成的。那其中一篇會說這個計劃有編輯豹基因的文章,另外一篇文章會說這個計劃沒有編輯豹基因的文章。
那接下來呢,我們給這兩篇文章不同的metadata,比如說給這兩篇文章不同的釋出時間,說左邊這篇文章釋出時間是2024年,右邊這篇是釋出2021年。你會發現這個時候AI相信2024年的這篇文章的內容。但如果文章的內容完全不變,我們只是把釋出的時間換了,我們說左邊的這篇文章一樣,釋出時間從2024改成2020,右邊這篇文章從2020改成2024。這個時候語言模型傾向於相信右邊這篇文章的內容。

所以我們這邊就學到一個很重要的知識:語言模型比較相信新的文章。當兩篇文章的論點有衝突的時候,他相信比較晚發表的文章。那我們也做了一些其他實驗,比如說文章的來源,跟他說這是Wikipedia的文章,或跟他說這是某個論壇上面摘取下來的資訊,會不會影響他的判斷。
我們發現文章的來源對於語言模型是比較沒有影響的。還有另外一個有趣的實驗,是我們嘗試說今天這篇文章呈現的方式會不會影響語言模型的決策。所謂的呈現方式指的是說,你這篇文章放在網頁上,做很好不好看。一樣的內容,但是如果你只是做一個非常簡單的模板和做一個比較好看的模板,會不會影響語言模型的判斷呢?
我們用的是那種可以直接看圖的語音模型,所以要直接看這一個畫面去決定他要不要相信這篇文章的內容。直接看這一個畫面,決定他要不要相信文章的內容。
我們的發現是模型喜歡好看的模板。我們發現Claude 3比較喜歡好看的模板時,他會傾向於贊同下面這篇文章的觀點。
不過我說模型喜歡好看的模板,這個擬人化的說法是太過武斷了。我們做的實驗只有用兩種不同的模板來比較,也許模型喜歡的並不是好看的模板,它是喜歡綠色,所以你不知道這個模型到底喜歡什麼。
所以我剛才講的那個結論是太武斷了,但我可以告訴你,模型比較喜歡下面這篇文章勝過上面這篇文章。
講了這麼多跟工具有關的事情,大家不要忘了,語言模型就是語言模型,就算工具的答案是對的,也不能夠保證語言模型就不會犯錯。例如,ChatGPT現在有了search的功能,它會先進行RAG網路搜尋然後再回答你的問題。假設給它的輸入是叫它介紹李宏毅這個人,並強調李宏毅是一個多才多藝的人,在很多領域都取得了卓越成就。

它開始做完RAG網路搜尋後,介紹李宏毅,接下來就介紹李宏毅的演藝事業,這個沒有問題,因為你知道大陸有另外一位知名的演員叫李宏毅,跟我同名同姓,他比較有名,所以這個ChatGPT選擇介紹演員的李宏毅是完全沒有問題的。

但是講著講著就有點怪怪的,它發現這個李宏毅,在教育跟學術上也有很大的貢獻,所以它把兩個李宏毅混成一個人來講。
不過要講一下,這個是我去年的時候試的結果了,我今年再試,已經試不出一樣的結果了,模型的能力的進步是非常快的,現在它完全知道是有兩個李宏毅存在的,所以這是一箇舊的問題。我舉這個例子只是要告訴你,就算工具是對的,有了RAG也並不代表模型一定不會犯錯。

最後一個要傳遞給大家的資訊是,我們剛才講了很多使用工具帶來的效率。使用工具並不一定總是比較有效率的。為什麼?我們舉一個例子,我們假設現在要比較人類心算的能力和計算機的能力。如果做數學運算,一般人跟計算機誰會比較快呢?你可以想說是計算機比較快吧,人類難道還能夠做得到嗎?如果你心算沒有特別練,難道還會比計算機快嗎?但是那是取決於問題的難度。

假設這是一個簡單的問題,比如說三乘以四,任何人都可以直接反應就是十二。但是如果按計算機的話,你按計算機的時間都比人直接回答的還要慢。所以到底要不要使用工具,並不是永遠都是一定要使用工具。
你看早年有一些研究,早年有一些在訓練語言模型使用工具的研究。那時候語言模型還很爛,所以他們有一些工具是接入一個翻譯系統,接入一個問答系統。今天看來就非常的沒有必要。因為今天的語言模型,你說翻譯,那些翻譯系統還能做得比現在的語言模型強嗎?與其接入一個翻譯系統,還不如自己直接翻就好了。所以到底需不需要呼叫工具,取決於語言模型本身的能力。它不一定總是比較省事的方法。

最後一段呢,想跟大家分享現在的AI語言模型能不能做計劃呢?語言模型有沒有在做計劃呢?我們剛才的互動中看到語言模型就是給一個輸入,它就直接給一個輸出。

也許在給輸出的過程中,它有進行計劃才給出輸出,但是我們不一定能夠明確地知道這件事。也許語言模型現在給的輸出只是一個反射性的輸出,它看到輸入就產生一個輸出,它根本沒有對未來的規劃。但是你可以強迫語言模型直接明確地產生規劃。
當語言模型看到現在的第一個observation的時候,你可以直接問語言模型說,如果現在要達成我們的目標,從這個observation開始,你覺得應該做哪些行動,這些一系列可以讓語言模型達到目標的行為合起來,就叫做計劃。

而在語言模型產生這個計劃之後,把這個計劃放到語言模型的observation裡面,當作語言模型輸入的一部分,語言模型接下來在產生action的時候,它都是根據這個plan來產生action,期待說這個plan定好之後,語言模型按照這個規劃一路執行下去,最終就可以達成目標。
過去也有很多論文做過類似的嘗試,讓語言模型先產生計劃,再根據計劃來執行動作可以做得更好。

但是天有不測風雲,世界上的事就是每一件事都會改變,計劃就是要拿來被改變的。所以一個在看到observation 1的時候產生的計劃,在下一個時刻不一定仍然是適用的。為什麼計劃會不適用呢?因為從action到observation這一段並不是由模型控制的,模型執行的動作接下來會看到什麼樣的狀態,是由外部環境所決定的,而外部環境很多時候會有隨機性,導致看到的observation跟預期的不一樣,導致原有的計劃沒有辦法執行。

舉兩個具體的例子,比如在下棋的時候,你沒有辦法預測對手一定會出什麼招式,你只能大致知道他有哪些招式可以用,但實際上的招式,你是沒有辦法預期的。如果你完全可以預期的話,那你就一定會贏了,那還有什麼好下的呢?所以下棋的時候對手會做的行為,也就是環境會做的行為,是你可能沒有辦法事先完全猜到的。
或者是說我們拿使用電腦為例,在使用電腦的時候,就算語言模型一開始他plan的時候,點這個點就能完成任務,但是中間可能會有意想不到的狀況出現,比如說彈出一個廣告,如果語言模型只能按照一開始既定的規劃來執行行為的話,他可能根本關不掉那個廣告視窗,他就會卡住了。所以語言模型也需要有一定程度的彈性,他也要能夠改變他的計劃。

語言模型怎麼改變他的計劃呢?也許一個可行的方向是每次看到新的observation之後,都讓語言模型重新想想還要不要修改他的計劃。看到observation 2之後,語言模型重新思考一下,從observation 2要到達他最終的目標,要做哪一些的行為,那這部分的計劃形成plan pi。把plan pi放到現在的input裡面,把plan pi放到這個sequence裡面,語言模型接下來在採取行為的時候,可能會根據plan pi來採取跟原來plan裡面所制定的不同的行為。

這是讓語言模型做計劃。不過這是一個理想的想法,這是相信語言模型根據現在的observation和最終的目標制定一個規劃的能力。

那語言模型到底有沒有這個能力呢?其實你可能常常聽到這種新聞說語言模型能夠做計劃,比如說有一個人問語言模型說,你定一個成為百萬訂閱YouTuber的計劃,語言模型就會給你一個看起來還可以的計劃。

過去確實也有很多論文告訴你,語言模型是有一定程度做計劃的能力的。這邊引用的結果是一個2022年的論文,這個也是史前時代的論文了。

在這篇論文裡面,他們去告訴當時的語言模型,現在有一個任務,你把這個任務分解成一系列的步驟。如果語言模型可以正確地知道達成這個任務要做什麼樣的步驟的話,那我們也許可以說,他有一定程度的規劃能力。
比如說這邊試了一個叫做Codex 12B的模型,跟他說如果要刷牙的話,那你要做什麼事情呢?他就會說我要走進浴室,我要靠近那個水槽,我要找到我的牙刷,我要拿起牙刷,我要把牙刷放到嘴裡面,他知道刷牙要怎麼做。這些步驟以後呢?

在這篇文章裡面,他們是拿這些步驟去操控一個agent,這個agent就可以在虛擬的世界中做他們要這個agent做的事情,比如說跟這個agent說去拿一個牛奶來喝,他就會走進廚房,開啟冰箱,拿一個牛奶,再把冰箱關起來,所以看起來好像有一定程度做計劃的能力。

有人做了一個做計劃的benchmark,這個benchmark就是考驗語言模型做規劃、對話的能力。那這個benchmark裡面,最主要的測試題目是一個跟疊積木有關的題目。
這個題目的描述通常長的是這個樣子,告訴語言模型說,你現在有哪些操作,可以從桌上拿起積木,可以從一個積木上拿起另一個積木,可以把積木放到桌上,可以把一個積木堆到另外一個積木上。那現在初始的狀態,像右邊這個圖這個樣子,那問說怎麼把橘色的積木放在藍色的積木上?

這邊模型要執行的動作就是把藍色的積木拿起來放到桌上,然後再把橙色的積木拿起來放到藍色的積木上就結束了。所以這個對AI agent來說,其實也都是蠻容易的問題,他知道說執行以下四個步驟,就可以讓橙色的這個積木跑到藍色的積木上。

但是planbench不僅做這種比較一般的疊積木的遊戲而已,為什麼不能只做這種題目呢?因為現在這些語言模型,他都從網路上爬大量的資料來進行訓練,什麼疊積木這種題目網路上根本就已經有,他搞不好根本就看過一模一樣的東西,所以他能夠做計劃,並不代表他真的知道做計劃是怎麼回事。他可能只是從他看過的資料裡面,照本宣科文字接龍出來一個看起來還不錯的結果而已。

所以在planbench裡面,他們有一個比較變態的測試,這個測試叫做神秘方塊世界,這個方塊世界不是一個正常的方塊世界,裡面的方塊可以做的行為是一些怪怪的行為,比如說你可以攻擊方塊,一個方塊可以吞噬另外一個方塊,你可以屈服一個方塊,一個方塊可以征服另外一個方塊。然後接下來他就會定一套非常複雜的規則,然後根據這套規則去運作,你可以達到某一個結果。他最後要的結果是讓物件C渴望物件A,讓C方塊渴望A方塊。

那渴望是什麼意思?你就是按照前面那一套規則操作,看機器能不能讀懂前面那一套規則,按照那一套規則操作,讓物件C渴望物件A。那這個時候語言模型,期待他就不能用他看過的知識來解這個問題。好,那語言模型在這個神秘方塊世界做得怎麼樣呢?

這邊引用的是2023年的結果,那最上面這個部分呢,是當年那些模型在正常方塊世界的結果。那這個數值呢,所以看起來GPT4可以得到30%的正確率。那這邊是神秘方塊世界的結果,在神秘方塊世界裡面呢,你看這個GPT4最好,就算叫他做channel sort,就算他叫channel sort,也只有9%的正確率。所以看起來他有點 overfeed在一般方塊的世界上,給他神秘方塊世界,他是解不了的。不過這是2023年,這個是古代的結果。

我們來看去年9月有了o1以後的結果。而有 o1 以後結果就不一樣了,這邊一樣是神秘方塊世界,縱軸呢是正確率,橫軸呢是問題的難度。那發現說多數的模型啊,都躺在這個地方,他們正確率都非常的低,只有綠色的這個虛線有一點點起色。綠色的虛線是LLaMA 3.1 405B那個大模型,它可以解最簡單的問題。但是如果用o1-mini是紅色這一條線,用o1-preview是藍色這一條線,看起來這些reasoning的模型是有些機會來解這個神秘方塊世界的。
當然這邊你還有一個懷疑,就是神秘方塊世界會不會o1看過了呢?會把訓練資料裡面根本就有神秘方塊世界的資料,那這個我們就沒有辦法回答了,只是說就現有這個benchmark,看起來o1是有機會解神秘方塊世界的。

還有另外一個跟做計劃有關的benchmark,這個計劃benchmark 要求 AI扮演這個旅行社,然後你給他一個旅行的計劃,叫他幫你規劃。這個AI要讀懂你的計劃,然後他可以使用一些工具,他可以上網搜尋資料,然後他會根據提供給他的some constraint,比如說經費多少,預算多少,一定要去哪裡,一定要去哪裡,一定要做什麼,一定不要做什麼,以common sense產生一個旅行的規劃。

這個是24年年初所釋出的benchmark,那AI要做的事情講得具體一點,就是他要讀一個問題,這個問題裡面是說我要規劃一個三天的行程,從某個地方到某個地方,什麼時候出發,什麼時候回來,我的預算是1900元,所以不能花超過1900元。然後AI就要產生一個規劃,說第一天我們搭哪一班飛機,什麼時候從哪裡到哪裡,早餐吃什麼,午餐吃什麼,晚餐吃什麼,最後住在哪裡等等,產生這個規劃,然後要符合預算的限制。

2024年年初,當時的模型做得怎麼樣呢?這邊是做了研究,你看還有什麼GPT3.5,GPT4等等的模型。那又分成上半跟下半,上半是這些模型要自己使用工具,跟網路的資料互動,然後得到正確的答案。你會發現這些模型都非常的慘,多數模型產生一個合理的旅遊規劃的機率是0%,只有GPT4 Turbo可以得到0.6%的成功率。
那下面這個部分呢,下面這個部分是說既然大家都那麼慘,尤其是模型很多時候他根本用不了工具,太笨了,沒辦法用工具,工具使用方法根本是錯的,那沒關係就別用工具了,把所有的資料都先找好,貼給模型,讓模型根據這些資料來做規劃。那最好也只有GPT 4 Turbo可以達到4%左右的成功率而已。

所以在24年年初,那個時候看起來是沒辦法讓語言模型扮演一個旅行社來幫你規劃旅遊行程的。
那我們來看這些模型會犯什麼錯吧。這個是從他們官網上,這個project的官網上找了幾個有幾個錯誤,比如說模型可能會做一些沒有常識的事情,在第三天,飛機八點就已經起飛了,但是還是安排了一些旅遊的行程,還安排了午餐的地點,所以這是一個不符合常識的規劃。
或者是有時候模型找不出一個很好的規劃來符合預算的限制,比如說這邊這個預算的限制是三千元,最多花三千元,那模型第一次規劃的結果是三千二百四十七元,還差了一點,所以模型就修改了原來的規劃,他好像做了一些cost down,午餐吃差一點的東西,那降到三千二百三十八元,後來又說那早餐也吃差一點的東西,降到三千二百一十六元,只降這麼多,他想說放棄算了,跟三千元沒差那麼多就算了,所以這個就不是一個成功的結果。
這個作者有評論說,其實只要降低住的地方,不要住那麼好,就可以輕易的達到三千元底下的預算,就可以符合預算的限制,但是語言模型始終沒有發現這件事,看起來他做規劃的能力並沒有非常的強,他沒有辦法做一個規劃去符合限制。

既然問題在沒辦法符合限制,有人就想說那符合限制這件事情,就不要交給語言模型來做了,交給一個現成的solver來做,所以語言模型做的事情是寫一個程式。
用這個程式去操控現成的solver,然後來得到合理的旅遊規劃。那有了這個現成的solver,也有這個工具的加入之後,這solver就等於這個工具,那這個旅遊的規劃可以做到什麼地步呢?

去年4月的結果幾個月後,有人用GPT4和Cloud3就可以做到90% 多的正確率。所以看起來在有工具輔助以後,語言模型也有機會做出不錯的旅遊規劃。不過至少做出符合邏輯的旅遊規劃。

所以現在到底模型規劃的能力怎麼樣呢?就是介於有跟沒有之間吧,就是你也不能說它完全沒有,但你也不能說它真的非常強。那我們怎麼進一步強化這些AI agent的規劃能力呢?能不能夠讓他做的比他自己想出來的規劃還要更好呢?一個可能是讓AI agent在做規劃之前,實際上去跟環境互動看看。
今天在第一個observation的時候,那看看現在有哪些可以執行的行為,總共有一之一、一之二、一之三三個行為,哪個行為最好呢?通通都去試一下,得到狀態二之一,然後呢,狀態二之一後面有兩個行為也都試一下,狀態二之二之後有另外一個行為試一下,狀態二之三之後兩個行為都試一下,得到接下來的狀態,然後呢看看有沒有成功的路徑。嘗試一陣以後發現有一條成功的路徑,這條路徑是成功的,那你就知道說,那我要採取action一之三,接下來要採取action二之三之一,就會成功。簡單來說就是要語言模型跟實際的環境互動一下,嘗試出一條最好的路徑。那這個就是一個很強的規劃的方式,但是這麼做顯然是有很明確的優勢的。
第一個很明確的優勢就是,嘗試如果今天這個任務很複雜,嘗試所有的路徑,顯然是要花費非常龐大的算力的。你總不能讓原模型每次做決策前嘗試所有的可能性吧。雖然這樣可以找到最好的結果,但是可能是不切實際的想法。

所以一個可能的想法是,把一些看起來沒希望的路徑直接就丟掉。比如說走到某一個狀態的時候,語言模型可以自問自答說,走到這個狀態,還有完成功的機會嗎?如果說明沒有,那這條路徑就不嘗試下去。如果說明有那才嘗試下去,這樣就可以減少無謂的搜尋。那這個方法有沒有用呢?

有一篇paper叫做Tree Search for Language Model A,這個是去年夏天的論文,就做了類似的嘗試,讓模型有使用電腦的能力。這邊就是給模型一個指令,跟一張圖片,叫他上網去做某一件事情。如果只是GPT4,做一般的這種直覺式的,那種反射式的回答的話,沒有辦法做得很好。但是它們用這個嘗試,加上去除沒機會的路徑的方式,就先走這條路徑,然後呢,模型會不斷自問自答說,這條路徑還有希望嗎?然後給一個分數,那如果分數低於某一個threshold就不做了,就跳另外一條路徑。低於某一個分數就不做了,再跳另外一條路徑,低於某一個分數就不做了,再跳另外一條路徑。
最終找出一條最佳的路徑,那模型就等於做了規劃,那就可以走到最佳的結果。這個是Tree Search for Language Model Agent,但這邊有各式各樣的這種Tree Search的algorithm,你可以採用了。這邊我們就不展開細講,那這種Tree Search的方法有很大的問題。

什麼樣的問題呢?它的缺點是有一些動作,做完以後你是覆水難收的。比如說假設現在在語言模型可以採取的三個action裡面,有一個是訂pizza,有一個是訂便當,然後呢他先訂了pizza以後,繼續走下去發現這條路不好。所以她最後發現訂便當才是最好的solution,但是你pizza已經訂了,他跟人家說,我不要訂這個pizza了,但那個pizzahard,他已經把那個pizza做了,他說誰管你啊,你一定要把這個pizza吃下去。

有些動作做了以後就是覆水難收,所以這樣的tree search的方法,跟現實世界互動,找出最佳路徑的方法,也有可能有問題的。

那怎麼處理這個覆水難收的問題呢?一個可能性就是,讓剛才一切的嘗試都發生在夢境中,都發生在腦內的劇場,剛才一切的互動都不是現實生活中真正發生的事情。原來都是模型腦內的模擬,他自己想象說,他執行的動作一之一,他自己想象說接下來會看到二之一,他在自己想象去評價這個路徑有沒有希望發現沒有就換搜尋另一條路徑,直到達到他想像中的一個理想的結果。
但這邊還有另外一個問題,從action到observation,從模型執行的行為到他看到接下來環境的變化,這中間的過程不是模型決定的,他實際上是環境決定的。

那模型怎麼知道環境會有什麼樣的變化呢?模型怎麼知道我採取一個行為,接下來會看到什麼樣的改變?你在跟一個對手下棋的時候,你怎麼知道你下一步棋,接下來會發生什麼樣的事情?對方會有什麼樣的策略的回應呢?

所以你需要有一個World Model。如果是在AlphaGo下棋裡面,他就是自己扮演對手自己跟自己下。那在這邊的情況,在這個AI agent的情況,你就是需要一個World Model,他模擬環境可能有的變化。那World Modell怎麼來呢?也許AI可以自問自答,自己扮演這個World Model,自己去猜想說,他執行了某件事以後,接下來會發生什麼樣的行為,這件事有機會成真嗎?

你可以讀一篇paper,is your LLM secretly a world model of the internet,這篇paper就是用model-based planning的方法來打造一個web agent。這篇paper裡面的解法是,現在有一個網頁,模型的這個任務目標是是要買某一個東西,那有三個選項,有三樣東西是可以點的。接下來黃色這個區塊,一切所發生的事情都是發生在腦內的劇場,都是發生在模型的夢境,它並沒有實際發生過。
模型想象一下,我點按鈕1,接下來會發生什麼事,接下來會發生的事情是用文字描述出來的。但選擇文字來描述接下來發生的事情是很直觀,其實作者在文章沒有解釋說,那為什麼不只是直接產生這個網頁的圖呢?你想說有可能嗎?這個難度那麼高,有沒有可能真的就創造出一個新的網頁模擬出接下來可能發生的狀況呢?這難度也太高了,產生文字可能是比較實際的做法。

所以接下來夢境中,這個環境會發生什麼樣的變化,是語言模型自己用文字描述出來的。所以他想象說會發生什麼樣的變化,有了這個變化以後,他再想象自己多執行了一步,然後看看會發生什麼樣的事情。
所以這邊就是點選第二個按鈕,然後想象發生什麼樣的變化,自己再多執行一步,那想象會有什麼樣的變化,第三個按鈕想象發生什麼樣的變化,執行部再想象會有什麼樣的變化。
那哪一步比較好呢?他在自己去問說,那這一步大概有多少機會成功呢?自己評估一下40%,這一步自己評估一下是80%,這一步自己評估一下是10%,看起來中間第二步,機器人第二個按鈕,中間第二個選項是比較容易成功的。所以他就選實際上所以上面並沒有真實發生過,黃色框框裡面的事情並沒有真實發生過,它是一個夢境中的腦內小劇場,模型在夢境中得到了啟示說一定要選第二步,所以在真實的現實世界中,它就選擇了第二步,所以這個就是讓模型強化它規劃能力的方式。

講到這個腦內小劇場,你是不是就想到說,在上次的課程中也有提到腦內小劇場,上次的課程我們說現在有很多模型都號稱有思考,用英文講就是reasoning的能力。其實所謂reasoning的能力就是可以演一個腦內小劇場,告訴你說他現在是怎麼思考的。
如果把這些有reasoning能力的模型,拿他來做AI agent,他的腦內小劇場會不會正好就是在做規劃呢?如果現在的輸入就是我們給AI agent的observation,輸出就是我們要求AI agent採取的action,會不會腦內小劇場就是更好呢?
剛才類似夢境中看到的規劃呢,他自己採取了不同的可能性,自己在驗證每一個可能性可能成功的機會,自己扮演World Model,自己扮演這個世界,去想象他採取一個行為之後,接下來會發生什麼樣的事情。

我實際試了一下DeepSeek-R1,看起來他確實有類似的效果,我們把剛才那個積木的問題交給他,然後接下來他就開始演腦內小劇場,上略1500字,他真的做了1500字,講了很多很多。
然後呢,你可以看到說在腦內小劇場的過過程中,他就是做了各式各樣的嘗試,他做的事情就有點像是剛才的tree search,然後最後他找出了一個 optimal solution,他在夢境中知道說,從橘色的方塊上拿起藍色的方塊,藍色的方塊放到桌上,從桌上再拿起橘色的方塊,放到藍色的方塊上,這四個步驟就可以完成我們的要求。他在夢境中已經找出了一個最佳的solution。然後執行最佳solution的第一步。
我這邊要求他告訴我他的下一步是什麼,只要求他講一步。那腦內小劇場先找出一個成功的solution之後,在執行這個計劃,他已經找出一個成功的計劃之後,在執行計劃的第一步,就是使用操作二,把橘色的積木從藍色的積木上面拿起來。

講到這裡,其實這堂課也可以停在這裡。不過這邊多補充一件事,就在幾周之前,有一篇新的論文,叫做《the danger of over thinking》,他們就是把這些能夠演腦內小劇場的模型,讓他們扮演AI agent,看看他們做事有沒有效率。其實整體而言,能夠做腦內小劇場的模型,還是比不能夠做腦內小劇場的模型,在AI agent的這些任務上面表現得更好。
但是他們也有一些問題,他們會有什麼問題呢?就是想太多了,他們是思考的巨人,行動的矮子。有時候這些模型會比如說按鈕點下去會怎麼樣,他就一直想一直想一直想,怎麼想都不停。那你怎麼想都沒有用,因為你根本不知道那個按鈕點下去會發生什麼事,還不如直接點一下。因為在很多情況下,你直接嘗試點一下,也許只要不是這個信用卡付款的,你都按上一頁就回去了,你就知道發生什麼事了。與其一直想還不如做一下。
或者是有些模型,他嘗試都沒有嘗試,他光是拿那個問題想啊想啊想啊,就想說這我做不到,還什麼都不是就直接放棄,死於想太多。所以這些模型他們有的問題就是想太多。所以如何避免這些模型想太多,也許是一個未來可以研究的關鍵。
技術交流群邀請函
△長按新增小助手
掃描二維碼新增小助手微信
請備註:姓名-學校/公司-研究方向
(如:小張-哈工大-對話系統)
即可申請加入自然語言處理/Pytorch等技術交流群
關於我們
MLNLP 社群是由國內外機器學習與自然語言處理學者聯合構建的民間學術社群,目前已經發展為國內外知名的機器學習與自然語言處理社群,旨在促進機器學習,自然語言處理學術界、產業界和廣大愛好者之間的進步。
社群可以為相關從業者的深造、就業及研究等方面提供開放交流平臺。歡迎大家關注和加入我們。

掃描二維碼新增小助手微信
關於我們
