Mostrando entradas con la etiqueta Redes neuronales. Mostrar todas las entradas
Mostrando entradas con la etiqueta Redes neuronales. Mostrar todas las entradas

jueves, 2 de mayo de 2024

Redes neuronales líquidas: ¿una nueva revolución en la IA?

Aunque existen muchas tipologías de algoritmos de inteligencia artificial, no cabe duda de que los grandes protagonistas de los avances de los últimos años los protagonizan las llamadas redes neuronales artificiales, conformando lo que se conoce como deep learning.


Redes neuronales: tamaño y complejidad


Las redes neuronales han ido evolucionando incluyendo nuevas arquitecturas, nuevos algoritmos en sus funciones de entrada (por ejemplo, la convolución) o funciones de activación, nuevas formas de conexión incluyendo realimentaciones (como en redes recurrentes), nuevas formas de conseguir contexto (atención y autoatención), etc

Sin embargo, un patrón más o menos común es que, conforme las redes neuronales aumentan su potencia, y otras variaciones arquitecturales aparte, lo hacen creciendo en el número de capas, en el número de neuronas por capa, y por tanto en el número de pesos (parámetros), etc.

De hecho, en los modelos de tipo GPT, por ejemplo, nos movemos en órdenes de magnitud de muchos miles de millones de parámetros, superando, en algún caso ampliamente, el número de neuronas del cerebro humano.

Ese tamaño es problemático por su dificultad intrínseca, por la enorme cantidad de datos necesarios para su entrenamiento, por su consumo eléctrico, etc.

Algo no estamos haciendo bien del todo cuando necesitamos redes neuronales más complejas, al menos en volumen, que el propio cerebro humano y con unos resultados que, aunque cada vez más espectaculares, distan, con mucho, de alcanzar los de nuestro órgano rector.

Un atisbo de solución en este sentido, pudieran ser las denominadas redes neuronales líquidas.


Mirando de nuevo a la naturaleza


Como ha ocurrido en tantas ocasiones en el desarrollo de la inteligencia artificial, algunos científicos han buscado la inspiración en la propia naturaleza. 

Existe un pequeño animal, una lombriz denominada C-elegans que puede arrojar luz. Se trata de una lombriz cuyo cerebro consta, únicamente, de 302 neuronas lo que ha permitido su estudio detallado. En efecto, los propios biólogos han logrado entender bastante bien cómo funcionan las neuronas de este animal y lo que han encontrado es que, en esencia, las neuronas de estas lombrices implementan algo parecido a una ecuación diferencial.

Se trata de un cálculo bastante más complejo que el que realizan las neuronas artificiales de casi cualquier arquitectura de red neuronal 'normal'. No voy a entrar ahora en ello, ya describí las funciones de transferencia y activación más comunes en algún post hace un tiempo, pero, en esencia decir que, mientras las neuronas artificiales habituales implementan funciones matemáticas relativamente sencillas, el modelo de una neurona artificial imitando a las de la lombriz C-elegans supone implementar funciones procedentes del cálculo diferencial.


Las redes líquidas.


En concreto, un equipo dirigido por Daniela Rus en CSAIL, tal y como nos lo describe en el libro 'The heart and the chip', ha conseguido desarrollar, con base en estos principios, lo que denominan las redes neuronales líquidas.

Las neuronas de estas redes implementan una ecuación diferencial y además tiene parámetros 'líquidos', en concreto una constante de tiempo, que se va adaptando conforme a las entradas que recibe, consiguiendo de esta manera una adaptación a nivel de neurona individual.

El equipo del MIT bajo el liderazgo de Rus, ha realizado una comparativa en el caso de vehículos autónomos, comparando una red neuronal estándar, de más de 100.000 neuronas, con una red líquida de sólo 19 neuronas.

Con esta mínima red líquida, se consiguió aprender cómo conducir con base en la observación de cómo lo hacía un humano. En cierto modo, la red se enseñó a sí misma cómo asociar los movimientos de conducción (volante, ruedas, etc) para reaccionar a la curvatura de la carretera.

Aparte de en el libro mencionado, Rus describe este tipo de redes y el experimento de conducción autónoma en la TED Talk titulada 'How AI will step off the screen and into the real world'.



La autora añade que, además, en unas redes tan simples es más fácil comprender por qué la red hace lo que hace, algo que pudiera trasladarse luego, por ejemplo, a un árbol de decisión comprensible por humanos, logrando así la tan traída y llevada (y tan compleja de conseguir) explicabilidad.

Añado de mi cosecha, la consideración de que este tipo de redes podrían ser también una gran contribución a, estimo, un drástico ahorro energético y disminución de huella de carbono, en comparación con sus primas las redes neuronales que tenemos hasta la fecha.

Y creo, igualmente, que facilitaría la inclusión de algoritmos muy avanzados en unos chips mínimos, permitiendo llevar la inteligencia a caso cualquier elemento artificial. 


Conclusión: ¿La solución a nuestros problemas?


La idea parece, pues, tremendamente interesante y prometedora.

Me llama la atención, sin embargo que, y a lo mejor es 'culpa' mía, apenas he oído hablar de este tipo de redes líquidas hasta la fecha.

Me malicio que tienen algún tipo de limitación que les impide ser todavía una alternativa realista a gran escala y tiendo a imaginarme que todavía son más materia de investigación que de producción comercial masiva. 

No estoy seguro, pero intentaré permanecer a atento porque la propuesta es interesantísima y, de ser exitosa, podrían dar un nuevo vuelco al mundo de las redes neuronales, y por tanto al de la inteligencia artificial y casi diría que a nuestra economía y sociedad.


lunes, 24 de octubre de 2022

Neuronas espejo y robots altruistas

La Inteligencia Artificial y diría que especialmente la Inteligencia Artificial aplicada al campo de la robótica, tiende a fijarse en la inteligencia humana. 

Lo hemos comentado repetidamente en este blog: aunque no debe extremarse imprudentemente la similitud que existe entre Inteligencia Artificial e Inteligencia Natural, sí que es cierto que los ingenieros y científicos de los campos cognitivos miran con frecuencia hacia el cerebro humano y cómo hace éste las cosas (al menos hasta donde sabemos, que no es tanto), para intentar trasladar ideas a algoritmos y robots en lo que se suele denominar biomímesis aunque, con frecuencia, no puede pasar más allá de lo que llamaría una 'bioinspiración'.

Recientemente ha captado mi atención conocer el el foco que en algunas investigaciones en robótica, en robótica cognitiva, se pone las neuronas espejo, algo que se describe brevemente en el   libro 'Cognitive robotics' editado por  Angelo Cangelosi y Minoru Asada y, en concreto, en un capítulo firmado por Yukie Nagai.


Las neuronas espejo


Las neuronas espejo son un tipo particular de neuronas descubiertas en 1996, y de forma casual, por Giacomo Rizzollatti. 

