Função Softmax vs Sigmoid no classificador Logístico?


63

O que decide a escolha da função (Softmax vs Sigmoid) em um classificador Logístico?

Suponha que existem 4 classes de saída. Cada uma das funções acima fornece as probabilidades de cada classe ser a saída correta. Então, qual levar para um classificador?


16
A função softmax nada mais é do que uma generalização do sigmóide; portanto, não está totalmente claro o que você quer dizer com "softmax vs. sigmóide".
dsaxton

2
É o caso do sigmóide. Quando usamos o sigmóide, uma classe tem probabilidade exp(βTx)/(exp(βTx)+1) e a outra tem probabilidade 1/(exp(βTx)+1) .
dsaxton

3
O pôster do reddit está fazendo uma distinção que eu acho errada ou pelo menos irrelevante. Se uma das classes tem ou não peso, é apenas uma questão de mudar as pontuações, o que não afeta as probabilidades.
dsaxton 6/09/16


3
"não está totalmente claro o que você quer dizer com" softmax vs. sigmoid "." logo abaixo do título, há o corpo da pergunta - é muito fácil de perder, eu sei. Além disso, é um bom título direcionar as consultas do Google para vir aqui para responder exatamente o que foi solicitado.
31917 Michael

Respostas:


77

A função sigmoide é usada para a regressão logística de duas classes, enquanto a função softmax é usada para a regressão logística multiclasse (também conhecida como MaxEnt, regressão logística multinomial, regressão softmax, Regressão softmax, Classificador de Entropia Máxima).


Na regressão logística de duas classes, as probabilidades previstas são as seguintes, usando a função sigmóide:

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

Na regressão logística multiclasse, com classes , as probabilidades previstas são as seguintes, usando a função softmax:K

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

Pode-se observar que a função softmax é uma extensão da função sigmóide para o caso multiclasse, conforme explicado abaixo. Vejamos a regressão logística multiclasse, com classes: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

com . Vemos que obtemos as mesmas probabilidades da regressão logística de duas classes usando a função sigmóide. A Wikipedia expande um pouco mais sobre isso.β=(β0β1)


11
Sou ingênuo neste, mas vejo isso há muito tempo β = - (β0 − β1) Qual poderia ser a explicação possível para isso? Tanto quanto eu sei em Sigmoids β seria um vetor. E eles são geralmente um para determinada corrida. Então, como vêm β0 e β1 na imagem?
Ishan Bhatt

11
@IshanBhatt este comentário pode ajudar.
Tom Hale

Estranhamente, eu ainda pode regredir para multiclasses usando apenas sigmóide :)
datdinhquoc

15

Eles são, de fato, equivalentes, no sentido de que um pode ser transformado no outro.

Suponha que seus dados sejam representados por um vetor , de dimensão arbitrária, e você construiu um classificador binário para eles, usando uma transformação afim seguida por um softmax:x

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

Vamos transformá-lo em um classificador binário equivalente que usa um sigmóide em vez do softmax. Primeiro de tudo, temos que decidir qual é a probabilidade que queremos que o sigmóide (que pode ser da classe ou ). Essa escolha é absolutamente arbitrária e, portanto, escolho a classe . Então, meu classificador terá o formato:C0C1C0

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

Os classificadores são equivalentes se as probabilidades são as mesmas, portanto, devemos impor:

σ(z)=softmax(z0)

Substituindo , e pelas expressões em termos de e e fazendo algumas coisas simples manipulação algébrica, você pode verificar que a igualdade acima detém se e somente se e são dadas por:z0z1zw0,w1,w,b0,b1,bxwb

w=w0w1,
b=b0b1.

@ null Ok, eu, se você perguntar isso, então você não entendeu minha explicação. Deixe-me resolver seu problema específico: se você me disser que está alimentando seus dados com um sigmóide, deve ser um número unidimensional, . Ao alimentá-lo com um sigmóide, você obtém a probabilidade de estar em uma de suas duas classes, por exemplo, : . Então, a probabilidade de estar em é: . Agora vamos substituir o seu sigmóide por um softmax. (Continua). xxC0P(C0|x)=σ(x)xC1P(C1|x)=1P(C0|x)=σ(x)
D ...

(Continuação). Para aplicar um softmax a um problema de classificação com duas classes, você precisa que seus dados unidimensionais sejam transformados em um vetor bidimensional. Portanto, precisamos definir nosso e . Vamos escolher . Como deve satisfazer , temos , então . Agora, temos e . Usando isso, você pode verificar imediatamente se . w0w1w0=1w1w=w0w11=1w1w1=0z0=w0x=xz1=w1x=0σ(x)=softmax(z0)
D ...

Além disso, qualquer combinação de e que satisfaça (ou seja, ) levaria exatamente ao mesmo resultado. Isso mostra que o softmax possui um parâmetro redundante. Embora isso possa parecer estúpido, é de fato uma propriedade interessante, pois permite a normalização dos parâmetros , o que promove a estabilidade numérica do algoritmo de aprendizagem e inferência. Mas este é apenas um comentário extra, não é importante para responder à sua pergunta :)w0w1w=w0w11=w1w0wi
D ...

