日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习(二)——深度学习常用术语解释, Neural Network Zoo, CNN, Autoencoder

發布時間:2023/12/20 pytorch 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习(二)——深度学习常用术语解释, Neural Network Zoo, CNN, Autoencoder 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Dropout(續)

除了Dropout之外,還有DropConnect。兩者原理上類似,后者只隱藏神經元之間的連接。

總的來說,Dropout類似于機器學習中的L1、L2規則化等增加稀疏性的算法,也類似于隨機森林、模擬退火之類的增加隨機性的算法。

參考:

https://zhuanlan.zhihu.com/p/23178423

Dropout解決過擬合問題

深度學習常用術語解釋

深度學習中epoch、batch size、iterations的區別

one epoch:所有的訓練樣本完成一次Forword運算以及一次BP運算。

batch size:一次Forword運算以及BP運算中所需要的訓練樣本數目,其實深度學習每一次參數的更新所需要損失函數并不是由一個{data:label}獲得的,而是由一組數據加權得到的,這一組數據的數量就是[batch size]。當然batch size越大,所需的內存就越大,要量力而行。

iterations(迭代):每一次迭代都是一次權重更新,每一次權重更新需要batch size個數據進行Forward運算得到損失函數,再BP算法更新參數。

最后可以得到一個公式one epoch = numbers of iterations = N = 訓練樣本的數量/batch size

Vanilla

Vanilla是神經網絡領域的常見詞匯,比如Vanilla Neural Networks、Vanilla CNN等。Vanilla本意是香草,在這里基本等同于raw。比如Vanilla Neural Networks實際上就是BP神經網絡,而Vanilla CNN實際上就是最原始的CNN。

weight decay

weight decay(權值衰減)的使用既不是為了提高收斂精確度,也不是為了提高收斂速度,其最終目的是防止過擬合。在損失函數中,weight decay是放在正則項(regularization)前面的一個系數,正則項一般指示模型的復雜度,所以weight decay的作用是調節模型復雜度對損失函數的影響,若weight decay很大,則復雜的模型損失函數的值也就大。

https://mp.weixin.qq.com/s/W4d2fkiJig–PuDPM11ozA

Batch Normalization

Batch Normalization是Google提出的一種神經網絡優化技巧。

原始論文:

《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》

上圖是Hinton在2015年的講座中的例子。從中可以看出,反向傳遞的梯度大小不僅和激活函數有關,也和每一層的權值大小有關。

通常來說,越靠近輸出層,由于該層網絡已被充分訓練,其權值越大,反之則越小。這實際上也是梯度消失的一種原因。

更一般的,如果一層的權值顯著異于相鄰的層,從系統的角度出發,這一層也是不穩定的。Batch Normalization將各層的權值歸一化,從而改善了神經網絡的性能。它的優點有:

1.提高梯度在網絡中的流動。Normalization能夠使特征全部縮放到[0,1],這樣在反向傳播時候的梯度都是在1左右,避免了梯度消失現象。

2.提升學習速率。歸一化后的數據能夠快速的達到收斂。

3.減少模型訓練對初始化的依賴。

類似的概念還有Weight Normalization和Layer Normalization。

以下是它們的特點:

Batch Normalization

對于batch size比較小的時候,效果非常不好,而batch size越大,那么效果則越好,因為其本質上是要通過mini-batch得到對整個數據集的無偏估計;

在訓練階段和推理階段的計算過程是不一樣的;

在CNN上表現較好,而不適用于RNN甚至LSTM

Weight Normalization

計算簡單,易于理解

相比于其他兩種方法,其訓練起來不太穩定,非常依賴于輸入數據的分布。

Layer Normalization

不依賴于batch size的大小,即使對于batch size為1的在線學習,也可以完美適應;

訓練階段和推理階段的計算過程完全一樣。

適用于RNN或LSTM,而在CNN上表現一般。

參考:

http://www.cnblogs.com/neopenx/p/5211969.html

從Bayesian角度淺析Batch Normalization

https://www.zhihu.com/question/38102762

深度學習中 Batch Normalization為什么效果好?

http://jiangqh.info/Batch-Normalization%E8%AF%A6%E8%A7%A3/

Batch Normalization詳解

https://mp.weixin.qq.com/s/OAn8y_uJTgyrtS2ZCyudlg

Batch Normalization原理及其TensorFlow實現

https://mp.weixin.qq.com/s/EBRYlCoj9rwf0NQY0B4nhQ

Layer Normalization原理及其TensorFlow實現

鞍點

鞍點(Saddle point)在微分方程中,沿著某一方向是穩定的,另一條方向是不穩定的奇點,叫做鞍點。在泛函中,既不是極大值點也不是極小值點的臨界點,叫做鞍點。在矩陣中,一個數在所在行中是最大值,在所在列中是最小值,則被稱為鞍點。在物理上要廣泛一些,指在一個方向是極大值,另一個方向是極小值的點。

上圖是z=x2?y2的曲面圖,其中的原點就是鞍點。上圖形似馬鞍,故名。

LeCun和Bengio的研究表明,在high-D(高維)的情況下,局部最小會隨著維度的增加,指數型的減少,在深度學習中,一個點是局部最小的概率非常小,同時鞍點無處不在。

欠擬合和過擬合

在DL領域,欠擬合意味著神經網絡沒有學到該學習的特征,而過擬合則意味著神經網絡學習到了不該學習的特征。

