Eu me faço essa pergunta há meses. As respostas em CrossValidated e Quora listam boas propriedades da função sigmóide logística, mas tudo parece que adivinhamos essa função. O que eu perdi foi a justificativa para escolher. Finalmente encontrei um na seção 6.2.2.2 do livro "Deep Learning" de Bengio (2016) . Nas minhas próprias palavras:
Em resumo, queremos que o logaritmo da saída do modelo seja adequado para otimização baseada em gradiente da probabilidade de log dos dados de treinamento.
Motivação
- Queremos um modelo linear, mas não podemos usar z= wTx + b diretamente como z∈ ( - ∞ , + ∞ ) .
- Para a classificação, faz sentido assumir a distribuição de Bernoulli e modelar seu parâmetro θ em P( Y= 1 ) = θ .
- Portanto, precisamos mapear z de ( - ∞ , + ∞ ) para [ 0 , 1 ] para fazer a classificação.
Por que a função sigmóide logística?
Cortar z com P( Y= 1 | z)=max{0,min{1,z}} produz um gradiente zero para z fora de [0,1] . Precisamos de um gradiente forte sempre que a previsão do modelo estiver errada, porque resolvemos a regressão logística com descida do gradiente. Para regressão logística, não há solução de formulário fechado.
A função logística tem a boa propriedade de assintotar um gradiente constante quando a previsão do modelo está errada, uma vez que usamos a Estimativa de Máxima Verossimilhança para ajustar-se ao modelo. Isso é mostrado abaixo:
Para benefícios numéricos, a Estimativa de máxima verossimilhança pode ser feita minimizando a verossimilhança negativa dos dados de treinamento. Portanto, nossa função de custo é:
J( W , b )= 1m∑i = 1m- logP( Y= yEu| xEu; w , b )= 1m∑i = 1m- ( yEuregistroP( Y= 1 | z) + ( yEu- 1 ) logP( Y= 0 | z) ))
Como P( Y= 0 | z) = 1 - P( Y= 1 | z) , podemos nos concentrar no caso Y= 1 . Então, a questão é como modelar P( Y= 1 | z) dado que temos z= wTx + b .
Os requisitos óbvios para a função f mapeando z para P( Y= 1 | z) são:
- ∀ z∈ R : f( z) ∈ [ 0 , 1 ]
- f( 0 ) = 0,5
- f deve ser rotacionalmente simétrico wrt(0,0.5) , ou seja,f(−x)=1−f(x) , de modo que inverter os sinais das classes não tenha efeito na função de custo.
- f deve ser não decrescente, contínuo e diferenciável.
Todos esses requisitos são atendidos ao redimensionar as funções sigmóides . Ambos f(z)=11+e−z ef(z)=0.5+0.5z1+|z|cumpri-los. No entanto, as funções sigmóides diferem em relação ao seu comportamento durante a otimização baseada em gradiente da probabilidade logarítmica. Podemos ver a diferença conectando a função logísticaf(z)=11+e−z em nossa função de custo.
Y=1
P(Y=1|z)=11+e−zY=1m=1
J(z)=−log(P(Y=1|z))=−log(11+e−z)=−log(ez1+ez)=−z+log(1+ez)
−z
- zY=1log(1+ez)zz−z
- z|z|Y=1log(1+ez)0z−zz−1z, não há saturação, o que causaria gradientes de fuga.
Y=0
Y=1Y=0
J(z)Y=1
Y=0
Alternativas
z1+|z|[0,1]P(Y=1|z)=0.5+0.5z1+|z|
Y=1
J(z)=−log(0.5+0.5z1+|z|)
que fica assim:
z→−∞