로지스틱 분류기의 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−β0⋅XiPr(Yi=1)=1−Pr(Yi=0)=11+e−β⋅Xi

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

Pr(Yi=k)=eβk⋅Xi ∑0≤c≤Keβc⋅Xi

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

Pr(Yi=0)=eβ0⋅Xi ∑0≤c≤Keβc⋅Xi=eβ0⋅Xieβ0⋅Xi+eβ1⋅Xi=e(β0−β1)⋅Xie(β0−β1)⋅Xi+1=e−β⋅Xi1+e−β⋅XiPr(Yi=1)=eβ1⋅Xi ∑0≤c≤Keβc⋅Xi=eβ1⋅Xieβ0⋅Xi+eβ1⋅Xi=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′=w′Tx+b′,
P(C0|x)=σ(z′)=11+e−z′,
P(C1|x)=1−σ(z′).

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

σ(z′)=softmax(z0)

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

w′=w0−w1,
b′=b0−b1.

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

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

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