¿Qué diantres es una red neuronal? Viajemos a la Inteligencia Artificial



Ultimamente el "palabro" red neuronal se está escuchando por doquier, esto se debe a la fama y éxito de la inteligencia artificial, su resurgimiento.

Resulta ser que la Inteligencia Artificial y las Redes Neuronales se inventaron en el siglo XX. Bueno, las Redes Neuronales, una versión primitiva de ellas llamada el "Perceptrón", consistentes en una sola neurona. (La capacidad de cómputo no permitía más y porque no se les ocurriría la idea).

Esa neurona, aunque demostraba bastante habilidad con los cálculos o aprendizaje, estaba muy limitada, podía hacer operaciones muy lineales y además muy simples.


Esta decepción hizo caer a la I.A en el olvido, por lo que se entró en un Invierno de la I.A.

Hasta esta década que vuelve a resurgir gracias a avances importantes. Como la simple idea de concatenar más de una neurona en una red neuronal. Formando columnas, que a su vez se agrupan en capas (cada capa moldea una información más compleja).


Puede que esto de las redes neuronales parezca muy complejo. Pero si se explica con la mayor sencillez del mundo, lo puede pillar hasta un niño chico. Al menos lo intentaré.

" Andrés suele escribir muchas veces las palabra "edición especial" (porque sí). Se trata de una palabra que va una detrás de la otra.

Andrés escribe "edición"

Resulta ser que en la parte de arriba del teclado del smatphone, salen tres palabras "sugeridas", entre ellas, "especial", recalcada en negrita."

¿Y esto por qué diantres pasa?¿Acaso su smartphone le lee la mente?¿Es inteligente quizá?


NO del todo
Esto se debe a nuestras amigas las Redes Neuronales.

Como antes mencioné, Andrés, tiende a escribir muchas veces la palabra especial después de la de edición. Es decir, por estadística misma, la palabra especial tiene muchas probabilidades de ir tras edición. La red lo sabe a partir de que Andrés lo haya escrito muchas veces y se ha ajustado para poder predecirlo.

Cada neurona de la red, basicamente transforman unos valores o números de entrada en otros de salida, lo que hace que se modifique es una función, un vector.
Esto se entrena basandose en la probabilidad y se pasa a la siguiente capa de neuronas que repite el proceso.

También está el sesgo que mueve arriba o abajo la función, y otra cosa llamado la función de activación .... En fin, incluído, tiene una complicadísima explicación matemática con muchas fórmulas o la manera de programarlo... buff. Pero todo eso no nos interesa para nada si queremos entenderlo a grosso modo, (solo si queremos ser programadores claro).

¿Qué aplicaciones tiene esto?¿Como funciona?

Pues seguimos con los ejemplos.
Queremos una red que nos genere caras. Así que le daremos muchos datos, muchísimos. Esos datos son fotos de caras de personas, de distinto género, edad, complexión y raza.

Al haber "observado" esos rostros, la red entiende que por probabilidad, las caras son ovaladas y tienen dos ojos (aunque haya alguien tuerto, es muy improbable). Debajo de esos dos ojos hay una nariz y debajo de la nariz, una boca. Esto se cumple un 99.9% de las veces. Aunque hay cambios (piel clara, oscura, pecas...) que se cumplen a veces sí otras veces no (40% de probabilidad de haber una cara de piel oscura).

Todo esto es una representación de una cara, y se llama "espacio latente", una manera chula de decir "la idea de una cara" (en este ejemplo).

Las capas iniciales de la red harán cosas simples, como definir las formas básicas, unas formas borrosas e ilegibles a las que darán forma en las capas siguientes, como ponerle ojos, nariz y boca, o decidir su tono de piel entre otras cosas. Es como cuando dibujas, empiezas por lo general y le das detalles progresivamente.


La red ha "pintado" una cara. ¡Un momento! ¡La cara tiene dos boca!¡Menuda monstruosidad!

Lo ha echo mal, por lo que le tenemos que dar una señal de error, esa señal, reajustará la red y pondrá un sesgo, algo que no se debe cumplir. El error se representa con un porcentaje, es decir, una función de error.

Y que hacemos, ¿Tocamos las primeras capas para reducir el error?¡Claro que no!, ¿Cómo se te ocurre? Eso descuajeringaría toda la red. Entonces... que se hace.

Se aplica la "retropropagación hacia atrás" que es otra manera de decir que hay que mover el error para atrás desde el final hacia el principio. Ese error se va minimizando (altera más las capas finales que las primeras).

Como anécdota, la red neuronal que se encargaba de modelar caras lo hacía de una manera mediocre, porlo que tenía otra red neuronal que tomando las caras que ha generado la primera, dice si estas están bien o mal (más exáctamente, reconoce el resultado como cara existente o cara artificial), dándo una señal de error que hará que la primera red se automejore. Esto se basa en un modelo de aprendizaje reforzado del que hablaré en otro artículo.


Vamos a acabar el primer artículo de redes neuronales con otro ejemplo práctico. Además este cuemto explicará un buen ejemplo de las limitaciones de las redes.

"Queremos que la red escriba un cuento del famoso escritor ruso Elijah Ivanov (no lo busqueis, no existe, es solo un ejemplo práctico)

Después de programar una red neuronal con todas sus capas y todas sus filas, le suministramos los DATOS. Estos datos son los cuentos de Ivanov, (si queremos que le imite solo debemos darle cuentos suyos).

La red aprenderá normas estilísticas del autor (por ejemplo, usa en abundancia el pretérito perfecto del subjuntivo, que tiende a hablar del periodo zarista ruso, que tiene debilidad por la naturaleza, que usa muchas metáforas y que muchos personajes mueren. 
También, normas gramaticales, como que al lado de un adjetivo suele haber un sustantivo, que la primera palabra que vaya tras un punto es una mayúscula, etcétera...

La probabilidad de que hable del periodo zarista ruso es muy alta, pero de que hable de viajes espaciales, es nula, ya que en el banco de datos que le hemos suministrado a la red, no hay registros de relatos de viajes espaciales.



Vamos a ver que ha salido de la red...
Y pondrémos una cara larga, La red ha escrito un sindiós, una sarta de disparates y pelotudeces que ningún sentido tiene. ¿Qué ha salido mal?
Si nos fijamos, todas las normas que le hemos dado, cumplen las reglas del autor (tiempos verbales, metáforas, periodo zarista...) y las reglas gramaticales inferidas, todo al más puro estilo del autor, pero carente de sentido alguno. ¿Por qué?

Porque la red no entiende conceptos. No sabe que significan las palabras, simplemente escupe frases con las tendencias que ha cogido, pero sin entenderlas en un modo significativo. Podrá mencionar la nieve de las estepas rusas, pero no tiene ni pajolera idea de que es la nieve.

La red por sí sola no entiende lo que significan las palabras, (si lo entendiera perfectamente sería una I.A general), para ello habría que conbinarla con una barbaridad de algoritmos más.

Pero nosotros simplemente queríamos algo que escribiera los cuentos de Ivanov, no una I.A general.

La solución es pedirla que genere relatos una y otra vez hasta dar con uno que tenga un poco de sentido. ¿Quién elige eso? Los humanos obviamente".

Y esto es solo el inicio de lo que abarca la Inteligencia Artificial. Espero que me haya explicado lo mejor posible y... ¡Nos vemos en la Astronave del Androide!


Continuar 

Comentarios

Entradas populares de este blog

Los robots sexuales

Prometeus

Trilogía "The Sprawl"