Slide 1

Slide 1 text

AutoML Tables で
 コードを書かずに機械学習入門


Slide 2

Slide 2 text

自己紹介
 ● 名前
 ○ 吉田 拓 (Taku Yoshida)
 ● 所属
 ○ FrontierTech代表
 ● 普段やってること
 ○ Webアプリ開発、プロダクトマネジメント 
 ○ 機械学習は基礎の基礎だけ知ってるくらい 
 ● 趣味
 ○ コーヒー☕
 最近は扉の解施錠、NFCカードなどのハードウェアにも進出中 


Slide 3

Slide 3 text

Agenda
 1. AutoML の背景
 2. AutoML Tables の紹介
 3. AutoML Tables のデモンストレーション
 4. まとめ


Slide 4

Slide 4 text

AutoML の背景


Slide 5

Slide 5 text

機械学習のプロセス
 よりよいモデルを作るために、様々なモデルを組み合わせながら、何度もプロセス を回して試行錯誤する必要がある
 出典 : https://pages.awscloud.com/rs/112-TZM-766/images/1.AWS_AutoML_AutoGluon.pdf 


Slide 6

Slide 6 text

機械学習のプロセスの課題
 ● 様々なモデルを組み合わせて試行錯誤するハードルが高い
 ○ モデルのアンサンブルが主流になりつつあり、より高度な機械学習の知識が必要 
 ○ 機械学習エンジニア、データサイエンティストはひっぱりだこ。。 
 ● 何度もプロセスを回す手間が大きい
 ○ 簡単にプロセスを回せないと検証するためのコストが高くなってしまう 
 ○ プロセスの自動化には時間がかかる。。 
 ✅ 最低限の機械学習の知識でモデルの試行錯誤したい 
 ✅ 試行錯誤を高速で行いたい 
 ✅ 簡単にプロセス自動化したい 


Slide 7

Slide 7 text

AutoML とは
 AutoML(Automated Machine Learning:自動化された機械学習) 
 ※ サービス名称ではなく一般的な言葉
 → 機械学習を実世界の問題に適用するタスクを自動化するプロセス
 
 出典 : https://en.wikipedia.org/wiki/Automated_machine_learning 
 
 自動化するプロセスの例
 データの取り込み、特徴量エンジニアリング、モデルの選択 、ハイパーパラメータ− 調整、学習や推論のインフラ構築 など


Slide 8

Slide 8 text

AutoML に関するサービス例
 ● Google : Cloud AutoML など
 ● Amazon : AutoGluon など
 ● DataRobot : DataRobot AI Cloud


Slide 9

Slide 9 text

Google の ML 関連サービスと CloudAutoML の位置付け
 出典 : https://cloud.google.com/blog/ja/products/ai-machine-learning/practical-machine-learni ng-with-automl-series-1 
 
 Cloud AutoML の位置付け 
 ゼロからモデルを作るのは大変だ けど、事前学習モデルでは対応で きない場合


Slide 10

Slide 10 text

Cloud AutoML
 GCP の AutoML に関するプロダクト群の総称
 プロダクト群
 ● 表形式データ : AutoML Tables 
 ● 画像: AutoML Vision 
 ● 動画 : AutoML Video Intelligence 
 ● テキスト: AutoML Natural Language 
 ● テキスト(翻訳) : AutoML Translation 
 ● 統合プラットフォーム : Vertex AI 


Slide 11

Slide 11 text

AutoML Tables の紹介


Slide 12

Slide 12 text

AutoML Tables とは
 ● (ベータ版) 表形式の構造化データを扱う AutoML
 ● 自動化対象
 ○ 特徴量エンジニアリング 、モデルの選択、ハイパーパラメータの調整、モデルの 評価、学習から推論のインフラ構築など 
 出典 : https://developers-jp.googleblog.com/2019/06/google-automl-kaggledays-2.html 
 


Slide 13

Slide 13 text

AutoML Tables の実例
 ● Kaggle Days SF Hackathon 2位
 ○ 自動車部品の製造における欠陥を予測する課題 
 ○ 最大 3 名のチーム 74 組が 8 時間半をかけて競うコンペ 
 出典 : https://developers-jp.googleblog.com/2019/06/google-automl-kaggledays-2.html 
 


Slide 14

Slide 14 text

AutoML Tables のワーフフロー
 1. データの収集、準備 : データを収集し正しい形式であることを、インポートの前後に確認 
 2. トレーニング: パラメータを設定してモデルを構築 
 3. 評価: モデルの評価指標を確認 
 4. デプロイと使用: モデルを使用できるようにデプロイ、エクスポート 


Slide 15

Slide 15 text

