丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
AI+ 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

在fast.ai課堂上,我總結(jié)的8個(gè)深度學(xué)習(xí)最佳實(shí)踐

本文作者: AI研習(xí)社-譯站 2018-03-12 18:05
導(dǎo)語(yǔ):在每個(gè)具體案例下,我會(huì)結(jié)合fast.ai的代碼片段來(lái)大概的列出其基本的原理

本文為雷鋒字幕組編譯的技術(shù)博客,原標(biāo)題8 Deep Learning Best Practices I Learned About in 2017,作者為Brian Muhia。

翻譯 |  付騰  林立宏    整理 |  凡江

在2017年我感到最開(kāi)心的事情就是,我更多地通過(guò)實(shí)踐來(lái)參與最新AI的發(fā)展,學(xué)到了很多的數(shù)學(xué)知識(shí)。這很有趣,但是卻沒(méi)有接觸什么實(shí)踐項(xiàng)目。因此,也沒(méi)有什么東西能體現(xiàn)我付出的努力。

為了彌補(bǔ)這點(diǎn),在四月份,我在 AI Grant 網(wǎng)站上申請(qǐng)了一個(gè)AI項(xiàng)目,目標(biāo)是用 FastText 的skip-gram模型來(lái)為肯尼亞語(yǔ)建模。我獲得了初選的決賽資格,但是,卻沒(méi)有笑到最后。

然后,在九月份,我申請(qǐng)了一個(gè)國(guó)際獎(jiǎng)學(xué)金,學(xué)習(xí)了一個(gè)由 fast.ai 的Jeremy Howard開(kāi)講的課程:Practical Deep Learning for Coder 《程序員的深度學(xué)習(xí)實(shí)踐》 第一部(目前該課程已經(jīng)完結(jié))。該課程會(huì)在一月份的頭兩個(gè)星期左右來(lái)到MOOC,并且對(duì)公眾開(kāi)放哦。在七周的學(xué)習(xí)中,我學(xué)習(xí)到了八種基本技術(shù)用來(lái)構(gòu)建:

1. 在已經(jīng)訓(xùn)練好的模型上構(gòu)建世界級(jí)的圖像分類(lèi)器。

2. 通過(guò)對(duì)數(shù)據(jù)進(jìn)行調(diào)查,來(lái)構(gòu)建語(yǔ)言模型,進(jìn)而建立情感分析工具。

3. 如何在結(jié)構(gòu)化的數(shù)據(jù)集上進(jìn)行深度學(xué)習(xí)。

4. 如何通過(guò)協(xié)同篩選和深度學(xué)習(xí)來(lái)構(gòu)建推薦引擎。

所有這些都是在一個(gè)更夠提供非常高生產(chǎn)效率的開(kāi)發(fā)界面:Jupyter Notebook 來(lái)實(shí)現(xiàn)的,它目前是由 fastai 的深度學(xué)習(xí)庫(kù)支持的,而這個(gè)庫(kù)本身又是由 PyTorch 所支持的。

來(lái)看看這里的八個(gè)技術(shù)。在每個(gè)具體案例下,我會(huì)結(jié)合fast.ai的代碼片段來(lái)大概的列出其基本的原理,并且在括弧中指出哪些技術(shù)是比較適用的(這點(diǎn)很有用,無(wú)論你是用深度學(xué)習(xí)來(lái)做圖像識(shí)別或者分類(lèi),NLP,給結(jié)構(gòu)化數(shù)據(jù)建?;蛘邊f(xié)同篩選),又或者對(duì)更加具體的,某些可以應(yīng)用深度學(xué)習(xí)來(lái)學(xué)習(xí)的特殊類(lèi)型數(shù)據(jù)進(jìn)行討論。在這個(gè)課程中,圖像識(shí)別的課程使用Kaggle challenges的案例來(lái)做實(shí)踐的 1.  是貓還是狗?狗品種的鑒別。 2. 地球數(shù)據(jù),如何從太空中看懂亞馬遜雨林

