0
本文作者: AI研習(xí)社-譯站 | 2020-09-14 10:53 |
字幕組雙語(yǔ)原文:AutoML : 更有效地設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)模型
英語(yǔ)原文:AutoML: Creating Top-Performing Neural Networks Without Defining Architectures
翻譯:雷鋒字幕組(chenx2ovo)
自動(dòng)化機(jī)器學(xué)習(xí),通常被稱(chēng)為AutoML,是自動(dòng)化構(gòu)建指神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。AutoML通過(guò)智能架構(gòu)的操作,可以讓大家更方便、更快速的進(jìn)行深度學(xué)習(xí)的研究。
在本文中,我們將介紹AutoML的以下內(nèi)容:
如何安裝AutoKeras來(lái)進(jìn)行神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索
在使用結(jié)構(gòu)化、圖像和文本數(shù)據(jù)進(jìn)行回歸和分類(lèi)任務(wù)中,如何使用AutoKeras找到最佳的神經(jīng)網(wǎng)絡(luò)架構(gòu)。
如何評(píng)估、預(yù)測(cè)、導(dǎo)出(搜索到的模型)到Keras/TensorFlow,并且查看搜索到的高性能模型的架構(gòu)。
通過(guò)AutoKeras這個(gè)神經(jīng)架構(gòu)搜索算法,我們可以找到最好的神經(jīng)網(wǎng)絡(luò)架構(gòu),比如層中神經(jīng)元的數(shù)量,架構(gòu)的層數(shù),加入哪些層,層的特定參數(shù),比如Dropout中的濾波器大小或掉落神經(jīng)元的百分比等等。當(dāng)搜索完成后,你可以將模型作為常規(guī)的TensorFlow/Keras模型使用。
通過(guò)使用AutoKeras,你可以建立一個(gè)具有復(fù)雜組件的模型,比如嵌入和空間縮減,這些對(duì)于那些還在學(xué)習(xí)深度學(xué)習(xí)的人來(lái)說(shuō)是不太容易理解的。
當(dāng)AutoKeras創(chuàng)建模型時(shí),會(huì)進(jìn)行大量預(yù)處理操作,如矢量化或清理文本數(shù)據(jù)等等,都會(huì)自動(dòng)完成并優(yōu)化。
啟動(dòng)和訓(xùn)練搜索只需要兩行代碼。AutoKeras擁有一個(gè)類(lèi)似Keras的界面,所以它非常易于使用。
是不是很激動(dòng),讓我們正式開(kāi)始叭!
在安裝前,請(qǐng)先確保你安裝了以下包:
Python 3 (AutoKeras不能在Python 2上運(yùn)行)
TensorFlow ≥ 2.3.0 (AutoKeras基于TensorFlow構(gòu)建
在命令行中,運(yùn)行下列兩個(gè)命令。這樣就能正確安裝AutoKeras。注意,不能在Kaggle筆記本中運(yùn)行,最好在本地環(huán)境中運(yùn)行。
作為測(cè)試,在編碼環(huán)境中運(yùn)行import autokeras以確保一切正常。
我們從著名的iris數(shù)據(jù)集開(kāi)始,該數(shù)據(jù)集可以從sklearn的幾個(gè)簡(jiǎn)單的示例數(shù)據(jù)集中導(dǎo)入。導(dǎo)入的數(shù)據(jù)是一個(gè)字典,有兩個(gè)鍵值對(duì)組成,"data "和 "target"。
然而,由于target是分類(lèi)標(biāo)簽(三個(gè)類(lèi)別),我們需要對(duì)它進(jìn)行虛擬編碼。由于結(jié)果是一個(gè)pandas DataFrame,并且需要一個(gè)NumPy數(shù)組,我們?cè)趐d.get_dummies之后調(diào)用.values(獨(dú)熱編碼)。
調(diào)用X.shape得到(150,4),調(diào)用y.shape得到(150,3)。這是說(shuō)明X中包含了150行4列,y中有3個(gè)不同的類(lèi)別(因此有3列)。為了評(píng)估我們的模型,我們將把數(shù)據(jù)分成訓(xùn)練集和測(cè)試集。
查看數(shù)組的尺寸是一個(gè)很好的做法:
X_train: (105, 4)
X_test: (45, 4)
y_train: (105, 3)
y_test: (45, 3)
太好了!一切都很順利。我們可以開(kāi)始使用Autokeras了。
導(dǎo)入Autokeras通常沒(méi)有問(wèn)題。StructuredDataClassifier是一個(gè)在 "結(jié)構(gòu)化數(shù)據(jù) ",或者說(shuō)是帶有列和標(biāo)簽的標(biāo)準(zhǔn)二維數(shù)據(jù)上工作的搜索對(duì)象。max_trials參數(shù)表示要測(cè)試的模型的最大數(shù)量;在iris數(shù)據(jù)集上,由于數(shù)據(jù)集規(guī)模較小,這個(gè)參數(shù)可以設(shè)置較高一些。通常在達(dá)到max_trials之前搜索就會(huì)結(jié)束(它作為一個(gè)上限)。
對(duì)于回歸問(wèn)題,使用StructuredDataRegressor。
我們可以通過(guò)調(diào)用.fit()來(lái)啟動(dòng)搜索過(guò)程。verbose是一個(gè)參數(shù),可以設(shè)置為0或1,這取決于你是否希望模型輸出訓(xùn)練相關(guān)信息,比如潛在網(wǎng)絡(luò)的架構(gòu)和每個(gè)epoch的搜索情況。然而,每個(gè)潛在架構(gòu)都有數(shù)百個(gè)epoch,所以開(kāi)啟這一項(xiàng)可能會(huì)占用空間并減慢訓(xùn)練速度。
建議設(shè)置verbose=1,來(lái)顯示整個(gè)訓(xùn)練的過(guò)程。因?yàn)檎麄€(gè)搜索過(guò)程至少會(huì)持續(xù)幾分鐘才能完成。如下面示例的輸出:
如果你愿意的話(huà),可以觀察搜索到架構(gòu)隨著時(shí)間的推移而不斷變化,以及哪些元素會(huì)進(jìn)入最終的神經(jīng)網(wǎng)絡(luò)。這一過(guò)程很有意思。
在我的本地環(huán)境中,在沒(méi)有GPU加速的情況下,總共花了1小時(shí)左右才跑完15次試驗(yàn)。
一旦你的模型被擬合,我們就可以評(píng)估它的性能或進(jìn)行預(yù)測(cè)。一般來(lái)說(shuō),這一過(guò)程速度較快,所以verbose可以設(shè)置為0。
為了查看模型結(jié)構(gòu)的更多細(xì)節(jié)并保存它,我們需要使用model = search.export_model()對(duì)其進(jìn)行導(dǎo)出。這里的model是一個(gè)標(biāo)準(zhǔn)的TensorFlow/Keras模型,而不是AutoKeras對(duì)象。
調(diào)用model.summary()可以打印出搜索到的最佳架構(gòu)。
保存模型權(quán)重,使用model.save(‘filepath/weights.h5’).
圖像分類(lèi)和回歸的工作原理很像標(biāo)準(zhǔn)結(jié)構(gòu)化數(shù)據(jù)的分類(lèi)和回歸,但他們所使用的神經(jīng)網(wǎng)絡(luò)的建立使用了卷積神經(jīng)網(wǎng)絡(luò)的元素,比如卷積層、最大池化和扁平化。其中所有的參數(shù)都是可學(xué)習(xí)的。
例如,我們?cè)贛NIST數(shù)據(jù)集上實(shí)驗(yàn),從28乘28的圖像中找到一個(gè)卷積神經(jīng)網(wǎng)絡(luò)來(lái)識(shí)別數(shù)字。Keras數(shù)據(jù)集提供了一種方便的方法來(lái)檢索這些數(shù)據(jù),但需要將y變量轉(zhuǎn)換為虛變量。
我們看一下這些數(shù)據(jù)的尺寸:
X_train: (60000, 28, 28)
X_test: (10000, 28, 28)
y_train: (60000, 10)
y_test: (10000, 10)
很強(qiáng)!AutoKeras還可以處理四維數(shù)據(jù)(多通道的彩色圖像)。我們可以用ImageClassifier創(chuàng)建一個(gè)搜索對(duì)象(或者創(chuàng)建ImageRegressor用于回歸任務(wù))。
*如果您正在運(yùn)行多個(gè)搜索,請(qǐng)?jiān)诙x搜索對(duì)象時(shí)添加一個(gè)參數(shù)overwrite=True (ak.object(overwrite=True, max_trials=x))。否則會(huì)出現(xiàn)錯(cuò)誤。
評(píng)估、預(yù)測(cè)和導(dǎo)出模型的過(guò)程與結(jié)構(gòu)化分類(lèi)器和回歸器一樣。需要注意的是,對(duì)圖像數(shù)據(jù)進(jìn)行神經(jīng)架構(gòu)搜索會(huì)花費(fèi)更長(zhǎng)的時(shí)間。
AutoKeras不需要任何文本矢量化操作,這很方便,因?yàn)楫?dāng)前有很多方法可以完成這一操作,而且每一種方法的實(shí)現(xiàn)都很漫長(zhǎng)。在AutoKeras中這一操作這是由模型學(xué)習(xí)的。
我們使用20個(gè)新聞組數(shù)據(jù)集,它由屬于20個(gè)不同類(lèi)別的若干新聞?wù)浗M成。為了節(jié)省時(shí)間和計(jì)算開(kāi)銷(xiāo),我們只選擇導(dǎo)入其中的四個(gè)類(lèi)別,并且調(diào)大了測(cè)試集劃分規(guī)模(整個(gè)數(shù)據(jù)集的一半)。
X_train和X_test分別是由1128個(gè)原始文本字符串組成的數(shù)組,y_train和y_test分別是形狀(1128, 4)的數(shù)組。
請(qǐng)注意,AutoKeras可以處理可變長(zhǎng)度的字符串!輸入的每個(gè)字符串不需要長(zhǎng)度相同。
接下來(lái),讓我們建立我們的文本分類(lèi)器/回歸器。
*如果您正在運(yùn)行多個(gè)搜索,請(qǐng)?jiān)诙x搜索對(duì)象時(shí)添加一個(gè)參數(shù)overwrite=True (ak.object(overwrite=True, max_trials=x))。否則會(huì)出現(xiàn)錯(cuò)誤。
評(píng)估、預(yù)測(cè)和導(dǎo)出與結(jié)構(gòu)化分類(lèi)器和回歸器一樣進(jìn)行。
值得一看的是提出的網(wǎng)絡(luò)。NLP和深度學(xué)習(xí)之間的融合可以說(shuō)是非常先進(jìn),像嵌入、空間還原等復(fù)雜的元素不需要明確調(diào)用就可以實(shí)現(xiàn),這很神奇。
有了AutoKeras,深度學(xué)習(xí)更容易被所有人使用!
雷鋒字幕組是一個(gè)由 AI 愛(ài)好者組成的翻譯團(tuán)隊(duì),匯聚五百多位志愿者的力量,分享最新的海外AI資訊,交流關(guān)于人工智能技術(shù)領(lǐng)域的行業(yè)變革與技術(shù)創(chuàng)新的見(jiàn)解。
團(tuán)隊(duì)成員有大數(shù)據(jù)專(zhuān)家、算法工程師、圖像處理工程師、產(chǎn)品經(jīng)理、產(chǎn)品運(yùn)營(yíng)、IT咨詢(xún)?nèi)?、在校師生;志愿者們?lái)自IBM、AVL、Adobe、阿里、百度等知名企業(yè),北大、清華、港大、中科院、南卡羅萊納大學(xué)、早稻田大學(xué)等海內(nèi)外高校研究所。
如果,你也是位熱愛(ài)分享的AI愛(ài)好者。歡迎與雷鋒字幕組一起,學(xué)習(xí)新知,分享成長(zhǎng)。
雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。