Google Colaboratoryを用いた機械学習・深層学習の入門教材を無料公開(健康・医療向けデータを用いた実践編も含む)

Shunta Saito
リサーチャー

2018-12-20 13:13:56

PFNのリサーチャの齋藤です。今年は色々な仕事に取り組みました。本記事では、日本メディカルAI学会が新しく始める公認資格へ向けたオンライン講義資料について書きます。

昨今、機械学習や深層学習といった技術はIT企業のみならず様々な分野で活用されるようになってきました。その一つに医療分野があります。しかし、忙しい臨床医・研究医・その他医療従事者の方々の中には機械学習や深層学習の可能性を知りつつも、なかなか自ら手を動かして学び、それを医学の研究や医療の現場へ生かしていく時間がとれない方もいらっしゃいます。その大きな理由の一部には、特に深層学習を実践的に用いる方法を学ぶ場合に必要となる計算機環境の用意および環境構築が難しいといった点があります。

そこで、PFNは、Google Colaboratory(以下、colab)を用いた学習教材を作成しました(なお、資料の一部は株式会社キカガクの協力を得て執筆されています)。本資料は、日本メディカルAI学会公認資格:メディカルAI専門コースのオンライン講義資料として作られたものですが、メディカルAI学会所属でない方にも自由にご覧いただけるよう、全ての資料をウェブで無料公開しています。colabを用いると、Googleアカウントさえあれば誰でも無料でGPUが有効な環境の上でPythonコードを実行することができます。従来は、GPUを搭載したコンピュータを自前で用意したり、また用意できたとしても様々な深層学習フレームワークを動作させられるように環境構築を行う部分などでつまづいてしまうケースも多くありましたが、colabを用いればこれらの行程をスキップして本質的に重要なコーディングの部分から学び始めることができます。

今回の学習資料は、全てcolab上で執筆を行い、colabから直接GitHubへ.ipynb形式のファイルをpushし、Pythonパッケージのnbsphinxを用いてそれをHTMLへ変換してドキュメントサイトを構築するというワークフローで作成されました。また、colabで書いたプログラムが実行時に生成したファイルは、簡単にGoogle Driveへコピーすることができるため、学習の結果得られた成果物を再利用するといったことも行いました。具体的には、本資料は1章が2〜3時間で終えられるように作られていますが、中には深いニューラルネットワークの学習に必要な時間だけで数時間かかってしまうものもあります。そういった場合には、あらかじめ筆者らで途中までcolab上で学習を行って学習途中のスナップショット(ある時点のネットワークの重みなどをファイルに保存したもの)を作成しておき、記事中ではそれをダウンロードしてきて途中から学習を再開するという形にすることで、資料中のコードを実行したあと待機する時間を減らしつつ、実際に学習が行われる様子を体験することができるよう工夫しています。

本資料は全8章からなり、機械学習に必要な数学の基礎から深層学習を用いたMRI画像のセグメンテーション、血液の顕微鏡画像からの物体検出、DNA配列解析、心電図の信号波形データの時系列解析といった具体的な応用まで、その背景にある理論の概説から実行可能なコードを用いた実践的な解説まで広く扱っています。目次は次の通りです。

1章:機械学習に必要な数学の基礎

1章では、深層学習に限らず、機械学習の様々な手法を学んでいく際に必須となる微分の知識、線形代数の基礎、そして確率・統計の基礎について、最低限の知識をおさえるために簡潔にまとめています。

2章:機械学習ライブラリの基礎

2章では、機械学習や深層学習の領域では広く用いられているPythonと、その代表的な数値計算ライブラリであるNumPyに慣れるために、重回帰分析をNumPyのみを使って実装する方法をコードを実行しながら学んでいけるようになっています。また、様々な機械学習アルゴリズムを実装しているScikit-learnというライブラリの使い方も紹介しています。

3章:ニューラルネットワークの基礎

3章では、ニューラルネットワークの基礎について、図や動画を用いてできるだけ分かりやすく說明しました。NumPyを用いて誤差逆伝播法(バックプロパゲーション)を実装し、colab上で実行してみることで、具体的な数値を見ながらニューラルネットワークの学習の仕組みを理解することができます。

4章:Deep Learningフレームワークの基礎

4章では、より複雑なニューラルネットワークを扱いやすくするために深層学習フレームワークの一つであるChainerを用いた画像分類の問題に取り組みます。ここからは、colab上でGPUを使ったより実践に近いプログラムを実行することで深層学習を活用していく際のエッセンスを効率よく学びます。

5章:実践編: MRI画像のセグメンテーション

5章では、心臓MRI画像の中から左心室の領域を抽出するセマンティックセグメンテーションのタスクに取り組みます。Chainerを用いて色々なニューラルネットワークを実装し、そのパフォーマンスの違いを見てみます。ChainerCVという画像を取り扱う場合に便利なChainerの追加パッケージの使い方も簡単に說明しています。

6章:実践編: 血液の顕微鏡画像からの細胞検出

6章では、血液の顕微鏡画像の中から赤血球、白血球、血小板の3種類の物体を検出する物体検出タスクに取り組みます。物体検出のためにデザインされたニューラルネットワークの中から代表的なものをいくつか概説し、ここではSingle Shot Multibox Detector (SSD)という手法を使って自ら用意したデータセット(ここでは血液の顕微鏡画像)を用いるモデルの訓練方法を解説しています。本章でもニューラルネットワーク自体の実装コードの転用や評価のためにChainerCVを活用しています。

7章:実践編: ディープラーニングを使った配列解析

7章では、DNA塩基配列を入力として受け取り、配列中の長距離相互作用を考慮した上でDNA塩基配列と特定の転写調節因子の結合可能性を予測するために1次元Dilated Convolutionを使ったニューラルネットワークを訓練する方法を說明しています。

8章:実践編: ディープラーニングを使ったモニタリングデータの時系列解析

8章では、心電図の信号波形データを入力として、不整脈を検出するという時系列解析の問題に取り組んでいます。この章では1次元Convolutionと1次元Dilated Convolutionを使った教師あり学習による時系列データの分類方法について解説しています。

本資料を通じて、機械学習や深層学習の分野について学び始める方が増えることを期待しています。

また、本資料のうち1章〜3章の作成にあたっては株式会社キカガクの吉崎様にご協力をいただきました。この場を借りてお礼申し上げます。そしてGoogle Colaboratoryがなければこのような文章を中心としつつも実行可能なコードを埋め込むことで実践的な資料としても成り立たせることはできませんでした。合わせてお礼申し上げます。

【関連リンク】

日本メディカルAI学会:https://www.japan-medical-ai.org/
株式会社キカガク:https://www.kikagaku.co.jp/
深層学習フレームワークChainer https://chainer.org/

Leave a Reply