看看函數名和註釋,AI就能自動生成代碼,程序員:這不真實,我要失業

點擊上方“視學算法”,選擇加"星標"或“置頂”

重磅乾貨,第一時間送達

本文轉載自:機器之心 

參與:張倩、Racoon X、Jamin

你有沒有想過,有一天,碼農是不需要寫代碼的。你只需要提供函數簽名和註釋,代碼就能自己在屏幕上打出來。「搬磚碼農可以都辭退了,留下項目經理提需求即可,大霧!

上面這段 demo 是不是看着很爽?這就是 OpenAI CEO Sam Altman 剛剛介紹的最新研究成果——根據函數簽名和註釋,利用語言模型自動生成 Python 代碼。這個語言模型用到了和 OpenAI 的 GPT 模型相同的無監督技術。

爲了讓模型學會「寫代碼」,研究人員在微軟的超級計算機上,藉助數千個開源 GitHub 庫裏的代碼對該模型進行了微調。

先來看一下生成效果。

研究人員首先展示了一個較爲簡單、使用 Python 編寫回文檢測的例子。迴文指的是「正讀反讀都能讀通的句子」,例如:「anna」、「level」等。下面是使用該模型自動生成的代碼:

可以看到,在你輸入了函數簽名和註釋之後,模型正確地生成了迴文檢測的代碼。當然,對於迴文檢測,我們也可以用如下更「秀」的遞歸方法來實現:

看到這裏,也許大家並沒有對該模型的效果感到很驚豔,畢竟像迴文檢測這類基礎任務的代碼網上一抓一大把,模型大可以直接從訓練集中複製過來即可。

先彆着急,咱們繼續往下看。

接下來,研究人員要求模型生成從一個列表中查找長度不少於 7 個字符的代碼,而且該任務並沒有在訓練集中。我們來看看在這樣的情況下,模型表現如何:

還是出色地完成了任務!

從這個例子我們可以確定,模型不是簡單地複製網上的現成代碼,而是依據函數名及相關注釋產生了對應的解決方案,它甚至還使用了之前生成的代碼。

試過了單一函數的例子,研究者還展示了其在類中的運行效果。

這次的任務是計算商品的總價格,並對名稱是迴文的商品打折。我們來看一看該模型生成的代碼:

模型自動地爲我們生成了計算商品總價方法的註釋及對應代碼。然而這並不是我們想要的結果,我們只想要對名字是迴文的商品打折,而不是對所有商品都打八折。研究人員之後修改了該方法的註釋,詳細描述了想要實現的功能。修改註釋後,該模型生成的代碼如下:

可以看到模型幾乎生成了我們想要的結果。這裏僅有一個小問題,我們想要對迴文名稱的商品打八折,而不是打二折,簡單修改一下即可。

最後研究者展示了讓模型生成購物收據的結果:

OpenAI 的介紹視頻

OpenAI 放出的 demo 的確驚豔,甚至是革命性的。如果照這個思路走下去,以後簡單的「搬磚工」似乎都不需要了。但問題也出在這兒:效果未免太驚豔了,讓人不禁懷疑是否存在造假或精心挑選……

不過也有人說,「這可是 OpenAI!他們的口袋裏有的是好玩意兒。」

那麼,如果這是真的,對程序員來說意味着什麼?

程序員的未來何去何從?

在 AI 領域,每種新鮮技術的出現似乎都會掀起一番「XX 從業者是否會被 AI 取代」的討論,這次也不例外。

首先,這種工具的出現所帶來的效率提升是毋庸置疑的。我們假設這個 demo 是沒有摻水的,那麼公司可能會出於成本的考慮裁掉一些初級碼農,用一個碼農來充當「審碼員」,完成原來十個碼農的工作。

也有人認爲,就目前這個模型來討論程序員是否會被取代未免有點超前。首先,這還只是一個語言模型,即使在非常簡單的函數中也可能出錯,更別說遇到比較難以理解的自然語言註釋語句了。這時候,還是需要人來介入。

其次,這一流程中用到的「註釋」還不是需要人來寫嗎?

但也有人認爲,這些都可以通過時間和技術來解決:總有一天,模型犯的錯誤會越來越少,甚至少於檢查代碼的那個人類。

或者你再訓練一個模型來寫單元測試,然後不斷對其進行改進,直到它可以給出大部分時候合理的解決方案。

當然,這些都是一些非常超前的假設,現在的技術還很難做到,真正應用起來也會有各種各樣的問題。但回想起 19 世紀初期大批紡織工人的命運,這種討論還是很有意義的。

參考鏈接:https://www.reddit.com/r/MachineLearning/comments/gnmjki/dn_microsoft_demos_language_model_that_writes/

歡迎給我"在看"!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章