Codificación dispersa se define como el aprendizaje de un conjunto completo de vectores de la base para representar los vectores de entrada (<--¿por qué queremos que este) . ¿Cuáles son las diferencias entre la codificación dispersa y autoencoder? Cuando vamos a utilizar codificación dispersa y autoencoder?
Respuestas
¿Demasiados anuncios?Encontrar las diferencias se puede hacer mirando los modelos. Veamos codificación dispersa en primer lugar.
Codificación dispersa
Codificación dispersa minimiza el objetivo $$ \mathcal{L}_{\text{sc}} = \underbrace{||WH - X||_2^2}_{\text{reconstrucción término}} + \underbrace{\lambda ||H||_1}_{\text{dispersión término}} $$ donde $W$ es una matriz de bases, H es una matriz de códigos y $X$ es una matriz de los datos que desea representar. $\lambda$ implementa un comercio de entre la dispersión y la 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.
En el principio, no tenemos la $H$ sin embargo. Sin embargo, existen muchos algoritmos que puede solucionar el objetivo con respecto a la $H$. En realidad, esta es la forma de hacer inferencia: tenemos que resolver un problema de optimización , si queremos saber el $h$ pertenece a un invisibles $x$.
Auto codificadores
Auto codificadores son una familia de supervisión de redes neuronales. Hay un buen montón de ellos, por ejemplo profunda auto codificadores o aquellos que tienen diferentes regularización trucos-por ejemplo, eliminación de ruido, la contractura, escasa. Incluso existen probabilísticos, tales como generativo estocásticos en redes o el variacional auto codificador. En su mayoría, de forma abstracta es $$ D(d(e(x;\theta^r); \theta^d), x) $$ pero vamos a ir junto con una mucho más simple por ahora: $$ \mathcal{L}_{\text{ae}} = ||W\sigma(W^TX) - X||^2 $$ donde $\sigma$ es una función no lineal, tales como la logística sigmoide $\sigma(x) = {1 \over 1 + \exp(-x)}$.
Similitudes
Tenga en cuenta que $\mathcal{L}_{sc}$ se ve casi como $\mathcal{L}_{ae}$ una vez que dejamos de $H = \sigma(W^TX)$. La diferencia entre ambos es que yo) auto codificadores no fomentan la dispersión en su forma general ii) un autoencoder utiliza un modelo para encontrar los códigos, mientras que la codificación dispersa lo hace por medio de la optimización.
Natural de los datos de la imagen, la regularización de la auto codificadores y codificación dispersa tienden a producir muy similar a $W$. Sin embargo, el auto de los codificadores son mucho más eficientes y de fácil generalizar a mucho más complicado de los modelos. E. g. el decodificador puede ser altamente no lineales, por ejemplo, una profunda red neuronal. Además, uno no está vinculado con el cuadrado de la pérdida (en la que la estimación de $W$ $\mathcal{L}_{sc}$ depende.)
También, los diferentes métodos de regularización de rendimiento de las representaciones con diferentes characteristica. Eliminación de ruido auto codificadores también han demostrado ser equivalente a una cierta forma de Rbm etc.
Pero, ¿por qué?
Si quieres resolver un problema de predicción, usted no necesita auto codificadores salvo que usted tiene sólo un poco de la etiqueta de datos y una gran cantidad de datos sin etiquetar. Entonces usted será generalmente mejor de entrenar a un profundo auto codificador y poner un SVM lineal en la parte superior en lugar de la formación de una profunda red neuronal.
Sin embargo, ellos son muy poderosos modelos para la captura de characteristica de las distribuciones. Este es vaga, pero la investigación de convertir este en duro de los datos estadísticos se lleva a cabo actualmente. Profundo latente de Gauss modelos aka Variacional Auto codificadores o generativo estocástico redes son bastante interesantes formas de obtención automática de codificadores que seguramente estimación de los datos subyacentes de distribución.
En neurociencia el término de Codificación Neural se utiliza para referirse a los patrones de actividad eléctrica de las neuronas inducida por un estímulo. Codificación dispersa por su vez, es un tipo de patrón. Un código se dice que se dispersa cuando un estímulo (como una imagen), provoca la activación de sólo un número relativamente pequeño de neuronas, que combinados representan en baja forma. En la máquina de aprendizaje de la misma optimización de restricción utilizadas para crear una escasa código modelo puede ser utilizado para implementar Escasa Autoencoders, que son habituales de los autoencoders capacitados con una dispersión de restricción. Abajo más explicaciones detalladas para cada una de las preguntas que se ofrecen.
Codificación dispersa se define como el aprendizaje de un conjunto completo de vectores de la base para representar los vectores de entrada (<--¿por qué queremos que este)
En primer lugar, al menos desde (Hubel Y Wiesel, 1968) es conocido que en la V1 región hay células específicas que respondan al máximo en los bordes, como estímulo (además de tener otros "útil" properties " (propiedades). Codificación dispersa es un modelo que explica muchas de las características observadas de este sistema. Ver (Olshausen & Field, 1996) para obtener más detalles.
Segundo, se ha demostrado que el modelo que describe la codificación dispersa es una técnica útil para la extracción de características en el Aprendizaje de Máquina y da buenos resultados en la transferencia de las tareas de aprendizaje. Raina et al. (2007) mostraron que un conjunto de "vectores de la base" (características, como pen-golpes y bordes) aprendido con un conjunto de entrenamiento compuesto de escritos a mano con caracteres de mejora de la clasificación en un escrito a mano dígitos tarea de reconocimiento. Después de Codificación Dispersa basado en modelos se ha utilizado para entrenar "profunda" de las redes, de apilamiento de las capas de escasa función de los detectores para crear una "escasa convicción profunda, neto" (Lee et al., 2007). Más recientemente resultados sorprendentes en reconocimiento de imagen se logra utilizando codificación dispersa basado en modelos para la construcción de una red con varias capas (el famoso "Google Cerebro"), que era capaz de distinguir una imagen de un gato en un puramente, sin supervisión (Le et al., 2013).
Tercero, es probable que sea posible el uso de los sabios de base para realizar la compresión. Un no he visto a nadie realmente a hacerlo, sin embargo.
¿Cuál es la diferencia entre codificación dispersa y autoencoder?
Un autoencoder es un modelo que intenta reconstruir su entrada, generalmente con algún tipo de restricción. De acuerdo a Wikipedia, "es una red neuronal artificial se utilizan para el aprendizaje eficiente de los códigos". No hay nada en autoencoder la definición que requieren de dispersión. Codificación dispersa base de más arriba es una de las técnicas disponibles, pero hay otros, por ejemplo de eliminación de ruido Autoencoders, la Contractura Autoencoders y Rbm. Todo hace que la red aprenda buenas representaciones de la entrada (que también son comúnmente "disperso").
Cuando vamos a utilizar codificación dispersa y autoencoder?
Probablemente usted está interesado en usar un auto-encoder para la extracción de características y/o pre-entrenamiento de profunda redes. En el caso de implementar un autoencoder con la dispersión de la restricción, que va a utilizar ambos.
Una escasa coder es algo así como la mitad de un auto-codificador. Un auto-codificador de obras como:
input => neural net layer => hidden outputs => neural net layer => output
Para la propagación hacia atrás, la señal de error, la pérdida, es: entrada - salida
Si aplicamos una dispersión de la restricción en el oculto salidas, a continuación, más serán los ceros y unos son 1s. A continuación, la segunda capa es esencialmente un conjunto lineal de funciones de base, que se suman, según la cual oculta de la salidas son 1s.
En la codificación dispersa, sólo tenemos la segunda mitad de este:
codes => neural net layer => output
Los "códigos" es un montón de números reales, la selección de la base de las funciones representadas por los pesos de la red neuronal de la capa. Ya en Olshausen de papel, se están aplicando a una dispersión de la restricción a los códigos, los códigos, así como en la escasa auto-codificador, dispersas: la mayor parte de ceros con un par de.
La diferencia que podemos ver ahora con claridad: para la codificación dispersa, no es la primera mitad de la red neuronal: los códigos no son proporcionados por nosotros de forma automática por una red neuronal.
¿Cómo podemos obtener los códigos de codificación dispersa? Tenemos que optimizar nosotros mismos, y lo hacemos mediante el uso de gradiente de la pendiente o similar, para encontrar el conjunto de códigos que proporciona la mejor salida de la coincidencia de la imagen de entrada. Tenemos que hacer esto para cada imagen, incluyendo para cada una de las pruebas de imagen, cada vez.