十年云計(jì)算老兵零基礎(chǔ)進(jìn)軍深度學(xué)習(xí)方法論

大數(shù)據(jù)

作者:曹亞孟

人工智能是當(dāng)今的熱議行業(yè),深度學(xué)習(xí)是熱門中的熱門,浪尖上的浪潮,但對(duì)傳統(tǒng) IT 從業(yè)人員來(lái)說(shuō),人工智能技術(shù)到處都是模型、算法、矢量向量,太晦澀難懂了。所以本文作者寫了這篇入門級(jí)科普文章,目標(biāo)是讓 IT 從業(yè)者能看清讀懂深度學(xué)習(xí)技術(shù)的特點(diǎn),希望讀者能夠從中受益,順利找到自己心儀的工作。

第一. 人工智能的天時(shí)地利人和

行業(yè)的成熟要靠從業(yè)者的奮斗(人和), 也要考慮大環(huán)境和歷史的進(jìn)程(天時(shí)和地利)。

人工智能技術(shù)的井噴并不是單純的技術(shù)進(jìn)步,而是軟件、硬件、數(shù)據(jù)三方面共同努力水到渠成的結(jié)果,深度學(xué)習(xí)是 AI 技術(shù)的最熱分支,也是受這三方面條件的限制。

AI 軟件所依賴的算法已經(jīng)存在很多年了,神經(jīng)網(wǎng)絡(luò)是 50 年前提出的技術(shù),CNN/RNN 等算法比大部分讀者的年齡都要大。AI 技術(shù)一直被束之高閣,是因?yàn)槿狈τ布懔秃A繑?shù)據(jù)。隨著 CPU、GPU、FPGA 硬件的更新,幾十年時(shí)間硬件算力擴(kuò)充了萬(wàn)倍,硬件算力被逐漸解放。隨著硬盤和帶寬的降價(jià)提速,20 年前全人類都沒(méi)幾張高清照片,現(xiàn)在單個(gè)公司的數(shù)據(jù)量就能達(dá)到 EB 級(jí)。大數(shù)據(jù)技術(shù)只能讀寫結(jié)構(gòu)化日志,要讀視頻和圖片必須用 AI,人類已經(jīng)盯不過(guò)來(lái)這么多攝像頭了。

我們只有從心里把 AI 技術(shù)請(qǐng)下神壇,才能把它當(dāng)做順手的工具去用。AI 的技術(shù)很深理論很晦澀,主要是這個(gè)行業(yè)剛剛發(fā)芽還未分層,就像 20 年前 IT 工程師需要全面掌握技能,現(xiàn)在的小朋友們連字符集都不用關(guān)注。

第二. 關(guān)聯(lián)度模型

深度學(xué)習(xí)有兩步工作,先要訓(xùn)練生成模型,然后使用模型去推測(cè)當(dāng)前的任務(wù)。

比如說(shuō)我用 100 萬(wàn)張圖片標(biāo)記好這是貓還是狗,AI 把圖片內(nèi)各個(gè)片段的特征提取出來(lái),生成一個(gè)貓狗識(shí)別模型。然后我們?cè)俳o這個(gè)模型套上接口做成貓狗檢測(cè)程序,每給這個(gè)程序一張照片它就能告訴你有多大幾率是貓多大幾率是狗。

這個(gè)識(shí)別模型是整個(gè)程序中最關(guān)鍵的部分,可以模糊的認(rèn)為它就是一個(gè)密封黑盒的識(shí)別函數(shù)。以前我們寫程序都是做 if-then-else 因果判斷,但圖像特征沒(méi)有因果關(guān)系只看關(guān)聯(lián)度,過(guò)去的工作經(jīng)驗(yàn)反而成了新的認(rèn)知障礙,還不如就將其當(dāng)做黑盒直接拿來(lái)用。

接下來(lái)我放一個(gè)模型訓(xùn)練和推測(cè)的實(shí)驗(yàn)步驟截圖,向大家說(shuō)明兩個(gè)問(wèn)題:

需要用客戶的現(xiàn)場(chǎng)數(shù)據(jù)做訓(xùn)練才能出模型,訓(xùn)練模型不是軟件外包堆人日就行,很難直接承諾模型訓(xùn)練結(jié)果。

訓(xùn)練模型的過(guò)程很繁瑣耗時(shí),但并不難以掌握,其工作壓力比 DBA 在線調(diào)試 SQL 小多了,IT 工程師在 AI 時(shí)代仍有用伍之地。

第三. 動(dòng)手實(shí)驗(yàn)

