ソフトウェア

ニューラルネットワークはどのように画像を理解しているのか


ニューラルネットワークは画像認識などの分野で力を発揮していますが、ただ画像を識別するだけでなく、どのような根拠を元に分類が行われたのかを人間が理解できるようにする必要があります。機械学習を扱うブログ「Distill」に、既存の解釈可能なメソッドをリッチなユーザーインターフェースにまとめることでニューラルネットワークの画像認識処理を人間が理解しやすくするという方法へのアイデアが掲載されています。

The Building Blocks of Interpretability
https://distill.pub/2018/building-blocks/

ニューラルネットワークは、入力された画像のすべてのピクセルのカラーチャンネルの値を入力する入力層と、クラスラベルに関連する確率が出力される出力層の他に、いくつもの隠れ層が存在しています。隠れ層においてコンピューターは、画像内のすべての位置で同じ特徴抽出器を実行します。各層は立方体としてとらえることができ、立方体を構成する各セルは発火したニューロンの量を示しています。x軸とy軸は画像内の位置に対応し、z軸はチャンネル、つまり抽出器の種類を表しています。立方体の切り分け方を変えることで、個々のニューロンのほかに画像の位置やチャンネルの活性化をターゲットにすることができます。


通常、隠れ層の活性化情報は抽象化されたベクトルであるため理解するのは困難です。しかしDistillによると「特徴量の視覚化」によってこの抽象的なベクトルをより意味のある「セマンティック辞書」に変換できたとのこと。


このセマンティック辞書はすべてのニューロンの活性化情報をニューロンの視野と結び付け、活性化の度合いで分類して作成されています。画像認識では、ニューラルネットワークは視覚の抽象化を学習するので、画像はその抽象化された視覚を表すのに最も自然なものです。

セマンティック辞書ではそれぞれのニューロンが何を検知しているのかという活性化の状況を細かく見ることができます。また、活性化ベクトル全体をとらえることもでき、画像の一部分で発火するニューロンを結合したものを視覚化できます。具体的には元の活性化ベクトルとのドット積を最大化するように画像を最適化したとのこと。


全ての活性化ベクトルに同様のことを行うと、ニューラルネットワークが画像のそれぞれの場所で何を検出しているのかだけでなく、入力された画像が全体として何であるとニューラルネットワークが理解しているのかが見えるようになります。


そして、レイヤーごとに見ることで、ニューラルネットワークがどのように画像を理解していくかが分かるようになります。下の画像では、上に位置する左のレイヤーではエッジを検出し、右のレイヤーに移るたびにだんだんと形状が洗練されていくのが分かります。


上の画像では活性化の大きさという情報を捨てていましたが、活性化情報によって画像の大きさをスケールするようにすると下の画像のようになります。こうすることでニューラルネットワークが画像のある部分でどのくらい強く特徴を検出したかを示すことができます。


他にも、「出力である可能性が高いのは何か」をそれぞれの部分がどう判断しているのかというものや……


画像の部分ごとではなくチャンネルごとに活性化情報を表示する画像などが掲載されています。


また、行列をどのように分解するのが良いのかなどの情報もあり……


さらに、上述の情報を使ったさまざまなインターフェースの可能性について述べられていました。


このように、元ブログには人がニューラルネットワークを理解するためにはどうすればよいのかについて、密度の高い情報がまとめられています。人とニューラルネットワークとを結びつけるという研究の最先端が垣間見える記事となっていました。

・関連記事
Google Photosが黒人をゴリラと認識した事件で開発者が謝罪 - GIGAZINE

「ディープラーニングとは何か?」を初心者でも分かりやすく実例を含めて解説するムービー「Introduction to Deep Learning: What Is Deep Learning?」 - GIGAZINE

Googleの開発者が作った3時間でディープラーニング(深層学習)をスライドとムービーで学べる集中レッスン - GIGAZINE

ディープラーニングにおける「カプセルネットワーク(CapsNet)」による画像認識とは? - GIGAZINE

初心者向け「機械学習とディープラーニングの違い」をシンプルに解説 - GIGAZINE

・関連コンテンツ

in ソフトウェア, Posted by log1d_ts