iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 29
0
AI & Data

Python零基礎到Kaggle 系列 第 29

Python零基礎到kaggle-Day28

今日目標

概述機器學習兩大支線基礎
卷積神經網路(Convolutional neural network,CNN)
遞歸神經網路(Recurrent neural network,RNN)

看完文章您將學到什麼

CNN,RNN是什麼,過去與架構

內文

CNN

主要用於計算機視覺,處理影像跟聲音,是一種前饋神經網絡,空間特徵提取,善於,且只能捕捉局部特徵,只連接上層部分神經元,主要由Convolution, Pooling, Fully Connected三個結構組成,AlphaGo就是使用了變化過的卷積神經網路與蒙地卡羅樹搜尋演算法

過去

神經元(Neural Cell):上層輸出x跟單層網路參數W線性乘積加上偏移量b,跟非線性變換sigma
淺層神經網路(Neural Network):只有一個隱藏層
深度學習網路(Multilayer Perceptron):一個以上隱藏層

架構

卷積層(Convolution Layer)

局部分析圖像,將原始圖片的與特定的Feature Detector(filter)做卷積運算,通常會放在模型的前幾層,後面會緊跟著池化層,以簡化計算

激活函數層(Activation Functon Layer)

卷積後的結果壓縮到某一個固定的範圍,這樣可以一直保持一層一層下去的數值範圍是可控的

池化層(Pooling Layer)

降低網絡訓練參數,圖像大小及模型的過擬合程度,主要採用Max Pooling挑出矩陣當中最大值對特徵進行採樣,即用一個數值替代一塊區域

扁平層(Flatten Layer)

把多維的輸入壓扁為一維輸出,常用在從卷積層到全連接層的過渡,無參數

全連接層(Dense)

全局分析圖像,數據歸一化,卷積層是多維的陣列,全連接層的Input通常為一維,中間維度的轉換就靠『扁平層』(Flatten)來處理

Dropout層

防止過擬合

卷積與池化

卷積:縮小長寬,識別空間模式(線條,物體局部)
池化:縮小高度,取特徵,就是對卷積做採樣,為了緩解捲積層對位置的過度敏感性

ILSVRC: ImageNet每年舉辦大規模視覺識別挑戰賽

LeNet

圖像識別濫觴