Las neuronas espejo se activan o disparan tanto cuando un animal realiza una cierta acción como cuando observa realizar esa misma acción a otro animal, especialmente si es un congénere, de manera que, bajo el punto de vista de estas neuronas, es como si el animal observador estuviese realizando las mismas acciones que el observado.

Aunque su funcionamiento y papel no se conoce suficientemente, se hipotetiza con que las neuronas espejo juegan un papel importante en todas las capacidades cognitivas relacionadas con la interacción social, como puede ser la empatía. 


La lectura de intenciones humanas por parte de robots


Yukie Nagai con un robot iCub

Con la inspiración de las neuronas espejo se ha trabajado en robótica cognitiva para intentar conseguir que los robots sean capaces de detectar y entender ('leer') las intenciones de los humanos y también conseguir comportamientos altruistas.

Aunque no se sabe realmente cómo, los neurocientíficos parecen tener claro que el cerebro humano es capaz de detectar los objetivos de otros seres humanos y deducir las intenciones detrás de sus acciones.

Intentando conseguir esos mismos efectos algunos roboticistas han propuesto modelos computacionales inspirados en las neuronas espejo. En la obra citada, se menciona el desarrollo de unas redes neuronales profundas, en algunos casos un autocodificador ('deep autoencoder') y en otros, unas redes con entrada multimodal ('deep belief networks') capaces, al menos en ciertos experimentos de laboratorio, de estimar e imitar las emociones de terceros.

El salto hacia el altruismo quiere decir que si los robots son capaces de detectar los objetivos e intenciones de los humanos, podrían ayudarles en la consecución de esos objetivos. Aunque en la fuente en que me apoyo no explica mucho más, asumo que la palabra altruista, aunque correcta, puede hacer pensar en cosas más fantasiosas de lo que probablemente se trate realmente. No creo estemos hablando, al menos no por el momento, de un altruismo como virtud elevada, sino que probablemente se trate de  objetivos más allá de mover piezas, ensamblar un equipo y cosas así.  

Lo cual no le resta interés ni valor.


Conclusiones


Tengo ganas de enterarme de algo más acerca de los avances en este campo, como tantos otros de la robótica cognitiva, y saber si se ha conseguido un salto hacia algo más que pruebas de investigación y laboratorio.

Desde luego, el campo es interesantísimo y, más allá de algunos eventuales miedos y resistencias, abre posibilidades fantásticas, casi futuristas... o al menos eso parecen ahora mismo.


miércoles, 19 de enero de 2022

Muestras de que cerebro y redes neuronales no funcionan igual

Ya he mencionado varias veces en este blog cómo las redes neuronales, la tipología de algoritmos constituyentes del deep learning, se inspiran en el cerebro y sistema nervioso humanos pero como la semejanza no pasa de eso, una semejanza y una inspiración, pero que no podemos suponer el mismo funcionamiento.

La ignorancia sobre el cerebro humano


En primer lugar, mal podemos imitar, imitar de manera profunda quiero decir, el funcionamiento de algo que realmente desconocemos. 

Y no sabemos cómo funciona realmente el cerebro, aunque la neurociencia vaya avanzando a grandes pasos y cada vez arroje más elementos de luz. Así que, si no sabemos cómo funciona el cerebro, mal podemos diseñar un algoritmo que opere de la misma manera. 

La improbabilidad de conseguirlo es tan alta que roza la imposibilidad.


Síntomas de la diferencia entre cerebro y redes neuronales


Por si fuese poco esa 'casi' imposibilidad  teórica, existen muchos síntomas, no me atrevo a llamarles pruebas, pero sí síntomas claros, de que, en efecto, las redes neuronales no funcionan igual, o al menos no exactamente igual, que el cerebro humano.

Están descritos en la literatura, e incluso muchos de nosotros los podemos experimentar en nuestra interacción, por ejemplo, con agentes conversacionales, errores absurdos de los algoritmos de inteligencia artificial en general y deep learning en particular. Algoritmos que, en general funcionan bien, o incluso muy bien, fallan a veces de formas tan tontas que nos resulta incomprensible por lo absurdo.

Pero es que esos fallos son tontos y absurdos si pensamos como humanos con nuestro cerebro de humanos, pero no son en el fondo absurdos para una red neuronal 'pensando' como red neuronal con su 'cerebro' de red neuronal.

Está descrito incluso cómo, ex-profeso, y no siempre con santos propósitos, se puede engañar a algoritmos de deep learning. Se puede, por ejemplo, conseguir que algoritmos de visión artificial, que funcionan ben o muy bien, sean engañados sin embargo por otros algoritmos mediante el cambio de unos pocos píxeles de la imagen, unos pocos píxeles que para el ojo (y sobre todo el cerebro humano) son prácticamente invisibles y que no cambian nada de nuestra comprensión de esa misma imagen.

Un poco en esa línea, en el libro 'Artificial Intelligence. A modern approach' de Stuart Russell y Peter Norvig, se nos dice, a propósito precisamente de la visión artificial y del uso del deep learning en este campo que:


These findings suggest that deep learning models recognize objects in ways that are quite different from the human visual system.


Conclusión: cerebro y redes neuronales


Así que, tanto la lógica, como los síntomas que tenemos, apuntan a que cerebro y redes neuronales funcionan de manera diferente, no sabemos cuánto de diferente o parecido, a pesar de haber servido el primero, el cerebro, como inspiración de las segundas, las redes neuronales.

Quizá, y solo quizá, si algún día, si llegamos a comprender de forma profunda cómo funciona el cerebro, podamos construir redes neuronales, o puede que un algoritmo completamente diferente, capaz de emular realmente al cerebro humano, no sólo en sus resultados externos sino también en funcionamiento interno.  

Quizá, sólo quizá, pero si en algún momento avistamos que eso será realmente posible, habrá que pensar si es lo que queremos y, sobre todo, como lo gestionaríamos de una manera responsable.


lunes, 15 de junio de 2020

El misterio del cerebro y la metáfora computacional


El funcionamiento del sistema nervioso en general, y del cerebro muy en particular, es uno de los más grandes y apasionantes misterios a que se enfrenta la ciencia... y nuestra curiosidad.

Mucho hemos avanzado en ese conocimiento desde los trabajos de nuestro Nobel Santiago Ramón y Cajal. En los últimos años, por ejemplo, se ha avanzado, mediante el uso de técnicas como la fMRI en hacer una suerte de 'mapa' del cerebro, identificando con cierta nitidez que áreas del mismo intervienen en diferentes funciones o son excitadas ante ciertos estímulos. Pero aún así, estamos lejos de comprender realmente la forma en que se producen los pensamientos y no digamos nada las emociones.

