從軟件1.0到軟件2.0:神經(jīng)網(wǎng)絡(luò)時(shí)代

Software is eating the world, but Neural Network is going to eat software.

軟件正在吞噬世界邦邦,而神經(jīng)網(wǎng)絡(luò)將吞噬軟件考蕾。

最初聽說Karpathy這里提的軟件2.0相關(guān)概念時(shí)互妓,是在吳教授采訪Hinton胖替,Hinton無意中提到的一段關(guān)于當(dāng)前高校計(jì)算機(jī)科學(xué)領(lǐng)域的不足,還有未來的發(fā)展方向氨淌。

他提到現(xiàn)在各大高校里猎荠,特別是計(jì)算機(jī)科學(xué)學(xué)院,并不缺各種編程大牛斧拍。只是現(xiàn)在的情況是雀扶,因?yàn)樯窠?jīng)網(wǎng)絡(luò)的普適性,所以實(shí)際上可能未來最重要的并不是如何來編一個(gè)程序肆汹,而是如何將數(shù)據(jù)展示給神經(jīng)網(wǎng)絡(luò)愚墓,來訓(xùn)練出來高性能網(wǎng)絡(luò)。

這次看到這個(gè)軟件2.0的概念時(shí)昂勉,感到很興奮浪册,因?yàn)檫@將Hinton提到趨勢(shì)系統(tǒng)性地?cái)U(kuò)展,不光只從所需人才岗照,還從計(jì)算村象、硬件、以及便利性展示了一個(gè)宏偉的前景攒至。

軟件2.0

現(xiàn)在可能大多數(shù)人還只是把神經(jīng)網(wǎng)絡(luò)當(dāng)做是"機(jī)器學(xué)習(xí)工具箱中的一個(gè)工具"厚者,很多教科書里也是這樣來介紹。包括有名的西瓜書迫吐,實(shí)際對(duì)神經(jīng)網(wǎng)絡(luò)的介紹只有一章库菲,而深度學(xué)習(xí)只有2頁。

這些想法會(huì)說:神經(jīng)網(wǎng)絡(luò)有它的優(yōu)點(diǎn)和缺點(diǎn)志膀,擅長(zhǎng)處理某些任務(wù)熙宇,你有時(shí)可以用它來贏得kaggle比賽。

但可惜的是溉浙,如果只是這樣子來看待神經(jīng)網(wǎng)絡(luò)烫止,那就是撿了芝麻,丟了西瓜放航。因?yàn)樯窠?jīng)網(wǎng)絡(luò)代表的并不僅僅只是另一種分類器烈拒,它更代表著寫軟件方式的根本性轉(zhuǎn)變的開始。而轉(zhuǎn)變的結(jié)果就是軟件2.0广鳍。

首先來介紹一下軟件1.0吧。它也就是我們所熟悉的吓妆,程序員用一種語言比如Python或者C++赊时,組合里面各種指令,寫出一行行程序行拢,使得程序執(zhí)行一些行為祖秒。

相比之下,軟件2.0則不是用編程語言寫的了,而是用神經(jīng)網(wǎng)絡(luò)的權(quán)重寫的竭缝。人們并不會(huì)參與編寫這種程序中去房维,因?yàn)橐粋€(gè)大的神經(jīng)網(wǎng)絡(luò)有太多權(quán)重了(成百上千萬)。

而我們能做的抬纸,是對(duì)程序的行為提出一些要求咙俩,然后設(shè)置約束 (比如用一個(gè)有輸入輸出對(duì)的數(shù)據(jù)集),讓神經(jīng)網(wǎng)絡(luò)自己搜尋程序空間湿故,得到滿足約束的結(jié)果阿趁。而其中神經(jīng)網(wǎng)絡(luò)搜索的手段,就是熟悉的反向傳播還有隨機(jī)梯度下降了坛猪。

事實(shí)上脖阵,對(duì)于很多現(xiàn)實(shí)問題來說,往往收集數(shù)據(jù)要比老老實(shí)實(shí)編程序容易得多墅茉。很大一部分的程序員命黔,未來可能不再是維護(hù)復(fù)雜的軟件庫,寫繁雜的程序就斤,或者分析運(yùn)行時(shí)間悍募。而是收集、清理战转、操作搜立、標(biāo)準(zhǔn)、分析槐秧、還有可視化喂給神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù) (我覺得這樣的程序員2.0啄踊,可以叫做訓(xùn)網(wǎng)員了)。

