いっしきまさひこBLOG

Web制作関連、プログラミング関連、旅行記録などなど。

Recap of TensorFlow Dev Summit 2019 聴講ノート

※これはセミナー聴講時の個人的なノートをそのまま公開したものです。誤字誤植や勘違いがある可能性があるのでご了承ください。

Recap of TensorFlow Dev Summit 2019 - connpass

19:05-19:40 An Introduction to TensorFlow 2.0: Updates from the TF Summit? Laurence さん(Google LLC)

19:45-20:10 TF Probability, TF-Agents and TFX (BrainPad Inc. ohtaman)

TF Probability

  • 確率的プログラミング:世の中を確率的な事象と捉える
    • 点で表現すると不確実さ(ばらつきなど)を表現できない
  • 不確実さとは:
    • データのばらつき具合(Eleatoric uncertainty)
    • パラメータの推定値の分布(Epistemic uncertainty)
  • TensorFlow Probablityを使うと、確率的プログラミングで簡単に書ける
    • Keras Layersと組み合わせて使う
  • TensorFlow Probability  |  TensorFlow

TF-Agents

TFX (TensorFlow Extended)

その他

  • TensorFlow.js v.1.0のリリース: iPhone Xでは9.4倍
  • 教育への取り組み(オンライン学習コースなど)
  • 2018年に比べて、2019年は具体的な実用例が増えた

20:15-20:25 Demonstration: Edge TPU and Sparkfun Edge (BrainPad Inc. ohtaman)

Sparkfun Edge

f:id:misshiki:20190320201415j:plain
Sparkfun Edge

Edge TPU

f:id:misshiki:20190320201534j:plain
Edge TPU
- Edge TPU Devices - Coral | Home - Edge TPU - Run Inference at the Edge  |  Edge TPU  |  Google Cloud

20:30-20:45 LT1:Federated Learningと差分プライバシー TomMoriyama さん

TensorFlow Federated (TFF)

  • TensorFlow Federated: Federated Learningを実装したフレームワーク
  • Federated Learning: 分散した訓練データを協調的に学習する手法
  • AndroidスマートフォンのGoogle Keyboradで入力候補を提示するモデルを学習する事例(※概念検証中)
  • 従来の機械学習では、データをサーバー1箇所に集めて学習していた。しかしセンシティブなプライベートなデータがあったり、レスポンスが遅いなどの問題
  • 端末上の機械学習では、データが少ななったり、クライアント間で成果を共有できなかったりという問題がある
  • そこでFederated Learning。クライアントで学習したデータをサーバーに集約し(=重みの差分を集計してグローバルモデルを作り)、そのグローバルモデルを各クライアントに配布する、というサイクルを繰り返す
  • ライブラリには2つのAPI: Federated Learning API(上位)とFederated Core API(下位)
  • TensorFlow Federated  |  TensorFlow Federated  |  TensorFlow

20:45-21:00 LT2:tf.keras等のhigh-level APIsについて MasaoTaketani さん

  • 従来のtf.kerasは、小さなモデル構築用で、大規模なモデル構築には向かなかった
  • tf.estimatorは、スケーラビリティを意識したAPIで、分散学習も容易に行えた
  • 新しいtf.kerasは、これまでと同じ書き方で分散学習までをカバーできるようになった
  • データセットのパイプラインはnumpy配列のように扱えるようになった
  • RNNレイヤーの変更: 従来はGPUだとCudnnLSTMクラスを使っていたが、2.0はLSTMクラスだけで使いわけなし
  • tf.feature_columnがtf.kerasにも投入できる
  • tf.kerasでTensorBoardを使うのも1行
  • tf.distribute.Strategy APIでKerasの利便性を保ちながら分散学習できる
  • SavedModel形式でモデルのセーブとロードができる(現在のアルファ版では実験段階)
  • マルチノードで同期:tf.distribute.experimental.MultiWorkerMirroredStrategy
  • TPUでの分散学習: tf.distribute.experimental.TPUStrategy
  • 今後実装される: tf.distribute.experimental.ParameterServerStrategy
  • Distributed Training in TensorFlow  |  TensorFlow  |  TensorFlow

