見出し画像

ConvolutionレイヤーとPoolingレイヤーのパラメータをアレコレ設定するとどうなるの? AveragePooling編


ConvolutionレイヤーとAveragePoolingレイヤーを組み合わせて各パラメータと予測精度、等の関係を確認します

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

  • 確認する内容

    • 予測精度

    • 学習曲線

    • 混同行列

ちなみに、ConvolutionレイヤーおよびMaxPoolingレイヤーの組み合わせに対する各パラメータ設定の検証結果は、前回の記事を参照ください。

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(デフォルト値)

AveragePoolingレイヤーの各パラメータ設定値は、次の通りです。

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

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

    • Strides → KernelShapeと同じ設定値を使用します

    • IgnoreBorder → True

    • Padding → 0,0(デフォルト値)

    • ChannelLast → False

    • IncludingPad → False

AveragePoolingレイヤーのパラメータに、MaxPoolingレイヤーでは存在しなかったIncludingPadが存在します。

IncludingPadは、Neural Network Consoleのオンラインマニュアルにも記載がないため、機能については分かりません。

このため、IncludingPadの影響を抑える目的で、今回はFalseとしました。

AIモデルの構成

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

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

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

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

ConvolutionレイヤーおよびAveragePoolingレイヤーの各パラメータ設定と予測精度の関係について

下記に、ConvolutionレイヤーおよびAveragePoolingレイヤーの各パラメータ設定と予測精度(ACC)の関係を示します。

Convolution AveragePooling パラメータ 予測精度 関係
Convolution/AveragePoolingレイヤーのパラメータと予測精度の関係

予測精度が最も高いのは、No. 7の58.0%でした。

ちなみに、これまでの予測精度の最高値は58.4%ですので、それに近い数値となります。

また、予測精度が最も低いのは、No. 5の49.2%でした。

ConvolutionレイヤーおよびAveragePoolingレイヤーの各パラメータ設定と学習曲線の関係について

続いて、No. 1~20の条件における学習曲線を以下に示します。

学習曲線 No. 1 Convolution(10-1) AveragePooling(1, 10)
学習曲線 No. 1: Convolution(10-1), AveragePooling(1, 10)
学習曲線 No. 2 Convolution(10-2) AveragePooling(1, 10)
学習曲線 No. 2: Convolution(10-2), AveragePooling(1, 10)
学習曲線 No. 3 Convolution(20-1) AveragePooling(1, 10)
学習曲線 No. 3: Convolution(20-1), AveragePooling(1, 10)
学習曲線 No. 4 Convolution(20-1) AveragePooling(1, 20)
学習曲線 No. 4: Convolution(20-1), AveragePooling(1, 20)
学習曲線 No. 5 Convolution(20-2) AveragePooling(1, 10)
学習曲線 No. 5: Convolution(20-2), AveragePooling(1, 10)
学習曲線 No. 6 Convolution(20-2) AveragePooling(1, 20)
学習曲線 No. 6: Convolution(20-2), AveragePooling(1, 20)
学習曲線 No. 7 Convolution(40-1) AveragePooling(1, 10)
学習曲線 No. 7: Convolution(40-1), AveragePooling(1, 10)
学習曲線 No. 8 Convolution(40-1) AveragePooling(1, 20)
学習曲線 No. 8: Convolution(40-1), AveragePooling(1, 20)
学習曲線 No. 9 Convolution(40-1) AveragePooling(1, 40)
学習曲線 No. 9: Convolution(40-1), AveragePooling(1, 40)
学習曲線 No. 10 Convolution(40-2) AveragePooling(1, 10)
学習曲線 No. 10: Convolution(40-2), AveragePooling(1, 10)
学習曲線 No. 11 Convolution(40-2) AveragePooling(1, 20)
学習曲線 No. 11: Convolution(40-2), AveragePooling(1, 20)
学習曲線 No. 12 Convolution(40-2) AveragePooling(1, 40)
学習曲線 No. 12: Convolution(40-2), AveragePooling(1, 40)
学習曲線 No. 13 Convolution(80-1) AveragePooling(1, 10)
学習曲線 No. 13: Convolution(80-1), AveragePooling(1, 10)
学習曲線 No. 14 Convolution(80-1) AveragePooling(1, 20)
学習曲線 No. 14: Convolution(80-1), AveragePooling(1, 20)
学習曲線 No. 15 Convolution(80-1) AveragePooling(1, 40)
学習曲線 No. 15: Convolution(80-1), AveragePooling(1, 40)
学習曲線 No. 16 Convolution(80-1) AveragePooling(1, 80)
学習曲線 No. 16: Convolution(80-1), AveragePooling(1, 80)
学習曲線 No. 17 Convolution(80-2) AveragePooling(1, 10)
学習曲線 No. 17: Convolution(80-2), AveragePooling(1, 10)
学習曲線 No. 18 Convolution(80-2) AveragePooling(1, 20)
学習曲線 No. 18: Convolution(80-2), AveragePooling(1, 20)
学習曲線 No. 19 Convolution(80-2) AveragePooling(1, 40)
学習曲線 No. 19: Convolution(80-2), AveragePooling(1, 40)
学習曲線 No. 20 Convolution(80-2) AveragePooling(1, 80)
学習曲線 No. 19: Convolution(80-2), AveragePooling(1, 80)
  • VALIDATION ERRORの最小値

    • No. 1 → 0.687357

    • No. 2 → 0.690776

    • No. 3 → 0.684326

    • No. 4 → 0.689254

    • No. 5 → 0.692470

    • No. 6 → 0.688724

    • No. 7 → 0.670504

    • No. 8 → 0.688365

    • No. 9 → 0.688880

    • No. 10 → 0.691052

    • No. 11 → 0.681332

    • No. 12 → 0.684718

    • No. 13 → 0.691641

    • No. 14 → 0.688593

    • No. 15 → 0.683443

    • No. 16 → 0.689396

    • No. 17 → 0.692010

    • No. 18 → 0.680783

    • No. 19 → 0.688185

    • No. 20 → 0.666236

