原文連結: Andrew Ng吳恩達-Snowflake演講
請歡迎 Andrew。
謝謝你。現在是一個非常適合當「創造者」的時代,我很興奮能回到 Snowflake Build。我今天想和大家分享,我認為 AI 最大的幾個機會在哪裡。你可能聽過我說過,我認為 AI 是「新電力」,因為 AI 是一種通用型技術,就像電力一樣。如果我問你「電力有什麼用?」這問題其實很難回答,因為電力可以應用在太多地方。同樣地,新的 AI 技術正在為我們創造一大批過去根本不可能出現的新應用機會。
AI 的應用層將創造更多價值
大家常問我:「Andrew,AI 最大的機會在哪裡?」這是我心中所謂的 AI 堆疊(AI stack)。在最底層是半導體,上面是雲端基礎設施,其中當然也包括 Snowflake,再上面是許多基礎模型訓練者和模型本身。而事實上,大部分媒體的炒作、熱度以及社交媒體上的話題,都集中在這些「技術層」上。當有像生成式 AI 這樣的新技術出現時,熱度都在這些技術層面上,這沒有問題,但我認為,幾乎可以說必然地,還有另一層必須發揮出更大的價值,那就是應用層。
因為需要這些應用來創造出更多價值和更多營收,才能支撐下面所有這些技術提供者的存在。所以我花了大量時間在思考 AI 應用,我相信最好的新機會將會出現在「打造全新事物」的這個領域。過去幾年有一個很大的趨勢,不可否認是受到生成式 AI 帶動,那就是機器學習模型的開發速度越來越快。尤其在生成式 AI 的幫助下,我們可以以前所未有的速度打造出東西。
舉個例子,比如要做一個情緒分析的應用,從文字中判斷這是正面還是負面,來做品牌聲譽監控。傳統的工作流程,使用監督式學習(supervised learning),可能要花一個月時間收集標記好的數據,再花幾個月訓練 AI 模型,然後再花幾個月尋找雲端服務部署平台,整個過程可能需要 6 到 12 個月才能建置出一個有價值的 AI 系統。這樣的過程沒有什麼不好,很多優秀的團隊就是這樣打造出高價值的 AI 系統。
生成式 AI 的快速原型開發
但是現在,有了生成式 AI,在某些類型的應用中,你可能只需要幾天時間寫出 prompt,然後在幾天內就能部署。這代表,很多過去需要幾個月才能打造出來的應用,現在可能 10 天左右就可以完成。這大大開啟了快速嘗試、打造新原型並且推出新 AI 產品的機會。
而這種快速原型開發帶來的結果之一就是,「快速實驗」成為一種全新的創新路徑。過去,如果一個專案需要 6 個月才能完成,你就需要反覆研究、確保有用戶需求、產品經理要充分調查並規劃好一切,再花力氣投入開發,希望最終結果值得。但現在,我看到快速行動的 AI 團隊有一種新的開發模式,就是「反正一個週末就能拼出原型,那我們不如做 20 個原型,看看哪些有搞頭。」如果最後 18 個都沒用,就直接放棄,專注在那兩個有潛力的上面。
所以「快速迭代、快速實驗」正在成為發明新使用者體驗的一條新路徑。一個有趣的影響是,「評估」或簡稱 evals,正在成為我們開發流程中的最大瓶頸。以前在監督式學習時代,如果你已經收集了 10,000 筆訓練資料,再多收集 1,000 筆測試數據,也不過是多 10% 成本,沒什麼大不了。但現在在很多基於大型語言模型的應用中,你根本不需要訓練數據。如果這時候還要你慢慢去收集 1,000 筆測試案例,這就成了一個很大的瓶頸。
所以現在新的開發流程,常常感覺是「開發和收集數據同步進行」,而不是傳統的「先收集數據,再開發」。你先做出原型,然後隨著這個專案變得越來越重要,對穩定性和可靠性的要求提高時,再逐步建立起測試集。我相信在如何建立評估系統上,未來還會有更多有趣的創新。
另外我看到一個現象是,雖然機器學習模型的原型開發速度變得非常快,但一個軟體應用從零到一仍然包含很多步驟。產品功能要設計好,軟體整合要順利,還有很多「水管工程」般的繁瑣細節。部署之後還要有 DevOps 和 LOps。雖然這些環節的速度也有加快,但還沒有像機器學習模型開發速度成長得那麼快。當開發流程中有一個部分快到極致時,它會對整個組織其他部分產生壓力,逼著大家也要跟著提速。這就是我最近看到很令人興奮的進展之一。
至於機器學習如何讓開發速度加快,我想說「快速行動並打破常規(move fast and break things)」這句話以前名聲不好,因為它真的會「打壞東西」。有些人因此認為我們不該走得太快。但我不同意,我覺得更好的心法應該是「快速行動,同時負責任(move fast and be responsible)」。
我看到許多團隊能夠很快寫出原型,同時也能非常嚴謹地進行評估和測試,在沒有正式推向市場、沒有對外造成任何損害或風險的前提下,就能快速開發並負責任地前進。我覺得這樣的節奏非常令人振奮,因為你真的可以快速打造出好東西。
並且以負責任的方式交付成果,而且速度比以往任何時候都要快得多。現在,AI 領域有許多發展,而在所有正在發生的 AI 發展中,就技術趨勢而言,我最興奮的一個趨勢是代理式(agentic)AI 工作流程。所以如果你問我,現在最重要的一個 AI 技術是什麼,我會說是代理式 AI。我想當我在今年年初開始說這句話的時候,這還是一個有點爭議的說法,但現在「AI agents」這個詞已經被技術人員和非技術人員廣泛使用,成為有點炒作的流行語。但讓我來分享一下我是如何看待 AI agents 的,以及為什麼我覺得它們很重要。
從技術角度來看,我們大多數人今天使用大型語言模型(large language models)的方式是所謂的零樣本提示(zero-shot prompting)。大致上就是,我們給它一個提示(prompt),請它寫一篇文章或為我們生成一個輸出。這有點像你去找一個人(或者在這裡,是去找一個 AI),要求它從第一個字開始,一直打字到最後一個字,一氣呵成,中途不能按退格鍵,就這樣從頭到尾寫完。結果發現,人類並不是以這種方式產出最好的寫作內容;但是,儘管這種強迫性的創作方式很困難,大型語言模型的表現還是不錯,做得相當好。
接下來,什麼是代理式工作流程(agentic workflow)?舉個例子,如果要生成一篇文章,我們會請 AI 先寫一個文章大綱,然後問它:「你需要進行一些網路研究嗎?」如果需要,那麼就下載一些網頁內容並放入大型語言模型的上下文中。接下來,我們再請它寫出第一版草稿,然後再請它閱讀這個草稿、進行批判性檢討,然後修訂草稿,如此循環往復。這種工作流程看起來更像是在進行一些思考、研究、然後修改,再回去繼續研究和思考的過程。雖然這個過程比較花時間,但最終可以產出品質好得多的結果。
在我合作的一些團隊中,我們把這種代理式工作流程應用在處理複雜、棘手的法律文件上,或是用於醫療診斷輔助、或是執行非常複雜的政府合規文書處理。在許多案例中,我都看到這種方式帶來了遠超以往的優秀成果。
在這場演講中,我還會特別著重在「視覺 AI(visual AI)」的發展,因為代理式 AI 工作流程正在幫助我們處理影像和影片資料,但這部分我稍後再談。事實上,有一些基準測試(benchmarks)似乎顯示,代理式工作流程確實帶來了更好的結果。
這裡有一個 HumanEval 基準測試(Benchmark),這是 OpenAI 使用的一個基準測試,用來衡量大型語言模型解決像這樣的程式編碼問題的能力。我們團隊也收集了一些數據,結果發現,在這個基準測試中,使用 POS K 基準指標時,GPT-3.5 模型的正確率大約是 48%;GPT-4 有了巨大的進步,正確率達到 67%。然而,從 GPT-3.5 到 GPT-4 的進步,反而還不及 GPT-3.5 在引入代理式工作流程之後的進步幅度,後者的正確率提升到大約 95%;而 GPT-4 加上代理式工作流程後的表現也明顯更好。
代理式 AI 工作流程的四大設計模式
事實上,在開發人員將代理式推理或代理式工作流程嵌入他們的應用時,我想總結出四個主要的設計模式:反思(reflection)、工具使用(tool use)、規劃(planning)、以及多代理協作(multi-agent collaboration)。
為了讓代理式工作流程不再那麼神秘,我想快速說明這些工作流程到底是什麼。我發現,代理式工作流程有時候看起來很複雜,但當你實際讀過一兩個範例的程式碼後,就會發現:「哦,原來就這樣啊,這真的很酷,但其實也沒有那麼複雜!」讓我以具體的例子快速說明反思(reflection)工作流程會是什麼樣子。
我可能會先給一個大型語言模型一個提示,設定它是一個「程式開發代理(coder agent)」角色,也許是一個輔助訊息,告訴它:「你的角色是負責編寫程式碼。」接著你可以要求它為某個任務撰寫程式碼。模型會產生一段程式碼後,我們可以將這段程式碼複製並重新貼回提示中,然後請它檢視這段程式碼並加以評論、找出問題並提出建議。
事實上,你用這種方式再次提示同一個大型語言模型,它往往可以發現一些潛在的問題,或者提供一些有用的建議來改善程式碼。接著,你可以再用這些反饋提示同一個大型語言模型,請它根據建議改寫出新版的程式碼。
同時,也預告一下接下來會講到的「工具使用(tool use)」:你還可以請大型語言模型運行一些單元測試,然後將測試回饋結果再餵給它,幫助它進一步改進。
這種反思工作流程不是魔法,不能解決所有問題,但通常能夠把原本的基礎表現拉升到更好的層級。此外,當我們提示大型語言模型去檢視自己的輸出、並利用自己的評論來改進,這也可以作為多代理規劃(multi-agent planning)或多代理工作流程(multi-agent workflows)的前奏——你可以讓同一個大型語言模型在一段對話中,有時候扮演「程式開發者」角色,有時候扮演「審查者」或「批評者」的角色,審閱並給出建議。這樣在同一個對話中,透過不同角色的設定和提示,就能讓大型語言模型時而專注編寫程式碼,時而提出有建設性的批評,結果也能帶來更好的表現。
所以這就是「反思(reflection)」這個設計模式。而第二個主要設計模式是「工具使用(tool use)」,在這個模式中,我們可以提示大型語言模型去生成一個 API 呼叫的請求,讓它自己決定什麼時候需要上網搜尋、執行程式碼,或者執行任務,比如發出客戶退款、發送電子郵件、或是叫出日曆條目。「工具使用」是一個主要的設計模式,它讓大型語言模型可以進行函式呼叫(function calls),我認為這擴大了我們透過這些代理式工作流程可以做到的事情。
接著快速說明「規劃(planning)」或「推理(reasoning)」設計模式。在這個模式下,如果你給出一個相對複雜的請求,例如「生成一張女孩正在看書的圖片」等等,那麼,一個大型語言模型——這個範例是改編自 HuggingGPT 的論文——模型可以先檢視這個需求,決定首先要使用一個 OpenPose 模型來偵測姿勢,接著再生成一張女孩的圖片,再來描述這張圖像,最後使用 TTS(文字轉語音技術)生成音訊。因此,在「規劃」過程中,一個大型語言模型會面對一個複雜的請求,然後選擇一系列需要執行的動作,按步驟完成,來實現這個複雜任務。
最後,「多代理協作(multi-agent collaboration)」則是我前面提到的設計模式。它不是僅僅提示一個大型語言模型做一件事,而是讓它在不同時間扮演不同的角色。這些模擬出來的代理彼此互動,並一起解決任務。我知道有些人可能會好奇:如果你只是在使用同一個大型語言模型,為什麼需要讓它以多代理的形式來執行?事實上,許多團隊已經證明,使用這個設計模式在多種任務上能夠帶來顯著提升的表現。
實際上,如果你讓一個大型語言模型在不同任務之間專精、交替互動,許多團隊似乎都能因此獲得更好的結果。我覺得這裡也有一個可以參考的類比:如果你在一個 CPU 處理器上運行任務,為什麼需要多個進程(process)?畢竟它們最後都是在同一顆處理器上執行。但我們發現,擁有多個進程(processes)是一個對開發者很有用的抽象方法,可以把一個大任務分解成多個子任務。我認為「多代理協作」也是同樣的道理。如果你有一個龐大的任務,那麼可以想像你雇用一群代理人,各自處理任務的一部分,再彼此互動。這種方式有時候能幫助開發者構建出複雜的系統,最終交付出很好的成果。
所以我認為,透過這四大主要的代理式設計模式——反思(reflection)、工具使用(tool use)、規劃(planning)、多代理協作(multi-agent collaboration)——它們為我們打開了一個龐大的發展空間,讓我們可以用來建構功能豐富的代理人,做出坦白說,即使是一年前都不可能做到的事情。
而其中一個讓我特別興奮的面向是,不只是基於大型語言模型的代理(large language model-based agents),而是基於大型多模態模型(large multimodal model)的代理人崛起。舉例來說,給出一張圖片,如果你想要使用 LMM(大型多模態模型),你可以做零樣本提示(zero-shot prompt),就像是叫它瞄一眼圖片,然後直接告訴你結果。對於簡單的圖片任務來說,這是可以的,你可以讓它看一張圖片,然後給出像是「這裡有幾個跑者」這樣的結果。
但事實上,就像基於大型語言模型的代理人一樣,基於大型多模態模型的代理人也可以透過一個「逐步迭代的工作流程(iterative workflow)」來做得更好。你可以一步步地處理這個問題,先偵測人臉,再偵測號碼,然後把這些資訊組合起來。透過這種更反覆的流程,你實際上可以讓一個代理人進行計劃(plan)、測試(test)、寫代碼(write code)、再計劃、再測試、再寫代碼,最後擬定出一個非常複雜的計畫,並用程式碼清楚表達出來,來實現更複雜的任務需求。
所以,我現在想展示一個示範,是由 Dan Malone、我本人以及 HAI 團隊一起合作開發的關於「視覺 AI 任務的代理式工作流程」的實作。如果我們切換到我的筆電畫面,我這裡有一張足球比賽的圖片。然後,我會說:「來數一下場上有多少球員。」順帶一提,如果你不知道該怎麼提示它,在上傳圖片之後,這個小燈泡圖示會給出一些提示範例,你可以參考。好,那我來執行這個範例:「count players on the field」(數場上有多少球員)。
這個請求會啟動一個過程,實際上會跑個幾分鐘,去「思考」如何編寫程式碼,來擬定出一個計畫,給出準確的場上球員數量。這其實有一點複雜,因為你不希望把背景裡的人也算進去,只應該計算場上的球員。我已經預先執行過這個過程,所以我直接跳到結果畫面。最終結果顯示:模型判定場上共有 7 名球員。
我想這應該是正確的,數一數:1、2、3、4、5、6、7。如果我放大來看模型的輸出結果,現在數一遍:1、2、3、4、5、6、7,的確是對的。並且,這個模型的輸出結果中也包含了它所生成的程式碼,這段程式碼你可以反覆執行。它實際上生成了 Python 程式碼,如果你想要的話,可以在大量圖像資料上重複使用這段程式碼來處理。
我覺得這很令人興奮,因為現在有很多公司和團隊,其實都擁有大量的視覺 AI 數據,手上有很多圖片和影片,只是都儲存在某處,但直到現在為止,一直都很難真正從這些資料中產生價值。而這樣的視覺代理(Vision Agent)能力,讓這些過去只被丟在物件儲存(Blob Storage)裡的數據,可以開始真正發揮價值。我覺得這對 AI 而言是一個巨大的轉變。
這裡還有另一個範例。假設我們有一段影片(又是一場足球賽),任務是:「將影片切割成 5 秒一段的短片,找到有進球的那段影片片段,並顯示那個畫面」。我之前已經跑過這個範例,因為需要一點時間來執行並評估程式碼,以下是結果的輸出:它找到進球發生在 10 到 15 秒之間。大概就是這裡,沒錯,這就是進球。並且,它也如指示般,將相關畫面抓取出來。這對於處理影片數據真的非常有幫助。
或許我再展示最後一個 Vision Agent 的範例,你也可以請它寫一段程式,把輸入影片分割成每 6 秒一段的小影片,描述每一段的內容,並將這些描述資訊儲存在一個 Pandas 資料框(DataFrame)中,裡面包含片段名稱、開始時間和結束時間,然後再回傳這個 DataFrame。這讓你可以對手上擁有的影片數據產生 metadata(中繼資料),之後你就可以將這些資料儲存在 Snowflake 等資料平台中,未來還可以建立其他應用。
這裡也給大家看一下它的輸出結果:裡面有 clip 名稱、開始時間、結束時間,然後它還寫出了可以另外執行的程式碼。如果你願意,可以把它放到一個 Streamlit 或其他前端裡,透過 Vision Agent 的幫忙來幫你寫好這些代碼。
我的團隊 Landing AI 利用 Vision Agent 的這個能力,實際上還打造了一個小型 demo 應用。我們不是自己手寫程式碼,而是讓 Vision Agent 自己產生程式碼,來建立這些 metadata,然後將大量影片的中繼資料做成索引。舉個例子,我可以在系統裡面搜尋「skier airborne」(滑雪者飛躍時刻)。我其實之前已經先執行過,希望現在也可以順利跑出來。
這個 demo 展示的就是:我們已經先透過 Vision Agent 把影片切成片段、儲存好中繼資料。當我搜尋「skier airborne」的時候,它就會顯示出最符合這個關鍵字的片段。你可以看到時間軸上標記綠色的部分,就是滑雪者在空中的時刻。真的很有趣!我還可以試另一個範例:「gray wolf at night」(夜晚的灰狼)。系統會幫我找出影片中與「夜晚灰狼」最相關的片段,綠色區域就是匹配結果。如果我跳到影片中其他部分,顯然也有其他內容,但那些不是灰狼在夜間的畫面。
真的很好玩!再舉最後一個例子——我最近常在外面旅行。如果你的行李是黑色行李箱,問題來了:現場有太多黑色行李箱了。如果我搜尋「black luggage with rainbow strap」(有彩虹織帶的黑色行李箱),系統就能夠幫我找出最符合這個描述的行李箱。可以看到,這個系統可以做出非常有趣的應用。
我覺得最棒的一點就是,開發這些應用所需要投入的工作量,比以往少非常多。
代理式協調層的崛起
回到簡報,我剛才講了一些有關代理式工作流程(agentic workflows)的內容,以及這如何正在改變 AI 的整體技術堆疊(AI stack)。在傳統的 AI 技術堆疊之上,現在其實有一個正在崛起的「代理式協調層(agentic orchestration layer)」。過去就有像 LangChain 這樣的協調框架,而這些工具也正在進化成更加「代理式」的模式,例如像 LangGraph 就是個例子。這個新的「代理式協調層」讓開發者能更輕鬆地在其上面開發出更複雜、更智慧的應用程式。
我希望 Landing AI 的 Vision Agent 能夠成為其中一項貢獻,幫助你更輕鬆地打造視覺 AI 應用,來處理你手上那些可能早就擁有、卻一直難以從中獲取價值的圖像和影片資料。不過,在離開這個主題之前,我想跟大家分享我認為現在四個最值得關注的重要 AI 趨勢。AI 的發展實在太多元,根本不可能在一張投影片上就總結所有內容;但如果你要我只能選出「最重要的一個趨勢」,我會說是「代理式 AI(Agentic AI)」。
未來 AI 的四大趨勢
但除了這個之外,還有四個我認為非常值得關注的趨勢:
第一個趨勢: 代理式工作流程需要讀取大量的文字或圖片,同時生成大量的文字內容,也就是需要產生大量「tokens(字元單位)」。現在有很多令人振奮的努力,正在讓 token 生成的速度加快,包括像是 Sova、ServiceNow、Drop.ai 等公司在半導體層級的創新,以及許多軟體和硬體層面的優化。這些進展將會讓代理式工作流程的運作變得更加流暢與高效。
第二個趨勢: 現今的大型語言模型(LLMs)最早主要是針對回答人類問題以及執行人類指令進行優化的,像是:「為什麼莎士比亞會寫《馬克白》?」或「解釋一下莎士比亞為什麼會創作《馬克白》?」這類問題是過去 LLM 最常見的應用場景。但代理式工作流程需要的是「工具使用(Tool Use)」這類的操作能力,而不只是回答問題。現在,越來越多的大型語言模型開始被專門調整成能夠支持工具操作。就在幾週前,Anthropic 也推出了一個支援電腦操作的新模型。這些發展都非常令人興奮,因為它們將顯著提升 LLM 在代理式任務中的上限,讓模型不只是回答問題,而是能夠直接融入這類反覆迭代的代理式工作流程。
第三個趨勢: 資料工程的重要性正在提升,尤其是針對非結構化資料(unstructured data)。傳統機器學習大部分的價值是建立在結構化資料上,例如表格和數字。但隨著生成式 AI 的崛起,我們現在處理文字、圖像、影片,甚至音訊的能力,比以往任何時候都更強。因此,企業需要投入更多資源在非結構化資料的管理、建立這些資料的中繼資料(metadata),以及如何部署、分發非結構化資料到正確的位置,才能創造真正的商業價值。這將會成為大型企業未來的一個重大工作重點。
第四個趨勢: 文字處理革命已經到來,圖像處理革命雖然還處於相對早期階段,但它也正快速逼近。一旦圖像處理革命全面開展,許多企業都會從自己過去難以利用的視覺資料中挖掘出極大價值。我非常興奮,因為這將會大幅拓展我們可以打造的新應用領域。
總結來說,現在是創新者最好的時代。生成式 AI 讓我們能以比過去更快的速度進行實驗,代理式 AI 更是擴大了我們能夠實現的可能性,許多以前根本做不到的應用,如今都可以被打造出來,無論是在視覺 AI 領域,或其他領域。
如果你對我剛剛示範的視覺 AI demo 有興趣的話,可以直接上網到:va.landing.ai,你可以親自體驗我所展示的 demo,還可以取得程式碼,自己下載並在自己的應用中運行。