雖然這樣說刁标,但軟件2.0并不是說要取代軟件1.0颠通,而只是漸漸把之前軟件1.0主要負(fù)責(zé)的任務(wù)取代過來。事實(shí)上膀懈,我們也需要1.0的底層架構(gòu)顿锰,來訓(xùn)練2.0的代碼。

下面來看寫些启搂,軟件2.0的實(shí)例吧硼控。

一些實(shí)例

視覺識(shí)別,比起過去那種用手工特征的分類器胳赌,現(xiàn)在大多數(shù)成功的分類器都是CNN家族里的架構(gòu)牢撼,而最近一些研究更進(jìn)了一步,開始自動(dòng)搜尋架構(gòu)了疑苫。

語音識(shí)別熏版,過去要用有很多預(yù)處理過程的纷责,高斯混合模型還有隱馬爾科夫模型,但現(xiàn)在幾乎都完全是神經(jīng)網(wǎng)絡(luò)了撼短。

語音合成再膳,過去的處理方法包括各種各樣的拼接技術(shù),但現(xiàn)在的模型就直接是一個(gè)大型CNN網(wǎng)絡(luò)(比如WaveNet)輸出音頻數(shù)據(jù)曲横。

機(jī)器翻譯喂柒,過去最好的是基于短語的統(tǒng)計(jì)機(jī)器翻譯(Phrase-based Statistical Machine Translation, PSMT),但是現(xiàn)在神經(jīng)網(wǎng)絡(luò)已是主流 (PSMT已淪為基準(zhǔn)的基準(zhǔn)了)胜榔。其中最有意思的胳喷,當(dāng)然就是谷歌的多語言翻譯系統(tǒng),一個(gè)模型就幾乎可以在任何語言之間進(jìn)行翻譯夭织,還做到了Zero-Shot吭露。此外,最近ICLR2018那篇尊惰,非監(jiān)督學(xué)習(xí)的機(jī)器翻譯也是賺足了眼球讲竿。

機(jī)器人學(xué),長(zhǎng)期以來都是把問題分成各個(gè)小的部分弄屡,感知题禀、姿態(tài)估計(jì)、計(jì)劃膀捷、控制... 這些模塊之間用各種顯式的程序和算法來處理迈嘹。雖然現(xiàn)在也并沒有太大的進(jìn)展,但至少根據(jù)UC Berkeley還有Google的一些研究全庸,暗示著可能軟件2.0可以取代所有這些代碼秀仲,取得更好的成果。(之前在機(jī)器人實(shí)驗(yàn)室壶笼,看有些基于神經(jīng)學(xué)習(xí)的行走機(jī)器人相關(guān)研究時(shí)神僵,機(jī)器人自己學(xué)習(xí)走路真的很令人震驚。)

游戲覆劈,這個(gè)就不用多說了保礼。這也是各種媒體爆料最多的一塊了,從AlphaGo Zero現(xiàn)在的獨(dú)孤求敗责语,到之前DOTA2虐職業(yè)玩家炮障,已經(jīng)有了很多發(fā)展。

軟件2.0的好處

為什么我們會(huì)想把復(fù)雜的程序轉(zhuǎn)成軟件2.0呢坤候?

一個(gè)簡(jiǎn)單的答案當(dāng)然就是铝阐,因?yàn)檫@樣工作性能更好。然而除此之外铐拐,其實(shí)也有很多便利的地方徘键,使得我們更加青睞于軟件2.0。

來看看軟件2.0(比如一個(gè)CNN網(wǎng)絡(luò))和軟件1.0(一個(gè)產(chǎn)品級(jí)的C++代碼庫)的比較遍蟋。軟件2.0會(huì)有這些好處:

計(jì)算均一性吹害。一個(gè)典型的神經(jīng)網(wǎng)絡(luò),通常只有兩種操作: 矩陣運(yùn)算在0處閾值化(ReLU)虚青。而傳統(tǒng)的軟件里面它呀,操作就各種各樣而且更加復(fù)雜了。

