【AIを実際に使ってみたい人向け】医療AI概論の応用・実践編を解説します!
- AI概論の応用・実践について知りたい。
- 医療におけるAIの応用方法を知りたい。
- プログラミングを実践してみたい。
ここ数年で、一気に医療においてもAI(人工知能)が注目されてきています。
しかし、AIを学ぼうと思っても「結局難しくて分からない、プログラミング独学では厳しい」と最初の一歩で挫折してしまうケースは非常に多いです。
私は、これまでセミナーや書籍など多くの医療×AIについて勉強をしてきましたが、なかなか無料で全体を網羅できるような環境は多くはなく、特に医療におけるプログラミングの情報は少ないのが現状です。
医療におけるAI・プログラミングを実践してみて欲しい。
そこでこの記事では、【AIを実際に使ってみたい人向け】医療AI概論の応用・実践編をまとめて解説します。
この記事を読めば「医療AIの応用から実践するまでの全体像」が全て分かります。
医療におけるAI総論
まずは医療におけるAI総論という事で、今回は『医療AI概論の応用・実践編』について説明していきますが、まだ基礎編を見ていない方で基礎編から学びたい方はこちらから基礎編を見てみてください。
▼ 【まずはAIを知りたい方向け】医療AI概論の基礎編をまとめた記事はこちら
簡単におさらいすると、医療におけるAIを学ぶ重要性としては、日本の医療は崩壊する!医療崩壊への危機感!という所にあります。
これからは、個人で医療という一つの専門性だけではなく、AI・プログラミングなど2つ・3つの専門性を掛け合わせていく事が大切です。
AIの基礎知識
これから医療におけるAI概論の応用・実践編に進むにあたってAIの基礎知識を少し押さえてから実践に進んでいきたいと思います。
AIには、これまでいくつかのブームがあったと言われてるのでAIにおけるブームとAIを実装していくおおまかな流れを説明していきたいと思います。
AIのブーム
AIの歴史と3つのブームについての概略図を簡単に説明していきます。
これまでにAIの歴史には、3つのブームがありました。
第1次AIブームは、「探索と推論の時代」と言われており、1950年代~1960年代にかけて起こりました。
第1次AIブームで中心的に研究されたのは「推論」と「探索」です。
チェスや数学の証明など、特定のある問題に対して解を提示できるようになった時代になります。
決められたルールの中で答えを導き出すという事に対しては容易になりましたが、現実の様に不確定要素の多い事に対しての問題に対して答えを求めることは難しくAIはこれ以上あまり発展しませんでした。
第2次AIブームは、「知識表現の時代」と言われており、1980年代~1990年代半ばにかけて起こりました。
第2次AIブームで中心となったのは、エキスパートシステムです。
エキスパートシステムとは、専門分野の「知識」をコンピュータに取り込み推論を行うことで、コンピュータが専門家のように振る舞うシステムのことです。
エキスパートシステムは、「知識」の量が膨大になり「知識」同士での矛盾や、曖昧な事柄に対して判断することが難しいこと、膨大な「知識」を人間が用意し定義する必要があることなどから、これらもあまり発展しませんでした。
第3次AIブームは、「機械学習の時代」と言われており、2000年代~現在まで続いています。
第3次AIブームでは、ビッグデータを用いた機械学習やディープラーニングが中心となっています。
画像認識ソフトウェアの大会で、ニューラルネットワークによるモデルが高精度な結果を残したことから急激な進歩を遂げました。
現在「ビッグデータ」と呼ばれる大量のデータを用いることでAI自身が知識を獲得する「機械学習」が実用化され、さらに、AIが自ら学習するディープラーニングが登場したことによって、画像認識や音声認識、自然言語処理など様々な分野で性能が向上しました。
AI実装の流れ
これからAIを実装していく流れの全体像を説明していきます。
AI実装の大まかな流れはこちらの図のような流れで進めていきます。
事前準備では、データの準備や学習に用いるモデルの選択などを行います。
前処理では、データの選択やデータの拡張など、学習が上手くいくようにデータの調整を行います。
学習では、実際にモデルを使って学習し、ハイパーパラメータと呼ばれる変数の調整を行います。
評価では、問題設定に適した評価方法や評価指標を用いて結果の妥当性などを評価します。
学習をしていく中では、検証をしていくなど詳しくはそれぞれの中でテクニックなどもありますが、まずはこれらの大まかな流れを掴んでおく事が大事です。
Pythonの準備
ここからは、実際にプログラミングでAIの実装をしていくための準備をしていきましょう。
AIにおけるプログラミングを始める上で、まずは、Pythonの環境構築からPythonで出来ること、そしてPythonの基礎を押さえていきます。
Pythonの環境構築
Pythonの環境構築の方法には、主にクラウド上で動かす方法とローカル環境で動かす方法の2種類があります。
高精度なPCを持っている場合や、企業でシステム開発などエンジニアを見据えた場合はローカル環境でlinuxというOSを用いてプログラミングを行うことが好ましいです。
しかし、なかなか環境構築が難しい事やそういったPCがない場合も多いので、本記事ではGoogle Colaboratoryというクラウド上で動くもので誰でも環境構築なしでPythonを使っていきます。
Google Colaboratoryの使い方
Google Colaboratoryの使い方・インストール方法についてはこちらの動画で解説しているので、参考にしてみてください。
▼ Google Colaboratoryの使い方・インストール方法についてまとめた動画はこちら
→ 環境構築不要【たった4分で分かる】Google colaboratoryの使い方・インストール方法
4分もあれば、Pythonを使う準備が出来るので、動画を見ながらやってみてください。
Pythonの基礎知識
ここからは、Pythonを使う準備が出来たところで、Pythonについての基礎知識について学んでいきたいと思います。
Pythonを扱う必要性や、Pythonで実現できる事を説明し、その後は、Pythonの基礎的なプログラミングを学んで少しプログラミングに慣れていきましょう。
Pythonを扱う必要があるか
まずはPythonを扱う必要があるかという部分について考えていきたいと思います。
AIを実装してみたいと考えたときに、Pythonを用いて実際にコードを書いてみるという方法以外にも、現在はノーコード、ローコードと言われるツールも登場し、AIを使いやすくなっています。
コードを全く書かなくても出来てしまう!そんな便利な時代になっています。
そうなると、わざわざ難しい勉強をしてPythonを扱う必要がないのでは?と思う方もいると思います。
もちろん、そこまで必要ない方もいらっしゃると思います。
しかし、Pythonを学ぶ事でAIの仕組みについて深く理解する事ができ、自分の実現したいものを作ることが出来たり、企業と共同開発をする際なども話を理解しながら進めていく事が出来るので、信頼関係やより良い製品の開発に繋がります。
Pythonで出来ること
これまで、Pythonを使ってAIを実装してみようという話をしていますが、ここでPythonで出来ることについて説明していきます。
Pythonでは、AIだけではなく多くの事が実現できるため、プログラミング言語としても1番人気の言語となっています。
機械学習を使ったAIの開発 データ分析や自動化処理などの業務効率化 Webスクレイピング WEBサービス・WEBアプリケーション制作 スマホアプリ(Android)制作 デスクトップアプリ制作 組み込みアプリケーション制作 ブロックチェーン技術の開発
Pythonでは、これだけの事が出来ます。
なんと、皆さんが良く使っているYouTubeやInstagram、Dropbox、Spotifyなど有名なサービスもPythonを使って作られています!
Pythonを学ぶ事で、AIの実装だけではなく、データ分析、そして日々の業務の自動化などが出来ます。
また、自分でそれらをWebサービス、Webアプリとして形にする事も出来ます!
Pythonの基礎構文
まずは、Pythonの基礎構文について少し勉強していきましょう。
Pythonを学んでいく上で、Pythonの基礎構文という基本的なPythonのプログラミングについて説明していきます。
Pythonの基礎構文には
- 四則演算
- 変数
- リスト
辞書(ディクショナリ) - ブーリアン
- if文、for文
- 関数
これらが全てではありませんが、Pythonの基礎構文にはこれらの項目があります。
だいたい、どんな本でもこれらの基礎構文から扱っていることが多いです。
具体的なコードなどの説明、実践については、また別記事でまとめたいと思います。
Pythonの基礎おすすめ教材
Pythonの基礎おすすめの教材として、様々な書籍もありますが1つ動画を紹介させて頂きます。
▼ Pythonの基礎講座がまとめられた動画はこちら
→ 【完全版】この動画1本でPythonの基礎を習得!忙しい人のための速習コース(Python入門)
さくっとおさらい!機械学習
Pythonの基礎について、学んだところでここで実装をしていく前に機械学習についてさくっとおさらいをしたいと思います!
機械学習を簡単に言うなら…
ある入力に対し、期待する出力を返してくれるような関数のパラメータを求めることだと言えます。
さらに詳しく説明すると、大量のデータからデータに潜むルールやパターンをプログラム自身が学習して発見し、そのルールやパターンを予測することであると言えます。
例として、犬と猫の画像を分類することを考えてみたいと思います。
上の図のように、犬・猫の画像を入力した時に、正しくイヌ・ネコという出力を返してくれるような関数を求めることであると言えます。
つまり!
機械学習を一言で説明するなら
データから自動で答えを導き出してくれるような関数を作らせること
でした。
詳しく、復習がしたいという方は、こちらの記事にまとめているので、見てみてください。
▼ 機械学習についてまとめた記事はこちら
さくっとおさらい!ディープラーニング
続いて、ディープラーニングについてもさくっとおさらいをしていきたいと思います。
改めて位置付けの図を見ていくと、ディープラーニングは深層学習(DeepLearning)と言われ、AIの中の機械学習の中の1つになります。
ディープラーニングとは、多数の層からなるニューラルネットワークを用いて学習する事により、ある入力に対し、期待する出力を返してくれるような関数のパラメータを求めることです。
つまり、この関数と呼ばれる部分にニューラルネットワークが用いられているという事になります。
ディープラーニングについてもう一度復習したい方はこちらを参考に見てみてください!
▼ 【まずはAIを知りたい方向け】医療AI概論の基礎編をまとめた記事はこちら
CNNの基本
ここからは、画像認識によく用いられるCNNの基本について説明していきたいと思います。
CNNとは
CNNとは、「Convolutional Neural Network」を略であり、日本語では「畳み込みニューラルネットワーク」と呼ばれています。
いくつもの深い層を持ったニューラルネットワークであり、主に画像認識の分野において高精度な結果を出した事で注目されているニューラルネットワークです。
画像認識に特化したニューラルネットワークであるとも言えます。
CNNの仕組み
CNNの仕組みについて説明していきます。
CNNの全体像は、畳み込み層、そして間にプーリング層を挟み、特徴をどんどん渡していって、最後に全結合層に渡すという流れになっています。
畳み込み層における畳み込み操作について説明していきます。
畳み込み操作とは、フィルタをスライドしながら各々の画素値の積を足し合わせるという操作です。
畳み込み操作の計算方
CNNでは、この最適なフィルタ(重み)を学習します。
プーリング処理
プーリング処理とは
プーリングには、いくつか種類があり、Maxプーリングを例に説明すると、上図の様になっています。
プーリング処理とは、画像の特徴にあまり関係のない要素を削ることにより、縮小する事です。
CNNにおける画像の特徴の捉え方
CNNにおける画像の特徴の捉え方についてざっくりと説明していきたいと思います。
理論として、畳み込み、プーリングなど見てきましたが、CNNが畳み込みによって画像の特徴を捉えていく様子を説明します。
CNNでは、今回の例では犬の特徴を学習していくときに、一気に全体像として犬の特徴を捉えていくのではなく、犬の小さな特徴を少しずつ捉えて、それをどんどん次の層に渡していく事で特徴を捉えます。
目がある 鼻がある 耳がある 手足がある 尻尾がある
などの細かい特徴を学習する事で、最終的にこれが犬であるという特徴を学習するという流れになります。
CNNの発展
CNNは時代と共に多くの発展をしてきています。
多くの研究により高度なモデルが多く登場しています。
それらについてまとめていきたいと思います。
AlexNet (2012) VGGNet (2014) Inception v1 (GoogleNet) (2014) Inception v2 (2015), Inception v3 (2015) ResNet (2015) DenseNet (2016) ResNeXt (2017)
大まかには、これらのモデルの発展があります。
詳しくは、こちらの記事にまとめられているので参考にしてみてください。
▼ CNNバックボーン(backbone)の代表的アーキテクチャの歴史についてまとめられた記事はこちら
画像認識のタスクの種類について
画像認識と言ってもいくつかの種類があります。
画像認識のタスクの種類について解説していきたいと思います。
クラス分類(classification) 位置特定(localization) 物体検出(detection) セグメンテーション(segmentation)
画像認識のタスクにはこれらの種類があります。
クラス分類は画像に写っている物体が「犬」「猫」など事前に定義されたラベルのどれかを識別する問題です。
位置特定は、1つの物体に対して画像内に「犬」など写っている場所を特定し、矩形で囲むという問題です。
物体検出は、全ての物体に対して位置特定し、矩形で囲むという問題です。
セグメンテーションは、物体を矩形で囲むのではなく、物体の輪郭をピクセル単位で検出するという問題です。
RNNの基本
これまでCNNについて説明してきましたが、ここではRNNについて説明していきたいと思います。
RNNとは
RNNとはRecurrent Neural Networkの略であり、時系列データに対応したニューラルネットワークです。
時系列データは、特定の情報について、時間順序を追って取得されたデータのことです。よくある例は、1時間ごとの東京都の降水量、心電図の波形データ、株価などが挙げられます。
時系列データの特徴としては、データをそれぞれを独立したものと見なすのではなく、「ある時点のデータが、それ以降に発生するデータに何らかの影響を及ぼしている」と考えて、分析・予測をしていくという事です。
CNNとRNNの違い
CNNは、データの特徴を抽出するために用いられるものであり、RNNはデータの前後関係を考慮して予測を行うために用いられるものである。という違いがあります。
CNNは入力のサイズが固定されている事など詳しい、違いについてはそれぞれのモデルの構造などを理解しておく必要があります。
RNNの実例
RNNの実例として、分かりやすい例に機械翻訳があります。
おそらく多くの方がGoogle翻訳などを使ったことがあるのではないでしょうか?
近年、Google翻訳の精度が劇的に向上したのは、RNNが適用されたからです。
翻訳機能に関しても、ディープラーニングの進歩により飛躍的に進歩しました。
また、SiriやAlexaなど音声認識にも活用されています!
医療におけるRNNの応用
医療におけるRNNの応用という事で、医療においても時系列データを扱う際はRNNを使用する事があります。
【医療事例でAI解説】RNNの基礎から応用までという記事にいくつか事例があるので見てみてください。
▼ 【医療事例でAI解説】RNNの基礎から応用までの記事はこちら
GANの基本
続いては、GANについて説明していきたいと思います。
GANとは
GANとは、Genera tive Adversarial Networksの略で、日本語では「敵対的生成ネットワーク」と言います。
GANは生成モデルの一種であり、データから特徴を学習することで、実在しないデータを生成したり、存在するデータの特徴に沿って変換できるという特徴を持っています。
例えば、実在しないものを生成すると言うのは、
その他に画像のスタイルを変えるという例では、
ウマとシマウマ同士で見た目を変換するというスタイルの変換などを行うことが出来ます。
より詳細にGANについて知りたい方は、こちらの記事を参考にしてみてください。
▼ GANについてまとめられている記事はこちら
GANを使った実例
GANを使った実例としては、
高品質の画像を作る 文章から画像を起こす 画像を翻訳する 動画を翻訳する 画像の特定領域を変換する スタイルを変換処理する
高品質の画像を作る
まずは、高品質の画像を作り出せるという特徴があります。
低品質の画像から高い解像度のデータを作ることやいくつかの顔の画像を入れて、実在しない人の顔の画像を作り出すことも行われています。
超解像と呼ばれる高画質画像を作る技術として応用されています。
文章から画像を起こす
また、画像をテキストなどの情報から生成することも可能です。
現在はだんだんと質の高い画像を生成できるようになってきました。
これにより、脚本から動画をを作ることも可能になると考えられます。
画像を翻訳する
1つの画像から違う雰囲気の画像に翻訳することも行われています。
例えば、アニメ風な絵を浮世絵風の絵に変換するなどを行うことが出来ます。
動画を翻訳する
動画から動画へと翻訳する技術も登場してきています。
この技術を使って、生存していないニュースキャスターが朝のニュース番組に登場するなんて可能性もあるかもしれません。
画像の特定領域を変換する
画像の中にある特定の領域を別のものに変換する事も出来ます。
例えば、画像で人物の服装をセーターからTシャツに変えるなどの変更が可能になります。
スタイルを変換処理する
こちらは上でも紹介しましたが、GANを使えば、2つの異なる画像のスタイルを交換することも可能です。
例えばウマとシマウマの画像では、ウマがシマウマに変わったり、その反対にシマウマがウマになったりできるのです。
GANを使ったサービス例
米ニューヨーク・タイムズの報道をきっかけとして、AI(人工知能)技術により、存在しない人物の顔写真を作成できるサイト「Generated Photos」も登場しました。
AIで存在しない人物の顔写真を作成できるサイトで個人利用は無料のサイトです。
ぜひ一度使ってみて体感してみてください。
医療におけるGANの応用
医療においても、GANは多くの研究で使われています。
医用画像は画像枚数を集めるのが難しいという事から、GANを用いてリアルな画像を生成して画像枚数を増やすという方法に使われたりしています。
AI技術「GAN」を用いた本物そっくりな網膜剥離画像生成技術を開発したという事例もあります。
強化学習の基本
続いては、強化学習について説明していきたいと思います。
強化学習とは
強化学習は、エージェントが何らかの行動をすると、その環境下におけるエージェントを取り巻く状態が変化し、その結果が報酬としてエージェントに対してフィードバックされていくという構造になっています。
その報酬を最大化させるために、エージェントの行動を最適化していくのが強化学習の基本的なモデルとなります。
もう少し分かりやすく、迷路を例に考えてみると、エージェントとして、迷路を進んでいくキャラクターみたいなものを想像してみて、環境というのは迷路の全体(マップ)だと考えてください。
すると、エージェントはとりあえず行動してみて進んだ結果、壁にぶつかってしまった所でゴールに近づいた場合、報酬を貰い、エージェントはその報酬が最大になる様に、つまりはゴールにたどり着くように行動を繰り返します。
強化学習と深層学習(DQN)について
DQNとは、Deep Q-Networkの略であり、ニューラルネットワークの考え方を含めています。
最適行動価値関数をニューラルネットを使った近似関数で求め、ある状態のときに行動ごとのQ値を推定できれば、取るべき最善の行動がわかるという仕組みです。
つまりは、強化学習のプロセスな中に深層学習を用いて最適な方法を探すという方法です。
▼ DQNについてまとめられた記事はこちら
ここで、強化学習を用いた事例をいくつかご紹介します。
▼ AlphaGo
Google社の関連会社であるディープマインド社が開発したコンピュータ囲碁プログラムです。
世界トップ棋士に勝利したことで、一躍有名になりました。
医療における強化学習の応用
医療における強化学習の応用の事例を紹介したいと思います。
Synthetic Sample Selection via Reinforcement Learning
この論文では、GANを用いてデータオーグメンテーションを行い、生成した画像の中から精度向上に寄与するものを強化学習によって取り出し、効率よく学習に意味のある画像を使って精度向上させるという内容です。
The Artificial Intelligence Clinician learns optimal treatment strategies for sepsis in intensive care
また、別の事例として敗血症の治療戦略決定に「強化学習」が応用されている事例もあるそうです。
AIに過去の敗血症の治療データを学習させることで、敗血症の擬似的な治療判断を行うという実験がありました。
自然言語処理・音声認識の基本
続いては、自然言語処理・音声認識について説明していきたいと思います。
音声認識とは
AIを活用した音声認識は、昨今急速に身近な存在になりつつあります。
例えば、「Siri」や「Alexa」など話しかけるだけで音声が認識され、即時に回答を得たり画面の操作をしたりすることが可能になっています。
音声認識とは、人間が話した声を解析し、文字(テキスト)に変換する技術のことをいいます。
音声認識の流れ
音声認識の流れについては、主に音として認識するための音響モデル、そして言葉として認識するための言語モデルという流れになっています。
従来の流れから、AIによる音声認識技術が進歩したことにより飛躍的に音声認識は進化しました。
こちらの記事で、音声認識についてはとても分かりやすく解説されていたので参考にしてみてください。
▼ 音声認識についてまとめられた記事はこちら
https://business.ntt-east.co.jp/content/cloudsolution/column-253.html
自然言語処理とは
自然言語処理とは、人間の言語(自然言語)を機械で処理し、内容を抽出することです。
具体的には、言葉や文章をそれらの言葉が持つ意味をさまざまな方法で解析する事を指します。
自然言語処理では、主にこれらのステップを経て文章を解析します。
形態素解析 構文解析 意味解析 文脈解析
▼ それぞれ自然言語処理について詳しく知りたい方はこちら
自然言語処理のアルゴリズム
自然言語処理の代表的なアルゴリズムにはこれらが挙げられます。
RNNLM Word2Vec Doc2Vec Attention GloVe seq2seq Transformer GPT BERT
もちろん、これらが全てではありませんがこれらのアルゴリズムがあります。
医療における自然言語処理
ここで医療における自然言語処理を実際にやってみたいと思います。
別記事で医療における自然言語処理を実際にコーディングの実践をしてみたいと思います。
随時更新していくので、少しお待ちください。
ノーコードでAIを作る
ここでは、Pythonを使ってコーディングするのではなく、ノーコード(プログラミングなし)またはローコード(少しのプログラミング)でAIを実装する方法について説明していきます。
実際に、ノーコード、ローコードでもAIが作れる!という事を実感して頂けると思います。
ノーコード・ローコードツールの紹介
現在、AIもノーコードやローコードで実装できるツールが増えてきています。
いくつかノーコード・ローコードの例を紹介していきます。
AI MAKER(https://aimaker.io/) Microsoft Azure Machine Learning Studio(https://ml.azure.com/) Lobe(https://www.lobe.ai/) Orange3(https://orangedatamining.com/) Humanome CatData(https://humanome.jp/activities/catdata/) UMWELT(https://www.tryeting.jp/umwelt/) DataRobot(https://www.datarobot.com/) Prediction One(https://predictionone.sony.biz/)
もちろん、これ以外にもたくさんあります。
無料で使えるものから有料で使えるものまで様々なので色々見てみてくださいね!
画像認識を実践してみよう
ここで医療における画像認識を実際にやってみたいと思います。
別記事で医療における画像認識を実際にコーディングの実践をしてみたいと思います。
▼ pythonとkerasを用いて医用画像分類についてまとめた記事はこちら
テーブルデータによる機械学習を実践してみよう
ここでテーブルデータによる機械学習を実際にやってみたいと思います。
別記事で医療におけるテーブルデータを用いた機械学習を実際にコーディングの実践をしてみたいと思います。
随時更新していくので、少しお待ちください。
少ないデータで実践する方法
ここでは、少ないデータでも深層学習を実践する方法について説明していきます。
医療におけるデータは個人情報などの観点から大量のデータを集める事が難しいという問題があります。
そこで、少ないデータでも学習を行うためのいくつかの方法があるので紹介していきます。
限られたデータにおける様々な工夫の方法
医療のようにデータの数が限られている場合は、いくつかの工夫をする事で改善する事が出来ます。
多くの研究では、こうした工夫をしながら高精度な結果を出している事も少なくありません。
これからいくつか限られたデータにおける様々な工夫の方法について紹介していきます。
正則化 転移学習 半教師あり学習 連合学習 データ拡張(data augmentation)
もちろんこれらが全てではありませんが、このような工夫の方法があります。
少ないデータで深層学習をやってみよう
ここで少ないデータで深層学習を実際にやってみたいと思います。
別記事で医療における少ないデータによる深層学習を実際にコーディングの実践をしてみたいと思います。
随時更新していくので、少しお待ちください。
まとめ
今回の記事では、AI概論の応用・実践について知りたい。医療におけるAIの応用方法を知りたい。プログラミングを実践してみたい。
という方のために【AIを実際に使ってみたい人向け】医療AI概論の応用・実践編をまとめて解説しました!
この記事を読めば「医療AIの応用から実践するまでの全体像」がお分かりいただけたと思います。
コメント