深さの学習の中の損失の関数は総括してすでにCenter Lossの関数のノートになりました
深さの学習の中の損失の関数は総括してすでにCenter Lossの関数のノートになりました
損失関数のメトリックは予測値と真実値の差である.損失関数は通常L(y,y)と書く.yは予測値を表し、yは真実値を表す.目標関数は最適化目標と見なすことができ、最適化モデルの最後の目標はこの目標関数を最大または最小にすることである.対価関数はターゲット関数に類似する.区別:目標関数(対価関数)は、正規化項などの制約条件を含むことができる.
一般的には厳密な区別はしない.以下に述べる損失関数はいずれも正規項を含む.
kerasドキュメントにリストされているいくつかの例keras-loss mse(mean_squared_error):平均二乗誤差損失.
mae(mean_absolute_error):平均絶対値誤差損失.
mape(mean_absolute_percentage_error):平均絶対パーセント誤差.
msle(mean_squared_logarithmic_error):平均二乗対数損失(mseの改良).
code logcoshパーマ.回帰
この関数は誰も使ったことがないので、公式に従って図を作ります: だいたいy_predとy_trueの差が小さいほど値が小さくなる. kullback_leiber_divergence:KL分散.2つの確率分布PとQの違いの非対称性のメトリック.典型的には、Pはデータの真の分布を表し、Qはデータの理論分布、モデル分布、またはPの近似分布を表す.
1つの解釈:KL分散は、Qベースの符号化を使用してPからのサンプル平均を符号化するために必要な追加のビット数を測定するために使用される.(エントロピー、クロスエントロピー、)例:現在2つの分布pとqが真実であると仮定し、qがモデル予測のエントロピーの本質は情報量メトリックである:真実分布pに従って1つのサンプルを識別するために必要な平均符号化長を測定する:誤り分布qに従って真実分布pからの平均符号化長(クロスエントロピー)を表す:例:4文字、真実分布p=[0.5,0.5,0,q=[0.25,0.25,0.25]を用いて、H(p)を1として計算する.H(p,q)は2である.qから得る平均符号長がpから得られる平均符号長よりも多いbit数をKL分散と呼ぶ.KL分散wikiKL分散zhihu categorical_crossentropy:多種類の対数損失.1つの解釈:softmax公式:logistic regressionの目標関数は最大尤度に基づいて行う.すなわち、xがクラスyに属すると仮定し、予測確率がoyであるとすると、oyを最大化する必要がある.softmax_lossは以下の通りである:以下は二種類の分類交差エントロピー式である:数値安定性問題
本題を始めるmnistデータセットを例に挙げる.(手書き数字、28*28画像、10分類問題)categorical crossentropy(softmax loss)の問題
通常softmax loss多分類損失関数が使用する.CNNネットワーク(mnist分類は高い精度を達成しやすいが、実験効果のために、BN,relu,dropout,L 2などのtrickを使用していない場合、ネットワーク設計の意図的な差分点は、最下位の2層目の全接続層出力ノードを2つ選択することを特徴とし、その後、この2つのノードを最後の10ノード全接続層に接続する.通常の訓練過程は、高い精度に達した後、各データの最後から2番目の層の特徴を印刷する.次の図を示します.
欠点:クラスタリングの観点から抽出した特徴はよくない.クラス内ピッチがクラス間ピッチよりも大きい場合が多い.特徴は分けることができるだけでなく,要求の違いが大きく,特徴学習は抽出した特徴の識別度を保証する必要があることを期待している. が占める面積は少し大きい.通常、私たちは各クラスがほんの一部しか占めていないことを望んでいます.手書き文字が多いので、これらの数字がこんなに広い場所を占めています.もし英語のアルファベットが新しく来たら...つまり、モデルが訓練データのラベルにない分類を認識することを望んでいます.特徴学習は抽出した特徴が普遍性を有することを保証する必要がある. softmaxはモデルに過度な自信を持たせ、分類結果は基本的に1ではない0であり、上図には境界にある点があるがsoftmaxはもういいと考えているので、これ以上修正する必要はない.同時にsoftmaxという特性は、信頼性などのメトリックを実質的に設定ことができない.(シーン?)
理由は?例えば、最後の層の全接続層の出力V=[x 1,x 2,x 3]、リアルラベルは[1,0,0]である.V=[x 1,x 2,x 3]が[3.1,3,3]であると仮定すると、softmaxの式は、Vのモジュール長増加倍数だけを必要とするloss損失を低減することができる.これは(パラメータを大きくするだけでよい)容易すぎて、ネットワークがこのようにすることが多い.私たちが通常望むようにx 2を下げるのではなく、x 3のx 1に対する値は[3.1,1,1]のようにします.これもL 2正則がフィッティングを緩和する一因である.
解決策:one_だけでなくsoftmaxにも均一な分布出力をシミュレートさせるなど、多くの場合hot.ここではcenterlossの1つにすぎない.
では、損失関数を変えましょう.平均誤差損失?以下の図:精度が30%まで下がるだけでなく、互いに直接にカバー交差がある.興味深い点:1と他の数字は明らかに分かれている. ,4,5,8,9このいくつかは爆発して全然分けられない.
上記のいくつかの損失関数では、softmaxが最もよく動作する.Center Loss
softmaxが示す問題に対して的確に解決します.-→クラス内の間隔が大きすぎる.は各クラスに対して1つのクラス中心cを維持し、その後、特徴層でこのサンプルの中でクラス中心の特徴が遠すぎると罰する.いわゆるcenterlossですクラスセンタc:各サンプルの特徴は良いネットワークを介して特徴層に到達する必要があり、このように計算後のすべてのサンプルの特徴の平均値はクラスセンタcであり、良いネットワークはクラスセンタが加入している場合に得られる必要がある... は直接cを得ることができないので、それをネットワークに入れて自分で生成し、batchごとにcenterを更新する.すなわち、centerをランダムに初期化する、batchごとに現在のデータとcenterとの距離を計算し、この勾配形式の距離をcenterに加算.パラメータ修正に類似する.同様に勾配降下法と同様に、ここでscaleメトリックaをさらに1つ増やし、centerがジッタしないようにする. 実験はcenterlossのみを使用する効果が一般的であることを示したので、centerlossとsoftmaxを結合し、パラメータlambdaを導入するのが一般的である.全体の構造は以下の通りである:4.アルゴリズムプロセス 5.実験結果の精度は約0.6%向上した.
新しいloss関数は、効果がよく、認知にも合致し、生成されたモデルのロバスト性がより良い可能性がある. 本質はメジャー学習であり、分類分野によく応用され、原理が簡単で、計算の複雑度が大きくなく、効果を向上させることができる. は空間を使って時間を取り替えるという意味です. はtrickに属する.必ずしもすべてのシーンに適しているとは限らない.一般的に、同じ種類のサンプルがmnistの手書き数字、顔データのように類似すると、centerlossは効果の向上をもたらすことが多い.一方、cifar 100のように同じ種類のサンプルと大きく異なる場合は、必ずしもそうではない.一人の顔の平均値を取るのは依然として彼の顔であり、異なる犬の平均値を取るのは何なのか分からない可能性があると理解できる. パラメータの設定:aは一般的に0.5を取り、lambdaは0.1-0.0001の間で等しくなく、実験的にパラメータを調整する必要がある. 参考論文A Discriminative Feature Learning Approach for Deep Face Recognition 2017-07-22に編集
画像の分類の中のCenter Loss
Destination Function
損失関数のメトリックは予測値と真実値の差である.損失関数は通常L(y,y)と書く.yは予測値を表し、yは真実値を表す.目標関数は最適化目標と見なすことができ、最適化モデルの最後の目標はこの目標関数を最大または最小にすることである.対価関数はターゲット関数に類似する.区別:目標関数(対価関数)は、正規化項などの制約条件を含むことができる.
一般的には厳密な区別はしない.以下に述べる損失関数はいずれも正規項を含む.
一般的な損失関数
kerasドキュメントにリストされているいくつかの例keras-loss
K.mean(K.square(y_pred-y_true),axis=-1)
K.mean(K.abs(y_pred-y_true),axis=-1)
K.abs((y_true - y_pred) / K.clip(K.abs(y_true),K.epsilon(),None))
#clip(x,min,max) 0
#msle
first_log = K.log(K.clip(y_pred, K.epsilon(), None) + 1.)
second_log = K.log(K.clip(y_true, K.epsilon(), None) + 1.)
loss= K.mean(K.square(first_log - second_log), axis=-1)
#mse
first_log = K.clip(y_pred, K.epsilon(), None) + 1.
second_log = K.clip(y_true, K.epsilon(), None) + 1.
loss= K.mean(K.square(first_log - second_log), axis=-1)
msle mse : ,mse , . :
y_true:[1,2,3,100]
y_1:[1,2,3,110]
y_2:[2,3,4,100]
mse (y_1:100,y_2:3) y_2 y_1.
msle ( _1:0.047,0.27) log , y_1 y_2. .
code
def cosh(x):
return (K.exp(x) + K.exp(-x)) / 2
K.mean(K.log(cosh(y_pred - y_true)), axis=-1)
この関数は誰も使ったことがないので、公式に従って図を作ります:
y_true = K.clip(y_true, K.epsilon(), 1)
y_pred = K.clip(y_pred, K.epsilon(), 1)
K.sum(y_true * K.log(y_true / y_pred), axis=-1)
1つの解釈:KL分散は、Qベースの符号化を使用してPからのサンプル平均を符号化するために必要な追加のビット数を測定するために使用される.(エントロピー、クロスエントロピー、)例:現在2つの分布pとqが真実であると仮定し、qがモデル予測のエントロピーの本質は情報量メトリックである:真実分布pに従って1つのサンプルを識別するために必要な平均符号化長を測定する:誤り分布qに従って真実分布pからの平均符号化長(クロスエントロピー)を表す:例:4文字、真実分布p=[0.5,0.5,0,q=[0.25,0.25,0.25]を用いて、H(p)を1として計算する.H(p,q)は2である.qから得る平均符号長がpから得られる平均符号長よりも多いbit数をKL分散と呼ぶ.KL分散wikiKL分散zhihu
Center Loss損失関数
本題を始めるmnistデータセットを例に挙げる.(手書き数字、28*28画像、10分類問題)categorical crossentropy(softmax loss)の問題
通常softmax loss多分類損失関数が使用する.CNNネットワーク(mnist分類は高い精度を達成しやすいが、実験効果のために、BN,relu,dropout,L 2などのtrickを使用していない場合、ネットワーク設計の意図的な差分点は、最下位の2層目の全接続層出力ノードを2つ選択することを特徴とし、その後、この2つのノードを最後の10ノード全接続層に接続する.通常の訓練過程は、高い精度に達した後、各データの最後から2番目の層の特徴を印刷する.次の図を示します.
欠点:
理由は?例えば、最後の層の全接続層の出力V=[x 1,x 2,x 3]、リアルラベルは[1,0,0]である.V=[x 1,x 2,x 3]が[3.1,3,3]であると仮定すると、softmaxの式は、Vのモジュール長増加倍数だけを必要とするloss損失を低減することができる.これは(パラメータを大きくするだけでよい)容易すぎて、ネットワークがこのようにすることが多い.私たちが通常望むようにx 2を下げるのではなく、x 3のx 1に対する値は[3.1,1,1]のようにします.これもL 2正則がフィッティングを緩和する一因である.
解決策:one_だけでなくsoftmaxにも均一な分布出力をシミュレートさせるなど、多くの場合hot.ここではcenterlossの1つにすぎない.
では、損失関数を変えましょう.平均誤差損失?以下の図:精度が30%まで下がるだけでなく、互いに直接にカバー交差がある.興味深い点:
上記のいくつかの損失関数では、softmaxが最もよく動作する.Center Loss
softmaxが示す問題に対して的確に解決します.-→クラス内の間隔が大きすぎる.