一行程式碼自動調參,支援模型壓縮指定大小,Facebook升級FastText
機器之心報導
參與:一鳴、亞洲
FastText 作為一款使用簡單、執行快速的自然語言處理工具,獲得了很多研究者和開發者的喜愛。美中不足的是,FastText 之前沒有自動調參的功能。近日,Facebook 更新了這一工具,使用者只需要在命令列增加一句程式碼,工具可以根據使用者資料自動調整超引數,使得模型在指定標籤或整體資料上達到最佳效果。同時,其可以進行模型壓縮,並自動在壓縮過程中調整引數。即使模型足夠小,也依然可以保證在該模型下達到最佳效能。
FastText 是 Facebook 開源的一款自然語言處理機器學習框架。透過這套工具,使用者可以快速完成諸如文字分類等的相關任務,而且不需要設計模型架構。近日,Facebook 給這款工具增加了新的功能——自動調參。
這項功能使得 fastText 可以根據提供的資料集自動選擇最好的超引數,用於構建高效的文字分類器。使用時,使用者需要輸入訓練集和驗證集,並設定時間限制。FastText 之後會在規定的時間內搜尋超引數空間,找到使得驗證集效能最佳的超引數。此外,使用者還可以自定義最終模型的大小。在這樣的情況下,fastText 會使用壓縮技術降低模型大小。
以下為超引數搜尋中的效果:
為什麼需要自動超引數調整
FastText 和大部分機器學習模型類似,使用了很多超引數。這其中包括學習率、模型維度、以及訓練輪次。每個因素都會對模型的結果造成影響,而且在不同資料集或任務上,最最佳化的超引數往往是不同的。為了搜尋得到表現最好的超引數,使用者往往需要進行手動的搜尋和調整,即使是對專家而言,手動搜尋也是非常令人生畏且耗時間的。Facebook 提供的最新功能使得這些這些工作都可以自動完成。
在許多情況下,模型需要被部署在裝置或雲端中,因此模型需要足夠小,以便控制記憶體的佔用。為了滿足在不同裝置上部署模型的需求,FastText 現在也可以幫助使用者建立能夠控制大小的文字分類器了。
使用方法
FastText 本身是使用命令列進行模型的構建、測試的。例如,構建一個文字分類器是可以這樣在命令列中規定:
>> ./fasttext supervised -input train.txt -output model
因此,在自動調參的過程中,使用者只需要在已有的命令上增加關於自動調參的相關屬性命令即可。
現有的超引數命令如下所示,本文將會重點介紹其中的一部分:
-autotune-validation validation file to be used for evaluation
-autotune-metric metric objective {f1, f1:labelname} [f1]
-autotune-predictions number of predictions used for evaluation [1]
-autotune-duration maximum duration in seconds [300]
-autotune-modelsize constraint model file size [] (empty = do not quantize)
為了啟用超引數最佳化,需要提供帶有-autotune-validation 增強的驗證檔案。
例如,使用同樣的資料作為教程示例,autotune 可以以下方式使用:
>> ./fasttext supervised -input cooking.train -output model_cooking -autotune-validation cooking.valid
然後,fastText 將會搜尋超引數,在 cooking.valid 檔案上給出最佳的 f1 得分:
Progress: 100.0% Trials: 27 Best score: 0.406763 ETA: 0h 0m 0s
然後,使用以下方式就能測試得到的模型了:
>> ./fasttext test model_cooking.bin data/cooking.valid
N 3000
P@1 0.666
R@1 0.288
預設情況下,搜尋過程花費 5 分鐘左右。你可以使用-autotune-duration 增強設定秒級的自動暫停,例如,透過以下方式把時間限定在 10 分鐘:
>> ./fasttext supervised -input cooking.train -output model_cooking -autotune-validation cooking.valid -autotune-duration 600
在自動調參時,fastText 展示了這個時間內找到的最好的 f1 得分。如果想在自動暫停前結束,可以傳送一個 SIGINT 訊號(例如透過 CTLR-C)。FastText 就會結束當前訓練,使用目前找到的最佳引數再訓練。
限制模型大小
前文提到,FastText 的另一個功能是可以壓縮模型大小。當然,使用使用者自有的超引數進行模型壓縮可能會對模型的精確率造成一定的影響。
好在 FastText 可以在壓縮模型上自動尋找最最佳化的超引數,同時滿足模型壓縮的要求。為了實現這一點,使用者可以使用 -autotune-modelsize 命令。
>> ./fasttext supervised -input cooking.train -output model_cooking -autotune-validation cooking.valid -autotune-modelsize 2M
這條命令會產生一個 .ftz 檔案,使得模型在指定的大小(如 2M)下有著最高的精確率。
設定最佳化矩陣
預設情況下,autotune 會對使用者提供的驗證檔案進行測試,並最佳化到模型能夠產生最高的 f1 得分。這一點和 /fasttext test model_cooking.bin cooking.valid 命令是一樣的。
但是,有時候使用者希望模型能夠在一個特定的標籤上最佳化其分數,比如,在 __label__baking 命令上,使用者可以設定一個 -autotune-metric 命令進行自動最佳化。
>> ./fasttext supervised -input cooking.train -output model_cooking -autotune-validation cooking.valid -autotune-metric f1:__label__baking
這和當使用者測試時使用./fasttext test-label model_cooking.bin cooking.valid | grep __label__baking 命令手動最佳化 f1 得分是一樣的。
有時候,使用者可能會對預測一個以上的標籤感興趣。例如,如果使用者需要手動最佳化超引數以達到兩個標籤上最佳的分數時,會使用./fasttext test model_cooking.bin cooking.valid 2 命令。現在,使用者也可以讓 autotune 來最佳化這些引數,使用-autotune-predictions 即可。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2655385/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- fasttext訓練模型程式碼AST模型
- JS中通過指定大小來壓縮圖片JS
- 一行程式碼實現移動端拍照旋轉、壓縮問題行程
- shell指令碼自動清理超過指定大小的檔案指令碼
- BERT 模型壓縮方法模型
- 【學習圖片】13.自動壓縮和編碼
- FTP自動下載並解壓縮檔案指令碼FTP指令碼
- java 自動升級sql指令碼 flyway 工具JavaSQL指令碼
- 關閉chrome自動升級的教程 chrome如何取消自動升級Chrome
- tar的打包-壓縮與解壓縮,並解壓到指定的目錄
- Kafka - 支援壓縮種類Kafka
- 模型壓縮-模型蒸餾、模型剪枝、模型量化模型
- 用ASP實現線上壓縮與解壓縮功能程式碼
- word文件太大怎麼壓縮到最小 word壓縮檔案大小
- 怎樣壓縮Docker映象的大小Docker
- FastText總結,fastText 原始碼分析AST原始碼
- nginx指定埠開啟gzip壓縮Nginx
- 【shell】用shell實現自動壓縮日誌並且清理壓縮包
- flyway實現java 自動升級SQL指令碼JavaSQL指令碼
- 指定位置增加一行示例程式碼
- tar解壓到指定目錄並去掉壓縮檔案的層級資料夾
- 如何gulp壓縮,醜化程式碼
- 線上壓縮程式碼-定位錯誤
- 壓縮SQL SERVER日誌程式碼SQLServer
- vs code 自動調整程式碼格式
- 使用Facebook的FastText簡化文字分類AST文字分類
- yolov5--4.0--模型壓縮YOLO模型
- 模型壓縮之 BinaryNet模型
- 支援自動伸縮的消費者模式模式
- openrewrite/rewrite: 轉換升級Java或Spring程式碼的自動化工具JavaSpring
- 移動端字型大小自適應程式碼例項
- kindeditor 上傳圖片 自動調整尺寸大小
- 根據viewport的size自動調整fontsize大小View
- 批次壓縮影片大小的簡單操作分享
- Python 壓縮PDF減小檔案大小Python
- 如何調整畫布內容並獲得調整大小(壓縮)的影像Base64資料?
- Shell指令碼-壓縮指定目錄下前一天檔案指令碼
- [小工具] 微信小程式程式碼壓縮器微信小程式