A little test on ChatGPT by OpenAI.
前言
先講結論,真的要自己玩過才知道有多厲害(廣泛度、精準度、應對流暢)。
近期OpenAI釋出了ChatGPT的試用功能,開放全球公測,一起來Debug!讓這個AI更好用更安全!(以下英文為官方說法)
Free Research Preview: ChatGPT is optimized for dialogue. Our goal is to make AI systems more natural to interact with, and your feedback will help us improve our systems and make them safer.
正當我這麼以為的時候,就在推特上看到這則消息:
居然有這麼潮的能力? 我對聊天機器人的理解還停留在自然語言處理 + 弱AI的題庫式應答的類型,腦海中對於如何判讀程式碼(正確與否的判別模型)以及給出正確的修正(產生對應正確內容的生成模型)到底怎麼做完全沒有想法。
註: 什麼是強AI/弱AI : 參考內容
我的測試方向:
- 多語言
之前製作問答機器人時,其中一個瓶頸就是不同語言的句法結構根本不同,想要讓問答機器人同時兼備不同語法,勢必要針對不同語言製作不同的演算法。(如果是中文,要用A演算法分析語句,如果是英文,要用B演算法分析…)
但之前製作的並非是使用機器學習去判讀文法就是了…(當時對機器學習的理解程度還不知道可以怎麼理解語句) - 記憶性
根據上面的流程圖可以發現,每次新的問題都是進問題庫找相似的問題的話,那就沒辦法處理連續問題了(沒有記憶力)。尤其是想要製造像人的聊天AI,若是發現對方前後不一致,馬上就出戲了;若是作為問答機器人,也會沒辦法處理追加需求(實務裡面常常會有這種狀況…遊客/客人提出了一個問題之後,馬上追加條件的)。 - 話題廣泛度
這個當然就是比誰的訓練資料口袋深啦xD 挺好奇openAI此次推出的做到了什麼程度。
目前根據官方網站的sample,OpenAI已經具備了幾個特殊能力
(1) 程式碼判讀能力
(2) 記憶性,可以針對前後文做連續性的對話。(可以在使用者初次詢問冒犯性問題時拒絕,但當使用者澄清意圖時,再次回應;可以對於使用者追加的詢問,追加答案於原本的回應中)
接下來就直接試試看吧xD
測試開始!!
多語言
一上來我劈頭就問怎麼處理多種語系的,沒想到AI給的答案很誠實
看來是使用了一個叫做Transformer的技術去分析語句,可以跨語系處理。太久沒看機器學習的東西xD有興趣的再研究看看。
簡單理解的話,最早的RNN技術可以讓AI在神經網路中帶有前一段時間的資訊,但效果在語句長、跨幅遠的情況下會劇烈下降;後續推出的Attention模型,優化了文字長時,對於語句的理解;而Transformer的結構則是打破語句的連續性的依賴問題,直接將每一個語句視為獨立的,去計算彼此之間的距離。
關於Transformer技術介紹: https://zhuanlan.zhihu.com/p/48508221
2. 前後記憶性
這邊我請AI設計看看遊戲中的紅點系統:
但因為程式碼中沒有支援刷新紅點的功能,我又加了一句:
絲滑地把新的需求給補上去了!? 後續這邊的需求加加減減,橫跨了三個語句,給過給過。
3. 話題廣泛度
我問了如果我是國小生,我閒暇時可以幹嘛
臨時想到隨意問問的,沒想到…居然連這種都給得出答案xD 雖然從中看不出針對"小學生"的部分,於是我換了一個問法:
如果我是大學專攻資訊工程的學生,我閒暇時可以幹嘛?
哇喔,針對資訊工程給出了建議學習新的框架,也針對大學生部分給予參與社團(而且這個建議3.同時結合了資訊工程的資訊…看來室友同時抓到兩個要素阿)
結論
- 擁有廣大的訓練資料,對於各種品類的問題皆有涉獵。
這邊就要探討到訓練資料產生的方式,因為訓練資料很大決定了模型的品質: 其實官方網站就有給出了訓練的方法。
以GLP-3模型(前身)來說,就利用了45 TB 的文字檔案(包含Wikipedia and books等等…,一個收錄書本語句的語料庫),這個數據我只有一個好大的感覺的概念了XD不知道ChatGPT是否用了更多?
第一個紅框:首先他基於舊有的問題庫,讓專家去給予新的答案(更優良的回應),也就是說透過專家,讓ChatGPT擁有對於特定題目,有更優良的產生答案的能力,這一步需要多少資料…難以想像。
(12/10 補充 據網友所述,作者似乎回應僅有使用約千條左右的標籤而已…果然對我來說難以想像XD)
第二個紅框:接著蒐集ChatGPT對於一個問題的數個回答,讓專家去做評分,形成一個評分的公式。
第三個紅框:讓ChatGPT去回答問題,並基於第二個紅框的評分公式,去做強化學習,逐漸優化ChatGPT的回答能力。
不知道這部分的調優佔了多少比例,但簡單說就是,ChatGPT在產生的答案,以及判斷哪個答案比較好,都有專人給予的人工回答介入訓練過程。
2. 確實具備前後邏輯連貫性。
3. "暫時”不具備聯網並即時更新的功能,雖然需要靠人力去更新思維能力,但我想也意味著穩定與可控性,不會學習到非預期的壞習慣內容。
以目前來說,作為一個解惑型的AI,確實是挺強大的,透過專家資料去限制實際回應的內容方向、可以理解前後文、甚至可以給予完整結構的程式碼…彷彿就是一個三觀極正的家教老師啊,拿來陪小朋友應該很讚xD有什麼就問,然後又是在限縮的安全範圍內,不怕教壞小朋友。
後話
至於這個會不會取代工程師、寫手、藝術家?我想在AI可以儲存海量記憶前,應該是沒辦法xD
假設我今天要請工程師設計一個商城系統,以下是我跟AI的對話 :
我: 請幫我設計一個商城系統。
AI : 好的,以下程式碼包含了 購買、派獎、扣款功能。
但這樣子沒有經過Server驗證阿,萬一玩家修改client端資料怎麼辦?
我: 請幫我新增與Server驗證的功能。
AI:
n this modified version of theBuyItem
function, a request is sent to the server to check the legality of the order before proceeding with the purchase. TheSendOrderRequest
andWaitForServerResponse
functions are not implemented in the code above, but they would be responsible for sending the request to the server and waiting for a response. If the server indicates that the order is legal, the purchase is completed by subtracting the item's price from the player's gold and delivering the purchased item to the player. If the server indicates that the order is not legal, or if the item is not available, the purchase is not completed and the function returnsfalse
. You can modify this code to fit the needs of your game.
AI果然幫我新增了與Server驗證的功能,但並沒有實作內容,重點在最後一句話:"你可以修改這段程式碼來符合遊戲的需求"。在沒有充分的背景知識(我們的遊戲需要做Server驗證嗎? 要用什麼方式驗證? 需要哪些資料驗證?),沒辦法實作出完整的內容,僅僅只能得到一個很粗略的框架,也是理所當然的。
除非AI有辦法知道並記憶當前情境的需要的所有參數、規格,並透過與設計師問答,補資訊進去(我們需要的安全程度、需要哪些資料去處理安全性、Server後端是使用什麼架構),才有可能替我們寫出可以使用的內容。但即使如此,還是沒辦法取代人。因為現階段AI還沒有辦法從我們給的訊息,決策出最適合的規格是什麼,還是要有程式經驗的人,根據企劃需求,去判別出適合的規格。
有一個只需要給需求,就可以清楚實作規格的對象,比起要不斷自己爬資料、確認後台框架,然後全部輸入給它,還要判斷它給的是不是可以用的AI好用太多了不是嗎?