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
)
Respuestas:
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
Los logits a veces también se refieren al elemento inverso inverso de la función sigmoide.
fuente
softmax(logit) = exp(logit)/Z(logit)
entonceslogit = h_NN(x)
? entonces logit es lo mismo que "score"?[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?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 lalogit
utilizada en el contexto de redes neuronales es diferente. Las estadísticaslogit
ni siquiera tienen sentido aquí.No pude encontrar una definición formal en ningún lado, pero
logit
básicamente significa:Además, de un tutorial en el sitio web oficial de tensorflow:
Si aún está confundido, la situación es la siguiente:
donde,
predicted_class_index_by_raw
ypredicted_class_index_by_prob
será igual.Otro nombre para
raw_predictions
en 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
logit
a lasprobabilities
que surgen de lasoftmax
funció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 lasigmoid
funciónSin embargo, no es muy útil para calcular las probabilidades de registro.
fuente
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 decir
tf.nn.sigmoid_cross_entropy_with_logits
fuente
Logit
función (estadísticas) y lalogits
capa (flujo de tensor)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ó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_with_logits
sufijo 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 similarsparse_softmax_cross_entropy
donde afortunadamente olvidaron agregar_with_logits
sufijo 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.
fuente
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ó:
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
logits
claramente la capa.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
logits
separado. Esto se debe a que es más eficiente calcularsoftmax
ycross-entropy
perder juntos. Recuerde quecross-entropy
es una función de costo, no utilizada en la propagación directa.fuente
Aquí hay una respuesta concisa para futuros lectores.
Tensorflow
'slogit
se define como la salida de una neurona sin aplicar la función de activación: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
Tensorflow
la convención de nombres "creativamente" confusa. EnPyTorch
, solo hay unoCrossEntropyLoss
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 cambié deTensorflow
aPyTorch
.fuente
( 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.
fuente
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.
fuente
Ver aquí: https://en.wikipedia.org/wiki/Logit
fuente
logit
tiene un significado diferente. Mira esto , esto , esto .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
fuente
Los logits a menudo son los valores de la función Z de la capa de salida en Tensorflow.
fuente