ニューラルネットワークを使った画像認識を行い、色々なパラメータで
正解率がどのように変わるのか試してみた。
1.背景
機械学習では、codExaさんに大変お世話になりました(無料講座)。
そこに下記の有料講座があり、面白そうだったので申し込んでみた。
最後にレントゲン写真から肺炎の有無を判定する事例があり、
ニューラルネットワークを使っていた。そこで気になった記述(*1)があり、
自分で色々試してみる事にした。
(*1)”一概に「正しい構造のCNN」はありません。データの特性に応じて「正解」は異なります。
CNNのハイパーパラメータを調整して、扱っているデータセットに対して最も適切な構造の
CNNモデルを構築することが重要です。 ” (5.3 CNNモデル訓練 の末尾文章)
2.基本形
上記チュートリアルのCNN基本形は以下の通りである。
(1)入力データは64×64画素で3チャネル(カラーなのでRGBの3種類) :上図左端の黒い直方体
(2)上記を畳み込み演算(*2)して特徴量を抽出:上図左端の青い三角線
抽出した結果の出力データ(*3):上図左から2番目の黒い直方体
(*2)フィルタサイズが3x3、それを移動する距離(スライドサイズ)が縦横とも1、フィルタ数が96
(*3)データ量は、(入力データ数ーフィルタサイズ)÷スライドサイズ+1=62の2乗(縦横)になり、
更にフィルタ数96を掛けたものになる。
(3)上記の出力データを圧縮(*4):上記構造図左から2番目の青い三角線
圧縮した結果の出力データ(*5):上記構造図左から3番目の黒い直方体
(*4)プーリングサイズ(下図左側の網掛け部分)2x2、
それを移動する距離(スライドサイズ)が縦横とも2
(*5)データ量は、(入力データ数ープーリングサイズ)÷スライドサイズ+1=31の2乗(縦横)になり、
更にフィルタ数96を掛けたものになる(フィルタ方向は圧縮なし)。
(4)上記の3次元データを全て結合して1次元にしたもの(*6):上記構造図右から3番目の黒い長方形
(*6)31×31×96=92256
(5)上記データを更に全て結合して適度な数にしたもの:上記構造図右から2番目の黒い長方形
(6)上記データを基に肺炎の有無(1なら有り、0なら無し)を判定した結果:上記構造図の右端
次回へつづく
そこで、パラメータを色々変えて試してみることにした。
しかし、高い正解率を得る為には内容を理解する必要はある(機械学習には色々方法があり、
ニューラルネットワークも色々なモデルがあるので、どれが最適化を判断する為)。
今回は、内容の理解は棚上げして、CNNでどこまで正解率が変わるかを試す事が
目的である。そもそも、機械学習は難しい・・・。