HuberLossレイヤー(Huber損失関数+出力層)
説明
データセットの変数とのHuber損失を最小化するニューラルネットワークの出力層です。
Huber損失は、Squared Error(二乗誤差)とAbsoluteError(絶対値誤差)の両方を取り入れた誤差であり、回帰モデルの出力値が、ある範囲内([f(x) - δ f(x) + δ])であれば、二乗誤差を利用し、その範囲外の場合は、絶対値誤差を利用します。このことにより、誤差が一定範囲内であればペナルティを厳しく課し、その範囲外であればペナルティを直線的に増加させることができ、データに外れ値が含まれたとしても、その影響を小さく抑えることができます。
そのため、Squared Errorの代わりに使用することにより学習を安定させる効果があります。
誤差関数の位置づけ
誤差関数レイヤーは出力層に位置づいていますが、厳密にはこのレイヤーの手前の層が出力層です。誤差関数レイヤーは学習済モデルの実行時は手前のレイヤーの出力をそのまま出力します。
学習時は手前のレイヤーの出力を正解値と比較し、出力値と正解値の誤差を算出します。算出された誤差は各ネットワークの重みの変更に利用されます。
数式
回帰問題を解く場合に用いる誤差関数について
回帰分析は回帰モデルのf関数(y=f(x))が出力する値を正解値y'に近づけることを目的としています。そのため、損失関数としては、モデルの出力値と正解値が離れば離れるほど、大きなペナルティを与える損失関数を用いる必要があります。
このような損失関数として以下の関数などが利用されます。
- HuberLossレイヤー(損失関数)
- SquaredErrorレイヤー(平均二乗誤差)
- AbsoluteErrorレイヤー(絶対値誤差)
- EpsilonInsensitiveLossレイヤー(イプシロン集中損失関数)
Huber損失は小さな誤差は二乗誤差を用いて検知し、大きな誤差は絶対値誤差を用いて検知するので、小さな誤差も重み調整が出来て、イレギュラーな大きな誤差に対しては重み調整を小さく出来ます。
プロパティ
T.Dataset
データセットに含まれる変数のうち、このSquaredErrorレイヤーの出力として期待する変数の変数名を指定します。
デフォルト値 = y
Delta
損失を平均二乗誤差から絶対値誤差に切り替える閾値となるδを指定します。
デフォルト値 = 1
T.Generator
データセットの代わりに用いるGeneratorを指定します。GeneratorプロパティがNone以外の場合、最適化時T.Datasetで指定した変数の代わりにGeneratorにより生成するデータを用います
デフォルト値 = None
- None:データ生成を行いません
- Uniform:-1.0~1.0の一様乱数を生成します
- Normal:平均0.0、分散1.0であるガウス乱数を生成します
- Constant:全ての要素が一定値(1.0)であるデータを生成します
T.GeneratorMultiplier
T.Generatorにより生成した値に対して掛ける係数を指定します。
デフォルト値 = 1
利用用途
出力結果と正解の誤差の算出に利用します。出力結果が連続値の場合に使用します。
回帰ネットワークにおいて使用するネットワークの基幹となるレイヤーです。
出力サイズ
入力サイズと同様
サンプル構成
LSTM
補足)誤差関数の役割と学習の仕組み
https://qiita.com/Nezura/items/0a37e1746f2830e31ddc/
qiitaに丸投げです(-_-;)
何時か自分で記事にします。
誤差関数の使い分けについて
- 訓練データにイレギュラーなデータが少ない場合は、誤差の検知精度の高い平均二条誤差(SquaredError)を用いるのが良い。
- 訓練データにイレギュラーなデータが多く含まれる場合は、イレギュラーなデータにより学習が不安定になることを防ぐためHuber損失(HuberLoss)を用いるのが良い。
SquaredErrorレイヤー(平均二乗誤差関数+出力層) 説明 データセットの変数との平均二乗誤差を最小化するニューラルネットワークの出...
![]() |
【送料無料】 ソニー開発のNeural Network Console入門 増補改訂・クラウド対応版--数式なし、コーディングなしのディープラーニング / 足立悠 【本】 価格:2,592円 |