PyTorchにおける活性化関数および損失関数は、モデルの学習において非常に重要な役割を果たします。それぞれの使用方法と代表的な関数について詳しく説明します。
1. 活性化関数(Activation Functions)
概要
活性化関数は、ニューラルネットワークの各ニューロンの出力に非線形性を導入するために使われます。これにより、ネットワークは複雑な関数を学習可能になります。
PyTorchでの使用方法
PyTorchでは、torch.nn.functional または torch.nn モジュールを通じて活性化関数を利用できます。
よく使われる活性化関数
| 関数名 | 概要 |
|---|---|
ReLU |
正の値をそのまま通し、負の値を0にする。高速かつ勾配消失が起こりにくい。 |
Sigmoid |
出力を0〜1に変換する。確率的な出力が必要なときに使用。 |
Tanh |
出力を-1〜1に変換する。 |
LeakyReLU |
負の値も小さく通すことでReLUの欠点(死んだニューロン)を緩和。 |
使用例(2通りの書き方)
2. 損失関数(Loss Functions)
概要
損失関数は、モデルの出力と正解ラベルとの誤差を定量化するために使用され、誤差逆伝播の起点となります。目的関数とも呼ばれます。
PyTorchでの使用方法
損失関数もtorch.nnモジュール内に定義されており、nn.Moduleとしてインスタンス化して使用します。
よく使われる損失関数
| 関数名 | 使用例 | 説明 |
|---|---|---|
nn.MSELoss() |
回帰 | 平均二乗誤差。連続値の予測に使う。 |
nn.CrossEntropyLoss() |
分類 | Softmax + 負の対数尤度。クラス分類に広く用いられる。 |
nn.BCELoss() |
2値分類 | シグモイド出力後に使用。 |
nn.BCEWithLogitsLoss() |
2値分類 | シグモイドを内部で適用するため、より安定。 |
使用例
まとめ
| 種別 | 使用場所 | 代表的関数 | 用途 |
|---|---|---|---|
| 活性化関数 | 中間層 | ReLU, Sigmoid, Tanh |
モデルに非線形性を導入 |
| 損失関数 | 出力層 | MSELoss, CrossEntropyLoss |
誤差の定量化と学習促進 |
必要に応じて、独自の活性化関数や損失関数を関数定義またはnn.Module継承クラスとして作成することも可能です。
生成日:2025/05/22