モッピー!ポイ活応援ポイントサイト
未分類

ゼロから作るDeepLearning 4章を読む

GPTとの学習の記録

機械学習の分野において、ニューラルネットワーク(NN)は驚異的な成果を収めています。その背後には様々な基本概念と設計要素が存在し、本記事ではそれらを詳しく探求します。ニューラルネットワークの理解が深まることで、効果的なモデルの構築とトレーニングが可能になります。

1. 活性化関数

シグモイド関数(Sigmoid Function)

シグモイド関数は、ニューラルネットワークにおいて広く使用される活性化関数の一つです。その特性と利点を以下に示します。

特性:

  • シグモイド関数の数式は以下のように表されます:

$$ \sigma(x) = \frac{1}{1 + e^{-x}} $$

  • 入力 x を 0 から 1 の範囲にマッピングします。
  • 入力が大きいと出力は 1 に近づき、入力が小さいと出力は 0 に近づきます。
  • 微分可能な関数であるため、勾配の計算が可能です。

利点:

  • シグモイド関数は、2クラス分類の出力層で主に使用されます。出力が確率的な値(0から1の範囲)として解釈でき、閾値を設定することでクラスの割り当てが行えます。
  • シグモイド関数は、従来のニューラルネットワークにおいて広く使用されてきました。

使用例:

シグモイド関数は、バイナリ分類問題で使用されます。例えば、メールがスパムか非スパムかを分類するタスクなどで利用されます。

ReLU関数(Rectified Linear Unit Function)

ReLU関数は、最も一般的かつ効果的な活性化関数の一つです。その特性と利点について詳しく説明します。

特性:

  • ReLU関数の数式は以下のように表されます

$$ f(x) = \max(0, x) $$

  • 入力が0以下の場合、出力は0になります。入力が正の場合、出力はそのまま入力値を返します。
  • 非常にシンプルな関数であり、計算効率が高いです。

利点:

  • ReLU関数は勾配消失問題を緩和し、勾配計算が比較的簡単です。
  • 非線形性を持ちながら、シグモイド関数やTanh関数に比べて計算コストが低いため、深層学習モデルで広く使用されています。
  • 一般的に高い性能を示し、多くのモデルで採用されています。

使用例:

ReLU関数は、畳み込みニューラルネットワーク(CNN)やディープラーニングモデルにおいて広く使用されており、画像分類、物体検出、自然言語処理など多くのタスクで効果的です。

 

その他の活性化関数

Tanh関数(Hyperbolic Tangent Function)

Tanh関数は、シグモイド関数と似た特性を持つ活性化関数ですが、出力が-1から1の範囲になります。その特性と利点について詳しく説明します。

特性:

  • 入力が大きいと正の値に、入力が小さいと負の値に近づきます。出力は-1から1の範囲に収まります。
  • シグモイド関数と同様に、入力を0から1の範囲にマッピングしますが、シグモイド関数よりも出力の変化が急速です。

利点:

  • Tanh関数は、2クラス分類タスクや中間層の活性化関数として使用されます。シグモイド関数よりも出力の変化が大きいため、勾配計算が速いです。
  • 出力が-1から1の範囲にあるため、平均が0に近いという性質を持ちます。

使用例:

Tanh関数は、中間層の活性化関数として広く使用され、前処理や特徴スケーリングにも利用されます。

Leaky ReLU関数

Leaky ReLU関数は、ReLU関数の改良版であり、勾配消失問題を緩和することを目的としています。その特性と利点について詳しく説明します。

特性:

  • Leaky ReLU関数は以下のように表されます:
  • 入力が0以下の場合、出力は$\alpha$倍された値になります。入力が正の場合、出力はそのままです。
  • Leaky ReLU関数は、ReLU関数と似た非線形性を持ちつつ、勾配が0にならないようにすることができます。

利点:

  • Leaky ReLU関数は、勾配消失問題を緩和し、ReLU関数の問題点を改善します。
  • 出力が0になることがないため、学習中のニューロンの活性化が維持されます。

使用例:

Leaky ReLU関数は、特に深層学習モデルでの中間層の活性化関数として広く使用されており、勾配消失問題に対処する際に有効です。

これらの活性化関数は、ニューラルネットワークモデルの設計において重要な役割を果たします。タスクやモデルの性能に合わせて適切な活性化関数を選択することが、良いモデルの構築に不可欠です。

2. 損失関数

平均二乗誤差(Mean Squared Error, MSE)

回帰タスクにおいて最も一般的に使用される損失関数で、モデルの予測値と実測値との差の二乗平均を計算します。以下にMSEの特性と得意なタスクについて説明します。