AutoML Tables のワーフフロー
 1. データの収集、準備 : データを収集し正しい形式であることを、インポートの前後に確認 
 2. トレーニング: パラメータを設定してモデルを構築 
 3. 評価: モデルの評価指標を確認 
 4. デプロイと使用: モデルを利用できるようにデプロイ、 エクスポート


Slide 16

Slide 16 text

トレーニングデータの要件
 トレーニング データは次の要件に従う必要があります。 
 ● 100 GB 以下
 ● 予測する値(ターゲット列)が含まれている 
 ● 列数は 2~1,000 列
 ● 行数は 1,000~200,000,000 行 
 ○ 1,000 行では高品質のモデルをトレーニングするために十分でない場合もある 
 ○ 推奨される最低行数の目安 
 ■ 分類問題 : 特徴数 × 50 
 ■ 回帰問題: 特徴数 × 200 
 ベストプラクティスは公式の こちら


Slide 17

Slide 17 text

データのインポート、特徴量エンジニアリング
 データのインポート時に 自動で行われる特徴量エンジニアリング

Slide 18

Slide 18 text

課題の自動判別
 ● ターゲット列(目的関数)に応じて自動で課題の把握
 ○ 数値型 → 回帰
 ○ カテゴリー型 → 分類


Slide 19

Slide 19 text

AutoML Tables のワーフフロー
 1. データの収集、準備 : データを収集し正しい形式であることを、インポートの前後に確認 
 2. トレーニング: パラメータを設定してモデルを構築 
 3. 評価: モデルの評価指標を確認 
 4. デプロイと使用: モデルを利用できるようにデプロイ、エクスポート 


Slide 20

Slide 20 text

モデルのトレーニングの設定
 主な設定項目
 ● トレーニング予算
 ○ 1~72 ノード時間
 ● 利用する特徴量の選択
 ○ デフォルトは無効な値が含まれる列以外すべて 
 ● 最適化の目標
 ○ デフォルトは問題に合わせて自動で選択 
 ● 早期停止
 ○ 過学習になる前に学習を停止。デフォルト ON 
 ● データ分割の設定
 ○ デフォルト (Training)80% : (Dev)10% : (Test)10% 


Slide 21

Slide 21 text

モデルの自動選択
 ● モデルの自動選択、組み合わせ
 ○ 1つ以上のモデルを自動で組み合わせて最終的なモデルを作成 
 ● モデルは以下のモデルを利用
 ○ AdaNet モデル
 ○ AdaNet AutoEnsemble モデル 
 ○ DNN 線形モデル
 ○ 勾配ブースト ディシジョン ツリー モデル 
 ○ フィードフォワード ニューラル ネットワーク モデル 
 例) モデル構造のログ 


Slide 22

Slide 22 text

データの自動分割
 交差検証自動でを行います 
 通常は (Training)80% : (Dev)10% : (Test)10% にデータ分割 
 別のサンプリングがしたい場合は データ分割列を元データに追加した上で、個々の行(サンプル)を TRAIN / VALIDATE / TEST / UNASSIGNED のいずれかに手動でランダムにラベリングして割り振る 
 時系列の場合はランダムサンプリングではなく、時系列でカットする 
 出典 : https://cloud.google.com/blog/ja/products/ai-machine-learning/practical-machine-learning-with-automl-series-4

Slide 23

Slide 23 text

AutoML Tables のワーフフロー
 1. データの収集、準備 : データを収集し正しい形式であることを、インポートの前後に確認 
 2. トレーニング: パラメータを設定してモデルを構築 
 3. 評価: モデルの評価指標を確認 
 4. デプロイと使用: モデルを利用できるようにデプロイ、エクスポート 


Slide 24

Slide 24 text

最適化の指標
 デモ時に説明します 


Slide 25

Slide 25 text

AutoML Tables のワーフフロー
 1. データの収集、準備 : データを収集し正しい形式であることを、インポートの前後に確認 
 2. トレーニング: パラメータを設定してモデルを構築 
 3. 評価: モデルの評価指標を確認 
 4. デプロイと使用: モデルを使用できるようにデプロイ、 エクスポート


Slide 26

Slide 26 text

モデルの利用
 ● バッチ予測
 ○ 新しいデータをアップロードしてみて推論 
 ○ リアルタイム性を求められずまとまったデータの推論を行いたいときに有用 
 ● オンライン予測
 ○ REST リクエストを送信できるようにモデルがデプロイして推論 
 ○ リアルタイムに推論を返したい場合に有用 
 ● モデルのエクスポート
 ○ TensorFlow パッケージをダウンロード。Docker 上などで動かして推論 
 ○ 手元のローカル環境や、アプリに組み込んで使用したい場合に有用 


Slide 27

Slide 27 text

オンライン予測


