0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用人工神經(jīng)網(wǎng)絡(luò)制定編寫規(guī)則

DPVg_AI_era ? 來(lái)源:未知 ? 作者:李倩 ? 2018-05-30 17:06 ? 次閱讀

美國(guó)橡樹嶺國(guó)家實(shí)驗(yàn)室的一些專家預(yù)測(cè),到2040年,AI技術(shù)將會(huì)強(qiáng)大到足以替代程序員。不過(guò),即使機(jī)器能夠完全代替今天程序員所做的工作,但這并不意味著它們不需要人類的幫助。

程序員以及其他類型的IT工作無(wú)疑是當(dāng)前最熱門的工作。然而,這種趨勢(shì)可能不會(huì)一直持續(xù)下去。

美國(guó)橡樹嶺國(guó)家實(shí)驗(yàn)室的一些專家預(yù)測(cè),到2040年,AI技術(shù)將會(huì)強(qiáng)大到足以替代程序員,AI編寫軟件將比人類程序員更好、更快。換句話說(shuō),軟件編寫的軟件比人類編寫的更好。

這是怎么發(fā)生的?AI能真正學(xué)會(huì)如何做需要高度創(chuàng)造性的智力工作嗎?畢竟創(chuàng)造性一直被認(rèn)為是人類特有的。AI能學(xué)到的東西會(huì)比我們教它的更多嗎?

利用人工神經(jīng)網(wǎng)絡(luò)制定編寫規(guī)則

人工神經(jīng)網(wǎng)絡(luò)是一種試圖模仿人類大腦學(xué)習(xí)機(jī)制的技術(shù)。它啟發(fā)自真實(shí)的神經(jīng)網(wǎng)絡(luò),并且部分地模擬真實(shí)的神經(jīng)網(wǎng)絡(luò)。我們可以試著把人類的神經(jīng)系統(tǒng)想象成一臺(tái)非常強(qiáng)大的計(jì)算機(jī)。

在上面這幅圖中,每個(gè)神經(jīng)元都有一個(gè)輸入和輸出,輸入實(shí)際上是一系列信號(hào)的加權(quán)組合。每個(gè)信號(hào)都有自己的數(shù)學(xué)上可表達(dá)的影響,信號(hào)的總和決定了輸出。人類神經(jīng)網(wǎng)絡(luò)的特殊之處在于,它們能夠基于學(xué)習(xí)和經(jīng)驗(yàn)進(jìn)行適應(yīng)和改變,這意味著相同的輸入并不總是產(chǎn)生相同的輸出。

這是通過(guò)改變不同脈沖的優(yōu)先次序和修改神經(jīng)元之間的物理連接來(lái)完成的。這些變化通過(guò)學(xué)習(xí)算法和成本函數(shù)來(lái)指定,以提高人類適應(yīng)新環(huán)境和優(yōu)化未來(lái)行為的能力。

研究人工神經(jīng)網(wǎng)絡(luò)的科學(xué)家和工程師試圖復(fù)制這種機(jī)制,并在軟件開發(fā)中實(shí)施。具體地說(shuō),這意味著軟件不會(huì)以傳統(tǒng)的方式編寫,比如一系列的“if… then”規(guī)則。從理論上講,我們可以想象通過(guò)漸進(jìn)式學(xué)習(xí)和優(yōu)化的過(guò)程,人工神經(jīng)網(wǎng)絡(luò)能夠?qū)W習(xí)如何制定(或“編寫”)規(guī)則,從而得到比人類編寫的更好的輸出。在AI科學(xué)中,這被稱為深度學(xué)習(xí),通常在一定程度上依賴人類的反饋。

以下是幾個(gè)可以代替程序員的應(yīng)用程序。

Karpathy:利用循環(huán)神經(jīng)網(wǎng)絡(luò)自動(dòng)生成代碼

