En posts pasados ya hemos hablado sobre la inteligencia artificial y sus beneficios. Ahora vamos a hablar sobre una de las técnicas que se utilizan actualmente para simular este tipo de inteligencia, las redes neuronales artificiales (RNA o ANN en inglés) o simplemente llamadas redes neuronales.
Primero vamos a intentar explicar su funcionamiento para luego poder entender con mucha mas claridad para qué nos pueden servir
Bases de las RNAs
Ciertamente el nombre nos da un indicio de cuales son las bases de esta técnica: las redes neuronales biológicas. Estas redes biológicas están conformadas por un conjunto de neuronas conectadas entre si mediante el axón y las dendritas.
gracias a esta conexión se produce la sinapsis que es la encargada de transferir los impulsos nerviosos de neurona a neurona.
Ahora bien, el aprendizaje del cerebro depende de la reorganización de estas conexiones sinápticas; es decir, que en unas dendritas habrá una mayor diferencia de potencial y por ende tendrá una mayor preferencia entre las otras conexiones para la trasmisión de datos.
Basados en este principio surgen las tan llamadas RNAs, mas bien únicamente por este principio y su estructura, debido a que su nivel de complejidad es mucho más baja que una red biológica. En las RNAs, se tienen diferentes «canales»(dendritas) estandarizadas, tras un «entrenamiento» automático algunos de estos canales van a ir cambiando su importancia (peso) provocando de esta forma que la red haya priorizado sus datos y sepa cuál es el mejor camino a tomar incluso frente a nuevas circunstancias, en otras palabras está aprendiendo.
La neurona artificial
Según la teoría de Rosenblatt decimos que la unidad fundamental del las RNAs es el percéptron (creado por el mismo Rosenblatt), el cual imita bastante a la estructura de la neurona (ver imagen)
Esta neurona artificial esta compuesta por:
- Las señales de entrada
- Pesos sinápticos
- Función de propagación o unión de sumadora
- Función de activación
- Señal de salida o simplemente salida
Para entender mejor el funcionamiento de cada componente de la neurona artificial y a la neurona en si, vamos a usar un ejemplo sencillo usado en Xataca:
Imaginemos que dos estudiante tienen la nota de sus dos exámenes y la nota final de grado; el estudiante 1 tiene mejor nota en el primer examen que en el segundo, mientras que el estudiante 2 tiene mejor nota en el segundo que en el primero. Sin embargo el estudiante 1 aprobó el curso, mientras que el estudiante 2 no lo hizo, esto nos hace inferir que el primer examen tiene mas peso (importancia) que en el segundo. Con esto podemos darnos cuenta cómo en base de datos iniciales y su salida podemos saber cómo funciona el proceso y las importancia de cada dato.
Es así cómo funciona básicamente las redes neuronales. Analizando individualmente a un estudiante, los dos exámenes son las señales de entrada(X1 y X2) ,cada una de estas señales de entrada son multiplicadas por su peso correspondiente (X1 con W1 y X2 con W2) llegando a la función de propagación que suma cada una de esta multiplicación. En caso de existir una función de activación, el valor de la función de propagación es comparado a uno previamente ya escogido (por ejemplo si nos da una suma >=5) y nos arroja un resultado de acuerdo a la desviación de este resultado, comúnmente son utilizadas la función tangente hiperbólica (para tener valores entre 1 y -1) y la función sigmoidea (para tener valores entre 1 y 0) en nuestro caso digamos que usamos la función sigmoidea y si la salida es 1, el estudiante esta aprobado y si es cero el estudiante no lo esta. En caso de existir esta función de activación, la señal de salida es la de la función de propagación
Para encontrar una relación de pesos que se ajuste a las señales de entrada y de salida, lo que hacemos es «entrenar» a nuestra neurona (o red neuronal en caso de ser mas complejo) de tal forma que encuentre el mejor ajuste, este proceso consiste en un prueba y error computarizado. Por ejemplo puede comenzar que cada examen tenga el mismo peso, W1=W2=0,5, después comienza a variar cada uno de estos pesos hasta alcanzar la combinación que cumpla con las condiciones conocidas.
Ejemplo:
Capas
Lo que hemos explicado anterior mente es cómo funciona una neurona con datos exactos, ahora imaginemos que un datos extra es añadido al perceptrón, sin embargo este necesita ser procesado con anterioridad, para este fin usamos una capa más y añadimos el concepto de una red de multicapas.
Para tener una idea básica, cada perceptrón en una capa (en donde como han podido notar existe un procesamiento de las señales de entrada) Al momento de considerarlo como una señal de entrada mas dentro de otro perceptrón, la red se convierte en una red de multicapas
Nuevamente recurro al ejemplo planteado de Xataca:
Imaginemos que ahora el profesor ha añadido un trabajo extra, dos estudiantes tienen tienen ambos buenas calificaciones en el primer examen pero el estudiante 2 tiene mejor nota en el segundo examen que el primer estudiante, pero el primer estudiante tiene una calificación de 5.0 en el trabajo extra mientras que el segundo tiene una calificación de 4.8. Sin embargo el primer estudiante aprueba el curso mientras que el segundo lo reprueba. Esto nos hace suponer que el peso del trabajo extra es muy grande, pero al momento de entrenar la red, no podrá encontrar una relación de apropiada entre los pesos de las tres calificaciones, lo que nuevamente nos hace inferir que se necesita un procesamiento previo de la señal de entrada del trabajo, se necesita una capa extra. Quedando por ejemplo así:
Donde vemos que el dato del trabajo extra es multiplicada por un peso de -1 y si esta nota es mayor que -5 el resultado es comparado con una función, por ejemplo la sigmoidea, que nos arroja una señal de salida de cero, caso contrario de 1. Esta señal de salida es considerada una señal de entrada para la red principal y tiene un peso de -10, de tal forma que si el trabajo tiene una nota menor o igual a 5, el estudiante reprobaría directamente. En este caso particular esta capa se conoce como un filtro.
Aunque lo mostrado hasta ahora parece no tener nada en especial por su sencillez, no hay por que pensarlo que lo es. La verdadera magia es cuando se tiene una gran red con muchas capas en ella, al momento de entrenarla, cada uno de estas capas comienzan a realizar el ensayo de prueba y error, y cada una comienza a ajustarse considerando a las demás de tal manera que nos arroje la señal de salida deseada. Es verdad que este proceso requiere muchos recursos de un ordenador haciendo que este entrenamiento dure tiempos muy elevados y por esa razón habían perdido popularidad después de los años 60, sin embargo la evolución constante de los ordenares han hecho reducir este tiempo considerablemente.
Usos de las RNAs
Ahora si, ya que entendemos el principio básico del funcionamiento de las redes neuronales artificiales, podemos decir que son también un paradigma de programación. Si antes un programador formulaba una base matemática para resolver un problema y posteriormente creaba un algoritmo con los parámetros necesarios con el mismo fin. Con ayuda de las redes neuronales el programador se concentra en el modelo de red a utilizar, las variables a incorporar y el pre procesamiento de los datos y ya no en el flujo de ellos y la detención de condiciones.
Modelos de RNAs
Tal como ya estas sospechando, existen muchas maneras de combinar las neuronas artificiales, y no necesariamente linealmente como hemos estado trabajando. Una forma de clasificar los modelos es mediante su topologia:
A cíclicas:
Son lineales y no tienen nodos cerrados
- Mono capa: perceptrón, adaline.
- Multi capa: perceptrón multicapa
Recurrentes:
Son ciclistas y tienen nodos cerrados : Elman, Hopfield, máquina de Boltzmann
También excité otro tipo de clasificación pero es este post no las vamos a mencionar (para mayor información ver este enlace)
Ventajas
- Aprendizaje: Mediante unos datos de entrada y salida esperada, las RNAs tienen la capacidad de aprender mediante el proceso llamada «entrenamiento»
- Auto Organización: Las RNAs se encargan del flujo de datos ellas mismas
- Flexibilidad: tras pequeños, las RNAs se adaptan rápidamente
- Tiempo Real: gracias a las propiedades anteriores, las RNAs pueden trabajar en paralelo en tiempo real, ya que están en constante aprendizaje y una buena flexibilidad
Bibliorafia:
https://es.wikipedia.org/wiki/Red_neuronal_artificial
http://www.xataka.com/robotica-e-ia/las-redes-neuronales-que-son-y-por-que-estan-volviendo
No se han encontrado comentarios