¿Cuál es el potencial de las redes neuronales en la compresión de datos?

Uno de los primeros intentos de utilizar redes neuronales para la compresión de datos fue por Schmidhuber y Heil en 1996 [1]. Entrenaron una red neuronal de 3 capas mediante propagación hacia atrás para predecir el siguiente carácter en artículos de periódicos en inglés y alemán dados los 5 caracteres anteriores como entrada, y luego codificaron el carácter predicho usando codificación aritmética. Desafortunadamente, este enfoque no fue práctico. Se requieren múltiples pases de capacitación fuera de línea que utilizan días de tiempo de CPU en una estación de trabajo HP-700 solo para comprimir 10 KB de texto. Informaron una relación de compresión de 2.94 bits por carácter, que no es mucho mejor que zip, y mucho peor que los métodos avanzados como PPM que existían en ese momento.

En 2000 pude obtener velocidades prácticas utilizando una red neuronal en línea (paso único) de 2 capas para predecir un bit a la vez. La red tenía 4 millones de entradas que representaban el orden a través de 5 hashes de contexto, y solo una salida [2]. Pude obtener relaciones de compresión mucho mejores que zip y solo un poco peor que PPM.

En 2005 desarrollé PAQ7, usando un enfoque diferente que ahora se usa en todas las variantes de PAQ8 y en ZPAQ. La idea es utilizar una red neuronal de 2 capas llamada mezclador para combinar las predicciones de bits de modelos estadísticos independientes. Esencialmente, un mezclador calcula un promedio ponderado de probabilidades en el dominio logístico: stretch (p) = log (p / (1-p)). Es decir:

predicción = squash (w_i * estiramiento (p_i))

donde p_i es la predicción del i-ésimo modelo (una probabilidad entre 0 y 1), w_i es el peso y squash () es el inverso de stretch ():

squash (x) = 1 / (1 + exp (-x))

Después de que se codifica el bit, los pesos se actualizan para favorecer los modelos que hicieron las predicciones más precisas:

error = bit – predicción
w_i = w_i + L * error * estiramiento (p_i)

donde L es la tasa de aprendizaje, típicamente alrededor de 0.001 a 0.01. La regla de actualización es la misma que la propagación hacia atrás, excepto que el estado se mueve a lo largo del gradiente de costo de codificación en lugar del gradiente de error RMS. En realidad, esto simplifica la regla de actualización al eliminar los dos factores, salida * (1 – salida).

Los compresores de gama alta como CMIX (el mejor clasificado en el Benchmark de compresión de texto grande) y PAQ8HP12 (ganador del Premio Hutter) mezclan cientos o miles de modelos, incluidas las salidas de otros mezcladores. Son extremadamente lentos y requieren mucha memoria (32 GB para CMIX). Los compresores prácticos pueden mezclar de 2 a 20 modelos contextuales, intercambiando entre velocidad y relación de compresión.

1. Schmidhuber, Jürgen y Heil, Stefan, Compresión de texto neuronal secuencial, IEEE Trans. on Neural Networks 7 (1): 142-146, 1996.
2. Compresión rápida de texto con redes neuronales

La compresión de datos es un problema de inteligencia artificial, así que sí, hay una relación.

Hoy en día, las redes neuronales se utilizan en compresores de última generación como PAQ para mezclar las predicciones de varios modelos diferentes en una sola predicción. Cuanto mejor puedas predecir el siguiente personaje basado en los anteriores, más podrás comprimir.

Algo interesante es que un LSTM, una forma de red neuronal con memoria, puede comprimir casi tan bien como algunos de los mejores compresores como PAQ.

Creo que los LSTM podrían producir en el futuro un avance en los resultados de la compresión de datos.

Algunos trabajos relevantes:
Página en fit.edu (Compresión rápida de texto con redes neuronales por Matt Mahoney)
Página en arxiv.org (Generando secuencias con redes neuronales recurrentes por Alex Graves)

Gracias por el A2A.
Luis.

Cuando se trata de la compresión de datos de imágenes, Google intenta utilizar RNN para la compresión.

http://arxiv.org/pdf/1608.05148v

Afirman buenos resultados frente a JPEG, pero cuando se trata de video, solo el futuro puede decir si se opondrá a los métodos de estimación de movimiento basados ​​en bloques como HEVC / VP9. Incluso no pude encontrar ninguna comparación con el modo de codificación de imagen HEVC.

Hasta ahora, los humanos no pueden obtener nada mejor que los codificadores híbridos basados ​​en bloques (estimación de movimiento seguida de DCT / DST y codificación aritmética). Hubo muchos intentos con la compresión wavelet alguna vez, pero no estuvo a la altura de las expectativas. Desde entonces no había muchas herramientas, solo herramientas incrementales (aumentar el tamaño del bloque, transformar el tamaño, cambiar el estilo de codificación de entropía, etc.) sobre el marco existente.

Finalmente, hay una nueva herramienta (basada en RNN) que muestra cierta esperanza, pero solo el tiempo puede determinar si estará a la altura de las expectativas.

Espero que si. ¡¡¡Amén!!!

Tengo una idea pero aún no la he hecho. una posible forma puede ser usarlos para la agrupación. Al hacer clústeres de algunos subconjuntos de sus datos, puede guardar cada ID de clúster en lugar de esos subconjuntos en caso de compresión con pérdida y para el caso sin pérdida, también debe guardar algún tipo de diferencia o distancia a los clústeres.
mediante el método de mención anterior, utiliza la red neuronal para descubrir similitudes en sus datos (donde la entropía es baja) y al reemplazar los datos con sus representantes aumenta la entropía de sus datos comprimidos y, mientras tanto, reduce su volumen.
Un buen candidato de dicha red puede ser SOM (Mapa de autoorganización).

More Interesting

¿Por qué el aprendizaje del 'lenguaje ensamblador y máquina' se enfatiza menos en las universidades en comparación con el aprendizaje de lenguajes de programación generales?

¿Cuáles son las funciones básicas del olfato? Al igual que los datos visuales se pueden aproximar en una base 3D (RGB, HSI, etc.), ¿se puede aproximar el olor como una suma lineal de unos pocos olores básicos?

Cómo crear un conjunto de datos a partir de imágenes

¿Qué técnicas de aprendizaje automático se utilizan en la industria?

¿Qué debo elegir para mi tesis en Machine Learning?

¿Cuántas imágenes necesita un buen sistema de aprendizaje automático para aprender un nuevo concepto?

¿Cuál es una mejor manera de comenzar a aprender Ciencia de Datos, a través de cursos en línea o en un Instituto de capacitación?

¿Puedo entrenar una red neuronal convolucional (CNN) con imágenes de fondo diferente en blanco y negro?

¿Es posible o valioso obtener otro doctorado en Machine Learning (Deep Learning) de una de las 50 mejores universidades de los Estados Unidos?

¿Cómo comenzaría con el cambio de funciones o el desarrollo de indicadores de funciones en mi empresa? Actualmente utilizamos ramificaciones.

¿Qué es el procesamiento del lenguaje natural?

¿Cuál es la mejor tarjeta gráfica para tareas de aprendizaje automático / Big Data?

Dadas las variables / parámetros continuos, ¿cuál es la diferencia entre el aprendizaje automático y la interpolación?

¿Cuál es la diferencia entre las redes de Markov y las redes bayesianas?

¿Qué sucede cuando las computadoras aprenden a componer música mejor que los humanos?