活性化関数
活性化関数は、入力信号の総和を出力信号に変換し、どのようにニューロンが活性化するかを決定します。活性化関数には、主に線形関数と非線形関数の二種類があります。線形関数は入力値の定数倍が出力となる関数で、ステップ関数やシグモイド関数が含まれます。一方、非線形関数にはReLU関数などがあります。
シグモイド関数は、出力が0から1の範囲に収まり、確率として解釈できる特性を持っています。これは出力層においては重要な性質ですが、隠れ層においては必須ではありません。隠れ層では、任意の実数を変換できる微分可能な関数を用いることができます。しかし、シグモイド関数の微分の最大値が小さいため、ディープニューラルネットワークの隠れ層を増やすと誤差逆伝播時に勾配が消失しやすくなるという問題があります。
この勾配消失問題に対処するために、いくつかの別の活性化関数が提案されています。たとえば、ReLU(Rectified Linear Unit)関数は、入力が0以下の場合は出力が0、0以上の場合は入力値をそのまま出力します。これは勾配消失を防ぐ効果がありますが、0以下の入力で微分値が0になるため、学習がうまくいかない場合もあります。その他の関数としては、Leaky ReLUやParametric ReLU、Randomized ReLUなどがあります。これらの関数は、ReLU関数の改良版で、より柔軟な動作を実現します。
また、tanh(ハイパボリックタンジェント)関数もよく使用されます。この関数は、出力が-1から1の範囲を取り、微分の最大値が1であるため、シグモイド関数よりも勾配消失問題を起こしにくいです。しかし、この関数も微分値が1より小さくなることが多く、完全に勾配消失問題を防げているわけではありません
