Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Inteligencia Artificial para desarrolladores
  3. Redes neuronales
Extrait - Inteligencia Artificial para desarrolladores Conceptos e implementación en C# (2ª edición)
Extractos del libro
Inteligencia Artificial para desarrolladores Conceptos e implementación en C# (2ª edición)
1 opinión
Volver a la página de compra del libro

Redes neuronales

Presentación del capítulo

La inteligencia artificial ha tenido como objetivo, durante mucho tiempo, simular la inteligencia humana y obtener un sistema artificial con capacidad de reflexionar, de tomar decisiones y de aprendizaje.

Los investigadores se han interesado rápidamente en el funcionamiento del cerebro para reproducirlo. De este modo es como se definen las primeras neuronas artificiales por Mac Culloch y Pitts en 1943.

Actualmente, no se busca crear cerebros con toda su capacidad, sino tener sistemas capaces de resolver ciertos problemas complejos sobre los que los sistemas clásicos resultan limitados. Así es como nacen las redes de neuronas artificiales.

Este capítulo empieza explicando los orígenes biológicos, interesándose en el funcionamiento de los encéfalos y, en particular, en las neuronas.

A continuación, se presenta el Machine Learning, dominio que tiene tan solo unos pocos años, pero que cubre varias técnicas, entre ellas las redes neuronales, con las formas de aprendizaje y los tipos de problema vinculados, así como las técnicas matemáticas.

Estas técnicas tienen sus límites. Se presenta a continuación la neurona formal. Se explican el perceptrón, uno de los modelos más simples de redes, así como su aprendizaje. Un ejemplo permite comprender mejor su funcionamiento.

Las redes de tipo perceptrón...

Origen biológico

Se sabe, desde hace tiempo, que la reflexión se realiza gracias al cerebro. Este se estudia desde bastante temprano (desde el siglo XVIII).

Existen "mapas" del cerebro, que indican sus principales estructuras y sus roles asociados. Si bien no se comprende todo todavía, se sabe por ejemplo que el cerebelo es muy importante para la coordinación de movimientos o que el hipotálamo gestiona funciones importantes como el sueño, el hambre o la sed.

A diferencia de una idea preconcebida, que encontramos incluso en películas recientes como Lucy de Luc Besson aparecida en 2014, se utiliza el 100% de nuestro cerebro. Sin embargo, en un momento concreto, solo se moviliza una parte de este, en función de las necesidades. Una zona que no se utilizara jamás sufriría una fuerte degeneración y desaparecería rápidamente.

Las células más importantes del córtex cerebral son las neuronas. Estas son muy numerosas, sabiendo que el ser humano cuenta con varios cientos de millones. Estas células consumen mucha energía y son frágiles, de modo que están protegidas y alimentadas por las células gliales (90% de las células del cerebro), que no tienen, por el contrario, ningún rol en la reflexión.

Se sabe que las neuronas se comunican entre sí mediante impulsos eléctricos. En efecto, los "sensores"...

Machine Learning

El Machine Learning o ML (que se traduce en castellano por "aprendizaje automático") comprende todas las técnicas que permiten a un algoritmo aprender a partir de ejemplos, sin programación directa de la resolución.

El ML se ha convertido en un elemento trivial dentro de muchos dominios en los que se pide a un ordenador resolver problemas que no se sabe modelizar con exactitud, pero para los que sí es posible obtener ejemplos.

La mayoría de técnicas de ML son algoritmos puramente matemáticos (resultado de estadísticas), aunque también encontramos técnicas vinculadas a la inteligencia artificial. Este es el caso de los metaheurísticos o de los algoritmos genéticos, pero sobre todo de las redes neuronales (a menudo llamadas Deep Learning).

1. Formas de aprendizaje y ejemplos

El ML permite resolver distintos tipos de problemas, que se reparten en dos formas de aprendizaje principales. Se presenta también una tercera forma de aprendizaje, aunque se utiliza muy poco.

a. Aprendizaje no supervisado

El aprendizaje no supervisado no es la forma de aprendizaje más común, pero su uso se ha extendido en estos últimos años. En esta forma de aprendizaje, no existe un resultado esperado. Se utiliza esta forma de aprendizaje para realizar clustering (también llamado segmentación): se parte de un conjunto de datos y se busca determinar las clases de hechos.

En realidad, existen otras aplicaciones del aprendizaje no supervisado, aunque el clustering representa la gran mayoría de aplicaciones actuales. Podemos citar, por ejemplo, los sistemas de recomendaciones, utilizados por las tiendas on-line o la publicidad.

Podemos imaginarnos una situación en la que se posee una base de datos de clientes y en la que se busca obtener distintos perfiles en función de sus compras o presupuestos. A priori, no se sabe cuántos perfiles hay ni cuáles son. Este es un problema típico de clustering.

Vamos a tratar de maximizar la coherencia de los datos en el interior de una misma clase (que podría, por ejemplo, ser "los deportistas de 20 a 25 años") y a minimizarla entre las clases.