這是互聯(lián)網(wǎng)時(shí)代,我要自我挑戰(zhàn)一下??寺∫幌?狗vs貓 的形式,不過(guò)換成 蜘蛛vs蝎子。嗯,蜘蛛vs蝎子。我從Google圖片 上搜索了關(guān)鍵詞“蜘蛛”和“沙漠蝎”,然后抓取下載了大約1500張左右的圖片。我當(dāng)然是用程序來(lái)自動(dòng)抓取。我可不想自動(dòng)的成為資深的蜘蛛學(xué)專(zhuān)家,然后右鍵點(diǎn)點(diǎn)點(diǎn)。。。

我先是對(duì)數(shù)據(jù)進(jìn)行清理,去除那些非jpg格式的圖片,非圖片文件和沒(méi)有擴(kuò)展名的圖片。當(dāng)我完成這些雜項(xiàng)清理之后,我有了大約815張可用圖片。每個(gè)類(lèi) [蜘蛛,蝎子],有290張圖片作為訓(xùn)練集,然后118張蜘蛛和117張蝎子用來(lái)做測(cè)試/驗(yàn)證集。令我驚訝的是(對(duì)我而言,尤其是我看到結(jié)果后),這個(gè)模型很成功!這個(gè)模型達(dá)到了95%的準(zhǔn)確率。

from fastai.imports import *

from fastai.transforms import *

from fastai.conv_learner import *

from fastai.model import *

from fastai.dataset import *

from fastai.sgdr import *

from fastai.plots import *

sz=224 # image size

# architecture, from https://github.com/facebookresearch/ResNeXt

arch=resnext50

# batch size

bs=64

PATH = 'data/spiderscorpions/'

# Enable data augmentation, and precompute=True

# transforms_side_on flips the image along the vertical axis

# max_zoom: 1.1 makes images up to 10% larger

tfms = tfms_from_model(arch, sz, aug_tfms=transforms_side_on, max_zoom=1.1)

data=ImageClassifierData.from_paths(PATH,tfms=tfms)

learn = ConvLearner.pretrained(arch, data, precompute=True)

# Use lr_find() to find highest learning rate where loss is still clearly improving

learn.lr_find()

# check the plot to find the learning rate where the losss is still improving

learn.sched.plot()

# assuming the optimal learning rate is 0.01, train for 3 epochs

learn.fit(0.01, 3)

# train last layer with data augmentation (i.e. precompute=False) for 2-3 epochs with cycle_len=1

learn.precompute=False

learn.fit(1e-2, 3, cycle_len=1)

# unfreeze all layers, thus opening up resnext50's original ImageNet weights for the

# features in the two spider and scorpion classes

learn.unfreeze()

lr = 0.01

# fastai groups the layers in all of the pre-packaged pretrained convolutional networks into three groups

# retrain the three layer groups in resnext50 using these learning rates for each group

# We set earlier layers to 3x-10x lower learning rate than next higher layer

lrs = np.array([lr/9, lr/3, lr])

learn.fit(lrs, 3)

# Use lr_find() again

learn.lr_find()

learn.sched.plot()

learn.fit(1e-2, 3, cycle_len=1, cycle_mult=2)

log_preds,y = learn.TTA()

preds = np.mean(np.exp(log_preds),0)

accuracy(log_preds, y)

1.通過(guò)微調(diào)VGG-16和ResNext50來(lái)學(xué)習(xí) (計(jì)算機(jī)視覺(jué)和圖像分類(lèi))

對(duì)于圖像分類(lèi)的工作,一個(gè)神經(jīng)網(wǎng)絡(luò)的架構(gòu)已經(jīng)在多個(gè)挑戰(zhàn)中測(cè)試過(guò),可以得到非常好的結(jié)果了。針對(duì)特定的問(wèn)題,你可以通過(guò)微調(diào)模型從而得到非常具有里程碑的結(jié)果。殘留網(wǎng)絡(luò) ResNext50 就是一個(gè)例子,一個(gè)50層的卷積神經(jīng)網(wǎng)絡(luò)。它接受了1000種ImageNet挑戰(zhàn)的訓(xùn)練, 而且因?yàn)樗憩F(xiàn)得非常好,所以從圖像數(shù)據(jù)中提取的特征足以被重用 。要讓它在我的問(wèn)題上使用,我需要做的是替換最后一層神經(jīng)網(wǎng)絡(luò),輸出一個(gè) 1000維的向量作為ImangeNet的預(yù)測(cè),并帶有一層網(wǎng)絡(luò)輸出一個(gè)2維向量。在上面代碼片段中,這兩個(gè)輸出被特定放在稱(chēng)為PATH 的文件夾。對(duì)于蜘蛛VS蝎子的挑戰(zhàn),有以下的內(nèi)容:

