見出し画像

ConvolutionレイヤーのKernelShapeとOutMapsをアレコレ設定するとどうなるの?


Convolutionレイヤーのパラメータと予測精度、等の関係を確認します

今回は、Convolutionレイヤーの代表的なパラメータであるKernelShapeとOutMapsをアレコレ設定したらどうなるのかを確認します。

  • 具体的な確認内容

    • 予測精度

    • 学習曲線

    • 混同行列

ただし、KernelShapeの設定は、1次元に限定します。

つまり、1D CNNです。

今回の確認において、Convolutionレイヤーの各パラメータ設定値は、以下の通りです。

  • Convolutionレイヤーのパラメータ設定値

    • OutMaps → アレコレ設定します

    • KernelShape → アレコレ設定します(ただし、1次元に限定)

    • BorderMode → valid

    • Strides → 1

    • Dilation → 1

    • Group → 1(デフォルト値)

    • ChannelLast → False(デフォルト値)

    • BaseAxis → 0(デフォルト値)

    • WithBias → True(デフォルト値)

    • ParameterScope → Convolustion(デフォルト値)

    • W.File → 未設定(デフォルト値)

    • W.Initializer → NormalConvolutionGlorot(デフォルト値)

    • W.InitializerMultiplier → 1(デフォルト値)

    • W.LRateMultiplier → 1(デフォルト値)

    • b.File → 未設定(デフォルト値)

    • b.Initializer → Constant(デフォルト値)

    • b.InitializerMultiplier → 0(デフォルト値)

    • b.LRateMultiplier → 1(デフォルト値)

KernelShapeとOutMaps以外は、上記のパラメータで固定します。

AIモデルの構成

今回の確認で使用するAIモデルの構成は、下記の通りです。

1D CNN AIモデル 構成
1D CNNを使用したAIモデルの構成

Inputレイヤーに代入される説明変数は、30日分の日経平均株価(始値、高値、安値、終値)およびVIX指数(始値、高値、安値、終値)です。

また、目的変数は、翌営業日の日経平均株価のローソク足が陽線か陰線かを表す0(陰線) or 1(陽線)のデータです。

KernelShapeと予測精度、学習曲線および混同行列の関係について

先ずは、KernelShapeと予測精度、学習曲線および混同行列の関係について確認したいと思います。

下記は、OutMapsを1に固定し、KernelShapeを10~80とした場合の予測精度、学習曲線および混同行列です。

KernelShapeと予測精度の関係

KernelShape 予測精度
KernelShapeと予測精度の関係

予測精度(ACC)は、KernelShapeの設定によらず、50.0%前後で一定となりました。

KernelShapeと学習曲線の関係

KernelShape 10 OutMaps 1 学習曲線
(a) KernelShape = 10, OutMaps = 1の学習曲線
KernelShape 20 OutMaps 1 学習曲線
(b) KernelShape = 20, OutMaps = 1の学習曲線
KernelShape 40 OutMaps 1 学習曲線
(c) KernelShape = 40, OutMaps = 1の学習曲線
KernelShape 80 OutMaps 1 学習曲線
(d) KernelShape = 80, OutMaps = 1の学習曲線
  • VALIDATION ERRORの最小値

    • KernelShape = 10 → 0.691771

    • KernelShape = 20 → 0.691339

    • KernelShape = 40 → 0.691638

    • KernelShape = 80 → 0.692925

VALIDATION ERRORの最小値には、大きな差分は見られませんでした。

しかし、学習曲線は、KernelShapeの設定値による特徴が確認できました。

KernelShapeが10および20の場合は、VALIDATION ERRORが0.700辺りでほぼ一定となっています。

しかし、KernelShapeが40および80の場合は、始めこそVALIDATION ERRORが一定を保ちますが、途中から右肩上がり、つまり、過学習が進むことが確認できました。

KernelShapeと混同行列の関係

KernelShape 10 OutMaps 1 混同行列
(a) KernelShape = 10, OutMaps = 1の混同行列
KernelShape 20 OutMaps 1 混同行列
(b) KernelShape = 20, OutMaps = 1の混同行列
KernelShape 40 OutMaps 1 混同行列
(c) KernelShape = 40, OutMaps = 1の混同行列
KernelShape 80 OutMaps 1 混同行列
(d) KernelShape = 80, OutMaps = 1の混同行列

混同行列もKernelShapeの設定値による特徴が確認できました。

KernelShapeが10および20の場合は、AIモデルの予測値はy'=0(翌営業日のローソク足が陰線と予測)に偏っています。

しかし、KernelShapeが40および80の場合は、AIモデルの予測がy'=0および1にバラつくことが確認できました。

特に、KernelShapeが80の場合は、y'=0および1に対する分布のバランスが良くなっています。

以上の結果から、1D CNNに対するKernelShapeの設定値は、ある程度大きい数値が望ましいことが確認できました。

OutMapsと予測精度、学習曲線および混同行列の関係について

続いて、OutMapsと予測精度、学習曲線および混同行列の関係について確認したいと思います。

下記は、KernelShapeを10に固定し、OutMapsを1~8とした場合の予測精度、学習曲線および混同行列です。

OutMapsと予測精度の関係

OutMaps 予測精度
OutMapsと予測精度の関係

予測精度(ACC)は、OutMapsを増やすと低下することが確認できました。