Desde hace décadas, desde la generalización de los computadores digitales, ha existido una especie de inspiración mutua entre el campo de la neurociencia y de la computación. Una inspiración o una metáfora que hace que, por un lado, lo que conocemos sobre el cerebro y el sistema nervioso inspire algunos modelos computaciones, siendo el caso más típico el las redes neuronales artificiales, situadas en el corazón de muchos de los avances más espectaculares que vivimos hoy día en el campo de la Inteligencia Artificial. Y también existe, quizá en menor medida, la idea de aplicar la metáfora en la dirección contraria una cierta tentación de intentar imaginar el funcionamiento del cerebro como si de una especie de computador se tratase.

En el caso de la inspiración de modelos computacionales, la metáfora ha sido útil y fértil, ya que gracias a ella han surgido las redes neuronales y el deep learning. En el sentido contrario, aplicación de la metáfora computacional al cerebro, no tengo claro que se haya conseguido ningún resultado práctico.

Creo que, en el fondo, no sabemos lo suficiente del cerebro como para evaluar con exactitud hasta donde llega la metáfora y hasta dónde existe un paralelismo real que permita usos científicos o ingenieriles de ese paralelismo. Pero, precisamente por ese desconocimiento, lo más prudente es pensar que la metáfora es solo eso, una metáfora, y no esperar de ella más que inspiración o un modelo descriptivo que pueda ser útil en algún momento a efectos de divulgación o entendimiento. 

He finalizado recientemente la lectura del libro 'Brain-Computer Interface Technologies' de Claude Clément y este autor se muestra muy renuente, casi escéptico y combativo, frente a la más mínima fantasía o especulación en materia tan delicada como es la interacción máquina-cerebro, que constituye el tema de su libro. Y así, bastante al principio, ya nos previene contra la metáfora aplicada en la dirección computación->cerebro y nos dice:

We realize now that we should not compare the brain to a computer


Y remata, para el específico caso de las neuronas, diciendo:

Neurons do not function as any electronic component.


En el caso de esta última frase, no menciona específicamente las redes neuronales artificiales, pero resulta difícil no imaginar que es en ellas en lo que está pensando al hacer esta afirmación. Y lo cierto es que, además, las redes neuronales artificiales, aunque se inspiraron en su origen en el funcionamiento de las neuronas y el sistema nervioso, y aunque por ejemplo el perceptrón muestra bastante clara esa inspiración, los avances del deep learning actual se basan más en los avances matemáticos y en el criterio de efectividad para resolver problemas que en una imitación del cerebro. No parece, por ejemplo, al menos hasta donde a mi se me alcanza, que una red de convolución, tan usada en la visión artificial, esté implementando un mecanismo observado en las neuronas reales ni en el funcionamiento de la retina.

Sea como fuere, la enseñanza es que, aunque la metáfora y la inspiración mutuas pueden ser interesantes y en algún caso fértiles, debemos tener claro cuando estamos hablando de una metáfora o inspiración y cuándo de un modelo real y, actualmente, parece que estamos más cerca del campo de la metáfora que del modelado.

Para estar más seguros, deberíamos avanzar más en la resolución del gran misterio: el funcionamiento del cerebro. Pero ese es un misterio que parece que se nos va a resistir bastante tiempo. Aunque él se refiere específicamente a la interacción cerebro-computador, la siguiente frase del mismo autor,  Claude Clément, nos puede servir como cierre con llamada a la prudencia:

We should also realize that we should remain modest in our conquest of the brain


En efecto, nos queda mucho por aprender sobre el cerebro y su funcionamiento. Y parece que espera un largo trayecto antes de llegar a ese conocimiento. Mientras tanto, disfrutemos del viaje y de la metáfora.

miércoles, 27 de mayo de 2020

Catálogo de componentes de redes neuronales (y IV): optimizadores


Vamos a cerrar, al menos por el momento, esta serie de artículos dedicados a censar elementos de diseño de las redes neuronales, y lo haremos hablando de los optimizadores, es decir, esa pieza nuclear del aprendizaje que, tomando como dato de entrada el valor de la función de pérdida, decide cómo modificar los pesos de la red para conseguir que el resultado se acerque, en cada paso, un poquito más al objetivo deseado.

Ya anticipamos el algoritmo más 'típico' que podemos en este caso que el descenso de gradiente ('Gradient descent') cuando comentamos las intuiciones sencillas que existen tras muchos algoritmos en apariencia, y quizá no tan en apariencia, complejos.

Vimos que, en el fondo, el descenso de gradiente no es más, como intuición, que imaginar el perfil de la función de pérdida como una curva o superficie e ir 'bajando' en pequeños pasos por esa curva/superficie, en la dirección de máxima inclinación, hasta encontrar el 'valle', el punto más bajo, momento en que habríamos minimizado el error.

El descenso de gradiente ('Gradient Descent', GD) es un optimizador popular y la base de algunos otros. Vamos a ver, brevemente, el censo de otros optimizadores.

  • BGD ('Batch Gradient Descent'): Es una variante del gradient descent en que, en cada iteración, tomamos el conjunto entero de datos de aprendizaje para calcular el valor del gradiente. Es un algoritmo relativamente sencillo de entender, pero de convergencia lenta.

  • SGD ('Stochastic Gradient Descent'): Es el extremo contrario: en lugar de usar todo el conjunto de datos para calcular el gradiente y actualizar pesos como hace BGD, en este caso en cada iteración utilizamos un único punto de datos con lo que tenemos una convergencia mucho más rápida. A cambio, tiende a presentar ciertas inestabilidades y fluctuaciones.

  • 'Mini-batch Gradient Descent': Es el punto intermedio entre los dos anteriores. En este caso, en cada iteración elegimos un conjunto más o menos reducido de puntos de datos.

  • Nadam ('Nesterov-accelerated adaptive moment stimation') Este es un optimizador que utiliza el concepto de 'momento'. La idea intuitiva es acelerar más o menos el descenso de la curva de gradiente, según la pendiente de la misma, yendo más rápido en las direcciones en que la curva de la función de pérdida es más escarpada y más lento en las direcciones en que la curva presenta un perfil más suave. Y la forma de hacerlo matemáticamente es teniendo en cuenta, no sólo la pendiente actual, sino también la pendiente de las iteraciones anteriores con lo cual tenemos una cierta estimación de aceleración o deceleración.

  • Adagrad ('ADAptive GRADient algorithm') Un método que introduce el aprendizaje adaptativo, en que el nivel de variación de los parámetros depende de estos. La idea geométrica es que, si en el descenso de gradiente avanzamos en la dirección de la mayor pendiente en cada momento, pudiendo esa pendiente no apuntar directamente al mínimo global, en Adagrad intentamos que la dirección de descenso, aunque no sea la máxima, sí apunte más en la dirección del mínimo. Presenta, eso si, el problema de una tasa de aprendizaje cada vez menor, que es lo que intentan resolver los siguientes optimizadores.

  • RMSprop ('Root Mean Square prop'): Utiliza una media móvil de los cuadrados del gradiente y normaliza ese valor empleando para ello las magnitudes recientes de los gradientes anteriores. La normalización se realiza, evidentemente, por que si no, el hecho de elevar al cuadrado hace que, caso de no normalizar, tengamos un valor de gradiente exageradamente alto (el cuadrado, en concreto).

  • Adam ('ADAptive Moment stimation'): Viene a ser una combinación de Adagrad y RMSprop. Utiliza una media móvil exponencial de los gradientes para ajustar las tasas de aprendizaje. Es un algoritmo computacionalmente eficiente y que usa poca memoria. Y es uno de los optimizadores más populares hoy día.

  • Adadelta: Una extensión de Adagrad más robusta que usa una ventana móvil de actualizaciones de gradientes.

  • Adamax: Una variante algo sutil de Adam, en que en lugar de un momento de segundo orden, se utiliza un momento de orden infinito.

