當前位置:
首頁 > 新聞 > AI搶程序員工作:2040年AI可能代替程序員

AI搶程序員工作:2040年AI可能代替程序員

AI搶程序員工作:2040年AI可能代替程序員



新智元報道

來源:綜合codeburst等

編譯:肖琴

【新智元導讀】美國橡樹嶺國家實驗室的一些專家預測,到2040年,AI技術將會強大到足以替代程序員。不過,即使機器能夠完全代替今天程序員所做的工作,但這並不意味著它們不需要人類的幫助。

AI搶程序員工作:2040年AI可能代替程序員

程序員以及其他類型的IT工作無疑是當前最熱門的工作。然而,這種趨勢可能不會一直持續下去。

美國橡樹嶺國家實驗室的一些專家預測,到2040年,AI技術將會強大到足以替代程序員,AI編寫軟體將比人類程序員更好、更快。換句話說,軟體編寫的軟體比人類編寫的更好。

這是怎麼發生的?AI能真正學會如何做需要高度創造性的智力工作嗎?畢竟創造性一直被認為是人類特有的。AI能學到的東西會比我們教它的更多嗎?


利用人工神經網路制定編寫規則

人工神經網路是一種試圖模仿人類大腦學習機制的技術。它啟發自真實的神經網路,並且部分地模擬真實的神經網路。我們可以試著把人類的神經系統想像成一台非常強大的計算機。

AI搶程序員工作:2040年AI可能代替程序員

在上面這幅圖中,每個神經元都有一個輸入和輸出,輸入實際上是一系列信號的加權組合。每個信號都有自己的數學上可表達的影響,信號的總和決定了輸出。人類神經網路的特殊之處在於,它們能夠基於學習和經驗進行適應和改變,這意味著相同的輸入並不總是產生相同的輸出。

這是通過改變不同脈衝的優先次序和修改神經元之間的物理連接來完成的。這些變化通過學習演算法和成本函數來指定,以提高人類適應新環境和優化未來行為的能力。

研究人工神經網路的科學家和工程師試圖複製這種機制,並在軟體開發中實施。具體地說,這意味著軟體不會以傳統的方式編寫,比如一系列的「if… then」規則。從理論上講,我們可以想像通過漸進式學習和優化的過程,人工神經網路能夠學習如何制定(或「編寫」)規則,從而得到比人類編寫的更好的輸出。在AI科學中,這被稱為深度學習,通常在一定程度上依賴人類的反饋。

AI搶程序員工作:2040年AI可能代替程序員

以下是幾個可以代替程序員的應用程序。


Karpathy:利用循環神經網路自動生成代碼

早在2015年,當時是斯坦福大學計算機科學博士生的Andrej Karpathy就使用循環神經網路來生成代碼。他使用了一個Linux存儲庫(所有的源文件和 headers files),將它合併成一個巨大的文檔(超過400 MB的代碼),並用這些代碼來訓練RNN。

他讓系統跑了一晚上。第二天早上,他得到了這個:

AI搶程序員工作:2040年AI可能代替程序員

AI生成的代碼樣本

從字面上來看,AI生成的代碼包含函數和函數裝飾。它有參數、變數、循環和正確的縮進形式。括弧有開括弧和收括弧,甚至還有注釋。

在這些代碼中,AI當然也犯了一些錯誤。有時變數從未被使用。其他時候,有些變數沒有更早定義。但Karpathy對這個結果感到滿意。

「這些代碼總體上看起來非常棒。當然,我不認為它會編譯,但是當你瀏覽生成的代碼時,它感覺非常像一個巨大的C代碼庫,」Karpathy在他的博客中寫道。

這個項目在GitHub上可以找到。它使用了Torch7 的深度學習庫。這裡有Karpathy得到的整個輸出文件:

https://github.com/karpathy/char-rnn

DeepCoder

微軟和劍橋大學的研究人員開發了一種可編寫代碼的機器學習系統,被稱為DeepCoder,它具有學習的能力。

DeepCoder可以在龐大的代碼庫中進行檢索,然後編寫有效的代碼。DeepCoder 所用的技術叫程序合成( program synthesis),通過截取已有軟體的代碼行來組成新的程序。不得不承認,當下很多程序員也是這樣做的。通過學習一系列代碼片(code fragment)的輸入和輸出數據,DeepCoder 能自動摘取出對目標任務有用的代碼片。

DeepCoder 可以在一秒鐘之內寫出能夠跑通的程序。隨著 DeepCoder 的編程經驗增加,其分辨有用及無用的代碼片的能力增加,其生成程序的速度將會越來越快。

這並不意味著AI是在竊取代碼,或者從現有軟體複製粘貼代碼,或者在互聯網上搜索解決方案。DeepCoder的作者期望它將在不久的將來參與編程競賽。

AI搶程序員工作:2040年AI可能代替程序員

由DeepCoder創建的域特定語言(DSL)示常式序