Imaginemos que tenemos el siguiente conjunto de datos:

images/DP7-1-NEW.png

Si tratamos de determinar clases en estos datos, sería posible definir las tres clases siguientes:

images/DP7-2-NEW.png

De esta manera, se maximiza...

Neurona formal y perceptrón

La neurona artificial, también llamada neurona formal, retoma el funcionamiento de la neurona biológica.

1. Principio

Una neurona recibe entradas y proporciona una salida, gracias a diversas características:

  • Pesos asignados a cada una de las entradas, que permiten modificar la importancia de algunas respecto a las demás.

  • Una función de agregación, que permite calcular un valor único a partir de las entradas y de los pesos correspondientes.

  • Un umbral (o sesgo), que permite indicar cuándo debe reaccionar la neurona.

  • Una función de activación, que asocia a cada valor agregado un único valor de salida dependiendo del umbral.

La noción de tiempo, importante en biología, no se tiene en cuenta en la mayoría de neuronas formales.

La neurona formal puede resumirse de la siguiente manera:

images/c07f02.PNG

A igual que con la regresión lineal y la regresión logística, la principal dificultad será el aprendizaje de los pesos (y del umbral, que puede verse como un peso particular). Las funciones de agregación y de activación se seleccionan previamente.

Es la presencia de la función de activación, si no es lineal, la que permitirá superar la condición de linealidad de los algoritmos de Machine Learning vistos previamente, así como el número de neuronas y las conexiones entre ellas (pues, en efecto, es posible tener varias neuronas, como ocurre casi siempre).

2. Red de tipo "perceptrón"

El perceptrón es la red neuronal más simple. Un perceptrón es una red que contiene p neuronas formales. Cada una está vinculada con n entradas. Esta red permite tener p salidas.

En el caso de una tarea de regresión, se tendrá una sola salida (y, por tanto, una única neurona), que proporcionará un valor real. En el caso de una tarea de clasificación, se tendrá una salida por clase, y será la salida con el valor más grande la que indicará la clase seleccionada por la red.

Cuando solo se tengan 2 clases, se utilizará una única salida, y se seleccionará la clase en función del valor binario (por lo general, será la primera clase si el valor es inferior a 0,5 y la segunda clase en caso contrario).

Con 3 neuronas y 5 entradas, se tienen 3 salidas. He aquí...

Redes feed-forward

Las redes de tipo feed-forward o en capas permiten superar las limitaciones del perceptrón. En efecto, estas no están limitadas a problemas linealmente separables.

1. Redes con capa oculta

Están compuestas de una o varias capas ocultas de neuronas, vinculadas a las entradas o a las capas anteriores, y de una capa de salida, vinculada a las neuronas ocultas. Se las denomina feed-forward pues la información no puede ir más que desde las entradas hasta las salidas, sin volver atrás.

El usuario seleccionará el número de capas ocultas y el número de neuronas de cada capa (generalmente haciendo pruebas sobre varios valores). Hablamos de Deep Learning cuando el número de capas es importante (a partir de 3 o 4 capas ocultas).

Cuantas más capas posea la red, más compleja será, permitiendo así obtener un mejor aprendizaje más rápidamente que con una o dos capas ocultas. En efecto, cada capa puede verse como una etapa suplementaria en el algoritmo (por ejemplo, para el reconocimiento de cifras, podríamos imaginar que la primera capa detecta los trazos y los bucles, que la capa siguiente permite acumular ciertas características de la primera capa, y que una tercera capa deduciría el número escrito).

He aquí un ejemplo de red con cinco entradas y tres salidas, así como dos neuronas ocultas.

images/entradas1.PNG

En este caso, es necesario ajustar los pesos y los umbrales de todas las neuronas ocultas (aquí 12 parámetros) así como los pesos y los umbrales de las neuronas de salida (9 parámetros). El problema completo contiene, entonces, 21 valores por determinar.

Las redes que utilizan neuronas de tipo perceptrón se denominan MLP (del inglés MultiLayer Perceptron), mientras que las que utilizan neuronas con función de activación gausiana se denominan RBF (del inglés Radial Basis Function). Las redes MLP y RBF son comunes, pero están siendo reemplazadas cada vez más por redes más adaptadas para las imágenes (CNN) o para las series temporales y los sonidos (SNN). Estos dos tipos de redes se verán más adelante, aunque salen del marco de este libro.

2. Aprendizaje por retropropagación del gradiente

El algoritmo de descenso por gradiente, tal y como se ha explicado antes, solo funciona para los perceptrones, que no poseen...

Otras arquitecturas

Las redes feed-forward se utilizan bastante, aunque no son las únicas redes, y existen múltiples arquitecturas que permiten trabajar en diversos problemas.

No entraremos en los detalles de su implementación, pero vamos a presentar las principales.

1. Redes neuronales de convolución

Las redes neuronales convolutivas (o de convolución, llamadas CNN en inglés) están muy bien adaptadas para trabajar con imágenes. En efecto, los píxeles no son completamente independientes, y a menudo resulta útil trabajar con zonas de la imagen.

