此為資深科技圈記者 Michael Copeland 撰文介紹深度學習基礎系列文章的第二篇。
深度神經網路進行「訓練」階段,就猶如校園裡的授課活動。就跟大多數人接受教育的理由一樣,神經網路接受教育的理由也是學習怎麼執行工作。
更明確一點來說,經過訓練的神經網路會在數位環境裡發揮所學習到的內容,通過應用程式這種簡單的型態來辨識影像、人類語言、血液疾病,或是建議人們可能下一雙會買的鞋子等等。這個速度更快、效率更高的神經網路會按照訓練過的內容,猜想新資料的走向。在人工智慧圈的詞彙裡,這稱為「inference」(推論)。
未經過訓練便不會進行推論,這句話很合理,在多數的情況下我們也是這麼獲得和運用知識。就跟我們不會將所有師資、滿載的書架和一間紅磚校舍帶在身邊才能閱讀莎士比亞的十四行詩一樣,推論也不需要訓練方式的各種基礎架構才能做好工作。
因此接下來我將區分從訓練到推論的各項動作,在人工智慧的領域裡介紹它們的運作方式。
訓練深度神經網路
雖說目標是一致的,也就是獲取知識,教育或說是訓練神經網路的過程卻跟人類的學習過程並不一樣(好險)。神經網路就只有神經元互連這一點像是人腦的生物構造,而跟在特定實體距離內任一神經元可連接至任何一個其它神經元的人腦不同的是,人造神經網路具備獨立的資料傳播層次、連結和方向。
在訓練神經網路之際,訓練資料投入網路的第一層,個別神經元依據要執行的工作,對輸入內容的正確或錯誤程度指定一個權重值。
在一個影像辨識網路裡,第一層可能尋找邊緣,第二層可能是尋找這些邊緣如何組成長方形或圓形這些形狀,第三層可能是尋找特定的特徵,像是閃閃動人的雙眼或塌鼻子。每一層將影像傳遞給下一層,直到最後一層按照這些權重值的總合來判斷最終輸出內容。
這樣子的訓練跟人腦的訓練方式卻又不盡相同。以辨識貓咪的圖片為例,神經網路取得所有訓練用的圖片、給予權重值,判斷是否為貓咪。從訓練演算法只獲得「對」或「錯」的回應。
訓練需要用到大量運算資源
要是演算法告訴神經網路它錯了,並不會獲得正確的答案,而錯誤內容會傳回網路各層,網路得猜測其它內容。在每次嘗試裡網路都必須考慮其它屬性,在此例裡便是「像貓」的這個屬性,在更高或更低的各層對研究的屬性給予權重值。然後一而再、再而三進行猜測,直到每次都獲得正確的權重值和答案。對,這是一隻貓。
現在你有了資料結構,也按照學習到的內容對結構內的各項權重值加以平衡。這是一項微調的作業,不過它也是一個消耗龐大運算資源的怪獸。在 Google 和史丹佛大學開發出他的人工智慧方案,現為百度矽谷實驗室首席科學家的吳恩達(Andrew Ng),表示訓練百度其中一項中文語音辨識模型時,在整個訓練週期裡不只需要 4TB 的訓練資料量,還要投入 20 exaflops 的運算資源,那可是兩千萬兆次的數學運算過程。你可以試著在智慧型手機上跑跑看。
這便是運用推論技術的時候。
恭喜! 你的神經網路已經完成訓練,準備好進行推論作業
經過給予適當權重值的神經網路,基本上是一個龐大的資料庫。得放進網路進行學習的內容(以我們的實體教育環境來打個比方好了,就是鉛筆、書冊和老師們不悅的表情),超出完成特定工作所需的資料。是不是要到畢業之際才能擺脫掉那些東西?
要是有人真的想在實際環境裡進行訓練,重點來了,你需要一個處理速度飛快的應用程式,在一邊學習的同時,又能快速將學習成果用在從未見過的資料上。而那正是推論:取用小批次的實體資料,帶著相同的正確答案(其實是預測正確答案)回頭快速處理。
這在電腦科學圈裡是一個相當新的領域,有著帶領並調整龐大神經網路的兩項主要作法,以求快速處理資料和改善在其它網路上運行之應用程式裡的延遲情況。
推論的運作方式
第一個方法是尋找神經網路在經過訓練後尚未啟動的部分,還無需使用它們,可以被「刪除」。第二個方法是尋求將神經網路的多個層次融合成單一運算步驟。
這就像是壓縮數位影像的方式。設計師會使用到這些寬高為數百萬像素、龐大又漂亮的圖片,不過要放上網路的時候,會將圖片轉成 jpeg 格式,圖片內容幾乎相同,人眼分辨不出差異,只是解析度可小多了。推論技術也是這個道理,你會得到幾乎相同正確的預測內容,而它是針對執行時間效能進行簡化、壓縮和優化的結果。
那代表著我們隨時都在使用推論技術。智慧型手機上的語音啟動助理使用推論技術,Google 的語音辨識、圖片搜尋和垃圾郵件篩選功能也有使用。百度也將推論技術用在語音辨識、惡意軟體偵測和垃圾郵件篩選作業上。Facebook 的影像辨識及 Amazon、Netflix 的推薦引擎都是使用推論技術的成果。
擁有平行運算能力(或是同時處理多項事情)的 GPU,擁有絕佳的訓練和推論能力。
使用 GPU 進行訓練的系統讓電腦辨識圖形和物體的能力,就跟人類一樣好(在某些情況下甚至超越人類)(請見《透過 GPU 加快人工智慧運算速度:嶄新的運算模型,Accelerating AI with GPUs: A New Computing Model, Accelerating AI with GPUs: A New Computing Model》一文)。
完成訓練後,神經網路會用在「推論」上,即對資料進行分類以「猜想」出結果。GPU 加上其平行運算能力在這裡又派上用場,在經過訓練的網路上進行數十億次的運算,以辨識出已知的圖形或物體。
你可以見到這些模型和應用程式會怎麼變得更聰明、速度更快,且獲得更正確的答案。訓練會變得更輕鬆,推論技術將在我們生活裡的各方面誕生出新的應用方式。看來對人工智慧和年輕的孩子們都能告誡同一件事:別犯傻了,多學著點吧。推論技術也等著呢。
深入瞭解
如需更多相關資訊,請立即造訪我們的深度學習網頁。