Japanese Journal of Visual Science
Online ISSN : 2188-0522
Print ISSN : 0916-8273
ISSN-L : 0916-8273
Topics
[title in Japanese]
[in Japanese]
Author information
JOURNAL FREE ACCESS FULL-TEXT HTML

2018 Volume 39 Issue 3 Pages 75-79

Details

はじめに

人工知能(AI)に対して注目が集まっている。これまでにも数度AIブームがあったが,今回のブームでは今まで以上に産業応用が期待されている。よく知られているように,Googleの自動翻訳にはリカレントニューラルネットワークというAI技術が用いられている。他にも,自動運転,産業用ロボット,小売店におけるマーケティング調査,農業用機械の自動化など様々な分野でAIの導入が検討されている。

さらに,医療分野にも応用される動きが見られている。具体的には,医用画像に対する自動分類や疾患部位のセグメンテーションなどである。特にCTやMRIを扱う放射線科でAIの導入が比較的早く進むのではないだろうか。眼科分野も眼底写真やOCTなど医用画像を多く扱う診療科である。将来,眼底やOCTの読影補助や,医用画像のノイズ除去などの目的で,AIが電子カルテや眼科検査機器に組み込まれるようになるかもしれない。

さて,今回のAIブームを支えるコア技術のひとつがDeep learning(深層学習)である。著者も2016年頃から,深層学習の医療応用を目指した研究に取り組んでいる。著者自身,元々は深層学習を専門としていたわけではないが,所属する人工網膜(失明治療用のインプラント型医療機器)研究開発プロジェクトの一環として,画像認識関連のテーマに取り組むことになり,その中で深層学習の存在を知った。深層学習を利用した画像認識アルゴリズムが持つ高い精度に驚き,この技術に魅了された。

本稿では,深層学習に関する技術の紹介として主に画像認識で用いられている技術を中心に解説したい。加えて,深層学習の医療分野への導入に向けて私見を述べたい。

深層学習とは

文献によって定義の揺れは若干あるものの,一般的に深層学習とは何層もの深い階層構造で構成された多層ニューラルネットワーク(Deep Neural Network: DNN)を用いて,数多くのデータで学習を行い抽象度の高い内部表現を獲得させる技術として知られている1)。ここでいう「学習」とは,ニューラルネットワーク内部のパラメータ(入力信号に対する重み係数やバイアスなど)を最適化することを意味する。

ニューラルネットワーク

ニューラルネットワークとは生体の神経細胞を模した人工ニューロンを基本構成要素とし,生体の神経回路網と同じように人工ニューロンがシナプスで結合したネットワーク構造を作った計算アルゴリズムである。ニューラルネットワークの研究の歴史は古く,1940年代から論文が存在する2)。ニューラルネットワークには数多くの種類があるが,よく知られているものに多層パーセプトロン3)がある。多層パーセプトロンは図1のように階層構造を成し,各人工ニューロンは前の層にある全ての人工ニューロンからの入力を受ける。このような層は「全結合層」と呼ばれる。

図1 

多層パーセプトロン

ここで用いられる人工ニューロンに着目したい。人工ニューロンは入力の数値(x1, x2, …,xn)にそれぞれ重み係数(w1, w2, …,wn)を掛け合わせて和を求め,さらにバイアス(b)を加えた後,活性化関数に入力して出力(y)を求める(図2)。活性化関数にはステップ関数や,シグモイド関数や,ハイパボリックタンジェント(tanh)などが用いられる。

神経細胞は他の神経細胞とシナプス結合を介して興奮性入力と抑制性入力を受け,それらの入力が合わさって神経細胞の膜電位が変化し,ある閾値を超えると活動電位を発生する。その活動電位が軸索を経由して軸索終末に伝導し,神経伝達物質を放出し,次の神経細胞へと情報を伝達する。

ニューラルネットワークの人工ニューロンにおける入力は生体のシナプス前細胞の単位時間あたりの発火頻度に対応し,重み係数はシナプス結合の強さを表し,バイアスは活動電位の発火閾値に相当する。ここで重要な点は,人工ニューロンは神経細胞を模してはいるものの,必ずしも完全なシミュレーションではないということである。「神経細胞にヒントを得た計算アルゴリズム」との解釈に留めるべきだろう。最近の畳み込みニューラルネットワーク(後述)では活性化関数にシグモイド関数ではなくランプ関数が用いられることも多く,実際の神経細胞の発火様式とは乖離することもある。

