バルーンポケモンが好きな人のブログ

つまらない はなしで あいてをねむらせるのが とくいだぞ

メディカルAI専門コース オンライン講義資料でお勉強してみた

新年明けましたね。いい感じの挨拶の言葉が浮かばなかったので、とりあえず気にせず頑張っていきましょう。

 

医療データにDeep Learningを適用して、いろいろと認識させるための教材が無料で公開されていたので、ガキ使を横目に勉強していました。

本当は新年明ける前に終えたかったのですが、途中でガキ使が終わっておもしろ荘とかいうネタ番組が始まっていたので、結果的に間に合いませんでしたね。

 

japan-medical-ai.github.io

 

私はDeep Learningは仕事でも使っており、それでご飯を食べている人間なのですが、医療データの扱いについては無知ですし、Deep Learningについても新たな発見があるかなと思って取り組んでみました。

 

コードのすべてがGoogle Colabで動くのが良いですね。

GPUを使って作業するので、ランタイムの「ランタイムのタイプを変更」を選んで、ハードウェアアクセラレータをGPUにするのを忘れないようにしましょう。

ここで5分つまづきました。もうちょっとでやる気をなくすところでした。

 

MRI画像や血液の顕微鏡画像、心電図の波形など様々なデータに対して、そのデータと実際に解くタスクに見合ったDeep Learning手法を適用するというのが実践編の流れです。

 

備忘録も兼ねたメモをここに残したいと思います。

 

まずは5章のDeconvolutionの設計に関して

 

カーネルサイズをstrideで割り切れる数にする(checker board artifactを防ぐため.こちらを参考のこと:Deconvolution and Checkerboard Artifacts
出力サイズは,stride×(input_size−1)+ksize−2×padとなるので,目的の拡大後サイズになるようパラメータを調整する

 

GANとかの画像生成でDeconvolutionを使うなんてことがありますが、artifactが目立ってしまい、いびつな画像ができてしまう問題があるようです。

このテクニックはそれを軽減できるのかもしれません。憶えておきます。

 

次は6章の物体認識用のネットワークであるSSDを学習させる部分の話です。

 

次にOptimizerを作成します.今回はMomentum SGDという手法を用いてモデルのパラメータの最適化を行います.その際に,モデルの中にある線形変換が持つバイアスのパラメータに対しては勾配が2倍の大きさになるようにupdate_ruleに対してフックを設定します.また,バイアスパラメータの場合にはweight decayは行わず,バイアスパラメータ以外のパラメータに対してはweight decayを行うように設定しています.これらは学習の安定化などのためにしばしば用いられるテクニックです. 

 

バイアス項はweight decay(重み減衰)させないほうがいいと言う話は聞いたことがあります。こうして再びその話を聞くということは、このテクニックにはそれなりの市民権があるのですね。

あとは、バイアスのパラメータの勾配を2倍にするというのは初耳でした。

 

8章の精度向上に向けては全体的にためになりました。今回のデータセットにおいては、1D Dilated Convolution+Dropout が一番精度向上に寄与していました。もちろん、確率的な操作が入るので精度向上の実感の度合いは人それぞれだと思います。

 

それ以外の手法は相対的に見ればそこまで大きな改善にはならなかった印象があります。

ただ、実装自体はそこまで難しくなく、気軽にチャレンジできる類のテクニックなのでぜひ活用したいと思います!