ANN - Tech & Artificial Intelligence

Redes neuronales artificiales, de los videojuegos a la salud

Los algoritmos de Redes Neuronales Artificiales aprenden cómo tiene que ser la relación entre aquello que entra y el resultado final (Imagen AdobeStock).

Las redes neuronales artificiales son aplicables en escenarios inimaginables que van desde los videojuegos, el sistema de salud, hasta modelos de negocios.

Cómo funcionan las redes neuronales artificiales

La manera tradicional algorítmica en la que se procesa la información en el mundo digital actual es mediante la creación de programas que son de secuencia de pasos, como recetas de cocina, de lo que hay que hacer con los datos para obtener una salida particular. 

Leé también: En busca de una Inteligencia Artificial ética que nos devuelva la fe en nosotros mismos

Por ejemplo, para hacer un cálculo de cómo convertir el sueldo que percibe una persona en bruto a neto, una cuenta específica va calculando deducciones, una tras otra según la legislación vigente hasta que se llega al resultado final.

Las redes neuronales artificiales son aplicables en escenarios inimaginables que van desde los videojuegos, el sistema de salud (Imagen Adobe Stock).Por: solvod - stock.adobe.com

Los algoritmos de RNA (Redes Neuronales Artificiales) cumplen con la siguiente dinámica: dada una serie de datos, estos procesadores aprenden cómo tiene que ser la relación entre aquello que entra y el resultado final de toda esa serie de información; de manera que el error en la salida sea lo más pequeño posible. 

Este aprendizaje automático implica ajustar parámetros internos en base a los datos. Es decir, se procesa cuál tiene que ser el producto deseado en base a información existente para interpolar o extrapolar datos nuevos nunca vistos.

Las redes neuronales resuelven esto mediante la introducción de un modelo de neurona simple que se encarga de realizar un promedio ponderado seguido por una operación de umbralización no lineal, es decir, construyendo capas sucesivas jerárquicas de procesamiento. Detrás de esta idea, el sistema no es más que un simple proceso de optimización matemática.

La incidencia de los videojuegos

Un aspecto interesante que para muchos resulta desconocido es que el área ha recibido un gran impulso de parte de la industria de videojuegos mediante el desarrollo de GPU (procesadores gráficos). Para este sector, las operaciones matemáticas que le ayudan a estos algoritmos a aprender y ejecutar, son intrínsecamente las mismas que permiten a un lindo personaje de Fortnite mover y rotar en un mundo en 3D.

Este descubrimiento significó un tremendo éxito de estas técnicas sobre todo en el procesamiento de imágenes y de lenguaje natural. Los avances logrados abrieron una caja de pandora de áreas donde se volvió posible implementar automatismos y a su vez digitalizar situaciones. En ese sentido, el impacto en cualquier modelo de negocios es impresionante, porque no sólo se abre un enorme abanico de nuevas oportunidades (inimaginables años atrás), sino que también plantea una fuerza de disrupción en muchos modelos actuales.

Las redes neuronales artificiales tienen cada vez más impacto en nuestra cotidianidad.

Las redes neuronales artificiales en la Argentina

Hoy grandes compañías de TI y de Transformación Digital de la Argentina usan, aplican e invierten en estas tecnologías desde hace tiempo. El rico ambiente emprendedor local, potenciado por nuestras excelentes universidades, cultiva startups que están explorando soluciones tecnológicas de este estilo. 

Existen empresas que ofrecen servicios de chatbots específicos para compañías, o soluciones inteligentes para la salud a partir de estos mismos procesos.

Las plataformas y tecnologías ya existen y llegaron para quedarse, depende de cada industria o emprendedor saber utilizarlas a su favor para una mejor performance de su negocio.

Pagos con tarjeta directamente en el iPhone

Apple está trabajando en un nuevo servicio de pagos que permitirá a los iPhone aceptar pagos con tarjeta directamente en el dispositivo sin necesidad de ningún hardware adicional, según Bloomberg. Una característica muy interesante que actualmente debe apoyarse en servicios, y dispositivos, de terceros, como Squere Reader, por ejemplo.

Una función que llegará mediante una actualización de software

