いっしきまさひこBLOG

AI・機械学習関連、Web制作関連、プログラミング関連、旅行記録などなど。一色政彦。

de:code 2020 聴講ノート(AI・機械学習関連のみ)

2020年6月17日~30日に開催されちえる「de:code 2020 | 開発者をはじめとする IT に携わるすべてのエンジニアのためのイベント」(AI・機械学習関連のみ)を聴講時に取った個人的なノートをそのまま公開したものです。誤字誤植や勘違いがある可能性があるのでご了承ください。

6月19日現在では、すべてのセッションが公開されているわけではないので一部だけです。→1カ月後の7月17日現在で、de:code 2020は終了しました。全部は見きれなかった。「Microsoft AI が目指す「全ての人のための AI」」「”AI パーツ” であなたは何つくる? Azure Cognitive Services アップデート」というセッションも見て良かったけど、ノートは省いてしまった。履歴を見ると14セッションも視聴していました。

AutoML ではじめる機械学習の民主化

自動機械学習とは?

  • 機械学習の民主化=誰でも使えるようにしたい
  • 機械学習のプロセス: 特徴量エンジニアリング、アルゴリズム選択、パラメーター選択
  • Azure Machine Learningでは自動機械学習(Automated Machine Learning:AutoML)を提供

f:id:misshiki:20200717162802p:plain
自動機械学習が目指すところ

f:id:misshiki:20200717162814p:plain
Azure Machine Learning

  • 問題種別: 分類、回帰、時系列の予測をサポート
  • 開発・運用: Python、R、Azure Machine Learning Studio、Jupyter Notebook、Visual Studio Code、PyCharmをサポート
  • ライブラリ: PyTorch、TensorFlow、scikit-learnなど

機能詳細と最新情報

  • データに関する機能:
    • 大規模データ(100GBまで)への対応
    • Azure Open Datasets
    • Data Guardrails
  • 特徴量エンジニアリングに関する機能:
    • BERTによる特徴量抽出
    • 特徴量変換のカスタム指定
    • 自動での特徴量変換
    • 時系列データ前処理の自動化: ラグ、ローリングウィンドウなど
  • アルゴリズム選択に関する機能:
    • Microsoft LightGBM
    • 時系列予測: ARIMA、Prophet、Forecast TCN
  • パラメーター選択に関する機能
    • 強調フィルタリング+ベイズ最適化: 「特徴量エンジニアリング」と「アルゴリズム選択」を含む全体のプロセス
  • 機械学習プロセスの追跡(リネージ)
  • モデル解釈: 責任ある機械学習(Understand、Protect、Control)を実現
    • InterpretML: モデル解釈(モデル全体のグローバル解釈、予測値ごとのローカル解釈)に対応し、直感的なダッシュボードを提供予定

f:id:misshiki:20200717162828p:plain
新しいダッシュボード

  • Azure Machine Learningのロードマップ

f:id:misshiki:20200717162846p:plain
2020年5月末時点でのロードマップ

デモンストレーション

  • Azure Machine Learningの操作例

f:id:misshiki:20200717162857p:plain
Azure Machine Learningの画面

f:id:misshiki:20200717162908p:plain
自動MLを作成しているところ

f:id:misshiki:20200717162928p:plain
分類、回帰、時系列の予測から選択

f:id:misshiki:20200717162955p:plain
選択された最適なモデルの精度を確認

f:id:misshiki:20200717163008p:plain
データの整合性などを確認できるデータガードレール

f:id:misshiki:20200717163019p:plain
実行されたモデルの一覧

f:id:misshiki:20200717163032p:plain
モデル解釈として影響度の高い特徴量も分かる

f:id:misshiki:20200717163044p:plain
デプロイ機能もある

  • Python SDKの実行例

f:id:misshiki:20200717163111p:plain
AutoMLConfigクラスの実装コード例

参考情報

AI・機械学習で新たに創出されるデータとアノテーションビジネス

AIとデータを取り巻く課題

  • 時代背景:不透明さが増すAI
  • 倫理と責任あるAIが求められる(公平性や透明性など)

AI倫理審査ボード

  • マイクロソフトは「AI倫理審査ボード」を設置

f:id:misshiki:20200619132403p:plain
AI倫理審査ボード

  • 「Ethical AI Dicision Framework」を定めて推進

f:id:misshiki:20200619132423p:plain
Ethical AI Dicision Framework