本節(jié)較長(zhǎng),如果讀者對(duì)實(shí)驗(yàn)步驟和結(jié)果沒(méi)興趣,而是直接想看我的結(jié)論,也可以跳過(guò)這一節(jié)。

這個(gè)實(shí)驗(yàn)是 Nvidia 提供的入門培訓(xùn)課程——ImageClassification with DIGITS – Training a model。

我們的實(shí)驗(yàn)很簡(jiǎn)單,用 6000 張圖片去訓(xùn)練 AI 識(shí)別 0-9 這幾個(gè)數(shù)字。

訓(xùn)練樣本數(shù)據(jù)是 6000 張標(biāo)號(hào) 0-9 的小圖片,其中 4500 張是用來(lái)做訓(xùn)練(train),1500 張是驗(yàn)證(val)訓(xùn)練結(jié)果。

實(shí)驗(yàn)數(shù)據(jù)準(zhǔn)備

訓(xùn)練圖片很小也很簡(jiǎn)單,如下圖預(yù)覽,就是一堆數(shù)字:

— 下圖是 01 樣本圖片 —

大數(shù)據(jù)

我做測(cè)試的圖片是官方教程提供了個(gè)白底紅字的“2”.

— 下圖是 02 測(cè)試圖片 —

大數(shù)據(jù)

制作數(shù)據(jù)集

首先我們要做一個(gè)圖片識(shí)別的數(shù)據(jù)集,數(shù)據(jù)集文件放在“/data/train_small”目錄下,圖片的類型選擇“Grayscale”,大小選 28×28,其他都選默認(rèn),然后選擇創(chuàng)建數(shù)據(jù)集“minidata”。

— 下圖是 03 初始數(shù)據(jù)集 —

大數(shù)據(jù)

下面是數(shù)據(jù)集創(chuàng)建的過(guò)程,因?yàn)槲覀兊奈募苄『苌?,所以速度很?如果是幾千萬(wàn)張高清大圖速度就會(huì)很慢,甚至要搭建分布式系統(tǒng)把 IO 分散到多臺(tái)機(jī)器上。

— 下圖是 04 初始數(shù)據(jù)集中 —

大數(shù)據(jù)

這是創(chuàng)建完成數(shù)據(jù)集的柱形統(tǒng)計(jì)圖,鼠標(biāo)恰好停在第二個(gè)柱形上,顯示當(dāng)前標(biāo)記為“9”的圖片有 466 個(gè)。

— 下圖是 05 創(chuàng)建完成數(shù)據(jù)集 —

大數(shù)據(jù)

開(kāi)始創(chuàng)建模型

有了數(shù)據(jù)集以后我們就可以創(chuàng)建模型了,我們選擇創(chuàng)建一個(gè)圖像分類模型(Image Classification Model),數(shù)據(jù)集選之前創(chuàng)建的“minidata”,訓(xùn)練圈數(shù)輸 30 次,其他選項(xiàng)暫時(shí)保持默認(rèn)。

— 下圖是 06 新建模型 —

大數(shù)據(jù)

到了創(chuàng)建模型的下半段是選擇網(wǎng)絡(luò)構(gòu)型,我們選擇 LeNet 即可,將模型命名為 TestA。

— 下圖是 07 選擇 LeNet —

大數(shù)據(jù)

這次 Demo 我們沒(méi)做細(xì)節(jié)設(shè)置,但生產(chǎn)環(huán)境可能要經(jīng)常修改配置文件。

— 下圖是 08 微調(diào) LeNet —

大數(shù)據(jù)

接下來(lái)就開(kāi)始生成模型了,小數(shù)據(jù)集簡(jiǎn)單任務(wù)的速度還是很快的,而且驗(yàn)證正確率很高。但是如果是大任務(wù)大模型,可能會(huì)算上幾天時(shí)間。

— 下圖是 09 開(kāi)始生成模型 —

大數(shù)據(jù)

模型生成完成,我們?cè)倏匆幌买?yàn)證正確率很高了,如果生產(chǎn)環(huán)境正確率太低,可能你要微調(diào)創(chuàng)建模型的參數(shù)。

— 下圖是 10 訓(xùn)練完成后的 accuracy–

大數(shù)據(jù)

調(diào)試模型

在模型頁(yè)面往下拖就可以看到下載模型、測(cè)試模型等按鈕,我們選擇測(cè)試模型,將那個(gè)“白底紅字 2”提交做個(gè)測(cè)試。

— 下圖是 11 測(cè)試模型 —

大數(shù)據(jù)

