Por que usar o softmax em oposição à normalização padrão?

159

Na camada de saída de uma rede neural, é típico usar a função softmax para aproximar uma distribuição de probabilidade:

insira a descrição da imagem aqui

Isso é caro para calcular por causa dos expoentes. Por que não simplesmente executar uma transformação Z para que todas as saídas sejam positivas e normalizar apenas dividindo todas as saídas pela soma de todas as saídas?

Tom
fonte
8
A função não é cara de calcular devido aos expoentes, mas porque você precisa calcular cada qj. A exponenciação é barata em comparação com a quantidade total de computação necessária.
Seppo Enarvi 21/09
De que tipo de transformação Z você está falando? O significado de processamento de sinal do termo não se encaixa aqui, e a substituição dos valores pelo escore z produz uma saída negativa se a entrada estiver abaixo da média.
David Cian
Veja também: Stats.SE
Martin Thoma

Respostas:

166

Há um bom atributo do Softmax em comparação com a normalização padrão.

Ele reage à baixa estimulação (pense na imagem embaçada) da sua rede neural com distribuição bastante uniforme e à alta estimulação (ou seja, grandes números, pense na imagem nítida) com probabilidades próximas a 0 e 1.

Enquanto a normalização padrão não se importa, desde que a proporção seja a mesma.

Veja o que acontece quando o soft max tem uma entrada 10 vezes maior, ou seja, sua rede neural tem uma imagem nítida e muitos neurônios são ativados

>>> 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 !

E depois compare com a normalização padrão

>>> 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 !?
Piotr Czapla
fonte
16
Essa resposta ilustra melhor o impacto do uso da exponenciação em vez de focar nos fundamentos teóricos. (o que é ótimo). Deve ser incluído no início da resposta superior. Depois de ver como e em que grau a exponenciação espalha valores, a resposta principal ajuda a explicar por que você deseja isso.
Ian Danforth
@IanDanforth eu concordo com você. deve estar no começo.
Hitesh
11
Não sei por que essa resposta é a mais votada. Por que [1,2] corresponde a uma imagem borrada enquanto [10,20] corresponde a uma imagem mais nítida? Isso é simplesmente uma questão de escala e os dois casos são essencialmente os mesmos. Se alguma coisa, isso parece apoiar a normalização padrão, que considera corretamente os dois casos equivalentes.
precisa saber é o seguinte
Quando os valores já estão garantidos em [0, 1], ainda existe alguma vantagem em usar o softmax em vez de simplesmente dividir pela soma?
Martin Thoma
58

Eu tenho essa pergunta há meses. Parece que acabamos de adivinhar inteligentemente o softmax como uma função de saída e depois interpretar a entrada no softmax como log-probabilidades. Como você disse, por que não simplesmente normalizar todas as saídas dividindo por sua soma? Encontrei a resposta no livro Deep Learning de Goodfellow, Bengio e Courville (2016) na seção 6.2.2.

Digamos que nossa última camada oculta nos dê z como uma ativação. Então o softmax é definido como

Explicação muito curta

A exp na função softmax cancela aproximadamente o log na perda de entropia cruzada, fazendo com que a perda seja aproximadamente linear em z_i. Isso leva a um gradiente aproximadamente constante, quando o modelo está errado, permitindo que ele se corrija rapidamente. Assim, um softmax saturado errado não causa um gradiente de fuga.

Breve explicação

O método mais popular para treinar uma rede neural é a estimativa de máxima verossimilhança. Estimamos os parâmetros theta de maneira a maximizar a probabilidade dos dados de treinamento (de tamanho m). Como a probabilidade de todo o conjunto de dados de treinamento é um produto das probabilidades de cada amostra, é mais fácil maximizar a probabilidade de log do conjunto de dados e, portanto, a soma da probabilidade de log de cada amostra indexada por k:

Agora, focamos apenas o softmax aqui com z já fornecido, para que possamos substituir

sendo eu a classe correta da k-ésima amostra. Agora, vemos que, quando tomamos o logaritmo do softmax, para calcular a probabilidade de log da amostra, obtemos:

, que para grandes diferenças em z aproxima-se aproximadamente de