在fast.ai課堂上,我總結(jié)的8個(gè)深度學(xué)習(xí)最佳實(shí)踐

注意到 train 文件夾的兩個(gè)內(nèi)容都是文件夾,每一個(gè)都包含了290兩張圖片。

一個(gè)微調(diào)流程示意圖展示如下,重新訓(xùn)練最后一層10維的神經(jīng)網(wǎng)絡(luò)。

在fast.ai課堂上,我總結(jié)的8個(gè)深度學(xué)習(xí)最佳實(shí)踐

圖片從這里獲取


2.周期學(xué)習(xí)率(通常適用)

學(xué)習(xí)率可能是用于訓(xùn)練調(diào)整深度神經(jīng)網(wǎng)絡(luò)最重要的超參數(shù)。通常在非自適應(yīng)環(huán)境中完成的(即不使用Adam,AdaDelta 或其變體),而是由DL從業(yè)者/研究者同時(shí)運(yùn)行多個(gè)實(shí)驗(yàn),每個(gè)實(shí)驗(yàn)在學(xué)習(xí)速率之間具有小的差異。如果你有一個(gè)非常大的數(shù)據(jù)集,這需要花費(fèi)非常多的時(shí)間。如果你對(duì)用隨機(jī)矩陣建立直覺(jué)的方法缺乏經(jīng)驗(yàn),很容易出錯(cuò)。然而,在2015,美國(guó)海軍研究實(shí)驗(yàn)室的 Leslie N. Smith ,找到了一種自動(dòng)搜索最佳學(xué)習(xí)率的方法,從一個(gè)非常小的值開(kāi)始,通過(guò)網(wǎng)絡(luò)運(yùn)行幾個(gè)小批量,調(diào)整學(xué)習(xí)率,同時(shí)跟蹤損失的變化,直到損失開(kāi)始下降。在fast.ai上面兩篇博客解釋了周期學(xué)習(xí)率的方法,分別在這里這里。

在fast.ai,你可以利用通過(guò)在學(xué)習(xí)者對(duì)象上運(yùn)行 lr_find() 來(lái)利用學(xué)習(xí)速率退火的優(yōu)勢(shì), 運(yùn)行 sched.plot()以確定與最佳學(xué)習(xí)率一致的點(diǎn)  ,截圖如下:

在fast.ai課堂上,我總結(jié)的8個(gè)深度學(xué)習(xí)最佳實(shí)踐

0.1 seems like a good learning rate

從周期性學(xué)習(xí)率論文摘錄中顯示,它表現(xiàn)更好, 達(dá)到最高的準(zhǔn)確度,比學(xué)習(xí)速率指數(shù)衰減的方法快兩倍以上。

在fast.ai課堂上,我總結(jié)的8個(gè)深度學(xué)習(xí)最佳實(shí)踐圖一:Smith (2017) “使用周學(xué)習(xí)率訓(xùn)練神經(jīng)網(wǎng)絡(luò)”


3.帶重新啟動(dòng)的隨機(jī)梯度下降(通常適用)

在fast.ai課堂上,我總結(jié)的8個(gè)深度學(xué)習(xí)最佳實(shí)踐

Fig. 2: SGD vs. snapshot ensembles (Huang et al., 2017)

另外一個(gè)方法來(lái)加速隨機(jī)梯度下降,包含了逐漸降低學(xué)習(xí)率的訓(xùn)練過(guò)程。 這有助于注意到學(xué)習(xí)速度的變化與損失的改善是否一致 。當(dāng)你接近最優(yōu)的權(quán)重,你要采取更小的步驟,因?yàn)槿绻悴扇〈蟛襟E,你可能會(huì)跳過(guò)錯(cuò)誤表面的最佳區(qū)域。如果學(xué)習(xí)率和損失之間的關(guān)系是不穩(wěn)定的,比如學(xué)習(xí)率一個(gè)小的改變,就會(huì)導(dǎo)致?lián)p失變化很大,那我們就處在一個(gè)不穩(wěn)定的區(qū)域,就像上圖所示。那么此時(shí)策略變成周期性地提高學(xué)習(xí)率。這里的“周期”是指提高學(xué)習(xí)率的次數(shù)。這是周期學(xué)習(xí)率的流程。在fast.ai,將參數(shù) cycle_len 和 cycle_mult 傳入到 learner.fit,在上圖中,學(xué)習(xí)率被重置了3次。在使用正常的學(xué)習(xí)速率時(shí)間表時(shí),通常需要更長(zhǎng)的時(shí)間才能找到最佳的損失,開(kāi)發(fā)人員等待所有的訓(xùn)練周期完成后,再手動(dòng)嘗試不同的學(xué)習(xí)速率。