DeepCoder 的創造者之一,在劍橋大學參與微軟研究項目的 Marc Brockschmidt 表示:「該程序最終可以讓非編程人員通過向計算機描述自己的程序構想來獲得想要的程序,系統會自動寫就。」

你可以在這裡找到DeepCoder的文檔:

https://openreview.net/pdf?id=ByldLrqlx


AI編寫Python代碼

一名法國工程師以BenjaminTD的昵稱發表了一篇博客文章,解釋了自己是如何「教一個AI系統如何用Python代碼編寫Python代碼」。

他使用了長短期記憶網路(LSTM),這是最流行的遞歸神經網路結構之一。他用大量的Python代碼(使用Pandas、Numpy、Scipy、Django、Scikit-Learn、PyBrain、Lasagne、Rasterio等庫)來「餵給」這個網路。組合文件大小有27MB。

然後,AI生成了自己的代碼。下面是定義初始化:

AI搶程序員工作:2040年AI可能代替程序員

...使用布爾表達式:

AI搶程序員工作:2040年AI可能代替程序員

...並創建數組:

AI搶程序員工作:2040年AI可能代替程序員

如果仔細觀察數組,你會發現有一個語法錯誤。BenjaminTD的代碼遠非完美,但是他認為,對於一個只是從閱讀示例代碼中學習的網路來說,這些代碼看上去不錯。


AI Programmer

2017年 ,來自彭博和英特爾實驗室的研究人員號稱實現了首個能夠自動生成完整軟體程序的 AI 系統 「AI Programmer」。

AI搶程序員工作:2040年AI可能代替程序員

AI Programmer 利用機器學習中的遺傳演算法,模擬複雜的指令。雖然現在 AI Programmer 生成的程序,複雜程度與人類新手程序員編寫的結果相當。但研究人員認為,AI Programmer 編寫的程序完全可以超越傳統範疇,不受人類時間和智慧的局限。

AI搶程序員工作:2040年AI可能代替程序員

AI Programmer 的軟體架構。從圖中可見,由人類驅動的部分非常少,只需要在開始輸入指令,最後接收適用於某項任務的函數即可,剩下部分全部由機器完成。

研究人員表示,他們能用 AI Programmer 生成很多軟體程序。下表是所生成程序的名單。

AI搶程序員工作:2040年AI可能代替程序員


潛在的威脅:不確定機器能做到什麼程度

現在已經有程序可以代替人類了,但隨之而來的問題是,如果機器能夠自己學習,他們能學到多少?極限在哪裡?這個優化的過程真的能教軟體比人更好地寫代碼嗎?網站開發機構和軟體公司是否會利用AI驅動的程序為自己編寫代碼,以節省資金?事實是,我們還不確定機器能做到什麼程度。

但是,我們知道人工智慧已經在影響IT行業的一些工作。印度軟體諮詢和外包公司Wipro Ltd.自去年6月以來使用AI平台Holmes來維護軟體,其3000多名工程師因此擔心他們的工作。更不用說,我們經常使用的許多技術都採用機器學習技術——從語音識別到機器翻譯。


AI和人類程序員將在編程中扮演互補的角色

人工神經網路的一個問題是它們使用的演算法是「黑盒」,這意味著它們內部的工作方式太過複雜。特斯拉的AI總監Andrej Karpathy認為,對於大多數應用領域,我們永遠無法得到完全由AI驅動的100%精確的模型。他認為AI系統的準確率將超過90%,但它們並不完美,它們偶爾會以出人意料的方式失敗。

一般來說,有監督和有人控制的深度學習系統比無監督的系統表現更好。這意味著,即使是最複雜的AI軟體也需要人類的參與和反饋,以學習和適應新的環境。這個事實為未來人工智慧和人類程序員之間的緊張關係提供了一種解決方案——共同工作。

AI搶程序員工作:2040年AI可能代替程序員

我們可以肯定的是,在不久的將來,AI和人類程序員將在編程中扮演互補的角色。AI的工作可能是處理重複性的、耗時的任務,這些任務需要機器優異的精確性。機器可以避免由於人為因素而產生的語法錯誤或設計錯誤。例如,AI可以提供幫助的一種方式是自動完成功能,程序員只編寫一小部分代碼,然後AI識別程序員的意圖,並完成剩下的代碼,從而為人類節省大量的工作。

即使機器能夠完全代替今天程序員所做的工作,但這並不意味著它們不需要人類的幫助。但程序員必須將注意力從編寫程序轉移到監控AI的性能,並將數據「餵給」AI。正如Karpathy所指出的,程序員可能會成為一種數據加持者——收集、整理和分析數據,然後將它們用作AI的輸入,然後讓AI完成剩下的工作。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

中國芯破局最關鍵:上游EDA商業模式創業才能打破國外壟斷
入門必備:史上最全的深度學習資源匯總,速藏!

TAG:新智元 |