Blogs

Deep Learning desde la base
  • Pablo Navarro
  • 722 Views
  • 0 Comment
  • Artificial Intelligence . Deep Learning . Inteligencia Artificial . Machine Learning . Neural Networks . Perceptrones . Redes Neuronales .
Como bien se adelantaba en el artículo anterior “Deep Learning, solo para pilotos profesionales”: no tiene sentido comprarse un Ferrari con un año de carnet. Sin embargo, queremos romper una lanza en favor del Deep Learning y pensamos que es importante empezar por algún sitio.
Queremos comenzar con un artículo puramente divulgativo, para aquellos a los que el Deep Learning les suene a película de ciencia ficción (o de terror). Con esto no pretendemos que terminéis utilizando modelos de redes neuronales a diario, simplemente nos interesa que tengáis las bases para poder dar el gran salto al mundo del Deep Learning.

Si queremos comenzar por la base es conveniente hacernos la pregunta ¿qué es el Deep Learning? La respuesta es sencilla; el Deep Learning es una técnica de Machine Learning. En ciencias de computación, Machine Learning es el área de la inteligencia artificial cuyo objetivo es el desarrollo de técnicas que permitan a los sistemas basados en computación (máquinas) aprender los patrones ocultos de datos estructurados y no estructurados. La robótica, el procesamiento de lenguaje natural, reconocimiento de imágenes y la inteligencia artificial son algunas de las maravillas derivadas del aprendizaje automático.

Lo primero por lo que debemos empezar es por saber ¿Es lo mismo Deep Learning y redes neuronales? No, cuando hablamos de redes neuronales nos referimos al nombre genérico que le damos a cualquier esquema que conecte múltiples nodos (neuronas). Por otro lado, Deep Learning es un tipo de red neural que se caracteriza por tener más de una capa de neuronas interconectadas. Las redes neuronales son una potente herramienta de modelado que da cuenta de las interacciones entre nuestras entradas.

Red Neuronales_Deep Learning Blog_Pablo Navarro

Para saber qué son las redes neuronales lo mejor es empezar por los perceptrones simples (perceptron). Los perceptrones empezaron a desarrollarse en los años 50 (si, en los 50!) por Frank Rosenblatt. Rosenblatt se basó en los trabajos desarrollados por Warren McCulloch y Walter Pitts en los 40 y en una regla de aprendizaje basada en la corrección del error. Esto nos ilustra que realmente es una tecnología que comenzó a gestarse hace más de 70 años. Hoy en día el perceptrón no es un modelo neuronal muy utilizado debido en parte al desarrollo de redes más avanzadas. Sin embargo, para entender cómo funcionan las redes más complejas es mejor comenzar por los más sencillos perceptrones.

Red Neuronal simple_Deep Learning Blog_ Pablo Navarro

Un perceptrón puede utilizarse en problemas de clasificación. Este puede obtener múltiples entradas {X1, X2 … Xn} de valores binarios {0,1}. En nuestro ejemplo el perceptrón obtendrá la salida de dos entradas (X1 y X2). Rosenblatt propuso una regla sencilla para obtener la salida: Introdujo el concepto de peso (weight) {W1, W2 … Wn}. Estos pesos son números reales que indican la importancia de cada una de las entradas respecto a la salida. La salida del perceptrón, también cero o uno, viene determinada si la suma ponderada (el sumatorio de cada Wi·Xi) es menor o mayor a cierto valor umbral (número real), siendo este valor un parámetro propio de la neurona.
La salida tomará un valor de cero (desactivada) si la suma ponderada es menor al valor umbral y un valor de uno (activada) si la suma ponderada es mayor o igual a dicho valor.
Lo podemos expresar matemáticamente mediante la siguiente expresión:

Red Neuronales_Formula1_Deep Learning Blog_Pablo Navarro

Realizaremos un cambio en la expresión, sustituiremos el negativo del umbral por el sesgo (b=-θ). El sesgo se asemeja a cómo de fácil es obtener una salida de uno. Por lo tanto, nuestra expresión matemática quedaría como:

Red Neuronales_Formula2_Deep Learning Blog_Pablo Navarro

Veamos un ejemplo para terminar de entender cómo funcionan las redes basadas en perceptrones simples.

Imaginemos que tenemos que volver a la universidad. El profesor nos explica que para la nota final tiene en cuenta dos pruebas que haremos a lo largo del curso. Estas pruebas consistirán en una exposición oral (X1) y un examen escrito (X2). Sería un poco extraño pero imaginad que sólo hay dos posibles resultados para cada prueba. Podemos obtener un suspenso (valor cero) o un aprobado (valor de uno). Además, el profesor nos explica que cada prueba tiene una ponderación (peso) respecto a la nota final. Para él, lo más importante en el curso será el examen escrito, condición imprescindible para aprobar, por lo que le dará un peso alto. Pongamos un peso de W2=5. La otra prueba es importantes pero la considerará complementaria al examen escrito, por lo que dará unos pesos de W1=2.
Una vez elegidos los pesos decidimos un sesgo de -4 (umbral de 4) para el perceptrón. Con esta configuración el perceptrón aplicará un valor de 1 si superamos el examen escrito y 0 si suspendemos, independientemente de los resultados de la otra pruebas. Por lo tanto, si hemos suspendido el oral pero aprobado el escrito el resultado de salida sería:

Red Neuronales_Formula3_Deep Learning Blog_Pablo Navarro

Podremos variar los resultados del modelo únicamente variando los pesos y el valor umbral. Si aumentamos el valor umbral, pasaremos a una situación en la que no solo será necesario aprobar el examen escrito. Así que, aumentando el umbral estamos haciendo que sea más complicado aprobar. Si reducimos el umbral, puede llegar el momento en el únicamente con la prueba oral podremos aprobar.

Para “escoger” los pesos y el valor umbral se sigue un proceso de corrección del error. Consiste en comenzar con unos valores iniciales aleatorios e ir modificándolos iterativamente cuando la salida obtenida no coincide con la salida observada (recordad, estamos en un aprendizaje supervisado). Por lo tanto, este aprendizaje es un método de detección del error y corrección. Solo se modifican los pesos cuando el resultado no es el ideal.

Años después, Minsky (1969) vio las limitaciones existentes en las redes basadas en perceptrones simples. Comprobó que únicamente sirven para clasificaciones linealmente separables por una frontera de decisión. Estos problemas ya se resolvían mediante métodos estadísticos, necesitados de una menor cantidad de datos. En parte debido a esto, se evolucionó hacia redes neuronales más complejas.

Junior Data Engineer @Synergic Partners

0 COMENTARIOS
DEJA TU COMENTARIO

Clientes destacados