第十三週學習筆記
第十三週學習筆記
第九章 卷積網路
主要內容
卷積網路(convolutional network) 是用來專門處理類似網格結構資料的神經網路
1.卷積
神經網路中的卷積是互相關函式
而不像一般的卷積
第二種定義卷積的形式使得卷積具有可交換性,但是這個性質似乎也沒啥用。
2.動機
卷積運算的三個改進:
- 稀疏互動:全連線網路中,輸入與下層每隱層單元互動,若輸入為m維,隱層為n維,演算法的時間複雜度為 ,稀疏互動通過限制輸入與隱層互動的個數到 ,從而有效將時間複雜度降低為 。同時,多層的稀疏互動使得更深層的神經元也能捕捉到更大範圍的資訊(想象金字塔)。
- 引數共享:對於影象中不同位置使用相同的卷積核,就是引數共享的方法。引數共享沒有改變前向傳播演算法的效率(我們仍需要求每個位置的梯度),但是大大減少了引數的儲存空間。
- 等變表示:等變指對於兩個對映 , ,滿足 ,易知卷積操作是平移等變的。對於影象的放縮或旋轉變換,需要其他的一些機制來保持其等變性。
3.池化
池化使用區域性位置的總體統計特徵來代替網路在該位置的輸出,如最大池化、平均池化等,它的好處在於:
- 區域性平移不變性:當輸入做出少量平移時,經過池化函式後的大多數輸出並不會發生改變,在我們關心某個特徵是否出現而不關心它出現的具體位置,十分有用。
- 降取樣提高網路計算效率:池化層少於探測層,減輕後層的負擔。
- 可以處理變大小的輸入。
4.卷積與池化作為一種無限強的先驗
強先驗引數的熵小,也就是引數的確定性大,弱先驗引數熵大,也就是引數的可變性大,卷積神經網路引入了兩個強先驗:
- 來自卷積的平移等變性
- 來自池化的少量平移不變性
值得注意的是
- 平移等變性和平移不變性的區別:平移等變性是指卷積對映與平移對映的可交換性,平移不變性指的是池化操作對於小的平移操作的不敏感性。
- 先驗的指導性:先驗在假設合理的情況下才能達到好的效果,否則會限制模型的學習能力導致欠擬合。
5.基本卷積函式的變體
- 步幅(stride):卷積操作的間隔
- 填充(pad):在影象邊緣填充0防止卷積後圖像變小
三種零填充
- 有效卷積(valid):不填充0,卷積核只允許存在被影象包括的位置
- 相同卷積(same):填充0,使得卷積前後的圖片大小一樣
- 全卷積(full):填充0,使得每個畫素點在每個方向恰被訪問k次
各種卷積
- 非共享卷積(unshared convolution):保持稀疏互動,但不使用引數共享,即對於不同位置使用不同的卷積核
- 平鋪卷積(tiled convolution):介於非共享卷積與普通卷積之間,非共享卷積所有卷積核不一樣,而平鋪卷積中有t個不一樣的核,他們相鄰並交替進行卷積操作。
6.結構化輸出
卷積神經網路可以輸出高維結構化物件。
7.資料型別
對於不同寬高的影象,可以依據輸入的大小使用不同次卷積核,並且對卷積運算進行相應放縮,來處理可變尺寸的輸入。
8.隨機或無監督的特徵
得到卷積核的三種非監督策略
- 隨機初始化
- 手動設計
- 使用無監督標準學習
第十章 序列建模:迴圈和遞迴網路
主要內容
迴圈神經網路(recurrent neural network) 是一類用於處理序列資料的神經網路
重要思想 : 在模型的不同部分共享引數。如果我們在每個時間點都有一個單獨的引數,不但不能泛化到訓練時沒有見過的序列長度,也不能在時間上共享不同序列長度和不同位置的統計強度。
1.展開計算圖
展開的兩個優點:
- 變長輸入:無論序列的長度,學成的模型始終具有相同的輸入大小,因為它逐項輸入序列中的每一項,而不是直接在可變的序列整體上操作
- 引數共享:可以在每個時間步使用相同引數的轉移函式
2.迴圈神經網路
三種設計模式:
- 每個時間步都有輸出,並且隱藏單元之間有迴圈連線的迴圈網路
- 每個時間步產生一個輸出,只有當前的輸出和下層隱藏單元有迴圈網路
- 隱藏單元之間存在迴圈連線,但讀取整個序列後產生單個輸出
隱層到隱層的網路不能通過並行化來加速訓練,因為每個時間步只能在之前的步驟算完後才能計算,這稱為通過時間反向傳播(back-propagation through time, BPTT)
隱藏到隱藏與輸入到隱藏
第二種網路的表現能力沒有第一種強大,因為輸出所包含的資訊不及隱藏單元,除非它高維且內容豐富,這就要求輸出單元捕捉用於預測未來的關於過去的所有資訊,而因為輸出單元明確地訓練成匹配訓練集的目標,它們不太能捕捉關於過去輸入歷史的必要資訊,除非使用者知道如何描述系統的全部狀態,並將它作為訓練目標的一部分。
但第二種網路更容易計算,第二種方法利用訓練集提供的輸出的理想值,不必計算出上一時刻輸出即可進行下一步,使得網路實現並行,這種由輸出到反饋的模型稱為導師驅動過程,但測試時需要用網路的輸出作為下個隱藏單元的輸入,這可能導致網路效能突變。
3.雙向RNN
t時刻的狀態同時依賴於之前和之後的序列
4.基於編碼-解碼的序列到序列架構
變長到變長的對映,應用於語音識別、機器翻譯等。
5.深度迴圈網路
可以在迴圈網路中的下部分引入深度
- 輸入到隱藏
- 隱藏到隱藏
- 隱藏到輸出
6.遞迴神經網路
遞迴神經網路被構造為深的樹狀結構,應用於輸入是資料結構的神經網路。
7.長期依賴的挑戰
為了儲存記憶並對小擾動具有魯棒性,RNN必須進入引數空間中的梯度消失區域。而長期依賴的梯度值很小,隨著依賴跨度增大,就越來越難以捕獲。
8.處理長期依賴的方法
- 回聲狀態網路
- 滲透單元和其他多時間尺度的策略
- 長短期記憶和其他門控RNN
- LSTM ,引入自迴圈的巧妙構思,以產生梯度長時間持續流動的路徑
- GRU,在LSTM的基礎上使用單個門控單元同事控制遺忘因子和更新狀態單元
9.優化長期依賴
截斷梯度——解決梯度爆炸
- 在引數更新之前,逐元素截斷梯度
- 在引數更新之前,截斷梯度的範數
出現梯度為Nan的情況,可以使用隨機步驟跳出數值不穩定的點。
引導資訊流的正則化——解決梯度消失
新增正則化項,使得函式學習過程中維持各層的梯度幅度
10.外顯記憶
神經網路除了通過記憶隱性知識來達到更好表現,也可以通過記憶一些事實來提升,這些事實可能無法從訓練樣本中總結出來(成為網路的隱性知識),但卻包含在解決問題所需的知識中。
第十一章 實踐方法論
主要內容
實驗設計流程:
- 確定目標——使用什麼樣的誤差度量,併為此誤差度量指定目標值。這些目標和誤差度量取決於該應用旨在解決的問題
- 儘快建立一個端到端的工作流程,包括估計合適的效能度量
- 搭建系統,並確定性能瓶頸。檢查哪個部分的效能差於預期,以及是否因為過擬合、欠擬合,或者資料或軟體缺陷造成的
- 根據具體觀察反覆地進行增量式的改動,如收集新資料、調整超引數或改進演算法。
1.效能度量
學術界:根據先前公佈的基準結果來估計預期錯誤率
工業界:錯誤率必須是安全的、具有成本效益的、吸引消費者的
預期錯誤率指導了設計
一些度量:
- 精度(Precision)
- 召回率(Recall)
- F分數(F-score)
- PR曲線
- AUR
2.預設的基準模型
- 邏輯迴歸
- 全連線前饋網路
- 門控網路
- 衰減學習率或動量的SGD演算法,Adam
- 當優化出現問題時,應立刻使用批標準化
- 除非訓練集包括大量樣本,否則一開始就應該包含溫和的正則化或提前終止策略
- 復現模型
3.決定是否收集更多資料
在決定收集更多資料時,可以根據訓練集規模和泛化誤差曲線的走勢來確定還需要收集多少資料。
4.選擇超引數
- 手動選擇——調整模型的有效容量來匹配任務的複雜性,需要對超引數的瞭解
- 自動選擇——需要大量計算資源
模型的有效容量:
- 模型的表示容量
- 學習演算法成功最小化訓練模型代價函式的能力
- 代價函式和訓練過程正則化模型的成都
最重要的超引數(可能?):學習率
最暴力的解決方法:不斷提高模型容量和訓練集大小
自動選擇
- 網格搜尋,對超引數的笛卡爾積進行搜尋,通常使用對數尺度進行網格搜尋,如{0.1,0.01,0.001,…},重複的網格搜尋有更好的效果,也就是先在大尺度上搜索,逐步縮小搜尋尺度,獲得最佳的引數組合。缺點是搜尋時間是引數數目的指數級大小。
- 隨機搜尋,為每個超引數定義邊緣分佈(伯努利分佈、範疇分佈、對數尺度上的均勻分佈),通過取樣得到超引數組合進行搜尋。選擇合適的邊緣分佈使得我們不需要離散化超引數,並且簡單易實現,也避免了網格搜尋中,可能的對不重要的超引數重複無意義的搜尋。
超引數優化是一個單獨被研究的領域。
5.除錯策略
- 視覺化計算模型的行為
- 視覺化最嚴重的錯誤
- 根據訓練和測試誤差檢測軟體
- 擬合小的資料集
- 比較反向傳播和數值導數
- 監控啟用函式值和梯度的直方圖
自動求導
Autograd
在第六章的啟發下實現了動態的自動求導資料結構,並在Logistic迴歸和線性迴歸上做了測試。