讓深度學習告別密集計算,新技術可減少95%計算量
萊斯大學的計算機科學家已經改編了一種普遍使用的技術來快速檢查數據從而削減計算量,因此深度學習所需的能耗和時間也有所削減。
萊斯大學的助理教授 Anshumali Shrivastava 說,「它應用于任何深度學習架構,該技術都能亞線性地擴展,也就是應用到的深度神經網絡越大節省的計算越多。」
該研究將會發布在今年的 KDD 會議上被介紹,它解決了谷歌、Facebook、微軟等大公司面臨的***難題之一。這些大公司都在爭相建立、訓練、部署大量的深度學習網絡來發展不同的產品,例如自動駕駛汽車、翻譯、郵件智能回復。
Shrivastave 和萊斯大學的研究生 Ryan Spring 表示該技術來自于哈希法(hashing),一種行之有效的數據檢索方法,經過改編可極大地減少深度學習的計算成本。哈希法使用哈希函數將數據轉換為易管理的小數值哈希(被稱作 hash)。哈希被存儲在表格中,類似于印刷書中的索引。
Spring 說:「我們的方法融合了兩項技術——巧妙的本地敏感性哈希法變體(variant of locality-sensitive hashing)和稀疏反向傳播變體——以減少計算需求,且不附帶大量的精確度損失。例如,在小規模的測試中發現我們可以降低 95% 的計算,但是和通過標準方法獲取的精確度依然差 1% 以內。」
深度學習網絡的基本構建塊是人工神經元。盡管在 1950 年代就被作為生物大腦神經元的模型,人工神經元還僅僅是把輸入數據轉化為輸出結果的數學函數和方程式。
在機器學習中,所有神經元都有相同的初始狀態,就像白紙一樣,它們會隨著訓練擁有各自的特定功能。在訓練中,神經網絡「看到」了大量數據,每個神經元都會成為識別數據中特定模式的專用結構。在***層,神經元執行簡單的任務。例如在圖像識別應用中,底層神經元或許用于識別亮/暗,或是物體的邊緣。來自這些神經元的輸出會被傳遞到網絡中下一層的神經元那里,經受其他模式的識別和處理。僅有幾層的神經網絡即可識別面部、貓狗、交通指示牌和校車等概念。
Shrivastava 說:「向神經網絡層級添加更多的神經元能擴展其表現性能,而我們希望神經網絡沒有大小上限,據報道谷歌正在嘗試訓練一個包含 1370 億神經元的模型。」相比之下,對于訓練和部署這樣的神經網絡可能會有計算力的限制。
他說:「如今使用的大部分機器學習算法都開發于 30 至 50 年前,設計時并未考慮計算復雜性。但有了大數據之后,在資源上有了基本的限制,比如計算周期、能耗和存儲。我們實驗室旨在解決這些限制。」
Spring 表示,大規模的深度網絡中,哈希法將會極大地節省計算量和能耗。
他說:「節能隨著規模而增加是由于我們利用了大數據之中的稀疏性。例如,我們知道一個深度網絡有 10 億個神經元。對于任何給定的輸入,比如一只狗的圖片,只有其中的幾個會變興奮。按照數據用語,我們將其稱為稀疏性,而正是由于稀疏性,我們的方法將在網絡變大之時節能更多。因此,當我們展示了 1000 個神經元的 95% 的節能時,數學表明我們可以為 10 億個神經元實現超過 99% 的節能。」
論文:通過隨機化哈希的可擴展和可持續的深度學習(Scalable and Sustainable Deep Learning via Randomized Hashing)
鏈接地址:https://arxiv.org/abs/1602.08194
摘要:為了能在復雜的數據集上進行學習,當前深度學習架構正變得越來越大。這些架構需要極大量的矩陣乘法運算以訓練數以百萬計的參數。相對地,還有另一個正在發展的趨勢想要將深度學習引入低功耗的、嵌入式的設備中。這些矩陣運算(深度網絡的訓練和測試都需要)在計算和功耗上都有很高的成本。我們提出了一種全新的基于哈希法(hashing)的技術,可以極大地減少深度網絡的訓練和測試所需的計算量。我們的方法結合了自適應 dropout(adaptive dropout)和用于***內積搜索(maximum inner product search)的隨機化哈希(randomized hashing),從而可以有效地選擇有***激活(activation)的節點。我們用于深度學習的新算法可以運行在顯著更少(稀疏)的節點上,從而可以極大減少前向和反向傳播的總計算成本。因此,我們的算法可以僅使用 5% 的總乘法量就平均保持在原模型準確度的 1% 的范圍內。這里提出的基于哈希法的反向傳播有一個獨特的性質:其更新總是稀疏的。因為這種稀疏的梯度更新,我們的算法可以***地用于異步和并行的訓練,可以通過增加內核的數量來實現近乎線性的加速。我們通過在幾個真實數據集上的嚴格評估證明了我們提出的算法的可擴展性和可持續性(能效)。
算法 1:使用隨機化哈希的深度學習
圖 2:一個使用隨機化哈希的神經網絡的可視化表示
圖 2中(1) 通過對每一隱藏層的權重進行哈希操作來構建哈希表;(2) 使用該層的隨機化哈希函數來對該層的輸入進行哈希操作;(3) 查詢該層用于活動集 AS 的哈希表;(4) 僅在該活動集中的神經元上執行前向和反向傳播。隱藏層中實心涂色的神經元是活動神經元。(5) 對更新后的權重重新執行哈希至新的哈希位置,從而更新 AS 權重和哈希表。
原文:https://phys.org/news/2017-06-scientists-slash-deep.html
【本文是51CTO專欄機構“機器之心”的原創譯文,微信公眾號“機器之心( id: almosthuman2014)”】