Task03:過(guò)擬合、欠擬合及其解決方案;梯度消失矫付、梯度爆炸;循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)階(1天)
Task04:機(jī)器翻譯及相關(guān)技術(shù)第焰;注意力機(jī)制與Seq2seq模型买优;Transformer(1天)
Task05:卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ);leNet挺举;卷積神經(jīng)網(wǎng)絡(luò)進(jìn)階(1天)
因?yàn)槲业姆较蚴亲匀徽Z(yǔ)言處理所以接下來(lái)重點(diǎn)記錄下任務(wù)3和任務(wù)4
Task03:
過(guò)擬合與欠擬合
訓(xùn)練數(shù)據(jù)集而叼,模型復(fù)雜度和誤差之間的關(guān)系
導(dǎo)致原因:訓(xùn)練數(shù)據(jù)不足,模型太過(guò)于復(fù)雜/簡(jiǎn)單豹悬。
解決辦法:加數(shù)據(jù)量葵陵,權(quán)重衰減,丟棄法瞻佛。
權(quán)重衰減
權(quán)重衰減等價(jià)于 范數(shù)正則化(regularization)脱篙。正則化通過(guò)為模型損失函數(shù)添加懲罰項(xiàng)使學(xué)出的模型參數(shù)值較小,是應(yīng)對(duì)過(guò)擬合的常用手段伤柄。
丟棄法:
丟棄法除了可以防止過(guò)擬合绊困,還能讓模型學(xué)到多樣的數(shù)據(jù),提升模型性能适刀,加快收斂速度秤朗。
讓我們對(duì)之前多層感知機(jī)的神經(jīng)網(wǎng)絡(luò)中的隱藏層使用丟棄法,一種可能的結(jié)果如圖所示笔喉,其中h2和h5被清零取视。這時(shí)輸出值的計(jì)算不再依賴h2和h5硝皂,在反向傳播時(shí),與這兩個(gè)隱藏單元相關(guān)的權(quán)重的梯度均為0作谭。由于在訓(xùn)練中隱藏層神經(jīng)元的丟棄是隨機(jī)的稽物,即h1...h5都有可能被清零,輸出層的計(jì)算無(wú)法過(guò)度依賴h1...h5中的任一個(gè)折欠,從而在訓(xùn)練模型時(shí)起到正則化的作用贝或,并可以用來(lái)應(yīng)對(duì)過(guò)擬合。在測(cè)試模型時(shí)锐秦,我們?yōu)榱四玫礁哟_定性的結(jié)果咪奖,一般不使用丟棄法
梯度消失和爆炸
造成的原因:Sigmoid激活函數(shù)飽和區(qū),網(wǎng)絡(luò)層數(shù)過(guò)多酱床,梯度呈指數(shù)級(jí)變化
解決的辦法:好的參數(shù)初始化赡艰,非飽和的激活函數(shù)(Relu),批量規(guī)范化斤葱,LSTM慷垮,梯度階段。
考慮環(huán)境因素
協(xié)變量偏移
這里我們假設(shè)揍堕,雖然輸入的分布可能隨時(shí)間而改變料身,但是標(biāo)記函數(shù),即條件分布P(y∣x)不會(huì)改變衩茸。雖然這個(gè)問(wèn)題容易理解芹血,但在實(shí)踐中也容易忽視。
想想?yún)^(qū)分貓和狗的一個(gè)例子楞慈。我們的訓(xùn)練數(shù)據(jù)使用的是貓和狗的真實(shí)的照片幔烛,但是在測(cè)試時(shí),我們被要求對(duì)貓和狗的卡通圖片進(jìn)行分類囊蓝。
顯然饿悬,這不太可能奏效。訓(xùn)練集由照片組成聚霜,而測(cè)試集只包含卡通狡恬。在一個(gè)看起來(lái)與測(cè)試集有著本質(zhì)不同的數(shù)據(jù)集上進(jìn)行訓(xùn)練,而不考慮如何適應(yīng)新的情況蝎宇,這是不是一個(gè)好主意弟劲。不幸的是,這是一個(gè)非常常見(jiàn)的陷阱姥芥。
統(tǒng)計(jì)學(xué)家稱這種協(xié)變量變化是因?yàn)閱?wèn)題的根源在于特征分布的變化(即協(xié)變量的變化)兔乞。數(shù)學(xué)上,我們可以說(shuō)P(x)改變了,但P(y∣x)保持不變庸追。盡管它的有用性并不局限于此霍骄,當(dāng)我們認(rèn)為x導(dǎo)致y時(shí),協(xié)變量移位通常是正確的假設(shè)锚国。
標(biāo)簽偏移
當(dāng)我們認(rèn)為導(dǎo)致偏移的是標(biāo)簽P(y)上的邊緣分布的變化腕巡,但類條件分布是不變的P(x∣y)時(shí)玄坦,就會(huì)出現(xiàn)相反的問(wèn)題血筑。當(dāng)我們認(rèn)為y導(dǎo)致x時(shí),標(biāo)簽偏移是一個(gè)合理的假設(shè)煎楣。例如豺总,通常我們希望根據(jù)其表現(xiàn)來(lái)預(yù)測(cè)診斷結(jié)果。在這種情況下择懂,我們認(rèn)為診斷引起的表現(xiàn)喻喳,即疾病引起的癥狀。有時(shí)標(biāo)簽偏移和協(xié)變量移位假設(shè)可以同時(shí)成立困曙。例如表伦,當(dāng)真正的標(biāo)簽函數(shù)是確定的和不變的,那么協(xié)變量偏移將始終保持慷丽,包括如果標(biāo)簽偏移也保持蹦哼。有趣的是,當(dāng)我們期望標(biāo)簽偏移和協(xié)變量偏移保持時(shí)要糊,使用來(lái)自標(biāo)簽偏移假設(shè)的方法通常是有利的纲熏。這是因?yàn)檫@些方法傾向于操作看起來(lái)像標(biāo)簽的對(duì)象,這(在深度學(xué)習(xí)中)與處理看起來(lái)像輸入的對(duì)象(在深度學(xué)習(xí)中)相比相對(duì)容易一些锄俄。
病因(要預(yù)測(cè)的診斷結(jié)果)導(dǎo)致 癥狀(觀察到的結(jié)果)局劲。
訓(xùn)練數(shù)據(jù)集,數(shù)據(jù)很少只包含流感p(y)的樣本奶赠。
而測(cè)試數(shù)據(jù)集有流感p(y)和流感q(y)鱼填,其中不變的是流感癥狀p(x|y)。
概念偏移
另一個(gè)相關(guān)的問(wèn)題出現(xiàn)在概念轉(zhuǎn)換中毅戈,即標(biāo)簽本身的定義發(fā)生變化的情況剔氏。這聽(tīng)起來(lái)很奇怪,畢竟貓就是貓竹祷。的確谈跛,貓的定義可能不會(huì)改變,但我們能不能對(duì)軟飲料也這么說(shuō)呢塑陵?事實(shí)證明感憾,如果我們周游美國(guó),按地理位置轉(zhuǎn)移數(shù)據(jù)來(lái)源,我們會(huì)發(fā)現(xiàn)阻桅,即使是如圖所示的這個(gè)簡(jiǎn)單術(shù)語(yǔ)的定義也會(huì)發(fā)生相當(dāng)大的概念轉(zhuǎn)變凉倚。
如果我們要建立一個(gè)機(jī)器翻譯系統(tǒng),分布P(y∣x)可能因我們的位置而異嫂沉。這個(gè)問(wèn)題很難發(fā)現(xiàn)稽寒。另一個(gè)可取之處是P(y∣x)通常只是逐漸變化。
循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)階
GRU
RNN存在的問(wèn)題:梯度較容易出現(xiàn)衰減或爆炸(BPTT)
?控循環(huán)神經(jīng)?絡(luò):捕捉時(shí)間序列中時(shí)間步距離較?的依賴關(guān)系
? 重置?有助于捕捉時(shí)間序列?短期的依賴關(guān)系趟章;
? 更新?有助于捕捉時(shí)間序列??期的依賴關(guān)系杏糙。
Pytorch簡(jiǎn)潔實(shí)現(xiàn):
gru_layer = nn.GRU(input_size=vocab_size, hidden_size=num_hiddens)
LSTM
長(zhǎng)短期記憶long short-term memory :
遺忘門:控制上一時(shí)間步的記憶細(xì)胞 輸入門:控制當(dāng)前時(shí)間步的輸入
輸出門:控制從記憶細(xì)胞到隱藏狀態(tài)
記憶細(xì)胞:?種特殊的隱藏狀態(tài)的信息的流動(dòng)
pytorch簡(jiǎn)潔實(shí)現(xiàn):
lstm_layer = nn.LSTM(input_size=vocab_size, hidden_size=num_hiddens)
深度循環(huán)神經(jīng)網(wǎng)絡(luò)
層數(shù)變深捕捉更多的信息,ELMO論文發(fā)現(xiàn)蚓土,不同層具有不同的信息宏侍,可以將不同層的隱藏層權(quán)值相加。
雙向循環(huán)神經(jīng)網(wǎng)絡(luò)
為了捕捉上下文的信息蜀漆,出現(xiàn)雙向循環(huán)神經(jīng)網(wǎng)絡(luò)
Task4
機(jī)器翻譯相關(guān)技術(shù)
端到端的模型
encoder:輸入到隱藏狀態(tài)
decoder:隱藏狀態(tài)到輸出
Sequence to Sequence模型
Beam Search
簡(jiǎn)單greedy search:
維特比算法:選擇整體分?jǐn)?shù)最高的句子(搜索空間太大) 集束搜索:
bleu:
由于各N-gram統(tǒng)計(jì)量的精度隨著階數(shù)的升高而呈指數(shù)形式遞減谅河,所以為了平衡各階統(tǒng)計(jì)量的作用,對(duì)其采用幾何平均形式求平均值然后加權(quán)确丢,再乘以長(zhǎng)度懲罰因子绷耍,得到最后的評(píng)價(jià)公式:
BLEU的原型系統(tǒng)采用的是均勻加權(quán),即Wn=1/N 鲜侥。N的上限取值為4褂始,即最多只統(tǒng)計(jì)4-gram的精度。
注意力機(jī)制和Seq2seq模型
可以把注意力機(jī)制看成一種池化方法剃毒,他將解碼層當(dāng)前時(shí)間步的前一步的隱藏層對(duì)于encoder每一個(gè)的隱藏層求注意力得分病袄,這個(gè)注意力得分是隱藏層的加權(quán)時(shí)的權(quán)值,然后把加權(quán)后的隱藏層連接當(dāng)前解碼器時(shí)間步的詞向量作為輸入赘阀。注意力的求法有很多種益缠。
Transformer
最新的GPT,BERT都是基于transformer的解碼器/編碼器構(gòu)造的基公,使NLP各項(xiàng)性能大大提升幅慌。
在之前的章節(jié)中,我們已經(jīng)介紹了主流的神經(jīng)網(wǎng)絡(luò)架構(gòu)如卷積神經(jīng)網(wǎng)絡(luò)(CNNs)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNNs)轰豆。讓我們進(jìn)行一些回顧:
- CNNs 易于并行化胰伍,卻不適合捕捉變長(zhǎng)序列內(nèi)的依賴關(guān)系。
- RNNs 適合捕捉長(zhǎng)距離變長(zhǎng)序列的依賴酸休,但是卻難以實(shí)現(xiàn)并行化處理序列骂租。
為了整合CNN和RNN的優(yōu)勢(shì),[Vaswani et al., 2017] 創(chuàng)新性地使用注意力機(jī)制設(shè)計(jì)了Transformer模型斑司。該模型利用attention機(jī)制實(shí)現(xiàn)了并行化捕捉序列依賴哀澈,并且同時(shí)處理序列的每個(gè)位置的tokens蝇摸,上述優(yōu)勢(shì)使得Transformer模型在性能優(yōu)異的同時(shí)大大減少了訓(xùn)練時(shí)間疆瑰。
- Transformer blocks:將seq2seq模型重的循環(huán)網(wǎng)絡(luò)替換為了Transformer Blocks,該模塊包含一個(gè)多頭注意力層(Multi-head Attention Layers)以及兩個(gè)position-wise feed-forward networks(FFN)私蕾。對(duì)于解碼器來(lái)說(shuō)胡桃,另一個(gè)多頭注意力層被用于接受編碼器的隱藏狀態(tài)踩叭。
- Add and norm:多頭注意力層和前饋網(wǎng)絡(luò)的輸出被送到兩個(gè)“add and norm”層進(jìn)行處理,該層包含殘差結(jié)構(gòu)以及層歸一化容贝。
-
Position encoding:由于自注意力層并沒(méi)有區(qū)分元素的順序冤今,所以一個(gè)位置編碼層被用于向序列元素里添加位置信息屋谭。
因?yàn)橹耙恢笔褂胻ransformer做很多任務(wù)桐磁,比較熟悉,所以這里不做過(guò)多的記錄讲岁。