図2 

人工ニューロン

ニューラルネットワークにおける「学習」とはこれら重み係数やバイアスを最適化することを示す。パラメータの最適化にはバックプロパゲーション3)と呼ばれる手法が用いられる。この手法では正解データと出力データの誤差を求め,出力層に近い層から順に後ろ向きに誤差を伝搬させていき,各係数における偏微分を用いて係数をどちら向きにうごかせばどの程度誤差が小さくなるか求めて,各係数を最適化することで出力の誤差を少なくしていく。

ニューラルネットワークの学習や推論についての理解に役立つサイトがある(https://playground.tensorflow.org/)。人工ニューロンの数,階層の数,活性化関数の種類などを変えた場合に,学習過程にどのような影響が起こるか直感的に知ることができるので一度試してみることを奨める。

深層学習に用いられる多層ニューラルネットワーク

残念ながら,全結合層のみでは4層以上の深い階層構造になると勾配消失問題により入力層に近い側で学習がうまくいかない。そのため,深層学習に用いられるDeep Neural Network(DNN)は,全結合層のみで構成されることはまれである(ディープオートエンコーダーなどの一部の例を除く)。

深層学習で用いられるニューラルネットワークには,畳み込みニューラルネットワーク(Convolutional Neural Network: CNN)や,Long Short Term Memory network(LSTM)や,敵対的生成ネットワーク(GAN)などがある。ここでは,CNNを取り上げて解説する。

CNN(図3)は画像分類や,物体検出や,画像セグメンテーションなど,主に画像データを対象とした深層学習に用いられるニューラルネットワークである。CNNを構成する畳み込み層は,全結合層とは異なって入力画像データの各ピクセルの二次元平面における位置情報を保持した上でネットワークを構築する。また畳み込み層の中の人工ニューロンは受容野構造を有する。CNNは生体の視覚系を構成する神経回路に構造が似ている。興味深いことに,CNNを用いて画像分類等の学習を行うと,畳み込み層の人工ニューロンの重み係数の分布(フィルターと呼ばれる)が,ちょうど一次視覚野の方位選択性ニューロンの受容野のように縞状になることが知られている4)

図3 

畳み込み層と全結合層で構成されたDNNの例

CNNの代表例としてAlexNetが挙げられる4)。AlexNetは,画像分類と物体認識のアルゴリズムを競う国際コンペティションImageNet Large Scale Visual Recognition(ILSVRC)の2012年の大会にて圧倒的な成績で優勝したことで知られる。

このコンペティションでは,画像を1000カテゴリーのどれに当てはまるか自動分類させ,そのエラー率(アルゴリズムが推測した上位5つのカテゴリーの中に正解カテゴリーが含まれなかった割合)を競った。深層学習を利用したAlexNetのエラー率は15.3%だった。同コンペティションの2位の成績26.2%だったことを考慮すると,圧倒的な大勝だったといえよう。なお,次年度以降のコンペティションでも,CNNを用いたアルゴリズム(例GoogLeNet,ResNetなど)が優勝している。

AlexNetは現在のAIブームの火付け役と言っても過言ではない。このコンペティションの結果を受け,日本の人工知能学会の解説論文では“この強さは言葉どおり桁違いである”とその驚きを表現している5)。また,AlexNetについて書かれた論文4)は現時点(2018年8月)で13894件の被引用回数(Scopus調べ)を記録している。単純な比較は難しいかもしれないが,ノーベル賞を受賞したHubelとWieselによる1962年の一次視覚野の研究論文6)の被引用回数が6630件(Scopus調べ)であることを考えると,AlexNetはいかに大きなインパクトを学術界に与えたかがわかる。

