Uberが開発、ノーコードでディープラーニングを実現するAutoML OSS「Ludwig」:AutoML OSS入門(8)(1/3 ページ)
AutoML OSSを紹介する本連載第8回は「Ludwig」を紹介します。Ludwigは「データ型ベース(Datatype-based)」という思想を取り込むことでさまざまな課題に対する柔軟かつ容易な最適化を可能にしたAutoML OSSです。
本記事で紹介したノートブックはGitHubにて公開しています。すぐに実行できますので、ぜひご利用ください。
本連載第7回では、「Keras」をベースとし、ディープラーニングモデルを自動構築する「AutoKeras」を紹介しました。今回はノーコードでディープラーニングを実現するAutoML OSS「Ludwig」を紹介します。
Ludwigとは
LudwigはUber Technologiesが中心となって開発しているAutoML機能を提供するOSS(オープンソースソフトウェア)です。LudwigはPiero Molino氏らによって2019年の論文「LUDWIG: A TYPE-BASED DECLARATIVE DEEP LEARNING TOOLBOX」で発表されました。
開発元 | Uber Technologies |
---|---|
GitHub公開日 | 2019年2月 |
リポジトリ | https://github.com/ludwig-ai/ludwig |
実装言語 | Python |
ライセンス | Apache-2.0 License |
公式サイト | https://ludwig-ai.github.io/ludwig-docs/ |
表1 Ludwigの基本情報 |
Ludwigはディープラーニングに特化したAutoML OSSです。テーブルデータはもちろん、画像データや音声データも特別な知識がなくても扱うことができます。
主な特徴
Ludwigは、AutoMLができる他のOSSと比較して次のような特徴があります。
- データ型ベースによる汎用(はんよう)性
- ノーコードでの利用が可能
それぞれの特徴についてもう少し詳しく見ていきましょう。
データ型ベースによる汎用性
データ型ベース(Datatype-based)は「入出力のデータ型さえ確定すれば、適切なディープラーニングモデルをある程度決めることができる」という考え方です。図1に示す通り、Ludwigの中では各データ型に対して適切なEncoderやDecoderが事前に用意されているため、利用するユーザーは入出力のデータ型だけ指定すれば、大部分の細かいパラメーターなどの設定を省略して問題を解くことができます。これによってLudwigは利用の容易性と汎用性を高度に両立させているといえます。
Ludwigが対応しているデータ型としては、自然言語や画像、音声など一通りのものがそろっています。世間によくある機械学習のさまざまなタスクは、これらを適切に組み合わせて選択することで表現できます。Ludwigで実現が可能なタスクと、指定可能な入出力データ型の組み合わせの例を以下に示します。
入力データ型 | 出力データ型 | 実現できるタスク |
---|---|---|
カテゴリー、数値、バイナリ | バイナリ | 二値分類 |
テキスト | カテゴリー | テキスト分類 |
画像 | カテゴリー | 画像分類 |
画像 | テキスト | 画像キャプション付与 |
音声 | バイナリ | 話者特定 |
カテゴリー、数値、バイナリ | 数値 | 回帰 |
時系列 | 数値 | 将来予測 |
カテゴリー、数値、バイナリ | バイナリ | 不正検知 |
画像、テキスト | テキスト | 画像質問応答(VQA) |
表2 Ludwigで実現できるタスクの一例 |
Ludwigで解くことのできるタスク種別が広範にわたることが分かります。本記事の前半ではタイタニックデータを用いた二値分類の問題を、後半ではテキスト分類の問題をLudwigで解いてみます。
ノーコードでの利用が可能
LudwigはPythonのコードを1行も書くことなく利用が可能です。用意する必要があるものはデータが含まれるファイルと、入出力のデータ型などの情報を記載したconfigファイルの2つのみです。Pythonがインストール済みであれば、以下のコマンドでLudwigをインストールできます。
!pip install ludwig
インストール後は、コマンドラインから以下のように簡単に学習を実行できます。なお、path/to/file.csvはデータが含まれるファイルのパス、config.yamlはconfigファイルのパスに相当します。それぞれのファイルの具体例については、図2および図3を参照してください。
ludwig train --dataset path/to/file.csv --config_file config.yaml
ただし、本記事はコマンドラインからの実行ではなく、PythonからLudwigを利用する前提で説明を進めていきます。
Copyright © ITmedia, Inc. All Rights Reserved.