¿Cuál es el significado de la palabra logits en TensorFlow?

250

En la siguiente función TensorFlow, debemos alimentar la activación de neuronas artificiales en la capa final. Eso lo entiendo. Pero no entiendo por qué se llama logits? ¿No es esa una función matemática?

loss_function = tf.nn.softmax_cross_entropy_with_logits(
     logits = last_layer,
     labels = target_output
)
Milad P.
fuente

Respuestas:

215

Logits es un término sobrecargado que puede significar muchas cosas diferentes:


En matemáticas , Logit es una función que asigna probabilidades ( [0, 1]) a R ( (-inf, inf))

ingrese la descripción de la imagen aquí

La probabilidad de 0.5 corresponde a un logit de 0. El logit negativo corresponde a probabilidades menores de 0.5, positivas a> 0.5.

En ML , puede ser

El vector de predicciones sin procesar (no normalizadas) que genera un modelo de clasificación, que normalmente se pasa a una función de normalización. Si el modelo está resolviendo un problema de clasificación de varias clases, los logits generalmente se convierten en una entrada a la función softmax. La función softmax genera un vector de probabilidades (normalizadas) con un valor para cada clase posible.

Los logits a veces también se refieren al elemento inverso inverso de la función sigmoide.

Salvador Dalí
fuente
127
Para Tensorflow: es un nombre que se cree que implica que este Tensor es la cantidad que Softmax está asignando a las probabilidades.
thertweck
1
¿Es esto lo mismo que lo que se expone antes del softmax? es decir, softmax(logit) = exp(logit)/Z(logit)entonces logit = h_NN(x)? entonces logit es lo mismo que "score"?
Charlie Parker el
44
La comprensión personal, en el dominio TensorFlow, los logits son los valores que se utilizarán como entrada para softmax. Llegué a este entendimiento basado en este tutorial de tensorflow.
Diansheng
2
No estoy seguro de si esto responde la pregunta. Quizás por eso nunca fue aceptado. Entiendo cuál es la función logit, pero también me pregunta por qué Tensorflow llama a estos argumentos logits. También es la misma designación para varios de los parámetros en las funciones de
Tensorflow
1
¡Greate! ¿Puedes dar un ejemplo simple? ¿Es esto correcto? [1, 0.5, 0.5]a través de la normalización se convierten [0.5, 0.25, 0.25]y luego se convierten en soft max [0,]si uno caliente [1, 0, 0]? o simplemente fuera [1, 0, 0]porque la salida debería ser un vector?
Tina Liu
91

Simplemente agregue esta aclaración para que cualquiera que se desplace tanto pueda al menos hacerlo bien, ya que hay muchas respuestas incorrectas que se votaron.

La respuesta de Diansheng y la respuesta de JakeJ son correctas.
Una nueva respuesta publicada por Shital Shah es una respuesta aún mejor y más completa.


Sí, logit como una función matemática en estadística, pero la logitutilizada en el contexto de redes neuronales es diferente. Las estadísticas logitni siquiera tienen sentido aquí.


No pude encontrar una definición formal en ningún lado, pero logitbásicamente significa:

Las predicciones en bruto que salen de la última capa de la red neuronal.
1. Este es el tensor en el que aplica la argmaxfunción para obtener la clase predicha.
2. Este es el mismo tensor que introduces en la softmaxfunción para obtener las probabilidades para las clases predichas.


Además, de un tutorial en el sitio web oficial de tensorflow:

Capa Logits

La capa final en nuestra red neuronal es la capa logits, que devolverá los valores brutos para nuestras predicciones. Creamos una capa densa con 10 neuronas (una para cada clase objetivo 0–9), con activación lineal (el valor predeterminado):

logits = tf.layers.dense(inputs=dropout, units=10)

Si aún está confundido, la situación es la siguiente:

raw_predictions = neural_net(input_layer)
predicted_class_index_by_raw = argmax(raw_predictions)
probabilities = softmax(raw_predictions)
predicted_class_index_by_prob = argmax(probabilities)

donde, predicted_class_index_by_rawy predicted_class_index_by_probserá igual.

Otro nombre para raw_predictionsen el código anterior eslogit .


En cuanto al por qué logit ... no tengo idea. Lo siento.
[Editar: Vea esta respuesta para las motivaciones históricas detrás del término.]


Trivialidades

Aunque, si lo desea, puede aplicar estadísticas logita las probabilitiesque surgen de la softmaxfunción.