早在2015年,當(dāng)時(shí)是斯坦福大學(xué)計(jì)算機(jī)科學(xué)博士生的Andrej Karpathy就使用循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)生成代碼。他使用了一個(gè)Linux存儲(chǔ)庫(kù)(所有的源文件和 headers files),將它合并成一個(gè)巨大的文檔(超過(guò)400 MB的代碼),并用這些代碼來(lái)訓(xùn)練RNN。

他讓系統(tǒng)跑了一晚上。第二天早上,他得到了這個(gè):

AI生成的代碼樣本

從字面上來(lái)看,AI生成的代碼包含函數(shù)和函數(shù)裝飾。它有參數(shù)、變量、循環(huán)和正確的縮進(jìn)形式。括號(hào)有開括號(hào)和收括號(hào),甚至還有注釋。

在這些代碼中,AI當(dāng)然也犯了一些錯(cuò)誤。有時(shí)變量從未被使用。其他時(shí)候,有些變量沒有更早定義。但Karpathy對(duì)這個(gè)結(jié)果感到滿意。

“這些代碼總體上看起來(lái)非常棒。當(dāng)然,我不認(rèn)為它會(huì)編譯,但是當(dāng)你瀏覽生成的代碼時(shí),它感覺非常像一個(gè)巨大的C代碼庫(kù),”Karpathy在他的博客中寫道。

這個(gè)項(xiàng)目在GitHub上可以找到。它使用了Torch7 的深度學(xué)習(xí)庫(kù)。這里有Karpathy得到的整個(gè)輸出文件:

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

DeepCoder

微軟和劍橋大學(xué)的研究人員開發(fā)了一種可編寫代碼的機(jī)器學(xué)習(xí)系統(tǒng),被稱為DeepCoder,它具有學(xué)習(xí)的能力。

DeepCoder可以在龐大的代碼庫(kù)中進(jìn)行檢索,然后編寫有效的代碼。DeepCoder 所用的技術(shù)叫程序合成( program synthesis),通過(guò)截取已有軟件的代碼行來(lái)組成新的程序。不得不承認(rèn),當(dāng)下很多程序員也是這樣做的。通過(guò)學(xué)習(xí)一系列代碼片(code fragment)的輸入和輸出數(shù)據(jù),DeepCoder 能自動(dòng)摘取出對(duì)目標(biāo)任務(wù)有用的代碼片。

DeepCoder 可以在一秒鐘之內(nèi)寫出能夠跑通的程序。隨著 DeepCoder 的編程經(jīng)驗(yàn)增加,其分辨有用及無(wú)用的代碼片的能力增加,其生成程序的速度將會(huì)越來(lái)越快。

這并不意味著AI是在竊取代碼,或者從現(xiàn)有軟件復(fù)制粘貼代碼,或者在互聯(lián)網(wǎng)上搜索解決方案。DeepCoder的作者期望它將在不久的將來(lái)參與編程競(jìng)賽。

由DeepCoder創(chuàng)建的域特定語(yǔ)言(DSL)示例程序

DeepCoder 的創(chuàng)造者之一,在劍橋大學(xué)參與微軟研究項(xiàng)目的 Marc Brockschmidt 表示:“該程序最終可以讓非編程人員通過(guò)向計(jì)算機(jī)描述自己的程序構(gòu)想來(lái)獲得想要的程序,系統(tǒng)會(huì)自動(dòng)寫就?!?/p>

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

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

AI編寫Python代碼

一名法國(guó)工程師以BenjaminTD的昵稱發(fā)表了一篇博客文章,解釋了自己是如何“教一個(gè)AI系統(tǒng)如何用Python代碼編寫Python代碼”。

他使用了長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM),這是最流行的遞歸神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)之一。他用大量的Python代碼(使用Pandas、Numpy、Scipy、Django、Scikit-Learn、PyBrain、Lasagne、Rasterio等庫(kù))來(lái)“喂給”這個(gè)網(wǎng)絡(luò)。組合文件大小有27MB。

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

...使用布爾表達(dá)式:

...并創(chuàng)建數(shù)組:

