2016-08-02 16 views
5

저는 기계 학습에 익숙하지 않고 현재 컨벌루션 레이어 3 개와 완전히 연결된 레이어 1 개가있는 길쌈 신경 네트워크를 훈련하려고합니다. 나는 25 %의 탈락 확률과 0.0001의 학습률을 사용하고있다. 저는 6000 개의 150x200 교육 이미지와 13 개의 출력 클래스를 가지고 있습니다. 나는 tensorflow를 사용하고 있습니다. 내 손실이 꾸준히 줄어드는 경향을 눈치 챘지만 정확도는 약간만 증가한 다음 다시 떨어졌습니다. 내 교육 이미지는 파란색 선이고 유효성 검사 이미지는 주황색 선입니다. x 축은 계단입니다. enter image description here길쌈 신경 네트워크에서 저손실이 가능하지만 정확도가 낮은 이유는 무엇입니까?

내가 이해할 수없는 것이 있거나이 현상의 가능한 원인이있을 수 있는지 궁금합니다. 내가 읽은 자료에서 낮은 손실은 높은 정확성을 의미한다고 생각했습니다. 여기 내 손실 기능입니다.

입니다
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y)) 
+1

* overfitting *이 (가) 들었습니까? – sascha

+1

낮은 교육 손실은 낮은 교육 집합 오류를 의미해야합니다. 당신의 손실은 얼마나 낮습니까? 귀하의 규모는 수백만에 달합니다. 그래프에서 귀하의 훈련 손실이 적습니다 (1 미만). –

+0

예 저는 피팅에 대해 들어 봤지만, 피팅을 넘으면 여전히 높은 정확도를 유지할 것이라는 가정하에있었습니다. 훈련 데이터. 미안해, 훈련이 끝나면 1-10 사이의 손실이있었습니다. –

답변

4

손실 및 두 개의 완전히 다른 것 (물론 적어도 논리적으로)입니다 정확도 때문에! 자동 loss, accuracy 증가를 최소화하려고 할 때이 경우

loss = (1-accuracy) 

:

당신이로 loss를 정의하는 예를 생각해 보자. 당신이로 loss을 정의 할 경우

지금 또 다른 예를 고려해이 이해가되지 않지만

loss = average(prediction_probabilities) 

, 그것은 기술적으로 여전히 유효한 손실 함수이며, 당신은 weights 여전히 loss 등을 최소화하기 위해 조정된다.

그러나이 경우에는 lossaccuracy 사이에는 아무런 관계가 없으므로 두 시간 모두 동시에 증가/감소 할 수는 없습니다.

참고 : Loss은 항상 최소화됩니다 (따라서 각 반복 후에 loss이 줄어 듭니다)!

추신 : 최소화하고자하는 loss 기능으로 질문을 업데이트하십시오.

+2

OP는 softmax 출력에서 ​​다중 로그 logloss를 사용하고 있다고 OP가 의견을 보았습니다. –

+0

@Sangram 안녕하세요! 나는'손실 = 평균 (prediction_probabilities)'이 최소화되어 있다면, 내'predict_probabilities'가 땅의 진실 오른쪽에 가까워지고 있다는 것을 의미하고, 내 정확성을 향상시키지 않는지 궁금합니다. – deeplearning

+0

별로! ** 손실 = 평균 (예측 _ 확률) **을 최소화하려고 시도하면 네트워크 출력이 0이되는 경향이 있고 정확도와 아무런 관련이없는 방식으로 가중치가 조정됩니다. 네트워크가 특정 클래스 (예 : 긍정적 인 클래스)에 대해 예측 확률을 정확히 제로로 출력하면 정확도는 해당 클래스의 보급일뿐입니다. – Sangram

1

softmax_cross_entropy_with_logits()와 정확도는 수식 정의가 다른 두 가지 개념입니다. 정상적인 경우 softmax 교차 엔트로피를 최소화하여 더 높은 정확도를 기대할 수 있지만 서로 다른 방식으로 계산되므로 동기화 된 방식으로 항상 늘리거나 줄일 수는 없습니다.

우리는 CNN에서 softmax cross entropy를 사용합니다. 왜냐하면 신경망 훈련에 효과적이기 때문입니다. 우리가 손실 = (1- 정확도)를 손실 함수로 사용한다면, 현재 성숙한 역전승 훈련 솔루션으로 CNN 신경망의 무게를 조정하여 더 나은 결과를 얻는 것은 매우 어렵습니다. 실제로 해냈고이 결론을 확증했습니다. 혼자서 시도해보십시오. 어쩌면 그것은 현재 우리의 뉴런의 정의에 의해 야기 된 것일 수도 있지만 (어쨌든, 현재, 손실 함수의 정확도를 사용하는 것은 효과적인 방법이 아닙니다. 뉴런 네트워크 훈련 때문에 softmax_cross_entropy_with_logits()를 AI 과학자들이 말했듯이, 우리는 이미이 방법이 효과적이고, 다른 방법으로는 효과가 있다는 것을 이미 확인했습니다. 우리는 아직 알지 못합니다.

+0

저는 현재 새로운 온라인 교육을 배우고 있으며 왜 softmax_cross_entropy_with_logits()를 사용해야하는지에 대한 새로운 이해를 얻었습니다. 이유는 매우 간단합니다 : softmax 크로스 엔트로피 함수는 볼록 함수이지만 대부분의 다른 함수는 그렇지 않습니다. 그래서 우리는 convex 함수에서 지역 최소값을 찾음으로써 전역 최소값을 찾을 수 있습니다. 그러나 볼록하지 않은 함수 (예 : 손실 = (1- 정확도)이면 다중 지역 최소값을 가지므로 우리의 역 전파 알고리즘을 사용하여 적합한 W & b 값을 찾을 수 없습니다. –

관련 문제