¿Qué es 'from_logits=True' en las funciones de pérdida de Keras/TensorFlow? Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

¿Qué es 'from_logits=True' en las funciones de pérdida de Keras/TensorFlow?

Los marcos de aprendizaje profundo como Keras reducen la barrera de entrada para las masas y democratizan el desarrollo de modelos DL para personas sin experiencia, que pueden confiar en valores predeterminados razonables y API simplificadas para soportar la mayor parte del trabajo pesado y producir resultados decentes.

Surge una confusión común entre los nuevos practicantes de aprendizaje profundo al usar las funciones de pérdida de Keras para la clasificación, como CategoricalCrossentropy y SparseCategoricalCrossentropy:

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=True)

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False)

¿Qué hace el from_logits bandera se refiere?

La respuesta es bastante simple, pero requiere una mirada a la salida de la red que intentamos calificar usando la función de pérdida.

Probabilidades Logits y SoftMax

Larga historia corta:

Las probabilidades están normalizadas, es decir, tienen un rango entre [0..1]. Los registros no están normalizados y pueden tener un rango entre [-inf...+inf].

Dependiendo de la capa de salida de su red:

output = keras.layers.Dense(n, activation='softmax')(x)

output = keras.layers.Dense(n)(x)

La salida del Dense la capa se ya sea regreso:

  • probabilidades: La salida se pasa a través de una función SoftMax que normaliza la salida en un conjunto de probabilidades sobre n, que todo suma 1.
  • logits: n activaciones.

Este concepto erróneo posiblemente surge de la sintaxis abreviada que le permite agregar una activación a una capa, aparentemente como una sola capa, aunque es solo una forma abreviada de:

output = keras.layers.Dense(n, activation='softmax')(x)

dense = keras.layers.Dense(n)(x)
output = keras.layers.Activation('softmax')(dense)

Su función de pérdida debe ser informada sobre si debe esperar una distribución normalizada (salida pasada a través de una función SoftMax) o logits. Por lo tanto, la from_logits ¡bandera!

Cuando debe from_logits=Verdadero?

Si su red normaliza las probabilidades de salida, su función de pérdida debería establecer from_logits a False, ya que no acepta logits. Este es también el valor predeterminado de todas las clases de pérdida que aceptan la bandera, ya que la mayoría de la gente agrega un activation='softmax' a sus capas de salida:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10, activation='softmax') 
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

Esto resulta en:

tf.Tensor(
[[[0.12467965 0.10423233 0.10054766 0.09162105 0.09144577 0.07093797
   0.12523937 0.11292477 0.06583504 0.11253635]]], shape=(1, 1, 10), dtype=float32)

Dado que esta red da como resultado una distribución normalizada, al comparar los resultados con los resultados objetivo y calificarlos a través de una función de pérdida de clasificación (para la tarea adecuada), deberías establecer from_logits a False, o deje que se mantenga el valor predeterminado.

Por otro lado, si su red no aplica SoftMax en la salida:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10)
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

Esto resulta en:

tf.Tensor(
[[[-0.06081138  0.04154852  0.00153442  0.0705068  -0.01139916
    0.08506121  0.1211026  -0.10112958 -0.03410497  0.08653068]]], shape=(1, 1, 10), dtype=float32)

Necesitarías configurar from_logits a True para que la función de pérdida trate adecuadamente las salidas.

¿Cuándo usar SoftMax en la salida?

La mayoría de los profesionales aplican SoftMax en la salida para obtener una distribución de probabilidad normalizada, ya que esto es en muchos casos para lo que usará una red, especialmente en material educativo simplificado. Sin embargo, en algunos casos, Ud. no desea aplicar la función a la salida, para procesarla de una manera diferente antes de aplicar SoftMax u otra función.

Un ejemplo notable proviene de los modelos NLP, en los que realmente la probabilidad sobre un vocabulario extenso puede estar presente en el tensor de salida. Aplicar SoftMax sobre todos ellos y consiguiendo con avidez el argmax normalmente no produce muy buenos resultados.

Sin embargo, si observa los logits, extraiga el Top-K (donde K puede ser cualquier número, pero generalmente se encuentra en algún lugar entre [0...10]), y solo entonces aplicando SoftMax al top-k posibles tokens en el vocabulario cambia significativamente la distribución y, por lo general, produce resultados más realistas.