Primeiro, vemos o componente linear z_i aqui. Em segundo lugar, podemos examinar o comportamento de max (z) em dois casos:

  1. Se o modelo estiver correto, max (z) será z_i. Portanto, a probabilidade de log atribui zero (ou seja, uma probabilidade de 1) com uma diferença crescente entre z_i e as outras entradas em z.
  2. Se o modelo estiver incorreto, max (z) será outro z_j> z_i. Portanto, a adição de z_i não cancela completamente -z_j e a probabilidade de log é aproximadamente (z_i - z_j). Isso diz claramente ao modelo o que fazer para aumentar a probabilidade de log: aumente z_i e diminua z_j.

Vemos que a probabilidade geral de log será dominada por amostras, onde o modelo está incorreto. Além disso, mesmo se o modelo estiver realmente incorreto, o que leva a um softmax saturado, a função de perda não satura. É aproximadamente linear em z_j, o que significa que temos um gradiente aproximadamente constante. Isso permite que o modelo se corrija rapidamente. Observe que esse não é o caso do erro médio quadrático, por exemplo.

Explicação longa

Se o softmax ainda parecer uma escolha arbitrária para você, dê uma olhada na justificativa para usar o sigmoide na regressão logística:

Por que a função sigmóide em vez de qualquer outra coisa?

O softmax é a generalização do sigmóide para problemas de várias classes justificados analogamente.

Kilian Batzner
fonte
Olá, você pode explicar esta declaração e como conseguiu aproximar? ", que para grandes diferenças em z se aproxima aproximadamente de"
London guy
45

Eu achei a explicação aqui muito boa: CS231n: Redes neurais convolucionais para reconhecimento visual.

Na superfície, o algoritmo softmax parece ser uma simples normalização não linear (estamos espalhando os dados com exponencial). No entanto, há mais do que isso.

Especificamente, existem algumas visualizações diferentes (o mesmo link acima ):

  1. Teoria da Informação - da perspectiva da teoria da informação, a função softmax pode ser vista como uma tentativa de minimizar a entropia cruzada entre as previsões e a verdade.

  2. Visão probabilística - dessa perspectiva, de fato, observamos as probabilidades logarítmicas; assim, quando realizamos exponenciação, acabamos com as probabilidades brutas. Nesse caso, a equação softmax encontra o MLE (Estimativa Máxima de Verossimilhança)

Em resumo, embora a equação softmax pareça poder ser arbitrária, NÃO é. Na verdade, é uma maneira bastante normalizada de normalizar as classificações para minimizar a entropia cruzada / probabilidade negativa entre previsões e verdade.

Brett
fonte
2
Para adicionar comentários anteriores, a derivada da função softmax é apenas softmax (1-softmax)
Rouzbeh
11
Eu recebo os motivos para usar a Perda entre entropia, mas como isso se relaciona com o softmax? Você disse que "a função softmax pode ser vista como uma tentativa de minimizar a entropia cruzada entre as previsões e a verdade". Suponha que eu usaria a normalização padrão / linear, mas ainda usaria a Perda de entropia cruzada. Então, eu também tentaria minimizar a entropia cruzada. Então, como o softmax está vinculado à Entropia Cruzada, exceto pelos benefícios numéricos?
precisa saber é o seguinte
18
Quanto à visão probabilística: qual é a motivação para analisar probabilidades de log? O raciocínio parece um pouco com "Usamos e ^ x no softmax, porque interpretamos x como probabilidades logarítmicas". Com o mesmo raciocínio que poderíamos dizer, usamos e ^ e ^ e ^ x no softmax, porque interpretamos x como probabilidades log-log-log-probabilidades (Exagerando aqui, é claro). Recebo os benefícios numéricos do softmax, mas qual é a motivação teórica para usá-lo?
precisa saber é o seguinte
5
@KilianBatzner Se a saída de um neurônio é uma probabilidade de log, o somatório das saídas de muitos neurônios é uma multiplicação de suas probabilidades. Isso é mais útil do que uma soma de probabilidades.
alltom
1
@KilianBatzner Se seus recursos vierem de diferentes clusters gaussianos (no cluster por classe), você poderá obter um classificador perfeito (regressão logística). Existem algumas condições adicionais, mas essencialmente você pode justificar / derivar softmax e logits com a suposição de que deseja separar clusters gaussianos.
maxy
16

Os valores de q_i representam probabilidades de log. Para recuperar os valores de probabilidade, você precisa exponenciá-los.

Uma razão pela qual os algoritmos estatísticos costumam usar funções de perda de probabilidade de log é que eles são mais numericamente estáveis: um produto de probabilidades pode ser representado como um número de ponto flutuante muito pequeno. Usando uma função de perda de probabilidade de log, um produto de probabilidades se torna uma soma.

