Estoy tratando de entrenar una red neuronal para la clasificación, pero las etiquetas que tengo son bastante ruidosas (alrededor del 30% de las etiquetas están equivocadas).
La pérdida de entropía cruzada realmente funciona, pero me preguntaba si hay alguna alternativa más efectiva en este caso. o es la pérdida de entropía cruzada el óptimo?
No estoy seguro, pero estoy pensando en "recortar" un poco la pérdida de entropía cruzada, de modo que la pérdida para un punto de datos no sea mayor que un límite superior, ¿funcionará?
¡Gracias!
Actualización
Según la respuesta de Lucas, obtuve lo siguiente para las derivadas para la salida de predicción y la entrada de la función softmax . Así que supongo que esencialmente está agregando un término de suavizado a las derivadas.
Derivados para la pérdida de entropía cruzada original:
z 3 pi=0.3/N+0.7yil=-∑tilog(pi)∂l
Actualización
Acabo de leer un artículo de Google que aplica la misma fórmula que en la respuesta de Lucas pero con diferentes interpretaciones.
En la Sección 7, Regularización del modelo mediante suavizado de etiquetas
Pero en lugar de agregar el término de suavizado a las predicciones, lo agregaron a la verdad básica , lo que resultó ser útil.
Respuestas:
Lo que hay que hacer aquí es cambiar el modelo, no la pérdida. Su objetivo sigue siendo clasificar correctamente tantos puntos de datos como sea posible (lo que determina la pérdida), pero sus suposiciones sobre los datos han cambiado (que están codificadas en un modelo estadístico , la red neuronal en este caso).
en cambio y optimizar
fuente
Reconozco que este es un foro de estadísticas y la expectativa se centra en las derivaciones matemáticas, pero si puede ser útil y está usando Python, hay un paquete para la clasificación con etiquetas ruidosas llamado
cleanlab
: https://github.com/ cgnorthcutt / cleanlab / .El
cleanlab
paquete Pythonpip install cleanlab
, del cual soy autor, encuentra errores de etiqueta en conjuntos de datos y admite clasificación / aprendizaje con etiquetas ruidosas. Funciona con scikit-learn, PyTorch, Tensorflow, FastText, etc.Para aprender con etiquetas ruidosas.
Para encontrar errores de etiqueta en su conjunto de datos.
Algunos ejemplos con FastText (NLP) y PyTorch (MNIST AlexNet).
Documentación: https://l7.curtisnorthcutt.com/cleanlab-python-package
fuente