最も予測精度が高かったNo. 7の学習曲線は、過学習が進んでいるのが確認できます。

また、VALIDATION ERRORの最小値が最も小さかったNo. 20の学習曲線は、AIモデルの学習は進みつつも、過学習が抑えられていて、何だか良さそうです。

今回の検証における学習曲線に対して、過学習が進むものと進まないものに分けると、下記の通りです。

  • 過学習が進むもの

    • No. 5, 6, 7, 8, 11, 12, 13, 14, 15, 17, 18, 19

  • 過学習が進まないもの

    • No. 1, 2, 3, 4, 9, 10, 16, 20

ConvolutionレイヤーおよびAveragePoolingレイヤーの各パラメータ設定と混同行列の関係について

最後に、No. 1~20の条件における混同行列を以下に示します。

混同行列 No. 1 Convolution(10-1) AveragePooling(1, 10)
混同行列 No. 1: Convolution(10-1), AveragePooling(1, 10)
混同行列 No. 2 Convolution(10-2) AveragePooling(1, 10)
混同行列 No. 2: Convolution(10-2), AveragePooling(1, 10)
混同行列 No. 3 Convolution(20-1) AveragePooling(1, 10)
混同行列 No. 3: Convolution(20-1), AveragePooling(1, 10)
混同行列 No. 4 Convolution(20-1) AveragePooling(1, 20)
混同行列 No. 4: Convolution(20-1), AveragePooling(1, 20)
混同行列 No. 5 Convolution(20-2) AveragePooling(1, 10)
混同行列 No. 5: Convolution(20-2), AveragePooling(1, 10)
混同行列 No. 6 Convolution(20-2) AveragePooling(1, 20)
混同行列 No. 6: Convolution(20-2), AveragePooling(1, 20)
混同行列 No. 7 Convolution(40-1) AveragePooling(1, 10)
混同行列 No. 7: Convolution(40-1), AveragePooling(1, 10)
混同行列 No. 8 Convolution(40-1) AveragePooling(1, 20)
混同行列 No. 8: Convolution(40-1), AveragePooling(1, 20)
混同行列 No. 9 Convolution(40-1) AveragePooling(1, 40)
混同行列 No. 9: Convolution(40-1), AveragePooling(1, 40)
混同行列 No. 10 Convolution(40-2) AveragePooling(1, 10)
混同行列 No. 10: Convolution(40-2), AveragePooling(1, 10)
混同行列 No. 11 Convolution(40-2) AveragePooling(1, 20)
混同行列 No. 11: Convolution(40-2), AveragePooling(1, 20)
混同行列 No. 12 Convolution(40-2) AveragePooling(1, 40)
混同行列 No. 12: Convolution(40-2), AveragePooling(1, 40)
混同行列 No. 13 Convolution(80-1) AveragePooling(1, 10)
混同行列 No. 13: Convolution(80-1), AveragePooling(1, 10)
混同行列 No. 14 Convolution(80-1) AveragePooling(1, 20)
混同行列 No. 14: Convolution(80-1), AveragePooling(1, 20)
混同行列 No. 15 Convolution(80-1) AveragePooling(1, 40)
混同行列 No. 15: Convolution(80-1), AveragePooling(1, 40)
混同行列 No. 16 Convolution(80-1) AveragePooling(1, 80)
混同行列 No. 16: Convolution(80-1), AveragePooling(1, 80)
混同行列 No. 17 Convolution(80-2) AveragePooling(1, 10)
混同行列 No. 17: Convolution(80-2), AveragePooling(1, 10)
混同行列 No. 18 Convolution(80-2) AveragePooling(1, 20)
混同行列 No. 18: Convolution(80-2), AveragePooling(1, 20)
混同行列 No. 19 Convolution(80-2) AveragePooling(1, 40)
混同行列 No. 19: Convolution(80-2), AveragePooling(1, 40)
混同行列 No. 20 Convolution(80-2) AveragePooling(1, 80)
混同行列 No. 20: Convolution(80-2), AveragePooling(1, 80)