Outro motivo é que as probabilidades logarítmicas ocorrem naturalmente ao derivar estimadores para variáveis ​​aleatórias que se supõe serem extraídas de distribuições gaussianas multivariadas. Veja, por exemplo, o estimador de máxima verossimilhança (ML) e a maneira como ele é conectado aos mínimos quadrados.

Como nota de rodapé, acho que essa pergunta é mais apropriada para as trocas de teoria da computação ou pilha de ciências da computação.

Victor May
fonte
12
q_i não representam implicitamente probabilidades de log. é somente quando usamos o softmax que assumimos explicitamente que eles fazem.
Tom
6

Estamos analisando um problema de classificação em várias classes. Ou seja, a variável prevista ypode levar uma das kcategorias, onde k > 2. Na teoria das probabilidades, isso geralmente é modelado por uma distribuição multinomial. A distribuição multinomial é um membro das distribuições familiares exponenciais. Podemos reconstruir a probabilidade P(k=?|x)usando propriedades de distribuições familiares exponenciais, coincidindo com a fórmula softmax.

Se você acredita que o problema pode ser modelado por outra distribuição, que não seja multinomial, poderá chegar a uma conclusão diferente da softmax.

Para mais informações e uma derivação formal, consulte as notas da aula do CS229 (9.3 Regressão Softmax) .

Além disso, um truque útil geralmente executado para softmax é: softmax (x) = softmax (x + c) , softmax é invariável a desvios constantes na entrada.

digite a descrição da imagem herse

GabrielChu
fonte
Como funciona como uma função de ativação, pois está retornando o mesmo valor para 'x' e 'x + c'?
Suresh Pokharel
1
A rigor, softmaxnão é uma função de ativação. A função de ativação é uma operação baseada em elementos - fornecendo um elemento tensor com sabedoria, executando uma operação não linear para produzir outro tensor. Mas softmaxé uma operação vetorial, produz um vetor normalizado, há dependências internas entre cada elemento.
GabrielChu
5

Eu acho que uma das razões pode ser lidar com os números negativos e a divisão por zero, pois exp (x) sempre será positivo e maior que zero.

Por exemplo, para a = [-2, -1, 1, 2]a soma ser 0, podemos usar o softmax para evitar a divisão por zero.

torayeff
fonte
3
Normalmente você subtrairia o mínimo e depois dividiria pelo máximo / soma. No seu caso, isso faria a [0, 1, 3, 4]divisão.
ubershmekel
1
@ubershmekel Isso resolve o problema de que a classe com a menor pontuação sempre terá uma probabilidade de 0.
Alessandro Power
4

Suponha que alteremos a função softmax para que as ativações de saída sejam dadas por insira a descrição da imagem aqui

Onde cé uma constante positiva. Observe que c=1corresponde à função softmax padrão. Mas se usarmos um valor diferente c, obteremos uma função diferente, que é, no entanto, qualitativamente bastante semelhante ao softmax. Em particular, mostre que as ativações de saída formam uma distribuição de probabilidade, assim como no softmax usual. Suponha que permitamos cnos tornar grandes, isto é c→∞,. Qual é o valor limite para as ativações de saída a^L_j? Depois de resolver esse problema, deve ficar claro para você por que pensamos na c=1função como uma versão "suavizada" da função máxima. Essa é a origem do termo "softmax". Você pode seguir os detalhes desta fonte (equação 83).

AMD
fonte
Para mim, a ideia da versão "suavizada" da função máxima é a melhor maneira simples de justificar o uso do softmax.
Tashuhka
3

Adicionando à resposta Piotr Czapla, quanto maiores os valores de entrada, maior a probabilidade de entrada máxima, para a mesma proporção e comparada às outras entradas:

insira a descrição da imagem aqui

negas
fonte
2

A escolha da função softmax parece de alguma forma arbitrária, pois existem muitas outras funções normalizadoras possíveis. Portanto, não está claro por que a perda log-softmax teria um desempenho melhor do que outras alternativas de perda.

De " Uma exploração de alternativas Softmax pertencentes à família de perdas esféricas " https://arxiv.org/abs/1511.05042

Os autores exploraram algumas outras funções entre as quais a expansão de Taylor expe o chamado softmax esférico e descobriram que, às vezes, eles podem ter um desempenho melhor que o normal softmax.

Roman Kh
fonte