前回からの続き。脳からの知識蒸留を目指し実験を行った。目的は効率的なハンドラベリングであり、今回のPoCでは生体情報をDeep Learningの蒸留と同じ方法、ソフトターゲットの設定で活用できるか?を検証した。
解いた問題と前提
データセット
脳からの知識蒸留を目指すため、前回作成したツールを用いて約330枚のバラの写真に対するハンドラベリングを行った。ハンドラベリング時に取得したデータは次の通り。
- 病気の区分(黒星病・うどん粉病・健康)
- 病気の進行度(軽症・中程度・重症)
- 脳波(集中度を利用)
- 分類にかかった時間(集中度の平均化のために使用)
元データはバラの病気診断サイト用に収集したもので、黒星病・うどん粉病・健康が1/3ずつとなるよう調整し、ハンドラベリングを実施した(各クラスのデータ数は同じ)。進行度は軽症が半分、中程度以上が半分な感じだが、データセット内の進行度の割合は調整していない。
モデル・学習の概要
今回は3クラス(黒星病・うどん粉病・健康)分類問題を(Convolution層+Pooling層)×2+分類用の層×2なCNNで解くシンプルな問題設定・モデルとした。転移学習や事前学習は行っていない。
脳からの知識蒸留が有効かを確認するため、下記4つのデータで学習し結果を比較した。
- 病気区分のラベルのみを用いた学習(普通の学習)
- 病気区分のラベルと進行度を併用した学習。病気進行度が高いほど病気区分ラベルの確信度が高くなるようにした。
- 病気区分のラベルと脳波を併用した学習。集中度が低いほど病気区分ラベルの確信度が高くなるようにした。(難しく考えなくても分類できたと言う意図[1])
- 病気区分のラベルと進行度と脳波を併用した学習。2.と3.の掛け算。
データセットを学習用75%・評価用25%に分割し、2エポック後の評価用データに対する正解率を比較した。学習データ・評価データに含まれる写真は4条件すべてで同一である(4条件でデータ分割による有利不利は生じていない)。loss関数として1.ではcategorical_crossentropyを、2.-4.ではkullback_leibler_divergenceを用いた。これは、2.-4.の正解データが教師の出力(本件では人間の確信度に相当する分布)でありバイナリ値ではない為である。
結果とまとめ
結果は次の通りであった。驚くべきことに[2]、Distilling the Knowledge from a Brainには効果があった。
- 通常の学習:正解率 37%
- 進行度の併用:正解率 37%
- 脳波の併用:正解率 41%
- 進行度+脳波の併用:正解率 49%
結果の解釈は難しいが、正解ラベル以外の情報(特に脳波)にも意味がありそうな感じである。データ数が少なく、そもそもの正解率が低いので何ともいえない感もあるので、今後データ数を増やして再度実験を行ってみたいところ。以下、硬い感じのまとめ。
AIが流行るにつれてハンドラベリングの重要性も上がっている[3]。本PoCではハンドラベリング時に脳波を測定し、それをモデル学習時に使用することで学習の効率化が出来る事がわかった。今後のラベリング作業では脳波を測定することがスタンダードになるだろう[4]。分類時の脳波付きデータセットが広く公開されることを期待する[5]。そのようなデータセットのもと、Distilling the Knowledge from a Brainの活用や脳波予測タスクをマルチタスクの1つとして解く学習によって、他のタスクの精度が上がっていくと推測される[6]。
(硬いまとめはここまで。個人的な思い的な考察はその他に続く。)
脚注
[1] この仮定は相当怪しい。
[2] こんな雑な問題設定・解き方で差が出るとは思わなかったが、複数回実行しても結果がほぼ同じであった。同じモデルにtrainを繰り返していないか確認したり、1.-4.の学習順番を変えてみたりもしたが同じ結果だった。びっくり。観測者効果的なもので脳波が変わったのだろうか?それはそれでびっくりだが。
[3] これはたぶん本当。実務では大きな課題。
[4] 脳波計測がスタンダードにはならないだろうが、取りやすい生体データが併用される可能性は感じた。特に心拍とか視線とか。
[5] 欲しい人がいれば今回のデータを公開してもよいかなーと思いつつ、雑にやったところを綺麗にするのが面倒なので、お蔵入りになりそうな予感がしている。
[6] 個人的にマルチタスクへの適用に可能性を感じている(参考論文「One Model To Learn Them All」)が、良い感じのデータが無いので試せていない。暇があったらやるかも。
その他
知識蒸留という言葉にひかれて、誇大広告気味なPoCをしてみたら意外に可能性のありそうな結果が出て驚いた。ちなみに、さらっと流しているが、病気の進行度や脳波から良い感じにソフトターゲットの分布を作る方法はかなりの難問である。本件は適当に分布系を決め打ちして実測値で調整したが、カテゴリが多いとかなりの工夫が必要なはず。時間があったら考察するかも。
WEBで紹介される記事を含め「人による判断をAIに学習させる」方針のえーあいぷろじぇくとは多い印象があるが、人の判断は色々な意味で一貫していない。特に判断が難しい問題ではそれが顕著で、本件のような工夫で問題に対処できるといいなーと思う。たぶん脳波は解ではないが、「どちらでも正解かもしれない微妙な判断」とか「参考にすべきでない人間の判断」とかをどう取り扱うかは今も今後も重要なテーマなんだろうと思う。人間に難しいことは機械(AI)にも難しい。
過去の記事で何回かとりあげた公平性の話や説明責任の文脈でも(というかその文脈でこそ)人間が今まで行ってきたバイアスが見つかり、どうやって対応すべきかが問題になる。昨年末くらいに「人間中心のAI社会原則」が話題になったが、個人的には顧客中心であるべきだと思っている。「人間の判断ならOK」というのは危険な考え方で、人間の判断ほどブラックボックスなものはない(参考記事「Googleのリサーチ責任者、「説明可能なAI」の価値に疑問符」)。
AIは良い悪いは別として一貫した答えを返し反応も早いから、様々なパターンを試せば差別の有無を発見可能である。実際、Deep Learningなモデルであっても(面倒ではあるが)かなりの部分が解析可能で、AIはせいぜいグレーボックス程度の謎さである。近年の問題事例(参考資料「公平性に配慮した学習とその理論的課題」)も、ある程度の解析可能であるが故に問題が発見されている。「差別事例が見つかり批判・訂正される」のは、「差別が見えないが存在する」よりは良いはずだ。差別を隠すためにAIを隠れ蓑にするなら許せないが。
色々な事例を見聞きするに、重大事項の判断にAIを利用する場合、何らかの形で外から検証可能とするか、専門機関による監査があるべきなんだろうと思っている。インセンティブが無いと難しい世界だが、保険とか絡めて何か仕組みが作れないかなーと思う今日この頃。
0 Comments.