容易燒錄進(jìn)硅芯片棒厘。作為一個(gè)必然的結(jié)果纵穿,因?yàn)樯窠?jīng)網(wǎng)絡(luò)的指令集相對(duì)比較小,所以用硅片來實(shí)現(xiàn)這些網(wǎng)絡(luò)會(huì)變得很簡(jiǎn)單奢人,比如說定制的ASICs谓媒,神經(jīng)形態(tài)(neuromorphic)芯片等等。而當(dāng)這些低能耗的智能芯片普及時(shí)何乎,那么世界將會(huì)發(fā)生很大的變化句惯。想想未來一些便宜的小芯片里面,已經(jīng)集成了預(yù)訓(xùn)練好的CNN網(wǎng)絡(luò)支救、WaveNet語言生成網(wǎng)絡(luò)抢野,我們可以把它們用到任何東西上面去,就讓人興奮各墨。

image

固定的運(yùn)行時(shí)間指孤。每一次網(wǎng)絡(luò)的前饋迭代都只會(huì)使用同樣的運(yùn)算量。而且以這種方式贬堵,也不會(huì)進(jìn)入意料之外的無限循環(huán)恃轩。

固定的內(nèi)存使用量。沒有動(dòng)態(tài)分配的內(nèi)存扁瓢,所以內(nèi)存溢出這樣你需要在你代碼里注意的東西也會(huì)減少详恼。

跨平臺(tái)能力強(qiáng)。比起傳統(tǒng)的二進(jìn)制文件或者腳本引几,一系列的矩陣相乘更容易在任意計(jì)算結(jié)構(gòu)上運(yùn)行昧互。

非常靈敏。假如入你有一個(gè)C++程序伟桅,突然被要求讓它運(yùn)行速度加快一倍敞掘,那么為了滿足這個(gè)新要求而改寫代碼,是件很麻煩的事情楣铁。而如果是神經(jīng)網(wǎng)絡(luò)玖雁,你只需移除一半的通道,重新訓(xùn)練一下盖腕,速度就變成原來的兩倍了赫冬,只是性能會(huì)下降一些浓镜。反過來說,如果你突然有了更多數(shù)據(jù)或者計(jì)算量劲厌,那么你就可以增加通道膛薛,然后重訓(xùn)練,提高性能补鼻。

各個(gè)模塊可以組成一個(gè)最優(yōu)化的整體哄啄。現(xiàn)在的軟件一般都是分成各個(gè)模塊,然后用API這樣的公共函數(shù)來交流风范。然而咨跌,如果是軟件2.0的話,最初分別訓(xùn)練的模塊硼婿,如果組合起來锌半,很容易就能用反向傳播來優(yōu)化整個(gè)模型。

很好上手加酵。深度學(xué)習(xí)很淺拳喻,這是Karpathy說的一個(gè)玩笑。指的是現(xiàn)在學(xué)習(xí)深度學(xué)習(xí)猪腕,你并不需要像核物理一樣有一個(gè)博士學(xué)位冗澈,你只需最基礎(chǔ)的線代、高數(shù)陋葡、python知識(shí)亚亲,然后在網(wǎng)上上點(diǎn)課,就能上手了腐缤。當(dāng)然捌归,這里說的只是上手,要成為大師的話岭粤,還是需要一些功夫的惜索。

它通常做的要比你好。最后同樣也是最重要的一點(diǎn)剃浇,一般神經(jīng)網(wǎng)絡(luò)比你想到的代碼要好的多巾兆,至少現(xiàn)在已經(jīng)在和圖像/視頻、聲音/語言虎囚、還有文本有關(guān)的任務(wù)上已經(jīng)是這樣了角塑。

軟件2.0的不足

軟件2.0也不都是一些好的地方,它也有自己的不足淘讥。

通常在優(yōu)化后圃伶,會(huì)得到一個(gè)龐大的神經(jīng)網(wǎng)絡(luò),性能很好,但是卻很難解釋為什么好窒朋。所以對(duì)于很多應(yīng)用領(lǐng)域搀罢,我們需要選擇是用90%準(zhǔn)確,但能理解的模型炼邀;還是99%準(zhǔn)確魄揉,但卻不能理解的模型

