一、過擬合及欠擬合及其解決方案
訓練誤差和泛化誤差
訓練誤差是指在訓練資料集上表現出的誤差,泛化誤差指的是模型在任意乙個測試資料樣本上表現出來的誤差的期望,並常常通過測試資料集上的誤差來近似。計算訓練誤差和泛化誤差可以用損失函式,例如線性回歸用到的平方損失函式和softmax回歸用到的交叉熵損失函式。在機器學習模型應關注降低泛化誤差。
驗證資料集
從嚴格意義上講,測試集只能在所有超引數和模型引數選定後使用一次。不可以使用測試資料選擇模型,如調參。由於無法從訓練誤差估計泛化誤差,因此也不應只依賴訓練資料選擇模型。鑑於此,我們可以預留一部分在訓練資料集和測試資料集以外的資料來進行模型選擇。這部分資料被稱為驗證資料集,簡稱驗證集(validation set)。例如,我們可以從給定的訓練集中隨機選取一小部分作為驗證集,而將剩餘部分作為真正的訓練集。
二、梯度消失、梯度**
在啟用函式的選擇的地方講過,在深層網路中盡量避免選擇sigmoid和tanh啟用函式,原因是這兩個啟用函式會把元素轉換到[0, 1]和[-1, 1]之間,會加劇梯度消失的現象。
當神經網路的層數較多時,模型的數值穩定性容易變差。
三、迴圈神經網路
迴圈神經網路(recurrent neural network, rnn):也叫遞迴神經網路,不同於卷積神經網路,rnn更擅長對序列資料進行建模處理。全連線神經網路和卷積神經網路都預設前乙個輸入和後乙個輸入是完全沒有關係的。但是,某些任務需要能夠更好的處理序列的資訊,即前面的輸入和後面的輸入是有關係的。比如,在做句子**的時候,我是中國人,我會說____ 。如果我們的模型能夠更好的捕捉到「中國人」這一資訊,對於句子的**將會提供極大的幫助。
四、機器翻譯及相關技術
機器翻譯(mt):將一段文字從一種語言自動翻譯為另一種語言,用神經網路解決這個問題通常稱為神經機器翻譯(nmt)。 主要特徵:輸出是單詞序列而不是單個單詞。 輸出序列的長度可能與源序列的長度不同。
五、注意力機制與seq2seq模型
在「編碼器—解碼器(seq2seq)」⼀節⾥,解碼器在各個時間步依賴相同的背景變數(context vector)來獲取輸⼊序列資訊。當編碼器為迴圈神經⽹絡時,背景變數來⾃它最終時間步的隱藏狀態。將源序列輸入資訊以迴圈單位狀態編碼,然後將其傳遞給解碼器以生成目標序列。然而這種結構存在著問題,尤其是rnn機制實際中存在長程梯度消失的問題,對於較長的句子,我們很難寄希望於將輸入的序列轉化為定長的向量而儲存所有的有效資訊,所以隨著所需翻譯句子的長度的增加,這種結構的效果會顯著下降。
六、transformer
在之前的章節中,我們已經介紹了主流的神經網路架構如卷積神經網路(cnns)和迴圈神經網路(rnns)。讓我們進行一些回顧:
cnns 易於並行化,卻不適合捕捉變長序列內的依賴關係。
rnns 適合捕捉長距離變長序列的依賴,但是卻難以實現並行化處理序列。
為了整合cnn和rnn的優勢,[vaswani et al., 2017] 創新性地使用注意力機制設計了transformer模型。該模型利用attention機制實現了並行化捕捉序列依賴,並且同時處理序列的每個位置的tokens,上述優勢使得transformer模型在效能優異的同時大大減少了訓練時間。
與seq2seq模型相似,transformer同樣基於編碼器-解碼器架構,其區別主要在於以下三點:
transformer blocks:將seq2seq模型重的迴圈網路替換為了transformer blocks,該模組包含乙個多頭注意力層(multi-head attention layers)以及兩個position-wise feed-forward networks(ffn)。對於解碼器來說,另乙個多頭注意力層被用於接受編碼器的隱藏狀態。
add and norm:多頭注意力層和前饋網路的輸出被送到兩個「add and norm」層進行處理,該層包含殘差結構以及層歸一化。
position encoding:由於自注意力層並沒有區分元素的順序,所以乙個位置編碼層被用於向序列元素裡新增位置資訊。
七、cnn基礎
卷積神經網路仿造生物的視知覺(visual perception)機制構建,可以進行監督學習和非監督學習,其隱含層內的卷積核引數共享和層間連線的稀疏性使得卷積神經網路能夠以較小的計算量對格點化(grid-like topology)特徵,例如畫素和音訊進行學習、有穩定的效果且對資料沒有額外的特徵工程(feature engineering)要求。
八、letnet
手寫字型識別模型lenet5誕生於2023年,是最早的卷積神經網路之一。lenet5通過巧妙的設計,利用卷積、引數共享、池化等操作提取特徵,避免了大量的計算成本,最後再使用全連線神經網路進行分類識別,這個網路也是最近大量神經網路架構的起點。
深度學習(二)
將龐大的資料集分成許多個batch,遍歷這些batch,每個batch使用梯度下降法進行優化 如果batch的數目太大,則每次迭代的時間太長,如果batch的數目為1,則退化為隨機梯度下降法,這樣就喪失了向量化的加速作用,因此,需要合理選擇batch的數目,一般對於較大的資料集,選擇為64或128到...
深度學習 二
本篇主要涉及深度學習中相關的數學知識 講解的函式都是充分光滑的函式 嚴格定義 假設如下 y軸是位移,x是時間,現在要求特定點的瞬時速度。直觀上摳出任意時刻的一點得到的瞬時速度為0,但是如果任意時刻都為0的話,那麼不就沒有位置變化了嗎?這個問題其實就是著名的飛矢不動悖論。但我們知道單單摳出乙個點來談速...
深度學習初探(二)深度學習框架
theano 是最早的深度學習框架之一,是乙個基於 python 語言 定位底層運算的計算庫,theano 同時支援 gpu 和 cpu 運 算。由於theano 開發效率較低,模型編譯時間較長,同時開發人員轉投tensorflow 等原因,theano 目前已經停止維護 scikit learn ...