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


159

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

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

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


8
이 함수는 지수로 인해 계산하는 데 비용이 많이 들지 않지만 모든 qj를 계산해야하기 때문에 비용이 많이 듭니다. 지수는 필요한 총 계산량에 비해 저렴합니다.
Seppo Enarvi

어떤 Z 변환에 대해 이야기하고 있습니까? 이 용어의 신호 처리 의미는 여기에 맞지 않으며 입력 값이 평균보다 낮 으면 값을 z 점수로 바꾸면 음의 출력이 생성됩니다.
David Cian

답변:


166

표준 정규화와 비교할 때 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 !?

16
이 답변 은 이론적 토대에 초점을 맞추기보다는 지수 사용 의 영향 을 가장 잘 보여줍니다 . (좋습니다). 답변의 맨 앞에 포함되어야합니다. 지수가 어떻게, 그리고 어느 정도로 지수가 값을 분산시키는지를 본 후에, 가장 좋은 대답은 왜 당신이 그것을 원하는지 설명하는 데 도움이됩니다.
이안 댄포스

@IanDanforth 동의합니다. 시작해야합니다.
Hitesh

11
이 답변이 가장 많이 투표 된 이유를 잘 모르겠습니다. [1,2]가 흐릿한 이미지에 해당하고 [10,20]이 더 선명한 이미지에 해당하는 이유는 무엇입니까? 이것은 단순히 확장의 문제이며 두 경우 모두 본질적으로 동일합니다. 그렇다면 표준 정규화를 지원하는 것으로 보이며 이는 두 경우를 동일하게 고려합니다.
user118967

값이 [0, 1]로 이미 보장 된 경우, 단순히 합계를 나누는 대신 softmax를 사용하는 이점이 있습니까?
마틴 토마

58

나는 몇 달 동안이 질문을했다. 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 자형의 일반화입니다.


안녕하세요,이 진술을 설명해 주시겠습니까? 그리고 어떻게 근사 할 수 있었습니까? ", z의 큰 차이는 대략적으로 대략적인 것입니다"
London guy

45

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

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

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

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

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

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


2
이전 코멘트에 추가하기 위해, softmax 함수의 미분은 softmax (1-softmax)입니다.
Rouzbeh

11
Cross-Entropy Loss를 사용하는 이유를 알지만 softmax와 어떤 관련이 있습니까? "softmax 함수는 예측과 진실 사이의 교차 엔트로피를 최소화하려는 것으로 볼 수 있습니다." 표준 / 선형 정규화를 사용하지만 여전히 교차 엔트로피 손실을 사용한다고 가정하십시오. 그런 다음 교차 엔트로피를 최소화하려고합니다. 그렇다면 수치 적 이점을 제외하고 softmax는 어떻게 교차 엔트로피와 연결되어 있습니까?
Kilian Batzner

18
확률 론적 관점에 관해서는 : 로그 확률을 보는 동기는 무엇인가? 추론은 "x를 로그 확률로 해석하기 때문에 우리는 softmax에서 e ^ x를 사용합니다." 우리가 말할 수있는 것과 같은 추론으로, 우리는 x를 log-log-log-probabilities (물론 여기서 과장)로 해석하기 때문에 softmax에서 e ^ e ^ e ^ x를 사용합니다. 나는 softmax의 수치 적 이점을 얻었지만 그것을 사용하는 이론적 동기는 무엇입니까?
Kilian Batzner

5
@KilianBatzner 뉴런의 결과가 로그 확률이면 많은 뉴런의 결과의 합은 확률의 곱셈입니다. 그것은 확률의 합보다 일반적으로 유용합니다.
alltom

1
@KilianBatzner 기능이 다른 가우스 군집 (클래스 당 군집)에서 나온 경우 완벽한 분류기 (로지스틱 회귀)를 도출 할 수 있습니다. 몇 가지 추가 조건이 있지만 본질적으로 가우스 클러스터를 분리하려는 가정하에 softmax 및 로짓을 정당화 / 유도 할 수 있습니다.
maxy

16

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

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

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

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


12
q_i는 암시 적으로 로그 가능성을 나타내지 않습니다. 우리가 명시 적으로 생각하는 것은 softmax를 사용할 때만 가능합니다.
Tom

6

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

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

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

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

이미지 설명을 입력하세요


'x'와 'x + c'에 대해 동일한 값을 반환하므로 활성화 기능으로 어떻게 작동합니까?
Suresh Pokharel

1
엄밀히 말하면 softmax활성화 기능이 아닙니다. 활성화 기능은 요소 별 작업입니다. 텐서는 요소에 비선형 작업을 수행하여 다른 텐서를 생성합니다. 그러나 softmax벡터 연산입니다. 정규화 된 벡터를 생성합니다. 각 요소간에 내부 종속성이 있습니다.
GabrielChu

5

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

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


3
일반적으로 최소값을 뺀 다음 최대 / 합으로 나눕니다. 귀하의 경우에는 [0, 1, 3, 4]나누는 것이 좋습니다.
ubershmekel 2018 년

1
@ubershmekel 이것은 가장 작은 점수를 가진 클래스에 항상 0의 확률이 할당 될 것이라는 문제에 부딪칩니다.
Alessandro Power

4

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

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


저에게있어 최대 기능의 "연화 된"버전이라는 아이디어는 softmax의 사용을 정당화하는 가장 간단한 방법입니다.
tashuhka

3

Piotr Czapla 답변에 더하여 입력 값이 클수록 최대 입력 확률은 동일한 비율로 다른 입력과 비교됩니다.

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


2

다른 가능한 정규화 기능이 많기 때문에 softmax 기능의 선택은 임의적 입니다. 따라서 log-softmax 손실이 다른 손실 대안보다 우수한 성능을 보이는 이유는 확실하지 않습니다.

" 구형 손실 가족에 속하는 Softmax 대안의 탐색 "에서 https://arxiv.org/abs/1511.05042

저자들은 다른 기능들 중 Taylor 확장 exp과 구형 소프트 맥스 (spherical softmax)라고 불리는 다른 기능들을 살펴 보았고 때로는 평소보다 더 나은 성능을 발휘할 수 있다는 것을 발견했다 softmax.

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