最も予測精度が高かったNo. 7の混同行列を見ると、AIモデルの予測がy'=0とy'=1にそれなりにバランス良く分布しているのが確認できます。

  • y'=0 → 明日の日経平均株価のローソク足は陰線と予測

  • y'=1 → 明日の日経平均株価のローソク足は陽線と予測

AIモデルの予測が、y'=0 or y'=1に偏っているかいないかで整理すると、以下の通りです。

  • AIモデルの予測が、y'=0 or y'=1に偏っている

    • No. 3, 13, 17, 19

  • AIモデルの予測が、y'=0 or y'=1に偏っていない

    • No. 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 20

ほとんどの条件において、AIモデルの予測がy'=0 or y'=1に偏っていないことが確認できました。

前回の記事で検証したConvolutionレイヤーとMaxPoolingレイヤーの組み合わせでは、全20条件の内8つの条件でAIモデルの予測がy'=0 or y'=1に偏っていました。

この結果から、PoolingにはAveragePoolingを使用するのが良さそうです。

結果に対する考察

学習曲線において、No. 20の結果は、非常に気になります。

その理由は、AIモデルの学習は進んでいて、かつ、VALIDATION ERRORの上昇も抑えられているからです。

しかし、No. 20での予測精度は56.4%と、それなりではあるものの、最高値である58.0%には届いていません。

もしかしたら、説明変数を変更したり、Affineレイヤーのパラメーター設定を調整したりすることで、予測精度の改善が可能かもしれません。

また、混同行列におけるAIモデルの予測のバラつき度合いより、Poolingは、MaxPoolingよりもAveragePoolingの方が良さそうだと分かりました。

以上を整理すると、下記の通りです。

  • 1D CNNでは、AveragePoolingを使用する

  • No. 20の構成で、説明変数の影響を確認する

  • No. 20の構成に対して、Affineのパラメーター設定による影響を確認する

  • 1D CNN + LSTM構造のAIモデルを使用した評価を行う

次回は、No. 20の構成に対して、Affineのパラメーター設定による影響を確認したいと思います。

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