【要約】CNNのDense層をreluからeluに変えたら精度が上がった話【Keras×CIFAR-10】 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
- ・ReLU使用時に発生する「死んだReLU問題」。
- ・負の入力に対して勾配がゼロになり、ニューロンが学習不能になる。
- ・CIFAR-10のような複雑なタスクにおいて、表現力が制限されるリスク。
// Approach
以下の条件で、Dense層のactivation関数のみを切り替えて比較した。
1.モデル構成:Conv2D×2層(relu固定)+GAP+Dropout(0.2)
2.検証対象:Dense層のactivation関数
3.比較関数:
- relu
- gelu
- elu
4.データセット:CIFAR-10(30エポック)
// Result
- ・ELUが最高精度(68.72%)を記録。
- ・ReLU(67.52%)に対し、約1.2%の精度向上。
- ・学習時間はGELU/ELUが約123秒。ReLU(133.1秒)より高速。
- ・タスクが難しくなるほど、関数選択の重要性が増す。
Senior Engineer Insight
>
「なんとなくReLU」という設計慣習への警鐘である。本実験ではDense層の変更のみで1.2%の精度差が出た。これは実戦において無視できない差だ。また、学習時間の短縮も確認されており、計算リソースの観点からも合理的である。ただし、本件はDense層のみの検証に留まっている。実戦投入時には、Conv2D層を含む全層への適用による相乗効果を検証すべきだ。タスクの複雑度を見極め、適切な関数を選択する審美眼が求められる。