로지스틱 분류기의 Softmax vs Sigmoid 함수?


62

로지스틱 분류기에서 기능 선택 (Softmax vs Sigmoid)을 결정하는 것은 무엇입니까?

4 개의 출력 클래스가 있다고 가정하십시오. 위의 각 함수는 각 클래스의 확률이 올바른 출력이되도록합니다. 그렇다면 분류자를 위해 어느 것을 사용해야합니까?


16
softmax 함수는 sigmoid의 일반 화일 뿐이므로 "softmax vs. sigmoid"의 의미가 완전히 명확하지는 않습니다.
dsaxton

2
S 자형의 경우입니다. 시그 모이 드를 사용할 때 한 클래스는 확률 이고 다른 클래스는 확률 . exp(βTx)/(exp(βTx)+1)1/(exp(βTx)+1)
dsaxton

3
레딧 포스터는 내가 틀렸거나 적어도 관련이 없다고 생각하는 구별을 만들고 있습니다. 클래스 중 하나에 가중치가 있는지 여부는 점수를 변경하는 것이므로 확률에 영향을 미치지 않습니다.
dsaxton


3
" 제목 바로 아래 에"softmax vs. sigmoid ""의 의미가 완전히 명확하지는 않습니다. 질문의 본문이 있습니다. 또한 요청 된 내용에 정확하게 응답하기 위해 Google 검색어를 여기로 보내도록하는 것이 좋습니다.
michael

답변:


77

시그 모이 드 함수 반면, 두 클래스 로지스틱 회귀 분석에 사용 softmax를 함수 멀티 클래스 회귀 (일명 MaxEnt, 다항 로지스틱 회귀, 회귀 softmax를 최대 엔트로피 분류)에 사용된다.


2 류 로지스틱 회귀 분석에서 시그 모이 드 함수를 사용하여 예측 된 확률은 다음과 같습니다.

Pr(Yi=0)=eβXi1+eβ0XiPr(Yi=1)=1Pr(Yi=0)=11+eβXi

클래스 의 다중 클래스 로지스틱 회귀 분석 에서 softmax 함수를 사용하여 예측 된 확률은 다음과 같습니다.K

Pr(Yi=k)=eβkXi 0cKeβcXi

softmax 함수는 아래 설명 된 것처럼 sigmoid 함수를 멀티 클래스 케이스로 확장 한 것을 볼 수 있습니다. 클래스 의 멀티 클래스 로지스틱 회귀 분석을 살펴 보겠습니다 .K=2

Pr(Yi=0)=eβ0Xi 0cKeβcXi=eβ0Xieβ0Xi+eβ1Xi=e(β0β1)Xie(β0β1)Xi+1=eβXi1+eβXiPr(Yi=1)=eβ1Xi 0cKeβcXi=eβ1Xieβ0Xi+eβ1Xi=1e(β0β1)Xi+1=11+eβXi

함께 . 우리는 sigmoid 함수를 사용하여 2 클래스 로지스틱 회귀 분석에서와 동일한 확률을 얻습니다. Wikipedia 는 그것에 대해 조금 더 확장합니다.β=(β0β1)


1
나는 이것에 순진하지만, 나는 이것을 많이 본다. β =-(β0-β1) 그것에 대한 가능한 설명은 무엇입니까? 내가 Sigmoids β에서 아는 한 벡터가 될 것입니다. 그리고 그들은 보통 주어진 달리기에 대한 것입니다. 그렇다면 β0과 β1은 어떻게 나오는가?
Ishan Bhatt

1
@IshanBhatt 이 의견 이 도움 될 수도 있습니다.
Tom Hale

이상하게도, 나는 여전히 sigmoid를 사용하여 멀티 클래스로 회귀 할 수 있습니다 :)
datdinhquoc

15

그것들은 실제로 하나가 다른 것으로 변형 될 수 있다는 의미에서 동등하다.

데이터가 임의의 차원 의 벡터 로 표시되고 affine 변환과 softmax를 사용하여 이진 분류기를 만들었다 고 가정합니다.x

(z0z1)=(w0Tw1T)x+(b0b1),
P(Ci|x)=softmax(zi)=eziez0+ez1,i{0,1}.