Según Mark Gurman, tanto los usuarios particulares como los pequeños negocios serán capaces de aceptar los pagos. Estos se llevarán a cabo tan solo acercando la tarjeta de crédito o débito al iPhone y dejando que el chip NFC de los teléfonos haga su parte.

Aquí conviene recordar la compra de Mobeewave en 2020, una startup que creó justamente una tecnología para que los teléfonos inteligentes pudieran aceptar pagos mediante NFC. Ahora, parece que la compra de unos 100 millones de dólares va dando sus frutos, pues Apple competirá directamente con Square, el líder actual en este tipo de tecnología.

"La próxima función convertirá el iPhone en un terminal de pago, permitiendo a los usuarios como paradas de comida y estilistas aceptar pagos con solo tocar una tarjeta de crédito u otro iPhone en la parte posterior de su dispositivo".

"No está claro si la opción de aceptación de pagos se marcará como parte de Apple Pay, aunque el equipo que trabaja en la función ha estado trabajando dentro de la división de pagos de Apple desde que fue traído de Mobeewave, dijeron las fuentes. Tampoco se sabe si Apple tiene la intención de asociarse con una red de pago existente para la función o iniciarla solo".

Una función que llega con una actualización de software, sin hardware adicional. 

Gracias a este sistema, los pequeños comercios podrían simplificar su forma de cobro a tan solo un iPhone. Un recurso de lo más interesante para, por ejemplo, puestos de comida en la calle o servicios a domicilio. Podría, incluso, permitir algo tan simple como recibir un pago de un amigo con el que hay que repartir el importe de una comida: uno teclea la cantidad en su iPhone y el otro acerca el suyo con Apple Pay activado para pagar.

Por ahora desconocemos si esta funcionalidad vendría ligada a algún servicio de procesamiento de pagos. De ser así, quedaría por ver si Apple se asociará con alguna red comercial existente o lanzará la suya propia. Lo que sí sabemos es que esta funcionalidad, según escribe Gurman, llegará mediante una actualización de software "en los próximos meses".

Si bien iOS 16 será presentado, esperamos, en unos cuatro meses, en junio de este año, su lanzamiento oficial queda aún a nueve meses de distancia, en septiembre u octubre. Esto nos lleva a pensar que esta característica bien podría llegar con iOS 15.4, una versión que, lanzada ayer la 15.3, debería empezar el ciclo de betas pronto.

¿Efectivo con Apple Pay? Claro, solo tenemos que acercarnos a un cajero 

Habrá que ver si este servicio se centrará en Estados Unidos o se expandirá a otros países y, de hacerlo, a qué velocidad. Lo que sí está claro es que algo tan simple como poder aceptar un pago tocando una tarjeta de crédito o débito o un dispositivo Apple Pay en nuestro iPhone abre las puertas a muchas posibilidades.

Las redes neuronales: una definición

Últimamente las redes neuronales están volviendo a la actualidad por los logros que están consiguiendo. Por ejemplo, Google ha logrado derrotar a su propio reCAPTCHA con redes neuronales, en Stanford han conseguido generar pies de fotos automáticamente... Metas bastante impresionantes y que cada vez se acercan más a esa idea original de reproducir el funcionamiento del cerebro humano en un ordenador.

Ahora bien, ¿en qué consisten estos modelos? ¿Cómo puede imitar un ordenador el proceso de aprendizaje y acabar desarrollando una "cosa" que funciona? Hoy vamos a profundizar un poco en este tema que tanta atención está logrando, y vamos a empezar, como siempre, por el principio.

¿Cómo funciona una red neuronal?

A pesar de su nombre, las redes neuronales no tienen un concepto demasiado complicado detrás de ellas. El nombre, como podéis imaginar, viene de la idea de imitar el funcionamiento de las redes neuronales de los organismos vivos: un conjunto de neuronas conectadas entre sí y que trabajan en conjunto, sin que haya una tarea concreta para cada una. Con la experiencia, las neuronas van creando y reforzando ciertas conexiones para "aprender" algo que se queda fijo en el tejido.