在之前的描述中,我們一直強調過擬合的風險,然而實際上,欠擬合才是DL最大的敵人。

首先,神經網絡對于學習樣本數量的要求非常高,基本比淺層模型多2~3個數量級,因此過擬合的風險并不太大。

其次,過擬合的危害也沒有欠擬合那么高。比如下面的場景:

1.對同一訓練樣本集T1,進行兩次訓練,分別得到模型M1,M2

2.使用M1,M2對同一測試樣本集T2進行預測,得到預測結果集P1,P2

3.如果P1,P2的結論基本相反的話,則說明發生了欠擬合現象。而過擬合則并沒有這么夸張的效果。

Neural Network Zoo

在繼續后續講解之前,我們首先給出常見神經網絡的結構圖:

上圖的原地址為:

http://www.asimovinstitute.org/neural-network-zoo/

單元結構:

層結構:

上圖的原地址為:

http://www.asimovinstitute.org/neural-network-zoo-prequel-cells-layers/

CNN

概述

卷積神經網絡(Convolutional Neural Networks,ConvNets或CNNs)屬于神經網絡的范疇,已經在諸如圖像識別和分類的領域證明了其高效的能力。

CNN的開山之作是Yann LeCun的論文:

《Gradient-Based Learning Applied to Document Recognition》

注:科學界的許多重要成果的開山之作,其名稱往往和成果的最終名稱有一定的差距。比如LeCun的這篇文章的名稱中,就沒有CNN。類似的還有Vapnik的SVM,最早被稱為Support Vector Network。

英文不好的,推薦以下文章:

http://www.hackcv.com/index.php/archives/104/

CNN的直觀解釋

關鍵點

這里以最經典的LeNet-5為例,提點一下CNN的要點。

LeNet-5的caffe模板:

https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet.prototxt

卷積

在《數學狂想曲(五)》中我們討論了卷積的數學含義,結合《 圖像處理理論(一)》和《 圖像處理理論(二)》,不難看出卷積或者模板(算子),在前DL時代,幾乎是圖像處理算法的基礎和靈魂。為了實現各種目的,人們手工定義或發現了一系列算子。

到了DL時代,卷積仍然起著非常重要的作用。但這個時候,不再需要人工指定算子,算子本身也將由學習獲得。我們需要做的只不過是指定算子的個數而已。

比如,LeNet-5的C1:6@28*28,其中的6就是算子的個數。顯然算子的個數越多,計算越慢。但太少的話,又會導致提取的特征數太少,神經網絡學不到東西。

除此之外,卷積還包含了圖片的空間二維信息,它和后面的Pooling操作一道,起到了空間降維的作用。

實際上,傳統的MLP(MultiLayer Perceptron)網絡,就是由于1D全連接的神經元控制了太多參數,而不利于學習到稀疏特征。

CNN網絡中,2D全連接的神經元則控制了局部感受野,有利于解離出稀疏特征。

池化

Pooling操作(也稱Subsampling)使輸入表示(特征維度)變得更小,并且網絡中的參數和計算的數量更加可控的減小,因此,可以控制過擬合。

它還可使網絡對于輸入圖像中更小的變化、冗余和變換變得不變性。

Gaussian Connections

LeNet-5最后一步的Gaussian Connections是一個當年的歷史遺跡,目前已經被Softmax所取代。它的含義在上面提到的Yann LeCun的原始論文中有描述。

其他

上圖展示了不同分類的圖片特征在特征空間中的分布,可以看出在CNN的低層中,這些特征是混雜在一起的;而到了CNN的高層,這些特征就被區分開來了。

上圖是若干ML、DL算法按照不同維度劃分的情況。

CNN的反向傳播算法

由于卷積和池化兩層,不是一般的神經網絡結構。因此CNN的反向傳播算法實際上也是很有技巧的。

參見:

http://www.cnblogs.com/pinard/p/6494810.html

卷積神經網絡(CNN)反向傳播算法

卷積的反向傳播,有時也被稱為反卷積。

上圖是Deep convolutional inverse graphics networks的結構圖。DCIGN實際上是一個正向CNN連上一個反向CNN,以實現圖片合成的目的。

參考

http://lib.csdn.net/article/deeplearning/58185

BP神經網絡與卷積神經網絡

http://blog.csdn.net/Fate_fjh/article/details/52882134

卷積神經網絡系列blog

http://mp.weixin.qq.com/s/YRwGwelyA3VOYZ4XGAjUBw

CNN 感受野首次可視化:深入解讀及計算指南

http://mp.weixin.qq.com/s/dvuX3Ih_DZrv0kgqFn8-lg

卷積神經網絡結構變化——可變形卷積網絡deformable convolutional networks

Autoencoder

Bengio在2003年的《A neural probabilistic language model》中指出,維度過高,會導致每次學習,都會強制改變大部分參數。

由此發生蝴蝶效應,本來很好的參數,可能就因為一個小小傳播誤差,就改的亂七八糟。

因此,數據降維是數據預處理中,非常重要的一環。常用的降維算法,除了線性的PCA算法之外,還有非線性的Autoencoder。

Autoencoder的結構如上圖所示。它的特殊之處在于:

1.輸入樣本就是輸出樣本。

2.隱藏層的神經元數量小于樣本的維度。

總結

以上是生活随笔為你收集整理的深度学习(二)——深度学习常用术语解释, Neural Network Zoo, CNN, Autoencoder的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。