AutoML触ってみた

AutoMLとは

ここ数年の内によく聞くようになったキーワード、AutoML。
AutoMLとは「Automated Machine Learning」の略で、直訳すると自動機械学習。
少し噛み砕くならば、機械学習モデルの設計や構築などのプロセスを自動化することです。
その自動化のための仕組みが、どんどん発表されています。

機械学習のプロセス

設計や構築の自動化ってなんぞやというところで、機械学習のプロセスを図解してみます。
スクリーンショット 2022-04-28 11.38.04.png
機械学習には、モデルの生成までに様々な工程があります。
AutoMLはその一部もしくは全てを自動化するという仕組みです。
機械学習はデータを用意してプログラムに投げ込めばいいというものではなく、性能を高めるために何度もトライアンドエラーを繰り返し、調整を加えていく必要があります。
AutoMLはその部分を自動化してくれるシステムなのです。

AutoMLの役割

上図で示しているオレンジ色の転線がAutoMLが対応できる範疇です。
もう少し具体的にはどんなことを行うのかというと

  • 画像分析の学習のために大量の画像を集めるデータセットの準備
  • 用意した画像のサイズや拡張子を直し、ラベリングして…と言った手間のかかるデータの前処理
  • アルゴリズム選定してモデルを作成、検証してその結果からアルゴリズムを選定し直して再度モデルを作成、検証して…と繰り返すトライアンドエラーの部分

などを自動的に行ってくれるのがAutoMLです。

AutoMLの検証

実際にAutoMLを使って、その機能を体感しよう!ということで、やってみました。
AutoML自体は数多くあるのですが、大手が運用している(サービス終了のリスク回避)、画像認識に対応している、参考先が比較的多い、などから以下二つを取り上げました。

  • AutoML Vision
  • AutoGluon

AutoML Vision

AutoML Vision – https://cloud.google.com/vision/automl/docs/beginners-guide?hl=ja

Google Cloudが運用する、Google Cloud Platformを利用したAutoMLです。
事前準備に手間がかからず、プログラミングなしで独自モデルの生成ができるため、手軽に機械学習を利用することができます。

事前準備

  • Googleアカウント
  • 学習用画像(最低10枚)

Google Cloud Platformを利用するため、Googleアカウントは必須です。
$300分の無償トライアルがあるので申請を忘れずに。
学習用画像は最低10枚用意し、分類したいラベルの名をつけたフォルダで分けておきます。
学習用とテスト用を分ける必要はなく、インポートするとAutoML側でランダムに仕分けます。
画像自体の拡張子やサイズ統一、リネームなども必要ありません。めちゃくちゃ楽ですね。

学習用画像の構造

モデル作成

  1. Google Cloud Platform(https://console.cloud.google.com/)でAutoML Visionを選択
  2. データセット名、モデルの目的を選択(今回はマルチラベル分類)
  3. 準備した学習用画像をインポート(完了後にメール通知あり)
  4. イメージタブにてラベリングの確認
  5. トレーニングタブでトレーニングを実施(完了後メール通知あり)
学習用画像を読み込むと、フォルダ名がラベルとなり自動的にラベリングされる

以上で、モデルの生成が完了します。
作成したモデルの品質確認もコンソール上で行えます。

モデルの評価 今回は犬と猫の分類モデルを作成

モデルの作成だけでは実行ができません。
デプロイを実行することで、画像分類が使用できるようになります。

分類

10枚まで同時に実行できます。
検証用に準備した画像は、全て正常に分類されました。
画像と分類結果、信頼度が視認できるのはとても便利ですね。

AutoML Vision 所感

アカウントと学習用画像があればあっという間に分類のモデル生成ができる。
深い学習の知識が不要で、手軽に機械学習に取り組める点は大きいと思います。
しかし反面、AutoMLがどのアルゴリズムを使用しこのモデルを作成したかなどの構成情報がわからないこと、モデル自体のカスタマイズが難しく応用が効かないこと、Google Cloud Platformを介さないと利用できないことがネックだと感じました。

AutoGluon

AutoGluon – https://auto.gluon.ai/stable/index.html

AWSのメンバーが開発しているAutoMLのOSSです。
機械学習モデル選択やハイパーパラメーターのチューニングといった難しい部分はすべて自動で行われ、最低3行のコードから機械学習を構築できます。

事前準備

  • AutoGluonのライブラリ
  • 学習用画像

AutoGluonのライブラリは依存関係が複雑で、マシンによっては未対応の場合もあるようです。
今回の検証環境もローカルでの使用ができなかったため、Google Colaboratoryを使用して検証しました。
学習用画像は学習用とテスト用にフォルダを分け、更にその中でラベルごとにフォルダを分ける必要があります。

モデル作成

  1. 必要なライブラリをインストール
  2. 訓練データ(train)から分類器を作成
  3. テストデータ(test)で精度検証
  4. 作成した分類器を保存
AutoGluon実行時の構造

1.〜4.をPythonでコードを記述(train.py)、実行することで、モデルの生成が行われます。
生成時、どのようなモデルを使ったかなどAutoGluonが使用した内容のConfigを確認できます。

分類精度のみPrint出力しています

分類

保存した分類器を利用して画像を分類するコードを記述(predict.py)、実行します。
コードを利用して自由に組めるため、理論上、ラベル種類や枚数の上限はありません。
こちらも検証用に準備した画像は全て正常に分類されました。

Printでラベル、確信度を出力しています

AutoGluon所感

ライブラリの構築からで手間がかかり、場合によっては使用できない恐れもある。
コードの記述が必要な分、ある程度の知識がないと軽々には手が出せないのかなと感じました。
しかしその分、細かなカスタマイズが可能で、複数のモデルを組み合わせ制度をあげていくことも可能という意味で利便性が高いと感じます。
応用の幅が広く、まだまだ研究を進めていきたいと思います。

まとめ

今回AutoMLを実際に触ったことで、今までトライアンドエラーを繰り返してきたパラメータ調整などの手間のかかる部分が自動化される利便性を感じました。
分類などはある程度どうしても人の目が必要ではありますが、少なくともAutoMLを利用することで最低限の指針にはなり、パフォーマンスの向上は見込めるのではないかと思います。
ビジネスに活用するには、カスタム性能、分類精度、料金体制などまだ課題が残る部分はありますが、今後の進化にも注目し、取り入れていきたいです。