激活函數(shù)(Activation Function)
為了讓神經(jīng)網(wǎng)絡能夠學習復雜的決策邊界(decision boundary),我們在其一些層應用一個非線性激活函數(shù)汇歹。最常用的函數(shù)包括 ?sigmoid产弹、tanh痰哨、ReLU(Rectified Linear Unit 線性修正單元) 以及這些函數(shù)的變體。
Adadelta
Adadelta 是一個基于梯度下降的學習算法早抠,可以隨時間調整適應每個參數(shù)的學習率蕊连。它是作為 Adagrad
的改進版提出的甘苍,它比超參數(shù)(hyperparameter)更敏感而且可能會太過嚴重地降低學習率羊赵。Adadelta 類似于
rmsprop,而且可被用來替代 vanilla SGD。
論文:Adadelta:一種自適應學習率方法(ADADELTA: An Adaptive Learning Rate Method)
技術博客:斯坦福 CS231n:優(yōu)化算法(http://cs231n.github.io/neural-networks-3/)
技術博客:梯度下降優(yōu)化算法概述(http://sebastianruder.com/optimizing-gradient-descent/)
Adagrad
Adagrad 是一種自適應學習率算法靡挥,能夠隨時間跟蹤平方梯度并自動適應每個參數(shù)的學習率跋破。它可被用來替代vanilla SGD
(http://www.wildml.com/deep-learning-glossary/#sgd)毒返;而且在稀疏數(shù)據(jù)上更是特別有用舷手,在其中它可以將更高的學習率分配給更新不頻繁的參數(shù)男窟。
論文:用于在線學習和隨機優(yōu)化的自適應次梯度方法(Adaptive Subgradient Methods for Online Learning and Stochastic Optimization)
技術博客:斯坦福 CS231n:優(yōu)化算法(http://cs231n.github.io/neural-networks-3/)
技術博客:梯度下降優(yōu)化算法概述(http://sebastianruder.com/optimizing-gradient-descent/)
Adam
Adam 是一種類似于 rmsprop 的自適應學習率算法歉眷,但它的更新是通過使用梯度的第一和第二時刻的運行平均值(running average)直接估計的,而且還包括一個偏差校正項淑际。
論文:Adam:一種隨機優(yōu)化方法(Adam: A Method for Stochastic Optimization)
技術博客:梯度下降優(yōu)化算法概述(http://sebastianruder.com/optimizing-gradient-descent/)
仿射層(Affine Layer)
神經(jīng)網(wǎng)絡中的一個全連接層春缕。仿射(Affine)的意思是前面一層中的每一個神經(jīng)元都連接到當前層中的每一個神經(jīng)元淡溯。在許多方面簿训,這是神經(jīng)網(wǎng)絡的「標準」層强品。仿射層通常被加在卷積神經(jīng)網(wǎng)絡或循環(huán)神經(jīng)網(wǎng)絡做出最終預測前的輸出的頂層。仿射層的一般形式為
y = f(Wx + b)琼了,其中 x 是層輸入昧诱,w 是參數(shù)所袁,b 是一個偏差矢量燥爷,f 是一個非線性激活函數(shù)。
注意機制(Attention Mechanism)
注意機制是由人類視覺注意所啟發(fā)的稚配,是一種關注圖像中特定部分的能力道川。注意機制可被整合到語言處理和圖像識別的架構中以幫助網(wǎng)絡學習在做出預測時應該「關注」什么愤惰。
技術博客:深度學習和自然語言處理中的注意和記憶(http://www.wildml.com/2016/01/attention-and-memory-in-deep-learning-and-nlp/)
Alexnet
Alexnet 是一種卷積神經(jīng)網(wǎng)絡架構的名字宦言,這種架構曾在 2012 年 ILSVRC
挑戰(zhàn)賽中以巨大優(yōu)勢獲勝奠旺,而且它還導致了人們對用于圖像識別的卷積神經(jīng)網(wǎng)絡(CNN)的興趣的復蘇施流。它由 5
個卷積層組成瞪醋。其中一些后面跟隨著最大池化(max-pooling)層和帶有最終 1000 條路徑的 softmax (1000-way
softmax)的 3個全連接層银受。Alexnet 被引入到了使用深度卷積神經(jīng)網(wǎng)絡的 ImageNet 分類中。
自編碼器(Autoencoder)
自編碼器是一種神經(jīng)網(wǎng)絡模型咕幻,它的目標是預測輸入自身肄程,這通常通過網(wǎng)絡中某個地方的「瓶頸(bottleneck)」實現(xiàn)蓝厌。通過引入瓶頸褂始,我們迫使網(wǎng)絡學習輸入更低維度的表征崎苗,從而有效地將輸入壓縮成一個好的表征胆数。自編碼器和
PCA 等降維技術相關必尼,但因為它們的非線性本質篡撵,它們可以學習更為復雜的映射育谬。目前已有一些范圍涵蓋較廣的自編碼器存在膛檀,包括
降噪自編碼器(Denoising Autoencoders)、變自編碼器(Variational
Autoencoders)和序列自編碼器(Sequence Autoencoders)泳炉。
降噪自編碼器論文:Stacked Denoising Autoencoders: Learning Useful Representations in a Deep Network with a Local Denoising Criterion
變自編碼器論文:Auto-Encoding Variational Bayes
序列自編碼器論文:Semi-supervised Sequence Learning
平均池化(Average-Pooling)
平均池化是一種在卷積神經(jīng)網(wǎng)絡中用于圖像識別的池化(Pooling)技術花鹅。它的工作原理是在特征的局部區(qū)域上滑動窗口刨肃,比如像素之景,然后再取窗口中所有值的平均锻狗。它將輸入表征壓縮成一種更低維度的表征。
反向傳播(Backpropagation)
反向傳播是一種在神經(jīng)網(wǎng)絡中用來有效地計算梯度的算法油额,或更一般而言潦嘶,是一種前饋計算圖(feedforward computational
graph)掂僵。其可以歸結成從網(wǎng)絡輸出開始應用分化的鏈式法則锰蓬,然后向后傳播梯度眯漩。反向傳播的第一個應用可以追溯到 1960 年代的 Vapnik
等人赦抖,但論文 Learning representations by back-propagating errors常常被作為引用源队萤。
技術博客:計算圖上的微積分學:反向傳播(http://colah.github.io/posts/2015-08-Backprop/)
通過時間的反向傳播(BPTT:Backpropagation Through Time)
通過時間的反向傳播是應用于循環(huán)神經(jīng)網(wǎng)絡(RNN)的反向傳播算法浮禾。BPTT 可被看作是應用于 RNN
的標準反向傳播算法,其中的每一個時間步驟(time step)都代表一個計算層蝴簇,而且它的參數(shù)是跨計算層共享的熬词。因為 RNN
在所有的時間步驟中都共享了同樣的參數(shù)互拾,一個時間步驟的錯誤必然能「通過時間」反向到之前所有的時間步驟颜矿,該算法也因而得名嫉晶。當處理長序列(數(shù)百個輸入)時,為降低計算成本常常使用一種刪節(jié)版的
BPTT箍铭。刪節(jié)的 BPTT 會在固定數(shù)量的步驟之后停止反向傳播錯誤。
論文:Backpropagation Through Time: What It Does and How to Do It
分批標準化(BN:Batch Normalization)
分批標準化是一種按小批量的方式標準化層輸入的技術兽赁。它能加速訓練過程刀崖,允許使用更高的學習率蒲跨,還可用作規(guī)范器(regularizer)。人們發(fā)現(xiàn)孙咪,分批標準化在卷積和前饋神經(jīng)網(wǎng)絡中應用時非常高效翎蹈,但尚未被成功應用到循環(huán)神經(jīng)網(wǎng)絡上。
論文:分批標準化:通過減少內部協(xié)變量位移(Covariate Shift)加速深度網(wǎng)絡訓練(Batch Normalization:
Accelerating Deep Network Training by Reducing Internal Covariate Shift)
論文:使用分批標準化的循環(huán)神經(jīng)網(wǎng)絡(Batch Normalized Recurrent Neural Networks)
雙向循環(huán)神經(jīng)網(wǎng)絡(Bidirectional RNN)
雙向循環(huán)神經(jīng)網(wǎng)絡是一類包含兩個方向不同的 RNN 的神經(jīng)網(wǎng)絡合陵。其中的前向 RNN 從起點向終點讀取輸入序列拥知,而反向 RNN
則從終點向起點讀取低剔。這兩個 RNN 互相彼此堆疊襟齿,它們的狀態(tài)通常通過附加兩個矢量的方式進行組合枕赵。雙向 RNN
常被用在自然語言問題中拷窜,因為在自然語言中我們需要同時考慮話語的前后上下文以做出預測。
論文:雙向循環(huán)神經(jīng)網(wǎng)絡(Bidirectional Recurrent Neural Networks)
Caffe
Caffe 是由伯克利大學視覺和學習中心開發(fā)的一種深度學習框架副瀑。在視覺任務和卷積神經(jīng)網(wǎng)絡模型中糠睡,Caffe 格外受歡迎且性能優(yōu)異
.
分類交叉熵損失(Categorical Cross-Entropy Loss)
分類交叉熵損失也被稱為負對數(shù)似然(negative log
likelihood)。這是一種用于解決分類問題的流行的損失函數(shù),可用于測量兩種概率分布(通常是真實標簽和預測標簽)之間的相似性嫁赏。它可用 L =
-sum(y * log(y_prediction)) 表示油挥,其中 y 是真實標簽的概率分布(通常是一個one-hot
vector)深寥,y_prediction 是預測標簽的概率分布惋鹅,通常來自于一個 softmax。
信道(Channel)
深度學習模型的輸入數(shù)據(jù)可以有多個信道沽讹。圖像就是個典型的例子爽雄,它有紅盲链、綠和藍三個顏色信道刽沾。一個圖像可以被表示成一個三維的張量(Tensor)排拷,其中的維度對應于信道监氢、高度和寬度藤违。自然語言數(shù)據(jù)也可以有多個信道顿乒,比如在不同類型的嵌入(embedding)形式中璧榄。
卷積神經(jīng)網(wǎng)絡(CNN/ConvNet:Convolutional Neural Network)
CNN 使用卷積連接從輸入的局部區(qū)域中提取的特征骨杂。大部分 CNN 都包含了卷積層搓蚪、池化層和仿射層的組合丁鹉。CNN 尤其憑借其在視覺識別任務的卓越性能表現(xiàn)而獲得了普及,它已經(jīng)在該領域保持了好幾年的領先杜耙。
技術博客:斯坦福CS231n類——用于視覺識別的卷積神經(jīng)網(wǎng)絡(http://cs231n.github.io/neural-networks-3/)
技術博客:理解用于自然語言處理的卷積神經(jīng)網(wǎng)絡(http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/)
深度信念網(wǎng)絡(DBN:Deep Belief Network)
DBN 是一類以無監(jiān)督的方式學習數(shù)據(jù)的分層表征的概率圖形模型。DBN 由多個隱藏層組成谈竿,這些隱藏層的每一對連續(xù)層之間的神經(jīng)元是相互連接的摸吠。DBN 通過彼此堆疊多個 RBN(限制波爾茲曼機)并一個接一個地訓練而創(chuàng)建寸痢。
論文:深度信念網(wǎng)絡的一種快速學習算法(A fast learning algorithm for deep belief nets)
Deep Dream
這是谷歌發(fā)明的一種試圖用來提煉深度卷積神經(jīng)網(wǎng)絡獲取的知識的技術。這種技術可以生成新的圖像或轉換已有的圖片從而給它們一種幻夢般的感覺道逗,尤其是遞歸地應用時滓窍。
代碼:Github 上的 Deep Dream(https://github.com/google/deepdream)
技術博客:Inceptionism:向神經(jīng)網(wǎng)絡掘進更深(https://research.googleblog.com/2015/06/inceptionism-going-deeper-into-neural.html)
Dropout
Dropout 是一種用于神經(jīng)網(wǎng)絡防止過擬合的正則化技術吏夯。它通過在每次訓練迭代中隨機地設置神經(jīng)元中的一小部分為 0
來阻止神經(jīng)元共適應(co-adapting),Dropout 可以通過多種方式進行解讀裆赵,比如從不同網(wǎng)絡的指數(shù)數(shù)字中隨機取樣战授。Dropout
層首先通過它們在卷積神經(jīng)網(wǎng)絡中的應用而得到普及陈醒,但自那以后也被應用到了其它層上瞧甩,包括輸入嵌入或循環(huán)網(wǎng)絡肚逸。
論文:Dropout: 一種防止神經(jīng)網(wǎng)絡過擬合的簡單方法(Dropout: A Simple Way to Prevent Neural Networks from Overfitting)
論文:循環(huán)神經(jīng)網(wǎng)絡正則化(Recurrent Neural Network Regularization)
嵌入(Embedding)
一個嵌入映射到一個輸入表征朦促,比如一個詞或一句話映射到一個矢量。一種流行的嵌入是詞語嵌入(word
embedding血当,國內常用的說法是:詞向量)臊旭,如 word2vec 或
GloVe离熏。我們也可以嵌入句子滋戳、段落或圖像啥刻。比如說可帽,通過將圖像和他們的文本描述映射到一個共同的嵌入空間中并最小化它們之間的距離,我們可以將標簽和圖像進行匹配钝满。嵌入可以被明確地學習到弯蚜,比如在
word2vec 中;嵌入也可作為監(jiān)督任務的一部分例如情感分析(Sentiment
Analysis)路鹰。通常一個網(wǎng)絡的輸入層是通過預先訓練的嵌入進行初始化晋柱,然后再根據(jù)當前任務進行微調(fine-tuned)诵叁。
梯度爆炸問題(Exploding Gradient Problem)
梯度爆炸問題是梯度消失問題(Vanishing Gradient Problem)的對立面拧额。在深度神經(jīng)網(wǎng)絡中侥锦,梯度可能會在反向傳播過程中爆炸,導致數(shù)字溢出快毛。解決梯度爆炸的一個常見技術是執(zhí)行梯度裁剪(Gradient Clipping)祸泪。
論文:訓練循環(huán)神經(jīng)網(wǎng)絡的困難之處(On the difficulty of training Recurrent Neural Networks)
微調(Fine-Tuning)
Fine-Tuning
這種技術是指使用來自另一個任務(例如一個無監(jiān)督訓練網(wǎng)絡)的參數(shù)初始化網(wǎng)絡,然后再基于當前任務更新這些參數(shù)禁荸。比如赶熟,自然語言處理架構通常使用
word2vec 這樣的預訓練的詞向量(word embeddings)映砖,然后這些詞向量會在訓練過程中基于特定的任務(如情感分析)進行更新邑退。
梯度裁剪(Gradient Clipping)
梯度裁剪是一種在非常深度的網(wǎng)絡(通常是循環(huán)神經(jīng)網(wǎng)絡)中用于防止梯度爆炸(exploding
gradient)的技術。執(zhí)行梯度裁剪的方法有很多蜈七,但常見的一種是當參數(shù)矢量的 L2 范數(shù)(L2
norm)超過一個特定閾值時對參數(shù)矢量的梯度進行標準化飒硅,這個特定閾值根據(jù)函數(shù):新梯度=梯度*閾值/L2范數(shù)(梯度){new_gradients =
gradients * threshold / l2_norm(gradients)}確定三娩。
論文:訓練循環(huán)神經(jīng)網(wǎng)絡的困難之處(On the difficulty of training Recurrent Neural Networks)
GloVe
Glove 是一種為話語獲取矢量表征(嵌入)的無監(jiān)督學習算法雀监。GloVe 的使用目的和 word2vec 一樣滔悉,但 GloVe 具有不同的矢量表征单绑,因為它是在共現(xiàn)(co-occurrence)統(tǒng)計數(shù)據(jù)上訓練的搂橙。
論文:GloVe:用于詞匯表征(Word Representation)的全局矢量(Global Vector)(GloVe: Global Vectors for Word Representation )
GoogleLeNet
GoogleLeNet 是曾贏得了 2014 年 ILSVRC 挑戰(zhàn)賽的一種卷積神經(jīng)網(wǎng)絡架構区转。這種網(wǎng)絡使用 Inception 模塊(Inception Module)以減少參數(shù)和提高網(wǎng)絡中計算資源的利用率。
論文:使用卷積獲得更深(Going Deeper with Convolutions)
GRU
GRU(Gated Recurrent Unit:門控循環(huán)單元)是一種 LSTM 單元的簡化版本侄泽,擁有更少的參數(shù)悼尾。和 LSTM
細胞(LSTM cell)一樣闺魏,它使用門控機制析桥,通過防止梯度消失問題(vanishing gradient
problem)讓循環(huán)神經(jīng)網(wǎng)絡可以有效學習長程依賴(long-range dependency)泡仗。GRU
包含一個復位和更新門沮焕,它們可以根據(jù)當前時間步驟的新值決定舊記憶中哪些部分需要保留或更新辣辫。
論文:為統(tǒng)計機器翻譯使用 RNN 編碼器-解碼器學習短語表征(Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation)
技術博客:循環(huán)神經(jīng)網(wǎng)絡教程魁巩,第 4 部分:用 Python 和 Theano 實現(xiàn) GRU/LSTM
RNN(http://www.wildml.com/2015/10/recurrent-neural-network-tutorial-part-4-implementing-a-grulstm-rnn-with-python-and-theano/)
Highway Layer
Highway Layer 是使用門控機制控制通過層的信息流的一種神經(jīng)網(wǎng)絡層急灭。堆疊多個 Highway Layer
層可讓訓練非常深的網(wǎng)絡成為可能。Highway Layer
的工作原理是通過學習一個選擇輸入的哪部分通過和哪部分通過一個變換函數(shù)(如標準的仿射層)的門控函數(shù)來進行學習谷遂。Highway Layer
的基本公式是 T * h(x) + (1 - T) * x葬馋;其中 T 是學習過的門控函數(shù),取值在 0 到 1 之間肾扰;h(x)
是一個任意的輸入變換畴嘶,x 是輸入。注意所有這些都必須具有相同的大小集晚。
論文:Highway Networks
ICML
即國際機器學習大會(International Conference for Machine Learning),一個頂級的機器學習會議蒋院。
ILSVRC
即 ImageNet 大型視覺識別挑戰(zhàn)賽(ImageNet Large Scale Visual Recognition
Challenge),該比賽用于評估大規(guī)模對象檢測和圖像分類的算法辞友。它是計算機視覺領域最受歡迎的學術挑戰(zhàn)賽。過去幾年中间驮,深度學習讓錯誤率出現(xiàn)了顯著下降鸿捧,從
30% 降到了不到 5%,在許多分類任務中擊敗了人類泼菌。
Inception模塊(Inception Module)
Inception模塊被用在卷積神經(jīng)網(wǎng)絡中,通過堆疊 1×1 卷積的降維(dimensionality reduction)帶來更高效的計算和更深度的網(wǎng)絡。
論文:使用卷積獲得更深(Going Deeper with Convolutions)
Keras
Kears 是一個基于 Python 的深度學習庫虐块,其中包括許多用于深度神經(jīng)網(wǎng)絡的高層次構建模塊。它可以運行在 TensorFlow 或 Theano 上。
LSTM
長短期記憶(Long Short-Term
Memory)網(wǎng)絡通過使用內存門控機制防止循環(huán)神經(jīng)網(wǎng)絡(RNN)中的梯度消失問題(vanishing gradient problem)喉悴。使用
LSTM 單元計算 RNN 中的隱藏狀態(tài)可以幫助該網(wǎng)絡有效地傳播梯度和學習長程依賴(long-range dependency)。
論文:長短期記憶(LONG SHORT-TERM MEMORY)
技術博客:理解 LSTM 網(wǎng)絡(http://colah.github.io/posts/2015-08-Understanding-LSTMs/)
技術博客:循環(huán)神經(jīng)網(wǎng)絡教程,第 4 部分:用 Python 和 Theano 實現(xiàn) GRU/LSTM
RNN(http://www.wildml.com/2015/10/recurrent-neural-network-tutorial-part-4-implementing-a-grulstm-rnn-with-python-and-theano/)
最大池化(Max-Pooling)
池化(Pooling)操作通常被用在卷積神經(jīng)網(wǎng)絡中。一個最大池化層從一塊特征中選取最大值殃姓。和卷積層一樣篷牌,池化層也是通過窗口(塊)大小和步幅尺寸進行參數(shù)化该面。比如听诸,我們可能在一個
10×10 特征矩陣上以 2 的步幅滑動一個 2×2 的窗口,然后選取每個窗口的 4 個值中的最大值仔蝌,得到一個 5×5
特征矩陣绰更。池化層通過只保留最突出的信息來減少表征的維度特恬;在這個圖像輸入的例子中尝丐,它們?yōu)檗D譯提供了基本的不變性(即使圖像偏移了幾個像素远荠,仍可選出同樣的最大值)。池化層通常被安插在連續(xù)卷積層之間。
MNIST
MNIST數(shù)據(jù)集可能是最常用的一個圖像識別數(shù)據(jù)集。它包含 60,000 個手寫數(shù)字的訓練樣本和 10,000 個測試樣本校辩。每一張圖像的尺寸為 28×28像素把鉴。目前最先進的模型通常能在該測試集中達到 99.5% 或更高的準確度。
動量(Momentum)
動量是梯度下降算法(Gradient Descent Algorithm)的擴展诗轻,可以加速和阻抑參數(shù)更新。在實際應用中,在梯度下降更新中包含一個動量項可在深度網(wǎng)絡中得到更好的收斂速度(convergence rate)厌杜。
論文:通過反向傳播(back-propagating error)錯誤學習表征
多層感知器(MLP:Multilayer Perceptron)
多層感知器是一種帶有多個全連接層的前饋神經(jīng)網(wǎng)絡匙握,這些全連接層使用非線性激活函數(shù)(activation function)處理非線性可分的數(shù)據(jù)秦忿。MLP 是多層神經(jīng)網(wǎng)絡或有兩層以上的深度神經(jīng)網(wǎng)絡的最基本形式。
負對數(shù)似然(NLL:Negative Log Likelihood)
參見分類交叉熵損失(Categorical Cross-Entropy Loss)。
神經(jīng)網(wǎng)絡機器翻譯(NMT:Neural Machine Translation)
NMT 系統(tǒng)使用神經(jīng)網(wǎng)絡實現(xiàn)語言(如英語和法語)之間的翻譯。NMT 系統(tǒng)可以使用雙語語料庫進行端到端的訓練,這有別于需要手工打造特征和開發(fā)的傳統(tǒng)機器翻譯系統(tǒng)。NMT 系統(tǒng)通常使用編碼器和解碼器循環(huán)神經(jīng)網(wǎng)絡實現(xiàn)北秽,它可以分別編碼源句和生成目標句辙培。
論文:使用神經(jīng)網(wǎng)絡的序列到序列學習(Sequence to Sequence Learning with Neural Networks)
論文:為統(tǒng)計機器翻譯使用 RNN 編碼器-解碼器學習短語表征(Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation)
神經(jīng)圖靈機(NTM:Neural Turing Machine)
NTM 是可以從案例中推導簡單算法的神經(jīng)網(wǎng)絡架構尾抑。比如翎冲,NTM 可以通過案例的輸入和輸出學習排序算法驹饺。NTM 通常學習記憶和注意機制的某些形式以處理程序執(zhí)行過程中的狀態(tài)卡儒。
論文:神經(jīng)圖靈機(Neural Turing Machines)
非線性(Nonlinearity)
參見激活函數(shù)(Activation Function)。
噪音對比估計(NCE:noise-contrastive estimation)
噪音對比估計是一種通常被用于訓練帶有大輸出詞匯的分類器的采樣損失(sampling loss)。在大量的可能的類上計算 softmax
是異常昂貴的。使用 NCE,我們可以將問題降低成二元分類問題,這可以通過訓練分類器區(qū)別對待取樣和「真實」分布以及人工生成的噪聲分布來實現(xiàn)辨液。
論文:噪音對比估計:一種用于非標準化統(tǒng)計模型的新估計原理(Noise-contrastive estimation: A new estimation principle for unnormalized statistical models )
論文:使用噪音對比估計有效地學習詞向量(Learning word embeddings efficiently with noise-contrastive estimation)
池化
參見最大池化(Max-Pooling)或平均池化(Average-Pooling)。
受限玻爾茲曼機(RBN:Restricted Boltzmann Machine)
RBN 是一種可被解釋為一個隨機人工神經(jīng)網(wǎng)絡的概率圖形模型。RBN 以無監(jiān)督的形式學習數(shù)據(jù)的表征抗蠢。RBN
由可見層和隱藏層以及每一個這些層中的二元神經(jīng)元的連接所構成秽褒。RBN 可以使用對比散度(contrastive
divergence)進行有效的訓練蚂踊,這是梯度下降的一種近似涝动。
第六章:動態(tài)系統(tǒng)中的信息處理:和諧理論基礎
論文:受限玻爾茲曼機簡介(An Introduction to Restricted Boltzmann Machines)
循環(huán)神經(jīng)網(wǎng)絡(RNN:Recurrent Neural Network)
RNN 模型通過隱藏狀態(tài)(或稱記憶)連續(xù)進行相互作用重归。它可以使用最多 N 個輸入狈网,并產(chǎn)生最多 N
個輸出士鸥。比如,一個輸入序列可能是一個句子舆绎,其輸出為每個單詞的詞性標注(part-of-speech tag)(N 到
N);一個輸入可能是一個句子阻问,其輸出為該句子的情感分類(N 到 1);一個輸入可能是單個圖像,其輸出為描述該圖像所對應一系列詞語(1 到
N)邻眷。在每一個時間步驟中葫督,RNN
會基于當前輸入和之前的隱藏狀態(tài)計算新的隱藏狀態(tài)「記憶」。其中「循環(huán)(recurrent)」這個術語來自這個事實:在每一步中都是用了同樣的參數(shù),該網(wǎng)絡根據(jù)不同的輸入執(zhí)行同樣的計算。
技術博客:了解 LSTM 網(wǎng)絡(http://colah.github.io/posts/2015-08-Understanding-LSTMs/)
技術博客:循環(huán)神經(jīng)網(wǎng)絡教程第1部分——介紹 RNN (http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/)
遞歸神經(jīng)網(wǎng)絡(Recursive Neural Network)
遞歸神經(jīng)網(wǎng)絡是循環(huán)神經(jīng)網(wǎng)絡的樹狀結構的一種泛化(generalization)钦铺。每一次遞歸都使用相同的權重。就像 RNN
一樣族淮,遞歸神經(jīng)網(wǎng)絡可以使用向后傳播(backpropagation)進行端到端的訓練。盡管可以學習樹結構以將其用作優(yōu)化問題的一部分孕荠,但遞歸神經(jīng)網(wǎng)絡通常被用在已有預定義結構的問題中槐瑞,如自然語言處理的解析樹中骚灸。
論文:使用遞歸神經(jīng)網(wǎng)絡解析自然場景和自然語言(Parsing Natural Scenes and Natural Language with Recursive Neural Networks )
ReLU
即線性修正單元(Rectified Linear Unit)雏赦。ReLU 常在深度神經(jīng)網(wǎng)絡中被用作激活函數(shù)施逾。它們的定義是 f(x) =
max(0, x) 。ReLU 相對于 tanh 等函數(shù)的優(yōu)勢包括它們往往很稀疏(它們的活化可以很容易設置為
0)虫埂,而且它們受到梯度消失問題的影響也更小。ReLU 主要被用在卷積神經(jīng)網(wǎng)絡中用作激活函數(shù)源祈。ReLU 存在幾種變體,如Leaky
ReLUs倔撞、Parametric ReLU (PReLU) 或更為流暢的 softplus近似耙册。
論文:深入研究修正器(Rectifiers):在 ImageNet 分類上超越人類水平的性能(Delving Deep into
Rectifiers: Surpassing Human-Level Performance on ImageNet
Classification)
論文:修正非線性改進神經(jīng)網(wǎng)絡聲學模型(Rectifier Nonlinearities Improve Neural Network Acoustic Models )
論文:線性修正單元改進受限玻爾茲曼機(Rectified Linear Units Improve Restricted Boltzmann Machines ?)
殘差網(wǎng)絡(ResNet)
深度殘差網(wǎng)絡(Deep Residual Network)贏得了 2015 年的 ILSVRC
挑戰(zhàn)賽脯爪。這些網(wǎng)絡的工作方式是引入跨層堆棧的快捷連接,讓優(yōu)化器可以學習更「容易」的殘差映射(residual
mapping)而非更為復雜的原映射(original mapping)滨巴。這些快捷連接和 Highway Layer
類似攒发,但它們與數(shù)據(jù)無關且不會引入額外的參數(shù)或訓練復雜度。ResNet 在 ImageNet 測試集中實現(xiàn)了 3.57% 的錯誤率玩祟。
論文:用于圖像識別的深度殘差網(wǎng)絡(Deep Residual Learning for Image Recognition)
RMSProp
RMSProp 是一種基于梯度的優(yōu)化算法撮慨。它與 Adagrad 類似,但引入了一個額外的衰減項抵消 Adagrad 在學習率上的快速下降鲜棠。
PPT:用于機器學習的神經(jīng)網(wǎng)絡 講座6a
技術博客:斯坦福CS231n:優(yōu)化算法(http://cs231n.github.io/neural-networks-3/)
技術博客:梯度下降優(yōu)化算法概述(http://sebastianruder.com/optimizing-gradient-descent/)
序列到序列(Seq2Seq)
序列到序列(Sequence-to-Sequence)模型讀取一個序列(如一個句子)作為輸入里逆,然后產(chǎn)生另一個序列作為輸出颇玷。它和標準的
RNN 不同谒亦;在標準的 RNN 中,輸入序列會在網(wǎng)絡開始產(chǎn)生任何輸出之前被完整地讀取孕豹。通常而言,Seq2Seq 通過兩個分別作為編碼器和解碼器的
RNN 實現(xiàn)蝶涩。神經(jīng)網(wǎng)絡機器翻譯是一類典型的 Seq2Seq 模型棚赔。
論文:使用神經(jīng)網(wǎng)絡的序列到序列學習(Sequence to Sequence Learning with Neural Networks)
隨機梯度下降(SGD:Stochastic Gradient Descent)
隨機梯度下降是一種被用在訓練階段學習網(wǎng)絡參數(shù)的基于梯度的優(yōu)化算法。梯度通常使用反向傳播算法計算靠益。在實際應用中丧肴,人們使用微小批量版本的
SGD,其中的參數(shù)更新基于批案例而非單個案例進行執(zhí)行捆毫,這能增加計算效率闪湾。vanilla SGD
存在許多擴展冲甘,包括動量(Momentum)绩卤、Adagrad途样、rmsprop、Adadelta 或 Adam濒憋。
論文:用于在線學習和隨機優(yōu)化的自適應次梯度方法(Adaptive Subgradient Methods for Online Learning and Stochastic Optimization)
技術博客:斯坦福CS231n:優(yōu)化算法(http://cs231n.github.io/neural-networks-3/)
技術博客:梯度下降優(yōu)化算法概述(http://sebastianruder.com/optimizing-gradient-descent/)
Softmax
Softmax 函數(shù)通常被用于將原始分數(shù)(raw score)的矢量轉換成用于分類的神經(jīng)網(wǎng)絡的輸出層上的類概率(class
probability)何暇。它通過對歸一化常數(shù)(normalization
constant)進行指數(shù)化和相除運算而對分數(shù)進行規(guī)范化。如果我們正在處理大量的類凛驮,例如機器翻譯中的大量詞匯裆站,計算歸一化常數(shù)是很昂貴的。有許多種可以讓計算更高效的替代選擇黔夭,包括分層
Softmax(Hierarchical Softmax)或使用基于取樣的損失函數(shù)宏胯,如 NCE。
TensorFlow
TensorFlow是一個開源 C ++ / Python 軟件庫本姥,用于使用數(shù)據(jù)流圖的數(shù)值計算肩袍,尤其是深度神經(jīng)網(wǎng)絡。它是由谷歌創(chuàng)建的婚惫。在設計方面氛赐,它最類似于 Theano,但比 ?Caffe 或 Keras 更低級先舷。
Theano
Theano 是一個讓你可以定義艰管、優(yōu)化和評估數(shù)學表達式的 Python 庫。它包含許多用于深度神經(jīng)網(wǎng)絡的構造模塊蒋川。Theano 是類似于 TensorFlow 的低級別庫牲芋。更高級別的庫包括Keras 和 Caffe。
梯度消失問題(Vanishing Gradient Problem)
梯度消失問題出現(xiàn)在使用梯度很修嗲颉(在 0 到 1
的范圍內)的激活函數(shù)的非常深的神經(jīng)網(wǎng)絡中街图,通常是循環(huán)神經(jīng)網(wǎng)絡。因為這些小梯度會在反向傳播中相乘懒构,它們往往在這些層中傳播時「消失」餐济,從而讓網(wǎng)絡無法學習長程依賴。解決這一問題的常用方法是使用
ReLU 這樣的不受小梯度影響的激活函數(shù)胆剧,或使用明確針對消失梯度問題的架構絮姆,如LSTM。這個問題的反面被稱為梯度爆炸問題(exploding
gradient problem)秩霍。
論文:訓練循環(huán)神經(jīng)網(wǎng)絡的困難之處(On the difficulty of training Recurrent Neural Networks)
VGG
VGG 是在 2014 年 ImageNet 定位和分類比賽中分別斬獲第一和第二位置的卷積神經(jīng)網(wǎng)絡模型篙悯。這個 VGG 模型包含 16-19 個權重層,并使用了大小為 3×3 和 1×1 的小型卷積過濾器铃绒。
論文:用于大規(guī)模圖像識別的非常深度的卷積網(wǎng)絡(Very Deep Convolutional Networks for Large-Scale Image Recognition)
word2vec
word2vec 是一種試圖通過預測文檔中話語的上下文來學習詞向量(word embedding)的算法和工具
(https://code.google.com/p/word2vec/)鸽照。最終得到的詞矢量(word
vector)有一些有趣的性質,例如vector('queen') ~= vector('king') - vector('man') +
vector('woman') (女王~=國王-男人+女人)颠悬。兩個不同的目標函數(shù)可以用來學習這些嵌入:Skip-Gram
目標函數(shù)嘗試預測一個詞的上下文矮燎,CBOW ?目標函數(shù)則嘗試從詞上下文預測這個詞定血。
論文:向量空間中詞匯表征的有效評估(Efficient Estimation of Word Representations in Vector Space)
論文:分布式詞匯和短語表征以及他們的組合性(Distributed Representations of Words and Phrases and their Compositionality)
論文:解釋 word2vec 參數(shù)學習(word2vec Parameter Learning Explained)