在fast.ai課堂上,我總結(jié)的8個(gè)深度學(xué)習(xí)最佳實(shí)踐


4.數(shù)據(jù)增加(計(jì)算機(jī)視覺(jué)和圖像分類(lèi) - 現(xiàn)在)

數(shù)據(jù)增加是一個(gè)在你已有的訓(xùn)練和測(cè)試數(shù)據(jù)集中簡(jiǎn)單的方法。比如圖片,這取決于你手頭的學(xué)習(xí)問(wèn)題,并取決于數(shù)據(jù)集中圖像的對(duì)稱(chēng)數(shù)量。比如說(shuō)蜘蛛VS蝎子挑戰(zhàn),在數(shù)據(jù)集中的很多圖片可以垂直翻轉(zhuǎn),仍然顯示動(dòng)物,沒(méi)有奇怪的扭曲,這被稱(chēng)為:transforms_side_on. 比如:

在fast.ai課堂上,我總結(jié)的8個(gè)深度學(xué)習(xí)最佳實(shí)踐

5.測(cè)試時(shí)間增加 ( 計(jì)算機(jī)視覺(jué)和圖像分類(lèi) - 現(xiàn)在 )

我們?cè)谕评淼臅r(shí)候使用數(shù)據(jù)增加(或者時(shí)間,這由此而得名)。在推理時(shí)間時(shí),你只是在做預(yù)測(cè)。你可以用測(cè)試集中的單個(gè)圖像來(lái)完成,但是如果在被訪問(wèn)的測(cè)試集中隨機(jī)生成每個(gè)圖像的幾個(gè)增量,這個(gè)過(guò)程會(huì)變得更加健壯。在fast.ai中,每個(gè)測(cè)試圖像的4個(gè)隨機(jī)增量用于預(yù)測(cè),并將這些預(yù)測(cè)的平均值用作該圖像的預(yù)測(cè)。

6.用預(yù)訓(xùn)練的循環(huán)神經(jīng)網(wǎng)絡(luò)替換詞向量

一種獲得世界級(jí)的情緒分析框架的方法, 不使用詞向量,而是通過(guò)使用整個(gè)你想要訓(xùn)練的數(shù)據(jù)集進(jìn)行分析,從中建立一個(gè)深層循環(huán)的神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型。當(dāng)模型具有高精度時(shí),保存模型的編碼器,并使用從編碼器獲得的嵌入來(lái)構(gòu)建情感分析模型。這比從詞向量獲得的嵌入矩陣更好,因?yàn)镽NN可以比詞向量更好地跟蹤更大范圍的依賴性。

7.通過(guò)時(shí)間反向傳播 (BPTT) (NLP)

深層遞歸神經(jīng)網(wǎng)絡(luò)中的隱藏狀態(tài), 如果在反向傳播一些時(shí)間后它沒(méi)有被重置,可能會(huì)增長(zhǎng)到難以處理的大小 。比如說(shuō),在字符級(jí)RNN上,如果你有一百萬(wàn)個(gè)字符,那么你也有一百萬(wàn)個(gè)隱藏的狀態(tài)向量,每個(gè)都有自己的歷史狀態(tài)。為了調(diào)整神經(jīng)網(wǎng)絡(luò)的梯度,我們需要對(duì)每個(gè)字符每批執(zhí)行一百萬(wàn)條鏈規(guī)則的計(jì)算。這會(huì)消耗太多的內(nèi)存。因此,為了降低內(nèi)存,我們?cè)O(shè)置了一個(gè)最大字符數(shù)量來(lái)反向傳播。由于循環(huán)神經(jīng)網(wǎng)絡(luò)中的每個(gè)循環(huán)被稱(chēng)為時(shí)間步長(zhǎng),所以限制反向傳播保持隱藏狀態(tài)歷史層數(shù)的任務(wù)被稱(chēng)為時(shí)間反向傳播。這個(gè)數(shù)字的值決定了模型計(jì)算的時(shí)間和內(nèi)存要求,但它提高了模型處理長(zhǎng)句或行動(dòng)序列的能力。

