(如果想及時(shí)收到人工智能相關(guān)的知識(shí)更新,請(qǐng)點(diǎn)擊關(guān)注。。 序言:目前我們每一小節(jié)的內(nèi)容都講解得非常慢,因?yàn)檫@是人工智能研發(fā)中的最基礎(chǔ)知識(shí)。如果我們不能扎實(shí)掌握這些知識(shí),將很難理解后續(xù)更復(fù)雜且實(shí)用的概念。因此,我們甚至采用一個(gè)概念一節(jié)的方式來編排內(nèi)容,區(qū)分得清清楚楚、明明白白,以便大家能夠非常明確地了
序言: 目前我們每一小節(jié)的內(nèi)容都講解得非常慢,因?yàn)檫@是人工智能研發(fā)中的最基礎(chǔ)知識(shí)。如果我們不能扎實(shí)掌握這些知識(shí),將很難理解后續(xù)更復(fù)雜且實(shí)用的概念。因此,我們甚至采用一個(gè)概念一節(jié)的方式來編排內(nèi)容,區(qū)分得清清楚楚、明明白白,以便大家能夠非常明確地了解各知識(shí)點(diǎn)之間的關(guān)聯(lián)關(guān)系和界限。本節(jié)將講述一種在人工智能領(lǐng)域中被視為“泰斗絕學(xué)”的方法,幫助我們高效地完成模型訓(xùn)練——這項(xiàng)絕學(xué)就是“遷移學(xué)習(xí)”。
遷移學(xué)習(xí)
正如我們?cè)诒菊轮幸呀?jīng)看到的那樣,使用卷積操作來提取特征是識(shí)別圖像內(nèi)容的一個(gè)強(qiáng)大工具。生成的特征圖可以輸入到神經(jīng)網(wǎng)絡(luò)的密集層中,與標(biāo)簽匹配,從而更準(zhǔn)確地確定圖像的內(nèi)容。通過這種方法,結(jié)合一個(gè)簡(jiǎn)單、易于訓(xùn)練的神經(jīng)網(wǎng)絡(luò)和一些圖像增強(qiáng)技術(shù),我們構(gòu)建了一個(gè)模型,在非常小的數(shù)據(jù)集上訓(xùn)練時(shí),能夠以80-90%的準(zhǔn)確率區(qū)分馬和人。
圖 3-14. 卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)
但是我們可以通過一種叫做遷移學(xué)習(xí)的方法進(jìn)一步改進(jìn)我們的模型。遷移學(xué)習(xí)的理念很簡(jiǎn)單:與其從零開始為我們的數(shù)據(jù)集學(xué)習(xí)一組濾波器,為什么不使用一個(gè)在更大數(shù)據(jù)集上學(xué)習(xí)到的濾波器集合呢?該數(shù)據(jù)集包含了比我們自己“從零開始構(gòu)建”所能負(fù)擔(dān)得起的更多特征。我們可以將這些濾波器放入我們的網(wǎng)絡(luò)中,然后使用這些預(yù)學(xué)習(xí)的濾波器訓(xùn)練一個(gè)適合我們數(shù)據(jù)的模型。例如,我們的馬或人數(shù)據(jù)集只有兩個(gè)類別,而我們可以使用一個(gè)已經(jīng)為一千個(gè)類別預(yù)訓(xùn)練過的現(xiàn)有模型,但到某個(gè)階段我們不得不舍棄部分已有的網(wǎng)絡(luò)結(jié)構(gòu),添加適合兩分類的層來構(gòu)建分類器。
圖 3-15. 通過遷移學(xué)習(xí)從另一個(gè)架構(gòu)中獲取層
當(dāng)我們考慮到,一旦這些層被訓(xùn)練好,它們實(shí)際上只是一些數(shù)字,表示濾波器的值、權(quán)重和偏置,配合一個(gè)已知的架構(gòu)(每層濾波器的數(shù)量、濾波器的大小等),那么重用它們的想法就非常直接了當(dāng)了。
讓我們看看代碼中的實(shí)現(xiàn)。這方面有很多預(yù)訓(xùn)練的模型可以使用。我們將使用來自谷歌的流行模型Inception的第3版,它在一個(gè)名為ImageNet的數(shù)據(jù)庫中用超過一百萬張圖片進(jìn)行了訓(xùn)練。該模型有幾十層,可以將圖像分類為一千個(gè)類別。一個(gè)包含預(yù)訓(xùn)練權(quán)重的已保存模型也已經(jīng)可以使用。要使用它,我們只需下載這些權(quán)重,創(chuàng)建一個(gè)Inception V3架構(gòu)的實(shí)例,然后將這些權(quán)重加載到這個(gè)架構(gòu)中,代碼如下:
圖 3-16. 使用遷移學(xué)習(xí)訓(xùn)練馬或人分類器
這里的結(jié)果比我們之前的模型要好得多,但你可以繼續(xù)進(jìn)行微調(diào)和改進(jìn)。你還可以試試這個(gè)模型在更大數(shù)據(jù)集上的表現(xiàn),比如Kaggle上著名的貓狗大戰(zhàn)(Dogs vs. Cats)。這是一個(gè)非常多樣化的數(shù)據(jù)集,包含了25,000張貓和狗的圖片,很多圖片中的主體都有一定遮擋——比如被人抱著的情況下。
使用之前的同樣算法和模型設(shè)計(jì),你可以在Colab上訓(xùn)練一個(gè)貓狗分類器,利用GPU每個(gè)周期大約3分鐘。訓(xùn)練20個(gè)周期,大約需要1小時(shí)。
在測(cè)試一些非常復(fù)雜的圖片時(shí)(如圖3-17所示),這個(gè)分類器全都判斷正確。我特意選擇了一張長(zhǎng)著像貓耳朵的狗的圖片,還有一張背對(duì)著的狗的圖片。另外兩張貓的圖片也都是非典型的。
圖 3-17. 成功分類的非典型貓狗圖片
右下角的那只貓,閉著眼睛、耳朵下垂、伸著舌頭舔爪子,把它加載到模型中時(shí),得到了圖3-18中的結(jié)果。你可以看到,它給出了一個(gè)非常低的值(4.98 × 10???),這表明網(wǎng)絡(luò)幾乎可以確定它是一只貓!
圖 3-18. 分類舔爪子的貓
你可以在作者的一個(gè)GitHub倉庫中找到馬或人分類器以及貓狗分類器的完整代碼。
本節(jié)我們介紹了使用“遷移學(xué)習(xí)”的方法來完成模型訓(xùn)練,省去了繁瑣的前期訓(xùn)練過程,通過遷移已有知識(shí)并結(jié)合少量數(shù)據(jù)進(jìn)行微調(diào)即可實(shí)現(xiàn)模型的適應(yīng)性。這種方法是通用的,適用于小型神經(jīng)網(wǎng)絡(luò),同樣也適用于如2024年Facebook的開源大型語言模型Llama等知名大模型。在這些預(yù)訓(xùn)練模型的基礎(chǔ)上,遷移學(xué)習(xí)可以有效節(jié)省大量GPU資源的預(yù)訓(xùn)練成本。下一節(jié)我們要講解的也是人工智能模型訓(xùn)練中的很重要的技能“隨機(jī)失活”法。
小編推薦閱讀園子會(huì)員福利:華為云服務(wù)器一年免費(fèi)領(lǐng)取
閱讀構(gòu)建人工智能模型基礎(chǔ):TFDS和Keras的完美搭配
閱讀創(chuàng)建鴻蒙應(yīng)用的橫屏顯示直尺應(yīng)用全程解析
閱讀WiFi基礎(chǔ)(七):WiFi漫游與WiFi組網(wǎng)
閱讀遷移學(xué)習(xí):人工智能模型訓(xùn)練的絕學(xué)
閱讀如何使用 Pytorch 中的 DataSet 和 DataLoader
閱讀golang slice相關(guān)常見的性能優(yōu)化手段
閱讀連接Elasticsearch服務(wù)器的Python代碼示例
閱讀國產(chǎn)操作系統(tǒng)上實(shí)現(xiàn)RTMP推流攝像頭視頻和麥克風(fēng)聲音到流媒體服務(wù)器
閱讀使用Python讀取和導(dǎo)出NetCDF格式的多時(shí)相柵格文件
閱讀多租戶系統(tǒng)數(shù)據(jù)權(quán)限設(shè)計(jì)與RuoYi系統(tǒng)的借鑒
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2024 haote.com 好特網(wǎng)