更快更強,深度學習新庫fastai「落戶」PyTorch

clipboard.png

幾天前,有人統計了歷年ICLR論文錄用者使用的深度學習框架,發現雖然TensorFlow還高居榜首,但PyTorch近一年來的使用數據已經翻了3倍,能夠和TF比肩。這是個使人驚訝的消息,也讓很多從業者開始正視這一發展趨勢,籌備「雙修」事宜。在下文中,論智給讀者帶來的是fast.ai發佈的一個簡便、好用的PyTorch庫——對PyTorch感興趣的讀者不妨先從這個庫開始試手。python

隨着互聯網和知識傳播的深度結合,如今在線課程對許多人來講已經不是新鮮事物。在深度學習領域,最受學生歡迎的MOOC課程平臺有三個:Fast.ai、deeplearning.ai /Coursera和Udacity。其中,由於Jeremy Howard化繁爲簡、實戰爲上的獨特授課風格,Fast.ai給人的印象一直很「接地氣」:git

研究如何快速、可靠地把最早進的深度學習應用於實際問題。
提供Fast.ai庫,它不只是讓新手快速構建深度學習實現的工具包,也是提供最佳實踐的一個強大而便捷的資源。
課程內容簡潔易懂,以便儘量多的人從研究成果和軟件中收益。
國慶期間,Fast.ai發佈一個新的、面向深度學習的免費開源庫——fastai。這是個PyTorch庫,雖然仍是預覽版,但它目前已經爲最重要的深度學習應用程序和數據類型提供了一致的API,且相比其餘深度學習庫,它在準確性和速度上有顯着提升,同時所需的代碼大大減小。github

感興趣的開發者能夠訪問fastai的 GitHub 進行安裝: github.com/fastai/fastai/算法

fastai庫
從去年宣佈開發開始,歷時18個月,fastai深度學習庫v1.0終於和你們見面了。在項目啓動之初,開發人員就曾介紹過PyTorch做爲一個平臺的優點:能夠利用常規python代碼的靈活性和各類函數構建、訓練神經網絡,能夠解決更普遍的問題……服務器

如今,通過Fast.ai團隊和PyTorch團隊的共同努力,咱們迎來了一個爲計算機視覺、文本、表格數據、時間序列、協同過濾等常見深度學習應用提供單一一致界面的深度學習庫。這意味着,若是你已經學會用fastai建立實用的計算機視覺(CV)模型,那你就能夠用一樣的方法建立天然語言處理(NLP)模型,或是軟件支持的其餘模型。網絡

早期用戶使用反饋
GitHub上的語義代碼搜索架構

Fast.ai的課程是GitHub的數據科學家和高管(包括CEO在內)提升數據素養的一個重要途徑,其中,Github的高級機器學習科學家Hithl Husain在過去兩年中一直經過Fast.ai學習深度學習,他認爲這些MOOC課程開啓了Github的數據新時代,使數據科學家們更有信心解決機器學習中的最新問題。框架

做爲fastai的第一批使用者,Hithl Husain和他的同事Ho-Hsiang Wu最近發佈了一個實驗版工具「語義代碼搜索」,容許開發者直接經過意義而不是關鍵詞匹配來查找代碼, 這意味着最佳搜索結果不必定包含你搜索的單詞 。在 官方博客文章 中,他們介紹了本身棄用Tensorflow Hub轉而投向fastai的緣由,稱後者能更輕鬆地訪問最早進的架構(如AWD LSTMs)和技術(如隨機重啓循環學習率)。機器學習

clipboard.png

語義代碼搜索模塊化

在過去的12個月裏,Husain一直在體驗預發佈版本的fastai庫。他表示:

我之因此選擇fast.ai,是由於它能在保證相同性能的狀況下,用模塊化、高級API實現最早進的技術和創新,同時減小計算量。語義代碼搜索只是冰山一角,銷售、營銷、反欺詐,人們能用fastai爲各行各業帶去革命性的變化。

生成音樂

Christine McLeavey Payne是從上一期Fast.ai深度學習課程中脫穎而出的一名學生。她的人生經歷很是豐富:從舊金山交響樂團的古典鋼琴師,到金融領域的HPC專家,再到斯坦福大學的神經科學和醫學研究員。如今,她已經在OpenAI開啓了又一段人生旅途,而在近期的OpenAI項目中,她用fastai建立了一個能生成鋼琴曲和室內音樂的LSTM——Clara。

fastai是一個了不得的資源,即使是我這樣剛接觸深度學習的新手,也能用短短几行代碼就獲得fastai模型。我不徹底知道這些先進技術背後的原理,但個人模型能運行,並且訓練用時更短,性能也更好。

