이 답변은 TensorFlow와 관련이없는 비용 함수 의 일반적인 측면에 있으며 대부분 질문의 "이 주제에 대한 설명"부분을 다룰 것입니다.
대부분의 예제 / 튜토리얼에서 사용 된 비용 함수는 다소 임의적이었습니다. 요점은 독자에게 비용 함수가 아닌 특정 방법을 소개하는 것이 었습니다. 도구에 익숙해지기 위해 튜토리얼을 따르는 것을 멈추지 않아야하지만 내 대답은 자신의 문제에 대한 비용 함수를 선택하는 방법에 도움이 될 것입니다.
교차 엔트로피, 로짓, L2 규범 또는 특정 사항에 대한 답변을 원하면 여러 가지 더 구체적인 질문을 게시하는 것이 좋습니다. 이를 통해 특정 지식을 가진 사람이 귀하의 질문을 볼 가능성이 높아집니다.
원하는 결과를 달성하기위한 적절한 비용 기능을 선택하는 것은 기계 학습 문제의 중요한 포인트입니다. 방법에서 원하는 것을 정확히 모르는 경우 기본 접근 방식 은 회귀 문제에 평균 제곱 오류 (Wikipedia) 를 사용하고 분류 문제에 대한 오류 백분율을 사용하는 것입니다. 그러나 방법에서 좋은 결과를 얻으 려면 good 을 정의하고 적절한 비용 함수 를 정의 해야 합니다. 이것은 도메인 지식 (데이터는 무엇인가, 달성하려고하는 것은 무엇이든)과 귀하가 사용할 수있는 툴에 대한 지식에서 비롯됩니다.
툴에 대한 지식이 거의 없으므로 TensorFlow에 이미 구현 된 비용 함수를 안내 할 수는 없지만 다른 비용 함수를 작성하고 평가하는 방법에 대한 예를 제공 할 수 있습니다.
비용 함수 간의 다양한 차이점을 설명하기 위해 각 샘플 에 대해 클래스 가 필요한 이진 분류 문제의 예를 사용합니다 .xnf(xn)∈{0,1}
계산 속성으로 시작 ; "같은 것"을 측정하는 두 함수가 어떻게 다른 결과로 이어질 수 있을까요? 다음과 같은 간단한 비용 함수를 취하십시오. 오류율 당신이 경우 샘플, 예측 클래스이며, 진정한 클래스, 당신은 최소화하려면Nf(yn)yn
- 1N∑n{10 if f(xn)≠yn otherwise=∑nyn[1−f(xn)]+[1−yn]f(xn) .
이 비용 함수는 쉽게 해석 할 수 있다는 이점이 있습니다. 그러나 매끄럽지 않습니다. 두 개의 샘플 만있는 경우 "점프"기능은 0에서 0.5, 1로 조정됩니다.이 기능에서 그래디언트 디센트를 사용하려고하면 불일치가 발생합니다. 이를 피하는 한 가지 방법은 할당 확률을 사용하도록 비용 함수를 변경하는 것입니다. . 기능은p(yn=1|xn)
- 1N∑nynp(yn=0|xn)+(1−yn)p(yn=1|xn) .
이 기능은 더 부드러 우며 경사 하강 방식으로 더 잘 작동합니다. '더 미세한'모델을 얻게됩니다. 그러나 다른 문제가 있습니다. 모호한 표본이있는 경우 보다 나은 것을 말할 수있는 충분한 정보가 없다고 . 그런 다음,이 비용 함수에 경사 하강을 사용하면이 확률을 가능한 한 많이 증가시켜 모델에 적합 할 수 있습니다.p(yn=1|xn)=0.5
이 기능의 또 다른 문제는 경우 동안 , 당신이 잘 될 것이 거의 확실한 경우,하지만 당신은 잘못입니다. 이 문제를 피하기 위해 확률 로그를 취할 수 있습니다 . 마찬가지로 및 , 다음 함수는 이전 단락에 설명 된 문제를 가지고 있지 않습니다p(yn=1|xn)=1yn=0logp(yn|xn)log(0)=∞log(1)=0
- 1N∑nynlogp(yn=0|xn)+(1−yn)logp(yn=1|xn) .
이것은 같은 것 , 오류 비율 을 최적화하기 위해 다른 정의가 계산적으로 이해하기 쉬운 경우 다른 결과가 산출 될 수 있음을 설명해야합니다.
비용 함수 와 는 동일한 개념 을 측정 할 수 있지만 는 분석법이 보다 더 나은 결과를 이끌어 낼 수 있습니다 .ABAB
이제 다른 비용 함수가 다른 개념을 측정 할 수있는 방법을 살펴 보겠습니다. Google 검색에서와 같이 정보 검색의 맥락에서 (순위를 무시하는 경우) 반환 된 결과를
알고리즘이 모든 것을 반환하면 가능한 모든 관련 결과를 반환하므로 리콜이 높지만 정밀도는 매우 낮습니다. 반면에 하나의 요소 만 반환 하면 가장 확실한 요소는 관련성이 높으며 정밀도는 높지만 리콜은 낮습니다.
이러한 알고리즘을 판단하기 위해 공통 비용 함수는 점수 (Wikipedia) 입니다. 일반적인 경우는 정밀도와 리콜에 동일한 가중치를 부여 하는 이지만 일반적인 경우 이며 를 조정 하여 얻을 수 있습니다.FF1Fββ
- 을 사용하는 경우 더 높은 리콜β>1
- 을 사용하면 정밀도가 높아집니다 .β<1
이러한 시나리오 에서 비용 함수를 선택하는 것은 알고리즘이 수행해야하는 트레이드 오프를 선택하는 것 입니다.
종종 제기되는 또 다른 예는 의학적 진단의 경우이며, 선호하는 것에 따라 더 많은 오탐 또는 오탐을 처벌하는 비용 함수를 선택할 수 있습니다.
- 더 건강한 사람들은 병으로 분류됩니다 (그러나 우리는 건강한 사람들을 치료할 수 있습니다. 그들은 비용이 많이 들고 실제로 아프지 않으면 그들을 해칠 수 있습니다)
- 더 많은 아픈 사람들이 건강하다고 분류됩니다 (그러나 치료없이 죽을 수도 있습니다)
결론적으로 비용 함수를 정의하는 것이 알고리즘의 목표를 정의하는 것입니다. 알고리즘은 도착하는 방법을 정의합니다.
참고 : 일부 비용 함수에는 목표를 달성하기위한 훌륭한 알고리즘 방법이 있습니다. 예를 들어 SVM (Wikipedia) 의 이중 문제를 해결하여 힌지 손실을 최소화하는 좋은 방법 이 있습니다 (Wikipedia)