深度學(xué)習(xí)筆記(二十四)—— 深度學(xué)習(xí)總結(jié)與回顧

本周是深度學(xué)習(xí)實(shí)驗(yàn)課的最后一次課,讓我們回顧一下在這個(gè)學(xué)期中大家都學(xué)習(xí)到了哪些內(nèi)容烁巫。在前面的課程中我們首先了解了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)赖舟,如何去搭建神經(jīng)網(wǎng)絡(luò),怎樣去訓(xùn)練神經(jīng)網(wǎng)絡(luò)喉脖,以及神經(jīng)網(wǎng)絡(luò)的優(yōu)化椰苟、微調(diào)。緊接著我們又學(xué)習(xí)了深度學(xué)習(xí)領(lǐng)域當(dāng)前比較流行的幾個(gè)大方向树叽,例如分類舆蝴、語義分割、目標(biāo)檢測(cè)题诵、對(duì)抗神經(jīng)網(wǎng)絡(luò)洁仗、自然語言處理等等。接下來的內(nèi)容是對(duì)我們所學(xué)的知識(shí)的一個(gè)總結(jié)和升華性锭。

1.神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)內(nèi)容

1.框架

當(dāng)前訓(xùn)練神經(jīng)網(wǎng)絡(luò)的框架有許多赠潦,例如tensorflow, caffe, pytorch等等,由于pytorch上手簡(jiǎn)單草冈,使用方便她奥,所以本門課程選擇的框架是pytorch.

2.神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)單元

在pytorch框架中,神經(jīng)網(wǎng)絡(luò)的最基本的單元是張量(tensor), 由于框架本身已經(jīng)實(shí)現(xiàn)了反向傳播的機(jī)制怎棱,所以我們?cè)诖罱ňW(wǎng)絡(luò)的過程中只需將大部分精力放在正向傳播上哩俭,不太需要關(guān)心反向傳播(梯度消失,梯度爆炸問題除外)拳恋。

3.如何去搭建一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)

import torch
import torch.nn as nn
import torch.optim as optim

class Net(nn.Module):
    def __init__(self, *args):
        self.layer1 = nn.Conv2d(3,64,kernel_size=3, stride=1,padding=0, bias=True)
        self.avg_pool = nn.AvgPool2d(4)
        self.layer2 = nn.Linear(64,10)
        
    
    def forward(self, x):
        out = self.layer1(x)
        out = out.view(x.size(0), -1)
        out = self.layer2(out)
        return out

4.如何去訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)

LR = 0.01
BATCH_SIZE = 32
EPOCH = 10

net = Net()

optimizer = optim.SGD(net.parameters(), lr=LR, momentum=0.9, weight_decay=5e-4)
criterion = nn.CrossEntropyLoss()

for i in range(EPOCH):
    for data in enumerate(dataloader):
        x, y = data
        x, y = x.cuda(), y.cuda()
        # 模型預(yù)測(cè)結(jié)果
        y_hat = net(x)
        # 計(jì)算loss值
        loss = criterion(y, y_hat)
        # 清空優(yōu)化器凡资,必須在反向傳播前進(jìn)行
        optimizer.zero_grad()
        # 反向傳播
        loss[0].backward()
        # 更新網(wǎng)絡(luò)參數(shù)
        optimizer.step()
        
    '''
    這部分根據(jù)個(gè)人需求添加自己的代碼,可以實(shí)現(xiàn)打印當(dāng)前epoch的loss值谬运,
    在訓(xùn)練集上的準(zhǔn)確率隙赁,在驗(yàn)證集上的準(zhǔn)確率垦藏,繪圖等等操作
    '''

在以上訓(xùn)練過程中,值得大家注意的是:
建議大家同時(shí)打印出模型在訓(xùn)練集和測(cè)試集上的準(zhǔn)確率伞访,有些同學(xué)只關(guān)注在測(cè)試集上的準(zhǔn)確率膝藕,忽略了在訓(xùn)練集上的準(zhǔn)確率,導(dǎo)致可能出現(xiàn)一種情況咐扭,在測(cè)試集上的準(zhǔn)確率不夠理想芭挽,就懷疑是模型或者是其他什么地方出了問題。這個(gè)時(shí)候我們應(yīng)該看看在訓(xùn)練集上的準(zhǔn)確率如何蝗肪,如果模型在訓(xùn)練集上表現(xiàn)的結(jié)果都不是很好袜爪,說明模型根本就沒有訓(xùn)練好,又怎么能期望它能夠在測(cè)試集上表現(xiàn)得好呢薛闪?這個(gè)時(shí)候我們首先應(yīng)該想辦法讓模型在訓(xùn)練集的準(zhǔn)確率達(dá)到99%以上(分類網(wǎng)絡(luò)一般都可以達(dá)到近乎100%)辛馆。這是初學(xué)者很容易犯的一個(gè)低級(jí)錯(cuò)誤,希望能夠引起大家的重視豁延。