『ここが変だよ、日本のAIプロジェクト』 聴講ノート

※これはセミナー聴講時の個人的なノートをそのまま公開したものです。誤字誤植や勘違いがある可能性があるのでご了承ください。

【緊急開催】キカガク&マスクド・アナライズ共催イベント『ここが変だよ、日本のAIプロジェクト』 - connpass

19:00~19:30 『AIを一つください、という前に』 杉山 阿聖氏(SENSY株式会社 SAILSリサーチャー)

地味で泥臭い

  • 手作業で分類した結果をダブルチェック
  • PythonやSQLのデータの加工
  • などなど
  • 手を汚して少しずつ進めるというのが現実的

各フェーズにおける課題と解決方法

19:35~20:35 『AIベンチャーガチンコトークバトル』 マスクド・アナライズ氏(イキリデータサイエンティスト) & 吉崎 良介氏(株式会社キカガク 代表取締役社長)

AIが、選択肢になる日。

  • 以下、敬称略。
  • マスク:今日はAI導入活用の成功率が多少上がるかもしれない方法について話す。AIベンチャー勤務。お客さんとの窓口として活躍している。
  • 吉崎:エンジニアサイド、ビジネスサイズに分けられる。エンジニアサイドに焦点を当てます。2018年はAzure MLやAutoMLなどがホットになってきた。AutoMLがしたことが、特徴量選択、アルゴリズム選択、ハイパーパラメーターの自動チューニングなど。
  • 吉崎:2018年までのAI事情はどうですか?
  • マスク:うまくいったところはほとんどなかった。良い事例があっても、その裏にはかなりの数の失敗事例がある。
  • 吉崎:成功しているという発表でも、実は局所的だったり裏がある場合も多い。
  • マスク:あとAIやりたいのでお願いします。という丸投げが多かった。
  • 吉崎:契約段階で、発注者との成果物の想定の違いが昔あった。
  • マスク:前処理に時間がかかると試行錯誤する時間が短くなる。説明責任として、もらったお金に対してどういう作業をしたかを示すとよい。
  • 吉崎:法律周りはどうか。
  • マスク:受け取ったデータをどうまで公開するかの契約周りは気にする必要がある。
  • 吉崎:実際に企業でAIは活用されているのか?
  • マスク:あるデータでは、2017年が4.1%、2018年は12.5%。体感ではもっと少ない。理由は単純に予算の問題。
  • 吉崎:活用できていないボトルネックは?
  • マスク:データが部署ごと、部門ごと、データ形式がバラバラといった問題がある。データを集めるための交通整理。AIが役立つかの交通整理が必要。
  • 吉崎:データの整備ができていない。それはどういうことか? まずは教師データと入力変数があるかどうかを明確にすればよい。
  • 吉崎:PoC。期間とか費用とか。
  • マスク:PoCは数百万円ぐらいから始める。
  • 吉崎:ベンチャーだとそれくらい。もっと大きいと桁が1つ違う。
  • 吉崎:人材。まずは社内で育てた方がいい。
  • マスク:採用活動を行ってもこない。
  • 吉崎:AI導入にはROIを測らないといけない。AIをしないとROIは出せない。ニワトリ卵。トップダウンで導入できるならプロトタイプ作成が有効。
  • 吉崎:PDCAサイクルはダメなのか?
  • マスク:製造業の現場などでの改善にはいいけど、AI導入検討ではPDCAの悪いところばかり反映している。DGWA(Do:試す、Go for Broke:当たってくだける、Warm Mind:失敗を許容する暖かい心、ReAction:反応・反響を起こしながら感謝の気持ちを持つ)サイクルがいい。
  • 吉崎:ポジティブループにするにはDGWAはいい。最初の契約の段階でDGWAを共通認識にしておくのが大事。
  • 吉崎:新規事業の場合は、精度のゴールが見えにくい。既存事業の場合は、ゴールが明確になりやすい。ヒューマンインザループ。
  • マスク:偉い人にはヒューマンインザループ。現場の人にはDGWAサイクル。
  • 吉崎:SI開発とAI開発の違いは?
  • マスク:私もギャップに悩んだ。スキルも開発方法も違う。どうやって勉強すれば?
  • 吉崎:社内勉強会をするとよい。キカガクの講座などもトリガーにしてほしい。
  • 吉崎:違いは、精度100%にならないのでテストができないこと。アジャイル的にならざるを得ない。

