train softmax_cross_entropy_with_logits_v2 softmax_cross_entropy neural network losses how example cross tensorflow machine-learning neural-network deep-learning cross-entropy

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



tf nn softmax_cross_entropy_with_logits_v2 (10)

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í: Logit

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 )


( FOMO sapiens).

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

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

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

Y esta es la razón por la que "podemos llamar" cualquier cosa en el aprendizaje automático que va por delante de sigmoid o softmax funciona como logit.

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

PD. No te recomiendo que veas el video solo para verificar el término.


Aquí hay una respuesta concisa para futuros lectores. El logit Tensorflow se 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. Tensorflow la convención de nombres "creativamente" confusa de Tensorflow . En PyTorch , solo hay un CrossEntropyLoss y 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 Tensorflow de Tensorflow a PyTorch .


Básicamente, son el modelo más completo que puede obtener de la red, antes de que se reduzca para aplicar solo a la cantidad de clases que nos interesan. Vea cómo algunos investigadores los usan para entrenar una red neuronal poco profunda en función de lo profundo que es 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 luego, 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.


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.

tutorial

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 claramente la capa logits .

tenga en cuenta que logits es 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 logits separado. Esto se debe a que es más eficiente calcular el softmax y la pérdida de cross-entropy juntos. Recuerde que cross-entropy es una función de costo, no utilizada en la propagación directa.


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) )

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 de la función sigmoidea.


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


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 answer Diansheng y la answer 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 Logit matemática en estadística, pero el logit utilizado en el contexto de redes neuronales es diferente. El logit estadístico ni siquiera tiene sentido aquí.

No pude encontrar una definición formal en ningún lado, pero logit bá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 función argmax para obtener la clase predicha.
2. Este es el mismo tensor que introduces en la función softmax para obtener las probabilidades para las clases predichas.

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

Capa de logits

La capa final en nuestra red neuronal es la capa logits, que devolverá los valores brutos de 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 todavía 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_raw y predicted_class_index_by_prob serán iguales.

Otro nombre para raw_predictions en el código anterior es logit .

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 logit estadístico a las probabilities que surgen de la función softmax .

Si la probabilidad de cierta clase es p ,
Entonces las probabilidades de log de esa clase son L = logit(p) .

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

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


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

Softmax es una función que asigna [-inf, +inf] a [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 decir, tf.nn.sigmoid_cross_entropy_with_logits


Resumen

En el contexto del aprendizaje profundo, la capa logits significa la capa que se alimenta a softmax (u otra normalización similar). 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 estos 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 usó la función log(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 sufijo _with_logits es redundante, confuso e inútil . Las funciones deben nombrarse sin tener en cuenta contextos tan específicos porque son simplemente operaciones matemáticas que pueden realizarse en valores derivados de muchos otros dominios. De hecho, TensorFlow tiene otra función similar sparse_softmax_cross_entropy donde afortunadamente olvidaron agregar el sufijo _with_logits 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 Logit con parte de la información anterior.