Si la probabilidad de una determinada clase es p,
entonces las probabilidades de registro de esa clase son L = logit(p).

Además, la probabilidad de esa clase se puede recuperar p = sigmoid(L)utilizando la sigmoidfunción

Sin embargo, no es muy útil para calcular las probabilidades de registro.

AneesAhmed777
fuente
80

Logit es una función que asigna probabilidades [0, 1]a [-inf, +inf].

Softmax es una función que se asigna [-inf, +inf]de forma [0, 1]similar a Sigmoid. Pero Softmax también normaliza la suma de los valores (vector de salida) a 1.

Tensorflow "con logit" : significa que está aplicando una función softmax para registrar números para normalizarlo. Input_vector / logit no está normalizado y puede escalar desde [-inf, inf].

Esta normalización se usa para problemas de clasificación multiclase. Y para problemas de clasificación de múltiples etiquetas se utiliza la normalización sigmoidea, es decirtf.nn.sigmoid_cross_entropy_with_logits

Trideep Rath
fuente
10
así que logit es lo mismo que el "score"
Charlie Parker
1
Sugiero agregar una línea en su respuesta que diferencie explícitamente la Logitfunción (estadísticas) y la logitscapa (flujo de tensor)
AneesAhmed777
62

Resumen

En el contexto del aprendizaje profundo, la capa logits significa la capa que alimenta a softmax (u otra normalización de este tipo). La salida del softmax son las probabilidades para la tarea de clasificación y su entrada es la capa logits. La capa logits generalmente produce valores desde -infinito hasta + infinito y la capa softmax la transforma en valores de 0 a 1.

Contexto histórico

¿De dónde viene este término? En los años treinta y cuarenta, varias personas intentaban adaptar la regresión lineal al problema de predicción de probabilidades. Sin embargo, la regresión lineal produce una salida desde -infinito a + infinito, mientras que para las probabilidades nuestra salida deseada es de 0 a 1. Una forma de hacerlo es mapear de alguna manera las probabilidades de 0 a 1 a -infinito a + infinito y luego usar la regresión lineal como de costumbre. Uno de esos mapas es la distribución normal acumulativa que fue utilizada por Chester Ittner Bliss en 1934 y llamó a este modelo "probit", abreviatura de "unidad de probabilidad". Sin embargo, esta función es computacionalmente costosa y carece de algunas de las propiedades deseables para la clasificación de varias clases. En 1944, Joseph Berkson utilizó la funciónlog(p/(1-p))para hacer este mapeo y lo llamé logit, abreviatura de "unidad logística". El término regresión logística deriva de esto también.

La confusión

Lamentablemente, el término logits se abusa en el aprendizaje profundo. Desde una perspectiva matemática pura, logit es una función que realiza el mapeo anterior. En el aprendizaje profundo, la gente comenzó a llamar a la capa "capa logits" que se alimenta a la función logit. Entonces la gente comenzó a llamar a los valores de salida de esta capa "logit" creando la confusión con logit la función .

Código TensorFlow

Desafortunadamente, el código TensorFlow se suma a la confusión por nombres como tf.nn.softmax_cross_entropy_with_logits. ¿Qué significa logits aquí? Simplemente significa que se supone que la entrada de la función es la salida de la última capa de neuronas como se describió anteriormente. El _with_logitssufijo es redundante, confuso e inútil . Las funciones deben nombrarse sin tener en cuenta contextos tan específicos porque son simples operaciones matemáticas que pueden realizarse en valores derivados de muchos otros dominios. De hecho, TensorFlow tiene otra función similar sparse_softmax_cross_entropydonde afortunadamente olvidaron agregar _with_logitssufijo creando inconsistencia y agregando confusión. PyTorch, por otro lado, simplemente nombra su función sin este tipo de sufijos.

Referencia

Las diapositivas de conferencias Logit / Probit son uno de los mejores recursos para comprender logit. También he actualizado el artículo de Wikipedia con parte de la información anterior.

Shital Shah
fuente
31

La comprensión personal, en el dominio TensorFlow, los logits son los valores que se utilizarán como entrada para softmax. Llegué a este entendimiento basado en este tutorial de tensorflow.

https://www.tensorflow.org/tutorials/layers


Aunque es cierto que logit es una función en matemáticas (especialmente en estadísticas), no creo que sea el mismo 'logit' que estás viendo. En el libro Deep Learning de Ian Goodfellow, mencionó:

La función σ −1 (x) se llama logit en estadística, pero este término se usa con menos frecuencia en el aprendizaje automático. σ −1 (x) representa la función inversa de la función sigmoidea logística.

En TensorFlow, se ve con frecuencia como el nombre de la última capa. En el Capítulo 10 del libro Aprendizaje automático práctico con Scikit-learn y TensorFLow de Aurélien Géron, me encontré con este párrafo, que indicaba logitsclaramente la capa.

tenga en cuenta que logitses la salida de la red neuronal antes de pasar por la función de activación de softmax: por razones de optimización, manejaremos el cálculo de softmax más adelante.

Es decir, aunque usamos softmax como la función de activación en la última capa de nuestro diseño, para facilitar el cálculo, sacamos por logitsseparado. Esto se debe a que es más eficiente calcular softmaxy cross-entropyperder juntos. Recuerde que cross-entropyes una función de costo, no utilizada en la propagación directa.

Diansheng
fuente
12

Aquí hay una respuesta concisa para futuros lectores. Tensorflow's logitse define como la salida de una neurona sin aplicar la función de activación:

logit = w*x + b,

x: entrada, w: peso, b: sesgo. Eso es.


Lo siguiente es irrelevante para esta pregunta.

Para conferencias históricas, lea otras respuestas. Me quito el sombrero ante Tensorflowla convención de nombres "creativamente" confusa. En PyTorch, solo hay uno CrossEntropyLossy acepta salidas no activadas. Las convoluciones, las multiplicaciones de matrices y las activaciones son operaciones del mismo nivel. El diseño es mucho más modular y menos confuso. Esta es una de las razones por las que cambié de Tensorflowa PyTorch.

Jonathan Lee
fuente
8

( FOMO sapiens).

Si marca la función matemática Logit, convierte el espacio real de [0,1]intervalo a infinito [-inf, inf].

Sigmoid y softmax harán exactamente lo contrario. Convertirán el [-inf, inf]espacio [0, 1]real en espacio real.

Es por eso que, en el aprendizaje automático, podemos usar logit antes de la función sigmoide y softmax (ya que coinciden).

Y es por eso "que podemos llamar" nada en el aprendizaje de la máquina que va delante del sigmoide o softmax la función logit .

Aquí está el video de J. Hinton usando este término.

PD. No recomiendo ver el video solo para verificar el término.

prosti
fuente
5

Básicamente, son el modelo más completo que se puede obtener de la red, antes de que se reduzca para aplicar solo a la cantidad de clases en las que estamos interesados. Vea cómo algunos investigadores los usan para entrenar una red neuronal poco profunda en función de qué tan profundo la red ha aprendido: https://arxiv.org/pdf/1312.6184.pdf

Es como cuando aprendes una materia en detalle, aprenderás muchos puntos menores, pero cuando enseñes a un estudiante, tratarás de comprimirlo en el caso más simple. Si el estudiante ahora intentara enseñar, sería bastante difícil, pero podría describirlo lo suficientemente bien como para usar el lenguaje.

JakeJ
fuente
1

La función logit (/ ˈloʊdʒɪt / LOH-jit) es la inversa de la función "logística" sigmoidal o la transformación logística utilizada en matemáticas, especialmente en estadística. Cuando la variable de la función representa una probabilidad p, la función logit da las probabilidades de registro, o el logaritmo de las probabilidades p / (1 - p).

Ver aquí: https://en.wikipedia.org/wiki/Logit

Jagger Yu
fuente
44
Eso está en estadísticas / matemáticas. Estamos hablando de aprendizaje automático aquí, donde logittiene un significado diferente. Mira esto , esto , esto .
AneesAhmed777
1

logits

El vector de predicciones sin procesar (no normalizadas) que genera un modelo de clasificación, que normalmente se pasa a una función de normalización. Si el modelo está resolviendo un problema de clasificación de varias clases, los logits generalmente se convierten en una entrada a la función softmax. La función softmax genera un vector de probabilidades (normalizadas) con un valor para cada clase posible.

Además, los logits a veces se refieren al elemento inverso de la función sigmoidea. Para obtener más información, consulte tf.nn.sigmoid_cross_entropy_with_logits.

documentación oficial de tensorflow

Vinay Jaju
fuente
-3

Los logits a menudo son los valores de la función Z de la capa de salida en Tensorflow.

Myron Leskiv
fuente
No necesariamente, vea las otras respuestas.
cuant