Por detrás de los optimizadores, ya se intuye, existe un cierto aparataje matemático y no es fácil describirlos de una forma realmente sencilla. En mi caso, y para realizar este post, me ha sido útil el artículo sobre optimizadores 'Machine Learning: Gradient Descent' y 'Overview of differente optimizers for neural netowrks', publicados ambos por Renu Khandelwal en Medium.

Y con esto cierro, como decía, esta serie de cuatro artículos sobre elementos de diseño que tenemos en redes neuronales, y catalogar de forma sencilla las principales opciones existentes.

No se agotan aquí los elementos de diseño disponibles pero, para una primera visión, he preferido centrarme en conocer e intentar consolidar éstos: capas, funciones de activación, funciones de périda y optimizadores.


Artículos de este blog relacionados

lunes, 25 de mayo de 2020

Catálogo de componentes de redes neuronales (III): funciones de pérdida


Continuando con el catálogo de elementos de diseño, en este post vamos a hacer un catalogado básico de las funciones de pérdida ('loss functions').

¿Qué es una función de pérdida?

La función de pérdida, también denominada función objetivo, en esencia, nos dice, durante el proceso de entrenamiento de la red, lo lejos que está en un momento dado, lo que la red nos ofrece como salida y el resultado que nosotros consideramos que es el correcto o deseado. El valor de la función de pérdida será luego un dato de entrada en el algoritmo de aprendizaje.

Dado que los algoritmos de aprendizaje como el descenso de gradiente, calculan la derivada de la función de pérdida, ésta debe ser una función continua y derivable. 

Hay una gran variedad de funciones de pérdida posibles pero para nuestro catálogo sencillo, y basándonos en los libros 'Deep Learning con Python' de François Choillet y 'Python Deep Learning' de Jordi Torres, seleccionamos las siguientes:

  • Error Cuadrático Medio ('Mean Square Error', MSE): Una función muy conocida que calcula la distancia 'geométrica' al valor objetivo. Hablar de distancia geométrica es una forma de visualizarlo que nos orienta cuando pensamos en dos o tres dimensiones. Más allá de esas dimensiones, es sólo una forma de entenderlo. Además, decimos distancia, pero en realidad es la distancia elevada al cuadrado. Una variante de ésta seria la que, en lugar del cuadrado de la distancia, elige el valor absoluto ('Absolute Error'). MSE se puede usar, por ejemplo, en problemas de regresión a valores arbitrarios y con una última capa sin función de activación.

  • Entropía cruzada Categórica ('Categorical Cross Entropy'): Sin entrar en detalles, la entropía cruzada, en general, es una medida de la distancia entre distribuciones de probabilidad. La entropía cruzada suele ser adecuada en modelos de redes cuya salida representa una probabilidad, como cuando hacemos una clasificación categórica con función de activación 'softmax'. Se puede utilizar, por ejemplo, en problemas de clasificación categórica con una sola etiqueta de salida y precedida de una función de activación 'Softmax'.

  • Entropía cruzada binaria ('Binary Cross Entropy'):  Una variante de la anterior pero en que tratamos con clasificación binaria y , por tanto, la función de activación sería una sigmoide.

  • Entropía Cruzada Categórica Dispersa ('Sparse Categorical Cross Entropy'): Una variante que se suele usar en el caso de trabajar con números enteros.

Hay mucho más aparato matemático detrás de las funciones de pérdida, y más opciones posibles pero, en aras de la simplicidad que busco, también en mi propio provecho, dejaremos nuestro catálogo limitado estas cuatro y sin entrar en la formulación matemática exacta de las funciones.

En el próximo artículo de este catálogo ya atacaremos al aprendizaje propiamente dicho. 

Artículos de este blog relacionados

miércoles, 20 de mayo de 2020

Catálogo de componentes de redes neuronales (II): funciones de activación


En el artículo anterior de este blog, hablamos sobre los tipos de capas más habituales que se utilizan en redes neuronales, empezando así un breve trabajo de catalogado de las opciones de diseño de que se dispone en redes neuronales, pensando muy especialmente en Deep Learning.

Neurona artificial. Fuente: Jordi Torres
En este segundo artículo de esta breve serie, vamos a hablar de las funciones de activación. Como se recoge en la figura (autoría de Jordi Torres) y que ya utilizamos en el artículo anterior, una neurona artificial habitualmente divide su procesamiento en dos partes. Por un lado un tratamiento de las entradas (que puede ser, por ejemplo, una suma ponderada como se muestra en la figura o una convolución) y, al resultado de esa primera función, aplicarle otra pequeña transformación para obtener el valor de salida de nuestra neurona. Esa segunda transformación, esa segunda función que en la figura se representa dentro de un rectángulo, es a lo que se denomina función de activación y es un segundo elemento de diseño relevante.

Existe una cierta variedad de funciones de activación, algunas de las cuales se muestran en la figura.