5.模型訓(xùn)練的基本技巧

  • 設(shè)置隨機(jī)種子昙篙,確保可以復(fù)現(xiàn)結(jié)果
  • k折交叉驗(yàn)證诱咏,驗(yàn)證模型的泛化能力
  • 數(shù)據(jù)預(yù)處理中的均值和方差的設(shè)置(目前有兩種較常用的做法苔可,一種是使用pretrain_model數(shù)據(jù)集的均值和方差,一種是使用自己數(shù)據(jù)集的均值和方差袋狞,哪種效果更好焚辅,實(shí)踐出真知)
  • 數(shù)據(jù)增強(qiáng),關(guān)于transforms里面眾多函數(shù)的使用苟鸯,也是根據(jù)數(shù)據(jù)集而定同蜻,建議大家多多嘗試,
  • 模型的初始化早处,如果使用的模型提供了pretrain_model建議大家充分利用湾蔓,可以加速收斂,如果想重新訓(xùn)練就要考慮torch.nn.init里面的眾多初始化方法
  • 模型修改砌梆,根據(jù)自己的需求結(jié)合理論知識(shí)修改網(wǎng)絡(luò)默责,這部分內(nèi)容需要大家進(jìn)行多次實(shí)驗(yàn),找到適合自己數(shù)據(jù)集的較好的模型
  • 優(yōu)化器么库,一般來說分類網(wǎng)絡(luò)我們常用sgd和adam兩種優(yōu)化器傻丝,沒有絕對(duì)的定論哪種更好。sgd的缺點(diǎn)是收斂可能要慢一些诉儒,如果調(diào)整得當(dāng)可以得到比較好的結(jié)果,adam收斂速度快一些亏掀,但是結(jié)果可能略遜于sgd
  • batch_size忱反,較大的batch_size才能充分發(fā)揮網(wǎng)絡(luò)中bn層的作用泛释,但是消耗的gpu資源也越多
  • learning_rate,學(xué)習(xí)率是網(wǎng)絡(luò)訓(xùn)練過程中至關(guān)重要的參數(shù),面對(duì)不同的batch_size温算,不同的優(yōu)化方式怜校,不同的數(shù)據(jù)集其最合適的值都是不確定的,我們無法僅憑經(jīng)驗(yàn)來準(zhǔn)確地得出lr值注竿,能做的就是多做實(shí)驗(yàn)(可以參考的做法:觀察訓(xùn)練過程中l(wèi)oss值和accuracy值茄茁,如果兩者都上升到一定高度后趨于平緩,這個(gè)時(shí)候可以考慮調(diào)低lr巩割,經(jīng)過多次實(shí)驗(yàn)后裙顽,大致可得出lr在何時(shí)可能需要衰減)
  • lr與bs的關(guān)系,一般越大的bs使用越大的lr宣谈,因?yàn)樵酱蟮腷s意味著我們學(xué)習(xí)的時(shí)候愈犹,收斂方向的confidence越大,我們前進(jìn)的方向更加堅(jiān)定闻丑,而較小的bs則顯得比較雜亂漩怎,無規(guī)律性,因此bs較小的時(shí)候需要小的學(xué)習(xí)率保證不至于出錯(cuò)
  • 模型保存嗦嗡,模型的保存分為兩種勋锤,一種是保存整個(gè)模型,另一種是保存模型的參數(shù)侥祭,一般建議保存模型的參數(shù)怪得,因?yàn)槟P偷膮?shù)更便于我們靈活地去加載(比如之前提到的只加載部分模型參數(shù)),另外卑硫,模型的參數(shù)實(shí)際上是以字典的形式保存下來的徒恋。

以上內(nèi)容基本上在14周課件中都有實(shí)現(xiàn)

