激活函數(Activation Function)
為了讓神經網絡能夠學習復雜的決策邊界(decision boundary),我們在其一些層應用一個非線性激活函數。最常用的函數包括 ?sigmoid、tanh、ReLU(Rectified Linear Unit 線性修正單元) 以及這些函數的變體。
Adadelta
Adadelta 是一個基于梯度下降的學習算法,可以隨時間調整適應每個參數的學習率。它是作為 Adagrad 的改進版提出的,它比超參數(hyperparameter)更敏感而且可能會太過嚴重地降低學習率。Adadelta 類似于 rmsprop,而且可被用來替代 vanilla SGD。
論文:Adadelta:一種自適應學習率方法(ADADELTA: An Adaptive Learning Rate Method)
技術博客:斯坦福 CS231n:優化算法(http://cs231n.github.io/neural-networks-3/)
技術博客:梯度下降優化算法概述(http://sebastianruder.com/optimizing-gradient-descent/)
Adagrad
Adagrad 是一種自適應學習率算法,能夠隨時間跟蹤平方梯度并自動適應每個參數的學習率。它可被用來替代vanilla SGD (http://www.wildml.com/deep-learning-glossary/#sgd);而且在稀疏數據上更是特別有用,在其中它可以將更高的學習率分配給更新不頻繁的參數。
論文:用于在線學習和隨機優化的自適應次梯度方法(Adaptive Subgradient Methods for Online Learning and Stochastic Optimization)
技術博客:斯坦福 CS231n:優化算法(http://cs231n.github.io/neural-networks-3/)
技術博客:梯度下降優化算法概述(http://sebastianruder.com/optimizing-gradient-descent/)
Adam
Adam 是一種類似于 rmsprop 的自適應學習率算法,但它的更新是通過使用梯度的第一和第二時刻的運行平均值(running average)直接估計的,而且還包括一個偏差校正項。
論文:Adam:一種隨機優化方法(Adam: A Method for Stochastic Optimization)
技術博客:梯度下降優化算法概述(http://sebastianruder.com/optimizing-gradient-descent/)
仿射層(Affine Layer)
神經網絡中的一個全連接層。仿射(Affine)的意思是前面一層中的每一個神經元都連接到當前層中的每一個神經元。在許多方面,這是神經網絡的「標準」層。仿射層通常被加在卷積神經網絡或循環神經網絡做出最終預測前的輸出的頂層。仿射層的一般形式為 y = f(Wx + b),其中 x 是層輸入,w 是參數,b 是一個偏差矢量,f 是一個非線性激活函數。
注意機制(Attention Mechanism)
注意機制是由人類視覺注意所啟發的,是一種關注圖像中特定部分的能力。注意機制可被整合到語言處理和圖像識別的架構中以幫助網絡學習在做出預測時應該「關注」什么。
技術博客:深度學習和自然語言處理中的注意和記憶(http://www.wildml.com/2016/01/attention-and-memory-in-deep-learning-and-nlp/)
Alexnet
Alexnet 是一種卷積神經網絡架構的名字,這種架構曾在 2012 年 ILSVRC 挑戰賽中以巨大優勢獲勝,而且它還導致了人們對用于圖像識別的卷積神經網絡(CNN)的興趣的復蘇。它由 5 個卷積層組成。其中一些后面跟隨著最大池化(max-pooling)層和帶有最終 1000 條路徑的 softmax (1000-way softmax)的 3個全連接層。Alexnet 被引入到了使用深度卷積神經網絡的 ImageNet 分類中。
自編碼器(Autoencoder)
自編碼器是一種神經網絡模型,它的目標是預測輸入自身,這通常通過網絡中某個地方的「瓶頸(bottleneck)」實現。通過引入瓶頸,我們迫使網絡學習輸入更低維度的表征,從而有效地將輸入壓縮成一個好的表征。自編碼器和 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)
平均池化是一種在卷積神經網絡中用于圖像識別的池化(Pooling)技術。它的工作原理是在特征的局部區域上滑動窗口,比如像素,然后再取窗口中所有值的平均。它將輸入表征壓縮成一種更低維度的表征。
反向傳播(Backpropagation)
反向傳播是一種在神經網絡中用來有效地計算梯度的算法,或更一般而言,是一種前饋計算圖(feedforward computational graph)。其可以歸結成從網絡輸出開始應用分化的鏈式法則,然后向后傳播梯度。反向傳播的第一個應用可以追溯到 1960 年代的 Vapnik 等人,但論文 Learning representations by back-propagating errors常常被作為引用源。
技術博客:計算圖上的微積分學:反向傳播(http://colah.github.io/posts/2015-08-Backprop/)
通過時間的反向傳播(BPTT:Backpropagation Through Time)
通過時間的反向傳播是應用于循環神經網絡(RNN)的反向傳播算法。BPTT 可被看作是應用于 RNN 的標準反向傳播算法,其中的每一個時間步驟(time step)都代表一個計算層,而且它的參數是跨計算層共享的。因為 RNN 在所有的時間步驟中都共享了同樣的參數,一個時間步驟的錯誤必然能「通過時間」反向到之前所有的時間步驟,該算法也因而得名。當處理長序列(數百個輸入)時,為降低計算成本常常使用一種刪節版的 BPTT。刪節的 BPTT 會在固定數量的步驟之后停止反向傳播錯誤。
論文:Backpropagation Through Time: What It Does and How to Do It
分批標準化(BN:Batch Normalization)
分批標準化是一種按小批量的方式標準化層輸入的技術。它能加速訓練過程,允許使用更高的學習率,還可用作規范器(regularizer)。人們發現,分批標準化在卷積和前饋神經網絡中應用時非常高效,但尚未被成功應用到循環神經網絡上。
論文:分批標準化:通過減少內部協變量位移(Covariate Shift)加速深度網絡訓練(Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift)
論文:使用分批標準化的循環神經網絡(Batch Normalized Recurrent Neural Networks)
雙向循環神經網絡(Bidirectional RNN)
雙向循環神經網絡是一類包含兩個方向不同的 RNN 的神經網絡。其中的前向 RNN 從起點向終點讀取輸入序列,而反向 RNN 則從終點向起點讀取。這兩個 RNN 互相彼此堆疊,它們的狀態通常通過附加兩個矢量的方式進行組合。雙向 RNN 常被用在自然語言問題中,因為在自然語言中我們需要同時考慮話語的前后上下文以做出預測。
論文:雙向循環神經網絡(Bidirectional Recurrent Neural Networks)
Caffe
Caffe 是由伯克利大學視覺和學習中心開發的一種深度學習框架。在視覺任務和卷積神經網絡模型中,Caffe 格外受歡迎且性能優異
.
分類交叉熵損失(Categorical Cross-Entropy Loss)
分類交叉熵損失也被稱為負對數似然(negative log likelihood)。這是一種用于解決分類問題的流行的損失函數,可用于測量兩種概率分布(通常是真實標簽和預測標簽)之間的相似性。它可用 L = -sum(y * log(y_prediction)) 表示,其中 y 是真實標簽的概率分布(通常是一個one-hot vector),y_prediction 是預測標簽的概率分布,通常來自于一個 softmax。
信道(Channel)
深度學習模型的輸入數據可以有多個信道。圖像就是個典型的例子,它有紅、綠和藍三個顏色信道。一個圖像可以被表示成一個三維的張量(Tensor),其中的維度對應于信道、高度和寬度。自然語言數據也可以有多個信道,比如在不同類型的嵌入(embedding)形式中。
卷積神經網絡(CNN/ConvNet:Convolutional Neural Network)
CNN 使用卷積連接從輸入的局部區域中提取的特征。大部分 CNN 都包含了卷積層、池化層和仿射層的組合。CNN 尤其憑借其在視覺識別任務的卓越性能表現而獲得了普及,它已經在該領域保持了好幾年的領先。
技術博客:斯坦福CS231n類——用于視覺識別的卷積神經網絡(http://cs231n.github.io/neural-networks-3/)
技術博客:理解用于自然語言處理的卷積神經網絡(http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/)
深度信念網絡(DBN:Deep Belief Network)
DBN 是一類以無監督的方式學習數據的分層表征的概率圖形模型。DBN 由多個隱藏層組成,這些隱藏層的每一對連續層之間的神經元是相互連接的。DBN 通過彼此堆疊多個 RBN(限制波爾茲曼機)并一個接一個地訓練而創建。
論文:深度信念網絡的一種快速學習算法(A fast learning algorithm for deep belief nets)
Deep Dream
這是谷歌發明的一種試圖用來提煉深度卷積神經網絡獲取的知識的技術。這種技術可以生成新的圖像或轉換已有的圖片從而給它們一種幻夢般的感覺,尤其是遞歸地應用時。
代碼:Github 上的 Deep Dream(https://github.com/google/deepdream)
技術博客:Inceptionism:向神經網絡掘進更深(https://research.googleblog.com/2015/06/inceptionism-going-deeper-into-neural.html)
Dropout
Dropout 是一種用于神經網絡防止過擬合的正則化技術。它通過在每次訓練迭代中隨機地設置神經元中的一小部分為 0 來阻止神經元共適應(co-adapting),Dropout 可以通過多種方式進行解讀,比如從不同網絡的指數數字中隨機取樣。Dropout 層首先通過它們在卷積神經網絡中的應用而得到普及,但自那以后也被應用到了其它層上,包括輸入嵌入或循環網絡。
論文:Dropout: 一種防止神經網絡過擬合的簡單方法(Dropout: A Simple Way to Prevent Neural Networks from Overfitting)
論文:循環神經網絡正則化(Recurrent Neural Network Regularization)
嵌入(Embedding)
一個嵌入映射到一個輸入表征,比如一個詞或一句話映射到一個矢量。一種流行的嵌入是詞語嵌入(word embedding,國內常用的說法是:詞向量),如 word2vec 或 GloVe。我們也可以嵌入句子、段落或圖像。比如說,通過將圖像和他們的文本描述映射到一個共同的嵌入空間中并最小化它們之間的距離,我們可以將標簽和圖像進行匹配。嵌入可以被明確地學習到,比如在 word2vec 中;嵌入也可作為監督任務的一部分例如情感分析(Sentiment Analysis)。通常一個網絡的輸入層是通過預先訓練的嵌入進行初始化,然后再根據當前任務進行微調(fine-tuned)。
梯度爆炸問題(Exploding Gradient Problem)
梯度爆炸問題是梯度消失問題(Vanishing Gradient Problem)的對立面。在深度神經網絡中,梯度可能會在反向傳播過程中爆炸,導致數字溢出。解決梯度爆炸的一個常見技術是執行梯度裁剪(Gradient Clipping)。
論文:訓練循環神經網絡的困難之處(On the difficulty of training Recurrent Neural Networks)
微調(Fine-Tuning)
Fine-Tuning 這種技術是指使用來自另一個任務(例如一個無監督訓練網絡)的參數初始化網絡,然后再基于當前任務更新這些參數。比如,自然語言處理架構通常使用 word2vec 這樣的預訓練的詞向量(word embeddings),然后這些詞向量會在訓練過程中基于特定的任務(如情感分析)進行更新。
梯度裁剪(Gradient Clipping)
梯度裁剪是一種在非常深度的網絡(通常是循環神經網絡)中用于防止梯度爆炸(exploding gradient)的技術。執行梯度裁剪的方法有很多,但常見的一種是當參數矢量的 L2 范數(L2 norm)超過一個特定閾值時對參數矢量的梯度進行標準化,這個特定閾值根據函數:新梯度=梯度*閾值/L2范數(梯度){new_gradients = gradients * threshold / l2_norm(gradients)}確定。
論文:訓練循環神經網絡的困難之處(On the difficulty of training Recurrent Neural Networks)
GloVe
Glove 是一種為話語獲取矢量表征(嵌入)的無監督學習算法。GloVe 的使用目的和 word2vec 一樣,但 GloVe 具有不同的矢量表征,因為它是在共現(co-occurrence)統計數據上訓練的。
論文:GloVe:用于詞匯表征(Word Representation)的全局矢量(Global Vector)(GloVe: Global Vectors for Word Representation )
GoogleLeNet
GoogleLeNet 是曾贏得了 2014 年 ILSVRC 挑戰賽的一種卷積神經網絡架構。這種網絡使用 Inception 模塊(Inception Module)以減少參數和提高網絡中計算資源的利用率。
論文:使用卷積獲得更深(Going Deeper with Convolutions)
GRU
GRU(Gated Recurrent Unit:門控循環單元)是一種 LSTM 單元的簡化版本,擁有更少的參數。和 LSTM 細胞(LSTM cell)一樣,它使用門控機制,通過防止梯度消失問題(vanishing gradient problem)讓循環神經網絡可以有效學習長程依賴(long-range dependency)。GRU 包含一個復位和更新門,它們可以根據當前時間步驟的新值決定舊記憶中哪些部分需要保留或更新。
論文:為統計機器翻譯使用 RNN 編碼器-解碼器學習短語表征(Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation)
技術博客:循環神經網絡教程,第 4 部分:用 Python 和 Theano 實現 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 是使用門控機制控制通過層的信息流的一種神經網絡層。堆疊多個 Highway Layer 層可讓訓練非常深的網絡成為可能。Highway Layer 的工作原理是通過學習一個選擇輸入的哪部分通過和哪部分通過一個變換函數(如標準的仿射層)的門控函數來進行學習。Highway Layer 的基本公式是 T * h(x) + (1 - T) * x;其中 T 是學習過的門控函數,取值在 0 到 1 之間;h(x) 是一個任意的輸入變換,x 是輸入。注意所有這些都必須具有相同的大小。
論文:Highway Networks
ICML
即國際機器學習大會(International Conference for Machine Learning),一個頂級的機器學習會議。
ILSVRC
即 ImageNet 大型視覺識別挑戰賽(ImageNet Large Scale Visual Recognition Challenge),該比賽用于評估大規模對象檢測和圖像分類的算法。它是計算機視覺領域最受歡迎的學術挑戰賽。過去幾年中,深度學習讓錯誤率出現了顯著下降,從 30% 降到了不到 5%,在許多分類任務中擊敗了人類。
Inception模塊(Inception Module)
Inception模塊被用在卷積神經網絡中,通過堆疊 1×1 卷積的降維(dimensionality reduction)帶來更高效的計算和更深度的網絡。
論文:使用卷積獲得更深(Going Deeper with Convolutions)
Keras
Kears 是一個基于 Python 的深度學習庫,其中包括許多用于深度神經網絡的高層次構建模塊。它可以運行在 TensorFlow 或 Theano 上。
LSTM
長短期記憶(Long Short-Term Memory)網絡通過使用內存門控機制防止循環神經網絡(RNN)中的梯度消失問題(vanishing gradient problem)。使用 LSTM 單元計算 RNN 中的隱藏狀態可以幫助該網絡有效地傳播梯度和學習長程依賴(long-range dependency)。
論文:長短期記憶(LONG SHORT-TERM MEMORY)
技術博客:理解 LSTM 網絡(http://colah.github.io/posts/2015-08-Understanding-LSTMs/)
技術博客:循環神經網絡教程,第 4 部分:用 Python 和 Theano 實現 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)操作通常被用在卷積神經網絡中。一個最大池化層從一塊特征中選取最大值。和卷積層一樣,池化層也是通過窗口(塊)大小和步幅尺寸進行參數化。比如,我們可能在一個 10×10 特征矩陣上以 2 的步幅滑動一個 2×2 的窗口,然后選取每個窗口的 4 個值中的最大值,得到一個 5×5 特征矩陣。池化層通過只保留最突出的信息來減少表征的維度;在這個圖像輸入的例子中,它們為轉譯提供了基本的不變性(即使圖像偏移了幾個像素,仍可選出同樣的最大值)。池化層通常被安插在連續卷積層之間。
MNIST
MNIST數據集可能是最常用的一個圖像識別數據集。它包含 60,000 個手寫數字的訓練樣本和 10,000 個測試樣本。每一張圖像的尺寸為 28×28像素。目前最先進的模型通常能在該測試集中達到 99.5% 或更高的準確度。
動量(Momentum)
動量是梯度下降算法(Gradient Descent Algorithm)的擴展,可以加速和阻抑參數更新。在實際應用中,在梯度下降更新中包含一個動量項可在深度網絡中得到更好的收斂速度(convergence rate)。
論文:通過反向傳播(back-propagating error)錯誤學習表征
多層感知器(MLP:Multilayer Perceptron)
多層感知器是一種帶有多個全連接層的前饋神經網絡,這些全連接層使用非線性激活函數(activation function)處理非線性可分的數據。MLP 是多層神經網絡或有兩層以上的深度神經網絡的最基本形式。
負對數似然(NLL:Negative Log Likelihood)
參見分類交叉熵損失(Categorical Cross-Entropy Loss)。
神經網絡機器翻譯(NMT:Neural Machine Translation)
NMT 系統使用神經網絡實現語言(如英語和法語)之間的翻譯。NMT 系統可以使用雙語語料庫進行端到端的訓練,這有別于需要手工打造特征和開發的傳統機器翻譯系統。NMT 系統通常使用編碼器和解碼器循環神經網絡實現,它可以分別編碼源句和生成目標句。
論文:使用神經網絡的序列到序列學習(Sequence to Sequence Learning with Neural Networks)
論文:為統計機器翻譯使用 RNN 編碼器-解碼器學習短語表征(Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation)
神經圖靈機(NTM:Neural Turing Machine)
NTM 是可以從案例中推導簡單算法的神經網絡架構。比如,NTM 可以通過案例的輸入和輸出學習排序算法。NTM 通常學習記憶和注意機制的某些形式以處理程序執行過程中的狀態。
論文:神經圖靈機(Neural Turing Machines)
非線性(Nonlinearity)
參見激活函數(Activation Function)。
噪音對比估計(NCE:noise-contrastive estimation)
噪音對比估計是一種通常被用于訓練帶有大輸出詞匯的分類器的采樣損失(sampling loss)。在大量的可能的類上計算 softmax 是異常昂貴的。使用 NCE,我們可以將問題降低成二元分類問題,這可以通過訓練分類器區別對待取樣和「真實」分布以及人工生成的噪聲分布來實現。
論文:噪音對比估計:一種用于非標準化統計模型的新估計原理(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 是一種可被解釋為一個隨機人工神經網絡的概率圖形模型。RBN 以無監督的形式學習數據的表征。RBN 由可見層和隱藏層以及每一個這些層中的二元神經元的連接所構成。RBN 可以使用對比散度(contrastive divergence)進行有效的訓練,這是梯度下降的一種近似。
第六章:動態系統中的信息處理:和諧理論基礎
論文:受限玻爾茲曼機簡介(An Introduction to Restricted Boltzmann Machines)
循環神經網絡(RNN:Recurrent Neural Network)
RNN 模型通過隱藏狀態(或稱記憶)連續進行相互作用。它可以使用最多 N 個輸入,并產生最多 N 個輸出。比如,一個輸入序列可能是一個句子,其輸出為每個單詞的詞性標注(part-of-speech tag)(N 到 N);一個輸入可能是一個句子,其輸出為該句子的情感分類(N 到 1);一個輸入可能是單個圖像,其輸出為描述該圖像所對應一系列詞語(1 到 N)。在每一個時間步驟中,RNN 會基于當前輸入和之前的隱藏狀態計算新的隱藏狀態「記憶」。其中「循環(recurrent)」這個術語來自這個事實:在每一步中都是用了同樣的參數,該網絡根據不同的輸入執行同樣的計算。
技術博客:了解 LSTM 網絡(http://colah.github.io/posts/2015-08-Understanding-LSTMs/)
技術博客:循環神經網絡教程第1部分——介紹 RNN (http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/)
遞歸神經網絡(Recursive Neural Network)
遞歸神經網絡是循環神經網絡的樹狀結構的一種泛化(generalization)。每一次遞歸都使用相同的權重。就像 RNN 一樣,遞歸神經網絡可以使用向后傳播(backpropagation)進行端到端的訓練。盡管可以學習樹結構以將其用作優化問題的一部分,但遞歸神經網絡通常被用在已有預定義結構的問題中,如自然語言處理的解析樹中。
論文:使用遞歸神經網絡解析自然場景和自然語言(Parsing Natural Scenes and Natural Language with Recursive Neural Networks )
ReLU
即線性修正單元(Rectified Linear Unit)。ReLU 常在深度神經網絡中被用作激活函數。它們的定義是 f(x) = max(0, x) 。ReLU 相對于 tanh 等函數的優勢包括它們往往很稀疏(它們的活化可以很容易設置為 0),而且它們受到梯度消失問題的影響也更小。ReLU 主要被用在卷積神經網絡中用作激活函數。ReLU 存在幾種變體,如Leaky ReLUs、Parametric ReLU (PReLU) 或更為流暢的 softplus近似。
論文:深入研究修正器(Rectifiers):在 ImageNet 分類上超越人類水平的性能(Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification)
論文:修正非線性改進神經網絡聲學模型(Rectifier Nonlinearities Improve Neural Network Acoustic Models )
論文:線性修正單元改進受限玻爾茲曼機(Rectified Linear Units Improve Restricted Boltzmann Machines ?)
殘差網絡(ResNet)
深度殘差網絡(Deep Residual Network)贏得了 2015 年的 ILSVRC 挑戰賽。這些網絡的工作方式是引入跨層堆棧的快捷連接,讓優化器可以學習更「容易」的殘差映射(residual mapping)而非更為復雜的原映射(original mapping)。這些快捷連接和 Highway Layer 類似,但它們與數據無關且不會引入額外的參數或訓練復雜度。ResNet 在 ImageNet 測試集中實現了 3.57% 的錯誤率。
論文:用于圖像識別的深度殘差網絡(Deep Residual Learning for Image Recognition)
RMSProp
RMSProp 是一種基于梯度的優化算法。它與 Adagrad 類似,但引入了一個額外的衰減項抵消 Adagrad 在學習率上的快速下降。
PPT:用于機器學習的神經網絡 講座6a
技術博客:斯坦福CS231n:優化算法(http://cs231n.github.io/neural-networks-3/)
技術博客:梯度下降優化算法概述(http://sebastianruder.com/optimizing-gradient-descent/)
序列到序列(Seq2Seq)
序列到序列(Sequence-to-Sequence)模型讀取一個序列(如一個句子)作為輸入,然后產生另一個序列作為輸出。它和標準的 RNN 不同;在標準的 RNN 中,輸入序列會在網絡開始產生任何輸出之前被完整地讀取。通常而言,Seq2Seq 通過兩個分別作為編碼器和解碼器的 RNN 實現。神經網絡機器翻譯是一類典型的 Seq2Seq 模型。
論文:使用神經網絡的序列到序列學習(Sequence to Sequence Learning with Neural Networks)
隨機梯度下降(SGD:Stochastic Gradient Descent)
隨機梯度下降是一種被用在訓練階段學習網絡參數的基于梯度的優化算法。梯度通常使用反向傳播算法計算。在實際應用中,人們使用微小批量版本的 SGD,其中的參數更新基于批案例而非單個案例進行執行,這能增加計算效率。vanilla SGD 存在許多擴展,包括動量(Momentum)、Adagrad、rmsprop、Adadelta 或 Adam。
論文:用于在線學習和隨機優化的自適應次梯度方法(Adaptive Subgradient Methods for Online Learning and Stochastic Optimization)
技術博客:斯坦福CS231n:優化算法(http://cs231n.github.io/neural-networks-3/)
技術博客:梯度下降優化算法概述(http://sebastianruder.com/optimizing-gradient-descent/)
Softmax
Softmax 函數通常被用于將原始分數(raw score)的矢量轉換成用于分類的神經網絡的輸出層上的類概率(class probability)。它通過對歸一化常數(normalization constant)進行指數化和相除運算而對分數進行規范化。如果我們正在處理大量的類,例如機器翻譯中的大量詞匯,計算歸一化常數是很昂貴的。有許多種可以讓計算更高效的替代選擇,包括分層 Softmax(Hierarchical Softmax)或使用基于取樣的損失函數,如 NCE。
TensorFlow
TensorFlow是一個開源 C ++ / Python 軟件庫,用于使用數據流圖的數值計算,尤其是深度神經網絡。它是由谷歌創建的。在設計方面,它最類似于 Theano,但比 ?Caffe 或 Keras 更低級。
Theano
Theano 是一個讓你可以定義、優化和評估數學表達式的 Python 庫。它包含許多用于深度神經網絡的構造模塊。Theano 是類似于 TensorFlow 的低級別庫。更高級別的庫包括Keras 和 Caffe。
梯度消失問題(Vanishing Gradient Problem)
梯度消失問題出現在使用梯度很小(在 0 到 1 的范圍內)的激活函數的非常深的神經網絡中,通常是循環神經網絡。因為這些小梯度會在反向傳播中相乘,它們往往在這些層中傳播時「消失」,從而讓網絡無法學習長程依賴。解決這一問題的常用方法是使用 ReLU 這樣的不受小梯度影響的激活函數,或使用明確針對消失梯度問題的架構,如LSTM。這個問題的反面被稱為梯度爆炸問題(exploding gradient problem)。
論文:訓練循環神經網絡的困難之處(On the difficulty of training Recurrent Neural Networks)
VGG
VGG 是在 2014 年 ImageNet 定位和分類比賽中分別斬獲第一和第二位置的卷積神經網絡模型。這個 VGG 模型包含 16-19 個權重層,并使用了大小為 3×3 和 1×1 的小型卷積過濾器。
論文:用于大規模圖像識別的非常深度的卷積網絡(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') (女王~=國王-男人+女人)。兩個不同的目標函數可以用來學習這些嵌入:Skip-Gram 目標函數嘗試預測一個詞的上下文,CBOW ?目標函數則嘗試從詞上下文預測這個詞。
論文:向量空間中詞匯表征的有效評估(Efficient Estimation of Word Representations in Vector Space)
論文:分布式詞匯和短語表征以及他們的組合性(Distributed Representations of Words and Phrases and their Compositionality)
論文:解釋 word2vec 參數學習(word2vec Parameter Learning Explained)