No vamos a verlas todas, pero sí mencionar algunas de las más habituales.

  • Función Lineal: Se trata, quizá, del caso más simple, en que la función de activación básicamente, da una salida igual a la entrada, es decir, actúa como función identidad trasladando a su salida el resultado obtenido en la primera parte del procesamiento de la neurona (la suma ponderada de entradas, por ejemplo).

  • Función Rectified Linear Unit ('ReLU'): Aunque el nombre pueda llamar a engaño, se trata en realidad de una función no lineal. En este caso, el valor de la función de activación es igual a su entrada mientras ésta sea mayor que cero (en ese caso sí actúa como lineal) pero, en caso contrario, el valor de activación es nulo. Su labor, en el fondo, no es más que eliminar valores negativos. Es difícil de explicar brevemente, pero este tipo de no linealidades aumenta las posibilidades de la red. En concreto, esta función, muy popular, da buenos resultados, por ejemplo, en redes de convolución y, por tanto, en tareas como visión artificial o reconocimiento de voz. Aparte de la ReLU, existen otras muchas funciones de activación que juegan con la linealidad y no linealidad de forma parecida, como pueden ser, por ejemplo, la 'Leaky ReLU' en que para los valores negativos se proporciona una pendiente diferente (más tendida) que para los positivos o la 'Exponential LU'.

  • Función Sigmoidea (logística): Se trata de una función continua y derivable (importante en los algoritmos de aprendizaje), con un rango entre 0 y 1 y generalmente cerca de esos extremos (0 ó 1). Esto la hace muy adecuada para problemas de clasificación. Por ejemplo, para una clasificación binaria, una única neurona de salida con esta función de activación sigmoidea tendería a dar muy bien el resultado (cercano a uno una categoría, cercana a cero la otra). También se utiliza en problemas de regresión con salida entre 0 y 1.

  • Función Tangente Hiperbólica: Una función con una forma parecida a la sigmoidea pero que, en este caso, proporciona valores entre 1 y -1, es decir, admite valores negativos en la salida.

  • Función 'softmax' (función exponencial normalizada): Es una función de activación un poco particular, puesto que la salida no sólo depende de las entradas de la neurona sino también de la salida de las otras neuronas de la misma capa. Cuando se aplica una función de activación, la suma de las activaciones de la capa debe ser 1. Se utiliza en problemas de clasificación en múltiples categorías y etiquetas, en las que cada neurona de salida representa una categoría. La que tiene el valor más alto es la que representa con más probabilidad la categoría que corresponde a los datos mostrados en la entrada de la red.

Existen más funciones de activación, claro, pero con éstas mencionadas creo que se cubren los casos más habituales, así que podemos cerrar por ahora el catalogado. En el siguiente paso iremos a por los algoritmos de aprendizaje.


Artículos de este blog relacionados

lunes, 18 de mayo de 2020

Catálogo de componentes de redes neuronales (I): capas


En un artículo publicado recientemente en este blog y titulado 'Estructura de una red neuronal y el inicio de una catalogación sencilla', anunciaba una serie de posts en que resumiría las opciones básicas que se pueden elegir a la hora de diseñar una red neuronal. La idea es censar un catálogo corto y comprensible, pero razonablemente explicativo y abarcador, que ayude a entender este tipo de algoritmos avanzados y conocer las principales opciones de diseño disponibles.

Y éste es el primero de los posts de esa serie, y que dedicaré a las capas.

Neurona Artificial. Fuente: Jordi Torres
La unidad mínima en una red neuronal sería, en teoría, la neurona, que conceptualmente se corresponde con una unidad que recibe unos datos de entrada (en la metáfora neuronal serían las salidas de otras neuronas) y proporciona un valor de salida. Matemáticamente la podríamos considerar como una función aunque internamente suele encadenar dos funciones: por un lado una primera función que combina de forma ponderada (modulada por pesos) sus entradas y una función de activación que proporciona una salida en función de esa operación ponderada previa

Sin embargo, a la hora de trabajar, más que con neuronas individuales, se trabaja con capas que se corresponden intuitivamente con lo que la palabra capa indica, es decir, un conjunto de neuronas en un mismo, digamos, nivel, que tienen características homogéneas entre sí y que se conectan con las neuronas de la capa precedente. Desde un punto de vista matemático, en realidad, una capa se traduce en un módulo de procesamiento matemático que toma como entrada un tensor (que sería la salida de la capa anterior) y devuelve como salida otro tensor.

Entre los elementos que definen la tipología de una capa tenemos, por supuesto, el tipo de cálculos que aplican sus neuronas, pero también el patrón de conexión entre sí y, sobre todo, con la capa precedente.

Siguiendo a François Chollet en su libro 'Deep Learning con Python' incluiremos en nuestro catálogo tres familias de capas, a saber:
  • Densa (Perceptrón): En ellas todas las neuronas de una capa están conectadas a todas las neuronas de la capa anterior. Son capas que no asumen ningún tipo de estructura específica en las características de entrada. Se utilizan fundamentalmente en problemas de clasificación ya sea asumiendo la totalidad de las capas de la red o bien como fase final de clasificación en una red con capas de otros tipos.

  • Convolución: redes que aplican transformaciones geométricas locales en espacios acotados de sus datos de entrada. Es decir, recorren sus datos de entrada aplicando sucesivamente pequeñas transformaciones a subconjuntos pequeños de ese espacio de entrada hasta finalizar el recorrido. Su comportamiento tiende a ir extrayendo, mediante la acción de capas sucesivas, características significativas del espacio de entrada. Suelen apoyarse en otros tipos de capas auxiliares como son las capas de 'pooling' (reducción del espacio de datos) y 'flatten' (conversión de tensores n-dimensionales en vectores).Su aplicación más típica es en tratamiento de imágenes y visión artificial, pero también su utilizan en procesamiento de sonidos, de textos u otro tipo de datos secuenciales.

  • Recurrente (RNR): Capa específicamente diseñada para el tratamiento de secuencias de entradas, típicamente temporales. Las capas recurrentes se denominan así porque su salida en un momento dado depende, no sólo de las entradas en ese momento, sino de su salida en el paso anterior. Son capas que, además, conservan un estado. Se utilizan en todo tipo de tratamiento de series temporales, siendo quizá lo más relevante, todo lo que tiene que ver con el procesamiento de texto y lenguaje o el análisis de sentimiento, pero también, por ejemplo, en la predicción del tiempo e incluso en redes generativas de texto. Existen algunas variantes de las que las más comunes son las dos siguientes:

    • Long Short-Term Memory (LSTM): En que la información recurrente se transmite no sólo al paso anterior sino a varios pasos anteriores.

    • Gated Recurrent Unit (GRU): siguen la misma idea que las LSTM pero son computacionalmente más eficientes.

Este catálogo, seguro, no es completo, y además, las arquitecturas de redes neuronales más avanzadas no se limitan a un mero apilamiento de capas por lo que, el conocer las modalidades de capas no es suficiente para tener una base completa de las opciones en redes neuronales, pero disponer de este catálogo con los tipos de capas más habituales, me parece que orienta bastante en los primeros pasos (al menos a mi, me sirve como estructura de conocimiento).

En próximos posts veremos otros elementos relevantes del catálogo de componentes. El próximo paso: funciones de activación.

miércoles, 13 de mayo de 2020

Estructura de una red neuronal y el inicio de una catalogación sencilla


Un aspecto curioso de una tecnología tan avanzada y de resultados tan espectaculares como es el deep learning, es que en su seno sólo sea medianamente científica. Y digo sólo medianamente científica, sin desprecio ninguno y muy a pesar de su complejo e ingenioso aparato matemático. Y lo digo por el hecho de que no existe un camino recto para el diseño adecuado de una red neuronal de Deep Learning. Cuenta, por el contrario, bastante la experiencia y el ensayo y error.

