更快更強,深度學習新庫fastai“落戶”PyTorch


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

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

  • 研究如何快速、可靠地把最先進的深度學習應用於實際問題。

  • 提供Fast.ai庫,它不僅是讓新手快速構建深度學習實現的工具包,也是提供最佳實踐的一個強大而便捷的資源。

  • 課程內容簡潔易懂,以便儘可能多的人從研究成果和軟件中收益。

國慶期間,Fast.ai發佈一個新的、面向深度學習的免費開源庫——fastai。這是個PyTorch庫,雖然還是預覽版,但它目前已經爲最重要的深度學習應用程序和數據類型提供了一致的API,且相比其他深度學習庫,它在準確性和速度上有顯着提高,同時所需的代碼大大減少。

感興趣的開發者可以訪問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)和技術(如隨機重啓循環學習率)。

                                      語義代碼搜索


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

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

生成音樂

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

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

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

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


藝術創作

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

                                        風格還原


他表示:“我喜歡用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))

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

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

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

                                       文本分類性能總結


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)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章