AIベンダーやAIエンジニアが注意するべき法的事項

  • 「アノテーション」「クレンジング」作業に焦点を当て、どのような権利が発生するかを示す
  • 著作権は発生するのか? 一般的に「アノテーション」「クレンジング」は著作物の創作ではない
  • 著作権法10条1項9号「プログラムの著作物」: アイデアは著作物ではない。アイデアは特許法で保護
  • 著作権法30条の4「著作物に表現された思想又は感情の享受を目的としない利用」: 「アノテーション」「クレンジング」が著作物だったとしても、この条文によりAIの学習に無断で利用できることになっている
  • 不正競争防止法2条7項「限定提供データとしての保護」: 「アノテーション」「クレンジング」データはこれにより保護できると考えられる。よって「限定提供データ」として保管するのが大事
  • これ以外で保護する方法: 「契約による保護」。そのために、信用できる特定プラットフォーム上でデータを流注させるのが重要
  • AIデータ活用コンソーシアムでこのための契約書(テンプレート?)を準備中

ソフトウェアと製造物責任(PL法)

  • 問題があった場合に、製造物であるソフトウェアの責任を負わなければならない
  • 通常は、原因調査により問題のあったプロセス箇所を明らかにし、そのプロセスのエンティティが責任を負う
  • AIの場合は、ブラックボックスであり上記のような責任所在の特定は難しい。よってデータやアノテーションにおいても製造物責任を考慮しておく必要がある
  • 例えばアノテーションを担当した人が悪意を持ってラベリングする可能性などがある。そんため作業者の身元確認と保証も大事になってくる
  • データには偏りが生まれる可能性がある。例えば人種の偏りがあるデータで学習してしまった場合、人種差別を持つAIとなる。また、データは時間とともに変化し、世代により意味が変化したりする。データの偏りは無くす必要がある
  • AIの用途によって、データに求められる保証レベルも変わってくる
  • 「AI利活用ガイドライン」に10の原則も参考にしてほしい

リテール AI の PoC 事例から学ぶスケールアウトへのヒント

リテールAI研究会とは

  • 一般社団法人リテールAI研究会
  • リテールAI研究会の中で、PoCを推進するための「分科会」活動を推進
  • リテールAIでよくある失敗: 「フルカスタマイズしようとしてPoCが終わらない」「ビジネス側とエンジニア側で意見の食い違い」

PoC事例の振り返り

  • 何個か事例の説明があったけど割愛

リテールAI検定

リテールAIを成功させる秘訣

  1. 「推論した後に何をするか」をあらかじめ議論すべし
  2. そのためには、最初の段階から、ビジネス部門ユーザーを取り込むべし
  3. ビジネス部門の初心者でも簡単にできるようなシナリオを用意すべし
  4. 部門ごとの要求を取り過ぎてしまわないようにすべし(カスタマイズしすぎるとスケールアウトしないので)

アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用

Azure Machine Learning + MLOps

ざっくりとスライドの引用で紹介します。

f:id:misshiki:20200619161642p:plain
MLOpsのイメージ

f:id:misshiki:20200619161701p:plain
なぜAzure ML+MLOpsなのか

  • MLOps構築をアバナードに業務委託した

アバナードによるMLOps構築

  • 要件と3カ月の成果について説明がありました

アーキテクチャの全体構成は図がないと分からないので、スライドを引用します。

f:id:misshiki:20200619161729p:plain
アーキテクチャの全体構成

f:id:misshiki:20200619161750p:plain
機械学習実行アーキテクチャ

MLOps導入の効果

  1. 工数削減と品質確保
  2. 実験トレーサビリティの確保
  3. 属人化/属環境化の防止

MLOps運用での検討事項

  1. Azureランニングコストの最適化
  2. MLOpsを十分に理解した技術者が必要

Azure Cognitive Search で作る! 一歩先を行く検索機能 〜 富士フイルム IMAGE WORKS 事例 〜

AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ

アジェンダ

  • 混合精度演算(Mixed Precision Training)
    • Tensorコア
    • AMP
  • NVIDIA A100 TensorコアGPU
    • TF32による演算
    • 構造化疎性(Structural Sparsity)
    • Multi Instance GPU(MIG)
  • GPUの利用環境
    • AzureのGPUインスタンス

混合精度演算(Mixed Precision Training)

f:id:misshiki:20200619173843p:plain
FP32とFP16の違い

  • FP16を使う利点:最近のGPUではFP16の演算スループットがFP32の2倍~8倍高い
  • そこでTensorコア。これを使いこなすのが鍵

f:id:misshiki:20200619173859p:plain
Tensorコア

  • 混合精度演算でトレーニングを高速化するには、いくつかの対策が必要。それを自動的に行うのが「AMP:自動混合精度演算」
  • AMPは、計算グラフを解析して適切にキャストしたり、勾配のアンダーフロー(小さくなると表現できずに0になる問題)を防ぐためのロススケーリングしたりできる
  • AMPは現在TensorFlow/PyTorch/MXNetに対応しており、わずか数行を追加するだけで有効化できる

NVIDIA A100 TensorコアGPU

  • 新型GPUが登場。性能は大幅に向上した