Sin embargo, existe ya una buena experiencia acumulada y ciertas recetas o buenas prácticas aprendidas. Y con base en ello, hay bastantes aspectos del diseño de la red que están bastante claros, algunas líneas que seguir dependiendo del problema tratado. Unas líneas, además, bien documentadas.

Me he propuesto ir haciendo, en varios artículos que vendrán, una suerte de catálogo de componentes de las redes neuronales. Con ello me refiero a un censado de las opciones disponibles en diferentes aspectos del diseño con indicación básica de características y ámbito de aplicación.

Se trata más bien de un ejercicio de recapitulación y orden y no aportaré con ello nada realmente original, sino que me basaré en lo que he encontrado en dos de mis últimas lecturas: 'Deep Learning con Python' de François Chollet, y 'Python Deep Learning: Introducción práctica con Keras y TensorFlow 2' de Jordi Torres, dos libros con explicaciones muy claras y fundamentadas y que tienen no sólo una cercanía a nivel de título sino también de forma de explicarlo.

Pero antes de iniciar ese censo, quiero recuperar una figura (también presente con aspecto muy parecido en ambas obras), una figura que explica la estructura y elementos fundamentales de las redes neuronales y que me servirá de guía, también, para estructurar ese catálogo de componentes. Se trata de esta figura:



En la figura, se puede ver la estructura de la red, de donde extraemos los siguientes cuatro elementos:

  • Capas: Es el elemento fundamental. Hay ciertas variantes, ciertos hiperparámetros como se suele expresar, para definir la red en lo relativo a las capas (número de capas, número de neuronas por capa, etc). Pero de cara al catálogo que mencionaba arriba, me fijaré básicamente en el tipo de capa (o combinaciones de capa). Ya veremos si más adelante, me interesa profundizar más.

  • Función de activación: No se observa en el dibujo, pero es la función que rige la salida de las neuronas, especialmente relevante en las capas de salida. Dado que tiene relevancia en relación con el problema a tratar, hablaremos de ella en el catálogo.

  • Función de pérdida: La función que calcula cuán lejos está el resultado que produce la red del esperado, y que constituye la entrada fundamental para el aprendizaje.

  • Optimizador: Que, en función de lo que obtiene como entrada de la función de pérdida, 'decide' en qué cuantía y dirección modificar los parámetros de las capas, típicamente sus pesos. 

Existen bastantes más variantes, bastantes más hiperparámetros a elegir para definir una red neuronal pero creo que, al menos inicialmente, me circunscribiré a esos cuatro elementos a la hora de traer a este blog ese catálogo de componentes de redes neuronales.

Empiezo la semana que viene.


lunes, 13 de abril de 2020

Motivos para el deep learning


He iniciado la lectura del libro 'Deep Learning con Python', traducción al castellano del libro escrito por François Chollet. Françoise es un ingeniero francés, investigador en Inteligencia Artificial, que trabaja actualmente  en Google  y que es conocido, sobre todo, por ser el creador de Keras, una muy popular API para la construcción de redes neuronales.

En el primer capítulo, y como es de esperar, hace una introducción donde, de forma muy sencilla, explica conceptos muy básicos y algo de historia de la inteligencia artificial, del machine learning y del deep learning.

Repasa, por ejemplo, los modelos probabilísticos con el naive Bayes y la regresión logística. Repasa el nacimiento de las redes neuronales y la aplicación del descenso de gradiente ('gradient descent'), las redes de convolución y el algoritmo de retropropagación ('backpropagation'). Pasa luego a los métodos kernel ('kernel methods') y las Support Vector Machines (SVM), a los árboles de decisión, para volver por fin a las redes neuronales, al auge de las redes de convolución ('convnets') y al nacimiento y auge del deep learning.

Una historia rápida y explicada de forma muy sencilla pero, en lo que me quería detener un poco más en este artículo es en las razones que sugiere Chollet para explicar el éxito actual del Deep Learning.

Estos son los argumentos que aporta.


¿En qué es diferente Deep learning de otros algoritmos?


En primer lugar y es bastante evidente, es que deep learning ha conseguido mucho mejores resultados que algoritmos anteriores en diversas tareas como en visión por computador o procesamiento de lenguaje natural.

Un segundo motivo que hace diferente al deep learning es que automatiza una tarea conocida como ingeniería de características ('feature engineering'). Se trata de una labor que consiste en procesar los datos en bruto para, apoyándose en cierto conocimiento del dominio del problema a resolver, extraer características relevantes que son luego utilizadas por los algoritmos de machine learning. En otros algoritmos se trata de un pre-procesado en que los humanos tienen que dedicar bastante esfuerzo. Sin embargo, según explica Chollet, en Deep Learning este tratamiento ya viene dentro del propio algoritmo.

Finalmente, Chollet argumenta que en Deep learning todas las capas de la red se entrenan y ajustan a la vez frente a los modelos de aprendizaje superficial ('shallow learning') que utilizan los denominados algoritmos voraces ('greedy algorithms') en los cuales se optimiza capa a capa.


¿Por qué ahora Deep Learning?


¿Y por qué precisamente ahora esta explosión?

En parte ya viene explicado por lo visto anteriormente, pero hay que tener en cuenta algún factor adicional. En concreto, Chollet identifica tres factores o dimensiones:

  • Hardware: donde la gran aportación es la aparición de los GPU ('Graphical Processing Units') procedentes de la industria de los videojuegos y su aplicación en machine learning donde aportan su gran capacidad de procesamiento y de trabajo en paralelo. El autor apunta como línea de futuro en materia de hardware al trabajo, de momento como investigación de las TPU ('Tensor Processing Unit') de Google.

  • Datos: la mayor parte de los algoritmos de machine learning y, en concreto, de deep learning, necesitan de enormes cantidades de datos para su entrenamiento. La adopción de Internet en general, y de los medios sociales en particular, con su enorme riqueza en imágenes, vídeos, textos, etc han sido una materia prima fundamental para el desarrollo del deep learning.

  • Mejoras algorítmicas: La tercera dimensión es algorítmica y ahí yo incluiría los temas apuntados en la sección anterior pero el autor avanza un poco más y detalla algunas mejoras algorítmicas más especificas como mejores funciones de activación en las redes neuronales, mejores esquemas de inicialización de pesos en la red y mejores esquemas de optimización.

Conclusión


Y esas son las razones que nos aporta Chollet. Parecen razonables y, además, las aporta alguien con reconocida autoridad y experiencia en la materia.

En cualquier caso, sean estas las únicas razones o haya otras, lo que es indudable es de la pujanza actual de la inteligencia artificial, del machine learnng y, específicamente, del deep learning.


miércoles, 6 de septiembre de 2017

Cerebro, computación y metáfora


El cerebro humano es un gran misterio.

A pesar de los avances de la neurología y la neurociencia, a pesar de que ya somos capaces, gracias a la resonancia magnética funcional (FMRI) de dibujar una suerte de mapa del cerebro, no acabamos de entender del todo cómo funciona.