実はCNNを用いた画像分類アルゴリズムはAlexNet以前から存在していた。有名なものに1989年に発表されたLeNetと呼ばれるCNNがある7,8)。LeNetは1990年代に米国のUnited States Postal Serviceによって郵便物の手書き郵便番号の自動読み取りに使用されている。AlexNetとLeNetは類似点が多いが,強いて違いを言うならば,AlexNetでは学習時にグラフィックプロセッサユニット(GPU)を用いられたこと,LeNetでは活性化関数にシグモイド関数が用いられているのに対してAlexNetではランプ関数が用いられていること等がある。生体の神経回路との類似性という観点から評価すると,シグモイド関数を使っているLeNetのほうが生体と類似度が高いと言えよう。

LeNetを考案したYann LeCunは,CNNのルーツは日本人の福島邦彦氏によるネオコグニトロンにあると彼の解説論文の中で述べている9)。ネオコグニトロンは生体の視覚神経系の構造からヒントを得て考案されたニューラルネットワークで,1979年に発表された10)。HubelとWieselの電気生理学的手法によるネコの一次視覚野の神経回路に関する研究の結果,一次視覚野は階層構造を持ち,Simple cellとComplex cellという異なる受容野特性を有する神経細胞が存在することが知られている。ネオコグニトロンはこの研究の知見を元に,S細胞(Simple cellに相当)とC細胞(Complex cellに相当)からなる階層構造を有する。LeNetよりもより生体の神経回路と似た構造となっている。約40年前にすでにCNNの基礎が考案され,それがしかも日本人による業績であることに感動を覚える。

深層学習に繋がるこれまでのニューラルネットワークの研究の推移を見ると,当初は神経細胞回路を模倣してモデルが作られていたのが,近年は生体の神経回路の様式から乖離する点が増えてきたように見える。例えば,従来は活性化関数にシグモイド関数やステップ関数が用いられていたのが近年はランプ関数が用いられるようになった点や,学習時にバックプロパゲーションが用いられている点などが挙げられる。それゆえ,AI研究者によっては近年の深層学習は脳を模倣したものではないとの意見を述べる研究者もいる。

このようなニューラルネットワークの歴史は,まるで飛行機の開発の歴史を見ているようだ。ドイツのオットーリリエンタールが鳥の飛翔を研究し,近代的グライダーの基礎を構築した。残念ながら,グライダー試験中の事故によって他界したが,彼は鳥のように羽ばたき型の動力飛行機を目指した。オットーリリエンタールによって得られた知見が基となり,ライト兄弟による人類初の動力飛行機の実現に繋がった。しかし,そこで用いられた技術は羽ばたき型ではなくプロペラ型であった。その後の飛行機の発展はご存じのとおりである。現在の飛行機は,鳥とはかけ離れた形となったが,飛行性能は鳥を凌駕する。このように,実用化に向けて生体の機能からヒントを得ることはあっても,完全にコピーするわけではなく実用化に応じて柔軟にモディファイすることが技術発展の鍵なのではないだろうかと思う。

眼科医療への応用に向けて

すでに深層学習の眼科分野への応用に関する研究が進められている。有名なものとして,Google傘下のDeepMind社ではOCT画像から網膜疾患の自動診断を行う試みが11),Google社では眼底写真から心疾患リスク予測を行う試みが行われている12)。今後,眼科分野への深層学習の応用はどのように行われていくだろうか。導入に向けての課題は何だろうか。あくまでも私見ではあるが,著者の見解を述べたい。

Deep learningの眼科分野への具体的な応用先としては,画像診断,医用画像のノイズ除去,疾患進行予測,視覚補助機器などが考えられる。以下,それぞれの項目について必要なDNNの種類や課題について述べる。

① 画像診断

眼底写真やOCTに代表されるように,眼科は他の診療科に比べて多くの医用画像を扱う。CNNを用いた深層学習を応用することで,それら医用画像を疾患の種類毎に自動分類させたり,疾患の重症度を自動分類させたりすることが可能となるだろう。また,U-Net13)に代表されるセグメンテーションの技術を用いることで病変部の領域検出が可能となるだろう。

深層学習を行うには入力データと正解データのペアが必要である(これをデータセットと呼ぶ)。画像分類であれば,医用画像が入力データ,疾患名が正解データとなる。深層学習に多くのデータセットが必要となる。しかし医用画像は倫理委員会等の手続き経なければ入手できないことや,そもそも稀少疾患の場合は患者数が少ないことから,一般の画像データと比べて大規模データの入手が難しい。そのため,今後の課題として,数多くの医用画像データの収集に向けた環境構築や制度構築を進めていく必要がある。同時に,より少ない画像データで精度の高い推論が行うことができるように,転移学習の導入や新たな活性化関数の開発など技術面からも様々な工夫が必要となるのではないだろうか。