softmax 대신 sigmoid를 사용하는 동등한 이진 분류기로 변환 해 봅시다. 우선, 우리는 시그 모이 출력 될 확률을 결정해야합니다 ( 또는 클래스 일 수 있음 ). 이 선택은 완전히 임의적이므로 클래스 선택합니다 . 그런 다음 분류 기준은 다음과 같습니다.C0C1C0

z=wTx+b,
P(C0|x)=σ(z)=11+ez,
P(C1|x)=1σ(z).

확률이 동일하면 분류 기준이 동일하므로 다음을 부과해야합니다.

σ(z)=softmax(z0)

장착 , 및 측면에서 그들의 식에서 및 일부 간단 하 대수 조작에서 및 가 다음 과 같은 경우에만 위의 동등성이 유지되는지 확인할 수 있습니다 .z0z1zw0,w1,w,b0,b1,bxwb

w=w0w1,
b=b0b1.

@null Ok, 만약 당신이 그것을 요구한다면, 당신은 내 설명을 이해하지 못했습니다. 특정 문제를 해결해 보겠습니다. 데이터를 S 자형으로 공급한다고하면 1 차원 숫자 여야합니다 . S 자형으로 공급하면 가 두 클래스 중 하나 일 가능성이 있습니다 예 : : . 그리고, 확률 에있는 있다 : . 이제 S 자형을 소프트 맥스로 바꾸겠습니다. (계속). xxC0P(C0|x)=σ(x)xC1P(C1|x)=1P(C0|x)=σ(x)
D ...

(계속). 두 클래스의 분류 문제에 softmax를 적용하려면 1 차원 데이터를 2 차원 벡터로 변환해야합니다. 따라서, 우리는 우리의 정의해야 및 . 선택 . 이후 만족해야 , 우리가 따라서 . 이제 우리는 및 입니다. 이를 사용하여 인지 즉시 확인할 수 있습니다 . w0w1w0=1w1w=w0w11=1w1w1=0z0=w0x=xz1=w1x=0σ(x)=softmax(z0)
D ...

또한, 조합 및 만족 (즉, ) 동일한 결과를 초래할 것이다. 이는 softmax에 하나의 중복 매개 변수가 있음을 나타냅니다. 이것은 어리석은 것처럼 보일 수 있지만 , 학습 알고리즘과 추론의 수치 적 안정성을 촉진 하는 매개 변수 정규화를 허용하기 때문에 실제로 흥미로운 특성 입니다. 그러나 이것은 단지 추가 의견이며, 귀하의 질문에 대답하는 것이 중요하지 않습니다 :)w0w1w=w0w11=w1w0wi
D ...

고마워 알았어 첫 번째 의견에서 확률 는 아마도 여야합니다 . 이제 변형의 기본 개념이 무엇인지 이해합니다. P(C1|x)1σ(x)
null

당신이 그것을 이해하게 된 것을 기쁘게 생각합니다;) 예, 오타입니다. 분명히 이어야합니다 . 지적 해 주셔서 감사합니다! P(C1|x)=1σ(x)
D ...

8

신경망에서 시그 모이 드 대 소프트 맥스를 사용할지 여부를 검색 할 때 사람들이 종종이 질문에 지시하는 것을 알았습니다. 신경망 분류기를 작성하는 사람들 중 하나 인 경우 네트워크의 원시 출력 값에 시그 모이 드 또는 소프트 맥스를 적용할지 여부를 결정하는 방법은 다음과 같습니다.

  • 다중 레이블 분류 문제가있는 경우 = 둘 이상의 "정답"이있는 경우 = 출력이 상호 배타적이지 않은 경우 각 원시 출력에 독립적으로 시그 모이 드 함수를 사용하십시오. S 자형을 사용하면 모든 클래스, 일부 또는 전체에 대해 높은 확률을 가질 수 있습니다. 예 : 흉부 엑스레이 이미지에서 질병 분류. 이미지는 폐렴, 폐기종 및 / 또는 암을 포함하거나 그러한 결과를 전혀 포함하지 않을 수 있습니다.
  • 멀티 클래스 분류 문제가있는 경우 = "정답"이 하나만있는 경우 = 출력이 상호 배타적이면 softmax 함수를 사용하십시오. softmax는 출력 클래스의 확률의 합이 1과 같도록 강제하므로 특정 클래스의 확률을 높이려면 모델이 다른 클래스 중 하나 이상의 확률을 감소시켜야합니다. 예 : 손으로 쓴 MNIST 데이터 세트에서 이미지를 분류합니다. 숫자의 한 장의 사진은 하나의 진정한 신원을 갖습니다. 그 그림은 동시에 7과 8 일 수 없습니다.

