程式設計師飯碗不保了?GPT-3 最強應用發布,動動手指就自動寫代碼的神器來了

csdn 發佈 2020-07-20T11:26:03+00:00

大名鼎鼎的Open AI在去年DOTA2的頂級賽事TI8後,與世界冠軍OG戰隊舉行了一場表演賽,當時Open AI的強化學習模型,在英雄陣容限定17個,部分道具和功能禁用的條件下,以2:0完勝了人類冠軍,尤其是在第二場比賽中AI在15分鐘就解決了戰鬥,展現的強大實力令人信服。

作者 | 馬超

責編 | 伍杏玲

出品 | CSDN(ID:CSDNnews)

前不久OpenAI發布最新的NLP模型GPT-3,這兩天霸榜github趨勢榜:

這個模型的出現證明在AI領域的「大力出奇蹟」,GPT3使用的數據集容量達到45TB,參數個數1750億,一個訓練好的模型就要 700G的硬碟空間來存儲。

近日有開發者根據GPT-3模型上線了一個能夠自動生成代碼的網站debuid(https://debuild.co/)。在這網站註冊後,用戶只要用英語描述需求,前端代碼會自動生成。

就連筆者這種在IT界摸爬滾打十幾年的老程式設計師,在試用debuild網站後,吃驚得說不出話來。不過可能是突然壓力增大,目前該網站已關閉新增註冊的功能。

初識Open AI

大名鼎鼎的Open AI在去年DOTA2的頂級賽事TI8後,與世界冠軍OG戰隊舉行了一場表演賽,當時Open AI的強化學習模型,在英雄陣容限定17個,部分道具和功能禁用的條件下,以2:0完勝了人類冠軍,尤其是在第二場比賽中AI在15分鐘就解決了戰鬥,展現的強大實力令人信服。

這使人類在對戰遊戲中的最後一道防線,MOBA的戰略遊戲也宣告失手。其開源的強化學習模型gym(https://github.com/openai/gym)是業界較認可的遊戲類模型包。翻開Open AI(https://www.openai.com/)的網址,你會發現他們除了做遊戲AI,還做這種自動玩魔方的機器人:

雖然NLP好像不是Open AI最為關注的領域,不過他們在自然語言處理方面成果一直引人關注。在去年底《權利的遊戲》全面爛尾後,有人使用模型GPT-2 來重寫劇本的結局。網友普遍反應AI改寫的新結局比電視劇的版本要好。

自然語言處理髮展歷程

機器學習的本質是通過找到結果與多維輸入之間的關係來進行預測,計算機是沒有辦法處理語言的,所以需要將自然語言轉換為向量才能進行機器學習。

在本輪AI行業全面爆發之初,行業還並未找到將單詞轉為向量的好辦法,所以自然語言處理方面的程序一直比較慢,直到Word to Vector出現。

word2vec出世:在這項技術發明之前,自然語言處理方面的應用基本是依靠專家制訂語法規則,交由計算機實現的方式來推進。

word2vec的核心理念是一個單詞是通過其周圍的單詞來定義,word2vec算法通過負例採樣暨觀察一個單詞不會和哪些單詞一起出現;跳字處理暨觀察一個單詞周圍的單詞都有哪些,來完成單詞到向量的轉化過程。將單詞轉化為向量也被稱為詞嵌入的過程,從而讓自然語言處理變成一個能讓計算機自動執行的過程。

一個好的詞嵌入模型要滿足兩個條件一是詞義相近的單詞在空間上的距離要近,比如七彩虹、銘宣、影馳等顯卡品牌對應的向量應該在詞空間中的距離比較相近。二是有對應關係相同的單詞對應向量的減法結果相等,比如v(中國)-v(北京)=v(英國)-v(倫敦)。

word2vec加速自然語言處理的發展速度,GPT、BERT、XLNET等模型相繼被提出,雖然他們的流派有自編碼和自回歸的不同,但是對傳承詞嵌入思想的繼承還是比較一致的,這些模型都是在不藉助語法專家的知識庫的情況下,直接利用詞與詞之間的關係來進行模型訓練。

自回歸模型:GPT系列都是典型的自回歸架構的自然語言處理模型。通俗地講,自回歸使用自身做回歸變量的過程,一般說來記為以下形式:

自回歸模型假定t時刻的序列(Xt)可以利用前期若干時刻的隨機變量的線性組合來描述。

什麼是自然語言處理中的因式分解?先複習一下貝葉斯公式,它描述隨機事件 A 和 B 的條件機率,其中P(A|B)是在 B 發生的情況下 A 發生的可能性:

將I、love、you三個單詞分別對應向量:X_1、X_2、X_3,如果要建模「I love you」這句話,就要通過貝葉斯公式解出,在自然數據這個序列出現的聯合機率分布 P(X_1,X_2,X_3)。

由於詞語之間的相互聯繫,除了統計P(X_1)、P(X_2)、P(X_3)三個機率是不夠的。因為X_1還依賴其它變量存在條件分布 P(X_2|X_1) 和 P(X_3|X_1)。對於X_2和X_3也是一樣,我們可以將這三個模型組合起來獲得期望聯合分布 P(X_1,X_2,X_3)=P(X_1)P(X_2|X_1)P(X_3|X_1,X_2)

一般來說,變量的每個可能的排序都存在自回歸因式分解。在有N個變量的問題中,就存在 N! 個因式分解。在上面提到的三個變量的例子中,我們可以列舉出六個自回歸因式分解,當然在AR模型中都考慮了順序信息,不會計算所有的因式分解:

自回歸的局限:自回歸模型其實就是通過貝葉斯因式分解的方式來計算輸入序列的機率密度。那麼其劣勢也就比較明顯了,由於輸入序列有方向性,所以自回歸只能處理正向或者反向單向信息。

GPT-3的應對之道

GPT-3的作者在論文開頭就指出,通過對大量文本進行預訓練,針對特定任務進行微調,模型的性能可以在許多 NLP 任務以及基準測試中獲得顯著提升。

如圖所示,X軸代碼模型的參數數量級而縱軸代表準確率,模型規模越大,準確率也會隨之升高,尤其是在參數規模達到13億以後,準確率提升的速度還會更快。簡單講,GPT-3的決勝之道在於其模型的訓練集特別大,參數茫茫多。

GPT-3與 GPT-2使用了相同的模型和架構,包括改進的初始設置、預歸一化和 reversible tokenization。

GPT-3最主要提升點在於其在transformer的各層上都使用了交替密集和局部帶狀稀疏的注意力模式。

我們知道理解自然語言需要注意最相關的信息。例如在閱讀過程中,人們傾向於把注意力集中在最相關的部分來尋找問題的答案。然而如果不相關的片段對閱讀理解產生負面影響,就會阻礙理解的過程,理解過程需要有效的注意力。

這一原理同樣適用於自然語言的計算系統。注意力一直是自然語言理解和自然語言生成模型的重要組成部分。因此交替密集和局部帶狀稀疏的注意力模式只關注k個貢獻最大的狀態。通過顯式選擇,只關注少數幾個元素,與傳統的注意方法相比,對於與查詢不高度相關的值將被歸0。

代碼自動生成網站Debuild可能並不在Open AI的計劃當中,如果繼續向前推進使得產品經理的需求描述,直接變成可執行的全套代碼,其顛覆性是我們根本無法想像的

目前已經有消息稱Open AI已經開始關注GPT-3有可能引發的道德風險了,不過筆者認為大的趨勢不可阻擋,也許AI會先「革了」程式設計師的飯碗,把程式設計師的工作完全替代?或許。

對這個代碼自動生成網站,你有什麼看法?歡迎來留言討論哦。


由 Apache 說開,中國開源項目已經走向世界!

點分享

關鍵字: