# MLSE2019
- 2019.07.06-2019.07.07
- Colony箱根
- https://mlxse.connpass.com/event/121086/
## 【企画セッション】 新しいプログラミングパラダイムとしての深層学習
### 計算機科学から見た Deep Learning
https://www.slideshare.net/MLSE/ss-154452927
- https://www.lambdanote.com/
- Software 2.0
- いままで: 人が頑張ってプログラム書く (知識空間の一部を点推定してコーディングしていく)
- これから: プログラム集合を探索することで課題に適したプログラムを探索できるようにする
- テストファーストが流行っているので、テストからDeepLearningを使ってプログラムを作る
- 仕様 = テスト?
- 空間を定義できるようなUTを書くので死にそうだけど
- 仕様
- ホーアの三つ組
- {入力:前提条件} プログラム {出力:事後条件}
- 例: {入力は有効な西暦の日付} 曜日の計算 {出力は入力された日付の曜日}
- 仕様とプログラムのセットで考える
- software 2.0の世界では...
1. P(前提条件)とQ(事後条件)を内包的に定める
2. {P} [c] {Q} を統計的に満たすプログラム空間[c]を設計
3. {P}と{Q}のペアを外延的に記述する具体例(テスト)を収集、構築
4. にゃーん。。。たぶん上記を使って学習して[c]を求める…?
- comment. タスクの定義は人手でラベリングするのかな(日付タスクとか)
- comment. {P} {Q}を設計するのがプログラミングの工程の大半を占めるきがするけどなぁ...
- :tashikani: 質問しましょう!
- comment. プログラム自動生成というか自動選択するという話に見えるが、要件満たしているとテストだけでわかるのかな。。。非機能要件が〜とか言われてしまいそう。
- メタ戦略
- {P,Qに関する条件} [m:メタ戦略] {cが満たすべき条件}
- メタ戦略(m)には人間も含まれる?
- m(P,Q,{E})->{c],{(i,o)},t->c
- m(P,Q)->{E}->[c],{(i,o)},t->c
- よくわからなかった... HagiyaTripleらしい。
- {E}はいいエンジニアの集合, いいエンジニアを見つけてくれば、いいプログラムができる(!?)
- comment: 解きたい課題って、いわゆる普通のプログラムの話なのかな。特に機械学習だとか深層学習ではなく。機械学習を用いて、プログラムを生成。。。方法はまだ構想・妄想してる、という段階。
- a
- Cのプログラム集合はカウンタブル!(うける)
- 数え上げお姉さん! :soon: 組み合わせ爆発
- Neural architecture search 自体のハイパーパラメータ探索問題とか発表しても良かったな
- DNNは決められた空間の中を探索するので、直接C言語の構文を探索するのは現実的ではない
- 人間は常にその空間プログラムを選んでいる
- 今はこれはCNN, これはLSTMという風に人間の知見が必要だが、将来的には自動で(?)やってくれる世界が来る
- network architechture 決まればパラメータ探索空間は有限
- comment. このセッション、何したいのかな。。。
- 話がいろいろ混ざっている気がしてつらい
- 登壇者のバックグラウンドが全然違う気がするのよね。
- ゴールがよくわからないから、聞いててつらいのかもな。。。
- プログラミング工学からみると、ディープラーニングの方法論は全然できていない
- プログラミングはオブジェクト指向とかいろいろ積み上げてきた歴史がある
- ディープラーニングは謎の知見に基づいている?
- プログラミング工学も色々あるが、なんかうまく行ってるように見えるような見えないうような。。。
- とりあえず人を集めてそれなりに動くプログラムが日々量産されているので、とりあえずは成功しているような気はしている
- とりあえずメタ
- そもそもP,Qとかをどう記述するかといった言語設計(?)が必要
- comment. その通りだとおもうがとてむつかしそう
- 解きたい問題をどのように定義するか。。。というあたりが難しい気がする。
- 現実のプログラムを数式のようなきれいなIn/Outで定義するのはとても労力がかかりますからねぇ...もっと上位のレベルで定義できればいいが...
- MLは入出力にも鮮度があるから大変そう
- 統計に落ちない問題があるので難しそう
- 過去のデータから導けないものとか
- comment. そんなのあるのか...?
- comment. マルチタスク学習とか模倣学習の枠組みで外挿的な学習はできるのだろうか
- comment. プログラムがなんで良いか示せないという話だが、人が普通に書いてるやつもいいかなんてわからないし、だからテストしてるんじゃないのかな。
- 理解
- モデルの説明可能性とかあるが、理解する必要があるのかどうか、理解できるモデルとしてしまうと逆に制限となるのではないか
- 物理的な挙動は理解することにより、新たな発見や応用につながるが、モデルを理解して何か意味があるんだっけ?
- 自動運転とか説明責任がある領域だと、理解する必要というよりも理解"しておかないと"という問題がありそう(社会的な責任問題なので、機械の判断は絶対だよね、というのが常識になれば無理に理解しなくても良くなりそう)
- 画像の分野は昔からSIFT特徴とか使ってSVMかけてる時点で理解できないので、画像の分野は理解できなくてもOK~という認識はありそう
- comment. 学習のテクニックの積み重ねはあるけど、計算コストが安くなったことがでかいよなぁ
- 実データで学ぶ人工知能講座(宣伝!)
- 東大 萩谷先生
# 発表セッション1
## なぜ機械学習プロジェクトはPoC で終わるのか - アンケート調査: 石谷 規彦, 坂本 竜太, 定塚 和久, 長柄 昌浩, 吉岡 信和
https://drive.google.com/file/d/1bOrnF6WEtmreYnPQrSbp2rySpZm-Q-oJ/view
- モチベーション: PoCの話はたくさんくるが、次につながらない
- 参考になった資料
- MLSE2018論文集
- 失敗しないデータ分析・AIのビジネス導入(ブレインパッド)
- https://www.amazon.co.jp/dp/4627854110/
- データサイエンティスト育成読本ビジネス活用編
- 電通大データアントレプレナープログラム講義
- 事例の集め方
- アンケートしてみた
- 社内とかで集めようとしたが、出せない。。。(そりゃそうだ)
- 55件の回答
- PoC 30件が次につながり、6件が次につながった
- 依頼者:コンセプトが役立つことが実証できなかった事例が多い
- 企画者:PoC実施中に周囲の状況変化によりビジネス価値を失う事例が多い
- PoCを次に繋げるための鍵
- 現状: ほとんどがプロジェクトマネジメント関係
- 目的・それをはかる指標・人の確保、あたりかなまとめると。方式の妥当性もか。(必ずしも機械学習である必要性がなかったりする)
- 5年後: プロマネ+アルファ
- データ収集、品質、ツール発達
- プロジェクトマネジメントとデータ収集が大事
- 本になってないだけで、日本でもリクルートとかノウハウたくさん持ってるだろうし興味ある
- その他
- ハイルマイヤーカテキズム
- ビジネスアナリティクスで十分ではみたいな
- AI予算消化は草
- 欲しいのはプレスリリースって、どこかでも聞いたような。。。
- 機械学習プロダクトを買う側の思うところを知りたい
- ML案件の予算取りの方法論は? KKD!
- ブレインパッドの本はよさそう
## Facebook/Ax: Adaptive Experimentation Platformの解説: 野村 将寛, 芝田 将 (Cyber Agent)
https://github.com/facebook/Ax https://ax.dev/
https://drive.google.com/file/d/1iWE6CgFoZUWfk1MwKsJDGAdU5bLOZnqM/view
- ベイズ最適化の説明(予稿見ればよいか)
- Facebook/AXの説明
- 使い勝手
- Optuna: TPEなので、ガウス過程のほうが適している問題もある
- Optunaのほうが簡単に使える
- Ax: ハイパーパラメータ探索よりも大きな問題を扱えるので高機能だけど、使うのがむつかしい
## ハイパーパラメータ最適化における実用的な早期停止アルゴリズムの考察: 芝田 将, 野村 将寛 (Cyber Agent)
https://drive.google.com/file/d/1IQaoZMbGHqUb1JWRTX0sGGlW7HPIIa8w/view
- 早期停止
- 他のパラメータと比べて、今後探索を進めても(epochsを進めても?)精度の向上が見込めないパラメータの探索を停止する
- Successive Halving Algo などなど
- Successive Halving
- 中間結果を得るために同期する必要があり、非同期環境では使いづらい
- Asynchronous Successive Halving (ASHA)
- 全部の中間結果がそろわなくても、結果が良いパラメータに関しては、探索(epoch)を進める
- 中間結果を出力するのが遅かったパラメータほど不利になり、次の探索に進めなくなる場合があるが、実用上は問題ないという割り切り
- 早期停止に対応しているライブラリ
- Optuna
- ASHAの実装が論文と結構違う
- 枝刈りが結構アグレッシブ
- comment. 中断再開が出来ないから枝刈りがアグレッシブになるという話に聞こえたけど、プレゼン中にあったASHAの説明では中断再開は必須でないように感じた。あとで調べてみよ。
- https://github.com/ray-project/ray
- Asynchronous Hyperband
- APIがちょっと使いづらいらしい
- 途中状態を保存・復元するコードが必須
## 分類ラベルからのセグメンテーションタスクの学習に関する考察: 伊藤 優(三菱ケミカルHD)
https://drive.google.com/file/d/1oN68YoIX0ZMQPolO5NC8aVzAtoPJxATJ/view
- くる前に箱根をさまよったらしい(情報量なし)。半笑いな発表はちょっときになる。。。
- 社内(グループ内??)でたくさん分析したいという話はあり、必要に応じて分析しに行くような部署にいるらしい。(https://en-gage.net/mitsubishichem-sys/work_247619/)
- 細胞のセグメンテーションタスクを解きたい
- だけど実際はサンプリング検査を実施している
- サンプリングして中央に映る組織の種別をカウント
- 1000枚ぐらいやれば分類できる
- 分類ラベルからセグメンテーション学習に転移学習とかできるか?
- comment. ブルートフォースで各点を分類すればセグメンテーションできるが、性能的な問題でできないのかな?それともそもそも制度が出ないのかな => 既存手法とし検討済みっぽい(sliding window)
- 既存手法: sliding window, crf, TextonBoost
- 煩雑だから採用しないとかいう雑な理由だった
- 何か問題あるから、新たな提案ではないのか。。。
- ヒートマップだと、ぱっと見でわかりやすい(説明しやすい)ってのもある??
- sliding windowのとき各ピクセル毎に異なるモデルが必要だと誤解している…?
- 単に計算効率とか言えばいいものを…
- 提案手法: 説明ヒートマップによる手法
- Grad-CAM
- UNetとか使わないのかな https://blog.negativemind.com/2019/03/15/semantic-segmentation-by-u-net/
- もともと細胞の分類用に力を発揮するやつなんですね
- UNet自体は結構色んな所で使われてて、PaintChainerとか、曲のBGM抜き出しとかでも使えます(UNetはFCN(VGG family)の改善ですね。、クラス分類とかだとResNetが強いですが、こういうタスクに対してはVGGベースの手法が結構使えたりします
- なるほど
- 比較 (既存手法とU-NETも比較しているっぽい :soon: なるほど)
- 32x32にきって真ん中の1pxを正解ラベルとして分類
- UNetつおい、推論速度もUNetのほうが早いんじゃないかな(畳み込みするだけだからSliding Windowいらない)
- comment. 畳み込むだけってUNetすごい...出力をどういう方式にすれば任意の複数個のセグメントを表現できるのか気になる
- 各ピクセルでマルチクラス分類みたいな感じですね
- https://qiita.com/tktktks10/items/0f551aea27d2f62ef708
- なるほど~
- というかSlidingWindowにまけとる
- 手法に合うデータセットで評価していない??(そんなことはないのか。。。)
- 社内のデータセットでも評価しているらしい。現場とは精度を上げないとという話になっている。
- たくさんデータ使えるのいい話
## ディープニューラルネットワークのモデル特化ハードウェア合成コンパイラ: 高前田 伸也, 藤澤 慎也, 藤崎 修一
https://drive.google.com/file/d/15asqpTN4OPX_RmhpDzMIM5ecfeWRX1mR/view
- コニカミノルタというのが意外
- 趣味でやってるとかいうてた? (大学だし?)
- 機器たくさん売ってるので特に違和感は感じなかった(医療機器とか作ってるし)
- https://www.bizcourt.space/bizmarket/2019/01/post-45.html FPGAとか半導体も強いらしい
- ASICよりも低コストなFPGAで推論したい
- モデルごとに回路設計が必要 => 自動化する
- SoC型のFPGAをよく使う
- CPUとFPGA、DRAMが載ってる
- comment. 家に転がってるけど活用してないな...
- 本気で遊んだら楽しそう。
- 実際はFPGAの回路は以下の機能を乗せるのでDNN回路規模は限られる
- SoftCPU
- カメライメージ処理
- モーター制御
- GPIO
- 高効率(回路規模が小さい)DNN-HWをFPGA上に手軽に実現したい
- Verilog HDL/VHDL: 無限の人月があれば可能
- 高位合成:最適化辛い、思い通りの出力が出ない。そもそもCつらい
- DNNコンパイラを活用: 現場はポータブルじゃない。というかコンパイラが複雑すぎて理解するのも辛い
- => 簡単にかけてカスタマイズ可能な合成ツールを開発中
- 方針
- ユーザのモデル記述からDNNハードを自動生成
- ベンダー高位合成ツールに依存しない
- OSSのveriloggenを活用
-
- NNgenを提案
- comment. あれ?推論だけじゃない?重みどこから持ってくるのだろう
- 多分TFの学習済みモデルから読み込むのでは
- それならPythonコードを書く必要すらない気がするけどなぁ。。。(確かに)
- ONX?とかクロノスのモデル表現ファイルを入力とすればよさそう
- 学習までやってくれる想定なのかな(学習と推論だと必要な機能は違うけど・・・
- 回路規模的に外周は無理だと思うんですよねー説明も推論だけっぽいし
- 予稿見ても推論のみっぽく、フレームワークで組んだやつ自動手で持ってきたいっぽいことが書いてあった。
- 重みはDRAMに乗せて初回にフェッチするとかそういう共通的な実装で回路には影響しないのかも
- 去年の資料 https://www.slideshare.net/shtaxxx/20180917reconf
- 回路規模的に整数4bitなのかな? -> 整数でした
- 回路規模の調整は手動で属性を指定する感じ
- ここを自動化すると素敵なのにー
- コンパイラ作るの簡単なのでみんな作ろう!
- ONNX対応予定!
- LeapMindとかは違うのかな
- https://twitter.com/rui_mashita/status/1053109516856786944?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1053109516856786944%7Ctwgr%5E393039363b74776565745f6d65646961&ref_url=https%3A%2F%2Fleapmind.io%2Fblog%2F2018%2F10%2F29%2Fblueoil_leapmind%2F
# 招待講演: 機械学習モデル理解のための説明法(阪大 原先生)
資料はこの辺の流用らしい: https://www.slideshare.net/SatoshiHara3/ss-126157179
- 説明に対する社会的要請
- https://www8.cao.go.jp/cstp/tyousakai/humanai/4kai/siryo1.pdf
- 代表的な説明方法
- 重要な特徴の提示
- 重要な学習データの提示
- 自然言語による説明
- モデルの可読化
- nadonado
- 説明は一般に高コスト
- 論文はうまくいった事例だけPickupしてる可能性あり
- 人手: 手元のデータや手法での追加検証が必要
- お金・時間: 計算リソースも必要
- リスク: 誤った説明もありうる
- 代表的なアプローチ
- 局所的な説明
- 特定の入力に対するブラックボックスモデルの予測の根拠を提示することで説明
- 根拠となった特徴量を提示: LIME, SHAP, Anchor
- 根拠となった訓練データを提示: influence
- ある訓練データがなかったら、テストデータに対する予測はどれくらい変わるか?という分析をする
- 学習結果のモデルパラメータの差分を見て評価する
- 愚直にやると計算量が辛いので、影響関数(ロバスト統計の概念)を使って近似評価する
- Data Poisoning
- Understanding Black-box Predictions via Influence Functions: https://arxiv.org/abs/1703.04730
- 改善アクションの提示
- モデルの出力を特定のクラスに変えるための改善アクションをユーザに提示する方法
- https://github.com/arXivTimes/arXivTimes/issues/471
- Generating Visual Explanations, ECCV16
- 大域的な説明
- Born Again Trees
- Making Tree Ensembles Interpretable: A bayesian model selection approach
- アンサンブル木の識別境界を数個の単純なモデルで近似することで説明可能にする
- 深層学習モデルの説明
- "コンセプト" による説明
- あるコンセプトに関連するベクトルを定義し、そのベクトルに沿ってなにかのコンセプトを変化させることができるか(Disentangleにできるか)を見て解釈する
- 原先生の研究
- 機械学習モデルの列挙
- 納得のいくモデルを一つ探すからむつかしい。いいモデルを複数見つけてユーザに提示すれば、ユーザが納得する説明性のあるモデルがあるのでは
- https://aaai.org/ocs/index.php/AAAI/AAAI17/paper/view/14304
- https://aaai.org/ocs/index.php/AAAI/AAAI18/paper/view/16343
- https://github.com/sato9hara/LassoVariants
- 説明可能性は必ずしもユーザの納得感に直結するわけではない
- 説明可能性の悪用
- https://arxiv.org/pdf/1901.09749.pdf
- モデルのアウトプットをそのまま出すと炎上する可能性があるので嘘の説明をする可能性がある
- この論文では悪いアウトプットが出せるモデルを作っている
- 意図的に都合の悪い説明変数の影響度を低くすることができる
- 機械学習モデルの列挙と同じ方法で、たくさんモデルを作って、その中から悪い説明が可能なモデルをピックアップする(意図的に悪い説明変数の影響度を低くするのではなく、影響度が低いモデルを選ぶ)
- チートしているのを見抜く方法はない?→まだない
- 説明可能性に期待されるもの
- 想定外の動作をしないようにしチア
- 変な挙動をしたときに原因を知りたい
- 性能向上したい
- 安心したい
- AIの性能向上したい→そもそも性能向上したいなら人間の解釈はいらないのでは(arxiv)
- データの質を上げる(Noisyなデータを抜くとか)
- ドメイン知識が必要でだるい→自動的にやりたい
- モデルを変える
- Deepでだいぶ楽できるようにはなった
- データクレンジング
- データを取り除いたときのモデルの影響度を計測し、悪いやつを抜くという単純な処理
- influenceの拡張で悪い影響を与えているデータを抜く
- SGDで学習するモデルを対象に先行研究(Hardな仮定が必要)を改良
- データの知識が無くても、ごみデータを抜ける
- Sanity Check, NeurIPS 2018
- モデル破壊したときのAttentionMapを使って良いのかをちゃんと評価する必要がある
# 発表セッション2
## 機械学習活用に向けた解釈手段の比較考察: 太田 裕一, 北野 健太, 早川 芳昭, 石川 冬樹
https://drive.google.com/file/d/1eZqt-_y6LlFD1ZBTPuPnSFGapPFh4QQa/view
- 招待講演と同じモチベーション(発表するのちょっとかわいそうw)
- つれぇ・・・って昨日言ってましたw → ですよねぇ。。。
- クレジットのデフォルト予測で試して見た
## 科学的説明を持つ機械学習システム: 橋本 順之
https://drive.google.com/file/d/17k_Z8hNqp4kgDcqyoJTbu01MV25sHhFE/view
- 背景:なぜ説明が欲しいか?
- 機械学習に対する期待と不安→ガイドライン→説明いる
- 説明とは?
- 解釈性、科学的説明、心理学的説明、説明責任
- 科学的説明にフォーカス
- 提案手法
- モデルを作って、その出力で答えと説明
- 上記の説明から入力例を作って、もう一度モデルを使って予測して、答えが元のと一致するか?というのを見るらしい。
- これで、異なる答えになったらそのモデルはいまいち、と判断できるのではという仮説でやっているっぽい。(多分)
- 上記を実現するAPIを考える(インタフェースだけ…?
- comment. 今一歩この手法がいいのがわかんないけど。。。質疑が厳しめ。。。
- comment. 演繹的に説明するらしいけど、入力生成器という謎のオラクルを仮定したりしていて、よくわからない...
## 機械学習システムの動的な保証のための支援ツール開発:小池 湧大, 松野 裕, 石川冬樹
- https://drive.google.com/file/d/1qyUy__mx8GZA7LDwDlTemgHzqPGDAgHB/view
- アシュアランスケース
- システムの安全性などの保障のためのドキュメント
- テスト結果や検証結果をエビデンスとしてそれらを根拠にシステムの安全性を議論し、保証
- 木構造(論理構造)を積み立てて安全性などを説明する
- 機械学習は帰納的なシステムなので網羅的なテストをすることが極めて難しい
- 認識対象となる全ての事象に対するテストケースの用意は現実的ではないし、想定外は起こりうる
- D-Caseを用いる
- http://www.dcase.jp/p/jintro1.html
- 使うの難しそう
- 機械学習システムは証拠にならないので、モニタリングを通して、精度N%だから…というので証拠とするらしい…(運用時に継続的に監視)
- comment. 人が議論を網羅することで保証するってそもそも無理げーかん
- comment. 普通のシステムも安全性保証とか仕切れてない気もしており、難しい気しかしないが。。。
## 機械学習ソフトウェアシステムの環境変化適応の課題とアプローチ: スマートフォンのナビゲーションアプリケーションを例として: 田中 優之, 青山 幹雄
https://drive.google.com/file/d/1LF0p6lbeJHu-OUS12_M78SN-vx4fjwLE/view
- Yahooカーナビの話
- GNSSが届かない場所(トンネルとか)で位置推定をし続けるための課題を解いている
- 停止(1km/h以下)、走行状態(3km/h以上)の二値分類
- カルマンフィルタとかなじゃくてSVMなのか
- hitoe姿勢推定と同じような特徴量だっ
- 位置情報は特徴量にしてないのかn
- comment. GNSSが届かないところだし最後にGNSSを受信した地点の位置情報はあまり意味がないし?
- comment. 加速度となると、路面の振動とかが特徴量となる感じなのかな?必ずしも車が加速しているとも限らない?でも同じ速度でも加速度センサは振れるか
- 長時間届かないのはアクアラインとか高速のトンネルとか限られた場所だけだし事前情報だけでいいのか
- モデルを常時再構築し続けて、最新の環境に対応している
- comment. 予測の有用性に対して頑張りすぎ感がすごい…振動なので高級車ほど振動しないとかはありそうだし、スマフォにモデルを作るので毎回異なる車というのもありえるし、舗装・砂利道といった環境変化もあるのは分かるが...
- CarPlayという新たな利用方法の登場
- Yahooカーナビ on CarPlay は 2019.04にリリース
- これまでは車載ホルダにスマフォを固定していることを期待してモデルを作っていた
- CarPlayだとスマフォは座席横などに配置するので、GNSS取得がより不安定になり、目的変数の速度値の信頼性が課題に
- 常時モデルを更新するため、教師データのラベルの信頼性
- comment. 結局は担当者変わるし、アプリの改良とか保守が大変だよねという話の機械学習モデル版っぽい
- 実データとるの大変といっても、カーナビアプリのテストも実際にお外に出ないといけないし、あまり変わらない気がするし
- Yahooの平均勤続年数は3年だし確かにノウハウたまってそうだけどw(質問に対してのコメント)
## 為替レート予測における機械学習システムのモニタリング手法の検討: 北野 健太, 石川 冬樹
https://drive.google.com/file/d/1blJ_-4zw70eexc880m5lQWTypi_nK1AL/view
- a