La codificación dispersa se define como el aprendizaje de un conjunto excesivo de vectores base para representar vectores de entrada (<- ¿por qué queremos esto?). ¿Cuáles son las diferencias entre codificación dispersa y autoencoder? ¿Cuándo utilizaremos codificación dispersa y autoencoder?
35
Respuestas:
Encontrar las diferencias se puede hacer mirando los modelos. Veamos primero la codificación dispersa.
Codificación escasa
La codificación dispersa minimiza el objetivo donde W es una matriz de bases, H es una matriz de códigos y X es una matriz de los datos que deseamos representar. λ implementa un intercambio entre escasez y reconstrucción. Tenga en cuenta que si se nos da H , la estimación de W es fácil a través de mínimos cuadrados.
Al principio, sin embargo, no tenemos Sin embargo, existen muchos algoritmos que pueden resolver el objetivo anteriormente con respecto a H . En realidad, así es como hacemos la inferencia: necesitamos resolver un problema de optimización si queremos saber qué h pertenece a una x invisible .H H h X
Codificadores automáticos
Los codificadores automáticos son una familia de redes neuronales no supervisadas. Hay muchos de ellos, por ejemplo, codificadores automáticos profundos o aquellos que tienen diferentes trucos de regularización adjuntos, por ejemplo, eliminación de ruido, contracción, escasa. Incluso existen las probabilísticas, como las redes estocásticas generativas o el codificador automático variacional. Su forma más abstracta es pero por ahora vamos a seguir con una mucho más simple: L ae = | El | W σ ( W T X )
Similitudes
Tenga en cuenta que parece casi a L a e una vez que establecemos H = σ ( W T X ) . La diferencia de ambos es que i) los codificadores automáticos no fomentan la dispersión en su forma general ii) un codificador automático utiliza un modelo para encontrar los códigos, mientras que la codificación dispersa lo hace mediante la optimización.Ls c La e H= σ( WTX)
Además, los diferentes métodos de regularización producen representaciones con características diferentes. También se ha demostrado que los codificadores automáticos de denoising son equivalentes a una determinada forma de RBM, etc.
¿Pero por qué?
Si desea resolver un problema de predicción, no necesitará codificadores automáticos a menos que tenga pocos datos etiquetados y muchos datos sin etiquetar. Entonces, generalmente será mejor entrenar un codificador automático profundo y colocar un SVM lineal en la parte superior en lugar de entrenar una red neuronal profunda.
Sin embargo, son modelos muy poderosos para capturar la característica de las distribuciones. Esto es vago, pero actualmente se está llevando a cabo una investigación que convierte esto en hechos estadísticos estrictos. Los modelos gaussianos latentes profundos, también conocidos como codificadores automáticos variacionales o redes estocásticas generativas, son formas bastante interesantes de obtener codificadores automáticos que estiman de manera demostrable la distribución de datos subyacente.
fuente
En neurociencia, el término codificación neural se usa para referirse a los patrones de actividad eléctrica de las neuronas inducidas por un estímulo. La codificación dispersa por su parte es un tipo de patrón. Se dice que un código es escaso cuando un estímulo (como una imagen) provoca la activación de un número relativamente pequeño de neuronas, que combinadas lo representan de manera escasa. En el aprendizaje automático, la misma restricción de optimización utilizada para crear un modelo de código disperso se puede utilizar para implementar codificadores automáticos dispersos, que son codificadores automáticos regulares entrenados con una restricción de dispersión. A continuación se dan explicaciones más detalladas para cada una de sus preguntas.
La codificación dispersa se define como el aprendizaje de un conjunto excesivo de vectores base para representar vectores de entrada (<- ¿por qué queremos esto?)
Primero, al menos desde (Hubel y Wiesel, 1968) se sabe que en la región V1 hay células específicas que responden al máximo al estímulo de borde (además de tener otras propiedades "útiles"). Sparse Coding es un modelo que explica bien muchas de las características observadas de este sistema. Ver (Olshausen & Field, 1996) para más detalles.
En segundo lugar, se muestra que el modelo que describe la codificación dispersa es una técnica útil para la extracción de características en Machine Learning y produce buenos resultados en las tareas de transferencia de aprendizaje. Raina y col. (2007) mostraron que un conjunto de "vectores básicos" (características, como trazos y bordes) aprendidos con un conjunto de entrenamiento compuesto por caracteres escritos a mano mejora la clasificación en una tarea de reconocimiento de dígitos escritos a mano. Los modelos posteriores basados en la codificación dispersa se han utilizado para entrenar redes "profundas", apilando capas de detectores de características dispersas para crear una "red de creencias dispersas" (Lee et al., 2007). Más recientemente, se lograron resultados asombrosos en el reconocimiento de imágenes utilizando modelos basados en codificación dispersa para construir una red con varias capas (el famoso "Google Brain"), que era capaz de distinguir una imagen de un gato de una manera puramente sin supervisión (Le et al. , 2013) .
Tercero, probablemente sea posible usar la base aprendida para realizar la compresión. Sin embargo, no he visto a nadie realmente haciéndolo.
¿Cuál es la diferencia entre codificación dispersa y autoencoder?
Un autoencoder es un modelo que intenta reconstruir su entrada, generalmente usando algún tipo de restricción. Según Wikipedia, "es una red neuronal artificial utilizada para aprender codificaciones eficientes". No hay nada en la definición del autoencoder que requiera escasez. Las restricciones basadas en codificación dispersa es una de las técnicas disponibles, pero hay otras, por ejemplo, Denoising Autoencoders, Contractive Autoencoders y RBMs. Todo hace que la red aprenda buenas representaciones de la entrada (que también son comúnmente "dispersas").
¿Cuándo utilizaremos codificación dispersa y autoencoder?
Probablemente esté interesado en usar un codificador automático para la extracción de características y / o la capacitación previa de redes profundas. Si implementa un codificador automático con la restricción de dispersión, utilizará ambos.
fuente
Un codificador disperso es como la mitad de un codificador automático. Un codificador automático funciona como:
Para la propagación hacia atrás, la señal de error, la pérdida, es: entrada - salida
Si aplicamos una restricción de dispersión en las salidas ocultas, la mayoría serán ceros, y unos pocos serán 1s. Entonces, la segunda capa es esencialmente un conjunto de funciones de base lineal, que se suman, de acuerdo con cuál de las salidas ocultas son 1s.
En la codificación escasa, solo tenemos la segunda mitad de esto:
Los 'códigos' son un grupo de números reales, que seleccionan las funciones básicas representadas por los pesos en la capa de red neuronal. Como en el artículo de Olshausen, están aplicando una restricción de escasez a los códigos, los códigos son, al igual que en el codificador automático disperso, dispersos: en su mayoría ceros con unos pocos.
La diferencia que podemos ver ahora es clara: para la codificación dispersa, no hay una primera mitad de la red neuronal: los códigos no nos los proporciona automáticamente una red neuronal.
¿Cómo obtenemos los códigos en codificación dispersa? Tenemos que optimizarnos, lo que hacemos mediante el uso de descenso de gradiente o similar, para encontrar el conjunto de códigos que mejor proporciona una salida que coincida con la imagen de entrada. Tenemos que hacer esto para cada imagen, incluso para cada imagen de prueba, cada vez.
fuente
Es posible que desee leer este documento reciente, https://arxiv.org/abs/1708.03735v2 , precisamente sobre este mismo tema. En este artículo, los autores muestran que, de hecho, uno puede configurar un autoencoder de modo que el diccionario de verdad fundamental sea un punto crítico de la función de pérdida al cuadrado de ese autoencoder.
fuente