Consulte nuestra guía práctica y práctica para aprender Git, con las mejores prácticas, los estándares aceptados por la industria y la hoja de trucos incluida. Deja de buscar en Google los comandos de Git y, de hecho, aprenden ella!

Esto se conoce como muestreo Top-K y, aunque no es la estrategia ideal, por lo general supera significativamente al muestreo codicioso.

Yendo más lejos: aprendizaje profundo práctico para la visión por computadora

¿Tu naturaleza inquisitiva te hace querer ir más allá? Recomendamos revisar nuestro Curso: “Aprendizaje Profundo Práctico para Visión por Computador con Python”.

¿Otro curso de visión artificial?

No haremos clasificación de dígitos MNIST o moda MNIST. Cumplieron su parte hace mucho tiempo. Demasiados recursos de aprendizaje se centran en conjuntos de datos básicos y arquitecturas básicas antes de permitir que las arquitecturas avanzadas de caja negra carguen con la carga del rendimiento.

queremos centrarnos en desmitificación, sentido práctico, comprensión, intuición y proyectos reales. Querer aprender cómo ¿Tu puedes hacer la diferencia? Lo llevaremos en un viaje desde la forma en que nuestros cerebros procesan imágenes hasta escribir un clasificador de aprendizaje profundo de grado de investigación para el cáncer de mama y redes de aprendizaje profundo que "alucinan", enseñándole los principios y la teoría a través del trabajo práctico, equipándolo con el conocimientos y herramientas para convertirse en un experto en la aplicación del aprendizaje profundo para resolver la visión artificial.

¿Qué hay adentro?

  • Los primeros principios de la visión y cómo se puede enseñar a las computadoras a “ver”
  • Diferentes tareas y aplicaciones de la visión artificial
  • Las herramientas del oficio que facilitarán tu trabajo
  • Encontrar, crear y utilizar conjuntos de datos para la visión por computadora
  • La teoría y aplicación de las Redes Neuronales Convolucionales
  • Manejo de cambio de dominio, co-ocurrencia y otros sesgos en conjuntos de datos
  • Transfiera el aprendizaje y utilice el tiempo de capacitación y los recursos computacionales de otros para su beneficio
  • Construyendo y entrenando un clasificador de cáncer de mama de última generación
  • Cómo aplicar una buena dosis de escepticismo a las ideas principales y comprender las implicaciones de las técnicas ampliamente adoptadas
  • Visualización del "espacio conceptual" de ConvNet usando t-SNE y PCA
  • Casos prácticos de cómo las empresas utilizan técnicas de visión artificial para lograr mejores resultados
  • Evaluación adecuada del modelo, visualización del espacio latente e identificación de la atención del modelo.
  • Realizar investigaciones de dominio, procesar sus propios conjuntos de datos y establecer pruebas modelo
  • Arquitecturas de vanguardia, la progresión de las ideas, qué las hace únicas y cómo implementarlas
  • KerasCV: una biblioteca WIP para crear canalizaciones y modelos de última generación
  • Cómo analizar y leer documentos e implementarlos usted mismo
  • Selección de modelos en función de su aplicación
  • Creación de una canalización de aprendizaje automático de extremo a extremo
  • Panorama e intuición sobre la detección de objetos con Faster R-CNN, RetinaNets, SSD y YOLO
  • Instancia y segmentación semántica
  • Reconocimiento de objetos en tiempo real con YOLOv5
  • Capacitación de detectores de objetos YOLOv5
  • Trabajando con Transformers usando KerasNLP (biblioteca WIP de fuerza industrial)
  • Integrando Transformers con ConvNets para generar subtítulos de imágenes
  • sueño profundo

Conclusión

En esta breve guía, hemos echado un vistazo a los from_logits argumento para las clases de pérdida de Keras, que a menudo plantean preguntas con los practicantes más nuevos.

La confusión posiblemente surge de la sintaxis abreviada que permite agregar capas de activación encima de otras capas, dentro de la definición de una capa en sí. Finalmente hemos echado un vistazo a cuándo el argumento debe establecerse en True or False, y cuándo una salida debe dejarse como logits o pasarse a través de una función de activación como SoftMax.

Sello de tiempo:

Mas de Abuso de pila