f:id:misshiki:20200619173918p:plain
NVIDIA A100 Tensorコア GPU

  • 「TF32 Tensorコア」というF32のレンジとFP16の精度を合わせ持つ新しい数値データ型を導入

f:id:misshiki:20200619173935p:plain
TF32 Tensorコア

  • ここまではトレーニングの高速化。ここからは推論の高速化
  • 構造的疎性(Sparsity)により推論を高速化する

f:id:misshiki:20200619173951p:plain
推論の高速化

  • FP64(倍精度演算)にも対応
  • さらに「Multi Instance GPU(MIG)」という新機能により、GPUインスタンを分割して使用率を最適化できる。推論時のスループットも向上する

GPUの利用環境

  • NVIDIAのGPUは次のような歴史がある

f:id:misshiki:20200619174014p:plain
NVIDIA GPUの歴史

  • AuzreでGPUを使うときは「NVIDIA NGC Image for Deep Learning and HPC」を使うとすべて準備が整っていて便利

f:id:misshiki:20200619174033p:plain
NVIDIAが提供するVM

さくっとプチ成功する機械学習プロジェクトのコツ

4つのコツ

  • 最初から完璧なゴールを目指さない、周囲の理解を得ながら段階的に進める

f:id:misshiki:20200717153926p:plain
機械学習プロジェクトの成功とは?

  • 各スキルをバランスよく補うプロジェクトチームを作る。特にビジネス理解者必須

f:id:misshiki:20200717153945p:plain
理想的なプロジェクトチーム体制

  • Azure PaaSを活用して、速攻&低コストで環境構築し、作業効率化

f:id:misshiki:20200717153958p:plain
機械学習プロジェクトに必要な環境

  • 機械学習モデルは誤差解析から思わぬインサイトを得られる可能性がある、可視化は大切

f:id:misshiki:20200717154013p:plain
Power BIによる可視化イメージ

gacco(統計学/サイエンス/AI・機械学習)の修了証

gaccoの修了証を表示する場所もないので、このエントリに貼り付けていくことにしました。

文部科学省enPiT-Proの「スマートエスイー」シリーズ

『ga136:推論・知識処理・自然言語処理』(August 25, 2020)

f:id:misshiki:20200826160214p:plain
『ga136:推論・知識処理・自然言語処理』の修了証(2020)

『ga137:機械学習』(September 17, 2020)

f:id:misshiki:20201004230059p:plain
『ga137:機械学習』の修了証

日本統計学会の「統計学」シリーズ

『ga014:統計学Ⅰ:データ分析の基礎』(June 18, 2020)

f:id:misshiki:20200619100246p:plain
『ga014:統計学Ⅰ:データ分析の基礎』の修了証

『ga082:統計学Ⅲ: 多変量データ解析法』(March 11, 2020)

f:id:misshiki:20200619100218p:plain
『ga082:統計学Ⅲ: 多変量データ解析法』の修了証

総務省統計局の「データサイエンス」シリーズ

『ga031:社会人のためのデータサイエンス入門』(1周回目:December 02, 2019、2周回目:July 07, 2020)

f:id:misshiki:20200727221427p:plain
『ga031:社会人のためのデータサイエンス入門』の修了証(2020)
f:id:misshiki:20200619100158p:plain
『ga031:社会人のためのデータサイエンス入門』の修了証(2019)

滋賀大学データサイエンス学部

『ga109:大学生のためのデータサイエンス(Ⅰ)』(September 7, 2020)

f:id:misshiki:20201004230319p:plain
『ga109:大学生のためのデータサイエンス(Ⅰ)』の修了証

『pt010:高校生のためのデータサイエンス入門』(September 17, 2020)

f:id:misshiki:20201004230230p:plain
『pt010:高校生のためのデータサイエンス入門』の修了証

「Grow with Google」シリーズ

『pt028:はじめてのAI』(November 11, 2019)

f:id:misshiki:20200619100138p:plain
『pt028:はじめてのAI』の修了証

クロス集計表に関する統計学ノート

質的な変数同士でクロス集計表を作ると、独立変数(説明変数)と従属変数(目的変数)の関連を「独立性のカイ二乗検定」で計算できる。変数が多項目になるなら「相関係数」を使えばよい。

f:id:misshiki:20200619092835p:plain
統計検定の適用方法一覧(クロス集計表を使う場合を赤で示した)

たぶんクロス集計表を使うことなんて今後もない気がするけど、「クロス集計表」関連のノートは、このエントリにまとめていく予定。