6.訓(xùn)練的高級(jí)技巧

  • 過擬合,過擬合典型的表現(xiàn)為訓(xùn)練集損失遠(yuǎn)遠(yuǎn)小于驗(yàn)證集損失欢伏,而欠擬合則表現(xiàn)為訓(xùn)練集損失大于驗(yàn)證集損失入挣,記住是遠(yuǎn)遠(yuǎn)大于,而不是說訓(xùn)練集損失稍微大于驗(yàn)證集損失就判斷為過擬合硝拧。舉個(gè)例子径筏,如果遇到訓(xùn)練集損失為0.8,驗(yàn)證集損失為2.0障陶,則可以判斷為過擬合
  • dropout滋恬,dropout可以減輕過擬合現(xiàn)象,但請(qǐng)不要無腦使用抱究,dropout一般適合全連接層部分恢氯,而卷積層由于參數(shù)不是很多,所以不太需要dropout,加上的話對(duì)模型的泛化能力沒有太大影響勋拟。
  • 難例挖掘勋磕,在深度學(xué)習(xí)任務(wù)中,我們可能會(huì)遇到一些比較’棘手‘的數(shù)據(jù)敢靡,這些數(shù)據(jù)相比較于其他數(shù)據(jù)更難識(shí)別挂滓,他們稱為hard-negative。我們先使用初始的正負(fù)樣本訓(xùn)練分類器啸胧,然后再用訓(xùn)練出的分類器對(duì)樣本進(jìn)行分類赶站,把其中負(fù)樣本錯(cuò)誤分類的那些樣本(hard-negative)放入負(fù)樣本集合,再繼續(xù)訓(xùn)練分類器纺念,如此反復(fù)贝椿,直到達(dá)到到停止條件(比如分類器性能不再提升)
  • 嘗試過擬合一個(gè)小數(shù)據(jù)集,關(guān)閉正則化柠辞、隨機(jī)失活团秽、數(shù)據(jù)擴(kuò)充,使用訓(xùn)練集的一小部分叭首,讓神經(jīng)網(wǎng)絡(luò)訓(xùn)練幾個(gè)周期习勤。確保出現(xiàn)零損失,如果沒有焙格,那么很可能什么地方出錯(cuò)了(經(jīng)典的小trick)

一個(gè)很具體的問題

第12次作業(yè)图毕,數(shù)據(jù)預(yù)處理和decoder輸出內(nèi)容轉(zhuǎn)換成文本的過程
網(wǎng)絡(luò)輸出是詞向量,通過查詢字典(embedding)可以轉(zhuǎn)換成對(duì)應(yīng)的index(整數(shù))眷唉,再查詢預(yù)先定義的index和詞的對(duì)應(yīng)關(guān)系予颤,可以找到原始對(duì)應(yīng)的單詞

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冬阳,隨后出現(xiàn)的幾起案子蛤虐,更是在濱河造成了極大的恐慌,老刑警劉巖肝陪,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驳庭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡氯窍,警方通過查閱死者的電腦和手機(jī)饲常,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狼讨,“玉大人贝淤,你說我怎么就攤上這事≌” “怎么了播聪?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵朽基,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我犬耻,道長(zhǎng)踩晶,這世上最難降的妖魔是什么执泰? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任枕磁,我火速辦了婚禮,結(jié)果婚禮上术吝,老公的妹妹穿的比我還像新娘计济。我一直安慰自己,他們只是感情好排苍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布沦寂。 她就那樣靜靜地躺著,像睡著了一般淘衙。 火紅的嫁衣襯著肌膚如雪传藏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天彤守,我揣著相機(jī)與錄音毯侦,去河邊找鬼。 笑死具垫,一個(gè)胖子當(dāng)著我的面吹牛侈离,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筝蚕,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼卦碾,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了起宽?” 一聲冷哼從身側(cè)響起洲胖,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坯沪,沒想到半個(gè)月后绿映,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屏箍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年绘梦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赴魁。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卸奉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出颖御,到底是詐尸還是另有隱情榄棵,我是刑警寧澤凝颇,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站疹鳄,受9級(jí)特大地震影響拧略,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瘪弓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一垫蛆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腺怯,春花似錦袱饭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晾虑,卻和暖如春疹味,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帜篇。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工糙捺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坠狡。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓继找,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親逃沿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子婴渡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容