Na camada de saída de uma rede neural, é típico usar a função softmax para aproximar uma distribuição de probabilidade:
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?
Respostas:
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
E depois compare com a normalização padrão
fonte
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:
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.
fonte
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 ):
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.
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.
fonte
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.
fonte
Estamos analisando um problema de classificação em várias classes. Ou seja, a variável prevista
y
pode levar uma dask
categorias, ondek > 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 probabilidadeP(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.
fonte
softmax
nã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. Massoftmax
é uma operação vetorial, produz um vetor normalizado, há dependências internas entre cada elemento.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.fonte
[0, 1, 3, 4]
divisão.Suponha que alteremos a função softmax para que as ativações de saída sejam dadas por
Onde
c
é uma constante positiva. Observe quec=1
corresponde à função softmax padrão. Mas se usarmos um valor diferentec
, 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 permitamosc
nos tornar grandes, isto éc→∞
,. Qual é o valor limite para as ativações de saídaa^L_j
? Depois de resolver esse problema, deve ficar claro para você por que pensamos nac=1
funçã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).fonte
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:
fonte
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
exp
e o chamado softmax esférico e descobriram que, às vezes, eles podem ter um desempenho melhor que o normalsoftmax
.fonte