クロス集計表における「独立性のカイ二乗検定」と有意確率

  • 有意確率とは、偶然に起こってしまう確率のこと
  • 0.05未満なら、「統計的に有意」となる。「5%水準で有意」とも言う
  • カイ二乗値=有意確率を算出するときの途中の計算の値
  • クロス集計表で有意確率を算出することを「独立性のカイ二乗検定」と呼ぶ
  • 例えば性別と喫煙者のクロス集計表で「独立性のカイ二乗検定」の有意確率が0.01なら、2つの変数は「関連がない(=独立である)」という帰無仮説が棄却されて、「性別」と「喫煙者」には何らかの関連がある(=独立ではない)と言える

三重クロス集計表

  • 第3の変数として、独立変数でも従属変数でもない「統制変数」を使用する

クロス集計表のα係数

  • 複数の独立変数を1 つの変数にまとめることを「変数の合成」と呼ぶ
  • よく分からない変数を作ってないか? 同じモノを測定できているかをチェックするのが「信頼性分析」
  • 信頼性分析の結果は、「クロンバッハのα」、通常は「α係数」と呼ばれる
  • α係数が0.65以上だったら、質問項目は同じモノを測定できていると見なせる

クロス集計表のγ(ガンマ)係数

  • クロス集計表における独立変数と従属変数の関連の強さ(ただし各変数は順序尺度もしくは性別のような2択の名義尺度)を評価する指標にγ(ガンマ)係数がある
  • γ係数の正式名称は「グッドマン・クラスカルのγ」
  • γ係数は、-1~1の値を取る。0が無相関。1は最大関連(「1/0|0/1」のように完全一致でなくても「1/0.3|0/1」でも1になる)を意味する

クロス集計表のV(ヴイ)係数

  • クロス集計表における独立変数と従属変数の関連の強さ(汎用的に使える)を評価する指標にV(ブイ)係数も使える
  • V係数の正式名称は「クラメールのV」
  • V係数は、0~1の値を取る。1は完全関連を意味する

クロス集計表の集計結果

  • 記述と説明: 調査用語。結果まとめ提示と、その原因考察&解説のこと。

多項目のクロス集計表を理解するための相関係数

  • クロス集計表では、例えば「当てはまらない」「やや当てはまらない」~「やや当てはまる」「当てはまる」など多段階の項目も、2段階もしくは3段階の項目にまとめる
  • その理由は多段階のクロス集計表は非常にセル数が多くなり、逆に人間にとって全容が把握しづらくなるから
  • そのような多段階のクロス集計を用いたい場合は、項目同士の関連を「相関係数」で計測すればよい
  • 単に「相関係数」と言えば、「ピアソンの積率相関係数」を指す
  • -1は負の相関。0は無相関。1は正の相関
  • 有意確率は「相関係数のT検定」(解説なし)で出す

3種類の相関係数

  • 「ピアソンの積率相関係数」: 量的な(比例尺度/間隔尺度)変数同士の相関係数。r
  • 「スピアマンの順位相関係数」: 質的な(順序尺度)変数同士の相関係数。ρ(ロー)
  • 「ケンドールの順位相関係数」: 質的な(順序尺度)変数同士の相関係数。τ(タウ)
  • 質的な変数同士の相関件数は、スピアマンとケンドールのどっちを使ってもよい(通常、スピアマン)
  • 量的変数と質的変数の相関係数なら、ピアソンかケンドールを使う

量的変数と質的変数

  • 量的変数:比例尺度=0が「なし」(例:身長)
  • 量的変数:間隔尺度=0が「なし」ではない(例:温度)
  • 質的変数:順序尺度=項目間に「順序」がある(例:書道の級)
  • 質的変数:名義尺度=項目間に「序列」がない(例:性別)

参考文献

Google Cloud Day: Digital 2020 3日目(機械学習)聴講ノート

本稿は、下記イベントの3日目(機械学習)を視聴時に取った個人的なノートをほぼそのまま公開したレポート記事です。誤字誤植や勘違いがある可能性があるのでご了承ください。 ざっくり目を通すと、機械学習関連のセッションの概要が分かると思います。視聴する際の判断材料や、内容を思い出すためのご参考に。

  • Google Cloud Day: Digital 2020
  • 2020 年 6 月 9 日 (火) - 11 日 (木) ライブ配信
  • 2020 年 6 月 9 日 (火) - 30 日 (火) 開催
  • 2020 年 7 月 1 日 (水) - オンデマンド配信中

なお、3日目の6/11当日は人工知能学会全国大会と日程が被っており、ライブ参加はできなかったので、後日6/12にオンデマンド配信を視聴しました。あと18日間、6月30日まで視聴できます。2020/7/9現在、オンデマンド配信中です。

Cloud AI の紹介と最新情報

  • Google Cloud 吉川 隼人 氏
  • ノートはまとめましたが、ほぼ全部知っている情報でした。

1. Cloud AI プロダクトグループ

Google Cloud(GCP)のAI関連の構成図が提示されました。

f:id:misshiki:20200612163532p:plain
Cloud AI プロダクトの一覧