20:45~21:15 『IoT/AIの利活用におけるデータ取り扱いについて』 小川 貴之氏(弁護士)

  • ビッグデータに関する国の動き:
    • 2017年、未来投資戦略
    • データ契約ガイドライン
    • AIシステム共同開発支援事業(助成金)
  • データに関する法律:
    • データベース著作権
    • 特許を受けた発明
    • 営業秘密(不正競争防止法)
    • 限定提供データ
    • 不法行為
    • 契約(契約不履行)
  • 今後はデータのM&Aが流行する?
    • データ会社と解析会社のジョイントベンチャーを新たに立ち上げる
  • 2013年、JR東日本のSUICAのビッグデータの問題:
    • JR東日本から日立製作所にデータ(※個人の特定はできないもの)を提供。バッシングが起きた
      • 加工が不十分で、特定できるおそれがある
      • 事前の周知がなくて、利用者への配慮に欠けていた
    • 現在の法律に照らすなら:
      • 個人情報保護法に従って、匿名データに加工する。しかしどこまで加工すればよいのか
      • 匿名加工情報用のサーバーを、個人情報用サーバーとは別に用意する必要がある
      • 匿名加工情報をビジネスに使うというプライバシーポリシーをあらかじめ公表しておく

Cloud OnBoard 東京 機械学習講座 聴講ノート

※これはセミナー聴講時の個人的なノートをそのまま公開したものです。誤字誤植や勘違いがある可能性があるのでご了承ください。

期待していた以上に内容が実践的で良かったです。ここでこう悩んでこう解決するのかが分かったので。

