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

Google Colaboratory を用いた機械学習・深層学習の入門教材を無料公開(健康・医療向けデータを用いた実践編も含む): [Google Colaboratory を用いた機械学習・深層学習の入門教材について株式会社 Preferred Networks リサーチャー 齋藤 俊太 様から寄稿いただきました - Kaz Sato - Staff Developer Advocate, Google Cloud]


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




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


今回の学習資料は、全て colab 上で執筆を行い、colab から直接 GitHub 上のリポジトリへ.ipynb 形式のファイルを push し、Python パッケージの nbsphinx を用いてそれを HTML へ変換してドキュメントサイトを構築するというワークフローで作成されました。colab でノートブックを開くためのリンクをノートブック本体に埋め込んでおくことで、編集・実行・リポジトリへの push・確認といった作業が全てブラウザで完結するため、このような実践的な資料を執筆する作業を効率化することができます。


また、colab で書いたプログラムが実行時に生成したファイルは、簡単に Google Drive へコピーすることができるため(参考:External data: Drive, Sheets, and Cloud Storage)、学習の結果得られた成果物を再利用するといったことも行いました。具体的には、本資料は 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/

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)