Skip to content

Inteligencia artificial neuronal

inteligencia artificial
Rate this post

Recientemente, las redes neuronales están regresando a la actualidad debido a los logros que están logrando. Por ejemplo, Google ha logrado derrotar a su propio reCAPTCHA con redes neuronales, en Stanford han logrado generar subtítulos automáticamente…. Estos objetivos son impresionantes y se acercan cada vez más a la idea original de reproducir el funcionamiento del cerebro humano en un ordenador.

¿Pero en qué consisten estos modelos? ¿Cómo puede una computadora imitar el proceso de aprendizaje y terminar desarrollando una “cosa” que funciona?

Como funcionan las redes neuronales

A pesar de su nombre, las redes neuronales no tienen un concepto muy complicado detrás de ellas. El nombre, como se puede imaginar, proviene de la idea de imitar el funcionamiento de las redes neuronales de los organismos vivos: un conjunto de neuronas conectadas entre sí y trabajando juntas, sin que exista una tarea específica para cada una de ellas. Con la experiencia, las neuronas crean y refuerzan ciertas conexiones para “aprender” algo que permanece fijo en el tejido.

Sin embargo, por muy bonito que esto suene, el enfoque biológico no ha sido particularmente útil: las redes neuronales se han estado moviendo para centrarse en las matemáticas y la estadística. Se basan en una idea simple: dados algunos parámetros hay una manera de combinarlos para predecir un determinado resultado. Por ejemplo, conociendo los píxeles de una imagen habrá una forma de saber qué número está escrito, o conociendo la carga de servidores de un Centro de Procesamiento de Datos (CPD), su temperatura y así sucesivamente habrá una forma de saber cuánto van a consumir, como hizo Google. El problema, por supuesto, es que no sabemos cómo combinarlos.

Las redes neuronales permiten buscar la combinación de parámetros que mejor se adapte a un problema determinado.
Las redes neuronales son un modelo para encontrar esa combinación de parámetros y aplicarla al mismo tiempo. En un lenguaje adecuado, encontrar la combinación que mejor se adapte es “entrenar” la red neuronal. Una red ya formada puede utilizarse para hacer predicciones o clasificaciones, es decir, para “aplicar” la combinación.

Para entender bien cómo funciona esta red, vamos con un ejemplo. Supongamos que son estudiantes de una clase en la que el profesor no ha dicho exactamente cómo va a poner las notas. Para empezar, supongamos que sólo has hecho dos exámenes y que tienes la nota para cada uno de ellos y el examen final.

¿Cómo utilizamos una red neuronal para saber cuánto vale cada prueba?

Aquí bastará la unidad fundamental de la red neural: el perceptrón. Un perceptrón es un elemento que tiene varias entradas con un peso determinado cada una. Si la suma de estas entradas para cada peso es mayor que un número determinado, la salida del perceptrón es una. Si es menor, la salida es un cero.

En nuestro ejemplo, las entradas serían los dos resultados de las pruebas. Si la producción es una (es decir, la suma de las calidades por su peso correspondiente es superior a cinco), se trata de un pase. Si es cero, suspenso. Los pesos son lo que tenemos que encontrar con el entrenamiento. En este caso, nuestro entrenamiento consistirá en comenzar con dos pesos aleatorios (por ejemplo, 0,5 y 0,5, el mismo peso para cada prueba) y ver en qué consiste la red neuronal para cada estudiante. Si falla en cualquier caso, iremos ajustando los pesos poco a poco hasta que todo esté bien ajustado.

Por ejemplo, si un estudiante con una muy buena nota en el segundo examen ha reprobado el curso, bajaremos el peso del segundo examen porque claramente no influye demasiado. Poco a poco iremos encontrando los pesos que se ajustan a las notas que el profesor puso. La idea del ajuste o retroalimentación es adaptar la red a la información “oculta” que contiene los datos que pasamos a aprender.

