
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モデルの構成は、下記の通りです。

Inputレイヤーに代入される説明変数は、30日分の日経平均株価(始値、高値、安値、終値)およびVIX指数(始値、高値、安値、終値)です。
また、目的変数は、翌営業日の日経平均株価のローソク足が陽線か陰線かを表す0(陰線) or 1(陽線)のデータです。
KernelShapeと予測精度、学習曲線および混同行列の関係について
先ずは、KernelShapeと予測精度、学習曲線および混同行列の関係について確認したいと思います。
下記は、OutMapsを1に固定し、KernelShapeを10~80とした場合の予測精度、学習曲線および混同行列です。
KernelShapeと予測精度の関係

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




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の設定値による特徴が確認できました。
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と予測精度の関係

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




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と混同行列の関係




OutMapsが2以上では、AIモデルの予測がy'=0および1にバラつくことが確認できました。
AIモデルの予測のバラつきの観点から、OutMapsの設定値は2以上が望ましいと考えます。
しかし、予測精度の観点では、OutMapsを増やすことで予測精度が低下してしまうため、悩ましいところです。
【追加検証】OutMapsと予測精度、学習曲線および混同行列の関係について
最後に、KernelShapeを40に固定し、OutMapsを1~8とした場合の予測精度、学習曲線および混同行列の関係について確認したいと思います。
OutMapsと予測精度の関係

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




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を変更することで、AIモデルの予測がy'=0に偏る傾向にあることが確認できました。
結果まとめ
今回の結果をまとめると、以下の通りです。
KernelShapeを10に固定した場合、OutMapsを増やすことで過学習が進む
KernelShapeが小さい方が、多い場合に比べて、OutMapsの増加による影響を受けやすい
KernelShapeはある程度大きい数値が望ましい
OutMapsを1に固定した場合、KernelShapeを増やすことで過学習が進む
OutMapsは2以上が望ましい
今回は、ConvolutionレイヤーのKernelShapeおよびOutMapsがAIモデルの予測にどのような影響があるのかを単純に知りたくて確認しました。
しかし、その結果については、分かったようで、良く分からない状況です。
次回は、Convolutionレイヤーと合わせて使用されるPoolingレイヤーについて勉強したいと思います。
ちなみに、Poolingとは、データの集合を一定の規則に基づいて縮小する処理を意味します。