Implementación y ejemplos de redes neuronales funcionando
Clase 9 de 9 • Curso de Redes Neuronales y Backpropagation 2017
Contenido del curso
Clase 9 de 9 • Curso de Redes Neuronales y Backpropagation 2017
Contenido del curso
Traduzcamos las ecuaciones matemáticas en código solamente utilizando Numpy como nuestro motor de algebra lineal. Las redes neuronales son entrenadas en un loop en el cual cada iteración presenta datos de entrada ya calibrados a la red.
En este pequeño ejemplo, consideremos todo el dataset en cada iteración. Los cálculos del paso de Propagación hacia adelante, función de costo o pérdida, y Propagación hacia atrás conducen a obtener una buena generalización ya que actualizaremos los parámetros entrenables (matrices W1 and W2 en el código) con sus correspondientes gradientes (matrices dL_dw1 and dL_dw2) en cada ciclo.
El código está almacenado en este repositorio: https://github.com/omar-florez/scratch_mlp
¡Ejecutemos esto!
Mire abajo algunas redes neuronales entrenadas para aproximar la función XOR en múltiple iteraciones.
Izquierda: Exactitud. Centro: Borde de decisión aprendido. Derecha: Función Loss.
Primero veamos como una red neuronal con 3 neuronas en la capa escondida tiene una pequeña capacidad. Este modelo aprende a separar dos clases con un simple borde de decisión que empieza una línea recta, pero luego muestra un comportamiento no lineal. La función de costo en la derecha suavemente se reduce mientras el proceso de aprendizaje ocurre.
Teniendo 50 neuronas en la capa escondida notablemente incremental el poder del modelo para aprender bordes de decisión mas complejos. Esto podría no solo producir resultados mas exactos, pero también explotar las gradientes, un problema notable cuando se entrena redes neuronales. Esto sucede cuando gradientes muy grandes multiplican pesos durante la propagación hacia atrás y así generan pesos actualizados muy grandes. Esta es la razón por la que los valores de la función de costo repentinamente se incrementan durante los últimos pasos del entrenamiento (step > 90). El componente de regularización de la función de costo calcula los valores cuadrados de los pesos que ya tienen valores muy altos (sum(W^2)/2N).
Este problema puede ser evitado reduciendo la velocidad de aprendizaje como puede ver abajo, implementado una política que reduzca la velocidad de aprendizaje con el tiempo, o imponiendo una regularización mas fuerte, quizás L1 en vez de L2. Los gradientes que explotan y se desvanecen son interesantes fenómenos y haremos un análisis detallada de eso en otra ocasión.
Nagcely Mendoza
Juan Pablo Montoya
Juan Sebastián Daza Vanegas
Richard Armuelles
Oscar Eduardo Berganza Cardona
Victor Daniel Aguirre Gil
Juan Sebastián Daza Vanegas
Andres Leonardo Arevalo
Osmandi Gomez
Omar Florez
Osmandi Gomez
Evelyn Graterol Rosales
Jefferson Quispe Pinares
Omar Florez
Andres Mauricio Maca Hurtado
José A Azocar
Omar Florez
Jason Meza
Omar Florez
Excelente curso Profesor; sin embargo, me gustaría saber lo siguiente:
Saludos.
No hay una forma exacta de obtener el número de neuronas, mas hay intentos de modelos que sacan ese numero. Lo que normalmente se hace es intentar distintos modelos hasta encontrar el de mayor precisión. Depende del tamaño del dataset y como se relacione entre si va a cambiar el numero de capas y de neuronas por capa.
Para ver el efecto de más de dos neuronas y de más de capas ocultas, esta página hace un representación bastante gráfica de esto. Además, en este video muestran cómo resolver uno de los cuatro problemas de clasificación y en este otro cómo pueden ser aplicados.
Una introducción a redes neuronales excelente, solo es cuestión de recordar algunas cosas de la universidad, pero es un material bastante accesible que evita ser tan abstracto para aquellos que no tenemos una formación tan fuerte en matemáticas.
Se puede utilizar una función del circulo en lugar de una función sigmoide. A fin de que la misma se vaya adaptando a la dispersión del de los datos de entrada?
Excelente curso. Me hubiera gustado ir de la mano con usted durante la programación del código de esta Red Neuronal Artificial.
¡Ómar, qué buen profesor eres! Esta ha sido una excelente introducción a la redes neuronales. Sin embargo, esperaba que este curso profundizara más. Al igual que el curso antecesor a este, sólo se fijaron en un algoritmo. Esperamos que profundicen más en estos buenos cursos.
Genial este curso 😃!!
Profesor Omar, ¿cuánto tiempo le tardó en ejecutarse su algoritmo y cuánta RAM y procesador tiene la máquina donde ejecutó el algoritmo?
El algoritmo no requiere de mucha memoria y debería generar inferencias apenas ejecutado.
Efectivamente, gracias por acotar que las imágenes se guardan la carpeta ‘plots’.
Sin palabras...Excelente curso!!!
Buen curso profesor Omar, me intereso el Aprendizaje Automático desde la universidad, también soy de Perú pero aún no he visto aplicaciones dentro del contexto en mi región y aun menos existen comunidades sobre ello (Si las hay espero encontrar uno pronto). Ojalá haga mas cursos y siga motivándonos para profundizar el tema. Éxitos.
Muchas gracias por tus amables palabras Jefferson. Tienes razón, vienen más conocimiento y cosas interesantes este 2018. Estate atento!
Sin duda el mejor profe de los tres, quedo atento a nuevos cursos con usted
Excelente curso Profesor que casos de uso tenemos aplicable para este algoritmo en la cotidianidad ? Por ejemplo robótica es aplicable ?
Gracias 😃 Efectivamente, el control automatico del brazo de un robot por ejemplo es una funcion matematica que requiere 1) aprendizaje 2) movimientos suaves a traves del tiempo. Una red neuronal es un aproximador universal de funciones matematicas y la suavidad de la funcion es proporcional a la capacidad o profundidad de la red neuronal, lo cual lo hace una opcion muy interesante para robotica. Saludos cordiales!
Profesor Omar estuvo genial su curso y también el material que usó, ahora sí entiendo por completo la Neural Network Back-Propagation. Voy a seguir investigando sobre otras redes neuronales, sería chevre si nos pasa algún link que ayude.
Saludos
Contento de saber eso Jasson13 😃 Las clases de Andrew Ng son siempre una motivación constante en este largo camino. Un abrazo.