OutMapsと学習曲線の関係

KernelShape 10 OutMaps 1 学習曲線
(a) KernelShape = 10, OutMaps = 1の学習曲線
KernelShape 10 OutMaps 2 学習曲線
(b) KernelShape = 10, OutMaps = 2の学習曲線
KernelShape 10 OutMaps 4 学習曲線
(c) KernelShape = 10, OutMaps = 4の学習曲線
KernelShape 10 OutMaps 8 学習曲線
(d) KernelShape = 10, OutMaps = 8の学習曲線
  • VALIDATION ERRORの最小値

    • OutMaps = 1 → 0.691971

    • OutMaps = 2 → 0.691385

    • OutMaps = 4 → 0.693197

    • OutMaps = 8 → 0.694121

VALIDATION ERRORの最小値には、大きな差分は見られませんでした。

また、学習曲線より、OutMapsが2以上で過学習が進むことが確認できました。

VALIDATION ERRORの曲線に着目すると、OutMapsの設定値によって挙動が変化しています。

そして、VALIDATION ERRORは、あるレベルまで上昇した後、頭打ちとなることが分かりました。

OutMapsと混同行列の関係

KernelShape 10 OutMaps 1 混同行列
(a) KernelShape = 10, OutMaps = 1の混同行列
KernelShape 10 OutMaps 2 混同行列
(b) KernelShape = 10, OutMaps = 2の混同行列
KernelShape 10 OutMaps 4 混同行列
(c) KernelShape = 10, OutMaps = 4の混同行列
KernelShape 10 OutMaps 8 混同行列
(d) KernelShape = 10, OutMaps = 8の混同行列

OutMapsが2以上では、AIモデルの予測がy'=0および1にバラつくことが確認できました。

AIモデルの予測のバラつきの観点から、OutMapsの設定値は2以上が望ましいと考えます。

しかし、予測精度の観点では、OutMapsを増やすことで予測精度が低下してしまうため、悩ましいところです。

【追加検証】OutMapsと予測精度、学習曲線および混同行列の関係について

最後に、KernelShapeを40に固定し、OutMapsを1~8とした場合の予測精度、学習曲線および混同行列の関係について確認したいと思います。

OutMapsと予測精度の関係

OutMaps 予測精度 KernelShape 40
OutMapsと予測精度の関係(KernelShape = 40)

KernelShapeを40に設定した場合は、OutMapsを増やすと予測精度(ACC)が増加する傾向にあるようです。

OutMapsと学習曲線の関係

KernelShape 40 OutMaps 1 学習曲線
(a) KernelShape = 40, OutMaps = 1の学習曲線
KernelShape 40 OutMaps 2 学習曲線
(b) KernelShape = 40, OutMaps = 2の学習曲線
KernelShape 40 OutMaps 4 学習曲線
(c) KernelShape = 40, OutMaps = 4の学習曲線
KernelShape 40 OutMaps 8 学習曲線
(d) KernelShape = 40, OutMaps = 8の学習曲線
  • VALIDATION ERRORの最小値

    • OutMaps = 1 → 0.691638

    • OutMaps = 2 → 0.691981

    • OutMaps = 4 → 0.687630

    • OutMaps = 8 → 0.692455

KernelShapeを40に固定し、OutMapsを1~8とした場合の学習曲線は、それほど大きな差分はないことが確認できました。

上記の学習曲線と、KernelShapeを10に固定してOutMapsを1~8とした場合の学習曲線を比較すると、過学習の程度に差が生じているのが分かります。

KernelShapeを10に固定した場合は、40に固定した場合に比べて、COSTおよびTRAINING ERRORが低下し、VALIDATION ERRORが増加しています。

つまり、KernelShapeを10に固定した場合は、40に固定した場合に比べて、過学習が進んでいるということです。

OutMapsと混同行列の関係

KernelShape 40 OutMaps 1 混同行列
(a) KernelShape = 40, OutMaps = 1の混同行列
KernelShape 40 OutMaps 2 混同行列
(b) KernelShape = 40, OutMaps = 2の混同行列
KernelShape 40 OutMaps 4 混同行列
(c) KernelShape = 40, OutMaps = 4の混同行列
KernelShape 40 OutMaps 8 混同行列
(d) KernelShape = 40, OutMaps = 8の混同行列

KernelShapeを40に固定した場合、OutMapsを変更することで、AIモデルの予測がy'=0に偏る傾向にあることが確認できました。

結果まとめ

今回の結果をまとめると、以下の通りです。

  • KernelShapeを10に固定した場合、OutMapsを増やすことで過学習が進む

  • KernelShapeが小さい方が、多い場合に比べて、OutMapsの増加による影響を受けやすい

  • KernelShapeはある程度大きい数値が望ましい

  • OutMapsを1に固定した場合、KernelShapeを増やすことで過学習が進む

  • OutMapsは2以上が望ましい

今回は、ConvolutionレイヤーのKernelShapeおよびOutMapsがAIモデルの予測にどのような影響があるのかを単純に知りたくて確認しました。

しかし、その結果については、分かったようで、良く分からない状況です。

次回は、Convolutionレイヤーと合わせて使用されるPoolingレイヤーについて勉強したいと思います。

ちなみに、Poolingとは、データの集合を一定の規則に基づいて縮小する処理を意味します。

いいなと思ったら応援しよう!