默認(rèn)是測(cè)試 Epoch #30,我們先跑 10 次試試。本來(lái)想省點(diǎn)服務(wù)器電費(fèi),結(jié)果只有 20.3% 的幾率識(shí)別正確。

— 下圖是 12TestA 模型 10 圈結(jié)果 —

大數(shù)據(jù)

我們提高測(cè)試圈數(shù)到 25 圈,結(jié)果準(zhǔn)確率從 20.3% 提高到了 21.9%。

— 下圖是 13TestA 模型 25 圈結(jié)果 —

大數(shù)據(jù)

整個(gè)模型的上限是 30 圈,正確識(shí)別結(jié)果也才 21.92%。到了這里我插一句,未正確識(shí)別可能是因?yàn)槲业慕?shù)據(jù)是 28*28 的黑白圖,而我給測(cè)試圖片大小和顏色都不對(duì)。

— 下圖是 14TestA 模型 30 圈結(jié)果 —

大數(shù)據(jù)

更換模型繼續(xù)調(diào)試

在 TestA 這個(gè)模型上可以點(diǎn)克隆任務(wù),即制作一個(gè)同配置的模型再跑一次;這個(gè)按鈕有意思啊,我們以前編譯程序不通過(guò)的時(shí)候,retry 十萬(wàn)次也是不通過(guò)啊,為什么克隆任務(wù)是個(gè)面板常用按鈕?

— 下圖是 15 克隆模型 TestA —

大數(shù)據(jù)

這時(shí)好玩的事情發(fā)生了,我做出的“TestA-Clone”,識(shí)別出數(shù)字 2 的幾率是 94.81%。

— 下圖是 16 克隆 TestA 結(jié)果 —

大數(shù)據(jù)

我們?cè)侔牙夏P涂寺∫淮?,結(jié)果識(shí)別出數(shù)字 2 的幾率是 63.4%。

— 下圖是 17 再次克隆 TestA 結(jié)果 —

大數(shù)據(jù)

我新建一個(gè)模型 TestB,讓它在 TestA 的基礎(chǔ)上再次訓(xùn)練。

— 下圖是 18 新建 TestB —

大數(shù)據(jù)

TestB 的訓(xùn)練結(jié)果反而不如最早的那一版模型,正確率 20.69%。

— 下圖是 19TestB 的訓(xùn)練結(jié)果 —

大數(shù)據(jù)

沒(méi)有最慘只有更慘,看我新訓(xùn)練的模型 TestC。

— 下圖是 20TestC 訓(xùn)練失敗 —

大數(shù)據(jù)

從這次測(cè)試看,最好的模型是 TestA-Clone,其次是 Clone2。

— 下圖是 21 模型結(jié)果匯總 —

大數(shù)據(jù)

但這就算找到合適模型了嗎?我又手寫了個(gè)數(shù)字 2,還特地選的黑底白字 28*28,結(jié)果這幾個(gè)模型沒(méi)一個(gè)識(shí)別準(zhǔn)確的,全部識(shí)別失敗。

— 下圖是 22. 新圖識(shí)別失敗 —

大數(shù)據(jù)

第四. 實(shí)戰(zhàn)才能出模型

本次實(shí)驗(yàn)?zāi)玫秸_率是 94.81% 的模型是意外驚喜,那個(gè)模型測(cè)其他圖片失敗倒是意料之中的。因?yàn)檫@次實(shí)驗(yàn)的初始樣本才幾千張,如果樣本數(shù)量夠多,過(guò)擬合(即噪音特征被納入模型)的可能性就越小;我用的全部是默認(rèn)調(diào)試選項(xiàng),添加其他特征項(xiàng)調(diào)試模型可能會(huì)減少欠擬合(主特征沒(méi)提取到)的幾率;我并未明確定義該模型的使用場(chǎng)景,即沒(méi)有明確訓(xùn)練數(shù)據(jù)、測(cè)試文件和生產(chǎn)文件是否相同。

我們看到完全相同配置的模型,只因?yàn)辄c(diǎn)擊生成模型的時(shí)間不同,對(duì)同一個(gè)圖片的識(shí)別結(jié)果確千差萬(wàn)別,再次強(qiáng)調(diào)這不是因果判斷而是相關(guān)性計(jì)算。實(shí)驗(yàn)結(jié)論和我上文的主張相同,模型需要拿實(shí)戰(zhàn)數(shù)據(jù)進(jìn)行實(shí)際訓(xùn)練,且我們只能預(yù)估但不能預(yù)測(cè)模型生成結(jié)果。我做這個(gè)實(shí)驗(yàn)就是給大家解釋,AI 模型訓(xùn)練不是軟件外包,不是談攏了價(jià)格就能規(guī)劃人日預(yù)估效果的。

