こんにちは。@Ssk1029Takashiです。
最近、タスクを設定して、データセットを与えれば勝手にモデルまでいい感じにしてくれるAutoMLを使うための様々なサービス・ライブラリが出てきています。
先輩の@tereka114がAutoGluonを使っているのをみて触発されたので、私のほうではテキスト分類をやってみました。
acro-engineer.hatenablog.com
今回は、MXNetを使用したAutoMLライブラリであるAutoGluonを使って、テキスト分類を試してみます。
CUDA&AutoGluonのインストール
今回はGPU環境へのインストールを試していきます。
GPUを使うためので、CUDAのインストールが必須になります。
CUDA10.0のインストール
基本的には下記のGCPのページにそってインストールします。
cloud.google.com
最後のCUDAのインストールのコマンドを以下のように変更します。
(サイトの手順の場合、最新版がインストールされるのですが、今回使用するMXNetが10.0に対応しているのでこちらを合わせます。)
sudo apt install cuda-10-0
AutoGluonのインストール
下記のサイトにある通り、pip install2行でインストールできます。
導入が楽なのはありがたいですね。
autogluon.mxnet.io
pip install --upgrade mxnet-cu100 pip install autogluon
※現在はpython3.6と3.7、OSはLinuxのみの対応となっています。
AutoGluonでテキスト分類を行ってみる
それでは、チュートリアルにある通り、テキストの分類を試してみます。
今のところAutoGluonではStanford Sentiment Treebankデータセットでのベンチマークを試せます。
import autogluon as ag from autogluon import TextClassification as task dataset = task.Dataset(name='ToySST') predictor = task.fit(dataset, epochs=3)
datasetを指定して、fitメソッドを呼び出すだけで、学習を始められます。
fitメソッドで指定しているepochsは学習方法を変化させるまでに実行するトレーニング回数になります。
学習を開始すると、以下のように自動でモデルがダウンロードされて学習を始めます。
AutoGluonのTextClassificationでは、デフォルトの場合、 Gluonで使用できるBERTの英語pretrainedモデルを使用して学習を進めるようです。
そして、一つのモデルについて指定したepoch数の学習が完了すると、違うモデルで学習を始めて、より良いモデルを探索します。
また、predictメソッドやevaluateメソッドから、学習した中で最も精度が良かったモデルを使って、推論・評価することが可能です。
test_acc = predictor.evaluate(dataset) print('Top-1 test acc: %.3f' % test_acc)
結果は以下のように出力されます。
Top-1 test acc: 0.868
このデータセットの研究での精度は89%~97%程度となっています
nlpprogress.com
今回試した精度は86.8%でしたが、epoch数が3の学習で手軽にここまで迫れるの良い結果なのではないかと思います。
使ってみての感想
テキストに関しては、まだパラメータチューニングの対象・範囲の指定しかできませんが、カスタムデータセットへの対応がされると、適用できる範囲も広がるように思います。
また、現状では対応しているモデルも、BERTの英語モデルに限られているようですが、テキスト分類を簡単に高精度で実施できるのはうれしいので、これから拡張されていくことを期待しています!
(個人的には、日本語のpretrainedモデルに対応してくれると嬉しいです)
まとめ
今回はAutoGluonを使って、AutoML+テキスト分類を簡単に試しました。
インストールから使い始めまで、非常に容易にAutoMLを試すことができました。
これから機能が拡張されれば、より便利で手軽に機械学習を試せるようになりそうです。
引き続き今後の拡張を追っていきたいと思います。
それではまた。
Acroquest Technologyでは、キャリア採用を行っています。
- ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
- Elasticsearch等を使ったデータ収集/分析/可視化
- マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
- 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
Kaggle Masterと働きたい尖ったエンジニアWanted! - Acroquest Technology株式会社のデータサイエンティストの求人 - Wantedlywww.wantedly.com