Na função TensorFlow a seguir, devemos alimentar a ativação de neurônios artificiais na camada final. Isso eu entendo. Mas não entendo por que é chamado logits? Isso não é uma função matemática?
loss_function = tf.nn.softmax_cross_entropy_with_logits(
logits = last_layer,
labels = target_output
)
Respostas:
Logits é um termo sobrecarregado que pode significar muitas coisas diferentes:
Em matemática , Logit é uma função que mapeia probabilidades (
[0, 1]
) para R ((-inf, inf)
)A probabilidade de 0,5 corresponde a um logit de 0. O logit negativo corresponde a probabilidades inferiores a 0,5, positivas a> 0,5.
No ML , pode ser
Às vezes, os logits também se referem ao inverso em elementos da função sigmóide.
fonte
softmax(logit) = exp(logit)/Z(logit)
entãologit = h_NN(x)
? então logit é o mesmo que "score"?[1, 0.5, 0.5]
através da normalização se tornar[0.5, 0.25, 0.25]
e, em seguida, macio max[0,]
se tornar um quente[1, 0, 0]
? ou apenas colocar[1, 0, 0]
porque a saída deve ser um vetor?Basta adicionar esse esclarecimento para que qualquer pessoa que role isso para baixo possa pelo menos acertar, pois há muitas respostas erradas votadas.
De Diansheng resposta e de JakeJ resposta obtê-lo direito.
Uma nova resposta postada por Shital Shah é uma resposta ainda melhor e mais completa.
Sim,
logit
como uma função matemática em estatística, mas ologit
usado no contexto de redes neurais é diferente. Estatísticalogit
nem faz sentido aqui.Não consegui encontrar uma definição formal em nenhum lugar, mas
logit
basicamente significa:Além disso, em um tutorial no site oficial do tensorflow:
Se você ainda está confuso, a situação é assim:
onde
predicted_class_index_by_raw
epredicted_class_index_by_prob
será igual.Outro nome para
raw_predictions
o código acima élogit
.Quanto ao porquêlogit
... não faço ideia. Desculpe.[Editar: Veja esta resposta para as motivações históricas por trás do termo.]
Curiosidades
Embora, se você quiser, você pode aplicar estatística
logit
paraprobabilities
que sair dasoftmax
função.Se a probabilidade de uma determinada classe for
p
,então as chances de log dessa classe são
L = logit(p)
.Além disso, a probabilidade dessa classe pode ser recuperada como
p = sigmoid(L)
, usando asigmoid
funçãoNão é muito útil para calcular as probabilidades de log.
fonte
Logit é uma função que mapeia probabilidades
[0, 1]
para[-inf, +inf]
.Softmax é uma função que mapeia
[-inf, +inf]
para[0, 1]
semelhante ao Sigmoid. Mas o Softmax também normaliza a soma dos valores (vetor de saída) para 1.Fluxo de tensor "com logit" : significa que você está aplicando uma função softmax aos números de logit para normalizá-la. O input_vector / logit não é normalizado e pode ser dimensionado de [-inf, inf].
Essa normalização é usada para problemas de classificação em várias classes. E, para problemas de classificação de múltiplas etiquetas, é utilizada a normalização sigmóide, ou seja,
tf.nn.sigmoid_cross_entropy_with_logits
fonte
Logit
função (estatísticas) elogits
camada (tensorflow)Resumo
No contexto de aprendizagem profunda a camada logitos significa que a camada que as alimentações em que softmax (ou outro tal normalização). A saída do softmax são as probabilidades para a tarefa de classificação e sua entrada é a camada de logits. A camada de logits normalmente produz valores de -in infinito a + infinito e a camada softmax o transforma em valores de 0 a 1.
Contexto histórico
De onde vem esse termo? Nas décadas de 1930 e 40, várias pessoas estavam tentando adaptar a regressão linear ao problema de previsão de probabilidades. No entanto, a regressão linear produz saída de-infinito para + infinito, enquanto que para as probabilidades, nossa saída desejada é de 0 a 1. Uma maneira de fazer isso é mapear de alguma forma as probabilidades de 0 a 1 a infinito + infinito e, em seguida, usar a regressão linear como de costume. Um desses mapeamentos é a distribuição normal cumulativa usada por Chester Ittner Bliss em 1934 e ele chamou esse modelo de "probit", abreviação de "probability unit". No entanto, essa função é computacionalmente cara, enquanto falta algumas das propriedades desejáveis para a classificação de várias classes. Em 1944, Joseph Berkson usou a função
log(p/(1-p))
para fazer esse mapeamento e o chamou de logit, abreviação de "unidade logística". O termo regressão logística também derivou disso.A confusão
Infelizmente, o termo logits é abusado no aprendizado profundo. Da perspectiva matemática pura, logit é uma função que executa acima do mapeamento. No aprendizado profundo, as pessoas começaram a chamar a camada de "camada de logits" que alimenta a função de logit. Então, as pessoas começaram a chamar os valores de saída dessa camada "logit", criando a confusão com a função logit .
Código de fluxo
Infelizmente, o código TensorFlow aumenta ainda mais a confusão por nomes como
tf.nn.softmax_cross_entropy_with_logits
. O que significa logits aqui? Significa apenas que a entrada da função deve ser a saída da última camada de neurônios, conforme descrito acima. O_with_logits
sufixo é redundante, confuso e sem sentido . As funções devem ser nomeadas sem considerar contextos muito específicos, porque são simplesmente operações matemáticas que podem ser executadas em valores derivados de muitos outros domínios. De fato, o TensorFlow tem outra função semelhante,sparse_softmax_cross_entropy
onde felizmente se esqueceram de adicionar_with_logits
sufixos, criando inconsistências e aumentando a confusão. Por outro lado, o PyTorch simplesmente nomeia sua função sem esse tipo de sufixo.Referência
Os slides da palestra Logit / Probit são um dos melhores recursos para entender o logit. Também atualizei o artigo da Wikipedia com algumas das informações acima.
fonte
Entendimento pessoal, no domínio TensorFlow, logits são os valores a serem usados como entrada no softmax. Cheguei a esse entendimento com base neste tutorial de tensorflow.
https://www.tensorflow.org/tutorials/layers
Embora seja verdade que o logit é uma função em matemática (especialmente em estatística), não acho que seja o mesmo 'logit' que você está procurando. No livro Deep Learning, de Ian Goodfellow, ele mencionou:
No TensorFlow, é frequentemente visto como o nome da última camada. No capítulo 10 do livro Hands-on Machine Learning com Scikit-learn e TensorFLow de Aurélien Géron, deparei-me com este parágrafo, que afirmava
logits
claramente a camada.Ou seja, embora usemos o softmax como a função de ativação na última camada do nosso design, para facilitar o cálculo, retiramos
logits
separadamente. Isso ocorre porque é mais eficiente calcularsoftmax
ecross-entropy
perder juntos. Lembre-se de quecross-entropy
é uma função de custo, não usada na propagação direta.fonte
Aqui está uma resposta concisa para futuros leitores.
Tensorflow
'slogit
é definido como a saída de um neurónio sem aplicar a função de activação:x: entrada, w: peso, b: viés. É isso aí.
O seguinte é irrelevante para esta pergunta.
Para palestras históricas, leia outras respostas. Tiramos o chapéu para
Tensorflow
a convenção de nomenclatura "criativamente" confusa. EmPyTorch
, existe apenas umCrossEntropyLoss
e ele aceita saídas não ativadas. Convoluções, multiplicações de matrizes e ativações são operações do mesmo nível. O design é muito mais modular e menos confuso. Essa é uma das razões pelas quais mudeiTensorflow
paraPyTorch
.fonte
( FOMO sapiens).
Se você marcar a função Logit matemática, ela converterá o espaço real do
[0,1]
intervalo para o infinito[-inf, inf]
.Sigmoid e softmax farão exatamente o oposto. Eles converterão o
[-inf, inf]
espaço[0, 1]
real em espaço real.É por isso que, no aprendizado de máquina, podemos usar o logit antes das funções sigmóide e softmax (uma vez que elas correspondem).
E é por isso que "podemos chamar" qualquer coisa no aprendizado de máquina que esteja na frente da função sigmóide ou softmax do logit .
Aqui está o vídeo de J. Hinton usando esse termo.
PS. Não estou recomendando assistir ao vídeo apenas para verificar o termo.
fonte
Eles são basicamente o modelo mais completo que você pode obter da rede, antes de ser compactado para aplicar apenas ao número de classes em que estamos interessados. Veja como alguns pesquisadores os usam para treinar uma rede neural rasa com base em uma profundidade profunda. rede aprendeu: https://arxiv.org/pdf/1312.6184.pdf
É como se, ao aprender uma matéria em detalhes, você aprendesse muitos pontos menores, mas, ao ensinar um aluno, tentaria compactá-la para o caso mais simples. Se o aluno agora tentasse ensinar, seria bastante difícil, mas seria capaz de descrevê-lo apenas o suficiente para usar o idioma.
fonte
Veja aqui: https://en.wikipedia.org/wiki/Logit
fonte
logit
tem um significado diferente. Veja isto , isto , isto .logits
O vetor de previsões brutas (não normalizadas) que um modelo de classificação gera, que normalmente é passado para uma função de normalização. Se o modelo estiver resolvendo um problema de classificação de várias classes, os logits geralmente se tornam uma entrada para a função softmax. A função softmax gera um vetor de probabilidades (normalizadas) com um valor para cada classe possível.
Além disso, os logits às vezes se referem ao inverso em elementos da função sigmóide. Para obter mais informações, consulte tf.nn.sigmoid_cross_entropy_with_logits.
documentação oficial do tensorflow
fonte
Os logits geralmente são os valores da função Z da camada de saída no Tensorflow.
fonte