一個(gè) AI 技術(shù)供應(yīng)商簡(jiǎn)單點(diǎn)就是賣現(xiàn)成的模型,比如說(shuō)人臉識(shí)別模型、OCR 識(shí)別模型等等。但如果客戶有定制需求,比如說(shuō)識(shí)別臉上有青春痘、識(shí)別是不是左撇子簽名,那就需要先明確技術(shù)場(chǎng)景,再準(zhǔn)備數(shù)據(jù)大干一場(chǎng)。至于練模型的時(shí)間是 1 天還是 1 個(gè)月不太確定,AI 模型訓(xùn)練像做材料試驗(yàn)一樣,可能半年也可能十年才能發(fā)現(xiàn)目標(biāo)。

第五. IT 工程師的新工作

前文我提到兩個(gè)觀點(diǎn),第二個(gè)觀點(diǎn)就是訓(xùn)練模型的工作并不難,IT 工程師可以較為容易的學(xué)會(huì)訓(xùn)練模型的工作,然后我們就能繼續(xù)擴(kuò)展從業(yè)范圍,在 AI 大浪潮中分一杯熱羹了。

首先說(shuō)技術(shù)不是門檻,我們舉個(gè) IT 工程師能聽(tīng)懂的例子:一個(gè) Oracle DBA 既沒(méi)讀過(guò)數(shù)據(jù)庫(kù)源碼,也還沒(méi)摸過(guò)新業(yè)務(wù)場(chǎng)景,甚至缺乏理論知識(shí)只能做常見(jiàn)操作;現(xiàn)在這個(gè)項(xiàng)目可以慢慢上線,讓他離線調(diào)試 SQL,拿到性能最佳值的點(diǎn)日志保存就完工了。做 AI 模型調(diào)試時(shí),懂原理懂算法會(huì)讓工作更有目的性,但更有目的性只能保證接近而不能保證命中目標(biāo)。

根據(jù)上文的實(shí)驗(yàn),我們可以看到有下列工作是需要人做的:

根據(jù)客戶的要求,提出對(duì)原始數(shù)據(jù)的需求。這里要?jiǎng)訕I(yè)務(wù)方向的腦子,比如說(shuō)想查一下什么人容易肥胖,天然能想到的是每個(gè)人的飲食和運(yùn)動(dòng)習(xí)慣,但專業(yè)醫(yī)生會(huì)告訴你要調(diào)取轉(zhuǎn)氨酶膽固醇一類的數(shù)據(jù)。原始數(shù)據(jù)需要清洗整理和標(biāo)注,沒(méi)找到相關(guān)性的樣本不是未標(biāo)注的樣本。前文試驗(yàn)中 6000 張圖片可都是標(biāo)注了 0-9 的數(shù)字的,我們測(cè)試模型是為了找到“2”這一組圖片的相關(guān)性。清洗、整理和標(biāo)注數(shù)據(jù)的工作可能是自動(dòng)也可能是人工,自動(dòng)做那就是我們寫腳本或跑大數(shù)據(jù),人工做就是提需求然后招 1500 個(gè)大媽給黃圖打框,但工程師會(huì)對(duì)打框過(guò)程全程指導(dǎo)。這里還有取巧的方法,友商的模型太貴甚至不賣,那就是直接用友商的公有云 API 接口,或者買友商大客戶的日志,讓友商幫你完成數(shù)據(jù)篩檢。上文試驗(yàn)中僅僅是圖片分類數(shù)據(jù)集,已經(jīng)有很多可調(diào)整選項(xiàng)了;生產(chǎn)環(huán)境不僅有圖片還有聲音、文字、動(dòng)作特征等數(shù)據(jù)集,數(shù)據(jù)集的設(shè)置是否合理,要不要重建數(shù)據(jù)集都需要多次調(diào)試和長(zhǎng)期觀察。實(shí)驗(yàn)中生成模型沒(méi)怎么調(diào)參數(shù)也只花了一分鐘時(shí)間,但生產(chǎn)環(huán)境的模型生成參數(shù)要經(jīng)常調(diào)整,而生成一個(gè)模型的時(shí)間可能是幾小時(shí)甚至幾天。驗(yàn)證結(jié)果的準(zhǔn)確性,如果是柔性需求可以目測(cè)幾個(gè)測(cè)試結(jié)果就把模型上線了,但如果是剛性業(yè)務(wù)可能又要組織十萬(wàn)份以上樣本進(jìn)行測(cè)試驗(yàn)證。順路說(shuō)一句,用來(lái)訓(xùn)練模型的硬件未必是適用于來(lái)驗(yàn)證和跑生產(chǎn)環(huán)境的,如果是高壓力測(cè)試可能還要換硬件部署。模型也有日常維護(hù),可能隨著數(shù)據(jù)集的更新模型也要定期更新,也可能發(fā)現(xiàn)模型有個(gè)致命的誤判會(huì)威脅到業(yè)務(wù),這都需要及時(shí)處理。

