5.1 5.2 LSTM · 2020-03-23 · 図1.1 実際に使用されているctg 図1.2 ctg 波形の例...
Transcript of 5.1 5.2 LSTM · 2020-03-23 · 図1.1 実際に使用されているctg 図1.2 ctg 波形の例...
目次
第 1章 序論 1
1.1 背景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 周産期医療と CTG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
胎児機能不全 (non-reassuring fetal status) . . . . . . . . . . . . . . . . . . 1
CTG(胎児心拍陣痛図) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 CTGを利用した従来の分娩の問題点 . . . . . . . . . . . . . . . . . . . . . . 2
1.2 目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
第 2章 理論 4
2.1 機械学習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 機械学習の手法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
教師あり学習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
教師なし学習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
半教師あり学習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
強化学習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 ニューラルネットワーク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 深層学習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.1 RNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.2 LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.3 CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.4 NIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 CTGにおける胎児の判断基準 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
第 3章 提案手法 8
3.1 深層学習を利用した CTG波形の解析 . . . . . . . . . . . . . . . . . . . . . . . . . . 8
第 4章 実装 9
4.1 元データの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2 データの加工 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3 データの振り分け . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3.1 データ振り分けシステム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4 ネットワークの構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
第 5章 評価 17
- i -
5.1 評価方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2 LSTMを利用した解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2.1 条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2.2 結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.3 NINを利用した解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.3.1 pH=7.2~7.3を除いた場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.3.2 pH=7.2を閾値とした場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.4 考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
第 6章 結論 20
6.1 今後の展望 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
謝辞 21
参考文献 22
- ii -
図目次
1.1 実際に使用されている CTG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 CTG波形の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1 ニューラルネットワークの構成図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 LSTMのネットワーク構成図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 CNNのネットワーク構成図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 NINのネットワーク構成図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1 新生児の pH分布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2 加工後の CTG画像データ例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3 データの不足分を黒で埋めたグラフの例 . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4 データ振り分けシステムのトップ画面 . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.5 データ振り分けシステムの分類画面 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.6 振り分け対象となるデータの pH分布 . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1 LSTMを用いた解析結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2 NINを用いた解析結果 (pH=7.2~7.3を除いた場合) . . . . . . . . . . . . . . . . . . 18
5.3 NINを用いた解析結果 (pH=7.2を閾値とした場合) . . . . . . . . . . . . . . . . . . 19
- iii -
表目次
4.1 CTGデータファイルの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2 メタデータファイルの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
- iv -
第 1章
序論
1.1 背景
1.1.1 周産期医療と CTG
胎児機能不全 (non-reassuring fetal status)
胎児機能不全とは,「妊娠中あるいは分娩中に胎児の状態を評価する臨床検査において “ 正常でない
所見 ” が存在し,胎児の健康に問題がある,あるいは将来問題が生じるかもしれないと判断された状
態」と日本産科婦人科学会で定義されている病態である.この診断の重要な所見は胎児の低酸素症とア
シドーシス*1で,これが増悪すると,低酸素性虚血性脳症 (HIE)*2や脳性麻痺 (知能障害や運動麻痺等),
最悪の場合胎児死亡に至る.
胎児機能不全の原因としては,子宮内胎児発育不全や妊娠高血圧症候群,分娩時における臍帯の圧
迫・下垂・脱出等が挙げられる.中でも,分娩時の臍帯圧迫等が原因で発症する胎児機能不全は急性胎
児機能不全とされ,後述する CTGモニタリング等により発見される.
これに対する治療として,胎児の低酸素状態を改善するため,母体の体位変換や母体への酸素投与,
子宮収縮抑制剤の投与等を行い,改善されない場合は,器械分娩や帝王切開といった急速分娩を行う必
要がある.
CTG(胎児心拍陣痛図)
周産期医療において,胎児心拍数と子宮収縮圧の経時的変化を記録した CTG *3は,胎児の状態を把
握し評価する手法として広く用いられている.CTGは,分娩中に生じ得る胎児の低酸素やアシドーシ
スを早期発見し,生まれてくる胎児の低酸素脳症や脳性麻痺を減らす為に作られた物であり,産婦人科
医はこの CTG 波形を元に分娩方法を判断している.
次の図 1.1に実際分娩室で使用されている CTGを,図 1.2に CTG波形の例を示す.
*1 体液が正常よりも酸性に傾いた状態.*2 Hypoxic Ischemic Encephalopathy.周産期における胎児の酸素欠乏と脳血流の途絶によって生じる脳障害の臨床的,病理学的所見の総称と定義されている.長時間の分娩により,脳への酸素供給が低下し,脳細胞が様々な障害を起こした状態であり,新生児の成長と共に後遺症として脳性麻痺が出現することが多い.
*3 CardioTocoGram.胎児心拍陣痛図.胎児心拍数計と外側陣痛計それぞれから得られた波形を並べた物.
- 1 -
図 1.1 実際に使用されている CTG
図 1.2 CTG波形の例
1.1.2 CTGを利用した従来の分娩の問題点
CTG及び CTGを利用した従来の分娩には,次のような問題がある.まず,CTGは,低酸素やアシ
ドーシスに対する偽陰性率*4は低いものの,偽陽性率*5は高い [1]為,不要な帝王切開や器械分娩の要
*4 正常な結果であったにもかかわらず 1 週間以内に児が死亡する確率
- 2 -
因となっている.また,CTG の波形は複雑であり,判定は目視によって行われている為,判断する医
療従事者の経験や技量に左右される.その為,経験豊富な医師が不足している地域では,その他の地域
と比較して出産のリスクが高いと推定される.
1.2 目的
CTGの補助技術として波形の解析に深層学習を利用する.これにより,検者間誤差や検者内誤差を
減らし,より正しく胎児の低酸素やアシドーシスを判定することが出来ると考えられる.また,深層学
習を利用することで,既存の判定基準以外にアシドーシスを発見することが出来る新たな基準を作り出
す可能性にも注目している.尚,本研究は福岡大学病院の臨床医の発案により行われている共同研究で
ある為、医療現場のニーズに応え、実際に現場で利用出来るシステムを作り、母児にとって安全な出産
になるようサポートすることが本研究の最終的な目的である.
*5 結果が異常であったにもかかわらず新生児に異常がない確率
- 3 -
第 2章
理論
2.1 機械学習
2.1.1 機械学習の手法
一般的な機械学習の手法は,以下に示す 4つである.中でも,教師あり学習と教師なし学習が広く用
いられており,教師あり学習は機械学習全体の約 7割を占めている [2].
• 教師あり学習• 教師なし学習• 半教師あり学習• 強化学習
教師あり学習
教師あり学習は,ラベル付きの手本,即ち既知の望ましい出力が決まっている入力などを使いトレー
ニングを行うアルゴリズムである.この学習アルゴリズムは,一連の入力とそれに対応する正しい出力
を受け取り,アルゴリズム自身の出力と正しい出力を比較しエラーを検出する.そして,モデルに適切
な改良を加えていくことで学習を進める.このアルゴリズムは一般に,過去のデータを基に将来起こり
そうな事象を予測する為に用いられる.
教師なし学習
教師なし学習は,望ましい出力が何であるかわからないまま,つまり正しい答えが与えられないまま
学習していく手法である.この手法は,データを探索しその内部に何らかの構造を見つけ出すことが目
的である.
半教師あり学習
半教師あり学習は,ラベル付きデータとラベル無しデータの両方を用いて学習を行う手法である.こ
の手法は,教師あり学習でトレーニングを行おうとするとコストが高くなりすぎる場合に有効である.
- 4 -
強化学習
強化学習は,試行錯誤を通してどの行動が最大の報酬を生み出すかを探し出す手法である.エージェ
ント (意思決定者又は学習者)は,限られた一定の期間で見込まれる報酬が最大になるような行動を選択
することが目標である.エージェントは,より適切な方針に従うほど,より速やかに目標を達成できる
為,最良の方針を学習することが強化学習の目的と言える.
2.1.2 ニューラルネットワーク
ニューラルネットワーク (Neural Network)とは,生物の脳の神経細胞,即ちニューロンをモデルと
したアルゴリズムであり,入力層,隠れ層,出力層を持つ.各層は複数のノードがエッジで結ばれる構
造となっている.隠れ層は複数持つことが可能であり,特に深い (多い)隠れ層を持つものを後述する深
層学習と呼ぶ.各層は活性化関数と呼ばれる関数を持ち,エッジは重みを持つことが可能である.次の
図 2.1にニューラルネットワークの構成を示す.
図 2.1 ニューラルネットワークの構成図
2.2 深層学習
深層学習 (Deep Learning)とは,機械学習の一種であるニューラルネットワークの階層を深めたアル
ゴリズムである.[3]
2.2.1 RNN
RNN(Recurrent Neural Networks)は,再帰型ニューラルネットワークと呼ばれ,数値の時系列デー
タ等のシーケンシャルデータのパターンを認識するように設計されたニューラルネットワークモデルで
ある.
- 5 -
2.2.2 LSTM
LSTMとは,前項で述べた RNNの拡張版として用いられているニューラルネットワークアーキテク
チャの一種である.このネットワークでは,従来の RNNでは学習が困難であった長期依存を学習する
ことができる.次の図 2.2に LSTMのネットワーク構成を示す.
図 2.2 LSTMのネットワーク構成図
2.2.3 CNN
CNN は,ニューラルネットワークの一種であり,画像のフィルタ処理を行い局所的な特徴を抽出す
る畳み込み層と,畳み込み層から出力された特徴マップを縮小しまとめるプーリング層を持つ.CNN
には移動普遍性があり,特徴を検知する対象が入力データのどこにあっても (位置がずれていても) 検
知することが可能である [4].次の図 2.3に CNNのネットワーク構成を示す.
図 2.3 CNNのネットワーク構成図
2.2.4 NIN
NIN(Network in Network)とは,Min Linらが提案したニューラルネットワークアーキテクチャで
あり,前項の CNN における線形フィルタを多層パーセプトロンに置き換えたものである.CNN が,
- 6 -
層が進む程広域をフィルタリングし高次の概念を生成するのに対し,NINは,局所的な画像を統合し高
次の概念になるより前により良い抽象化をする.[5]
次の図 2.4に NINのネットワーク構成を示す.
図 2.4 NINのネットワーク構成図
2.3 CTGにおける胎児の判断基準
胎児が健康的な状態であるかを CTGモニタリングにより確認する.一般的に以下の 4つの項目を充
たす場合,胎児はアシドーシスに陥っていないと言える [6].但し,急性胎児機能不全は分娩中に起こる
為,本陣痛突入時や分娩開始時には正常な波形であったにも拘わらず,分娩中に状態が悪化する場合も
ある.その為,定期的に CTG波形を確認する必要がある.
• 胎児心拍数の基線 (ベースライン)が 110~160bpmである
• 基線細変動がある• 一過性頻脈がある• 一過性徐脈がない
子宮収縮圧は,母体の状態や外側陣痛計の装着の仕方等により値が変化する為,胎児心拍数と異なり
絶対値に大きな有効性は無く,経時的な値の増減こそが重要とされる.即ち,値の増減によって作られ
る波形の山を目視で捉え,どのタイミングで陣痛が起こっているかを把握し,胎児心拍数を併せて確認
することで,胎児の状態を予測出来るのである.
- 7 -
第 3章
提案手法
3.1 深層学習を利用した CTG波形の解析
CTG 波形を深層学習を利用して解析する.前章で述べた通り,胎児心拍数と子宮収縮圧 (外側陣痛
計の値)の変化は,起こるタイミングにより原因や危険度が異なる.その為,時系列データの扱いに長
けた LSTMネットワークを利用することで,有効な結果が得られるのではないかと推測される.また,
胎児心拍数と子宮収縮圧は相互の関係が重要とされる.その為,胎児心拍数と子宮収縮圧の 2つの波形
を 1つの画像とみなし,画像処理に適している CNNの一種である NINを利用し.LSTMネットワー
クと比較することで,アシドーシスの認識精度が高くなる手法を模索する.
- 8 -
第 4章
実装
4.1 元データの概要
まず,今回の学習の元となるデータは,福岡大学病院,九州大学病院,東野産婦人科,井槌病院の 4
箇所から得られた物であり,計 11540症例である.
元データは,全て csvファイルに保存されている.1サンプル,つまり 1症例毎に,次の 2つの csv
ファイルを持つ.
• 時刻,陣痛計の値,胎児心拍数の 3つのフィールドを持つデータファイル (4.1)
• 分娩日時,新生児の pH,Apgarスコア等,妊婦やその児の情報を扱うメタファイル (4.2)
表 4.1 CTGデータファイルの例
分娩時刻 胎児心拍 陣痛計
0 75 -5
0.25 75 -5
0.5 0 -6
0.75 0 -6
1 0 -6
1.25 0 -6
: : :
759.75 105 37
760 105 36
760.25 105 35
760.5 105 34
760.75 105 32
761 105 29
: : :
1症例ごとにプロジェクト IDという一意の IDを持ち,プロジェクト IDはファイル名とメタデータ
ファイルの内部に記載されている.
- 9 -
表 4.2 メタデータファイルの例
プロジェクト ID 分娩年月日 分娩時刻_時 分娩時刻_分 分娩様式 … 分娩週数_週
FDB160325 2016/11/16 23 3 自然経腟 … 37
分娩週数_日 出生体重 性別 Apgarスコア 1 Apgarスコア 5 臍帯動脈血 pH 退院時生死
1 2389 女 8 9 7.212 生
新生児の pH分布を次の図 4.1に示す.
図 4.1 新生児の pH分布
4.2 データの加工
元データの陣痛計と胎児心拍数の値は,0.25秒毎に記録されている.その為,CTG波形は 1秒間に
4ドット描画される.学習用にデータを加工するにあたり,胎児心拍数の波形の上下動が細かすぎるこ
とから,8ドット (2秒分)を 1ドットにダウンサンプリングし調整する.胎児心拍数を緑のドットとし
て表す.
また,陣痛計の値は前述した通り絶対値に大きな有効性は無く,どのタイミングで陣痛が起こってい
るかが重要である為,値を次の式で正規化し,陣痛計の値の極大値周辺 (波形の山に相当する部分)を赤
い帯として描画する.
x = ((x−mu) ∗ (25/sigma) + 50
これにより,2本の波形が並行する形よりも陣痛計の値と胎児心拍数の関係をコンピュータが捉えや
すくなると期待出来る.
- 10 -
更に,胎児心拍数における基線の正常範囲である 110~160bpmを除いた部分 (bpm160以上又は 110
未満)を青色で描画し,基線の位置や頻脈・徐脈をわかりやすくする.胎児心拍数は,従来出力されて
いる CTG波形と同様に,最大値を 210bpm,最小値を 50bpmとする.その為,グラフの縦軸の幅は
160bpmであるが,今回は 1/1.6にダウンサンプリングし,100ドットで表現する.
該当するソースコードを次に示す.
1 def make_sample(result , id, offset , duration , debug=False , N=8):
2 top_time = result[id][2]
3 data_len = len(result[id ][0])/4
4 bottom_time = top_time + data_len
5 if bottom_time < offset + duration or top_time > offset:
6 print "out of bounds", top_time , offset , offset + duration , bottom_time
7 return None
8
9 a = int((offset -top_time )*4)
10 b = int(( offset+duration -top_time )*4)
11 y = result[id ][0][a:b]
12 z = result[id ][1][a:b]
13 pH = result[id][3]
14
15 y = y[-1::-1]
16 z = z[-1::-1]
17 x = np.arange(len(y))
18
19 y2 = np.zeros((len(y)+N -1)//N)
20 z2 = np.zeros((len(y)+N -1)//N)
21 for i in range(0,len(y),N):
22 yy = y[i:i+N]
23 zz = z[i:i+N]
24 if(np.max(yy)>0):
25 y2[i//N] = np.mean(yy[yy >0])
26 else:
27 y2[i//N] = 0
28 if(np.max(zz)>0):
29 z2[i//N] = np.mean(zz[zz >0])
30 else:
31 z2[i//N] = 0
32
33 mu = np.mean(z2)
34 sigma = np.std(z2)
35 z2 = ((z2 -mu )*(25/ sigma )+50)
36
37 width = duration *4/N
38 height_hr = 160
39 height_bp = 160
40
41 _sample = np.zeros([3,width ,height_hr],dtype=np.float32)
42 hr_sample = _sample [1]
43 bp_sample = _sample [0]
44 zo_sample = _sample [2]
45
46 zo_sample [:,:int (110 -50)] = 1.0
47 zo_sample[:,int (160 -50):] = 1.0
48
49 for t in range(width ):
50 pos_y = int(min(max(y2[t] -50 ,0) ,159))
51 pos_z = int(min(z2[t] ,99))
- 11 -
52 if pos_y > 0:
53 hr_sample[t][: pos_y] = 0.5
54 hr_sample[t][ pos_y] = 1.0
55 hr_sample[t][ pos_y +1:] = 0.0
56
57 bp_sample[t][:] = pos_z /100.0
58
59 hr_zero_rate = np.average(y == 0)
60 project_id = result[id][4]
61 apgarScore_1 = result[id][5]
62 apgarScore_5 = result[id][6]
63
64 return hr_zero_rate , pH, _sample , project_id , apgarScore_1 , apgarScore_5
65
66 if False:
67 x2 = np.arange(len(y2))
68 plt.figure(figsize =(10 ,9))
69 plt.plot(x2 ,y2 ,lw=2)
70 plt.ylim (50 ,210)
71 plt.xlim(duration /2,0)
72 plt.title("heart rate")
73 plt.xlabel (" duration ")
74 plt.ylabel ("vals")
75 plt.savefig(str(id)+" _graph.png",dpi =500)
76 plt.show()
77
78 plt.figure(figsize =(10 ,9))
79 plt.plot(x2 ,z2 ,lw=2)
80 plt.ylim (0 ,100)
81 plt.xlim(duration /2,0)
82 plt.title("baby pressure ")
83 plt.xlabel (" duration ")
84 plt.ylabel ("vals")
85 plt.savefig(str(id)+" _graph.png",dpi =500)
86 plt.show()
加工後のデータの例を図 4.2に示す.
図 4.2 加工後の CTG画像データ例
図 4.2は,分娩 30~40分前から過去へ 20分間 (1200秒)のデータを加工したものであり,グラフの
縦軸の 0が 210bpmに相当する.横軸の値は大きくなるほど時間が経過している (分娩時刻に近づいて
いる)ことを示す.
- 12 -
4.3 データの振り分け
元となるデータの中には,陣痛計や心拍数計の装着ミスや位置ずれ等,様々な原因により,値が正し
く取得出来ない場合がある.その為,加工する対象となるデータの内胎児心拍数が 0の割合が 20%以
上のデータは除くこととした.また,pHの値が高すぎる場合 (pH> 7.4)も同様の理由により除外し
た.波形は正常であるのに新生児の pHが低い (アシドーシスである)場合や Apgarスコアが低い場合,
その反対の場合もあり,このようなデータが学習の妨げになる可能性が高いことから,後述するデータ
振り分けシステムを用いて,数多くの分娩に立ち会っている臨床医に例外的なデータを手動で除いて貰
うことで,精度の向上を試みた.
手動振り分けに用いるデータは,分娩 30分前から 60分前までの 30分間のうち,22分以上データが
存在する症例に限定した.22 分以上 30 分未満のデータを持つ症例に対しては,30 分に満たない部分
を黒で埋めたグラフを生成した.これは,グラフの形を統一し振り分けを公平に行いやすくするためで
ある.
次の図 4.3に不足分を黒で埋めたグラフの例と該当するソースコードの一部を示す.
図 4.3 データの不足分を黒で埋めたグラフの例
1 def black_padding(bary ,wid):
2 bwid = wid - bary.shape [1]
3 zeroPadding = np.zeros((bwid ,160))
4 aary_0 = np.vstack ((bary[0], zeroPadding ))
5 aary_1 = np.vstack ((bary[1], zeroPadding ))
6 aary_2 = np.vstack ((bary[2], zeroPadding ))
7
8 aary = np.vstack ((aary_0 ,aary_1 ,aary_2 ))
9 aary = aary.reshape(3,wid ,160)
10
11 plt.imshow(aary.transpose (2 ,1 ,0)[:: -1])
12
13 return aary
4.3.1 データ振り分けシステム
データ振り分けシステムのトップ画面を 4.4に,分類画面を 4.5に示す.
- 13 -
図 4.4 データ振り分けシステムのトップ画面
図 4.5 データ振り分けシステムの分類画面
このシステムでは,分類画面で加工後の CTG画像を一覧表示している.各画像の上部に,プロジェ
クト ID,新生児の pH,出生から 1分後の Apgarスコア,出生から 5分後の Apgarスコアを表示し,
画像に表される波形とこれらの数値の関係が典型的なものであるかを画像右側に示されるボタンで分類
する.分類が行いやすくなるよう,新生児の pHで分類画面を 3つに分けている.次の図 4.6に振り分
けるデータの pH分布を示す.
分類画面は次の基準により 3つに分類されている.
• pHが 7.15未満の場合:赤 (4.3%)
• 7.15以上 7.20未満:黄 (6.0%)
• 7.20以上 7.40未満:青 (89.7%)
- 14 -
図 4.6 振り分け対象となるデータの pH分布
4.4 ネットワークの構成
実際の解析に用いる NINネットワークを次に示す.
Listing 4.1 NINネットワーク
1 import chainer
2 import chainer.functions as F
3 import chainer.initializers as I
4 import chainer.links as L
5 print (chainer.__version__)
6
7 class NIN(chainer.Chain):
8
9 """ Network -in-Network example model ."""
10
11 insize = 227
12
13 def __init__(self):
14 super(NIN , self). __init__ ()
15 conv_init = I.HeNormal ()
16
17 with self.init_scope ():
18 self.mlpconv1 = L.MLPConvolution2D(
19 None , (96, 96, 96), ksize=11, stride=4, conv_init=conv_init)
20 self.mlpconv2 = L.MLPConvolution2D(
21 None , (256, 256, 256), ksize=5, pad=2, conv_init=conv_init)
22 self.mlpconv3 = L.MLPConvolution2D(
23 None , (384, 384, 384), ksize=3, pad=1, conv_init=conv_init)
24 self.mlpconv4 = L.MLPConvolution2D(
- 15 -
25 None , (1024, 1024, 1000), ksize=3, pad=1, conv_init=conv_init)
26 self.bn = L.BatchNormalization (3)
27 self.lin = L.Linear(None , 2)
28
29 self.prediction = []
30
31 def __call__(self , x, t):
32 h = self.bn(x)
33 h = F.max_pooling_2d(F.relu(self.mlpconv1(h)), 3, stride =2)
34 print h.data.shape
35 h = F.max_pooling_2d(F.relu(self.mlpconv2(h)), 3, stride =2)
36 print h.data.shape
37 h = F.max_pooling_2d(F.relu(self.mlpconv3(h)), 3, stride =2)
38 print h.data.shape
39 h = self.mlpconv4(F.dropout(h))
40 print h.data.shape
41 h = self.lin(F.dropout(h))
42
43 if t is None:
44 self.prediction += list( cuda.to_cpu(F.softmax(h).data) )
45 return
46
47 loss = F.softmax_cross_entropy(h, t)
48 chainer.report({’loss ’: loss , ’accuracy ’: F.accuracy(h, t)}, self)
49 return loss
- 16 -
第 5章
評価
5.1 評価方法
LSTMを利用した解析は折れ線グラフ,NINを利用した解析は ROC曲線を用いて精度を評価する.
5.2 LSTMを利用した解析
5.2.1 条件
25 分以上の長さがあるデータを用いる.解析に用いるデータ 8598 件のうち 75% を学習用の訓練
データ,残りの 25% をテストデータとする.出産 25 分前から 10 分前までの 15 分間のデータを用
いる.
5.2.2 結果
LSTMを用いた解析の結果を図 5.1に示す.
図 5.1 LSTMを用いた解析結果
青いグラフが訓練データ,赤いグラフがテストデータの正解率である.グラフ訓練データの正解率が
90% まで順調に上昇しているのに対し,テストデータは 60~65% 程度を山に正解率が下がっている.
- 17 -
5.3 NINを利用した解析
5.3.1 pH=7.2~7.3を除いた場合
条件
まず,分娩の 30~52分前の範囲のデータが無い症例は除くこととした.また,アシドーシスとは言
えないが比較的 pHが低い値を持つデータに関しても,学習精度が低下する原因になり得ると推定され
る為,pHの値が 7.2~7.3の範囲であるデータも除いた.以上の条件を充たす 4921件のデータを用い
解析を行った.
結果
解析結果を図 5.2に示す.
図 5.2 NINを用いた解析結果 (pH=7.2~7.3を除いた場合)
ROC曲線の面積を表し数値が大きいほど精度が高いとされる AUC(Area under the curve)の値は
0.75であり,中程度の精度であると言える.
5.3.2 pH=7.2を閾値とした場合
条件
前項と同様に,分娩の 30~52分前の範囲のデータが無い症例は除き,条件を充たす 7367件のデータ
を用い解析を行った.
結果
解析結果を図 5.3に示す.
AUCの値は 0.67であり,前項の条件より精度が低下した.
- 18 -
図 5.3 NINを用いた解析結果 (pH=7.2を閾値とした場合)
5.4 考察
この実験方法ではデータの件数や長さ,評価手法等様々な条件が異なる為,厳密に比較することは難
しく,条件を統一して再度検証を行う必要があると考えられる.
NIN を利用した解析においては,アシドーシスの閾値に近い pH 値を持つデータを除いた場合の方
が,単一の閾値で 2値分類した場合より精度が高くなるという結果が得られた.このことから,複雑な
波形解析においては,典型的な正例とも負例とも言えない中間的な値を除いた訓練データを用いた方が
認識精度が上昇するのではないかと考えられる.
- 19 -
第 6章
結論
6.1 今後の展望
LSTMと NINという 2種のネットワークを用い精度を比較した今回の検証から,NINを利用した方
がアシドーシスの認識精度は高くなるという結果が得られた.しかし,一番精度の高い場合でも AUC
面積は 0.75と,中程度の認識精度にとどまった.実際に医療現場で有効に利用するには,精度が足り
ないと言える.そのため,今後は様々なネットワークや条件を比較し,少しでも認識精度が高くなる方
法を検証し続けていきたい.
- 20 -
参考文献
[1] 山口県立総合医療センター : “胎児心拍数モニタリング” http://eyume.med.yamaguchi-u.ac.
jp/blog/wp-content/uploads/2015/07/2015e5a4a7e5ada6e8ac9be7bea9efbc9actg1.pdf
(2017/07/31).
[2] SAS : “機 械 学 習 と は” https://www.sas.com/ja_jp/insights/analytics/
machine-learning.html (2018/01/16).
[3] Tick Tack World : “やさしい深層学習の原理” http://gagbot.net/machine-learning/ml4
(2018/01/16).
[4] DeepAge : “定番の Convolutional Neu-ral Network をゼロから理解する” https://deepage.
net/deep_learning/2016/11/07/convolutional_neural_network.html (2017/07/31).
[5] Cornell University Library : “Network In Network” https://arxiv.org/abs/1312.4400
(2018/1/11).
[6] 医療法人大川産婦人科病院 : “CTG の読み方” http://www.okawa-hosp.com/CTG/CTG-1.htm
(2018/01/15).
[7] 奥村晴彦 著 : “LATEX2ε美文書作成入門 改訂第 3版” (技術評論社 2004, 403pp).
- 22 -