Entradas

Redes neuronales capsulares

Autor: Matteo Alberti

Traductor: Paula Vidal

 

Las redes neuronales convolucionales obtienen grandes resultados cuando los datos que estan en fase de prueba, resultan ser muy similares a los utilizados en la fase de aprendizaje, pero, en caso de rotaciones, traducciones o transformaciones, estos resultan sujetos a una falta de capacidad para generalizar. Por lo tanto, es una práctica común proporcionarle a nuestro training set un aumento de datos y de los ejemplos de estas posibles variantes, sin embargo, obtenemos un aprendizaje mnemotécnico en nuestra red (con el crecimiento computacional vinculado a la mayor cantidad de datos) en lugar de tener un modelo capaz de generalizar bien y que distinga cada tipo de situacion.

En los últimos años, las investigaciones en el campo de computer vison (en lo que se refiere al aprendizaje profundo) se centró en cómo aumentar la profundidad de una red, agregando más capas (capas) para lograr un mayor grado de abstracción (comenzando desde las primeras capas convolucionales capaces de extraer formas pequeñas, ángulos o intensidad de color, vamos paso a paso combinando características simples en diseños cada vez más complejos)

Para hacer esto, tenemos que mantener bajo control el número de parámetros (y los tiempos computacionales) usamos un operador, común en todas las redes profundas, osea un pooling (para ser precisos, la versión llamada max-pooling) que nos permite que reduzca el número de parámetros reduciendo progresivamente el componente espacial seleccionando los valores más altos pero perdiendo la información espacial relacionada con las características extraídas.

 

1

 

Por lo tanto, la investigación sobre la arquitectura de las redes neuronales se centra progresivamente en el objetivo de aprender a generalizar mejor en lugar de proporcionar datos cada vez más procesados. Se realizó un primer paso con las redes neuronales capsulares, donde nuestro objetivo es obtener una Equivariancia (invarianza de las rototraslaciones) que reemplace al operador de pooling con una nueva estructura denominada: Dynamic Routing

  

Introduccion

Una cápsula es un grupo de neuronas. La actividad de un vector de una cápsula representa los parámetros de instanciación cuando un objeto (o parte de él) viene detectado por la red. La longitud de este vector representa la probabilidad de existencia de la clase dada, mientras que la orientación del vector codifica información espacial (por ejemplo, rotaciones y traducciones) dentro de una matriz de posa.

Matriz de Posa: es una herramienta utilizada en la representación gráfica donde la construcción de una imagen parte de una representación jerárquica de formas geométricas. En nuestro caso, el objetivo resulta ser un objetivo un tanto opuesto; deconstruir una imagen en sus componentes básicos de la cual vamos a guardar la posición relativa en referencia a las otras características

 

2.jpg

Cuando una cápsula que está en un nivel inferior se activa produce una predicción aproximada a su nodo de afiliación de las cápsulas en su nivel superior a través de una matriz de transformación. Si una cápsula de alto nivel recibe suficientes predicciones de pertenencia, se activa. Este proceso, denominado dynamic routing, permite sustituir el pooling máximo a través de una selección “inteligente” de características que se mantienen durante la fase de formación.

 

3

Clasificado la cara solo la figura de la izquierda

 

Arquitectura

 

La principal diferencia en las redes capsulares, por lo tanto, consiste en una arquitectura no profunda.

4

 Vamos Analizar las capas principales:

  • La primera capa convolucional (256 kernels, 9×9, stride igual a uno, activación ReLu)

En la primera capa convolucional vamos a convertir la intensidad de los píxeles en características de bajo nivel, no nos importa mantener la posición espacial relativa; de hecho, queremos utilizar todas esas propiedades importantes par acompartir parámetros útiles para reducir los tiempos computacionales.

Il secondo strato dunque riceve in input le features estratte tramite convoluzione:

  • PrimaryCaps consiste en dos capas ocultas

La primera capa corresponde al proceso de rendering el cual lo hemos descrito antes.

La segunda capa, por el contrario, es convolucional (32 cápsulas 8 dimensionales) donde cada cápsula representa una característica extraída, por lo tanto, a través de una convolución de 9×9 kernels y un ritmo igual a dos.

El output de PrimaryCaps consiste por lo tanto, en cápsulas de 32x6x6 8 dimensiones.

  • DigitCaps

 

La última capa por reproducir en forma vectorial h FC-Layer, es decir, vamos a reducir el número de neuronas (en este caso de cápsulas) para obtener una para cada clase del objetivo

 

Resumiendo las principales innovaciones:

  • Reemplazar las neuronas con las cápsulas
  • Reemplazo de max-pooling con dynamic routing
  • Nueva función de activación
  • Arquitectura no profunda

 