どんな人が使えるものかがざっくりと示されました。

f:id:misshiki:20200612163611p:plain
Cloud AI プロダクトを活用するための指針

2. Contact Center AI

コンタクトセンター用のソリューションです。Google Cloud Text-to-Speechなどが使えるらしいです。コンタクトセンターについては、自分にはちょっと遠い話題なので割愛します。

3. Cloud AutoML

Cloud AutoMLは、カスタムモデルを作成できる機能です。名前と違って、自動で機械学習を行ってくれる技術というわけでは必ずしもありません。次のような感じで使えます。

f:id:misshiki:20200612222528p:plain
Cloud AutoMLの活用イメージ

Cloud AutoMLには次のようなものがあります。

f:id:misshiki:20200612222549p:plain
Cloud AutoMLの機能一覧

ビジネスにとっても価値のあるデータは以下のようなものがあるそうです。構造化データや時系列データが大きな部分を占めています。

f:id:misshiki:20200612222606p:plain
ビジネス価値のあるデータ

そのうちの構造化データにAutoML Tableが使えると。自動的に特徴量を選択して、整形されていないデータを考慮してくれるなどのメリットがあります。

4. AI Platform

機械学習プロジェクトを効率的に本番環境に構築するためにAI Platformが使えます。具体的には次のようなフロー全体をAI Platformが支援します。

f:id:misshiki:20200612222623p:plain
機械学習のフロー

このあと、それぞれのプロダクトの機能紹介がありました。超要約すると、いろんな機能があって効率的になるよ~、ってことです。

5. AI Explanations

AIの中身はブラックボックスと言われていますよね。

f:id:misshiki:20200612222641p:plain
AIはブラックボックス?!

AI Explanationsで推論結果に「説明」を付加できます。

f:id:misshiki:20200612222702p:plain
説明を付加

TensorFlow Probability によるベイズモデリング入門

  • アクセンチュア株式会社 須山 敦志 氏
  • TFP(TensorFlow Probability)は名前だけ知っていましたが、ベイズモデリングの概要からTFPによる実践まで説明されていて良かったです。

0. ベイズモデリングとは?

  • 統計モデリングの一種で、データ解析を行う方法
  • 確率計算に基づいたモデリング手法
  • 予測を分布で表せるのが特徴(次の図を参照)

f:id:misshiki:20200612222724p:plain
ベイズモデルでできること

「機械学習とモデリングの違い=ツールボックスアプローチとモデリングアプローチの違い」が示されました。

f:id:misshiki:20200612222745p:plain
ツールボックスアプローチとモデリングアプローチの違い

2. TensorFlow Probability によるモデリングと計算

  • TFP(TensorFlow Probability)=TensorFlowをベースにした確率的プログラミング言語(PPL)

TFPでいろいろ効率的になります。より具体的にビフォーアフターが説明されました。

f:id:misshiki:20200612222801p:plain
TFP(TensorFlow Probability)

次に線形回帰で例が示されました。まず、TFPをインポートして散布図を描画。

f:id:misshiki:20200612222818p:plain
TFPの実践例1

各点にフィットする回帰直線の式を設計。

f:id:misshiki:20200612222833p:plain
TFPの実践例2

推論計算を実行。

f:id:misshiki:20200612222848p:plain
TFPの実践例3

結果を可視化。ベイズモデリングは予測を分布で表現するので多数の線が引かれたような図になります。

f:id:misshiki:20200612222904p:plain
TFPの実践例4

3. 解析事例

以下の事例が示されました。

  • 事例1: ガウス過程回帰モデルによる予測的指標管理
  • 事例2: 潜在変数モデルによるセンサーデータ解析

4. まとめ

f:id:misshiki:20200612222919p:plain
まとめ

Cloud AutoML で実践する業務システム構築と ML デザイン

  • Google 尾崎 隆 氏, Google 佐藤 一憲 氏
  • 内容的にはこれも基本的だったです。

1. Cloud AutoMLとは

ML開発を支える人材が少なく、その作業も複雑で大変です。そのハードルを下げるためにグーグルが提供するのがCloud AutoML。例えばAutoML Visionでは画像認識・物体検知のカスタムモデルが作れます。ここでデモが流れました。まずはデータをインポート。

f:id:misshiki:20200612223009p:plain
データをインポート

それからトレーニング。

f:id:misshiki:20200612223028p:plain
トレーニング

結果を確認してカスタムモデルは完成。

f:id:misshiki:20200612223043p:plain
結果を確認

あとはエクスポートして使います。ラズパイなどで画像認識するデバイスなども作れます。

f:id:misshiki:20200612223101p:plain
ラズパイを使った画像認識デバイス

AutoML Translation、AutoML Natural Languageなど他にもあります。

2. AutoML Tablesと業務システムへの適用