Slide 28

Slide 28 text

デモがあります💁


Slide 29

Slide 29 text

デモで扱うデータ
 AutoML Tables 公式のクイックスタート
 ● データ
 ○ ポルトガルの銀行のダイレクトマーケティングキャンペーン に関するデータ
 ○ 顧客の口座等の情報と、商品(銀行の定期預金)が契約されたか否かのデータ 4万件 
 ● 課題
 ○ 何度も DM して意思確認するのは骨が折れる 
 ● 解決策
 ○ 事前に申し込みそうかどうか、事前にあたりを付けたい 
 
 👉「銀行の定期預金をしそうか/しそうでないか」の教師あり分類問題


Slide 30

Slide 30 text

データの概観
 ● ターゲット列 : Deposit (定期預金)
 ● 2 種類のカテゴリ変数
 ○ 1 は悪い結果(預金が行われないこと) 
 ○ 2 は良い結果(預金が行われること) 
 
 
 ︙


Slide 31

Slide 31 text

最適化指標 AUC ROC
 定期預金する
 定期預金しない
 しきい値
 真陽性
 偽陰性
 偽陽性
 真陰性
 実際に定期預金した人のうち 
 定期預金すると予測した人の割合 
 再現率(真陽性率) = 真陽性 / (真陽性 + 偽陰性) 
 実際に定期預金しない人のうち 
 定期預金すると予測した人の割合 
 偽陽性率 = 偽陽性 / (真陰性 + 偽陽性) 
 出典 : https://www.cresco.co.jp/blog/entry/15337/ 
 
 ROC (Receiver Operating Characteristic)曲線の
 AUC (Area Under Curve)


Slide 32

Slide 32 text

BigQuery ML との使い分け
 出典 : https://cloud.google.com/automl-tables/docs/features 
 
 素早く、簡易なモデルでの学習から推論なら BigQueryML
 
 


Slide 33

Slide 33 text

利用料金等


Slide 34

Slide 34 text

料金
 約$0.25~ (リージョン、マシンタイプによる) 無料枠 : 6 ノード時間のトレーニングと予測


Slide 35

Slide 35 text

まとめ


Slide 36

Slide 36 text

まとめ
 ● 専門知識が少なくても、インポートから推論まで簡単できるのでお手軽 
 ● モデルの評価軸、特徴量の寄与なども可視化できて直感的 
 ● データ量などが整っていることが前提になるのでデータが少ない場合には注意 
 ● 現実の課題でもまずはお試しして、参考値を手に入れるのは1つの手では? 


Slide 37

Slide 37 text

Appendix


Slide 38

Slide 38 text

VertexAI と Cloud AutoML の位置付け
 出典 : https://cloud.google.com/vertex-ai#all-features 


Slide 39

Slide 39 text

トレーニングデータの作成
 モデルの品質を高めるためにデータセットの準備時に気をつけること 
 ● データの漏出を避ける( 予測を求める際には利用できない予測情報が含まれないように)
 ● トレーニング/サービングスキューを避ける 
 ● 未来の情報を過去に混入させない 
 ● 意図的に難読化・無作為化・匿名化されたデータを復元したものを含めない 
 ● モデルの運用環境に存在しないデータを含めない 
 ︙
 ベストプラクティスは公式の こちら


Slide 40

Slide 40 text

早期停止
 過学習を避けるために、学習データに対する学習を進めながら同時に Dev データに対する交差検証誤差をモニタリングし、こ れが下がらなくなったら学習を打ち切る


Slide 41

Slide 41 text

パフォーマンスが低いときは。。
 ● スキーマを見直す
 a. すべての列の型が正しいこと 
 b. ID 列といった予測されない列をトレーニングから除外 
 ● データを見直す
 a. null 値を許容しない列に 1 つでも値がないと、その行は無視されるので注意 
 b. データ内のエラーが多すぎないように 
 c. トレーニング データにできるだけ偏りがないように 
 ● テスト データセットをエクスポートして調べる 
 ● トレーニング データの量を増やす 
 ● トレーニング時間を増やす 


Slide 42

Slide 42 text

逆にほぼ完璧なときは。。
 ● ターゲットの漏出 a. ターゲットの漏出は、トレーニング時には把握できない、結果に基づいた特徴がトレーニング データに含まれて いる場合に発生します。 b. たとえば、初めて購入を行うユーザーが実際に購入するかどうかを判断できるようトレーニングするモデルに常 連購入者番号を含めた場合、そのモデルの評価指標は非常に高くなります。しかし実際のデータでは常連購入 者番号を含められないため、パフォーマンスが低くなります。 ● 時間列 a. データの時刻が重要な場合は、「時間」列または時間に基づく手動分割を使用していることを確認