セグメンテーションを目的とした深層学習では,データセットの準備がさらに難しくなる。この深層学習では正解データは病変の領域を示すマスク画像(2次元行列)が必要となるのだが,通常の眼科診療業務ではこのようなマスク画像は作らないため,新たに構築する必要がある。しかし,医用画像の場合は読影に専門知識が必要である。ただ,眼科医がデータセットの構築を担当する場合,日常診療の時間の合間を縫って作業を行う必要があるため,その時間の確保が課題となる。一方,エンジニアがデータセットの構築を担当する場合には,読影に必要な医療知識や技術について勉強することが求められる。

さらに,同じ眼底写真でも機種間の違いによって画像の質や拡大率に差があるため,学習データとは異なる機種からの画像を用いて推論を行わせると,推論精度が低下することが懸念される。機種間の違いに影響されない汎用性の高いアルゴリズム構築が今後求められるだろう。

② 医用画像のノイズ除去

OCTの場合,単回撮影では画像に粒状ノイズ(スペックルノイズ)が混入することが知られている。鮮明なOCT像を得るために現行機種では短時間に複数回の測定を行っている。深層学習の分野では,畳み込みオートエンコーダ(CAE: Convolutional Autoencoder)や敵対的生成ネットワーク(GAN:Generative Adversarial Network)を用いて画像内のノイズ除去行う手法が研究されている。この技術がOCTに応用されれば,短時間で鮮明なOCT像の取得が得られるようになるだろう。眼振を持つ患者や固視不良で固視微動が多い患者でも安定した撮影が可能となったり,視神経線維層描出にかかる測定時間を短縮できたり,様々な効果が期待される。

課題としては,これらCAEやGANが作り出す画像が本来のOCT像と比べてどこまで正確なのか検証する必要があることが挙げられる。これらのアルゴリズムが誤った画像を作り出してしまっては,誤診に繋がることが危惧される。医用画像ゆえ慎重な検証が求められるだろう。

③ 疾患進行予測

上記に挙げた例は一枚の画像に対する処理である。しかし,眼科臨床においては,緑内障の視野や眼底像のように,時系列を追って時間変化を精査することがよくある。経時変化を追うことで,将来の病態進行予測を行うことを眼科医が行うこともあるだろう。

深層学習の分野でもLSTMに代表されるリカレントニューラルネットワークを用いることで,時系列変化を推論する方法が検討されている。まだ,眼科学会やARVOなど眼科系学会ではあまり見られないが,OCT像や眼底像の経時変化をCNNとLSTMを組み合わせて解析することで,疾患進行予測を目指す研究が増えてくるのではないだろうか。

④ 視覚補助機器

CNNを用いた画像分類や,CNNとLSTMを用いた画像キャプション生成14)を利用することで,眼前の対象物について音声で説明する重度視覚障害者向け視覚補助機器ソフトウェアを作成することができる。この深層学習を行うのに適した学習用データセットとしてMS COCO datasets(英語)15),STAIR Captions(日本語)16),YJ Captions(日本語)17)が挙げられる。これらのデータセットは無料で公開されており,入手も容易である。

すでに,iphone向けに視覚補助を目的としたアプリが公開されている。例を挙げると,TapTapSee,CamFind,Aipoly Visionなどがある。また,ウェアラブル型の製品としてはOrCam(OrCam Technologies Ltd.,イスラエル)が存在する。課題としては,完全に失明した方の場合,目的の対象物にカメラを正しく向けることが難しいことが挙げられる。OrCamの場合は指認識と組み合わせることで,ユーザーが指で指し示した対象物の位置を認識させる工夫が成されている。

深層学習の眼科医療への応用として,このように様々な例が考えられる。過剰な期待は禁物ではあるが,将来,患者さんや医療従事者にとって便利なツールとして実用化される日が来ると思う。

文献
 
© 2018 The Japanese Society of Ophthalmological Optics
feedback
Top