還有拭宁,軟件2.0會(huì)出現(xiàn)一些預(yù)料之外,而且很尷尬的錯(cuò)誤(之前微軟的Tay)瓣俯,甚至更壞杰标,“什么也不做”。卻又很難去對(duì)它們進(jìn)行分析和檢測(cè)彩匕。

最后腔剂,現(xiàn)在仍發(fā)現(xiàn)軟件2.0還有很多奇怪的特性。比如說對(duì)抗性樣本的存在驼仪,以及用這個(gè)來進(jìn)行的攻擊掸犬。

最后

如果你把神經(jīng)網(wǎng)絡(luò)想成是軟件,而不僅僅是個(gè)比較好的分類器的話绪爸,很明顯它一下子就有了很多優(yōu)點(diǎn)湾碎,而且有很大的潛力改變軟件世界。

長(zhǎng)期來看奠货,軟件2.0的未來是光明的介褥,因?yàn)楝F(xiàn)在大家心里越來越清楚,當(dāng)我們想要開發(fā)AGI(強(qiáng)人工智能)递惋,它必然是使用軟件2.0來寫出的柔滔。

最后的最后,關(guān)于個(gè)人的發(fā)展方面萍虽,我們可以更加關(guān)注于如何來利用數(shù)據(jù)和神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)自己的任務(wù)睛廊,使自己能夠成為軟件2.0的先驅(qū)者。

Reference

Andrej, Karpathy. Software 2.0. Medium

Geoffrey Hinton Interview, Deeplearning ai course, Coursera

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杉编,一起剝皮案震驚了整個(gè)濱河市超全,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌王财,老刑警劉巖卵迂,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異绒净,居然都是意外死亡见咒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門挂疆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來改览,“玉大人下翎,你說我怎么就攤上這事”Φ保” “怎么了视事?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)庆揩。 經(jīng)常有香客問我俐东,道長(zhǎng),這世上最難降的妖魔是什么订晌? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任虏辫,我火速辦了婚禮,結(jié)果婚禮上锈拨,老公的妹妹穿的比我還像新娘砌庄。我一直安慰自己,他們只是感情好奕枢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布娄昆。 她就那樣靜靜地躺著,像睡著了一般缝彬。 火紅的嫁衣襯著肌膚如雪萌焰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天跌造,我揣著相機(jī)與錄音杆怕,去河邊找鬼。 笑死壳贪,一個(gè)胖子當(dāng)著我的面吹牛陵珍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播违施,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼互纯,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了磕蒲?” 一聲冷哼從身側(cè)響起留潦,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辣往,沒想到半個(gè)月后兔院,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡站削,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年坊萝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡十偶,死狀恐怖菩鲜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惦积,我是刑警寧澤接校,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站狮崩,受9級(jí)特大地震影響蛛勉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厉亏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一董习、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧爱只,春花似錦、人聲如沸招刹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疯暑。三九已至训柴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妇拯,已是汗流浹背幻馁。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留越锈,地道東北人仗嗦。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像甘凭,于是被迫代替她去往敵國和親稀拐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 腳崴了后,我去健身教練p那里尋求幫助躲胳。p教練蜓洪,我之前已經(jīng)介紹過了,具體可以詳見我的第一篇文章《這個(gè)社會(huì)的規(guī)則坯苹,要學(xué)...
    八小姐在約旦閱讀 562評(píng)論 0 1
  • 原來在沒有在一起的時(shí)候我從來沒有想過我會(huì)真的和你在一起 不知不覺都一年多了 真的發(fā)現(xiàn)我們大家都在變化 我知道我越來...
    Tiger_672f閱讀 227評(píng)論 0 0
  • 一點(diǎn)也不care任何人的看法。 承認(rèn)非常喜歡一個(gè)人刚操。 活出來闸翅。
    你說我聽ai閱讀 95評(píng)論 0 0
  • 大家好!是時(shí)候?yàn)樽约旱暮梅N子施肥澆水曬太陽了菊霜,我近期最想實(shí)現(xiàn)的目標(biāo)是:財(cái)富目標(biāo):到7月底收入6萬元坚冀,帶動(dòng)消費(fèi)30萬...
    張蓉萍閱讀 163評(píng)論 0 0