AutoML Tablesを使うと、構造化データ(表データ)のカスタムMLモデルを作成できます。前処理が簡単。最も良いモデルが自動的に選択されます。

f:id:misshiki:20200612223119p:plain
MLモデルカタログから自動選択

そのバックグラウンドは次のような仕組みになっているそうです。

f:id:misshiki:20200612223139p:plain
AutoML Tablesのバックグラウンド

3. AutoML TablesとMLデザイン

ここで登壇者が尾崎氏(渋谷駅前で働くデータサイエンティストとして有名な方ですね)に代わりました。機械学習の基本的なことが解説されていきます。わかりやすいです。例えば過学習について。

f:id:misshiki:20200612223153p:plain
過学習

過学習を避けるためには必要な交差検証の話。

f:id:misshiki:20200612223215p:plain
交差検証

これに対応する機能もAutoML Tablesには搭載されているとのことです。

f:id:misshiki:20200612223232p:plain
AutoML Tablesで交差検証

4. AutoML TablesでスケーラブルなML開発

以前は多くの人的リソースを使って開発していたものが、AutoML Tablesでより少人数で簡単にできるようになってきているそうです。

f:id:misshiki:20200612223247p:plain
AutoML Tablesを使えばチームは不要

GCP の言語・音声系機械学習 API を活用したサービス実装

  • ソースネクスト株式会社 川竹 一, Google Cloud 唐澤 匠

機械翻訳:Google Cloud Translation API

  • BasicとAdvancedがある
  • Advancedは用語集を使える

f:id:misshiki:20200709203913p:plain
Translation APIのBasicとAdvanced

  • AutoML Translation API: 文章の対を登録できる

音声認識:Google Cloud Speech to Text API

  • Speech to Text Adaptation(適応): Pharase、Boost、Classesがある

f:id:misshiki:20200709203929p:plain
Speech to Text Adaptation

自然言語処理:Google Cloud Natural Language API

  • エンティティ抽出、感情分析、構文解析、コンテンツ分類ができる

f:id:misshiki:20200709203941p:plain
Natural Language API

  • AutoML Natural Language API

ポケトークでの活用事例

  • 音声翻訳は3つのステップ

f:id:misshiki:20200709203955p:plain
音声認識→機械翻訳→音声合成

  • カメラ翻訳も3つのステップ

f:id:misshiki:20200709204012p:plain
文字認識→機械翻訳→AR

  • 会話レッスンも3つのステップ

f:id:misshiki:20200709204130p:plain
音声認識→チャットボット→音声合成

AI Platform で実現する ML Pipeline

  • 株式会社プレイド 春日 瑛, Google Cloud 脇阪 洋平

  • AI Platform: Training、Prediction、Notebooks、Pipelines

f:id:misshiki:20200709223253p:plain
AI Platform Training

f:id:misshiki:20200709223305p:plain
AI Platform Prediction

f:id:misshiki:20200709223318p:plain
AI Platform Pipelines

  • Kubeflow Pipelines: 機械学習パイプラインの作成・実行・管理、そしてモジュールの再利用
  • KARTEにおけるML Platforの実現(株式会社プレイド)
  • KARTE: CX(顧客体験)プラットフォーム、非常に大規模なデータ集積&分析基板

f:id:misshiki:20200709223339p:plain
KARTEでもAI Platform Pipelinesの活用内容(Human-in-the-loop型のソリューション)

  • ロイヤルカスタマー分類、需要予測、異常検知といった課題解決テンプレート

f:id:misshiki:20200709223354p:plain
課題解決解決テンプレートの内容例

  • インフラ基盤

f:id:misshiki:20200709223407p:plain
実際に構築したパイプライン

  • AI Platform Pipelinesをベースとしたパイプライン環境の統一:
    • パイプライン実行環境の統一による管理工数が約30%削減
    • パイプライン開発効率の向上
  • AI Platform Trainingによる学習環境のスケーラビリティ:
    • インスタンスコストを約50%も削減
    • 学習環境をHigh-Memory、GPUなど柔軟に選択可能に
    • インフラの管理工数も削減
  • GCPと他社製品を組み合わせたCI(継続的インテグレーション)/CD(継続的デプロイ)の実現:

    • デプロイにかかる工数を約20%削減 -安定的に最新版をデプロイ可能に
  • 質問:販売予測や需要予測での、BigQueryとAutoMLの使い分けは?

AI Platform を利用した「アスクル・シミュレータ」による物流シミュレーション

  • アスクル株式会社 小池 和弘
  • AI Platform自体の解説は少なめだったのでメモも少なめに...

現在取り組んでいること

  • 2014年ごろから、データ分析基盤「ASUKUL EARTH」をGCPで構築してきた

