[math] 표준 정규화와 달리 softmax를 사용하는 이유는 무엇입니까?

신경망의 출력 레이어에서 softmax 함수를 사용하여 확률 분포를 근사화하는 것이 일반적입니다.

여기에 이미지 설명을 입력하십시오

지수로 인해 계산 비용이 많이 듭니다. 왜 모든 변환이 양수가되도록 Z 변환을 수행 한 다음 모든 출력을 모든 출력의 합으로 나눠서 정규화하지 않겠습니까?



답변

표준 정규화와 비교할 때 Softmax의 한 가지 좋은 특성이 있습니다.

분포는 다소 균일 한 신경망의 낮은 자극 (흐린 이미지 생각)과 0과 1에 가까운 확률로 높은 자극 (즉, 큰 숫자, 선명한 이미지 생각)에 반응합니다.

표준 정규화는 비율이 동일한 한 신경 쓰지 않습니다.

소프트 맥스가 10 배 더 큰 입력을 가졌을 때 어떤 일이 발생하는지보십시오.

>>> softmax([1,2])              # blurry image of a ferret
[0.26894142,      0.73105858])  #     it is a cat perhaps !?
>>> softmax([10,20])            # crisp image of a cat
[0.0000453978687, 0.999954602]) #     it is definitely a CAT !

그런 다음 표준 정규화와 비교하십시오.

>>> std_norm([1,2])                      # blurry image of a ferret
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
>>> std_norm([10,20])                    # crisp image of a cat
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?


답변

나는 몇 달 동안이 질문을했다. softmax를 출력 함수로 영리하게 추측 한 다음 입력을 softmax에 대한 로그 확률로 해석합니다. 당신이 말했듯이, 왜 모든 출력을 그 합으로 나눠서 정규화하지 않겠습니까? 6.2.2 절의 Goodfellow, Bengio 및 Courville (2016) 의 딥 러닝 책 에서 답을 찾았습니다 .

마지막 숨겨진 레이어가 z를 활성화로 제공한다고 가정 해 봅시다. 그러면 softmax는 다음과 같이 정의됩니다

아주 짧은 설명

softmax 함수의 exp는 대 엔트로피 손실의 로그를 대략 상쇄하여 z_i에서 손실이 대략 선형이되도록합니다. 이로 인해 모델이 잘못되었을 때 대략 일정한 기울기가 발생하여 빠르게 보정 할 수 있습니다. 따라서 잘못된 포화 소프트 맥스가 사라지는 구배를 유발하지 않습니다.

간단한 설명

신경망을 훈련시키는 가장 보편적 인 방법은 Maximum Likelihood Estimation입니다. 우리는 훈련 데이터의 가능성을 극대화하는 방식으로 매개 변수 세타를 추정합니다 (크기 m). 전체 트레이닝 데이터 세트의 가능성은 각 샘플의 우도의 곱이므로, 최대화하기 쉽다 로그 우도 데이터 집합 및 이에 K로 인덱싱 된 각 샘플의 로그 우도의 합 :

이제 z가 주어진 소프트 맥스에만 초점을 맞 춥니 다.

나는 k 번째 샘플의 올바른 클래스입니다. 이제 softmax의 로그를 가져 와서 샘플의 로그 우도를 계산하면 다음과 같은 결과가 나타납니다.

z의 큰 차이에 대해 대략적으로 대략적인

먼저 선형 구성 요소 z_i를 볼 수 있습니다. 둘째, 두 가지 경우에 대해 max (z)의 동작을 검사 할 수 있습니다.

  1. 모형이 정확하면 max (z)는 z_i가됩니다. 따라서 로그 우도는 z_i와 z의 다른 항목 사이의 차이가 커짐에 따라 0으로 나타납니다 (즉 1의 우도).
  2. 모형이 올바르지 않으면 max (z)는 다른 z_j> z_i입니다. 따라서 z_i를 추가해도 -z_j가 완전히 취소되지 않으며 로그 우도는 대략 (z_i-z_j)입니다. 이것은 로그 가능성을 높이기 위해 z_i를 높이고 z_j를 줄이려면 어떻게해야하는지 모델에 명확하게 알려줍니다.

모델이 잘못된 샘플에 의해 전체 로그 우도가 지배적임을 알 수 있습니다. 또한 모델이 실제로 부정확하더라도 포화 된 softmax가 발생하더라도 손실 함수는 포화되지 않습니다. z_j에서 거의 선형으로, 거의 일정한 기울기를 가짐을 의미합니다. 이를 통해 모델이 신속하게 수정 될 수 있습니다. 예를 들어, 평균 제곱 오류의 경우에는 해당되지 않습니다.

긴 설명

