こんにちは。R&D Divisionの山本です。先日、劇場版SHIROBAKOを見たので今回は機械学習のKUROBAKO(ブラックボックス)について書きたいと思います。
さて、みなさん『機械学習』してますか?
私はちょくちょくしているのですが、予測モデルの精度検証を行っていると、想定と全く異なる予測結果を吐き出して「どうして……」なんて思うことが多々あります。
一般的に予測モデルの中身というのはブラックボックスになっています。具体的にどういうことかというと、予測モデルに画像データを渡して写っているものが何かと訪ねたときに、『お茶』という回答はできるのですが、なぜお茶だと判断したかの説明はできません。この判断処理がブラックボックスになっているのです。
このブラックボックスの中身をどうにかして暴こうというのが今回の話です。
この記事は3~4部構成を予定しており、今回の第1部は概要編になります。次回の第二部はAzure Machine Learning Serviceの機能を最大限利用した実践編1を予定しておりますので、ぜひお付き合いください。
ブラックボックスを暴くことの意味
ここからどうやってブラックボックスを暴くのかを解説していこうと思いますが、一歩戻って、ブラックボックスを暴くことは本当に必要なのか考えてみましょう?
例えば、間違った予測ばかり行うモデルのブラックボックスを暴くことで、自分が思っていたデータの特徴と機械が思っているデータの特徴の差がわかり、開発がスムーズに進むかもしれません。
しかし、このモデルがほぼ100%正しい予測をするモデルだったらどうでしょうか。結果が正しいならその過程などどうでもいいと思いませんか?
システムにとっては過程などわりかしどうでもいいのですが、人にとってはこの過程が重要になります。
例えば、医療の現場でAIが診察を行い大規模な手術が必要だと判断したとしましょう。このAIは大変優秀で今まで間違った判断をしたことはありません。なので、判断処理の内容はブラックボックスになっており、なぜ手術が必要なのかを説明しなかったとしましょう。このときに貴方は簡単に手術を受けると言うことができるでしょうか。
少なくとも私は言えません。人事評価などでも同様です。AIの判断で説明なしに役職を外されたり、給料が下がることに納得ができる人は少ないかと思います。こういった重要な判断の場では、AIが導いた根拠が不明確な結果を採用しづらいのです。
なので、ブラックボックスを暴く必要があるのです。
ブラックボックスを暴くアプローチ方法
ブラックボックスの暴き方には2種類あります。「グローバルなモデル解釈」と「ローカルなモデル解釈」です。
「グローバルなモデル解釈」では予測モデルがどの要素を重要視して予測をしているのかを知ることが出来ます。例えば、画像に写っているものがお茶か珈琲かを判断するモデルにグローバルなモデル解釈を行った場合、重要視しているのは「色」「容器の形状」などの要素だと返します。
「ローカルなモデル解釈」では予測対象のデータを与えられ、それに対してなぜその予測結果になったのかを知ることが出来ます。例えば、画像に写っているものがお茶か珈琲かを判断するモデルにお茶の画像を与えてローカルなモデル解釈を行った場合、お茶と予測した理由を「色が緑だった」「茶という文字があった」などと説明します。
似たような2つの概念ですが、モデルの精度改善をするときに参考にするのが「グローバルなモデル解釈」、モデル開発後に各判断の根拠を明確なものにするのが「ローカルなモデル解釈」と解釈すれば一旦は大丈夫です。
どうやってブラックボックスを暴くのか
具体的にどうやってブラックボックスを暴くのかを解説していきます。
代表的なのはモデルを作成するアルゴリズムを人間でも解釈可能なモノにすることです。
近年の機械学習に用いられるアルゴリズムは研究が進み、高精度な予測ができるようになった反面、一般人が直感的に理解できる範疇を超える処理を行うようになりました。このアルゴリズムの発展が予測モデルのブラックボックス化を進めました。
なので、初心に帰って人間でも解釈可能なLinear RegressionやDecision Treeなどの比較的簡単なアルゴリズムでモデルを作ることで、ブラックボックスを解釈しようとするのがこのアプローチです。
Linear Regressionなら線形関数で、Decision Treeならツリー図でブラックボックスを解釈できます。
では、人間で解釈するのが困難なアルゴリズムを利用する場合はどうすればいいのでしょうか。グローバルなモデル解釈とローカルなモデル解釈のどちらを行いたいかによって方法がかわります。
グローバルなモデル解釈の場合
- インプットデータを変化させた際の予測値の変化の大きさから解釈
- 人間が解釈可能なアルゴリズムでモデルを作り直して解釈
などという方法があります。どちらもやってることは泥臭いですね。
ローカルなモデル解釈の場合
- 一つの予測結果について同じような予測を行うモデルを人間が解釈可能なアルゴリズムで作成し、そのモデルをから解釈(LIME)
- ゲーム理論のシャープレイ値を利用して、変数の影響度を算出して解釈(SHAP)
などの方法があります。ローカルなモデル解釈の方法にはそれぞれLIMEとSHAPという名前がついています。これらの具体的な解説は今後の記事で行います。
次回の記事
次回はAzure Machine Learning Serviceを利用してモデルの解釈を実際に行います。
Azure Machine Learning ServiceはAzure上の機械学習環境であり、モデルの開発から管理、デプロイまで一気通貫で行える環境です。モデル解釈も管理画面上から簡単に行えるます。
Azure Machine Learning Serviceの立ち上げから細かく手順を追って書いて行く予定なのでお楽しみに。