합계 대신 배치에 대한 평균 손실을 최소화하는 것이 일반적입니까?


17

Tensorflow에는 CIFAR-10 분류에 대한 예제 자습서가 있습니다. 자습서에서 배치 전체의 평균 교차 엔트로피 손실이 최소화됩니다.

def loss(logits, labels):
  """Add L2Loss to all the trainable variables.
  Add summary for for "Loss" and "Loss/avg".
  Args:
    logits: Logits from inference().
    labels: Labels from distorted_inputs or inputs(). 1-D tensor
            of shape [batch_size]
  Returns:
    Loss tensor of type float.
  """
  # Calculate the average cross entropy loss across the batch.
  labels = tf.cast(labels, tf.int64)
  cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(
      logits, labels, name='cross_entropy_per_example')
  cross_entropy_mean = tf.reduce_mean(cross_entropy, name='cross_entropy')
  tf.add_to_collection('losses', cross_entropy_mean)

  # The total loss is defined as the cross entropy loss plus all of the weight
  # decay terms (L2 loss).
  return tf.add_n(tf.get_collection('losses'), name='total_loss')

cifar10.py , 267 행을 참조하십시오 .

대신 배치 전체의 합계를 최소화하지 않는 이유는 무엇입니까? 차이가 있습니까? 이것이 백프로 프 계산에 어떻게 영향을 미치는지 이해하지 못합니다.


정확히 합계 / 평균과 관련이 없지만 손실 선택은 응용 프로그램 설계 선택입니다. 예를 들어, 평균을 제대로 유지하려면 평균을 최적화하십시오. 응용 프로그램이 최악의 시나리오 (예 : 자동차 사고)에 민감한 경우 최대 값을 최적화해야합니다.
Alex Kreimer

답변:


17

pkubik에서 언급했듯이 일반적으로 입력에 의존하지 않는 매개 변수에 대한 정규화 용어가 있습니다.

# Loss function using L2 Regularization
regularizer = tf.nn.l2_loss(weights)
loss = tf.reduce_mean(loss + beta * regularizer)

이 경우 미니 배치를 평균화 하면 배치 크기가 변경되는 동안 cross_entropy손실과 손실 사이의 고정 비율을 유지하는 데 도움이됩니다 regularizer.

또한 학습률은 손실의 크기 (그라데이션)에 민감하므로 다른 배치 크기의 결과를 정규화하려면 평균을 취하는 것이 더 나은 옵션으로 보입니다.


최신 정보

Facebook 의이 논문 (정확한 Large Minibatch SGD : 1 시간 교육 ImageNet)은 실제로 배치 크기에 따라 학습 속도를 조정하는 것이 매우 효과적이라는 것을 보여줍니다.

선형 스케일링 규칙 : 미니 배치 크기에 k를 곱한 경우 학습 속도에 k를 곱합니다.

그라디언트에 k를 곱하고 학습 속도를 변경하지 않는 것과 본질적으로 동일하므로 평균을 취하는 것이 필요하지 않은 것 같습니다.


8

나는 그 부분에 집중할 것이다 :

이것이 백프로 프 계산에 어떻게 영향을 미치는지 이해하지 못합니다.

우선 결과 손실 값 사이의 유일한 차이점은 평균 손실이 의 인수로 합에 대해 축소된다는 것입니다.1BLSUM=BLAVGBdLSUMdx=BdLAVGdx

dLdx=limΔ0L(x+Δ)L(x)Δ
d(cL)dx=limΔ0cL(x+Δ)cL(x)Δ
d(cL)dx=climΔ0L(x+Δ)L(x)Δ=cdLdx

SGD에서는 학습률 곱한 기울기를 사용하여 가중치를 업데이트하고 최종 가중치 업데이트와 동일한 방식으로이 매개 변수를 선택할 수 있음을 분명히 알 수 있습니다. 첫 번째 업데이트 규칙 : 및 두 번째 업데이트 규칙 ( ) : λ

W:=W+λ1dLSUMdW
λ1=λ2B
W:=W+λ1dLAVGdW=W+λ2BdLSUMdW


dontloo 의 훌륭한 발견 은 합계를 사용하는 것이 조금 더 적절한 접근법 일 수 있음을 암시 할 수 있습니다. 더 인기있는 것 같은 평균을 정당화하기 위해 합계를 사용하면 무게 정규화에 약간의 문제가 발생할 수 있다고 덧붙입니다. 다른 배치 크기에 대해 정규화 기의 스케일링 계수를 조정하는 것은 학습 속도를 조정하는 것만 큼 성 가실 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.