Y como no somos capaces de entenderlo, buscamos metáforas que nos permitan una cierta explicación. 

A partir del desarrollo de los computadores digitales, se ha usado en ocasiones la metáfora del cerebro, precisamente, como una especie de ordenador central.

Sin embargo, a medida que avanza nuestro conocimiento, esta metáfora va pareciendo cada vez más inexacta, más alejada del comportamiento real.

El cerebro, nos parece ahora, funciona realmente como una red compleja, muy compleja, con partes de esa red especializadas en diferentes funciones: vista, lenguaje, etc

Así nos lo hace notar Thomas D. Parsons cuando en su libro 'Cyberpsychology and the brain' nos dice:

the brain is not a general-purpose computer with a unified central processor. Instead, brain functional activity is better conceptualized in terms of large-scale neural networks that represent distinctive subsystems and relationships among them: language, face-and-object recognition, spatial attention, memory-emotion, and executove function-comportment.

Es decir, el cerebro es en realidad una red, una red neuronal... y llega el momento de aplicar la metáfora en sentido inverso.

Ahora que entendemos el cerebro como una red neuronal, aplicamos ese modelo a soluciones computacionales llamados redes neuronales artificiales. Y hablamos de metáfora porque aunque las redes neuronales artificiales se inspiran en la estructura neuronal del cerebro, difícilmente podemos afirmar que emulan realmente su funcionamiento.

Pero es en en el campo de las redes neuronales artificiales, especialmente en las arquitecturas que se emplean en deep learning, donde la inteligencia artificial está obteniendo algunos de los mayores avances.

Parece que, a veces, a pesar de su inexactitud, las metáforas funcionan... o al menos nos ayudan a explicar y a avanzar...

lunes, 5 de junio de 2017

Clasificadores: el encuentro entre Data Science, Machine Learning y Redes Neuronales



Con frecuencia, cuando se ponen de moda, las fronteras entre diferentes tecnologías o simplemente técnicas se vuelve confusas. A veces porque realmente no son tan nítidas, a veces porque el ‘marketing tecnológico’ intencionadamente aplica incorrectamente términos de moda a tecnologías ya conocidas y menos ‘glamurosas’, a veces por pura confusión o ignorancia del que usa los términos.

Una de las zonas más borrosas hoy en día, al menos en mi percepción es la que separa a Data Science o Big Data de Machine Learning y a ésta de Deep Learning o Inteligencia artificial.

Quizá valga la pena dedicar tiempo y espacio a marcar todas esas fronteras pero, en este artículo, sólo voy a hablar de clasificadores y cómo se relacionan con algunos de esos términos. Y lo hago, motivado e inspirado por la descripción que en su libro ‘The Data Science Handbook’ hace Field Cady sobre los clasificadores, una descripción por un lado bastante simple y pedagógica pero que me parece rigurosa, basada en el conocimiento y que, personalmente, me ha permitido visualizar muy bien cierta relación entre Data Science, Machine Learning y Redes Neuronales.

Intentemos entender primero qué es un clasificador. Podemos decir que un clasificador es un algoritmo que, recibiendo como entrada cierta información de un objeto, es capaz indicar la categoría o clase a que pertenece de entre un número acotado de clases posibles. Por ejemplo, podemos leer una imagen que representa un número (como cuando se leen las matrículas de los coches en ciertos aparcamientos) y clasificarlo indicando de qué dígito se trata. O podemos recibir como entrada la imagen de un animal y decir si se trata de un gato, un perro o un loro. En algunas ocasiones, más que una clasificación, lo que proporciona es un valor numérico que indica la confianza que tenemos de que la entrada se corresponda con una cierta clasificación.

Field Cady nos dice que, en realidad, un clasificador, uno basado en Machine Learning, funciona en dos fases:
  • En una primera fase es entrenado, es decir, recibe una gran cantidad de datos de ejemplo y su clasificación correcta, de forma que se pueden ajustar los parámetros del algoritmo para un funcionamiento óptimo.

  • Cuando ya está entrenado es cuando ya funciona como describíamos más arriba: recibe unos datos de entrada y da la clasificación correspondiente como salida.
A continuación, Cady nos describe los siguientes clasificadores:
  • Árbol de decisión (‘Decision Tree’): simplemente una estructura donde en cada nodo se hace una pregunta y, en función de la respuesta, se sigue hacia un nodo u otro. La respuesta final es la categoría que andamos buscando.

  • Bosques aleatorios ('Random forest'): una colección de árboles de decisión entrenados cada uno con un subconjunto de los datos disponibles y que se ocupan sólo de un subconjunto de las características. La decisión final se toma como una media de las decisiones individuales de los árboles.

  • Grupo de Clasificadores (‘Ensemble Classifier’): Una generalización de los bosques aleatorios. Tomamos varios clasificadores (árboles de decisión o no), se entrenan bajo condiciones diferentes, y sus resultados se agregan de alguna forma. La idea subyacente es que cada clasificador en muy bueno en algo y los diferentes clasificadores son bastante independientes, de forma que se espera que la agregación sea una buena clasificación.

  • Máquinas de Vectores de Soporte (‘Support Vector Machines’): Se trata de un tipo de clasificadores que asumen que se puede establecer fronteras lineales en el espacio total de valores posibles de forma que, dependiendo de dónde se encuentre un conjunto de datos concreto, estará a alguno de los lados de la frontera, lo que lleva a su clasificación según el lado en que se encuentre. Asumen una separabilidad lineal (las fronteras vienen dadas por ecuaciones lineales).

  • Regresión Logística (‘Logistic regression’): Es como una versión no binaria de las Support Vector Machines. También suponen algún tipo de frontera pero lo que hacen es asignar probabilidades de una clasificación u otra según lo cerca o lejos que se encuentren de la frontera.

  • Regresión Lasso (‘Lasso Regression’): Una variante de la anterior, pero que tiende a eliminar las zonas de clasificación confusa.

  • Bayes ingénuo (‘Naive Bayes’): una aplicación simplificada de la estadística bayesiana en que, se parte de unos valores iniciales de confianza en una clasificación y, durante el entrenamiento se van ajustando

  • Redes Neuronales (‘Neural Nets’): en que un conjunto de nodos estructurados en capas, obtienen una salida en función de sus entradas y la aplicación de unos pesos. Estos pesos se ajustan durante el entrenamiento, y es la forma en que aprenden. Las redes neuronales son en general buenas cuando se trata de clasificar con base en muchas características.

Si se observa el listado anterior vemos que, en todos los casos, tenemos unos algoritmos que toman una serie de entradas y generan unas salidas, que son la clasificación. Y vemos que todos ellos ajustan de alguna forma sus parámetros mediante el aprendizaje basado en un amplio conjunto de ejemplos con sus entradas y su respuesta correcta. 