她的音樂生成模型基於上課期間她構建的一個語言模型,利用fastai庫對NLP最新技術的支持,她在短短兩週內就完成了這個音樂生成項目,並取得了很好的初步成果。這是fastai庫實用性的一個典例,只需少許修改,開發者就能把文本分類模型改爲音樂生成模型,這在實踐中能節省大量時間和精力。

clipboard.png

IBM Watson高級研究員對音樂生成器Clara的評價

藝術創做

建築師、投資者Miguel Pérez Michaus一直在用預發佈版本的fastai進行他的「Style Reversion(風格還原)」實驗。所謂「風格還原」,就是把風格遷移後的圖像恢復成本來的樣子,以下圖所示:

clipboard.png

風格還原

他表示:「我喜歡用fastai創做,由於它能實現Keras不能實現的東西,好比生成‘不標準’的東西。」做爲早期用戶,他在過去12個月中目擊了fastai的更新迭代:

我很幸運地體驗了fastai的A測版本,雖然只是Alpha版,但它充分展現了本身的實用性和靈活性,並且容許我這樣具備領域知識但沒有正式計算機科學背景的人上手操做。fastai會變得愈來愈好。對於深度學習的將來,我我的有一點粗淺的認識,就是咱們必需要詳細掌握黑盒背後的真實技術原理,在這種狀況下,我認爲fastai會廣受歡迎。

學術研究

在NLP領域,波蘭語一直是一個挑戰,由於它是一種形態豐富的語言,如波蘭語形容詞會根據名詞的數和性而變化。企業家Piotr Czapla和Marcin Kardas是深度學習諮詢公司n-wave的聯合創始人,基於 Cutting Edge Deep Learning For Coders 這門課程中顯示的思路,他們用fastai開發了一種新的波蘭語文本分類算法,並在波蘭頂級NLP學術競賽中得到一等獎,有關這項新研究的論文即將發佈。

根據Czapla的說法,fastai庫對他們的成功相當重要:

fastai適合那些沒有上百臺服務器的普通人,這是我很喜歡它的一點。它支持快速開發和原型設計,並融入了全部最好的深度學習實踐。同時,Fast.ai課程是我開始學習深度學習的指路明燈,從上課的那天起,我纔開始思考深度學習能作什麼。

示例:計算機視覺領域的遷移學習
Kaggle上有一個很是受歡迎的競賽項目:Dogs vs Cats。參賽者須要編寫一個算法來分類圖像是包含狗仍是貓。這也是Fast.ai課程中常常涉及的一個競賽,由於它表明了一類重要問題:基於預訓練模型的遷移學習。

咱們將以此爲例,從 所需代碼量、準確性和速度 三個指標上比較Keras和fastai的差別。如下是用fastai進行2-stage微調時的全部代碼——不只要編寫的代碼很是少,設置的參數也很是少:

data = data_from_imagefolder(Path('data/dogscats'),
ds_tfms=get_transforms(), tfms=imagenet_norm, size=224)
learn = ConvLearner(data, tvm.resnet34, metrics=accuracy)
learn.fit_one_cycle(6)
learn.unfreeze()
learn.fit_one_cycle(4, slice(1e-5,3e-4))

下表是兩個深度學習庫的差別對比:

clipboard.png

Keras是如今最流行的訓練神經網絡的方法之一,以上數據雖然是片面的,但fastai的改進能從側面說明Keras並不完美,它還有很大的改善空間。而不管是Keras仍是其餘深度學習庫,要完成一樣的任務,它們所需的代碼量都遠遠超過fastai,相應的,它們的訓練時間會更長,且模型性能不必定會更好。

此外,fastai在NLP任務上也有強勁表現。下表是ULMFiT論文中的一幅截圖,顯示了文本分類算法ULMFiT與IMDb數據集中排名靠前的算法的相對偏差:

clipboard.png

文本分類性能總結

fastai是目前惟一提供此算法的庫,因爲該算法是內置的,你能夠直接參考上面的Dogs vs Cats代碼復現論文結果。如下是訓練ULMFiT語言模型的方法:

data = data_from_textcsv(LM_PATH, Tokenizer(), data_func=lm_data)
learn = RNNLearner.language_model(data, drop_mult=0.3,
pretrained_fnames=['lstm_wt103', 'itos_wt103'])
learn.freeze()
learn.fit_one_cycle(1, 1e-2, moms=(0.8,0.7))
learn.unfreeze()
learn.fit_one_cycle(10, 1e-3, moms=(0.8,0.7), pct_start=0.25)

來源: www.fast.ai/2018/10/02/fastai-ai/

編譯:Bot

相關文章
相關標籤/搜索