第六. 附贈(zèng)的小觀點(diǎn)

談到最后再附贈(zèng)一些個(gè)人觀點(diǎn),隨機(jī)想的,只寫論點(diǎn)不寫論證過(guò)程了:

現(xiàn)在搭建和使用 AI 環(huán)境很難,但軟件會(huì)進(jìn)步和解決這個(gè)問(wèn)題;三年前云計(jì)算平臺(tái)很難部署和維護(hù),現(xiàn)在遍地都是一鍵部署和 UI 維護(hù)的云平臺(tái)方案。深度學(xué)習(xí)這個(gè)技術(shù)領(lǐng)域太吃數(shù)據(jù)和算力了,人腦不會(huì)像 AI 這么笨,可能以后會(huì)有新技術(shù)出現(xiàn)取代深度學(xué)習(xí)在 AI 領(lǐng)域的地位。因?yàn)樾枰獢?shù)據(jù)和算力,搞個(gè) AI 公司比其他創(chuàng)業(yè)企業(yè)更難;現(xiàn)在有名的 AI 創(chuàng)業(yè)企業(yè)都是單一領(lǐng)域深耕三年以上,讓用戶提供數(shù)據(jù)他們只做單一典型模型。同樣巨頭企業(yè)搞 AI 也不容易,即使挖到人 AI 項(xiàng)目也要花時(shí)間冷起動(dòng),清洗數(shù)據(jù)不僅消耗體力同樣消耗時(shí)間。深度學(xué)習(xí)的計(jì)算過(guò)程不受控制,計(jì)算結(jié)果需要人來(lái)驗(yàn)證,所以它不能當(dāng)做法務(wù)上的證據(jù)。當(dāng) AI 發(fā)現(xiàn)嫌疑人時(shí)警察會(huì)立刻采取行動(dòng),但它的創(chuàng)造者都無(wú)法描述 AI 下一步會(huì)如何下圍棋。一個(gè)嬰兒能尿出來(lái)世界地圖,某人隨手亂輸能碰對(duì)銀行卡的密碼,AI 會(huì)告訴你股市 99.99% 要暴漲,但這些都不能當(dāng)做獨(dú)立單責(zé)的證據(jù)。搞 AI 需要準(zhǔn)備大量數(shù)據(jù),中國(guó)對(duì)美國(guó)有個(gè)特色優(yōu)勢(shì),可以做數(shù)據(jù)標(biāo)注的人很多而且價(jià)格便宜,但到模型實(shí)踐這一步,中國(guó)的人力成本太低又限制了 AI 走向商用。不要恐慌 AI 會(huì)消滅人類,對(duì)人類有威脅的 AI 肯定是有缺陷的 AI,但人類一樣也選出過(guò)希特勒這類有缺陷的領(lǐng)袖。也不要鼓吹 AI 會(huì)讓人類失業(yè)社會(huì)動(dòng)蕩的,大家還是老老實(shí)實(shí)談星座運(yùn)勢(shì)吧,我為什么就不擔(dān)心自己失業(yè)?有些事 AI 的確準(zhǔn)率看起來(lái)很低實(shí)其很高,比如兩人對(duì)話聽(tīng)能清楚 80% 的字就不錯(cuò)了,AI 只聽(tīng)懂 85% 了的文字已經(jīng)越超人類了。你看我打倒顛字序并不影響你讀閱啊。

極客網(wǎng)企業(yè)會(huì)員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。

2017-10-18
十年云計(jì)算老兵零基礎(chǔ)進(jìn)軍深度學(xué)習(xí)方法論
作者:曹亞孟 人工智能是當(dāng)今的熱議行業(yè),深度學(xué)習(xí)是熱門中的熱門,浪尖上的浪潮,但對(duì)傳統(tǒng) IT 從業(yè)人員來(lái)說(shuō),人工智能技術(shù)到處都是模型、算法、矢量向量,太晦澀難

長(zhǎng)按掃碼 閱讀全文