Estas redes están compuestas de múltiples capas, pudiendo tener diversos roles. En particular, se distinguen las capas de convolución, que procesan partes de la imagen (hay que verlas como extractores de características), las capas de pooling (que combinan las salidas de las capas de convolución para detectar características de más alto nivel) y las capas más clásicas de clasificación (a menudo con la función ReLU como función de activación).

Sin embargo, estas redes son muy difíciles de entrenar partiendo de 0. Generalmente, se utiliza una red conocida entrenada previamente, y simplemente se la entrenará sobre nuestro conjunto de datos sobre varias generaciones. Este uso de una red existente se denomina transfer learning o aprendizaje por transferencia.

Obtenemos...

Dominios de aplicación

Las redes neuronales se utilizan en muchos dominios. Son una muy buena técnica cuando se cumplen los siguientes criterios:

  • Existen muchos ejemplos disponibles para el aprendizaje, o bien es posible crearlos fácilmente.

  • No existen vínculos conocidos entre las entradas y las salidas que puedan expresarse mediante funciones.

  • La salida es más importante que la forma de obtenerla, las redes neuronales no permiten tener una explicación acerca del proceso interno utilizado.

1. Reconocimiento de patrones

La tarea más común realizada por las redes neuronales es el reconocimiento de patrones.

En esta tarea, se presentan distintos patrones a la red durante el aprendizaje. Cuando se deben clasificar nuevos ejemplos, pueden reconocerse los motivos: se trata de una tarea de clasificación.

De este modo, las redes neuronales pueden reconocer caracteres manuscritos o formas. Existen aplicaciones que permiten leer matrículas en una imagen incluso aunque existan defectos de claridad o en la propia placa.

2. Estimación de funciones

La estimación de funciones o regresión consiste en asignar un valor numérico a partir de entradas, generalizando el vínculo existente entre ellas. Las entradas pueden representar características o series temporales según las necesidades.

Esto permite obtener aplicaciones para la medicina. Existen redes neuronales que reciben como...

Implementación

Los MLP (MultiLayer Perceptron) son redes muy utilizadas. Se trata de redes de tipo feed-forward, con neuronas de tipo perceptrón. La función de agregación es una suma ponderada, y la función de activación un sigmoide, lo que permite un aprendizaje por retropropagación. Se las encuentra, sobre todo, en regresión.

La red codificada a continuación posee una única capa oculta. El número de neuronas de las distintas capas, así como el número de entradas, son parametrizables.

A continuación, se presentan dos problemas:

  • El problema del XOR (o exclusivo) que es fácil de resolver y que permite comprobar que los algoritmos funcionan.

  • El problema "Abalone" que es de tipo regresión y se utiliza con frecuencia para comparar algoritmos de aprendizaje.

Salvo el programa principal, que es una aplicación Windows de tipo consola, el resto del código es compatible con el conjunto de plataformas .Net 4.5, ASP.Net 1.0 o superior, y Windows 8 o superior, lo que permite utilizarlo en la mayoría de aplicaciones.

1. Puntos y conjuntos de puntos

Los problemas utilizados con las redes neuronales requieren muchos puntos para el aprendizaje. No es concebible introducirlos a mano en el código.

Se utilizarán, por lo tanto, archivos de texto con tabulaciones como separadores.

La primera clase es DataPoint, correspondiente a un ejemplo. Este contiene un array de valores considerados como entradas y un array de valores de salida. Se agregan dos propiedades que permiten recuperar estos arrays, que no pueden modificarse.

El comienzo de la clase es el siguiente:


using System;  
   
internal class DataPoint  
{  
    double[] inputs;          
    internal double[] Inputs  
    {  
           get  
           {  
                 return inputs;  
           }  
    }  
   
    double[] outputs;  
    internal double[] Outputs  
    {  
           get  
           {  
   ...

Resumen del capítulo

Las redes neuronales se han inspirado en el funcionamiento del cerebro de los seres vivos. En efecto, se trata de simples células que no hacen sino transmitir impulsos eléctricos en función de las entradas que permiten realizar el conjunto de comportamientos y de reflexiones. Su potencia emerge del elevado número de células grises y sus conexiones.

Su principal uso se encuentra en el Machine Learning. Las principales formas de aprendizaje son el aprendizaje no supervisado (para las tareas de clustering) y el aprendizaje supervisado (para la regresión o la clasificación). Sin embargo, las técnicas puramente matemáticas no permiten resolver problemas complejos, en particular aquellos no linealmente separables. Las redes neuronales, y el Deep Learning en particular, permiten superar estos límites.

La neurona artificial, llamada neurona formal, combina una función de agregación que le permite obtener un valor único a partir de un conjunto de entradas, de los pesos de la neurona y de su sesgo, y una función de activación, que permite obtener su salida.

La función de agregación es, por lo general, una suma ponderada. La función de activación es más variada, aunque se corresponde con la función sigmoide o la función ReLU en la mayoría de casos actuales.

Las redes de una sola capa están también...