如果仔細(xì)觀察數(shù)組,你會(huì)發(fā)現(xiàn)有一個(gè)語(yǔ)法錯(cuò)誤。BenjaminTD的代碼遠(yuǎn)非完美,但是他認(rèn)為,對(duì)于一個(gè)只是從閱讀示例代碼中學(xué)習(xí)的網(wǎng)絡(luò)來(lái)說(shuō),這些代碼看上去不錯(cuò)。

AI Programmer

2017年 ,來(lái)自彭博和英特爾實(shí)驗(yàn)室的研究人員號(hào)稱實(shí)現(xiàn)了首個(gè)能夠自動(dòng)生成完整軟件程序的 AI 系統(tǒng) “AI Programmer”。

AI Programmer 利用機(jī)器學(xué)習(xí)中的遺傳算法,模擬復(fù)雜的指令。雖然現(xiàn)在 AI Programmer 生成的程序,復(fù)雜程度與人類新手程序員編寫的結(jié)果相當(dāng)。但研究人員認(rèn)為,AI Programmer 編寫的程序完全可以超越傳統(tǒng)范疇,不受人類時(shí)間和智慧的局限。

AI Programmer 的軟件架構(gòu)。從圖中可見,由人類驅(qū)動(dòng)的部分非常少,只需要在開始輸入指令,最后接收適用于某項(xiàng)任務(wù)的函數(shù)即可,剩下部分全部由機(jī)器完成。

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

潛在的威脅:不確定機(jī)器能做到什么程度

現(xiàn)在已經(jīng)有程序可以代替人類了,但隨之而來(lái)的問題是,如果機(jī)器能夠自己學(xué)習(xí),他們能學(xué)到多少?極限在哪里?這個(gè)優(yōu)化的過(guò)程真的能教軟件比人更好地寫代碼嗎?網(wǎng)站開發(fā)機(jī)構(gòu)和軟件公司是否會(huì)利用AI驅(qū)動(dòng)的程序?yàn)樽约壕帉懘a,以節(jié)省資金?事實(shí)是,我們還不確定機(jī)器能做到什么程度。

但是,我們知道人工智能已經(jīng)在影響IT行業(yè)的一些工作。印度軟件咨詢和外包公司W(wǎng)ipro Ltd.自去年6月以來(lái)使用AI平臺(tái)Holmes來(lái)維護(hù)軟件,其3000多名工程師因此擔(dān)心他們的工作。更不用說(shuō),我們經(jīng)常使用的許多技術(shù)都采用機(jī)器學(xué)習(xí)技術(shù)——從語(yǔ)音識(shí)別到機(jī)器翻譯。

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

人工神經(jīng)網(wǎng)絡(luò)的一個(gè)問題是它們使用的算法是“黑盒”,這意味著它們內(nèi)部的工作方式太過(guò)復(fù)雜。特斯拉的AI總監(jiān)Andrej Karpathy認(rèn)為,對(duì)于大多數(shù)應(yīng)用領(lǐng)域,我們永遠(yuǎn)無(wú)法得到完全由AI驅(qū)動(dòng)的100%精確的模型。他認(rèn)為AI系統(tǒng)的準(zhǔn)確率將超過(guò)90%,但它們并不完美,它們偶爾會(huì)以出人意料的方式失敗。

一般來(lái)說(shuō),有監(jiān)督和有人控制的深度學(xué)習(xí)系統(tǒng)比無(wú)監(jiān)督的系統(tǒng)表現(xiàn)更好。這意味著,即使是最復(fù)雜的AI軟件也需要人類的參與和反饋,以學(xué)習(xí)和適應(yīng)新的環(huán)境。這個(gè)事實(shí)為未來(lái)人工智能和人類程序員之間的緊張關(guān)系提供了一種解決方案——共同工作。

我們可以肯定的是,在不久的將來(lái),AI和人類程序員將在編程中扮演互補(bǔ)的角色。AI的工作可能是處理重復(fù)性的、耗時(shí)的任務(wù),這些任務(wù)需要機(jī)器優(yōu)異的精確性。機(jī)器可以避免由于人為因素而產(chǎn)生的語(yǔ)法錯(cuò)誤或設(shè)計(jì)錯(cuò)誤。例如,AI可以提供幫助的一種方式是自動(dòng)完成功能,程序員只編寫一小部分代碼,然后AI識(shí)別程序員的意圖,并完成剩下的代碼,從而為人類節(jié)省大量的工作。