AlexNet(ILSVRC2012年冠軍,8層(5卷積3連接)

初次應用ReLU、Dropout和LRN層(對局部神經元的活動創建競爭機制,增強了模型的泛化能力)並全部使用最大池化跟GPU加速

VGGNet(ILSVRC2014年亞軍,16-19層(也稱為VDCNN)

承襲 AlexNet 思路,建立更多層的模型,將圖像scale到一個尺寸再將結果平均,能增加數據量防止過擬合

Google Inception Net(ILSVRC2014年圖像分類冠軍)

v1:參考Network In Network去除了最後的全連接層,用全局平均池化層減輕了過擬合跟用精心設計的Inception
v2:使用Batch Normalization,BN去除Dropout並減輕L2正則,去除LRN;更徹底地對訓練樣本進行shuffle
v3:將一個較大的二維卷積拆成兩個較小的一維卷積節約了大量參數,加速運算並減輕了過擬合同時增加了一層非線性擴展模型表達能力並優化了Inception Module的結構
v4:結合了微軟的ResNet

ResNet(ILSVRC2015年冠軍,152層)

允許原始輸入信息直接傳輸到後面的層,發現 20 層以上的模型前面幾層會發生優化退化(degradation)的狀況
因而提出以殘差(Residual)解決問題

DenseNet

改進的ResNet,卷積,批量歸一

RNN

用於自然語言處理,關注的是時間序列有關的問題,時序資料特徵提取,識別歷史數據模式,每個神經元都有兩個輸入:過去和現在,使用過去的信息會產生短期記憶,將不定輸入序列轉為定長輸出,存在梯度消失問題,並隨網路層數越高越嚴重(權重與接近於零的梯度相乘會阻止網絡學習新的權重。停止學習會導致 RNN 忘記在較長序列中看到的內容,所以只有短期記憶),無法平行計算。

兩種人工神經網絡的總稱:

時間遞歸神經網絡(Recurrent Neural Network)

RNN 一般指這個

結構遞歸神經網絡(Recursive Neural Network)

結構中有迴路,保持激活狀態,用相似神經網絡結構遞歸構造更複雜的深度網絡

過去

TextCNN:將CNN應用於NLP文本分類,獲取句子中特徵,適用短文本
缺點:長文本,語序

架構

初始化模型參數
定義模型
定義預測函數
剪裁梯度(避免梯度爆炸)
困惑度(perplexity)評價語言模型好壞,是交叉熵損失函數指數運算結果
隨機或相鄰採樣

接下來有些部分NLP會再提到

編碼-解碼器(Sequence-to-Sequence,Seq2Seq)

透過編碼器(Encoder)與解碼器(Decoder)兩個RNN組成,一個Encoder用來處理輸入,閱讀與了解某語言文字,另一個Decoder用來生成輸出,負責生成另一種語言的文字,還要有個終止信號
RNN缺點1:就是越前面的資訊對於後面的決策影響越小,當所經過的時序越多,前面的資訊影響幾乎趨近於零(梯度消失),所以要LSTM
RNN缺點2:句子長短全壓縮到個固定長度向量,造成信息損失

長短期記憶網路(Long Short Term Memory Network,LSTM)

把RNN單元換成LSTM單元,解決梯度消失問題,加入了三個控制用的開關(Gate),分別是寫入(input)、遺忘(forget)、輸出(output)
缺點:架構太複雜耗時,運算量大,不能平行計算,當前計算需依賴上一步結果

Enhanced Sequential Inference Model,ESIM

一種人機對話模型,是用短文本匹配,將兩個LSTM通過序列推理交互模型輸出新表徵

門控循環單元(Gated Recurrent Unit,GRU)

簡化LSTM,多了一個 memory cell,能使用,更新,遺忘長期記憶

注意力機制(Attention)

取代RNN單元,輸出時產生一個注意力範圍表示接下來需關注的部分

自注意力機制(Self-Self-Attention)

無梯度消失問題,比CNN適合長文本,適用輸入序列,但輸出非序列

Tranformer

普遍都直接稱Tranformer
一樣是Seq2Seq架構,但徹底放棄了循環和卷積單元改用Attention,解決NLP深層神經網路訓練問題,可以平行計算,提高訓練速度

多層雙向Transformer(Bidirectional Encoder Representation from Transformers,BERT)

它在訓練雙向語言模型時以減小的概率把少量的詞替成了Mask或者另一個隨機的詞
增加了一個預測下一句的loss

詞嵌入

神經網路基於張量空間數值計算,無法良好表示自然語言文本,所以用詞嵌入將自然語言文本轉成語意空間低維數值向量
缺點:語意表示,一詞多意

Word2vec

2013簡化版詞嵌入,目的在簡化語言建模
缺點:不能攜帶上下文信息,每個字只有一個表達

LSTM

解決RNN梯度消失問題(只有短期記憶),通過遺忘門(決定保留多少長期記憶)、輸入門和輸出門控制信息,但訓練時間高於RNN,也有反向傳播ReLu遺忘與梯度爆炸特點。

GRU

解決RNN梯度消失問題(只有短期記憶),比LSTM用較少門,完全依賴隱藏狀態作為記憶,也就更快完成訓練,但沒有單獨的隱藏狀態和細胞狀態,因此它們可能無法像 LSTM 那樣考慮過去的觀察結果,也有反向傳播ReLu遺忘與梯度爆炸特點。

實際操作

CNN

https://zh.gluon.ai/chapter_convolutional-neural-networks/index.html

RNN

https://zh.gluon.ai/chapter_recurrent-neural-networks/index.html
https://towardsdatascience.com/a-brief-introduction-to-recurrent-neural-networks-638f64a61ff4

反思回顧

CNN,RNN是機器視覺(Computer Vision,CV),自然語言處理(Natural Language Processing,NLP)基礎,明天我們接著看這兩個領域

參考資料

http://www.cc.ntu.edu.tw/chinese/epaper/0038/20160920_3805.html
https://blog.csdn.net/qq_39521554/article/details/83062188


上一篇
Python零基礎到kaggle-Day27
下一篇
Python零基礎到kaggle-Day29
系列文
Python零基礎到Kaggle 31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言