ツカザキ病院眼科で眼科医兼人工知能エンジニアのチーフとして働く升本浩紀氏が、自らのAI開発の経験をベースに、医療AIの現状について紹介する連載コラムです。
これまでAIをどのように使うか、その応用先、実際の取り組み方などについて6回の連載を行ってきました。今回は、AIを学ぶには実際に何を勉強すればよいのかについて紹介したいと思います。
AIエンジニア単独ではAIの構築はできず、基本的にチームで行う必要があります。たとえば教師あり学習のニューラルネットワークを開発するのであれば、インプットデータ(例えば、画像)とアウトプットデータ(例えば、診断)をセットで用意する必要があります。インプットデータを効率よく抽出してくるためには、抽出基盤が必要になります。また、アウトプットデータ、つまり診断をつけるためには、ドメイン知識、つまりその対象業界の専門知識が必要になります。
さらにドメイン知識と一口に言っても、具体的な診断などのミクロ的なドメイン知識だけでなく、ニーズを把握するようなマクロ的視点のドメイン知識も必要になります。もちろん、AIエンジニアとして、数式レベルの理解など理論的な知識もある程度必要ですし、使い物になるレベルに持っていくためのプログラミング知識も必要です。
これらのことから、私の考えとしては、大きく分類して
1) AIそのものについての知識
2) プログラミング知識
3) ミクロ的ドメイン知識
4) マクロ的ドメイン知識
5) インフラ構築
の5つの能力がチーム内に必要になるのではないかと考えています。
画像AIは、大きく分けて分類、回帰、物体検知、セグメンテーション、生成の5つのタスクがあること、そしてこれらを組み合わせることで非常に幅広いタスクが行えることを第2回の連載で紹介しました。開発チームは「AIは何ができるか」という引き出しを多く持たないと、通り一遍なAI開発しかできません。
たとえば、AIは分類しかできないと思っているチームだったら、AIでできることとして思いつくのは画像からの診断くらいでしょう。ですが、AIはセグメンテーションもできると知っているチームであれば、画像からさらに多くの情報を抽出できるAIの構築を行うことができます。このように、知識の引き出しが多ければ多いほど、アイデアを思いつく基盤となります。ドクターがAIについて学ぶ場合には、AIそのもので何ができるかの知識が非常に重要になってくるでしょう。
AIについていくら知識があったとしても、実際にAIを構築できなければ絵に描いた餅です。実際にどのように構築するかを考えるためには、プログラミングの知識が必要となります。
一般的に、ニューラルネットワークはプログラミング言語のPythonのTensorflowかPytorchで構築することが多いと思います。前処理は画像においてはOpenCVやNumPyなどのパッケージが必要になってきます。これらのような、思考を具体化する手法についての知識が必ず必要です。
TensorflowやOpenCVなど各種パッケージやPythonそのもののスキルは、例えばインターネットで「Tensorflow 入門」のように調べることで、初心者向けに圧縮された情報が出てきます。その後に、Documentなど詳細な一次情報にあたることをお勧めします。
もし、眼科領域でAIを構築するのであれば、眼科の知識は当然必要になります。たとえば緑内障であれば視神経乳頭周辺の所見である「Cup/Disc比率(C/D比)」と呼ばれる値が上昇するという知識があれば、セグメンテーションを用いてCup、 Discの比率を求めるなどの具体的な手法を思いつくことができます。
ですが、その知識がなければ、AI的な観点からアプローチしようというアイデアは思いつきません。さらに言ってしまえば、診断がつけられないので、タグをつけることすらままなりません。このように、AIの開発においてはミクロ的なドメイン知識は必要不可欠なものであると考えています。
AIの構築は基本的にはビジネスです。その意味では、誰にも需要のないAIを構築しても仕方ありません。ミクロな視点、つまり自分の関心だけでは不十分で、マクロな視点、つまり世間がどのようなAIにニーズがあるのかも常に考える必要があります。
たとえば、眼科領域のAI開発においては、糖尿病網膜症や加齢黄斑変性、緑内障が広く取り組まれているタスクであることは知っておく必要があるでしょう。ほかにも、網膜剥離は米国訴訟原因の第1位であり、先進国においては見逃しが非常に問題視される疾患であることは押さえておくべき知識です。上記、ミクロ的・マクロ的ドメイン知識はその領域の勉強を行うか、その領域の専門家にチームに所属してもらうことが必要になるでしょう。
AIを実装するにあたっては、データを収集するフェーズ、モデルを構築するフェーズ、モデルを搭載するフェーズの3つのフェーズに分けられます。
データを収集するフェーズにおいては、画像を集めることやタグを効率的に入力することについて考える必要があります。モデルを搭載するフェーズにおいても、エッジのPCに搭載するのであれば、そのエッジのPCの性能について考慮する必要がありますし、クラウド上に搭載するのであれば、どのようにクラウドまでデータを運ぶか、どのような運用にするかを検討する必要があります。
このように、AIを構築するために必要なデータを収集する際や、AIを搭載していく際には、モデル構築段階とは異なるITの知識が必要になります。このように、ハードウェアやクラウドについての知識もチーム内には必須となるでしょう。
今回は、AIの実装に対して必要な知識を紹介しました。一人でこれらの知識を網羅することは困難です。その意味で、これらの知識が網羅的にカバーできる様なチームづくりを行い、チームで開発を行うことがベストだと考えています。
升本浩紀 ツカザキ病院 眼科 医師/株式会社シンクアウト 最高技術責任者
2016年 東京大学医学部卒業。在学中に中小企業診断士や公認会計士試験に合格。2018年からツカザキ病院。眼科医として臨床を行う傍ら、医療AIの研究・開発に取り組んでいる。日本眼科AIのトップランナーとして国内外の学会や、医師、医学生向けの講演をを多く行っている。関心領域はオペレーションマネージメントや、スマートフォンを用いたビジネス。好きな人工知能フレームワークはPyTorch。