caffe教程翻訳:Loss

2769 ワード

本文はCaffe公式サイト教程の中でLoss項目で、原文の住所:http://caffe.berkeleyvision.org/tutorial/loss.html
Loss(損失)
ほとんどのマシン学習エンジンと同じように、Caffeはloss function(損失関数)によって駆動されます。loss functionはerror functionとも言われています。cost functionまたはobjective functionです。loss functionは、モデル内のパラメータ(例えば、モデル内のネットワークのweights-重みパラメータ)演算を用いて、パラメータ設定のbadnessを示し、loss functionから導出したbadnessを最小化することにより、アルゴリズムを最適化し、学習の目的を達成する。
CaffeのlossはNetのForward passから計算されます。各Layerは入力したBlobsに基づいて出力のBlobsを計算します。あるLayerの出力はloss function計算badnessに使われます。one-versus-all classitions taskについては、古典的なloss functionは、SoftmaxWithLoss function(一般化された線形回帰分析損失関数)である。以下のように定義されています
layer { name: "loss" type: "SoftmaxWithLoss" bottom: "pred" bottom: "label" top: "loss" }
SoftmaxWithLoss functionでは、出力はスカラーであり、予測値(pred)と実際値(label)との間の平均誤差(loss)を計算する。
Loss weight(損失重量)
複数のLayerからなるNetに対して、異なるLayerが生成するlossの重要性を特徴づけるために、loss weight(重み)が使用される。
Caffeの中の約束、Layerの名前の中でLossで最後にこれがlossを生むLayerであることを表して、その他のLayerは単純に中間計算に用います。しかし、いずれのLayerもlossを生成するために使用されてもよく、Layerの場合は、各output Blobに属性を追加します。weight:なら。各Loss Layerには暗黙的なloss weightがあります。最初のtop/out putに対して、loss weightは1で、他のtop/out putに対して、loss weightは0です。他のタイプのLayerが隠れているloss weightは全部0です。上記のSoftmaxWithLoss layerも書くことができます。
layer { name: "loss" type: "SoftmaxWithLoss" bottom: "pred" bottom: "label" top: "loss" loss_weight: 1 }
しかし、逆反復の場合、一つのLayerは、中間Layerによって生成されたいくつかのデータ、パラメータを調整するために、ゼロではないloss weightを与えることができる。一つ以上の出力(top)のLayerに対して、出力のlossはsumming over all entries of the blobである。
Caffeの最後に出力されたlossは、Netのすべてのloss重み付けによって得られたもので、以下のように(疑似コード):
loss := 0
for layer in layers:
  for top, loss_weight in layer.tops, layer.loss_weights:
    loss += loss_weight * sum(top)
本論文の要約:http://blog.csdn.net/u011762313/article/details/47356285