MLSE国際シンポジウム

丸山＠PFNです。

[日本ソフトウェア科学会](https://www.jssst.or.jp/) [機械学習工学研究会](https://sites.google.com/view/sig-mlse/) (略称MLSE、「メルシー」とお読みください）は、機械学習システムの開発・運用にまつわる生産性や品質の向上を追求する研究者とエンジニアが、互いの研究やプラクティスを共有し合う場として活動しています。2018年4月の立ち上げ以降、既に20回以上のイベントを行い、活発に活動しています。

先月11月18日には、[機械学習工学研究会（MLSE）国際シンポジウム](https://sig-mlse.wixsite.com/symposium2019)を開催しました。実はこの週の前半、日曜日から木曜日にかけて、機械学習工学に関する[湘南会議](https://www.nii.ac.jp/about/international/shonanmtg/)が開催されていて、そのために来日している海外の著名な研究者に講演していただこう、というのがこの国際シンポジウムの趣旨でした。しかし、土曜日深夜に台風19号が関東地方を直撃した影響で、多くのフライトがキャンセルになり、湘南会議の参加予定者も、土曜日から日曜日にかけて来日予定の方々が来日できなくなりました。このため、シンポジウムのプログラムも大幅に変更せざるを得ず、多くの皆様にご迷惑をおかけしたことを、お詫びいたします。

![IMG_0071.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201262/8ea37e03-c6b9-d8eb-cc89-a9d3dbbc7ac2.jpeg)


プログラム全体と、そこでのスライドはシンポジウムのサイトを見ていただくとして、ここでは、2つの招待講演と最後のパネル討論についてご報告しましょう。

# 招待講演

この国際シンポジウムで一番迫力があったのは、自動運転など安全な機械学習応用システムの研究をしている、UC BerkeleyのSanjit Seshia教授による招待講演[Towards Verified Artificial Intelligence](https://www.nii.ac.jp/about/international/shonanmtg/)でした。残念ながら彼は台風19号のために来日できず、急遽テレビ会議による講演だったのですが、非常に良い内容だったと思います。彼の主なポイントは、下記の2点だったように思います。

1. 機械学習応用システムの検証は、システムレベルからスタートすべき。
    機械学習応用システムは、たとえば自動運転における画像認識モジュールなど帰納的なモジュールを含んではいますが、その精度はすべての点について同様に重要であるわけではありません。進行方向前方の路面にない物体、たとえば路上にない自動車（周囲の敷地内に駐車している自動車）が正しく認識できなくても安全性には影響ありません。そのため、システムレベルの安全性に影響を与える領域についてのみ、帰納的モジュールの検証を行うべきです。

2. オラクルに基づくテスト。
これはテストの網羅性を担保するために、様々なシナリオ（天候や他の車両の状況など）を確率モデルとして生成し、そこからのサンプルを利用してテストをする、という意味です。このためのツールとして、[Scenicという確率的プログラミング言語](https://github.com/BerkeleyLearnVerify/Scenic)が用意されています。下のシナリオ（講演スライドより抜粋）では、前方に停まっている車が、様々な角度を向いている、という状況を生成しています。

```
from gta import Car, curb, roadDirection
ego = Car
spot = OrientedPoint on visible curb
badAngle = Uniform(1.0, -1.0) * (10, 20) deg
Car left of (spot offset by -0.5 @ 0),
    facing badAngle relative to roadDirection
```


統計的機械学習は実際に起こりうる事象の確率分布を仮定しますが、このシナリオ生成言語では、実際にはめったに起きない事象でも安全上重要だと思われるものは積極的に生成する、というもので、プラグマティックで大変面白い考え方だと思いました。

もちろん、これだけで安全性の問題は解決されるわけではありません。問題は、どれだけのシナリオをカバーすれば安全だと言えるのか、ということで、フロアからもそのような質問が出ていました。いわゆる”unknown unknown”をどのように扱うか、という問題ですが、これは人工知能における未解決問題であるフレーム問題に相当するもので、当分解決はされないでしょう。

もう１つの招待講演は、[日本マイクロソフトCTOの榊原さんによる講演](https://drive.google.com/file/d/1Dey1u2owFEW36u-9c7MoFdqvDpC4nSGc/view)で、機械学習時代におけるエンジニアの責任についてのメッセージでした。機械学習応用システムにおいては、その働きが理解しにくいため、うまく使わないと公平性や包摂性（インクルーシブ、すなわちすべての人を対等に扱うこと）などの社会規範に抵触するような結果が得られてしまうことがあります。たとえば、統計的機械学習に基づく機械翻訳システムでは、原語で性別が指定されていないときに、医者に対する3人称代名詞を”he”、看護師に対する3人称代名詞を”she”としがちです。これは、元々の訓練データに”he”と	“doctor”、”she”と”nurse”の組み合わせが多かったためと考えられますが、このように性別と職業を結びつけることは不適切です。機械学習時代のエンジニアは、このようなことにも眼を配っていく必要があります。

榊原さんの講演のもう１つのポイントは、強化学習において、いかに先験的な知識を利用するか、でした。例えばマイクロソフトが研究している”Machine Teaching”という手法では、機械をゼロから訓練するのではなく、問題を人間が簡単な部分問題に切り分けて、簡単になった部分問題を個別に機械学習で解く、という考え方です。人が持つ先験的な知識を使って強化学習を行うもう1つの方法は、よく知られているシミュレータを使う方法で、マイクロソフトも[Airsim](https://github.com/microsoft/AirSim)というオープンソースのシミュレータを提供しています。

どちらの講演も、人が持つ先験的な知識に基づくプログラミング（演繹的プログラミング）と、データに内在する経験的知識に基づくプログラミング（帰納的プログラミング）をどのように組み合わせるか、という、より抽象的な問題を捉えているのだ、というのが私のもった感想でした。

# パネル討論
パネル討論は、九州大学のLei Ma教授（機械学習応用システムのテスト）、英国オープン大学のAmel Bennaceur教授（協調的に作られるソフトウェア）、マイクロソフト榊原さん（ソフトウェア工学全般）、モントリオール大学Foustse Khomh教授（機械学習応用システムのデバッグ）、それに独Clausthal University of Technology大学のRuediger Ehler教授（組み込みシステム検証）の6人によって行われました。私（丸山）はモデレータでした。

![IMG_0091.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201262/62df63db-ead0-37c9-3c01-c1a689a82d91.jpeg)


私の印象に残ったのは、次の3点です。

1. 機械学習応用システム構築の難しさは仕様を訓練データセットで表現すること
システム構築全体のステップを、1) 要求定義、2) 訓練データセットの準備、3) モデル構築、4) システム統合、5) 運用に大きく分けたとします。お客様が持っている「期待値」と、「実際にシステムが行うこと」には常にずれがあるわけですが、この「ずれ」に一番寄与するステップは何か、という質問をパネリストに投げてみました。皆さんのコンセンサスは、2）の要求を訓練データセットに落とすところで、期待値からの誤差の多くが生まれるということでした。榊原さんはさらに、このためにはデータをどのように収集し準備するか、という「データのアーキテクチャ」に関するノウハウを溜めていかなければならない、ということを強調されていました。

2. いかにうまく修正ループを回すか
機械学習応用システムの開発は本質的に探索的です。すなわち、実際に作ってみないとうまく動くかわからないので、作ってみて修正する、という修正ループを素早く回す必要があります。このためには、十分に強力な計算環境を用意してハイパーパラメターサーチを素早く終える、ということも必要です。昨年の第1回のMLSEシンポジウムで、アクセンチュアの工藤さんが「機械学習プロジェクトの7ステップ」を示したとき、7番目の最終ステップが「ジョイントベンチャーを作ること」だったのは、この修正ループを素早く回すことを言っていたのだと思います。修正ループの度に、ユーザー企業とベンダー企業が契約を結び直すのでは、素早く回すことは不可能だからです。

3. 機械学習で解くべき問題かわからないときは、まず機械学習を試してみること
逆に、これは昨年のシンポジウムで有賀さんが「演繹的に解ける問題に対して機械学習を用いるべきではない」とおっしゃっていたのと対照的です。機械学習のための環境が整備されてきているので、訓練データさえあればまずは機械学習にかけてみるのは比較的簡単です。そこで、わかりやすいパターンが見えれば、それをルールベースに置き換えることによって、より検証しやすいシステムを作ることができます。もし、わかりやすいパターンが見えないのであれば、それはそもそもルールベースに向かない問題だということになります。

#おわりに
今回、MLSEとしては初めての国際シンポジウム開催でしたが、いろいろ気づきの多い1日となりました。台風の影響でプログラムが変更になるなど、参加された方にはご迷惑をおかけした面があるとは思いますが、シンポジウム後の意見交換会も含めて、内容的にはご満足いただけたのではないでしょうか。

[このアドベントカレンダー](https://qiita.com/advent-calendar/2019/mlse)は、クリスマスまで続きます。MLSEで活発に活動されている方々がいろいろ書いてくださいますし、まだ空きがあるところは、皆様も是非書いてみてください！