참고 자료 : 계산 예제를 포함하여 신경망 설계에서 시그 모이 드 vs. 소프트 맥스 를 사용하는시기에 대한 자세한 설명은 "분류 : 시그 모이 드 vs. 소프트 맥스" 문서를 참조하십시오 .


-1

이전의 모든 답변에 추가-모든 단일 클래스 분류 문제를 "일대 다"방법을 사용하여 여러 이진 분류 문제로 줄일 수 있다는 사실을 언급하고 싶습니다. 즉 C 시그 모이 드 (C가 클래스) 및 모든 시그 모이 드를 특정 클래스에 속하거나 그렇지 않을 확률로 해석하고 최대 확률을 취합니다.

예를 들어, MNIST 숫자 예제에서는 softmax 또는 10 개의 시그 모이 드를 사용할 수 있습니다. 실제로 Andrew Ng가 Coursera ML 과정에서 수행하는 작업입니다. 당신은 체크 아웃 할 수있다 여기에 앤드류 응이 (내게로 파이썬에 matlab에에서 적응) 멀티 클래스 분류를위한 10 sigmoids을 사용하는 방법과 여기에 파이썬 내 softmax를 적응이다.

또한 함수가 동일하지만 (멀티 클래스 분류의 목적으로) 기능은 구현에서 약간 다릅니다 (특히 파생 상품 및 y를 나타내는 방법 과 관련하여 ).

단일 멀티 클래스 분류 (즉, Softmax)에 비해 다중 이진 분류 (즉, Sigmoids)를 사용하면 얻을 수있는 가장 큰 장점은 소프트 맥스가 너무 큰 경우 (예 : 사전 크기가 10K 이상인 원 핫 단어 임베딩을 사용하는 경우) )-훈련하는 것이 비효율적 일 수 있습니다. 대신 훈련 세트의 일부를 가져 와서 S 자형의 일부만 훈련하는 것이 좋습니다. 이것이 네거티브 샘플링 의 기본 아이디어 입니다.


기능이 없는 softmax를 네트워크가 출력으로서 클래스에 대한 확률 분포를 생성하도록 구속되기 때문에 당량 벡터는 음수이며, 1 행 합계 S 상 단위 비 - 음, 그러나 임의의 개수의 합이있다 0 내지 ; 유효한 확률 분포가 아닙니다. 이 구별은 두 기능의 차이점을 특성화하는 데 중요합니다. CC
Monica Monica

equivalent 정의는 무엇입니까? 광산은 : 문제없이 멀티 클래스 분류에 사용할 수 있습니다. 또한 softmax를 사용하는 모든 멀티 클래스 분류는 시그 모이 드를 사용하는 일대일 이진 분류로 변환 될 수 있습니다. 왜 합산 된 출력의 분포에주의해야합니까?
David Refaeli

다중 레이블 분류에 대한 당신의 주장은 왜 sigmoid와 softmax가 동등하지 않은지를 보여줍니다. softmax를 사용할 때 한 클래스의 확률을 높이면 다른 모든 클래스의 총 확률이 줄어 듭니다 (sum-to-1로 인해). S 자형을 사용하여 한 클래스의 확률을 높이더라도 다른 클래스의 총 확률은 변경되지 않습니다. 이 관찰은 다중 레이블 분류에 시그 모이 드가 그럴듯한 이유 입니다. 단일 예제는 클래스에 속할 수 있습니다. 또한 sum-to-1은 softmax가 다중 레이블 분류에 적합하지 않은 이유입니다. 0,1,2,,C
Monica Monica

널 잃었 어 내가 아는 모든 실질적인 목적으로, 다중 시그 모이 드 = 1 소프트 맥스. 음수 샘플링의 경우도 추가했는데, 여기서 여러 시그 모이 드가 실제로 softmax보다 유리합니다.
David Refaeli
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.