有個AI陪你一起寫程式碼,是種怎樣的體驗?| 附ICLR論文
麻瓜慄 發自 凹非寺
量子位 出品 | 公眾號 QbitAI
從前,任何程式的任何功能,都需要一行一行敲出來。
後來,程式猿要寫的程式碼越來越多,世界上便有了各種各樣的API,來減少大家的工作量。有些功能,可以讓API來幫我們實現。
不過,人類寫下的話,API並不是每一句都能聽懂。語言不通的話,願望就無法實現。
現在,有會寫程式碼的AI可以替你召喚API。以及,它能做的並不止這些。
吃得不多,寫得不少
萊斯大學的一群極客,釋出了一個基於深度學習的程式碼編寫應用。神經網路從GitHub這樣的線上原始碼庫裡汲取養分,寫自己的程式。
這個應用叫Bayou,是在美國國防高階研究計劃局 (DARPA) 和谷歌研究院的資金支援下誕生的。
Bayou的爸爸們說,這個孩子和它的前輩不同。以前那些會寫程式的AI,都需要事先投喂大量細節,才能開始生成程式碼。有空寫好那些細節,不如自己寫個程式了。
而要支配Bayou,開發者只要給它吃一點點資訊,比如幾個小小的prompt,它就會善解人意地猜測,人類想要怎樣的程式,然後疾速補全程式碼。
△ input
舉個簡單的栗子,假設你想寫個讀取檔案的Java方法。如果你知道某個API裡面有個功能叫做readline,就可以寫出上面這樣的程式碼。
△ output
然後,Bayou便知道它要召喚的技能叫做readline,隨之為你輸出以上程式碼,只要用這段程式碼來呼叫你需要的API就可以了。
不要忘了,專門給Bayou看的部分,要標上///,以示害羞。
除了呼叫一個或者幾個API,我們還可以用API資料型別把自己的要求具體化。另外,Bayou有一個非常友好的特點,便是多模態,就算把各種不同的術語混進同一段程式碼,它也能看懂。
草圖訓練大法
畢竟,這隻AI已經從大約1500個安卓應用裡,學習了人類編寫的上億行Java程式碼。
用一種名為“神經草圖學習 (Neural Sketch Learning) ”的方法來訓練神經網路,Bayou可以給自己想要讀取的每個程式,建立一個樹狀結構的句法模型,稱作“草圖 (sketch) ”。
當有人對Bayou提出要求的時候,系統會先做一個判斷,感受一下自己要寫的程式是怎樣的。然後,就是為程式碼庫裡同型別的程式做草圖。這裡只識別high-level模式,而忽略所有low-level特徵。
在那之後,Bayou還有一個用來理解low-level細節的模組,可以自動進行邏輯推理。它會根據第一步做出的判斷,生成我們可能需要的程式碼。
哪怕問題沒有解決,Bayou給出的程式碼示例或許也能幫我們提出更合適的問題。這時候再去Stack Overflow尋求答疑,療效可能會好一些。
孩子你還小
△ 我有優秀的聚類能力
團隊認為,Bayou非常適合為各種API編寫程式碼示例。不過,現在的它並不十分成熟,還有一些侷限性。
比如,它目前支援的API非常有限,只有java.lang,java.io和Java.util。再比如,它沒辦法處理萬用字元的多種型別。
作為一隻年幼的AI,Bayou還有很長的路要走。抱著GitHub修煉的好處是,從那裡識別出的模式會比較通用;缺點是GitHub上面的專案質量參差不齊。
目前,團隊正在給Bayou增加一些自然語言處理技能,也想在使用者體驗裡增加一些互動性。
調戲Bayou傳送門:
http://askbayou.com/
論文傳送門:
https://arxiv.org/pdf/1703.05698.pdf
這是發表在ICLR 2018的論文。不過,在5月1日的溫哥華,團隊可能又要端上新版本了。
— 完 —
加入社群
量子位AI社群16群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot6入群;
此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進群請加小助手微訊號qbitbot6,並務必備註相應群的關鍵詞~通過稽核後我們將邀請進群。(專業群稽核較嚴,敬請諒解)
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話介面,回覆“招聘”兩個字。
量子位 QbitAI · 頭條號簽約作者
վ'ᴗ' ի 追蹤AI技術和產品新動態
相關文章
- 在大公司寫程式碼是一種什麼樣的體驗?
- 掃碼無憂是一種怎樣的體驗?
- 失明是一種怎樣的體驗——見
- 做大廠程式設計師是一種怎樣的體驗?程式設計師
- 被文獻坑是一種什麼樣的體驗?
- 在騰訊工作是一種怎樣的體驗?
- 在阿里安全工作是一種怎樣的體驗阿里
- 擁有智慧數字經營系統是一種怎麼樣的體驗?
- 同時拿到BATJMD的Offer是怎樣的一種體驗?BAT
- 一門心思玩爛網遊是種怎樣的體驗?
- 給“黃油”做漢化是一種怎樣的體驗?
- 這麼多人,AI怎麼知道你說的是哪個? | 李飛飛團隊CVPR論文+程式碼AI
- 為谷歌Stadia做遊戲是怎樣一種體驗?谷歌遊戲
- 跟著騰訊導師,學習寫遊戲評測是一種怎樣的體驗?遊戲
- 28歲裸辭轉行前端是怎樣的一種體驗前端
- 大牛的程式碼是這樣寫的
- 在市值破萬億美元的公司工作,是一種怎樣的體驗?
- 怎樣修改論文?
- 怎樣讀論文?
- 在一個操蛋(執行力極差)的團隊工作是一種怎樣的體驗?
- 在國企做程式設計師是怎樣的體驗?程式設計師
- 在《部落衝突》大本營吃漢堡是種怎樣的體驗?
- 打通微信和釘釘服務是一種怎樣的體驗?
- 支付寶王益:40歲寫30年程式碼是一種什麼體驗?
- 和自己的學生一起開發獨立遊戲,是種什麼樣的體驗?遊戲
- 在小公司程式設計是一種什麼樣的體驗?程式設計
- 如何寫/審AI領域的論文AI
- 有不好的體驗,才知道好的體驗是什麼樣子
- 為蘋果Arcade開發遊戲是怎樣一種體驗?蘋果開發遊戲
- 在遊戲中設計動物是怎樣一種體驗?遊戲
- 將科幻神劇《西部世界》做成遊戲是一種怎樣的體驗?遊戲
- ICLR 2020 多智慧體強化學習論文總結ICLR智慧體強化學習
- TRIZ理論是一種什麼樣的方法體系?
- 在平面國生活,會是怎樣的體驗?
- 經驗之談:程式碼該怎樣寫才能乾淨整潔
- 入職谷歌不到一年就升職是一種怎樣的體驗?谷歌
- 入職微軟三個月把老闆炒了,七個月自己跑路是一種怎樣的體驗?微軟
- 帶薪擼貓是一種什麼樣的體驗?