f:id:misshiki:20200709230242p:plain
ASUKUL EARTHの構成図

  • 2019年からは、さらに知財ライブラリ「アスクルシミュレーター」を(AI Platform の Notebooks と AI Hub を活用して)構築している

f:id:misshiki:20200709230256p:plain
アスクルシミュレーターの構成図

EC物流シミュレーション

  • 構造的な問題にはメタな視点が必要

f:id:misshiki:20200709230311p:plain
構造問題の解法

Kaggle で勝つ GCP の活用方法

  • アクサ生命株式会社 平松 雄司, Google Cloud 葛木 美紀

Cloud AI NotebooksでKaggle ワークフローをポワーアップ

  • Kaggle: 誰でも参加可能なデータサイエンスのコンペ
  • Kaggle ノートブック使用時の課題: 計算量の多いタスクスでは不便
  • そこで、AI Platform Notebooks(CAIP Notebooks)

f:id:misshiki:20200710152537p:plain
AI Platform Notebooksとは

  • KaggleコンペをAI Platform Notebooksを経由して強力なGCPで処理

f:id:misshiki:20200710152551p:plain
AI Platform Notebooksの仕組み

  • ここでデモがありました。分かりやすい
  • AI Platform Notebooks/Kaggle/Colabでプラットフォーム間の比較

f:id:misshiki:20200710152608p:plain
プラットフォーム間の比較

  • KaggleでAI Platform Notebooksを利用する際のTIPS

f:id:misshiki:20200710152622p:plain
TIPS(KaggleでAI Platform Notebooks)

KaggleにおけるGCP活用事例

  • 『Kaggleで勝つデータ分析の技術』の著者の一人
  • Kaggleの称号システム: Novice、Kaggler、Contributor、Expert、Master、Grand Master
  • GCPをKaggleで活用した事例紹介

f:id:misshiki:20200710152634p:plain
事例紹介(KaggleでGCP)

  • 事例1:貸し倒れの予測をするタスク。評価指標はAUC
  • 実務では計算量の大きい巨大モデルはナンセンスだが、Kaggleでは競争なのであり

f:id:misshiki:20200710152645p:plain
巨大なモデルを実行するためのスクリプト

事例1

  • ノーフリーランチ定理: 全てのデータやタスクにおいて、「常に」他よりも優れているルールなどは存在しないこと
  • よって、参加者はKaggleに参加するたびに、より良いモデルを探ることなる。試せるだけしらみつぶしに試すだけの計算リソースが必要
  • 特にエーブルデータのコンペで、計算量が大きくなりやすいパターンがある

f:id:misshiki:20200710152659p:plain
計算量が大きくなるケース

  • そういったときにGCPが役立つ。金額はおサイフに相談になるが、GCPなら細かく調整可能

f:id:misshiki:20200710152711p:plain
Google Computer EngineのVMインスタンスを利用したりBigQueryを利用したり

事例2

  • 最近だとモデルの推論時間に制限がある傾向がある。この事例では2時間以内だっため、より小さなモデルを作成
  • 一方でモデルの学習時間には制限はなかった
  • 学習時の計算量が大きい場合、その計算環境を「ローカル+GCE」で柔軟に構築する方法を提案

f:id:misshiki:20200710152723p:plain
ローカル+GCE

まとめ

  • ご利用は計画的に

f:id:misshiki:20200710152736p:plain
知人の例:金メダルを取ったがトータル40万円で奥さんからお叱りをうける

Google Colaboratory(Colab)でRカーネルのノートブックを超簡単に作成するには?

結論から先に

上記のリンクをクリックするだけで、RカーネルのColabノートブックを新規作成できます(※ノートブックがGoogleドライブに保存されます。ちなみに「create=false」としても新規作成されてしまいます)。ブックマークするか、ショートカットリンクを保存しておくのがお勧めです。

f:id:misshiki:20200603000300p:plain
[ランタイムのタイプを変更]ダイアログ

関連として、下記のリンクをクリックすると、新規作成せずにPythonカーネルのColabノートブックを一時作成できます(※ノートブックは保存されません)。Rカーネルで一時作成する方法は分からないです。

また、次のリンクをクリックで、Colabのノートブック選択ダイアログが開きます。

解説

Google Colabは、グーグルが独自にカスタマイズして提供しているJupyter Notebook環境(Googleドライブのアドオン)です。基本的には、Jupyter Notebook(やJupyterLab)と機能が共通的です。

Colabは、通常、Pythonを実行できる開発環境/ノートブックとなっています。その実行エンジン(ランタイム)は、カーネル(kernel)と呼ばれ、実はPython言語(バージョン2とバージョン3)以外にもR言語/Swift言語が最初からサポートされています。

そのことは、Pythonカーネル上で!jupyter kernelspec listというコマンドをコード実行すると確認できます。

