作者:蘇勇Andrew
使用神經網絡實現機器學習,網絡的每個層都將對輸入的數據做一次抽象,多層神經網絡構成深度學習的框架,可以深度理解數據中所要表示的規律。從原理上看,使用深度學習幾乎可以描述和模擬一切規律,但實際上,這個過程效率非常低,需要消耗大量的存儲空間描述網絡的參數,并且需要大量的數據樣本覆蓋規律可能涉及到的情景。
優秀的數學家們在過往的研究中,已經發現和總結出了一些描述規律的方法,例如,使用FFT提取數據流中的頻率和能量分布特征,我們并不需要再用神經網絡的方式以非常低效的方式模擬這些已知的規律,尤其是在資源受限的嵌入式硬件環境當中。一種較好的實踐,是利用已知的、高效的特征提取方法作為機器學習框架(AI模型)的前端,取代用于模擬其中規律的初級網絡結構,然后再結合更小巧的機器學習方法,例如SVM,或者小規模的NN網絡做更高層次的抽象,從而設計出小巧高效的模型。
總結觀點:
使用深度學習表示規律效率低。
在機器學習中使用深度網絡替代已知的數學公式是愚蠢的。
將已有數學公式表示的特征提取方法和小規模深度學習結合,是資源受限的嵌入式AI應用的一種有效實踐。
如下原文是我在瑞薩的一位專職于AI技術開發的同事Stuart Feffer(Reality AI的創始人之一)發表的一篇博客,我翻譯了其中大部分內容,以展開闡述在對數據樣本做預處理的過程中使用合適的特征變換對深度學習的意義。
深度學習(Deep Learning)幾乎已經主導了機器學習領域——它可以利用簡單疊加多層神經網絡來發現底層數據中隱藏的規律,并且取得了巨大成功。
例如,當使用深度學習來識別一張貓的圖片時,深度網絡的最低層會學習識別邊緣、明暗梯度等視覺特征。然后,更高層次的網絡會學習將這些特征組合成的各種模式,再更高層次的網絡會學習這些模式組合形成的標志性的形態,而更高層次的網絡則會學習進一步將這些形態組合起來以識別出貓。
在那些數據中隱藏的規律過于復雜、無法通過其他方式被發現的情況下,深度學習有著巨大的優勢。只要有足夠的時間和數據,深度學習幾乎可以學習到任何合理的變換規律。深度學習能夠破解出世界上所有的特征。然而,這總是個好主意嗎?在受限(嵌入式)環境中,它可能是不適合的。
相比于其他傳統數值方法,深度學習的收斂速度慢得離譜。幾個世紀以來,杰出的數學家們付出了巨大努力,為大量的問題想出了最優解決方案,比如:從已知分布進行統計推斷、對許多重要類型函數的近似、線性代數中的信息分析,以及像快速傅里葉變換(FFT)這樣的頻域分析方法。實際上,深度學習方法是試圖用統一的結構和方法,以解決不同的新問題——它們或許能得到接近真實的結果,但卻要以極高的低效率為代價。
舉個例子,在嵌入式應用中有一個常見的問題:描述和監測一臺旋轉設備的工作狀況。在這一領域的經典工程學中,一個典型方法是使用傅里葉變換——振動和旋轉具有天然的屬性特征,即是頻率,另外,監測功率峰值和頻譜形狀也能揭示出大量信息。有些峰值是在預期內會出現的,而有些則是不好的(意味著設備可能存在問題)。
此時,假設我們有一個二分類問題,使用FFT能夠巧妙地區分兩個類別:正常和故障。但是,當我們不知道FFT能取得很好效果的時候,我們沒有運行FFT并將其得到的特征用作模型輸入,而是直接構建了一個深度學習模型,并讓它去學習這兩個類別——實際上是希望在深度網絡的較低層中模擬出這種傅里葉變換。
快速傅里葉變換是一種由人類精心設計的出色算法,用于實現所謂的離散傅里葉變換(DFT)。但離散傅里葉變換本質上是一種線性矩陣運算,所以將DFT映射到神經網絡(神經網絡就是在進行輸入向量和權重矩陣的乘法計算)中是相當簡單的。它看起來會像是一層全連接的節點集合,(理想情況下)權重接近離散傅里葉變換矩陣,并且使用線性激活函數。然后,這個單一的特征層可以連接到更高層,以便基于傅里葉峰值做出決策。
但是,我們來考慮一下這里的各個方面:
為了得到這種簡單的表示形式,我們實際上不得不為這一層設計特殊的線性激活函數,而在大多數的深度網絡是使用非線性的激活函數。這就意味著常規構建的深度網絡已經有些偏離了目標。
為了使這個網絡收斂到接近實際的離散傅里葉變換,需要一大組組織良好的示例數據,這些數據要涵蓋整個頻率空間。來自實際振動或旋轉設備的真實數據可能無法提供這種多樣性,從而無法訓練出一個描述完備的網絡。
即使是這種離散傅里葉變換的“最佳情況”網絡表示,也需要N^2次乘法運算。而快速傅里葉變換(FFT)的優勢就在于它只需要N log2(N)次運算。為什么我們要故意讓在嵌入式芯片上執行的更大的運算量呢?
快速傅里葉變換只是眾多特征空間運算的例子之一,當這些運算通過神經網絡來學習時,會陷入不必要的困境。對于我們所描述的嵌入式應用中“關鍵頻率峰值”的問題,甚至還可以有更有效的數學表示方法表示其中的規律,但如果使用深度學習網絡表示這個規律,若沒有巨大的計算資源,實際上不可能對其進行建模。
還有一些甚至更簡單的變換,神經網絡處理起來也很困難。像平方或開平方根這樣基本的運算,都需要借助隱藏層網絡以及數量極不相稱的大量節點才能精確求解。諸如,標準差或均方根,這樣明顯的工程度量指標,若要使用神經網絡來學習和計算它們,效率也極其低下。
所以,尤其是對于嵌入式和資源受限的應用場景,使用特征空間是一種更好的方法。
借助深度學習從頭開始學習數學特征是可行的。但對于某些問題而言,這可能并非良策,而對于那些每個時鐘周期和每字節內存都十分關鍵的受限或嵌入式應用來說,這無疑是一場必輸的博弈。如果存在更直接的方法,那么使用深度學習來進行特征發現就是對資源的極大浪費。對于這些應用來說,更好的做法,是使用那些已知的、或者能夠被證明可以區分目標類別的可靠特征。
Reality AI基于自動化的智能特征提取。我們采用機器學習作為AI算法框架,探索種類繁多且已被充分理解的數學和工程領域的特征空間,并應用諸如稀疏編碼之類的機制,從而比直接使用深度學習更快地收斂到相關特征,并更高效地表達這些特征。
這有兩個優點:
由此得出的特征計算在計算效率上很高,尤其適合資源受限的嵌入式環境。
從基礎物理和時頻特性方面來看,計算結果是可以解釋的,無需借助任何由網絡所表示的“黑箱”操作。
利用以這種方式發現的特征空間,再進行機器學習,仍然能夠發揮機器學習在做出復雜決策方面的優勢。如此,還可以部署更簡單的算法,比如支持向量機(SVM)、決策樹或規模較小的神經網絡,與深度學習相比,能大幅節省資源。
近年來,深度學習已被用于實現一些非凡的成就。但它并非是解決所有問題的萬能鑰匙。套用羅伯特?海因萊因(Robert Heinlein,20世紀最有影響力的科幻作家之一)的話來說,“對于某些問題而言,使用深度學習有點像是試圖教豬唱歌。這既浪費你的時間,又會惹惱那頭豬。”
-
嵌入式
+關注
關注
5122文章
19423瀏覽量
312766 -
AI
+關注
關注
87文章
33442瀏覽量
273993 -
深度學習
+關注
關注
73文章
5544瀏覽量
122273
原文標題:嵌入式AI技術漫談 | 深度學習的困局
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
探討一下深度學習在嵌入式設備上的應用
TDA4對深度學習的重要性
深度學習介紹
深度學習是什么?了解深度學習難嗎?讓你快速了解深度學習的視頻講解
基于深度學習的自然語言處理對抗樣本模型

深度學習在嵌入式設備上的應用

如何在深度學習結構中使用紋理特征

評論