softmax가 여전히 임의의 선택 인 것 같으면 로지스틱 회귀 분석에서 S 자형을 사용하는 데 대한 정당성을 살펴볼 수 있습니다.

왜 다른 것 대신 S 자형 기능이 필요한가?

softmax는 유사하게 정당화되는 다중 클래스 문제에 대한 S 자형의 일반화입니다.


답변

: 나는 매우 좋은 것으로 여기에 설명을 발견 CS231n : 시각 인식에 대한 길쌈 신경망.

표면에서 softmax 알고리즘은 단순한 비선형 (데이터를 지수로 확산) 정규화로 보입니다. 그러나 그 이상이 있습니다.

특히 몇 가지 다른보기가 있습니다 ( 위와 동일한 링크 ).

  1. 정보 이론-정보 이론의 관점에서 softmax 함수는 예측과 진실 사이의 교차 엔트로피를 최소화하려는 것으로 볼 수 있습니다.

  2. 확률 론적 관점 –이 관점에서 우리는 실제로 로그 확률을보고 있습니다. 따라서 지수화를 수행 할 때 우리는 원시 확률로 끝납니다. 이 경우 softmax 방정식은 MLE (Maximum Likelihood Estimate)를 찾습니다

요약하면, softmax 방정식은 임의적 인 것처럼 보이지만 그렇지 않습니다. 실제로 예측과 진실 사이의 교차 엔트로피 / 음의 가능성을 최소화하기 위해 분류를 정규화하는 다소 원칙적인 방법입니다.


답변

q_i의 값은 로그 우도를 나타냅니다. 확률 값을 복구하려면 지수를 지수화해야합니다.

통계 알고리즘이 종종 로그 우도 손실 함수를 사용하는 한 가지 이유는보다 수치 적으로 안정적이기 때문입니다. 확률의 곱은 매우 작은 부동 소수점 수로 표시 될 수 있습니다. 로그 우도 손실 함수를 사용하면 확률 곱이 합이됩니다.

또 다른 이유는 다변량 가우스 분포에서 도출 된 것으로 추정되는 랜덤 변수에 대한 추정값을 도출 할 때 로그 가능성이 자연스럽게 발생하기 때문입니다. 예를 들어 ML (Maximum Likelihood) 추정기 및 최소 제곱에 연결되는 방법을 참조하십시오.

참고로,이 질문은 CS 이론 또는 전산 과학 스택 교환에 더 적합하다고 생각합니다.


답변

우리는 멀티 클래스 분류 문제를보고 있습니다. 즉, 예측 변수 yk범주 중 하나를 취할 수 있습니다 k > 2. 여기서 . 확률 이론에서, 이것은 일반적으로 다항 분포에 의해 모델링됩니다. 다항 분포는 지수 패밀리 분포의 멤버입니다. P(k=?|x)지수 패밀리 분포의 특성을 사용 하여 확률 을 재구성 할 수 있으며 , 이는 softmax 공식과 일치합니다.

다항식 이외의 다른 분포로 문제를 모형화 할 수 있다고 생각하면 softmax와 다른 결론에 도달 할 수 있습니다.

더 자세한 정보와 공식적인 도출은 CS229 강의 노트 (9.3 Softmax Regression) 를 참조하십시오 .

또한 softmax에 유용한 유용한 트릭은 다음과 같습니다. softmax (x) = softmax (x + c) , softmax는 입력의 상수 오프셋에 영향을받지 않습니다.

이미지 설명을 입력하세요


답변

exp (x)는 항상 양수이고 0보다 크므로 음수와 0으로 나누는 이유 중 하나는 제 생각입니다.

예를 들어 a = [-2, -1, 1, 2]합계가 0이면 softmax를 사용하여 0으로 나누지 않아도됩니다.


답변

softmax 기능을 변경하여 출력 활성화가
여기에 이미지 설명을 입력하십시오

c양의 상수는 어디에 있습니까 ? 참고 c=1표준이 softmax 기능에 해당합니다. 그러나 다른 값을 사용하면 다른 c기능을 얻을 수 있습니다. 그럼에도 불구하고 이는 소프트 맥스와 질적으로 비슷합니다. 특히 출력 활성화가 일반적인 softmax와 마찬가지로 확률 분포를 형성 함을 보여줍니다. 우리 c가 커질 수 있다고 가정하자 c→∞. 출력 활성화에 대한 제한 값은 무엇입니까 a^L_j? 이 문제를 해결 한 후에 왜 c=1함수가 최대 함수의 “소프트화 된”버전 이라고 생각하는지 분명히 알 수 있습니다 . 이것이 “softmax”라는 용어의 기원입니다. 이 소스 의 세부 사항을 따를 수 있습니다 (식 83).