Todos son herramientas de Data Science (de análisis de datos) y en todos hay aprendizaje (machine learning).aunque el algoritmo específico pueda ser muy diferente.

Bajo esta perspectiva, desde un punto de vista externo, tratando todos los clasificadores como cajas negras,todos se comportan igual. Su algoritmo interno es diferente y sus resultados o mejores áreas de aplicación pueden variar, pero hacen lo mismo y tienen todos la capacidad (y la necesidad) de aprender. Y esto va desde algoritmos tan sencillos de entender como los árboles de clasificación como los más complejos y en cierto modo incomprensibles de una red neuronal.

La verdad es que, visto así, parece entenderse con más claridad la cercanía de conceptos, a priori bastante diferentes, y por qué no siempre las fronteras están claramente definidas. Si no eres muy especialista, o si sólo te importan los resultados y no cómo se llega a ellos, las cosas no son muy distintas.

Eso no justifica el que nos esforcemos en nombrar y entender cada tecnología por sí misma, pero hace más disculpable,mucho más disculpable. a aquel que no lo consigue.

Pero no dejemos de intentarlo, por favor.

Nosotros, no dejaremos de hacerlo.

viernes, 20 de enero de 2017

Un poco de Deep Learning con Daniel Graupé

En 'Deep Learning Neural Networks' tenemos un austero y bastante conciso libro de texto sobre redes neuronales y su aplicación en deep learning. No se detiene el autor en florituras ni se adorna lo más mínimo. Simplemente, explica los conceptos de una manera en general breve y directa.

El libro nos habla básicamente de tres cosas: los mecanismos comunes en redes neuronales, la descripción de las topologías más comunes y una serie de casos de estudio sencillos realizados por estudiantes de un curso del que el autor, Daniel Graupe, es profesor. Y, para ello, se estructura en nueve capítulos:

  • 'Deep learning neural networks': donde define lo que es una red neuronal y hace un repaso histórico del desarrollo de esta disciplina.

  • 'Basic concepts of neural networks': donde explica una serie de conceptos/mecanismos comunes en redes neuronales: el principio de Hebb, el Perceptrón, la memoria asociativa, el principio de "todo para el ganador" y la Integral de Convolución.

  • 'Back Propagation': Explica las redes de back propagation, el algoritmo definido por Rumelhart, y algunas modificaciones posteriores como el sesgo.

  • 'The Cognitron and Neocognitrón': explica estas dos redes, la segunda una evolución de la primera, definidas por Fukushima y empleadas fundamentalmente en el reconocimiento de patrones.

  • 'Deep Learning Convolutional Neural Networks': nos habla de ConvNet, la red de convolución definida por Yann LeCun y su equipo en 1998, y que según el autor es la más popular en deep learning. A esta red dedica ya algo más de espacio que a las anteriores para hablarnos de su arquitectura y luego desarrollar el funcionamiento de los componentes como las capas de convolución, la retropropagación, la unidad de rectificación lineal, las capas de pooling, el dropout y la capa de salida.

  • 'LAMSTAR-1 and LAMSTAR-2 Neural Networks': el capítulo más extenso donde describe las redes LAMSTAR, diseñadas y patentadas por el autor, inspiradas en el funcionamiento del sistema nervioso central y utilizadas fundamentalmente como memoria a gran escala para el almacenamiento y recuperación de información. Nos detalla su estructura y paso a paso cómo se realiza el ajuste y aprendizaje

  • 'Other Neural Networks for Deep Learning': nos cuenta, de forma más resumida, las características de otras redes neuronales, en concreto, las Máquinas de Boltzman, las redes recurrentes (Deep Recurrent Learning Neural Networks) y las Wavelet.

  • 'Case Studies': Es una breve explicación de 20 casos de estudio realizados por estudiantes de cursos del autor. De estos casos de estudio se añade además, en un apéndice, el código fuente.

  • 'Concluding comments': Hace un resumen del libro y unos comentarios finales.

Lo mejor de 'Deep Learning Neural Networks' es, probablemente, lo ordenado y directo que es, cómo estructura y clasifica el material de un forma clara y precisa. A cambio, quizá le falta un poco de contexto, un poco más de explicación y, los más especialistas, probablemente echen de menos también algo más de profundidad en la explicación de las redes salvo, tal vez, en el caso de las redes LAMSTAR una brevedad que, sin embargo, agradecerán probablemente aquellos que se acerquen a este libro como una primera introducción.

En conjunto, nos hallamos ante un tratado sobre redes neuronales en deep learning breve y austero pero útil y creo que bastante eficaz.

Daniel Graupé

(Fuente: Traducción y ligera elaboración propia de su currículum en el Departamento de Energía Eléctrica y Computadores de la Universidad de Illinois en Chicago)

Daniel Graupé
Daniel Graupe es profesor emérito de Ingeniería Eléctrica y Computadores, profesor emérito de Bioingeniería y profesor emérito adjunto de Neurología y Medicina de rehabilitación en la Universidad de Illinois en Chicago donde co-dirige el laboratorio de procesamiento de imagen y de señal. Es miembro del IEEE. Graduado por Technion, Israel Institute of Technology y doctorado en ingeniería eléctrica por la Universidad de Liverpool.

Fue editor asociado de la revista 'IEEE Transactions on Circuits and Systems' con responsabilidad en procesado de señal y de 'IEEE Transactions on Neural Systems and Rehabilitation Engineering'. Actualmente es editor asociado de 'International Journal of Software Engineering and Knowledge Engineering' con responsabilidad en redes neuronales, de 'Neurological Research' con responsabilidad en neuroingeniería, de 'Psychline' y miembro del comité consultivo de 'BAM (Basic & Appl. Myology)'.

Es miembro del comité ejecutivo de la International Society of Bioelectromagnetism y participa en varios comités de la EEE's Signal Processing Society and Bioengineering society.

Es autor de cuatro libros de texto sobre sus campos de investigación, así como de capítulos de otros libros y 90 artículos en revistas científicas y más de 120 artículos en actas de conferencias científicas.

Antes de unirse a la Universidad de Illinois fue profesor distinguido del Illinois Institute of Technology en Chicago y ha sido profesor visitante de la University of California en Berkeley, de la Medical School of Tel-Aviv University en Israel, en el Swiss Federal Institute of Technology en Zurich, en University of Notre Dame, en Academia Sinica en Pekín y en la Northwestern University en Evanston.

Está en posesión de más de 20 patentes americanas y varias de otros paises.

Sus áreas de interés incluyen: sistemas de control, análisis de series temporales, procesado de señal, control biomédico, redes neuronales, filtrado adaptativo ciego, wavelets y stimulación eléctrica.

Ficha técnica:

EDITORIAL: World Scientific
AÑO: 2016
ISBN:  978-981-3146-44-0
PAGINAS: 280

Artículos de este blog relacionados