ニューラルネットワークにおける活性化関数の役割を解説し、代表的な関数(シグモイド、ReLU、ソフトマックス)の仕組みと違いを比較。Pythonの実装例も掲載。
ニューラルネットワークでは、入力データを行列演算によって変換し、出力を生成します。
しかし、そのままでは単なる線形変換にすぎず、複雑なパターンを学習できません。
そこで重要になるのが 活性化関数(Activation Function) です。
活性化関数を使うことで、ニューラルネットワークは 非線形変換 を行い、より高度な表現力を獲得できます。
本記事では、代表的な活性化関数の種類とその特性、使い分けのポイントについて解説します。
活性化関数は、ニューラルネットワークの各層で適用され、出力値を変換する関数です。
例えば、ニューラルネットワークの基本的な計算は次のようになります。
ここで が活性化関数 であり、線形変換結果 に対して 非線形性を導入 します。
PYTHONimport numpy as np import matplotlib.pyplot as plt def sigmoid(x): return 1 / (1 + np.exp(-x)) x = np.linspace(-10, 10, 100) y = sigmoid(x) plt.plot(x, y) plt.title("Sigmoid Function") plt.xlabel("x") plt.ylabel("σ(x)") plt.grid() plt.show()
PYTHONdef relu(x): return np.maximum(0, x) x = np.linspace(-10, 10, 100) y = relu(x) plt.plot(x, y) plt.title("ReLU Function") plt.xlabel("x") plt.ylabel("ReLU(x)") plt.grid() plt.show()
PYTHONdef softmax(x): exp_x = np.exp(x - np.max(x)) # オーバーフロー防止 return exp_x / np.sum(exp_x) x = np.array([2.0, 1.0, 0.1]) y = softmax(x) print("Softmax出力:", y)
Softmax出力: [0.659 0.242 0.098]
活性化関数 | 主な用途 | 長所 | 短所 |
---|---|---|---|
シグモイド | 出力層(確率を出す場合) | 値が 0〜1 の範囲 | 勾配消失が起こる |
ReLU | 隠れ層(主流) | 計算が速い | 負の値で勾配がゼロ(Dying ReLU) |
ソフトマックス | 多クラス分類 | 確率として解釈可能 | オーバーフローの可能性 |
ニューラルネットワークの設計や実装で活性化関数を適切に選べるようになると、より強力なモデルを作ることができます。
回 | タイトル | リンク |
---|---|---|
第 1 回 | NNの基本概念とその重要性 | 詳 細 |
第 2 回 | NNにおける行列演算 | 詳 細 |
第 3 回 | 「活性化関数」について | この記事 |
第 4 回 | 「ロジット関数」について | 詳 細 |
第 5 回 | 「ソフトマックス関数」について | 詳 細 |
第 6 回 | 「ディープラーニング」について | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。