プレゼン資料が配られたので、細かなノートは取っていません。気になったポイントだけ箇条書きでまとめました。

  • 探索的データ分析(exploratory data analysis):

    • 「どんなデータがあるのか? そのデータはそのまま使えるか、それとも前処理が必要か?」などを検討・実施していく
  • プレゼンでデモした内容(GitHub上):

  • [操作 Tips]Jupyter Notebook上でのシェルコマンド実行:

    • 行頭に!を入れるパターン
    • セルの先頭行に%%bash(マジックコマンド)を入れるパターン
      • % : 一行を対象
      • %%: セル全体を対象
  • カテゴリー変数と数値変数の違い:

    • カテゴリー変数は、離散的なラベル値。(分類に使える値ということ?)
    • 数値変数は、数値間の差に統計的な意味がある値。(回帰に使えるということ?)
    • どちらの変数でも学習できる場合、それぞれのパターンで学習して、精度が良いものを採用すればよい(あえて一方に絞る必要はない)
  • 人工的なデータ生成:

    • 例えば性別などのデータがあって、運用時に計測不可な場合もあるが、最初の学習段階で「不明」という値を人工的に作成すること
    • 既存データをコピーして「不明」にするのでデータは2倍になる
  • データ分割で年月ハッシュ値を使う理由:

    • 常に固定的なデータ分割できるので、モデルの性能評価を(年度ごとなどで)比較したいなどのときに便利
  • tf.[contrib.]learn を利用したディープラーニング:

    • 素のTensorFlowはフススクラッチで面倒
    • 最上位レベルのKerasは痒いところ(具体的には分散学習)に手が届かない
    • よってtf.learnを使う:
      • 【私見】あれ、tf.learnは非推奨じゃなかったかなと思って調べたらやっぱり非推奨だった
      • High level API for learning (DEPRECATED). This module and all its submodules are deprecated. See contrib/learn/README.md for migration instructions.
      • contrib/learn/README.md at r1.13 · tensorflow/tensorflow · GitHub
      • 代わりにtf.estimatorを使えと書いてある。tf.learnと同様の機能を提供しているっぽい
      • なんで言及なかったんだろう。気になった
  • tf.decode_csv を使ったCSVファイル読み取り:

    • tf.io.decode_csv  |  TensorFlow
    • tf.io.decode_csvが正式で、tf.decode_csvは別名
    • 効率的にファイルを読み取れる。自分で実装しなくてよいから便利
  • train_and_evaluate メソッド:

  • Wideモデル:

    • カテゴリー変数を用いた線形モデルのこと
    • カテゴリー変数は内部的に one-hote表現 に変換される
    • つまり各カラムで 10 のフラグが付く形式になり、これはif文と同じ挙動
    • 要するに、実質的には ルールベースの処理 となる
  • Feature Cross:

    • 日本語訳は分からないとのこと
    • カテゴリー変数同士の相関(AND条件と同じ挙動)を変数として足すことで、線形モデルの精度が上げられる
    • タクシーの頭の出っ張りが「黄色」で場所が「ニューヨーク」であれば、その相関(AND条件)となる「黄色×ニューヨーク」という変数を足すということ
  • Deepモデル:

    • ニューラルネットワークモデルのこと。特に数値変数の場合に良い性能を発揮する
    • Embeddingレイヤーによりカテゴリー変数を数値に変換することもできる
    • 例えば50種類の色がある場合、RGBで表現すればたった3つの数値変数で表現できる。RGBはEmbeddingの一種
  • Feature Cross + Embeddingレイヤー:

    • Feature Crossを行うと変数の数が膨大になる
    • Embeddingレイヤーを使うと変数の数を減らせる
    • よって両方を組み合わせて、変数を増やしつつ減らすという手法
  • Wide & Deep モデル:

    • WideモデルとDeepモデルを結合させて使うこと。いわゆるアンサンブル学習の一種
  • Google Cloud ML のバージョン管理機能:

    • MLモデルのバージョン履歴が残っており、簡単な操作で切り替えられる
    • 新バージョンを全体公開する前に、一部だけに公開して問題なければ全体への公開に切り替える、といったABテストのようなことが簡単にできる

ML Study Jams : Machine Learning 初心者向けトレーニングプログラム 参加ノート

※これはセミナー聴講時の個人的なノートをそのまま公開したものです。誤字誤植や勘違いがある可能性があるのでご了承ください。

2019年2月にGoogleが実施した、

に参加しました。これはその際の内容を覚えておくための個人的なノートです。

無料の QWIKLABS 環境を使って、

  • Cloud ML API: アプリ開発者向け。クラウドAPI。AzureのCognitive Servicesと同様の機能などがある
  • BigQuery ML: データ分析者向け。CREATE MODEL ステートメントなどSQL風で機械学習が行える。SQLに慣れている人やデータ中心で作業する人には便利そう
  • Cloud TPU: TPUを使うと、GPUと同様に機械学習で処理が速くなる

が学べる。

QWIKLABS とは

  • ハンズオンラボを提供するオンライン学習プラットフォーム
  • マイペースで学習できる
  • ハンズオンラボは1つ1つ独立した演習
  • 1つのラボは早いものだと10分程度、長いものでも30分程度で完了できる
  • QWIKLABSのユーザーアカウントは、GCPアカウントとは異なるので注意
  • クーポンを利用することで無料で学べる

Cloud ML API の参考情報

BigQuery ML の参考情報

Cloud TPU の参考情報

演習項目

Cloud ML API

BigQuery ML

Cloud TPU

オフライン勉強会

ほぼ上記の演習項目の自習(もくもく会)でした。でもピザとビールが出ました。

【ML Study Jams 修了記念プレゼント】

7 つのコードラボのうち、4 つ終了された方にプレゼントがあるらしいです。3/3に終わったばかりなのでプレゼントはまだ到着していません。

