第620章 深度學習變天了

投票推薦 加入書籤 小說報錯

  2014年4月的雅安,大渡河的水聲日夜不停,從山谷底部翻湧上來,和機房裡幾千台設備的嗡鳴混在一起,變成一種單調的、永不消歇的白噪音。

  任少卿已經習慣了這種聲音。

  他甚至覺得,沒有這個聲音他反而睡不著。

  九章基地的AI訓練區設在主機房東側,是去年底新開闢出來的獨立區域。

  顧嶼當初承諾的兩千張頂級計算卡早已全部到位。

  其中一千六百多張卡正在日夜不休地爬取、清洗著西紅柿小說、今日熱點以及引力APP的海量中文語料,那是為未來某個龐大計劃儲備的底層基建。

  而任少卿面前的,是劃給他視覺組專屬的攻堅主堡。

  三百二十張英偉達K40計算卡,整整齊齊碼在定製的液冷機櫃裡,指示燈密密麻麻,綠光閃爍,遠看像一面會呼吸的牆。

  任少卿在這面牆前面蹲了快五個月。

  他的皮膚曬黑了不止一圈,因為基地的食堂在另一棟樓,每天來回要走一段露天的山路。

  雅安的紫外線不講道理,尤其三四月份,太陽出來的時候毒辣得很。

  他現在的膚色已經跟剛從中科大出來時判若兩人。

  但他顧不上這些。

  此刻是凌晨兩點四十七分。

  訓練區的值班間裡,三台顯示器同時亮著。

  任少卿坐在中間那台前面,兩個師弟一左一右。

  左邊的叫鄭宇航,右邊的叫陳立秋,都是他從西安交大挖過來的博士生。

  準確說不是挖的,是他跟兩個人分別打了四個小時電話,把雅安基地的算力配置報了一遍,對面就自己來了。

  這年頭搞深度學習的人,算力就是命。

  「跑完了。」

  鄭宇航的聲音有點抖。

  任少卿沒動。他盯著屏幕上那組數字,瞳孔里映著綠瑩瑩的光標。

  ImageNet驗證集。Top-5錯誤率。

  5.08%。

  五十層。五十層卷積神經網絡。Top-5錯誤率,5.08%。

  他反覆確認了三遍訓練日誌,又讓陳立秋重新跑了一次驗證腳本。數字沒有變。

  鄭宇航從椅子上站起來,雙手撐著桌沿,呼吸急促。

  陳立秋摘下眼鏡,用衣角反覆擦了三遍鏡片,又戴上,又摘下來。

  「少卿哥。」

  鄭宇航轉過頭看他,嘴唇哆嗦了一下,

  「這個精度……人類標註員在ImageNet上的平均錯誤率是5.1%。」

  任少卿知道。

  他當然知道。

  他閉上眼睛,靠上椅背。五個月。

  從去年十一月他正式入駐雅安基地開始算,到今天,一百五十三天。

  事情要從頭說起。

  去年夏天在西安交大走廊里被那個頂著黃毛的少年截住之後,任少卿回北京猶豫了整整一周。

  不是猶豫要不要去,是猶豫這件事到底是不是真的。

  一個高中畢業生說自己手裡有幾千張GPU,說算力管夠。

  這種話放在2013年的中國,聽起來荒誕得離譜。

  然後他撥了名片上那個電話。接電話的是個叫林溪的女人,聲音乾脆利落。

  三天後他就收到了一份正式的offer,薪資是他在微軟亞研院兼職收入的四倍,不含績效和期權。

  他坐火車到了雅安,下了站,一輛黑色比亞迪S6把他接進山里。

  第一次走進機房的時候,他站在門口愣了將近兩分鐘。

  幾千張GPU。

  那個黃毛少年沒有騙他。

  入職一個月後,他把之前在微軟亞研院的那套改進型卷積網絡搬了過來,在這邊的算力下重新訓練。

  效果立竿見影。之前四張GTX780跑十二天的任務量,在這邊不到兩天就能收斂完畢。

  算力充裕之後,他開始做一件以前想都不敢想的事。


  加深網絡。

  卷積神經網絡的層數越深,理論上能提取的特徵就越抽象、越高級。

  但實際操作中,網絡超過二十層就會出現一個要命的問題:梯度消失。

  簡單來說,訓練信號從輸出層往回傳的時候,經過太多層的連乘運算,到了前面幾層就衰減成了幾乎為零的數字。

  前面的層學不到東西,整個網絡等於白深。

  這個問題卡死了全世界所有試圖做深層網絡的研究者。

  任少卿也被卡住了。

  他試過各種補救辦法。換激活函數,調學習率,加Batch Normalization。

  有些有用,但都治標不治本,網絡超過三十層之後精度就開始往下掉,跟沒加深是一個樣。

  在連續失敗了將近兩個月之後,某天凌晨三點,他趴在鍵盤上半睡半醒。腦子裡突然蹦出來一個念頭。

  如果不讓梯度穿過所有層呢?

  如果給它開一條捷徑呢?

  他一下子坐直了。

  思路很簡單。

  假設網絡有兩層,輸入是x,經過兩層運算之後的輸出是F(x)。正常做法是直接用F(x)往下傳。

  但他的想法是,不要讓網絡去學習F(x)這個完整的映射,而是讓它只學習F(x)和x之間的差值,也就是F(x)-x。最終輸出變成F(x)+x。

  這個「+x」就是捷徑。

  就是殘差連接。

  它的意義在於,哪怕F(x)學廢了,輸出至少還有一個x兜底,不會比什麼都沒學更差。

  更關鍵的是,梯度可以沿著這條捷徑直接回傳到前面的層,不用再經過所有中間層的連乘衰減。

  梯度消失的問題,被這條捷徑繞過去了。

  他當天晚上就寫了代碼。

  第二天跑了一個二十層的測試。

  然後是三十層。四十層。精度不僅沒有下降,還在持續攀升。

  他又花了兩周時間反覆驗證,排除過擬合、數據泄漏等一切干擾因素。

  最後把層數推到了五十。

  5.08%。

  和人類標註員打了個平手。甚至略微超過。

  任少卿睜開眼睛,盯著天花板看了很久。值班間的日光燈管有一根壞了,一明一暗地閃著。

  「少卿哥,這個結果……」

  陳立秋把擦了無數遍的眼鏡重新戴好,聲音壓得很低,

  「能發頂會吧?」

  「不止能發。」

  鄭宇航已經從最初的激動中回過神來了,他盯著屏幕上的損失曲線,

  「這東西要是公開出去,整個領域都得重新洗牌。以前大家默認深層網絡沒法訓練,所有人都在十幾二十層的範圍里卷。現在這個假設直接被推翻了。」

  任少卿沒說話。

  他站起來,走到機房那面閃爍的綠色光牆前面,雙手插在衝鋒衣口袋裡。

  興奮嗎?當然興奮。

  但興奮過後,一種更複雜的情緒開始往上涌。

  他想起去年在西安交大走廊里,那個黃毛少年對他說的話。

  「你的模型在做大量無效計算。」

  「讓模型只用它需要用的那部分腦子去思考。」

  當時他以為那只是一個外行的模糊直覺。

  但現在他回過頭來看,那個十八歲的少年說的每一句話,都精準地指向了這個領域未來五到十年的核心命題。

  殘差連接解決了深層網絡的訓練問題。

  但那個少年想要的,顯然不止於此。

  任少卿盯著那面光牆,腦子裡像打開了一扇被堵住很久的門。

  五十層的殘差網絡證明了一件事:網絡可以做得很深,深度不再是瓶頸。

  那下一個瓶頸是什麼?

  他幾乎是本能地想到了那個詞。

  寬度。


  或者更準確地說,視野。

  卷積網絡的每一層只能看到一個局部窗口。

  三乘三,五乘五,最大也就七乘七。哪怕你把網絡堆到一百層,每一層看到的依然是一小塊局部區域。

  它通過層層疊加來擴大感受野,但這種擴大是間接的,是逐層遞推的,不是一步到位的。

  如果數據不是圖片呢?

  如果是一段文字,一個句子,一篇文章?

  文字里的語義關聯可以跨越整個句子。

  第一個字和最後一個字之間可能存在關鍵的依賴關係。卷積核看不到那麼遠。

  循環神經網絡可以看到,但它是串行的,一個字一個字往後遞,速度慢得要命,而且同樣存在梯度消失。

  只不過是時間維度上的梯度消失。

  那如果……

  任少卿搖了搖頭,把這個念頭暫時壓下去。

  他現在面前擺著一堆更緊迫的問題。

  論文要不要寫?投哪個會議?實驗還需要補哪些對照組?

  一百層的網絡還沒跑,一百五十層呢?

  目標檢測任務上的遷移效果怎麼樣?

  另外,殘差連接這個結構目前只在圖像分類上驗證過。

  要推廣到其他任務、其他數據類型,工作量巨大。

  他手上就兩個師弟,根本忙不過來。

  這些問題每一個都很具體,每一個都需要人手、時間和資源。

  「少卿哥。」

  鄭宇航不知道什麼時候走到他旁邊來了,手裡端著兩杯速溶咖啡,遞了一杯過來,

  「你是不是該跟上面匯報一下了?」

  任少卿接過咖啡,沒喝。

  「上面」。在這個基地里,「上面」這個詞只指向一個人。

  他入職快半年了,跟那個黃毛少年只見過一次面。

  日常工作對接的是林溪和徐靜。林溪管錢管人,徐靜管硬體和基建。

  兩個人都很專業,給他的自由度也大,基本上他要什麼給什麼,從來不問他每天具體在做什麼。

  但這次不一樣。

  這個發現太大了。

  大到他自己都說不清它的邊界在哪裡。

  「我給林總發了飛書消息。」

  陳立秋從值班間探出頭來,

  「但我覺得這種事,光發消息說不清楚。」

  任少卿看了一眼窗外。天還黑著,大渡河的水聲悶悶地從山下傳上來。

  他沉默了很久。

  然後他把那杯沒喝的速溶咖啡放在窗台上,轉身走回值班間,拿起手機。

  不是發消息。是查機票。

  雅安到北京,最早的航班在錦城雙流機場起飛,早上七點二十。從基地開車到錦城大概要兩個半小時,現在出發正好來得及。

  他買完票,把手機揣回兜里。

  「收拾一下數據和實驗日誌,打包拷到加密U盤裡。」

  他看著兩個師弟,語氣平靜,

  「我去北京,當面匯報。」

  鄭宇航愣了一下。

  「現在?凌晨三點?」

  「現在。」

  任少卿拎起那個跟了他快三年的黑色雙肩包,把筆記本電腦和充電器塞進去,拉上拉鏈。

章節目錄