Ahora bien, por bonito que suene esto, el enfoque biológico no ha sido especialmente útil: las redes neuronales han ido moviéndose para tener un foco en matemáticas y estadística. Se basan en una idea sencilla: dados unos parámetros hay una forma de combinarlos para predecir un cierto resultado. Por ejemplo, sabiendo los píxeles de una imagen habrá una forma de saber qué número hay escrito, o conociendo la carga de servidores de un Centro de Procesamiento de Datos (CPD), su temperatura y demás existirá una manera de saber cuánto van a consumir, como hacía Google. El problema, claro está, es que no sabemos cómo combinarlos. 

Las redes neuronales permiten buscar la combinación de parámetros que mejor se ajusta a un determinado problema.

Las redes neuronales son un modelo para encontrar esa combinación de parámetros y aplicarla al mismo tiempo. En el lenguaje propio, encontrar la combinación que mejor se ajusta es "entrenar" la red neuronal. Una red ya entrenada se puede usar luego para hacer predicciones o clasificaciones, es decir, para "aplicar" la combinación.

Para entender bien cómo funciona esta red vamos a ir con un ejemplo. Supongamos que sois alumnos 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 habéis hecho dos exámenes y tenéis la nota de cada uno de ellos y la final. 

La unidad básica de la red neuronal: el perceptrón. Las entradas son las dos notas, n1 y n2, cada una con su correspondiente peso wn (lo que hay que encontrar). La salida, nf, será 1 si está aprobado y 0 si se va a septiembre.

¿Cómo usamos una red neuronal para saber cuánto vale cada examen? Aquí nos bastará con la unidad fundamental de la red neuronal: el perceptrón. Un perceptrón es un elemento que tiene varias entradas con un cierto peso cada una. Si la suma de esas entradas por cada peso es mayor que un determinado número, la salida del perceptrón es un uno. Si es menor, la salida es un cero.

En nuestro ejemplo, las entradas serían las dos notas de los exámenes. Si la salida es uno (esto es, la suma de las notas por su peso correspondiente es mayor que cinco), es un aprobado. Si es cero, suspenso. Los pesos son lo que tenemos que encontrar con el entrenamiento. En este caso, nuestro entrenamiento consistirá en empezar con dos pesos aleatorios (por ejemplo, 0.5 y 0.5, el mismo peso a cada examen) y ver qué resultado da la red neuronal para cada alumno. Si falla en algún caso, iremos ajustando los pesos poco a poco hasta que esté todo bien ajustado. 

Por ejemplo, si un alumno con muy buena nota en el segundo examen ha suspendido el curso, bajaremos el peso del segundo examen porque claramente no influye demasiado. Poco a poco acaberemos encontrando los pesos que se ajusten a las notas que puso el profesor. La idea del ajuste o retroalimentación es ir adaptando la red a la información "oculta" que tienen los datos que le pasamos para que aprenda.

Como decía antes, esto es el ejemplo simple. Quizás queramos complicarlo más, poniendo más exámenes (más nodos de entrada) o queriendo sacar más resultados, como pueda ser un perceptrón cuya salida sea uno si el alumno tiene matrícula de honor. 

Multiplicando la potencia: redes multicapa

El ejemplo que he puesto antes funciona pero no se puede decir que sea demasiado potente. Pero quizás es que es demasiado simple. ¿No decíamos al principio que las redes neuronales eran un grupo de neuronas conectadas entre sí? ¿Cómo se logra esa "conexión" en las redes neuronales?

El concepto que nos falta aquí es el de las capas. Y para explicarlo vamos a seguir con nuestro ejemplo del profesor que pone notas sin decir cómo, añadiendo un trabajo que había que entregar.

Resulta que se da una situación curiosa. Hay dos alumnos que tienen la misma nota en los exámenes, dos dieces, pero uno tiene un 7 en el trabajo y otro un 4. El del 7 ha aprobado el curso, pero el del 4 no. Hay un alumno que tiene un 10 en el trabajo y 4.99 en los dos exámenes y que está suspenso. 

