過參數化主要是指在訓練階段,在數學上需要進行大量的微分求解,去捕抓數據中的微小變化信息,一旦完成迭代式的訓練之後,網路模型推理的時候就不需要這么多參數。而剪枝演算法正是基於過參數化的理論基礎而提出的。
剪枝演算法核心思想就是減少網路模型中參數量和計算量,同時盡量保證模型的性能不受影響。
那在AI框架中,實際上剪枝主要作用在右下角的端側模型推理應用場景中,為的就是讓端側模型更小,無論是平板、手機、手錶、耳機等小型IOT設備都可以輕松使用AI模型。而實際在訓練過程更多體現在剪枝演算法和框架提供的剪枝API上面。
實際上大部分剛接觸剪枝演算法的時候,都會從從宏觀層面去劃分剪枝技術,主要是分為Drop Out和Drop Connect兩種經典的剪枝演算法,如下圖所示。
1)Drop Out:隨機的將一些神經元的輸出置零,稱之為神經元剪枝。
2)Drop Connect:隨機將部分神經元間的連接Connect置零,使得權重連接矩陣變得稀疏。
下面會把剪枝的更多種方式呈現出來,可能會稍微復雜哈。從剪枝的粒度來劃分,可以分為結構化剪枝和非結構化剪枝,2個剪枝結構方法。下面來看看具體的剪枝方法有4種:
細粒度剪枝、向量剪枝、核剪枝在參數量與模型性能之間取得了一定的平衡,但是網路模型單層的神經元之間的組合結構發生了變化,需要專門的演算法或者硬體結構來支持稀疏的運算,這種叫做 結構化剪枝(Unstructured Pruning) 。
其中,非結構化剪枝能夠實現更高的壓縮率,同時保持較高的模型性能,然而會帶來網路模型稀疏化,其稀疏結構對於硬體加速計算並不友好,除非底層硬體和計算加速庫對稀疏計算有比較好的支持,否則剪枝後很難獲得實質的性能提升。
濾波器剪枝(Filter-level)主要改變網路中的濾波器組和特徵通道數目,所獲得的模型不需要專門的演算法和硬體就能夠運行,被稱為 結構化剪枝(Structured Pruning) 。結構化剪枝又可進一步細分:可以是channel-wise,也可以是filter-wise,還可以是在shape-wise。
結構化剪枝與非結構化剪枝恰恰相反,可以方便改變網路模型的結構特徵,從而達到壓縮模型的效果,例如知識蒸餾中的student網路模型、NAS搜索或者如VGG19和VGG16這種裁剪模型,也可以看做變相的結構化剪枝行為。
雖然剪枝演算法的分類看上去很多,但是核心思想還是對神經網路模型進行剪枝,目前剪枝演算法的總體流程大同小異,可以歸結為三種:標准剪枝、基於子模型采樣的剪枝、以及基於搜索的剪枝,如下圖所示。
標准剪枝是目前最流行的剪枝流程,在Tensorflow、Pytroch都有標準的介面。主要包含三個部分:訓練、剪枝、以及微調。
1) 訓練 :首先是對網路模型進行訓練。在剪枝流程中,訓練部分主要指預訓練,訓練的目的是為剪枝演算法獲得在特定基礎SOTA任務上訓練好的原始模型。
3) 微調 :微調是恢復被剪枝操作影響的模型表達能力的必要步驟。結構化模型剪枝會對原始模型結構進行調整,因此剪枝後的模型參數雖然保留了原始的模型參數,但是由於模型結構的改變,剪枝後模型的表達能力會受到一定程度的影響。實現上,微調網路模型,參數在計算的時候先乘以該Mask,Mask為1的參數值將繼續訓練通過BP調整梯度,而Mask為0的部分因為輸出始終為0則不對後續部分產生影響。
4) 再剪枝 :再剪枝過程將微調之後的網路模型再送到剪枝模塊中,再次進行模型結構評估和執行剪枝演算法。目的是使得每次剪枝都在性能更優的模型上面進行,不斷迭代式地進行優化剪枝模型,直到模型能夠滿足剪枝目標需求。
最後輸出模型參數儲存的時候,因為有大量的稀疏,所以可以重新定義儲存的數據結構, 僅儲存非零值以及其矩陣位置。重新讀取模型參數的時候,就可以還原矩陣。
除標准剪枝之外,基於子模型采樣的剪枝《EagleEye: Fast sub-net evaluation for efficient neural network pruning》最近也表現出比較好的剪枝效果。得到訓練好的模型之後,進行子模型采樣過程。一次子模型采樣過程為:
1)對訓練好的原模型中可修剪的網路結構,按照剪枝目標進行采樣,采樣過程可以是隨機的,也可以按照網路結構的重要性或者通過KL散度計算進行概率采樣。
2)對采樣後的網路結構進行剪枝,得到采樣子模型。子模型采樣過程通常進行 次,得到 個子模型( ≥1), 之後對每一個子模型進行性能評估。子模型評估結束之後,選取最優的子模型進行微調以得倒最後的剪枝模型。
基於搜索的剪枝主要依靠強化學習等一系列無監督學習或者半監督學習演算法,也可以是神經網路結構搜索相關理論。
給定剪枝目標之後,基於搜索的剪枝在網路結構中搜索較優的子結構,這個搜索過程往往伴隨著網路參數的學習過程,因此一些基於搜索的剪枝演算法在剪枝結束後不需要再進行微調。
這幾年神經網路剪枝pruning作為模型壓縮技術的四小龍之一,正在受到越來越多的關注。當然,各種更好的pruning參數選取方法一定還會層出不窮。另外,從趨勢來看,以下幾個方向值得關註:
打破固定假設 :挑戰已有的固有的假設,例如ICLR2019會議的best paper彩票假說《The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks 》的出現。還有一開始提到的對於over-parameterization,與重用已有參數是否有有益的反思非常有意思。這樣的工作會給剪枝演算法非常大的啟發,從而根本改變解決問題的思路。
自動化剪枝 :隨著AutoML的大潮,越來越多的演算法開始走向自動化。模型壓縮能拉下嗎?當然不能。經過前面的介紹我們知道,像ADC,RNP,N2N Learning這些工作都是試圖將剪枝中部分工作自動化。如量化中的《HAQ: Hardware-Aware Automated Quantization》考慮網路中不同層信息的冗餘程度不一樣,所以自動化使用混合量化比特進行壓縮。
與NAS融合 :如前面模型剪枝流程中提到,剪枝演算法與神經網路搜索NAS的界限已經模糊了。NAS有針對結構化剪枝進行搜索方法,如One-Shot Architecture Search是先有一個大網路,然後做減法。NAS與模型壓縮兩個一開始看似關系不是那麼大的分支,在近幾年的發展過程中因為下游任務和部署場景的需求,最後似乎會走到一塊去。這兩個分支今天有了更多的交集,也必將擦出更多的火花。
與GAN融合 :這幾年機器學習最火熱的分支之一GAN,正在不斷滲透到已有領域,在pruning中也開始有它的身影。如2019年《Towards Optimal Structured CNN Pruning via Generative Adversarial Learning》讓generator生成裁剪後網路,discrimintor來判別是否屬於原網路還是裁剪後網路,從而進行更有效的網路結構化裁剪。
硬體稀疏性支持 :剪枝會給神經網路模型帶來稀疏性特徵,參數稀疏性在計算中會有大量的索引,所以並不能加速。現在雖然有像cuSPARSE這樣的計算庫,但底層硬體AI晶元本身設計並不是專門為稀疏數據處理打造的。如果能將稀疏計算和處理能力做進晶元那必將極大提高計算效率。僅2021年中國就推出了10+款基於ASIC的AI加速晶元,相信針對稀疏性場景的支持在未來會有所突破。
模型壓縮演算法中針對已有的模型,有:張量分解,模型剪枝,模型量化。針對新構建的網路,有:知識蒸餾,緊湊網路設計等方法。
剪枝只是模型壓縮方法中的一種,它與其它模型壓縮方法並不沖突,因此會與量化、蒸餾、NAS、強化學習等方法慢慢融合,這些都是很值得研究的方向。另外在上面的發展來看,打破固有的假設定義,與NAS、GAN、AutoML、RL等技術進行相互的融合,可能到最後會模糊purning方式,出現新的範式或者壓縮模式也是很吸引的。
『貳』 有誰知道,怎樣壓縮3D模型的大小
在3dsmax中,可以選擇變化工具里的縮放工具縮放模型大小,快捷鍵R,也可以使用,工具面板下的隱藏工具,重縮放世界單位來縮放場景或者選定模型的大小,希望以上回答對你有用。
『叄』 cnn和cnn與bilstm對於多分類哪個精度高
bilstm對於多分類精度高。
BiLSTM:Bi-directionalLongShort-TermMemory的縮寫,是由前向LSTM與後向LSTM組合而成。
可以看出其很適合做上下有關系的序列標注任務,因此在NLP中常被用來建模上下文信息。
我們可以簡單理解為雙向LSTM是LSTM的改進版,LSTM是CNN的改進版。
這里簡單說一下CNN,熟悉的可以直接跳過。CNN的意思是,為了預測最後的結果,我先用第一個詞預測,當然,只用第一個預測的預測結果肯定不精確,我把這個結果作為特徵,跟第二詞一起,來預測結果;接著,我用這個新的預測結果結合第三詞,來作新的預測;然後重復這個過程;直到最後一個詞。這樣,如果輸入有n個詞,那麼我們事實上對結果作了n次預測,給出了n個預測序列。整個過程中,模型共享一組參數。因此,CNN降低了模型的參數數目,防止了過擬合,同時,它生來就是為處理序列問題而設計的,因此,特別適合處理序列問題。LSTM對CNN做了改進,使得其能夠捕捉更長距離的信息。但是不管是LSTM還是CNN,都有一個問題,它是從左往右推進的,因此後面的詞會比前面的詞更重要。因此出現了雙向LSTM,它從左到右做一次LSTM,然後從右到左做一次LSTM,然後把兩次結果組合起來。
『肆』 CNN模型的體系結構和參數對其分類能力的影響
卷積神經網路(CNN)是當今廣泛使用的一種深度神經網路模型,它是在人工神經網路的基礎上引入了卷積運算和采樣操作,這種運算極大提高了提取信號特徵的能力。
與傳統神經網路相比,CNN大大減少了模型的參數,網路結構也更加簡單。CNN可以看成是一個特殊的深度神經網路,最大的特點是在輸入與輸出層之間的隱藏層中,增加了卷積層和池化層。這樣就減少了層與層之間神經元的相互連接,降低了計算參數數量級,使得CNN較傳統神經網路更加適用於圖像的分類任務。
『伍』 CNN、RNN、DNN的一般解釋
CNN(卷積神經網路)、RNN(循環神經網路)、DNN(深度神經網路)的內部網路結構有什麼區別?
轉自知乎 科言君 的回答
神經網路技術起源於上世紀五、六十年代,當時叫 感知機 (perceptron),擁有輸入層、輸出層和一個隱含層。輸入的特徵向量通過隱含層變換達到輸出層,在輸出層得到分類結果。早期感知機的推動者是Rosenblatt。 (扯一個不相關的:由於計算技術的落後,當時感知器傳輸函數是用線拉動變阻器改變電阻的方法機械實現的,腦補一下科學家們扯著密密麻麻的導線的樣子…)
但是,Rosenblatt的單層感知機有一個嚴重得不能再嚴重的問題,即它對稍復雜一些的函數都無能為力(比如最為典型的「異或」操作)。連異或都不能擬合,你還能指望這貨有什麼實際用途么o(╯□╰)o
隨著數學的發展,這個缺點直到上世紀八十年代才被Rumelhart、Williams、Hinton、LeCun等人(反正就是一票大牛)發明的 多層感知機 (multilayerperceptron)克服。多層感知機,顧名思義,就是有多個隱含層的感知機(廢話……)。好好,我們看一下多層感知機的結構:
圖1 上下層神經元全部相連的神經網路——多層感知機
多層感知機可以擺脫早期離散傳輸函數的束縛,使用sigmoid或tanh等連續函數模擬神經元對激勵的響應,在訓練演算法上則使用Werbos發明的反向傳播BP演算法。對,這貨就是我們現在所說的 神經網路 NN ——神經網路聽起來不知道比感知機高端到哪裡去了!這再次告訴我們起一個好聽的名字對於研(zhuang)究(bi)很重要!
多層感知機解決了之前無法模擬異或邏輯的缺陷,同時更多的層數也讓網路更能夠刻畫現實世界中的復雜情形。相信年輕如Hinton當時一定是春風得意。
多層感知機給我們帶來的啟示是, 神經網路的層數直接決定了它對現實的刻畫能力 ——利用每層更少的神經元擬合更加復雜的函數[1]。
(Bengio如是說:functions that can be compactly
represented by a depth k architecture might require an exponential number of
computational elements to be represented by a depth k − 1 architecture.)
即便大牛們早就預料到神經網路需要變得更深,但是有一個夢魘總是縈繞左右。隨著神經網路層數的加深, 優化函數越來越容易陷入局部最優解 ,並且這個「陷阱」越來越偏離真正的全局最優。利用有限數據訓練的深層網路,性能還不如較淺層網路。同時,另一個不可忽略的問題是隨著網路層數增加, 「梯度消失」現象更加嚴重 。具體來說,我們常常使用sigmoid作為神經元的輸入輸出函數。對於幅度為1的信號,在BP反向傳播梯度時,每傳遞一層,梯度衰減為原來的0.25。層數一多,梯度指數衰減後低層基本上接受不到有效的訓練信號。
2006年,Hinton利用預訓練方法緩解了局部最優解問題,將隱含層推動到了7層[2],神經網路真正意義上有了「深度」,由此揭開了深度學習的熱潮。這里的「深度」並沒有固定的定義——在語音識別中4層網路就能夠被認為是「較深的」,而在圖像識別中20層以上的網路屢見不鮮。為了克服梯度消失,ReLU、maxout等傳輸函數代替了sigmoid,形成了如今DNN的基本形式。單從結構上來說, 全連接的 DNN 和圖 1 的多層感知機是沒有任何區別的 。
值得一提的是,今年出現的高速公路網路(highway network)和深度殘差學習(deep resial learning)進一步避免了梯度消失,網路層數達到了前所未有的一百多層(深度殘差學習:152層)[3,4]!具體結構題主可自行搜索了解。如果你之前在懷疑是不是有很多方法打上了「深度學習」的噱頭,這個結果真是深得讓人心服口服。
圖2 縮減版的深度殘差學習網路,僅有34 層,終極版有152 層,自行感受一下
如圖1所示,我們看到 全連接 DNN 的結構里下層神經元和所有上層神經元都能夠形成連接 ,帶來的潛在問題是 參數數量的膨脹 。假設輸入的是一幅像素為1K*1K的圖像,隱含層有1M個節點,光這一層就有10^12個權重需要訓練,這不僅容易過擬合,而且極容易陷入局部最優。另外,圖像中有固有的局部模式(比如輪廓、邊界,人的眼睛、鼻子、嘴等)可以利用,顯然應該將圖像處理中的概念和神經網路技術相結合。此時我們可以祭出題主所說的卷積神經網路CNN。對於CNN來說,並不是所有上下層神經元都能直接相連,而是 通過「卷積核」作為中介。同一個卷積核在所有圖像內是共享的,圖像通過卷積操作後仍然保留原先的位置關系。 兩層之間的卷積傳輸的示意圖如下:
圖3 卷積神經網路隱含層(摘自Theano 教程)
通過一個例子簡單說明卷積神經網路的結構。假設圖3中m-1=1是輸入層,我們需要識別一幅彩色圖像,這幅圖像具有四個通道ARGB(透明度和紅綠藍,對應了四幅相同大小的圖像),假設卷積核大小為100*100,共使用100個卷積核w1到w100(從直覺來看,每個卷積核應該學習到不同的結構特徵)。用w1在ARGB圖像上進行卷積操作,可以得到隱含層的第一幅圖像;這幅隱含層圖像左上角第一個像素是四幅輸入圖像左上角100*100區域內像素的加權求和,以此類推。同理,算上其他卷積核,隱含層對應100幅「圖像」。每幅圖像對是對原始圖像中不同特徵的響應。按照這樣的結構繼續傳遞下去。CNN中還有max-pooling等操作進一步提高魯棒性。
圖4 一個典型的卷積神經網路結構,注意到最後一層實際上是一個全連接層(摘自Theano 教程)
在這個例子里,我們注意到 輸入層到隱含層的參數瞬間降低到了 100*100*100=10^6 個 !這使得我們能夠用已有的訓練數據得到良好的模型。題主所說的適用於圖像識別,正是由於 CNN 模型限制參數了個數並挖掘了局部結構的這個特點 。順著同樣的思路,利用語音語譜結構中的局部信息,CNN照樣能應用在語音識別中。
全連接的DNN還存在著另一個問題——無法對時間序列上的變化進行建模。然而, 樣本出現的時間順序對於自然語言處理、語音識別、手寫體識別等應用非常重要 。對了適應這種需求,就出現了題主所說的另一種神經網路結構——循環神經網路RNN。
在普通的全連接網路或CNN中,每層神經元的信號只能向上一層傳播,樣本的處理在各個時刻獨立,因此又被成為前向神經網路(Feed-forward Neural Networks)。而在 RNN 中,神經元的輸出可以在下一個時間戳直接作用到自身 ,即第i層神經元在m時刻的輸入,除了(i-1)層神經元在該時刻的輸出外,還包括其自身在(m-1)時刻的輸出!表示成圖就是這樣的:
圖5 RNN 網路結構
我們可以看到在隱含層節點之間增加了互連。為了分析方便,我們常將RNN在時間上進行展開,得到如圖6所示的結構:
圖6 RNN 在時間上進行展開
Cool, ( t+1 )時刻網路的最終結果O(t+1) 是該時刻輸入和所有歷史共同作用的結果 !這就達到了對時間序列建模的目的。
不知題主是否發現,RNN可以看成一個在時間上傳遞的神經網路,它的深度是時間的長度!正如我們上面所說, 「梯度消失」現象又要出現了,只不過這次發生在時間軸上 。對於t時刻來說,它產生的梯度在時間軸上向歷史傳播幾層之後就消失了,根本就無法影響太遙遠的過去。因此,之前說「所有歷史」共同作用只是理想的情況,在實際中,這種影響也就只能維持若干個時間戳。
為了解決時間上的梯度消失,機器學習領域發展出了 長短時記憶單元 LSTM ,通過門的開關實現時間上記憶功能,並防止梯度消失 ,一個LSTM單元長這個樣子:
圖7 LSTM 的模樣
除了題主疑惑的三種網路,和我之前提到的深度殘差學習、LSTM外,深度學習還有許多其他的結構。舉個例子,RNN既然能繼承歷史信息,是不是也能吸收點未來的信息呢?因為在序列信號分析中,如果我能預知未來,對識別一定也是有所幫助的。因此就有了 雙向 RNN 、雙向 LSTM ,同時利用歷史和未來的信息。
圖8 雙向RNN
事實上, 不論是那種網路,他們在實際應用中常常都混合著使用,比如 CNN 和RNN 在上層輸出之前往往會接上全連接層,很難說某個網路到底屬於哪個類別。 不難想像隨著深度學習熱度的延續,更靈活的組合方式、更多的網路結構將被發展出來。盡管看起來千變萬化,但研究者們的出發點肯定都是為了解決特定的問題。題主如果想進行這方面的研究,不妨仔細分析一下這些結構各自的特點以及它們達成目標的手段。入門的話可以參考:
Ng寫的Ufldl: UFLDL教程 - Ufldl
也可以看Theano內自帶的教程,例子非常具體: Deep Learning Tutorials
歡迎大家繼續推薦補充。
當然啦,如果題主只是想湊個熱鬧時髦一把,或者大概了解一下方便以後把妹使,這樣看看也就罷了吧。
參考文獻:
[1]
Bengio Y. Learning Deep
Architectures for AI[J]. Foundations & Trends® in Machine Learning, 2009,
2(1):1-127.
[2]
Hinton G E, Salakhutdinov R R.
Recing the Dimensionality of Data with Neural Networks[J]. Science, 2006,
313(5786):504-507.
[3]
He K, Zhang X, Ren S, Sun J. Deep
Resial Learning for Image Recognition. arXiv:1512.03385, 2015.
[4]
Srivastava R K, Greff K,
Schmidhuber J. Highway networks. arXiv:1505.00387, 2015.
『陸』 cnn訓練准確率很高,測試准確率很低(loss有一直下降)是為什麼
可能的原因:
有可能是層數較少,可以嘗試增加卷積層;可能性不大。
之前我有出現過類似的情況,數據本身質量太低,就算訓練層可以保證很高的准確率也沒有什麼意義,此時已經過擬合了。 這種情況是沒有辦法的,因為你的數據本身就有問題,無解。 你可以嘗試用 機器學習的方法提取特徵值 來驗證, 如果此時准確率比CNN結果要好,那麼就是你網路本身的問題,如果准確率也很差, 那就應該是你數據本身質量的問題。
『柒』 CNN可解釋性從入門到放棄
Kuo 是機器學習的前輩,看不慣幾年來的調參浪潮,因此自己開疆拓土提出了一套不用反向傳播(用傳統方法 PCA)的 CNN。雖然我不敢苟同,但是一代人有一代人熟悉的方法,這個世界需要弄潮兒,也需要擺渡人。
盡管 CNN 已經取得了 state-of-the-art 的地位,但是仍然存在一些問題:over-parameters:大量的參數進行反向傳播,數學上難以解釋;numerous tricks:復雜的網路結構、Dropout 等讓網路變得難以理解;sensitivitity:受到攻擊時魯棒性差。
針對這些問題 Kuo 搞了一個新的 CNN 模型 FF CNN,模型有三個 優點 :不需要反向傳播,因此速度更快,資源佔用少;每一個 layer 可解釋,layer 也不多,沒有深度學習的黑箱;是一個半監督(甚至可以是無監督)模型,不依賴於 label。
Kuo 正在改進的 缺點 有:准確率目前略低於帶有 BP CNN,但是仍有提升空間;雖然沒有明確說明,但是模型應該是 problem special 的,需要根據數據集特點手動調整。
此外,Kuo 設計了兩個方面的實驗對比 FF CNN 和 BP CNN:分類問題的准確率、受到攻擊時的魯棒性。
CNN 的含義
CNN 是一系列的特徵映射。這些特徵映射可以分為升維和降維兩類。
大多數時候都是在降維,少數時候是在升維。其中,升維是在掃描整個圖像,得到盡可能多的有效特徵。降維則是從當前特徵中選擇最有效的特徵。升維的方法有卷積。降維的方法有PCA、pooling。保持維度,增強特徵的方法有激活函數、全連接(也可以用於降維)。
卷積的含義
對於卷積公式我們可以這樣理解訓練參數 [圖片上傳失敗...(image-281cf0-1572431090839)]
:對於傳統的 BP CNN,它是過濾器的權重(需要優化的參數),求過濾器的權重與輸入數據的內積即為匹配過濾器的過程。我們還可以這樣考慮,將它當作一組線性空間的基,求基與輸入數據的積即為特徵在低維空間的近似。
池化的含義
卷積幫助我們得到貓的模式,池化幫助我們選擇貓的模式。池化會幫助我們選擇眾多模式中共有的部分。
比如,所有的 9 張貓都有相似的臉,池化就會抹掉其他信息,提取公共的貓臉。我們可以用統計分析模擬這個過程。
這里 Kuo 解釋了為何 max pooling 比 average pooling 更有效。這是因為 max pooling 能夠提取窗格內較遠的信息,從而更好的表徵位置不同而形狀相同的信息。比如,圖中的貓臉位置稍有不同,但是在 pooling 的作用下都回到了畫面中心。
多層感知器的含義
多層感知器在 CNN 中充當的是分類器的角色,每一個隱藏層都是一次映射,將輸入降維。我們可以這樣理解,每一次映射是從 intra-class 到 class 的過程,多次映射後獲得所需維度的 class。
比如,第一次映射區分了蟒蛇、眼鏡蛇、加菲貓、波斯貓,第二次映射區分了蛇和貓。多次映射後得到了在我們所需維度上的分類。
我們可以使用 K-Means 模擬這一過程,對於一個 40 -> 20 -> 10 的多層感知器,我們可以使用 K-Means 聚 40 類、20 類、10 類,模擬每一個隱藏層的輸入和輸出。
有了每一層的輸入和輸出,我們可以使用最小平方回歸(如上圖),求解 intra-class 到 class 的映射過程。從而,將反向傳遞計算 [圖片上傳失敗...(image-401532-1572431249509)]
變成了解方程計算 [圖片上傳失敗...(image-f088c1-1572431249509)]
。
集成與疊加
我們都知道,多層的 PCA 效果較差,因此 FF CNN 無法像 BP CNN 一樣通過疊加 layer 提高對特徵的表徵能力。但是 Kuo 認為,可以通過集成(ensemble)多種 FF CNN 來提高 FF CNN 的性能。FF CNN 就像一個簡單的小機器人,BP CNN 則是一個復雜的大機器人。FF CNN 通過量取勝,BP CNN 通過復雜性取勝。
在上圖中,Kuo 構建了 3 種 FF CNN,在受到攻擊時,可以採用多數投票制進行集成。一個小機器人被打倒,其他的機器人仍能存活下來。此外,Kuo 還列舉了根據 RGB 設計 FF CNN 集成的方法。
雖然 Kuo 沒有闡述 FF CNN 在並行等領域的應用,這個模型效率高、能耗低,比 BP CNN 具有更大的並行可能,未來或許會在嵌入式等領域大放光彩。
FF CNN 與 BP CNN 的應用場景抽象
Kuo 最後的總結很正經,前輩客觀地闡述了 FF 和 BP 的應用場景,批評了一些人(也就是我們這屆差生 233)不分 data collection 青紅皂白就上 BP 的做法。他說:
FF 是一種 data-independent 模型,因此它高效,適合解簡單問題。BP 是一種 data-driven 模型,因此它耗時,適合解復雜問題。
我們拿到一個 dataset 的時候,沒有人會跟你說這個 dataset 是簡單還是復雜的,你的 dataset 可能不是 pure 的。
如果你用 data-driven 模型,復雜的 data 可能會覆蓋簡單的 data 造成過擬合。如果你用 data-independent 模型,可能會因為無法表徵復雜的 data 而效果較差。
一切設計都要因 dataset 制宜。
Kuo 發表了一篇論文「 Interpretable Convolutional Neural Networks via Feedforward Design 」,表述嚴謹清晰,感興趣可以了解一下。
我很佩服這位前輩,手動把消耗大量算力的訓練參數自己 「解」 了出來。現在,我們不止能對結果求交叉熵,對比預測結果和實際 label 的差異,還能在每一步計算 FF CNN 求得的參數和 BP CNN 訓練的參數的差異。
從上圖我們可以看出,這個解和BP求得的解仍有一定距離。
https://zhuanlan.hu.com/p/51673309
『捌』 有哪些深度神經網路模型
目前經常使用的深度神經網路模型主要有卷積神經網路(CNN) 、遞歸神經網路(RNN)、深信度網路(DBN) 、深度自動編碼器(AutoEncoder) 和生成對抗網路(GAN) 等。
遞歸神經網路實際.上包含了兩種神經網路。一種是循環神經網路(Recurrent NeuralNetwork) ;另一種是結構遞歸神經網路(Recursive Neural Network),它使用相似的網路結構遞歸形成更加復雜的深度網路。RNN它們都可以處理有序列的問題,比如時間序列等且RNN有「記憶」能力,可以「模擬」數據間的依賴關系。卷積網路的精髓就是適合處理結構化數據。
關於深度神經網路模型的相關學習,推薦CDA數據師的相關課程,課程以項目調動學員數據挖掘實用能力的場景式教學為主,在講師設計的業務場景下由講師不斷提出業務問題,再由學員循序漸進思考並操作解決問題的過程中,幫助學員掌握真正過硬的解決業務問題的數據挖掘能力。這種教學方式能夠引發學員的獨立思考及主觀能動性,學員掌握的技能知識可以快速轉化為自身能夠靈活應用的技能,在面對不同場景時能夠自由發揮。
『玖』 求問,三維模型文件太大怎麼壓縮
三維模型文件的大小是取決於面數的多少,要壓縮就是進行減面處理,老子雲平台就可以處理