即使機(jī)器能夠完全代替今天程序員所做的工作,但這并不意味著它們不需要人類的幫助。但程序員必須將注意力從編寫程序轉(zhuǎn)移到監(jiān)控AI的性能,并將數(shù)據(jù)“喂給”AI。正如Karpathy所指出的,程序員可能會(huì)成為一種數(shù)據(jù)加持者——收集、整理和分析數(shù)據(jù),然后將它們用作AI的輸入,然后讓AI完成剩下的工作。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4749

    瀏覽量

    100433
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    29850

    瀏覽量

    268148

原文標(biāo)題:AI搶程序員工作:2040年AI可能代替程序員

文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    人工神經(jīng)網(wǎng)絡(luò)原理及下載

    人工神經(jīng)網(wǎng)絡(luò)是根據(jù)人的認(rèn)識(shí)過(guò)程而開發(fā)出的一種算法。假如我們現(xiàn)在只有一些輸入和相應(yīng)的輸出,而對(duì)如何由輸入得到輸出的機(jī)理并不清楚,那么我們可以把輸入與輸出之間的未知過(guò)程看成是一個(gè)“網(wǎng)絡(luò)”,通過(guò)不斷地給
    發(fā)表于 06-19 14:40

    應(yīng)用人工神經(jīng)網(wǎng)絡(luò)模擬污水生物處理

    應(yīng)用人工神經(jīng)網(wǎng)絡(luò)模擬污水生物處理(1.浙江工業(yè)大學(xué)建筑工程學(xué)院, 杭州 310014; 2.鎮(zhèn)江水工業(yè)公司排水管理處,鎮(zhèn)江 212003)摘要:針對(duì)復(fù)雜的非線性污水生物處理過(guò)程,開發(fā)了徑向基函數(shù)的人工
    發(fā)表于 08-08 09:56

    神經(jīng)網(wǎng)絡(luò)教程(李亞非)

      第1章 概述  1.1 人工神經(jīng)網(wǎng)絡(luò)研究與發(fā)展  1.2 生物神經(jīng)元  1.3 人工神經(jīng)網(wǎng)絡(luò)的構(gòu)成  第2章
    發(fā)表于 03-20 11:32

    人工神經(jīng)網(wǎng)絡(luò)課件

    人工神經(jīng)網(wǎng)絡(luò)課件
    發(fā)表于 06-19 10:15

    【PYNQ-Z2試用體驗(yàn)】神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識(shí)

    前言前面我們通過(guò)notebook,完成了在PYNQ-Z2開發(fā)板上編寫并運(yùn)行python程序。我們的最終目的是基于神經(jīng)網(wǎng)絡(luò),完成手寫的數(shù)字識(shí)別。在這之前,有必要講一下神經(jīng)網(wǎng)絡(luò)的基本概念和工作原理。何為
    發(fā)表于 03-03 22:10

    【專輯精選】人工智能之神經(jīng)網(wǎng)絡(luò)教程與資料

    電子發(fā)燒友總結(jié)了以“神經(jīng)網(wǎng)絡(luò)”為主題的精選干貨,今后每天一個(gè)主題為一期,希望對(duì)各位有所幫助?。c(diǎn)擊標(biāo)題即可進(jìn)入頁(yè)面下載相關(guān)資料)人工神經(jīng)網(wǎng)絡(luò)算法的學(xué)習(xí)方法與應(yīng)用實(shí)例(pdf彩版)卷積神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 05-07 19:18

    人工神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)方法有哪些?

    人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)是一種類似生物神經(jīng)網(wǎng)絡(luò)的信息處理結(jié)構(gòu),它的提出是為了解決一些非線性,非平穩(wěn),復(fù)雜的實(shí)際問題。那有哪些辦法能實(shí)現(xiàn)人工
    發(fā)表于 08-01 08:06

    【AI學(xué)習(xí)】第3篇--人工神經(jīng)網(wǎng)絡(luò)

    `本篇主要介紹:人工神經(jīng)網(wǎng)絡(luò)的起源、簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)模型、更多神經(jīng)網(wǎng)絡(luò)模型、機(jī)器學(xué)習(xí)的步驟:訓(xùn)練與預(yù)測(cè)、訓(xùn)練的兩階段:正向推演與反向傳播、以TensorFlow + Excel表達(dá)訓(xùn)練流程
    發(fā)表于 11-05 17:48

    怎么解決人工神經(jīng)網(wǎng)絡(luò)并行數(shù)據(jù)處理的問題

    本文提出了一個(gè)基于FPGA 的信息處理的實(shí)例:一個(gè)簡(jiǎn)單的人工神經(jīng)網(wǎng)絡(luò)應(yīng)用Verilog 語(yǔ)言描述,該數(shù)據(jù)流采用模塊化的程序設(shè)計(jì),并考慮了模塊間數(shù)據(jù)傳輸信號(hào)同 步的問題,有效地解決了人工神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 05-06 07:22

    嵌入式中的人工神經(jīng)網(wǎng)絡(luò)的相關(guān)資料分享

    人工神經(jīng)網(wǎng)絡(luò)在AI中具有舉足輕重的地位,除了找到最好的神經(jīng)網(wǎng)絡(luò)模型和訓(xùn)練數(shù)據(jù)集之外,人工神經(jīng)網(wǎng)絡(luò)的另一個(gè)挑戰(zhàn)是如何在嵌入式設(shè)備上實(shí)現(xiàn)它,同時(shí)
    發(fā)表于 11-09 08:06

    人工神經(jīng)網(wǎng)絡(luò),人工神經(jīng)網(wǎng)絡(luò)是什么意思

    人工神經(jīng)網(wǎng)絡(luò),人工神經(jīng)網(wǎng)絡(luò)是什么意思 神經(jīng)網(wǎng)絡(luò)是一門活躍的邊緣性交叉學(xué)科.研究它的發(fā)展過(guò)程和前沿問題,具有重要的理論意義
    發(fā)表于 03-06 13:39 ?3391次閱讀

    人工神經(jīng)網(wǎng)絡(luò)的內(nèi)容有哪些?

    人工神經(jīng)網(wǎng)絡(luò)的內(nèi)容有哪些? 人工神經(jīng)網(wǎng)絡(luò)模型主要考慮網(wǎng)絡(luò)連接的拓?fù)浣Y(jié)構(gòu)、神經(jīng)元的特征、學(xué)習(xí)
    發(fā)表于 03-06 13:42 ?1624次閱讀

    人工神經(jīng)網(wǎng)絡(luò)實(shí)用教程下載

    本書系統(tǒng)的介紹了人工神經(jīng)網(wǎng)絡(luò)典型模型的原理、算法,并對(duì)遺傳算法的基本原理也做了簡(jiǎn)單介紹。 人工神經(jīng)網(wǎng)絡(luò)方法已應(yīng)用于許多領(lǐng)域。本書是以應(yīng)用為主要目的為從事
    發(fā)表于 02-17 17:46 ?146次下載
    <b class='flag-5'>人工</b><b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>實(shí)用教程下載

    人工神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別

    人工神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別? 人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network, ANN)是一種模仿人腦
    的頭像 發(fā)表于 08-22 16:45 ?4185次閱讀

    BP神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)的區(qū)別

    BP神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,簡(jiǎn)稱ANNs)之間的關(guān)系與區(qū)別,是神經(jīng)網(wǎng)絡(luò)領(lǐng)域中一個(gè)基礎(chǔ)且重要的話題。本文將從定義、結(jié)構(gòu)、算法、應(yīng)用及
    的頭像 發(fā)表于 07-10 15:20 ?737次閱讀