8.實(shí)體嵌入分類(lèi)變量 ( 結(jié)構(gòu)數(shù)據(jù)和NLP )

當(dāng)在結(jié)構(gòu)化的數(shù)據(jù)集進(jìn)行深度學(xué)習(xí)時(shí), 它有助于區(qū)分包含連續(xù)數(shù)據(jù)的列,比如說(shuō)在線商店的價(jià)格信息,列中包含了,比如日期和生產(chǎn)地址的連續(xù)數(shù)據(jù)。然后,可以將這些分類(lèi)列,通過(guò)熱編碼過(guò)程轉(zhuǎn)換為指向神經(jīng)網(wǎng)絡(luò)的完全連接的嵌入層的查找表。你的神經(jīng)網(wǎng)絡(luò)因此獲得機(jī)會(huì)學(xué)習(xí)這些分類(lèi)好的變量/列,如果忽略了這些列的分類(lèi)性質(zhì),那么這個(gè)問(wèn)題就會(huì)被忽略。它可以學(xué)習(xí)周期性事件,比如在很多年的數(shù)據(jù)集上,公眾假期之前和之后,一周中的哪一天有最多的事情。這樣做的最終結(jié)果是在預(yù)測(cè)產(chǎn)品最優(yōu)定價(jià)和協(xié)同篩選的一個(gè)非常有效的方法。這應(yīng)該是所有擁有表格數(shù)據(jù)公司的標(biāo)準(zhǔn)數(shù)據(jù)分析和預(yù)測(cè)方法。所有的公司都應(yīng)該使用這個(gè)。

這個(gè)方法在 Rossmann Store Sales Kaggle 比賽中 Guo 和Berkhahn應(yīng)用了,  即使他們只用最少的特征進(jìn)行深度學(xué)習(xí),也能獲得第三名。  他們?cè)诒疚模?this paper )概述了他們的方法。

在fast.ai課堂上,我總結(jié)的8個(gè)深度學(xué)習(xí)最佳實(shí)踐

Guo, Berkhahn (2016)

最后

AI中深度學(xué)習(xí)的分支變得越來(lái)越容易學(xué)習(xí),庫(kù)也變得越來(lái)越好。感覺(jué)研究人員和從業(yè)人員就像爬山一樣,步伐越來(lái)越大,通過(guò)艱苦的工作編譯大型數(shù)據(jù)集和性能更好的GPU,公開(kāi)發(fā)表了一套承諾顛覆人類(lèi)歷史進(jìn)程的工具。在我看來(lái),AI最大的潛力在于教育和醫(yī)學(xué),尤其是復(fù)興生物技術(shù)。

在我們使用深度學(xué)習(xí)來(lái)創(chuàng)造真正的人工智能之前,用正確的策略,在洞察力、動(dòng)力和全球協(xié)調(diào)上,我們會(huì)變得更聰明、更富有,并且應(yīng)該期望在本世紀(jì)末,能因?yàn)檫@些工具而活得更長(zhǎng)壽、更健康。

博客原址 https://hackernoon.com/8-deep-learning-best-practices-i-learned-about-in-2017-700f32409512 


更多文章,關(guān)注雷鋒網(wǎng)

添加雷鋒字幕組微信號(hào)(leiphonefansub)為好友

備注「我要加入」,To be an  AI  Volunteer !

在fast.ai課堂上,我總結(jié)的8個(gè)深度學(xué)習(xí)最佳實(shí)踐

在fast.ai課堂上,我總結(jié)的8個(gè)深度學(xué)習(xí)最佳實(shí)踐

雷鋒網(wǎng)雷鋒網(wǎng)

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

分享:

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識(shí),讓語(yǔ)言不再成為學(xué)習(xí)知識(shí)的門(mén)檻。(原雷鋒字幕組)
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)