Podemos intentar entrenar una red neuronal como la de antes todo lo que queramos en esta situación que no va a funcionar bien. Es posible que funcione en muchos casos, pero no va a ser perfecta. Y es que parece que la nota del trabajo no influye salvo que lo suspendas, en cuyo caso estás suspenso 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íais ver por dónde van los tiros.

Efectivamente: necesitamos más capas. Necesitamos un perceptrón intermedio que nos diga si el trabajo está aprobado o no, y contar eso en el perceptrón de salida. Una posiblidad sería una red como la siguiente:

El primer perceptrón mira si la nota del trabajo multiplicada por menos uno es mayor que menos cinco (o, lo que es lo mismo, si la nota es menor que cinco). Si lo es, entonces su salida es uno. Al multiplicarla por menos diez en la entrada del segundo perceptrón, forzará siempre un suspenso. Si el trabajo está aprobado, la salida del primer perceptrón será 0 y no afectará a la media de los exámenes.

¿Qué hemos logrado con esto? O, más generalmente, ¿para qué nos sirven las capas? Lo que hemos logrado ha sido añadir información que no estaba antes. Cogemos los datos de entrada, los exploramos y sacamos las características que mejor nos ayuden a entender qué está pasando. 

Lo más interesante de las capas es algo que aquí no hemos visto. En el ejemplo he puesto otra capa muy burdamente, pero lo que se suele hacer es poner varias con varios nodos, cada uno conectado a todas las entradas anteriores. Lo bueno viene cuando, durante el proceso de aprendizaje, cada capa "aprende" a encontrar y detectar las características que mejor ayudan a clasificar los datos. En nuestro ejemplo, durante el ajuste la primera capa aprendería que los alumnos con el trabajo suspenso suspenden el curso. Si cogiésemos una red para detectar números escritos a mano, puede que las capas ocultas aprendiesen a detectar trazos rectos o curvados que sirvan para decidir si estamos ante un uno o un ocho, por ejemplo.

Más allá de perceptrones: sigmoides, redes profundas y redes convolucionales

En rojo, la función "escalón". En azul, la sigmoide, una aproximación más suave pero con la misma idea.

Como siempre, hasta ahora nos hemos centrado en simplificaciones para entender bien los conceptos de redes neuronales. En la realidad, las cosas se complican bastante. Por ejemplo, se dejan de usar perceptrones para usar otras "neuronas" con un comportamiento más suave, usando funciones como la sigmoide. La idea es que pequeños cambios en los pesos provoquen pequeños cambios en la salida de la red, para así poder hacer más "fácil" el aprendizaje.

Las capas también se complican. Nos podemos encontrar varias capas intermedias con varias neuronas cada una, llegando a lo que llaman "redes neuronales profundas". La idea es que con más capas con más neuronas cada una se pueden mejorar las predicciones en conjuntos de datos más complicados. Este artículo, por ejemplo, explica desde un punto de vista visual y matemático cómo afectan las multiples capas y unidades al funcionamiento de la red neuronal.

El siguiente paso son redes convolucionales, que están funcionando muy bien en reconocimiento de voz y procesamiento de imágenes. En una red neuronal como las que hemos visto antes, pondríamos una neurona para cada píxel de una imagen y después pondríamos varias capas con varias neuronas, todas conectadas entre sí, para tratar de encontrar un número en una foto, por ejemplo. El problema es que no es demasiado efectivo (imaginaos todos los pesos que habría computar para una red que acepte imágenes de 1920x1080 píxeles).

La idea de las redes convolucionales es tratar de buscar características locales en pequeños grupos de entradas (en el caso de las imágenes, de píxeles), como puedan ser bordes o colores más o menos homogéneos. Es la misma idea que comentábamos cuando introducíamos las capas unos párrafos más arriba, pero con una variación: buscamos características no en toda la imagen sino sólo en pequeñas regiones. Además, buscamos siempre detectar la misma característica en todos los grupos, por lo que podemos repetir esa estructura y reducir los ajustes que tenemos que hacer.

