Estoy tratando de aprender cómo funciona la red neuronal en el reconocimiento de imágenes. He visto algunos ejemplos y me confundo aún más. En el ejemplo del reconocimiento de letras de una imagen de 20x20, los valores de cada píxel se convierten en la capa de entrada. Entonces 400 neuronas. Luego, una capa oculta de neuronas y 26 neuronas de salida. Luego entrena la red, y luego funciona, no es perfecto.
Lo que me confundió sobre la Red Neural es cómo aprende sobre lo que hay en una imagen. No necesita hacer umbrales, segmentación o medición, de alguna manera la red aprende a comparar imágenes y reconocerlas. Es como magia para mí ahora. ¿Dónde comenzar a aprender la red neuronal?
machine-learning
neural-networks
image-processing
usuario1731927
fuente
fuente
Respuestas:
Una gran idea de cómo una red neuronal puede aprender a clasificar algo tan complejo como los datos de imágenes dados solo ejemplos y respuestas correctas me llegó mientras estudiaba el trabajo del profesor Kunihiko Fukushima sobre el neocognitrion en la década de 1980. En lugar de solo mostrarle a su red un montón de imágenes, y usar la propagación hacia atrás para que pueda resolver las cosas por sí mismo, tomó un enfoque diferente y entrenó a su red capa por capa, e incluso nodo por nodo. Analizó el rendimiento y la operación de cada nodo individual de la red y modificó intencionalmente esas partes para que respondan de la manera prevista.
Por ejemplo, sabía que quería que la red pudiera reconocer líneas, por lo que entrenó a capas y nodos específicos para reconocer líneas horizontales de tres píxeles, líneas verticales de 3 píxeles y variaciones específicas de líneas diagonales en todos los ángulos. Al hacer esto, sabía exactamente en qué partes de la red se podía contar para disparar cuando existían los patrones deseados. Luego, dado que cada capa está altamente conectada, todo el neocognitrón en su conjunto podría identificar cada una de las partes compuestas presentes en la imagen, sin importar dónde existieran físicamente. Entonces, cuando existía un segmento de línea específico en algún lugar de la imagen, siempre habría un nodo específico que se dispararía.
Manteniendo esta imagen siempre presente, considere la regresión lineal, que es simplemente encontrar una fórmula (o una línea) a través de la suma de error al cuadrado, que pasa más de cerca a través de sus datos, eso es bastante fácil de entender. Para encontrar "líneas" curvas, podemos hacer el mismo cálculo de suma de productos, excepto que ahora agregamos algunos parámetros de x ^ 2 o x ^ 3 o incluso polinomios de orden superior. Ahora tiene un clasificador de regresión logística. Este clasificador puede encontrar relaciones que no son de naturaleza lineal. De hecho, la regresión logística puede expresar relaciones que son arbitrariamente complejas, pero aún debe elegir manualmente la cantidad correcta de características de potencia para hacer un buen trabajo al predecir los datos.
Una forma de pensar en la red neuronal es considerar la última capa como un clasificador de regresión logística , y luego las capas ocultas pueden considerarse como "selectores de características" automáticos . Esto elimina el trabajo de elegir manualmente el número correcto y la potencia de las características de entrada. Por lo tanto, el NN se convierte en un selector automático de características de potencia y puede encontrar cualquier relación lineal o no lineal o servir como un clasificador de conjuntos arbitrariamente complejos ** (esto, solo se supone, que hay suficientes capas y conexiones ocultas para representar la complejidad de el modelo que necesita aprender). Al final, se espera que un NN que funcione bien aprenda no solo "la relación" entre la entrada y las salidas, sino que luchamos por una abstracción o un modelo quegeneraliza bien.
Como regla general, la red neuronal no puede aprender nada que un ser humano razonablemente inteligente no podría aprender teóricamente dado el tiempo suficiente de los mismos datos, sin embargo,
fuente
Es posible que haya escuchado decir que las redes neuronales son " aproximadores de funciones universales ". En esencia, el teorema de Cybenko dice que para cualquier función de mapeo de reales a reales, puede aproximarlo con una red neuronal con funciones de activación sigmoideas. De hecho, resulta que las redes neuronales le permiten calcular cualquier función que sea computable por una máquina de Turing (es decir, cualquier cosa que pueda escribir un algoritmo para calcular). Desafortunadamente, estas pruebas solo dicen que para algunas configuraciones finitas de neuronas y pesos, puede aproximar cualquier función.
La teoría es muy agradable y elegante, pero su pregunta parece estar más en la línea de cómo codificar realmente el cálculo de alguna función en un conjunto de neuronas y pesos. Para ilustrar, considere un ejemplo simple: el exclusivo o. El XOR toma dos entradas, pasa esas entradas. Cuando se activa una y solo una de las entradas, se activa el nodo de salida. Con ambas o ninguna de las entradas activadas, el nodo de salida no se activa.
Observe que los tres nodos ocultos hacen cosas diferentes. Los nodos más a la izquierda y a la derecha simplemente pasan a través de las activaciones de nodos de entrada de respeto. La neurona media toma las dos entradas y de alguna manera las niega si ambas están activadas. Esta inteligente combinación y recombinación de entradas es esencialmente cómo se realiza el trabajo en una red neuronal.
Obviamente, para funciones más complejas, la combinación y la recombinación deben realizarse de maneras más inteligentes y complicadas, pero esto es en esencia lo que sucede en un nivel bajo. ¡Lo loco es que esto es realmente todo lo que necesita para calcular cualquier función computable! Por otra parte, las máquinas de Turing también resultan ser engañosamente simples ...
El problema es que realmente no tenemos una forma de generar mágicamente la red neuronal que computa alguna función arbitraria. Las pruebas solo nos dicen que hay alguna red por ahí que podría hacerlo. Cuando entrenamos nuestras redes neuronales, simplemente estamos tratando de encontrar una red que esté bastante cerca.
En el contexto del reconocimiento de imágenes, puede imaginarse codificando patrones en la red. Por ejemplo, para reconocer el número '1', puede imaginar nodos ocultos que esperan que una columna de píxeles esté activada en su mayoría o en su totalidad, con los píxeles vecinos apagados. Este nodo oculto podría ser bastante bueno para reconocer una línea recta en esa columna en particular. Ponga suficientes de estos juntos y muy pronto tendrá un montón de nodos que lo hacen en suficientes lugares de su imagen que si le muestro a la red uno, se activarán suficientes nodos ocultos en línea recta, lo que indica un '1'. El problema, por supuesto, es generalizar la red para que pueda reconocer un conjunto variado de entradas.
Esperemos que esto le ayude a comprender más o menos los conceptos de cómo una red neuronal puede realizar cálculos. Sin embargo, se ha topado con un punto que es bastante importante sobre las redes neuronales: en general, en el mejor de los casos es difícil entender por qué la red escupe una salida en particular, especialmente cuando considera que para algo como el reconocimiento de imágenes, las redes son generalmente lo suficientemente grande como para que los humanos tengan dificultades para comprender cada una de las partes móviles de la máquina. Lo que complica aún más el asunto es que, en general, la mayoría de las redes neuronales en realidad no tienen un solo nodo oculto para cada pequeña característica que la red podría aprender sobre los datos. En cambio, detectar algo como una línea recta para clasificar el número '1' se llevaría a cabo de manera no centralizada en muchos nodos ocultos. Otros algoritmos,
Si está buscando más lectura, le recomiendo leer este tutorial en ai junkie. Le guía a través de los conceptos básicos de cómo funciona una red neuronal, e incluso proporciona un ejemplo de código simple para lograr que las redes neuronales conduzcan un tanque hacia una meta. Sin embargo, el tutorial no cubre la propagación hacia atrás, que es, con mucho, la forma más común de entrenar redes neuronales, y en su lugar utiliza un algoritmo genético simple. Una vez que comience a hablar sobre genética, supongo que puedes dejar de leer ...
fuente
Que lo que te confundió es
Lo que hay en una imagen está representado digitalmente por los valores en los píxeles de la imagen. Si tomas un ejemplo de color en la imagen. El píxel puede tener tres valores, cada uno para los tres colores principales: rojo, verde y azul (
RGB
). Un píxel con (10,50,100
) significa que tiene "menos" elementos de color azul que un píxel con (40,50,100
). Por lo tanto, en la imagen, el primer píxel representa una región con menos color azul. Esta es la información que la red neuronal aprende, de una ubicación / región de la imagen a la otra y termina "sabiendo" lo que hay en la imagen. El mismo principio se aplica para otras características de imagen (además del color) que pueden usarse como entrada a la red neuronal. Vea esto y aprenda cómo funciona la red neuronal. esto para conceptos básicos de imagen y luego pase a estofuente
Todos los problemas de aprendizaje automático son iguales. Tiene algunos datos del tren, aprende un modelo que representa estos datos y tiene la capacidad de generalizar este conocimiento de esa manera que agrupa, clasifica y aprende con diferentes algoritmos.
En Reconocimiento de imágenes, nuevamente tiene un conjunto de imágenes sobre las que desea aprender.
Si desea reconocer más de una cosa, use un clasificador múltiple para cada una.
fuente
También me gustaría mencionar muy popular para el reconocimiento de imágenes de redes neuronales convolucionales. Aquí hay un enlace a la explicación simplificada de una CNN .
Brevemente, en CNN la imagen se divide primero en características, como bordes, formas, colecciones de formas. Luego, estas características se 'alimentan' a una red neuronal multicapa 'normal' totalmente conectada (perceptrón multicapa).
En más detalles, se aplica un conjunto de filtros para extraer entidades en forma de un mapa de entidades. Un filtro es solo una matriz (aleatoria al principio) que se aplica a la imagen original para que se calcule el producto de puntos de la matriz de imagen original y la matriz de filtro y se sume el resultado. El filtro se mueve a lo largo de la imagen original un píxel (el paso) a la vez y se llena la matriz del mapa de características. Se crea un mapa de características para cada filtro. Luego se introdujo la no linealidad con RELU (Unidad lineal rectificada) para cada píxel en cada mapa de características. La agrupación, mediante la aplicación de max (), sum () o average (), se realiza después de la convolución. Finalmente, las características extraídas de esta manera se ven como piezas 'magnificadas' de la imagen original. Estas características se ingresan en una red neuronal completamente conectada (todas las unidades están conectadas) y las probabilidades para cada imagen (digamos que capacitamos a nuestra red en imágenes de automóviles, árboles y botes) se calculan después de cada paso de alimentación a través de la red. La red está capacitada, lo que significa que los parámetros (pesos) y las matrices de filtro se optimizan mediante retropropagación (minimización del error de clasificación errónea). Cuando se ingresa una nueva imagen en la red capacitada, solo se necesita información para identificar la imagen (siempre que la red sea lo suficientemente precisa, es decir, la capacitamos con suficientes ejemplos, etc.) lo que significa que los parámetros (pesos) y las matrices de filtro se optimizan mediante retropropagación (minimización del error de clasificación errónea). Cuando se ingresa una nueva imagen en la red capacitada, solo se necesita información para identificar la imagen (siempre que la red sea lo suficientemente precisa, es decir, la capacitamos con suficientes ejemplos, etc.) lo que significa que los parámetros (pesos) y las matrices de filtro se optimizan mediante retropropagación (minimización del error de clasificación errónea). Cuando se ingresa una nueva imagen en la red capacitada, solo se necesita información para identificar la imagen (siempre que la red sea lo suficientemente precisa, es decir, la capacitamos con suficientes ejemplos, etc.)
fuente
Es bueno saber que ANN puede crear cualquier función f (x) o f (x, y, z, ..) o cualquier multifunción para el caso. Pero también es importante saber que las funciones tienen límites en la forma en que pueden clasificar los datos ... hay subconjuntos de relaciones más complejos de conjuntos de poder de objetos, que son importantes en la clasificación y estas funciones no las describen de manera elegante o natural, pero son importantes en el lenguaje y en la clasificación de objetos. ANN puede lograr esto sin embargo también.
fuente