Como dije antes, este es un ejemplo sencillo. Tal vez queramos complicarlo aún más poniendo más pruebas (más nodos de entrada) o queriendo obtener más resultados, como un perceptrón cuya salida es una si el estudiante tiene un cuadro de honor.

Multiplicando el poder: redes multicapa

El ejemplo que di anteriormente, pero no se puede decir que sea demasiado poderoso. Pero quizás es demasiado simple. ¿No dijimos al principio que las redes neuronales eran un grupo de neuronas conectadas entre sí? ¿Cómo se consigue esa “conexión” en las redes neuronales?

El concepto que nos falta aquí es el de capas. Y para explicarlo vamos a seguir con nuestro ejemplo del profesor que pone notas sin decir cómo, añadiendo una obra que tenía que ser entregada.

Resulta que hay una situación curiosa. Hay dos alumnos que tienen la misma nota en los exámenes, dos decenas, pero uno tiene un 7 en el trabajo y el otro un 4. El 7 ha aprobado el curso, pero el 4 no. Hay un estudiante que tiene un 10 en el trabajo y 4.99 en los dos exámenes y que está suspendido.

Podemos intentar entrenar una red neuronal como antes de todo lo que queremos en esta situación que no va a funcionar bien. Puede funcionar en muchos casos, pero no va a ser perfecto. Y parece que la nota de la obra no influye a menos que usted la suspenda, en cuyo caso se le suspende directamente. Es un filtro, un uno o un cero que tenemos que sacar en la red neuronal antes de poder dar el resultado de aprobado o suspendido en el curso…. Ya deberías ver dónde van los disparos.

¿Una nueva edad de oro para las redes neuronales?

Las redes neuronales no son una idea nueva. Se remontan a las décadas de 1940 y 1950, cuando comenzaron a publicarse los primeros conceptos. Sin embargo, nunca tuvieron un gran éxito, más que nada porque se necesita una cantidad significativa de recursos informáticos para entrenar y ejecutar una red neuronal con buenos resultados.

En los últimos años se han producido grandes avances gracias a la mejora de los ordenadores y al uso de las GPUs para este tipo de cálculos. Recientemente en Xataka estuvimos hablando de subtítulos generados por ordenador gracias a una red neuronal de convolución (para el reconocimiento de imágenes) junto con una red neuronal recurrente para formar frases. Los investigadores de Stanford utilizaron tarjetas GPU para entrenar y ejecutar este tipo de red neuronal en un tiempo razonable.

Algo parecido hizo Google con Street View: una red neuronal convolucional que logró una precisión del 96% al reconocer los números de las calles en las imágenes tomadas por sus coches. Los Mountain Viewers están bastante enamorados de las redes neuronales, de hecho: también las utilizaban para mejorar el reconocimiento de voz Android o para ahorrar electricidad en sus centros de datos.

Las redes neuronales parecen incluso acabar dominando uno de los juegos a los que se resisten los ordenadores: el juego del Go. En la Universidad de Edimburgo, los investigadores han logrado usar redes convolucionales para detectar patrones en tablas y tratar de hacer el mejor movimiento con considerable efectividad: el 90% de los juegos ganados contra GNU Go y el 10% contra Fire, dos de los programas que mejor juegan a Go. Aunque no parezca mucho, hay que tener en cuenta que ambos exploran un buen número de movimientos posibles para ver cuál le da más ventaja. La red neural sólo observa el estado actual de la junta y emite un veredicto en mucho menos tiempo.
Por supuesto, estas redes tampoco son una panacea. Como curiosidad, los investigadores utilizaron una red neuronal para generar imágenes que engañaban a otra red neuronal diseñada para reconocer objetos. Entonces, lo que a nosotros nos parece una imagen aleatoria, a la red neural, es un bikini o un armadillo. Es parte del problema del sobreajuste: las redes que se comportan muy bien, por ejemplo, o los datos similares, pero con datos muy diferentes, dan resultados absurdos.

