什麼是二值神經網路,它的前景如何?

時間 2021-05-09 00:05:54

1樓:Emilylulu

最早的一篇應該是是Bengio組的binaryconnect模型,這個模型用符號函式把weight二值化了,從而把前向傳播中大部分的單精度乘法換成了單精度加法。他們組之後的一篇binarynet進而把activation也二值化了,那麼單精度加法進一步變成了xnor位運算操作。個人認為二值網路最大的貢獻主要在於三點:

1. 儘管模型精度降低了非常多,但是在訓練效果卻不比全精度的網路差,有的時候二值網路的訓練效果甚至會超越全精度網路,因為二值化過程給神經網路帶來了noise,像dropout一樣,反而是一種regularization,可以部分避免網路的overfitting。

2.二值化網路可以把單精度乘法變成位操作,這大大地減少了訓練過程中的運算複雜度。這種位運算可以寫成gpu kernel, 或者用fpga實現,會給神經網路訓練速度帶來提公升。

3. 儲存神經網路模型主要是儲存weights. 二值化的weight只要乙個bit就可以存下來了,相比之前的32bit,模型減小了32倍,那麼把訓練好的模型放在移動裝置,比如手機上面做測試就比較容易了。

當前還有一些二值化網路的變種,比如給二值加乙個係數(xnor net)來更好地逼近全值網路。比如通過離散化梯度把後向傳播中的乘法也變成加法。因為訓練速度的提高和儲存空間的減少,二值化網路的發展將會讓深度神經網路在更多計算能力和儲存空間相對比較弱的平台上得到作用,比如手機,嵌入式系統等。

2樓:sean

引數二值化最主要的是減少了儲存空間,可以讓複雜模型比如vgg甚至resnet執行在記憶體受限的裝置上,比如手機。但是在大資料集合上的效果還是會差很多。更進一步的二值化是連每層的輸出也是二值化的,由於引數是二值化的,所以比如很耗時間的全連線和卷積操作都可以轉為xor等位操作,這將是非常快的,甚至在cpu的速度都比普通模型在gpu的速度快。

但是每層輸出也是二值化的話,效果更差一些,並且很難訓練收斂,這是因為有效的梯度很難往下傳。二值化這個方向十分有前途,如果將來解決了,我們也不用再花那麼多錢在核廠了,深度學習可以直接移到移動端,這將引發一場變革

什麼是卷積神經網路?

弗拉基公尺爾 神經網路可以理解為多元線性回歸。卷積神經網路可以理解為矩陣形式的多元線性回歸。不知道這樣理解對不對。那就這樣說應該不會有錯 卷積是乙個提取特徵的函式. 憤怒的葡萄 不請自來 首先artificial NNs的目的就是他們能夠被用作乙個任意函式逼近的方式,CNN也是一樣。CNN就是在原有...

卷積神經網路的特徵是如何學習的?

Mario 你好,剛剛答辯完。老師也提了同樣的問題,卷積是如何提取特徵的?答 從傳統影象特徵提取方法來看,卷積核其實就是很多個不同的濾波器,傳統的濾波器是人工設定的,用來提取指定的特徵,比如gabor,canny等。而卷積神經網路中的卷積核是網路隨機初始化之後再通過梯度下降演算法來進行更新,根據你指...

卷積神經網路訓練影象的時候,畫素值都是大於0的,那麼啟用函式relu還有什麼作用呢?

小布丁 大家的問答真的寫的挺好的,讓人看了很清晰 總結如下 雖然畫素點的值全為正,但是要經過卷積,卷積核的值可能有負的,最終卷積得到乙個小於0的結果 卷積之後的值要經過BatchNorm層,這個層在歸一化的選擇上也可能會導致出現負值 所以需要做ReLu的線性變換。 Woolsey Relu是 啟用函...