Desmistificando o softmax

Apr 15 2023
Como derivar a função softmax dos requisitos de design da tarefa de classificação?
Uma abordagem comum para a classificação multiclasse é usar um classificador binário separado para cada classe. Cada classificador é responsável por reconhecer sua própria classe associada.
Foto de Ramakant Sharda no Unsplash

Uma abordagem comum para a classificação multiclasse é usar um classificador binário separado para cada classe.

Cada classificador é responsável por reconhecer sua própria classe associada.

Primeiro, considere as escolhas de projeto por trás da construção de um único classificador binário. A seguir, estenderemos o projeto para uma coleção de classificadores binários.

Como ponto de partida, pegue uma equação linear que usa um vetor de recursos x e retorna uma saída y que é uma soma ponderada dos recursos de entrada e seus parâmetros. A saída y é um número real que deve ser mapeado para uma decisão: a entrada x representa um objeto pertencente a uma classe que devo detectar ? A escolha mais simples é retornar a mensagem ' minha classe' quando y assume um valor positivo e manter o classificador inativo quando y é negativo.

Classificador binário — versão beta

Mas então perderíamos as informações sobre a incerteza/confiança da saída do classificador. Também poderíamos retornar o valor bruto da saída do classificador y como uma medida da confiança do classificador no resultado . No entanto, o intervalo de -∞ a +∞ seria inconveniente para interpretação, comparação e pós-processamento.

Requisito de projeto №1: saída como uma probabilidade

Em vez disso, é melhor retornar um valor em um intervalo estritamente limitado que possa ser interpretado como a probabilidade p de que a entrada x represente o objeto pertencente a ' minha classe '.

Assim, a questão é como projetar y em um valor p que poderia ser vagamente interpretado como uma probabilidade?

A princípio, este valor deve pertencer ao intervalo <0,1>. Em seguida, 0,5 deve ser o ponto de virada da decisão. Por fim, valores maiores que 0,5 devem favorecer a detecção positiva de uma classe.

De uma perspectiva matemática, buscamos uma função contínua φ :

tal que 0 cai em 0,5 , +∞ é projetado em 1 e -∞ em 0 .

Classificador binário — design aprimorado

Nesse caso, a maneira mais fácil é a engenharia inversa: comece de p e volte para y . Uma probabilidade de classe p pode ser facilmente projetada de <0,1> em < 0 , +∞) intervalo usando a razão de chances:

O próximo mapeamento deve lançar os valores obtidos para (-∞, +∞) . A escolha óbvia é a função logarítmica.

Então, as duas pontas se encontram aqui. Partimos do intervalo < 0 , 1 > e chegamos ao intervalo (-∞,+∞) , que foi assumido no início como retornado por y :

Por enquanto, a base B do logaritmo permanece não especificada.

Os próximos passos são reverter a relação para o desejado p = φ ( y ):

Finalmente, chegamos à fórmula desejada:

Agora, temos que decidir sobre o valor de B . Vejamos o gráfico que mostra variantes da função φ para diferentes valores de B .

O menor parece ser B=2.71 . Surpreendentemente, um valor semelhante tem seu próprio símbolo e e é chamado de base natural. Portanto, para o logaritmo de base natural, a última fórmula assume a seguinte forma:

Parabéns!

Acabamos de redescobrir a célebre função sigmóide .

A pergunta para você é : e é realmente a melhor escolha? O que teria acontecido se tivéssemos escolhido outro valor? Teríamos perdido a interpretação probabilística?

Considere também isto : por que não usar alguma relação não linear entre y e x ? Lembre-se de que para derivar φ , assumimos apenas que o valor de y está no intervalo (-∞,+∞) .

Ao lidar com muitas classes (digamos M ), atribuímos a cada classe seu próprio classificador binário.

Se os classificadores operarem independentemente, pode acontecer que todas as probabilidades retornadas não somem 1 , o que torna a interpretação probabilística de sua saída falha. Este é um desafio a enfrentar agora.

Requisito de design №2: soma para um

Todos os classificadores recebem o mesmo x . O classificador i -th calcula y_i . Queremos novamente fazer uma projeção de y_i em p_i , mas desta vez em sincronia com todos os outros classificadores , de modo que

A sincronia entre os classificadores é sobre um acordo mútuo sobre como projetar y_i calculado independentemente em p_i . Para um único classificador, a razão de chances envolvia as probabilidades de duas saídas: ' minha classe ' com probabilidade p versus ' não minha classe ' com probabilidade 1-p . Quanto maior o valor de y , mais provável é a saída ' minha classe '. Agora, em vez da saída ' não é minha classe ', devemos ser mais específicos e introduzir a saída ' sua classe '. Portanto, a versão mais geral seria: ' minha turma ' com probabilidade p_kversus ' sua classe ' com probabilidade p_l . E quanto maior minha saída y_k do que sua saída y_l , mais provável é ' minha classe ' do que ' sua classe '.

Requisito de Projeto №3: inter-relações entre probabilidades

Aqui está a versão atualizada da equação (1):

Observe que este requisito é uma versão estendida do requisito de projeto №1.

A tarefa é pegar os requisitos de projeto №2 e №3, representados pelas equações (2) e (3), e derivar uma fórmula para tal função Φ _i que :

Já tomamos a decisão de usar o logaritmo de base natural , então vamos usá-lo para o resto de nossas considerações:

Para aproveitar as informações contidas na equação (2) aplicamos a soma para ambos os lados:

e extrair elementos que não variam com k antes dos sinais de soma. Observe que, de acordo com a equação (2), a soma de todas as probabilidades é igual a 1 :

Finalmente, chegamos à seguinte função:

que pode ser reescrita para i em vez de l como:

Parabéns novamente!

Dessa forma, finalmente redescobrimos a conhecida função softmax .

Pensamentos finais

Espero que você aprecie que chegamos à função softmax de maneira clara. Não recorremos a revelações, analogias soltas da ciência física ou autoridades ao longo de nossas considerações. Neste artigo, a função softmax é resultado de uma linha reta de raciocínio que se originou em requisitos naturais propostos para problemas multiclasse .

Minha intenção é dar a você uma ideia mais forte das origens da função softmax na solução de problemas de aprendizado de máquina.

Eu recomendo que você verifique outra abordagem muito inspiradora para a derivação de uma função sigmóide feita no blog de Will Wolf .

Por fim, considere por si mesmo se tudo isso poderia ser alcançado de outra maneira: usando classificadores operando independentemente, normalizando todos os p_i posteriormente e, em seguida, substituindo p_i por valores normalizados.

Referências

[1] Gabriel Furnieres : Funções Sigmoid e SoftMax em 5 minutos . https://towardsdatascience.com/sigmoid-and-softmax-functions-in-5-minutes-f516c80ea1f9

[2] Will Wolf : Derivando o Softmax dos Primeiros Princípios .https://willwolf.io/2017/04/19/deriving-the-softmax-from-first-principles/