Sea como fuere, se trata de un campo muy interesante que promete muchos avances a corto plazo, especialmente en el reconocimiento de imágenes y sonidos. Estaremos atentos para ver qué sorpresas nos tienen reservadas.

Red neuronal recurrente 

Las redes neuronales recurrentes son una herramienta muy apropiada para modelar series temporales. Es un tipo de red con una arquitectura que implementa una cierta memoria y, por lo tanto, un sentido temporal. Esto se consigue implementando unas neuronas que reciben como entrada la salida de una de las capas e inyectan su salida en una de las capas de un nivel anterior a ella. En este artículo voy a mostrar cómo utilizar de manera sencilla dos redes neuronales de este tipo, las de Elman y las de Jordan, utilizando el programa R.

En las redes de Elman, las entradas de estas neuronas, se toman de las salidas de las neuronas de una de las capas ocultas, y sus salidas se vuelven a conectar en las entradas de esta misma capa, lo que proporciona una especie de memoria sobre el estado previo de esa capa.

Redes neuronales estadistica

Las redes neuronales (también conocidas como sistemas conectivos) son un modelo computacional basado en un gran conjunto de unidades neuronales simples (neuronas artificiales) de una manera aproximadamente análoga al comportamiento observado en los axones de las neuronas en los cerebros biológicos1. La información de entrada pasa a través de la red neuronal (donde se somete a varias operaciones) produciendo valores de salida.

Cada neurona está conectada a otras a través de enlaces. En estos enlaces el valor de salida de la neurona anterior se multiplica por un valor de peso. Estos pesos en los eslabones pueden aumentar o inhibir el estado de activación de las neuronas adyacentes. Del mismo modo, a la salida de la neurona, puede haber una función limitante o umbral, que modifica el valor del resultado o impone un límite que debe ser excedido antes de propagarse a otra neurona. Esta función se conoce como función de activación.

Estos sistemas aprenden y se forman por sí mismos, en lugar de estar programados explícitamente, y sobresalen en áreas donde la detección de soluciones o características es difícil de expresar con la programación convencional. Para realizar este aprendizaje automático, se suele intentar minimizar una función de pérdida que evalúa la red en su conjunto. Los valores de los pesos de las neuronas se actualizan para reducir el valor de la función de pérdida. Este proceso se lleva a cabo por propagación hacia atrás.

El objetivo de la red neuronal es resolver los problemas de la misma manera que el cerebro humano, aunque las redes neuronales son más abstractas. Los proyectos de redes neuronales modernas tienden a funcionar desde unos pocos miles hasta unos pocos millones de unidades neuronales y millones de conexiones que, aunque hay muchos órdenes, son todavía de una magnitud menos compleja que la del cerebro humano, más bien cercana a la potencia de cálculo de un gusano.

La nueva investigación cerebral a menudo estimula la creación de nuevos patrones en las redes neuronales. Un nuevo enfoque consiste en utilizar conexiones que se extienden mucho más allá de las capas de procesamiento y las enlazan, en lugar de estar siempre ubicadas en neuronas adyacentes. Otra investigación está estudiando los diferentes tipos de señales que propagan los axones a lo largo del tiempo, como el aprendizaje profundo, que interpola una mayor complejidad que un conjunto de variables booleanas que simplemente se activan o desactivan.

Las redes neuronales se han utilizado para resolver una amplia variedad de tareas, como la visión por ordenador y el reconocimiento de voz, que son difíciles de resolver utilizando la programación basada en reglas ordinarias. Históricamente, el uso de modelos de redes neuronales marcó un cambio de dirección a finales de los años ochenta a un alto nivel, caracterizado por sistemas expertos con conocimientos incorporados en reglas if-then-then, a un bajo nivel de aprendizaje automático, caracterizado por conocimientos incorporados en los parámetros de un modelo cognitivo con algún sistema dinámico.

Imagenes de inteligencia artificial neuronal

problemas tecnologia

Videos de inteligencia artificial neuronal