AI for Medical Diagnosis最速レビュー
CourseraのAI for Medicine Specializationの最初の講義、AI for Medical Diagnosisを修了したので、講義を受けての感想について書いていきたいと思います。本コースは4/16に開講されたばかりで、修了した人もまだあまりいないようなので、日本語だと多分これが最速レビューになるかと。
対象となる受講者
・機械学習の経験があり、医療への応用に興味があるエンジニア
・機械学習を使って医療診断を良くしたい医療関係者
・機械学習の応用に興味がある学習者
3点目なのですが、この講義では機械学習の応用上重要になること(不均衡データの扱いや評価指標など)をかなりしっかりやるので、医療そのものに興味がないけれども機械学習の応用に興味がある人にも役に立つような気がしています。
前提知識
本講義では医療用画像データ(胸部X線、脳のMRI)を使用するので、最低限の画像認識の知識、特にconvolutional neural networkについては知っておいた方が良いです。また課題ではKeras/Tensorflowを使うので、これらのフレームワークの経験もあった方が良いと思われます。
第一週 画像データに基づく病気の分類
この週は医療画像から判別できる病気(皮膚→皮膚がん、網膜→糖尿病網膜症など)を軽く紹介した後に、医療画像を分類する上で必要になるテクニックを紹介しています。画像認識では一般に前処理(並進、回転、コントラストの調整など)が重要になりますが、この週の講義では医療画像に特有の前処理での注意点を紹介しています。
画像の前処理以外に医療画像を処理する上で肝となってくるのが、
・不均衡データの取り扱い(負例が圧倒的に多い)
・マルチタスク(複数の病気を同時に持つことがある)
・学習データのサイズ(医療画像のデータサイズは10K〜100K程度)
です。これらは機械学習を実社会の問題に応用する上で常に重要になってくる事柄ですが、本講義ではこれらをそれぞれ
・Class weightまたはsampling手法
・マルチラベル分類
・事前学習+ファインチューニング
によって解決する方法を紹介しています。
最後に課題では胸部X線のパブリックデータ上で、事前学習されたDenseNetを用い、肺炎・浮腫などの病気の分類を行います。
第二週 医療AIにおける評価指標
この週は医療における機械学習モデルを正しく評価するための様々な評価指標を紹介しています。具体的には、
・Sensitivity(一般的な機械学習用語でのrecall)、specificity
・PPV(一般的な機械学習用語でのprecision)、NPV
・Confusion matrix
・ROC curve、AUC
などです。おそらく機械学習を勉強した人なら大体知ってる内容だと思うのですが、分野によっては使わない用語を使う(sensitivity、specificity)ので、個人的にはそこが役に立ちました。
課題では各種評価指標を実装します。
第三週 脳のMRIデータを使った画像セグメンテーション
この週は第一週でやった病気の分類だけではなく、「画像のどの部分に病気の部分が存在するか」を判定するアルゴリズムを学びます。題材となるのは脳のMRIデータで、腫瘍の領域などを判定します。
MRIデータのセグメンテーションで肝となるのは、
・ピクセル毎の予測精度をどのように高めるか
・3次元のデータをどうやって扱うか
・ロス関数
です。
そのピクセル毎に腫瘍領域に含まれるかどうかを判定するには、そのピクセルのすぐ周りの情報だけではなく、もう少し広い領域のコンテクストまで使いたいわけですが、そのためにこの講義ではU-Netを使っています。U-Netは大雑把に言うとmax poolingして得たより高次な特徴量を、upsampleして低次の特徴量と組み合わせることによって広い領域のコンテクストを各ピクセル毎の予測に使えるようにしたモデルで、少ないデータ量でもそれなりの精度が出せるそうです。
脳のMRIは三次元のデータなので、三次元目の方向を上手く扱う必要があります。この講義では、
・二次元のデータの積み重ねとして三次元データを扱う
・三次元の畳み込みをそのまま三次元データに適用する
という2つの手法を紹介し、それぞれの利点・欠点を議論しています。
最後に、ロス関数に関しては、ピクセル毎のsoftmax-cross entropy lossだけでなく、不均衡データでもうまく動くsoft dice lossを紹介しています。
課題では、脳のMRIデータの腫瘍領域の判定を行います。
最後に
機械学習がちょっと分かって医療の勉強を始めたばかりの人の感想としては、画像認識を医療データに応用する上で必要なテクニックを学ぶという観点では最適な講義だと思います。一方で、実際の医療データへの応用については数例しか紹介されていないので、それらが知りたければ別に勉強する必要があるように思います。
また個人的に、画像認識の知識がだいぶ前で止まっていたので、DenseNetやU-Netなどのアルゴリズムだったり、Grad-CAMなど可視化のアルゴリズムを学べたこと、またKerasの便利な画像前処理ライブラリを知れたことは有益でした。
この記事が気に入ったらサポートをしてみませんか?