ABEJA主催 SIX 2019 DAY 1 for Developers 聴講ノート

※これはセミナー聴講時の個人的なノートをそのまま公開したものです。誤字誤植や勘違いがある可能性があるのでご了承ください。

ABEJA主催 SIX 2019 | 2DAYS' AI CONFERENCE : DAY 1 for Developers

DAY 1 14:20-15:00 EngineerからTechnopreneurへ 〜AI時代における21世紀のリーダーシップ論〜

  • テクノプレナーシップ: テクノロジー、リベラルアーツ(未来を洞察するスキル教育。常識からの自由)、アントレプレナーシップ
  • ゆたかな世界を実装する
  • リーダーシップとは(誰も付いてこない状態で自分をリードしてから)フォロワーが現れて、ビジョン(自分の夢がみんなの夢になること)を目指すこと
  • リーダーシップを発揮して見えないものを見えるようにするために、リベラルアーツが必要になる
  • リベラルアーツの本質は、自分は何もので、未来はどうなるかを、自問し続ける姿勢そのもの

DAY 1 15:20-16:00 アノテーションで精度の高い教師データを作成する為に必要な仕組み

  • アノテーションとは、非構造データ(生データ)にタグ付けを行うこと(=アノテーション)で、構造データ(=学習できるデータ)にすること
  • 例えば服の傷をマーキングしたりすることがアノテーション
  • [高品質な教師データ作成サービス ABEJA Platform Annotation](https://abejainc.com/platform/ja/feature/annotation/lp/03.html
  • データセットは、データサイズが大きく、ノイズが少ないものほど、精度は良くなる
  • 精度の高いデータセットを作るには「アノテーションの要件定義」「」「」が大事
  • アノテーションの要件定義: 実ビジネスは犬猫の判断ほど簡単ではない。例えば犬種の分類やイカとエンガワの寿司など。人間でも見分けが付きにくいと、アノテーターも迷うので、精度が悪いデータセットになる
  • 解決案としては、(1)詳細なルール決め、(2)ラベル間引き(和集合は片方だけに寄せる)
  • 画像の解像度や画質、画角、輝度などがバラバラだったり、境界があいまいなものはアノテーターにより結果がぶれる
  • 解決作としては、複数人による冗長性アノテーションで、多数決・平均化・アノテーションごとの重み付けなどを行う
  • 熟練工しか判断できないものをデータセット化する場合の課題: 識別するラベルが細かいなど
  • 解決案としては、(1)画像補正(傷が目立つようにする前処理など)、(2)境界線定義(レベル123ごちにMINとMAXを定義する)、(3)チェックフロー定義
  • マニュアル改善支援: 熟練者の意見をもとにマニュアルを作り、それを初心者に展開する。それでほぼ同等の精度でできるなら、より早くアノテーションできる。それを熟練者がレビューする方が効率的
  • アノテーターの分析: ログをデータベースに蓄積してさまざまな分析を行う
  • 事前推論の機能をリリースしているが、アノテーション作業を、モデルの推論結果がフィードバックされた状態から行える。一からアノテーションするよりもはるかに効率的
  • 事前推論の留意点としては、アノテーション作業が雑になって、モデルの間違いを見逃しやすくなってしまうこと。わざとノイズをかけたダミーで雑になっていないかを定期的にチェックする
  • 自動領域抽出
  • 能動学習(アクティブラーニング): モデルが認識しづらいものを優先的にアノテーションしてもらう仕組み

DAY 1 16:20-17:00 もうブラックボックスとは呼ばせない ~機械学習を支援する情報可視化技術

  • 人はなぜ可視化するのか
  • 情報可視化の用途: 概観、解明、操作、報告
  • 折れ線グラフの見方は、注釈によって注目ポイントが変わってくる(例:Facebookのお別れ数グラフ: Facebookのデータ10000件から明らかになった「恋人達の別れの季節」5つ - DNA
  • 機械学習の運用を完成させるための可視化アプローチを紹介
  • 3つの立場: 普及型、科学的探究型、問題解決型
  • 普及型ソフトウェアの例: Google Facets
  • 機械学習の可視化の基礎研究例(1): CNNによる物体認識過程の可視化
  • 機械学習の可視化の基礎研究例(2): 訓練データのわずかな揺れによりDNNが不正確な予測を生み出す際の内部構造を詳細に可視化
  • 機械学習の可視化の基礎研究例(3): GANが実物そっくりの精巧なフェイクを作り出す過程をGenerator/Discriminatorの両面から可視化
  • 手元にある機械学習の問題を解決するための可視化: データ編集、前処理、モデル構築、学習結果の探索、それぞれのフェーズで可視化することが議論されている
  • これまでの試みについて: 電力管理システムへの異常入力して異常パターンを可視化、回帰分析結果の誤差を可視化、気象と販売との相関を可視化、訓練データのアノテーション状況の可視化

DAY 1 17:20-18:00 Deep Learningの都市伝説と現実

  • ABEJA Arts Blog
  • まことしやかに語られている情報=都市伝説について見分けられるようになるのがテーマ
  • リテール、AI運用、アノテーションなどつらいことだらけ。泥臭いことをやって解決している
  • AI=汎用人工知能? そうではない
  • AI > ML > DL。MLのことがAIとして語られることが一般的
  • 現状で最も実用的なMLは教師あり学習
  • 高度な知能 > 意思決定 > センシング。教師あり学習はセンシング~一部の意思決定まで。現在実現できているのはごく一部
  • 人間は賢い。AIはスケールできる。両者には得意分野があるのが現状
  • 賢くAIを使うのが賢い
  • ビッグデータ+ディープラーニング=勝利の方程式は本当か?
  • 収集、アノテーション、学習、評価、運用という流れにそって情報は欠落するが、できるだけ上流で欠落させないことが重要
  • ノイズのないクリーンなデータで学習した方が精度が高くなりやすく、過学習しいくい。つまりアノテーションの精度が大切
  • 例えばVGG Face Datasetはかなりクリーンなデータセット
  • ビッグ「クリーン」データ+ディープラーニング=勝利の方程式 が正しい
  • アノテーションは簡単ではない。ぶれるのが当たり前
  • タスクや人間を理解したうえでアノテーションをした方がいい
  • 半教師あり学習: 少量の教師ありデータと大量の教師なしデータから学習する。Temporal Ensemble(TE)、Mean Teacheraなどの方法がある
  • データ自体が少ない場合:転移学習、事前学習など
  • BERT: 言語理解タスクでの新しい強力な教師なし事前学習手法
  • GPT-2: クリーンで多様なデータで巨大な言語モデルを教師なし学習
  • ImageNet(画像データセット)はテクスチャー依存になっている研究論文がある。汎論として、ImageNetの事前学習は精度向上には役にたたないが、安定性いは貢献するという論文もある
  • アノテーションを先にした方がいい。事前学習をしよう
  • AIによるパラダイムチェンジ: 人間が明示的に定義できなものでさえ、実装できる
  • AIを使わない理由はない。正しい技術を正しく使って差別化しよう
  • Taskonomyという論文。タスクの分類体系。タスクの相関関係を学習することで未知のタスクにも適用できるかもしれない
  • 3B: Big Task + Big Clean Data + Big Deep Learning

Google ColaboratoryのRAM(メモリ)とディスクの残量表示

今日、Google Colabを触っていて気付いたが、RAMとディスクの表示が増えた気がします(以前はなかったよね...?)。

f:id:misshiki:20190225140604p:plain
RAMとディスク

この表示は「ホスト型ランタイムに接続」している場合だけかもしれません(※「ローカル型ランタイムに接続」は試していません)。

これによると、

  • RAM: 12.72GB
  • ディスク: 48.97GB

という容量になっています(※あくまで今回。時期や状況によって増えたり減ったりする可能性があります)。容量面での制限を意識する際の参考になりそうです。