f:id:misshiki:20200603000424p:plain
ColabのJupyterカーネル一覧

このうち、ir /usr/local/share/jupyter/kernels/irと書かれている部分ですね。

使い勝手はPythonカーネルと同じです。MarkdownテキストもRコードも自由自在に書けます。

f:id:misshiki:20200603002156p:plain
Colab(Rカーネル)の使い勝手

Google Colaboratory(Colab)でSwiftカーネルのノートブックを超簡単に作成するには?

結論を先に

上記のリンクをクリックするだけで、SwiftカーネルのColabノートブックを新規作成できます(※ノートブックがGoogleドライブに保存されます。ちなみに「create=false」としても新規作成されてしまいます)。

f:id:misshiki:20200602235810p:plain
[ランタイムのタイプを変更]ダイアログ

関連として、下記のリンクをクリックすると、新規作成せずにPythonカーネルのColabノートブックを一時作成できます(※ノートブックは保存されません)。Swiftカーネルで一時作成する方法は分からないです。

また、次のリンクをクリックで、Colabのノートブック選択ダイアログが開きます。

解説

Google Colabは、グーグルが独自にカスタマイズして提供しているJupyter Notebook環境(Googleドライブのアドオン)です。基本的には、Jupyter Notebook(やJupyterLab)と機能が共通的です。

Colabは、通常、Pythonを実行できる開発環境/ノートブックとなっています。その実行エンジンは、カーネル(kernel)と呼ばれ、実はPython言語(バージョン2とバージョン3)以外にもR言語/Swift言語が最初からサポートされています。

これは、Pythonカーネル上で!jupyter kernelspec listというコマンドをコード実行すると確認できます。

f:id:misshiki:20200602235906p:plain
ColabのJupyterカーネル一覧

このうち、swift /usr/local/share/jupyter/kernels/swiftと書かれている部分ですね。

使い勝手はPythonカーネルと同じです。MarkdownテキストもSwiftコードも自由自在に書けます。

f:id:misshiki:20200602235945p:plain
Colab(Swiftカーネル)の使い勝手

サクッと試せるTensorFlow/Kerasニューラルネットワークの最小コード(Minimal Code)

「とにかくコピペだけでサクッと動かせるニューラルネットワークのコードが欲しい」というときがあるのだけど、検索してもなかなか出てきません。そこで、とにかくコピペだけ試せる最小コードを作りました。TensorFlow/Keras版です。

# ライブラリのインポート
import tensorflow as tf
import tensorflow.keras.backend as K

# 入力データ
NUMBER_OF_DATA  = 64
INPUT_FEATURES  = 1000
HIDDEN_FEATURES = 100
OUTPUT_FEATURES = 10
x = tf.random.normal([NUMBER_OF_DATA, INPUT_FEATURES])
y = tf.random.normal([NUMBER_OF_DATA, OUTPUT_FEATURES])
#x.shape # TensorShape([64, 1000])
#y.shape # TensorShape([64, 10])

# モデルの定義
model = tf.keras.models.Sequential([
  tf.keras.layers.Dense(input_shape=(INPUT_FEATURES,), units=HIDDEN_FEATURES),
  tf.keras.layers.ReLU(),
  tf.keras.layers.Dense(OUTPUT_FEATURES)
])
#model.summary()

# ★選択肢1★ トレーニング(簡易版)
LEARNING_RATE = 0.03   # 学習率: 0.03
EPOCHS = 100           # エポック数: 100
LOSS = 'mean_squared_error'

model.compile(
  optimizer=tf.keras.optimizers.SGD(learning_rate=LEARNING_RATE), 
  loss=LOSS,
  metrics=['accuracy'])
model.fit(x, y, epochs=EPOCHS)

print('Finished Training')
#print(model.get_weights())

# # ★選択肢2★ トレーニング(カスタマイズ版)
# LEARNING_RATE = 0.03   # 学習率: 0.03
# EPOCHS = 100           # エポック数: 100
#
# criterion = tf.keras.losses.MeanSquaredError()
#
# optimizer = tf.keras.optimizers.SGD(
#   learning_rate=LEARNING_RATE)
#
# def train_step(train_X, train_y):
#   training = True
#   K.set_learning_phase(training)  # tf.keras内部にも伝える
#   with tf.GradientTape() as tape:
#     pred_y = model(train_X, training=training)
#     loss = criterion(pred_y, train_y)
#   gradient = tape.gradient(loss, model.trainable_weights)
#   optimizer.apply_gradients(zip(gradient, model.trainable_weights))
#   return loss.numpy()
#
# for i in range(EPOCHS):
#     loss_result = train_step(x, y)
#     print(i, ':', loss_result)
#
# print('Finished Training')
# #print(model.get_weights())

ちなみに試すときは、Colabスクラッチパッドが便利ですよ。