ディープラーニング編

RNNやCNN、Transformerの理解を問います

活性化関数の特性 レベル1

次の活性化関数の特性について、正しいものを選びなさい。

解説
解答と解説を表示
<h4>活性化関数 (Activation Function) の役割と重要性</h4> <p>活性化関数は、ニューラルネットワークのニューロン(ノード)における線形変換(重み付き和)の結果を入力として受け取り、その出力を決定する関数です。活性化関数の主な役割は、ネットワークに<strong>非線形性</strong>を導入することです。もし活性化関数がなければ、ネットワーク全体は単なる線形変換の積み重ねとなり、複雑なパターンや関係性を学習することができません。適切な活性化関数を選択することは、ネットワークの学習効率や性能に大きく影響します。</p><h5>主要な活性化関数とその特性</h5> <p>以下に、代表的な活性化関数とその数式、特性、利点、欠点を示します。</p><div class="section"> <h5>1. ReLU (Rectified Linear Unit)</h5> <ul> <li><strong>数式:</strong> \( f(x) = \max(0, x) \)</li> <li><strong>グラフ:</strong> 入力が0以下の場合は0、0より大きい場合は入力をそのまま出力します(線形)。</li> <li><strong>特性:</strong> <ul> <li>正の入力に対しては線形であり、勾配は1。</li> <li>負の入力に対しては出力が0となり、勾配も0。</li> </ul> </li> <li><strong>利点:</strong> <ul> <li>計算が非常に高速(比較や条件分岐のみ)。</li> <li>勾配計算も単純で高速。</li> <li>Sigmoidやtanhと比較して、勾配消失問題を起こしにくい(正の領域)。</li> </ul> </li> <li><strong>欠点:</strong> <ul> <li><strong>Dying ReLU問題:</strong> 学習中にニューロンへの入力が常に負になってしまうと、そのニューロンの勾配は常に0となり、パラメータの更新が行われなくなってしまう(「死んだ」状態になる)可能性があります。<strong>(選択肢1は正しい)</strong></li> <li>出力がゼロ中心ではない(常に非負)。</li> </ul> </li> </ul> </div><div class="section"> <h5>2. Sigmoid (シグモイド関数、ロジスティック関数)</h5> <ul> <li><strong>数式:</strong> \( f(x) = \frac{1}{1 + e^{-x}} \)</li> <li><strong>グラフ:</strong> 滑らかなS字カーブを描き、出力を (0, 1) の範囲に収めます。</li> <li><strong>特性:</strong> <ul> <li>出力を確率として解釈しやすい。</li> <li>入力の絶対値が大きい領域で勾配がほぼ0になる(飽和する)。</li> </ul> </li> <li><strong>利点:</strong> <ul> <li>二値分類問題の出力層で、クラスに属する確率を出力するのに適しています。</li> </ul> </li> <li><strong>欠点:</strong> <ul> <li><strong>勾配消失問題:</strong> 入力の絶対値が大きい領域で勾配が飽和するため、特にネットワークが深い場合に、誤差逆伝播で勾配が消失し、学習が停滞する原因となりやすいです。<strong>(選択肢2は不正確)</strong></li> <li>出力がゼロ中心ではない。</li> <li>指数関数の計算コストがReLUに比べて高い。</li> </ul> </li> </ul> </div><div class="section"> <h5>3. tanh (双曲線正接関数)</h5> <ul> <li><strong>数式:</strong> \( f(x) = \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} = 2 \cdot \text{sigmoid}(2x) - 1 \)</li> <li><strong>グラフ:</strong> Sigmoidと似たS字カーブですが、出力範囲が (-1, 1) です。原点対称です。</li> <li><strong>特性:</strong> <ul> <li>出力がゼロ中心(平均が0に近い)。</li> <li>Sigmoidと同様に、入力の絶対値が大きい領域で勾配が飽和する。</li> </ul> </li> <li><strong>利点:</strong> <ul> <li>出力がゼロ中心であるため、Sigmoidよりも学習の収束が速い傾向があります。後続の層への入力の偏りを抑える効果があります。</li> </ul> </li> <li><strong>欠点:</strong> <ul> <li>Sigmoidと同様に、勾配消失問題を引き起こしやすいです。</li> <li>指数関数の計算コストがかかります。</li> <li>出力は負の値も取ります。<strong>(選択肢3は不正確)</strong></li> </ul> </li> </ul> </div><div class="section"> <h5>4. Leaky ReLU</h5> <ul> <li><strong>数式:</strong> \( f(x) = \begin{cases} x & (x > 0) \\ \alpha x & (x \le 0) \end{cases} \) (ここで \(\alpha\) は小さな正の定数、例: 0.01)</li> <li><strong>グラフ:</strong> ReLUに似ていますが、負の入力に対してもわずかな勾配 \(\alpha\) を持ちます。</li> <li><strong>特性:</strong> <ul> <li>負の入力に対しても0でない勾配を持つ。</li> </ul> </li> <li><strong>利点:</strong> <ul> <li>ReLUの改良版で、Dying ReLU問題を緩和します。負の領域でも勾配が完全に0にならないため、ニューロンが死ぬリスクを低減します。</li> <li>計算コストはReLUとほぼ同等。</li> </ul> </li> <li><strong>欠点:</strong> <ul> <li>最適な \(\alpha\) の値は問題依存であり、調整が必要な場合があります。</li> <li>負の入力に対しては0ではなく、わずかな負の値 (\(\alpha x\)) を出力します。<strong>(選択肢4は不正確)</strong></li> </ul> </li> </ul> </div><div class="key-point"> <div class="key-point-title">活性化関数選択のヒント</div> <ul> <li><strong>中間層のデフォルト:</strong> まずは ReLU を試すのが一般的です。計算効率が高く、多くの場合で良好な性能を発揮します。</li> <li><strong>Dying ReLUが懸念される場合:</strong> Leaky ReLU やその派生(PReLU, ELUなど)を検討します。</li> <li><strong>出力層:</strong> <ul> <li>二値分類: Sigmoid</li> <li>多クラス分類: Softmax</li> <li>回帰: 活性化関数なし(恒等関数)または問題に応じて ReLU など</li> </ul> </li> <li><strong>勾配消失が懸念される場合 (特にRNNなど):</strong> tanh が使われることもありますが、勾配消失対策としてはネットワーク構造自体の工夫(LSTM, GRU, 残差接続など)がより重要です。</li> </ul> </div><p>以上の詳細な特性比較から、選択肢の中で正しい記述は<strong>選択肢1</strong>であることが確認できます。</p>
問題 1/1
カテゴリ一覧に戻る