Función de activación

Como se introdujo anteriormente, queremos que la actividad vectorial producida por una cápsula represente la probabilidad de existencia de la data feature . Entonces, necesitamos una nueva función de activación que ya no funcione con escalares sino con vectores:

.

La siguiente función, llamada“squashing” no hace nada más que normalizar en nuestro vector entre cero y uno sin modificar la orientación del mismo vector.

Esto nos permite no solo Equivariance sino, en el caso de la detección de rostros, por ejemplo, podemos saber si y cuántos grados gira la cara.

5

Dynamic Routing

Dynamic Routing no es solo un max-pooling que seleziona el número de conexiones de una manera más inteligente, nos permite preservar, como se describió anteriormente, la “jerarquía entre las partes”El Dynamic Routing quindi es un proceso iterativo, en la fase directa, que conecta cápsulas con actividades  similares.

 

2.jpg 1

En cada iteración cada cápsula produce una matriz de multiplicación con la salida de las cápsulas anteriores seleccionando solo aquellos con mayor producto escalar y orientación similar, analizando:

 

5 1

 

1)  Cápsulas en el nivel l y su salida  , r número de iteraciones de routing

2)  coeficiente temporal necesario para la iteración inicializada a cero

4)   Es pesado para cápsulas de “bajo nivel”, el uso del softmax para obtener un escalar no negativo con suma a uno. La primera iteración     la misma para todas las cápsulas que inician con

5) Para cada cápsula de “alto nivel”, calculamos una combinación lineal de los datos de entrada pesados con los coeficientes  , es decir, vamos a sumarlos y redimensionarlos

6) Aplicamos la función squash para “normalizar” a 1 y preservar la orientación del vector

 

 

Entrenamiento de una red capsular

Una vez fijado el forward pass a través del dynamic routing, vamos a entrenar nuestra red a través de una función de doble pérdida.

  • La primera parte se entrena a traves de una backpropagation como en las clasicas CNN , entonces entrenemos los siguientes pesos  para maximizar la norma de la cápsula  relativa a la de clase objetivo  ()
  • Otra versión de la red usa un MLP (como Autoencoding) para reconstruir la imagen de entrad

Nuestra función de pérdida será dada por Loss Funcion =  + p

Donde el término p no es más que un término de penalización para no afectar excesivamente a la segunda parte

 

2.jpg 2

 

Esta función de autocodificación es posible porque dentro de cada capsula final (una por cada clase del objetivo) toda la información está codificada para reconstruir la imagen. Entonces podemos crear una especie de función discriminativa que compare los datos de entrada con el target reconstruido usando la información de la matriz de posa.

 

Accuratezze raggiunte

1 1

 

Además de la precisión clásica, es interesante evaluar las propiedades intrínsecas de este modelo

Parametros CNN: 35.4 M (Deep)

Parametros Capsnet (8.2 M)

El número de parametros resulta significativamente más bajo debido a la menor cantidad de datos. Pero difiere mucho del large-dataset de gran tamaño en cuanto, el mecanismo aún no está optimizado

 

Resistencia a las transformaciones relacionadas:

CNN 66%

CapsuleNet 79%

 

Alta capacidad discriminatoria en objetos superpuestos:

 

2.jpg 3

Gracias a su capacidad de reconstrucción, no solo podemos clasificar sino segmentar objetos superpuestos (uno de los grandes límites de las redes neuronales convolucionales)

 

Cómo implementar una red neuronal artificial para jugar FIFA 18

Autor: Chintan Trivedi

Linkedin: https://www.linkedin.com/in/chintan-trivedi-78665774/

Traductor: Paula Vidal

 

El A.I. Los bots, es decir, programas capaces de actuar,  son generalmente programados con un conjunto  reglas  prioritarias las cuales se comunican con el juego. En la mayoría de los casos, este enfoque es suficientemente efectivo para que el robot imite el comportamiento humano. Sin embargo, en muchos contextos todavía es muy simple distinguir entre un bot y un ser humano real. Por lo tanto, consideraremos esta pregunta: ¿qué pasaría si dejamos que el robot comprenda de forma autónoma la observación del juego humano, sin usar reglas empíricas?

Esto requiere un juego donde sea posible recopilar este tipo de datos sobre el comportamiento de los jugadores y FIFA 18 (dudas). Al registrar nuestras acciones y decisiones durante la fase de juego nos permite implementar un bot basado en el aprendizaje profundo, sin que sea necesario requerir una programación de cada regla del juego.

 

4 1

4 1

 

El código para este proyecto y el modelo ya entrenado se pueden encontrar aquí.

