【要約】Dense層の活性化関数はreluが最強?sigmoid・tanh・linearとCIFAR-10で比較してみた [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
ディープラーニングの開発者が、Dense層の活性化関数としてreluを盲目的に選択する問題がある。多くの現場ではreluが標準とされるが、構成によっては精度を損なう可能性がある。具体的には以下の課題が挙げられる。
- ・BatchNorm併用時の最適な関数が不明確。
- ・過学習の抑制と精度のバランスが取れない。
// Approach
筆者が、活性化関数の違いがモデル性能に及ぼす影響を検証するため、比較実験を実施した。CIFAR-10を対象に、Dense層の活性化関数のみを入れ替えたモデルを構築した。実験の手順は以下の通りである。
- ・Conv2D 3層、BatchNorm、GAP、Dropoutを含むベースモデルを作成。
- ・活性化関数をsigmoid, tanh, relu, linearの4種に設定。
- ・30エポックの学習を行い、精度と過学習ギャップを比較。
// Result
実験の結果、BatchNormと1層のDense層を組み合わせた構成では、sigmoidが最も高い性能を示した。これにより、特定の条件下ではsigmoidが有効であるという知見が得られた。具体的な数値は以下の通りである。
- ・sigmoid:テスト精度0.7551、過学習ギャップ0.2225(最小)。
- ・relu/linear:テスト精度約0.733。
- ・tanh:テスト精度0.7017、過学習ギャップ0.2757(最大)。
Senior Engineer Insight
> 現場の責任者として、この知見を評価する。BatchNorm併用時は、relu一辺倒から脱却する余地がある。特にDense層が浅い構成では、sigmoidの安定性が寄与する。ただし、GPUの非決定性による変動には注意せよ。本結果は特定の構成における示唆に過ぎない。実戦投入時は、必ず自身のモデルで検証を行え。