Para llevar a cabo esta idea, ponemos un mismo grupo de neuronas por cada grupo de entradas (por ejemplo, un cuadrado de 3x3 píxeles en una imagen o una secuencia de 4 mediciones en un archivo de sonido). La idea es que todos los elementos que metamos en la capa (llamada capa de convolución) tienen los mismos pesos por cada entrada, y se reduce considerablemente el número de parámetros. Si metemos más capas, la red neuronal podrá descubrir más y más complejas características de la imagen: se puede empezar por colores o bordes orientados y acabar con capas que se activan con formas circulares o cuadradas, por poner un ejemplo. 

Después de las capas de convolución se suele poner otra red neuronal "tradicional", que ahora tendrá más fácil el trabajo: no tiene que valorar cada píxel por separado sino que mira a un conjunto de características de alto nivel de la imagen. Ya no se trata de decidir si la imagen es un coche sabiendo que el píxel 1208 es amarillo y el 1209 es verde, sino quizás sabiendo que hay una forma rectangular en la imagen con dos formas circulares en la parte inferior. De nuevo, se trata de extraer la información "oculta" en la entrada para tratar de encontrar qué es lo que define esos datos.

¿Una nueva época dorada para redes neuronales?

Las redes neuronales no son una idea nueva. Datan de los años 40 y 50, cuando se empezaron a publicar los primeros conceptos. Sin embargo, nunca tuvieron un gran éxito, más que nada porque se necesita una cantidad importante de recursos de un ordenador para entrenar y ejecutar una red neuronal con buenos resultados.

En los últimos años se han conseguido grandes avances gracias a la mejora de los ordenadores y al uso de GPUs para este tipo de computaciones. Hace poco hablábamos de los pies de foto generados por ordenador gracias a una red neuronal de convolución (para el reconocimiento de imagen) junto con una red neuronal recurrente para formar las frases. Los investigadores de Stanford usaron tarjetas GPU para poder entrenar y ejecutar este tipo de redes neuronales en un tiempo razonable. 

Reconocimiento de números, de voz, de objetos en imágenes... las redes neuronales están empezando a resolver problemas que se le escapaban a los ordenadores.

Algo parecido montó Google con Street View: una red neuronal convolucional que lograba una precisión del 96% a la hora de reconocer números de calle en las imágenes que toman sus coches. Los de Mountain View están bastante enamorados de las redes neuronales, de hecho: también las usaron para mejorar el reconocimiento de voz de Android o para ahorrar electricidad en sus centros de datos. 

Las redes neuronales parece que incluso podrían acabar dominando uno de los juegos que se les resiste a los ordenadores: el juego de Go. En la Universidad de Edimburgo, unos investigadores han logrado usar redes convolucionales para detectar patrones en los tableros y tratar de sacar el mejor movimiento con una efectividad considerable: 90% de juegos ganados contra GNU Go y 10% contra Fuego, dos de los programas que mejor juegan a Go. Aunque pueda parecer poco, hay que tener en cuenta que ambos exploran un buen número de movimientos posibles para ver cuál da más ventaja. La red neuronal sólo mira al estado actual del tablero y emite un veredicto en muchísimo menos tiempo. 

Por supuesto, estas redes tampoco son la panacea. A modo de curiosidad, unos investigadores usaron una red neuronal para generar imágenes que engañaban a otra red neuronal diseñada para reconocer objetos. Así, lo que a nosotros nos parece una imagen aleatoria, para la red neuronal es un bikini o un armadillo. Es parte del problema del sobreajuste: redes que se comportan muy bien para los datos de ejemplo o parecidos, pero que con datos muy distintos dan resultados absurdos. 

Sea como sea, es un campo muy interesante y que promete bastantes avances a corto plazo sobre todo en reconocimiento de imagen y de sonido. 

Libera el poder de la Inteligencia Artificial en tu empresa

Desde optimizar procesos hasta predecir tendencias, Machine Learning ofrece una amplia posibilidad para impulsar el crecimiento y la eficiencia empresarial. Esta tecnología revolucionaria puede transformar los negocios, proporcionando insights valiosos, automatizando tareas repetitivas y mejorando la toma de decisiones. Un mundo de oportunidades para las empresas.

Actualidad

Publicaciones recientes sobre Machine Learning y Mobile App development.

Projects

Popular Posts

Páginas