Muito obrigado. Deixa comigo. No seu primeiro comentário, a probabilidade provavelmente deve ser . Agora entendo qual é a ideia por trás da transformação. P(C1|x)1σ(x)
null

Que bom que você entendeu;) Sim, é um erro de digitação, obviamente deve ser . Obrigado por apontar isso! P(C1|x)=1σ(x)
D ...

8

Notei que as pessoas geralmente são direcionadas para essa pergunta ao pesquisar se devem usar sigmóide ou softmax em redes neurais. Se você é uma dessas pessoas que cria um classificador de rede neural, veja como decidir se aplica sigmoid ou softmax aos valores brutos de saída da sua rede:

  • Se você tiver um problema de classificação de vários rótulos = houver mais de uma "resposta correta" = as saídas NÃO são mutuamente exclusivas, use uma função sigmóide em cada saída bruta de forma independente. O sigmóide permitirá que você tenha uma alta probabilidade de todas as suas classes, algumas delas ou nenhuma delas. Exemplo: classificando doenças em uma imagem de raio-x do tórax. A imagem pode conter pneumonia, enfisema e / ou câncer, ou nenhum desses achados.
  • Se você tiver um problema de classificação multi-classe = existe apenas uma "resposta correta" = as saídas são mutuamente exclusivas, então use uma função softmax. O softmax aplicará que a soma das probabilidades de suas classes de saída seja igual a uma, portanto, para aumentar a probabilidade de uma classe específica, seu modelo deve diminuir correspondentemente a probabilidade de pelo menos uma das outras classes. Exemplo: classificando imagens do conjunto de dados MNIST de dígitos manuscritos. Uma única imagem de um dígito possui apenas uma identidade verdadeira - a imagem não pode ser 7 e 8 ao mesmo tempo.

Referência: para obter uma explicação mais detalhada de quando usar sigmoid vs. softmax no design de redes neurais, incluindo exemplos de cálculos, consulte este artigo: "Classificação: Sigmoid vs. Softmax."


-1

Acrescentando a todas as respostas anteriores - eu gostaria de mencionar o fato de que qualquer problema de classificação de várias classes pode ser reduzido a vários problemas de classificação binária usando o método "one-vs-all", ou seja, com sigmoides C (quando C é o número de classes) e interpretar cada sigmóide para ter a probabilidade de estar nessa classe específica ou não, e obter a probabilidade máxima.

Por exemplo, no exemplo de dígitos do MNIST, você pode usar um softmax ou dez sigmóides. De fato, é isso que Andrew Ng faz em seu curso Coursera ML. Você pode conferir aqui como Andrew Ng usou 10 sigmóides para a classificação multiclasse (adaptado de Matlab para python por mim), e aqui está minha adaptação do softmax em python.

Além disso, vale a pena notar que, embora as funções sejam equivalentes (para fins de classificação em várias classes), elas diferem um pouco em sua implementação (especialmente no que diz respeito a suas derivadas e como representar y).

Uma grande vantagem do uso de várias classificações binárias (ou seja, sigmóides) sobre uma única classificação de várias classes (ou seja, Softmax) - é que se o seu softmax for muito grande (por exemplo, se você estiver usando uma incorporação de uma palavra quente com um tamanho de dicionário de 10K ou mais ) - pode ser ineficiente treiná-lo. O que você pode fazer é pegar uma pequena parte do seu conjunto de treinamento e usá-lo para treinar apenas uma pequena parte dos seus sigmóides. Essa é a principal idéia por trás da amostragem negativa .


As funções não são equivalentes porque a rede softmax está restrita a produzir uma distribuição de probabilidade sobre as classes como saídas: o vetor não é negativo e é a 1. As unidades sigmóides não são negativas, mas podem somar qualquer número entre 0 e ; não é uma distribuição de probabilidade válida. Essa distinção é crucial para caracterizar como as duas funções diferem. CC
Restabelecer Monica

Qual é a sua definição de equivalente? A minha é: você pode usar para a classificação em várias classes sem nenhum problema. Além disso - qualquer classificação multiclasse que utilize o softmax pode ser transformada em uma classificação binária de um vs todos que usa sigmóides. Por que eu deveria me importar com as distribuições das saídas que somam 1?
David Refaeli

Seu argumento sobre a classificação multi-label mostra por que sigmoid e softmax não são equivalentes. Ao usar o softmax, aumentar a probabilidade de uma classe diminui a probabilidade total de todas as outras classes (devido à soma de 1). Usando sigmoide, aumentar a probabilidade de uma classe não altera a probabilidade total das outras classes. Essa observação é a razão pela qual o sigmóide é plausível para a classificação de vários rótulos: um único exemplo pode pertencer a classesSoma para 1 também é a razão pela qual o softmax não é adequado para a classificação de vários rótulos. 0,1,2,,C
Restabelecer Monica

Eu te perdi. Para todos os fins práticos que eu conheço, vários sigmóides = 1 softmax. Eu até acrescentei o caso de amostragem negativa, onde múltiplos sigmóides realmente têm uma vantagem sobre um softmax.
David Refaeli 29/09
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.