文章專區

2023-07-07揭密ChatGPT、Midjourney 生成式AI如何學習再進化? 643 期

Author 作者 蔡炎龍/政治大學應用數學系副教授,專長為代數 幾何及深度學習。近年來致力推廣Python 程式語言及人工智慧教學。(本篇圖片皆由作者提供)

Take Home Message
● 深度學習的概念為將實務問題轉化成函數,再用神經網路打造出函數學習機,並學會此函數。
● ChatGPT 等文字生成AI 的設計原理為輸入前一個字之後,AI 會預測下一個字,再將預測的字加入指令(prompt)、再預測下一個字,藉此生成文章。
● Midjourney 等圖像生成AI 的原理則應用了「自編碼器」:輸入一張圖,經過神經網路一層層的編碼、解碼之後再將圖像輸出。


這幾個月以來,美國研究型非營利公司OpenAI 開發的文字生成式AI(generative artificial intelligence, GAI)ChatGPT 以及各種圖像生成AI,例如Stable Diffusion、Midjourney 等都廣受歡迎,生成式AI也成了非常熱門的主題。大家最近可能也常聽到一個名詞⸺AIGC(AI generated content),顧名思義就是由AI 生成的內容,無論是文字、影像或音樂等內容皆透過生成式AI 產出。

以簡單的例子比喻,生成式AI就是讓電腦「創作」。雖然這件事聽起來有點神奇,但其實原理可能比想像中簡單。在開始說明生成式AI 的原理之前,先來談談到底如何讓電腦生成文字、圖像,或是任何一種創作。

 

讓電腦知道該學什麼

首先,我們需要回顧一下深度學習(deep learning)的基本精神。深度學習只能做到一件事情:把實務的問題化成一個函數,然後用神經網路(neural network)技術打造一個函數學習機,並學習這個問題化成的函數。

我們以製作「八哥」的辨識模型為例。如果想要打造一個能辨識出臺灣三種常見八哥⸺原生種八哥(Acridotheres cristatellus,俗稱土八哥)、外來種白尾八哥(Acridotheres javanicus)、外來種家八哥(Acridotheres tristis)的模型,我們可以設計一個函數,在輸入一張八哥的照片後,函數會輸出三個分數,分別代表電腦判斷這張八哥照片是哪一種八哥的可能性,如果土八哥的得分最高,那麼AI 模型就會判斷這張圖片中的鳥是土八哥(圖一)。還可以使用softmax 函數讓三個分數加起來等於1,例如讓函數輸出這張圖片為「土八哥的機率是15%、白尾八哥的機率是25%、家八哥的機率是60%」。

 

圖一、臺灣三種常見八哥的辨識模型。
只要輸入一張八哥的照片後,就會輸出三個分數,
代表電腦判斷這張八哥照片是哪一種八哥的可能性。
在這個例子中,輸入照片是土八哥的可能性最高。


不過在使用這類模型時有件事一定要注意,那就是AI 其實並不知道這是八哥!它甚至不知道這是一隻鳥。我們輸入的照片對AI 而言只是一筆數據,它僅是根據過去的訓練,認為收到這樣的數據後,應該要輸出這是得分最高的土八哥(圖二)。後面會講到的ChatGPT 也是同樣的模式,它只是根據學習的經驗,覺得應該輸出第87 號或第52 號字等。

 

圖二、如果家八哥的得分最高,AI 模型就會判斷這張圖片中的鳥是家八哥。
不過AI 不知道這是八哥,它僅只是根據過去的圖片訓練,
覺得收到這樣的數據,應該要說出這是3(也就是家八哥)。


文字生成的AI

深度學習基本上就是個函數,最重要的是知道輸入了什麼(如八哥的照片)、輸出的是什麼(如代表數據類型的三個數字)。那文字生成的AI 模型該怎麼設計呢?答案可能是出乎意料的簡單⸺只要輸入前一個字,就預測下一個字!

文字生成模型的作用方式就是當你輸入一段指令(prompt),也就是大家說的「咒語」,就能產生下一個字。若把這個字再加到咒語中,就會再產生下一個字。以此類推,便可以產生一段很長的文字。

不知道讀者看到這裡有沒有覺得哪裡有點奇怪,我們的模型明明只是「輸入一個字,輸出一個字」,為什麼能輸入一整段咒語呢?原來這動用了有「記憶」的神經網路模型,例如傳統使用的是循環神經網路(recurrent neural network, RNN),而現在比較流行的則是「transformers」。簡單的說,這種「輸入一個字、預測下一個字」的模型,輸入並不只是一個字,也包括前面看過字的「記憶」。於是這個模型就會看完「前面的一串字」、預測下一個字,把預測的字加入咒語、再預測下一個字。以此類推,就可以生成出長篇的文章(圖三)。

 
圖三、文字生成的AI 模型設計原理,輸入前一個字之後便預測下一個字。


你可能會懷疑,這樣簡單的模型真的有用嗎?……【更多內容請閱讀科學月刊第643期】