特性:

  • 平均二乗誤差は以下の数式で表されます

$$ MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i – \hat{y}_i)^2 $$

  • 予測誤差の二乗を計算し、それらの平均を取ることから、外れ値に敏感でなく、大きな誤差を重視します。

得意なタスク:

  • 回帰タスク(連続値の予測)に適しています。例えば、住宅価格の予測や株価の予測など。

交差エントロピー誤差(Cross-Entropy Error)

分類タスクにおける損失関数で、モデルの予測された確率分布と実際のクラスの分布との誤差を評価します。二値交差エントロピー誤差と多クラス交差エントロピー誤差の違いについて説明します。

特性:

  • 交差エントロピー誤差は以下の数式で表されます(二値分類の場合):

$$ CE = -\frac{1}{n}\sum_{i=1}^{n}(y_i\log(p_i) + (1 – y_i)\log(1 – p_i)) $$

  • ここで、$y_i$ は実際のクラス(0または1)、$p_i$ はモデルの予測確率、$n$ はデータポイントの数です。
  • 予測誤差が確率分布として扱われ、真のクラスに対する予測確率を最大化しようとします。

得意なタスク:

  • 二値分類タスク(2つのクラスの分類)や多クラス分類タスク(複数のクラスの分類)に適しています。例えば、スパムメールの分類や手書き文字認識など。

その他の損失関数

上記の損失関数以外にも、タスクやデータに応じて選択される損失関数が存在します。

平均絶対誤差(Mean Absolute Error, MAE)

  • 回帰タスクに使用され、予測値と実測値の絶対値の平均を計算します。外れ値に強く、誤差が大きなデータポイントに対してペナルティを与えます。

Huber損失

  • 回帰タスクに使用され、平均絶対誤差と平均二乗誤差の折衷案です。外れ値に対して平均絶対誤差のようにロバストであり、誤差が小さいデータポイントに対して平均二乗誤差のように微分可能です。

KLダイバージェンス(Kullback-Leibler Divergence)

  • 確率分布間の距離を計算するために使用され、分布間の違いを評価します。主に確率分布モデルのトレーニングに使用されます。

これらの損失関数は、機械学習モデルの設計やタスクに応じて選択され、モデルのトレーニング中に最適なパラメータを見つけるために使用されます。損失関数の選択は、モデルの性能に大きな影響を与える重要な決定です。

3.勾配降下法

勾配降下法は、ニューラルネットワークのトレーニングにおいて不可欠な要素です。このセクションでは、勾配の計算方法、勾配降下法のアルゴリズム、および学習率の重要性について詳しく説明します。

勾配の計算

勾配(Gradient)は、損失関数のパラメータに対する微分です。この勾配を計算することにより、どの方向にパラメータを調整すべきかを知ることができます。勾配の計算方法は、バックプロパゲーション(Backpropagation)と呼ばれるアルゴリズムを使用して行われます。バックプロパゲーションは、誤差逆伝播法とも呼ばれ、ネットワークの出力から逆向きに勾配を伝播させる手法です。

勾配降下法のアルゴリズム

勾配降下法は、機械学習モデルのパラメータを最適化するためのアルゴリズムです。このアルゴリズムは、以下の手順で動作します。

  1. ランダムな初期パラメータを設定する。
  2. ミニバッチ(またはデータポイント)を選択する。
  3. 選択したミニバッチに対する損失関数の勾配を計算する。
  4. 勾配を使用してパラメータを更新する。
  5. 上記の手順を繰り返す。

確率的勾配降下法(Stochastic Gradient Descent, SGD)は、ミニバッチを使用して勾配を計算し、パラメータを更新するバリエーションです。SGDは計算効率が高く、大規模なデータセットに適しています。

学習率の重要性

学習率は、勾配降下法の性能に大きな影響を与えます。学習率はパラメータの更新幅を調整するハイパーパラメータであり、適切な学習率の選択と調整が重要です。学習率が小さすぎると収束が遅くなり、学習率が大きすぎると発散する可能性があります。適切な学習率の調整方法についても考慮する必要があります。

ABOUT ME
たけ
はじめまして! たけといいます。 20代男性サラリーマンが資産運用で5年で3000万をめざします。 これを読んで自分でも出来るのではないかと思ってくれる人が増えると嬉しいです。 お金を得ることは手段に過ぎません。若いうちに稼いで、自分の時間をより大切なことに使いたいです。 【2019投資戦歴】 投資資金合計 300万 2019年度単年損益(年利) FX 15万(15%) 投信 9万(7%) 株式 4万(8%) ※投信、株式は含み益