Mecanismos del juego

Para implementar un tipo de bot no es necesario acceder a ningún código interno. Es mas simple de lo que piensan basta solo una simple captura de pantalla de la ventana del juego para encender nuestro motor. Este último procesa la información visual y realiza sobre la base de ellos una acción que se comunica al juego a través de una simulación de la presión de las teclas. Por lo tanto, el procedimiento se repite para cada paso

 

Ahora que tenemos un input  y el  conjunto de capturas de pantalla es esto que permite que el bot actúe,  la parte interesante es:  como viene constituida la  inteligencia artificial y como esta aprende del juego. Esto se hace primero 1) usando una red neuronal convolucional (CNN) para procesar las pantallas y, en segundo lugar, 2) usando redes de memoria a corto y largo plazo (LSTM) para decidir sobre la acción más apropiada.

 

 

 

Paso 1) entrenar una red neuronal convolucional (CNN)

Los CNN a menudo son conocidos por su capacidad para individuar objetos en una imagen con gran precisión. Al combinarlo con poderosas GPU y arquitecturas de redes inteligentes, podemos obtener un modelo de CNN que opera en tiempo real.

5 2

5 2

 

Para hacer que nuestro bot procese la imagen que se le proporcionó como input, utilizamos una CNN rápida y extremadamente ligera llamada MobileNet. El mapa de las características, extrapolado de la red, representa una comprensión profunda de la imagen, logrando identificar datos tales como la posición de los jugadores y otros objetos de interés en el espacio de la pantalla. Este mapeo se usa luego con una caja múltiple que con una sola toma para identificar a los jugadores en el área de juego, junto con la pelota y el objetivo.

6

6

Paso 2) entrenar redes de memoria a corto y largo plazo (LSTM)

7

7

Ahora que tenemos una comprensión de la imagen, podemos continuar con el siguiente paso, ahora inicia acción. Sin embargo, no podemos limitarnos al estudio de una sola pantalla para decidir cómo actuar, sino que deberíamos mirar una secuencia corta de ellas. Aquí es donde entran en juego los LSTM porque se sabe que modelan una secuencia de tiempo y datos. Cada cuadro consecutivo se utiliza como un paso de tiempo en nuestra secuencia, y para cada uno de ellos se extrae un feature map  utilizando el modelo CNN. Estos últimos se introducen simultáneamente en dos redes LSTM.

La prima rete LSTM ha la funzione di capire quali movimenti il giocatore necessita di fare ed è, quindi, un modello di classificazione “multi-classe”. La seconda LSTM riceve lo stesso input ma deve, invece, decidere quale azione scegliere tra passaggio corto, cross, passaggio filtrante e tiro. È quindi anch’essa un modello multiclasse. Gli output prodotti da queste due classificazioni sono poi convertiti nella pressione dei tasti che controllano le azioni di gioco.

Le reti sono state allenate sulla base di dati collezionati attraverso il gioco manuale, la raccolta delle immagini e la pressione del tasto corretto.

La primera red LSTM tiene la función de comprender qué movimientos necesita hacer el jugador y, por lo tanto, es un modelo de clasificación “multi-clase”. La segunda LSTM recibe la misma entrada, pero en su lugar debe decidir qué acción elegir entre pase corto, cross, pass y un tiro. Por lo tanto, también es un modelo multiclasado. Los resultados producidos por estas dos clasificaciones se convierten luego en la presión de las teclas que controlan las acciones del juego.

Las redes estan capacitadas sobre la base de los datos recopilados a través del juego manual, la recopilación de imágenes y cuando tocas el botón correcto.

Evaluación del rendimiento del bot

No pudimos evaluar el rendimiento del robot, excepto al dejarlo jugar. Después de solo 400 minutos de entrenamiento, el bot ha aprendido a correr hacia la meta del oponente, hacer pases delanteros y tomar una foto de la pantalla cada vez que detecta un gol. En el modo principiante de FIFA 18, ya ha anotado 4 goles en seis partidos, uno más que Paul Pogba durante la temporada 17/18.

Los videos del robot en acción se pueden encontrar aquí.

 

 

conclusiones

Las impresiones de estos enfoques de implementación de bot son ciertamente positivas. Con un entrenamiento bastante limitado, el bot logró comprender las reglas básicas del juego: moverse hacia la meta del oponente y empujar la pelota hacia la red. Sin duda sería capaz de alcanzar el nivel de rendimiento humano cuando se someta a muchas más horas de entrenamiento, lo que podría ser fácilmente recogido por el desarrollador del juego. Además, extender el modelo de entrenamiento al lanzamiento real de juegos haría que el comportamiento del robot fuera mucho más natural y realista.