¿Qué algoritmo relacionado con la IA conoces y cómo funciona (en términos simples)?

“Hay dos tipos de algoritmos en el mundo, los que aprenden y los que no pueden”.

– Lo bueno, lo malo y el sobreajuste

Los algoritmos que no aprenden tienen un espacio de estado y reglas para pasar de un estado a otro. Son buenos para describir juegos, por ejemplo, como las damas, cada configuración del tablero es un estado y la transición es el movimiento de una pieza en el tablero. Luego, el problema a menudo toma la forma de una búsqueda de un estado a otro para encontrar el muy difícil “Estado final” que a menudo representa a dónde quiere ir, como ganar en las damas. Los algoritmos de búsqueda y formalismos son numerosos, aquí hay una lista de complejidad creciente:

  • Búsqueda de árbol: explora el árbol de configuraciones posibles un movimiento a la vez, pero no realiza un seguimiento de la identidad de los estados, por lo que si comienza en el estado A, pasa al estado B y de alguna manera regresa al estado A, lo hará ser considerado como tres nodos diferentes en su árbol. Para decirlo simplemente, no hay ciclo en el gráfico, es un árbol .
    • Búsqueda de amplitud: para un nodo A, explore todos los movimientos posibles antes de ir a un nodo hijo. Cuando termine de explorar los movimientos, muévase al primer estado secundario y realice todos los movimientos, luego regrese a A, vaya al segundo niño a realizar todos los movimientos, etc.
    • Búsqueda de profundidad primero : vaya al final del árbol hasta que no sea posible realizar movimientos antes de retroceder

BFS = amplitud primera búsqueda— DFS = profundidad primera búsqueda – los números representan el orden de exploración

  • Búsqueda de gráficos: en la búsqueda de gráficos, mantiene en memoria sus estados anteriores, permite utilizar gráficos complejos con ciclos. Permitiría, por ejemplo, no volver a un estado que haya visitado anteriormente.
  • Representación factorizada: el espacio de estado de la búsqueda a menudo es demasiado grande y, en lugar de explorar todas las ramas posibles con el mismo interés, ahora creará ” heurística ” que otorgará una calificación para cada nodo según el modelo que tenga de su tarea. Por ejemplo, en las fichas, esta heurística podría ser para cada nodo el número de piezas que tengo menos el número de piezas que tiene mi oponente. Y exploras primero los nodos con el valor más alto
    • Poda alfa-beta: esta es una forma de modelar el comportamiento de dos agentes porque, por supuesto, jugar a las damas que solo eliges una vez y luego es el turno de tu oponente, esto permite usar tu heurística teniendo en cuenta a ambos lados. Esto permite “podar” algunas ramas del árbol para las cuales sabe que no hay forma de que el agente lo seleccione utilizando esta heurística.
    • Alfa *: esto permite calificar nodos también, pero utilizando tanto el costo para llegar a ese nodo, que ya lo sabe, como también una estimación del costo restante para llegar a su estado final. Esto se ilustra mejor con un algoritmo que intenta encontrar la distancia mínima entre dos ciudades usando carreteras.
  • Satisfacción de restricciones: ilustrado por el problema de encontrar una manera de colorear cada país en un mapa con un color entre cuatro colores posibles, de modo que ningún país vecino tenga el mismo color.
    • Algoritmo de retroceso: cada vez que no se cumple una restricción, regrese una vez en el árbol de búsqueda.
  • IA basada en el conocimiento (no es que el otro esté libre de conocimiento … pero esos algoritmos generalmente se consideran KB AI): suponga que cierto conocimiento sobre el sistema, cómo los objetos deberían interactuar juntos, tener condiciones complejas en sus acciones y transforma el espacio de estado basado en reglas en lugar de simples parejas de acción estatal. Por ejemplo, podría definir una acción posible si el estado en el que se encuentra tiene la condición A y B. Por ejemplo, en un algoritmo de planificador de transporte de carga, podría cargar la carga B en el avión P en el aeropuerto A si B está en A, P está en A y P no está lleno.
    • Lógica de predicado / primer orden : esta lógica permite objetos y funciones en esos objetos
    • Markov Logic Network: mezcla lógica y estocasticidad
    • IA relacional estadística (StarAi): también combina lógica y probabilidades

Si desea profundizar en más detalles sobre la historia de este tipo de IA, escribí un artículo al respecto hace unos meses:

Albert James Teddy – Medio

Los algoritmos de aprendizaje siempre minimizan (o maximizan) algo, quieren hacer una medida, a menudo denominada función objetivo o simplemente error , lo más pequeña posible. Hay dos tipos de algoritmos de aprendizaje basados ​​en si una retroalimentación externa indica o no la “elección correcta” que el algoritmo debería haber hecho. Si en cada decisión se proporciona una elección correcta para medir el error, se llama aprendizaje supervisado , si no se conoce a priori una respuesta correcta o incorrecta, se llama aprendizaje no supervisado . No entraré en detalles sobre el aprendizaje no supervisado, pero al contrario de lo que uno podría pensar, estos algoritmos también minimizan un error. Por ejemplo, PCA o SVD minimizarán el error de compresión / reproducción.

Ahora, supongamos que desea predecir el precio de las casas en función de su latitud, longitud, horas promedio de luz solar, tamaño y si tienen o no un jardín.

Una vez que se establece el problema, los diferentes algoritmos son diferentes formas de tomar decisiones de precios basadas en esas 5 características . El algoritmo podría usar las características tal cual o hacer que el espacio de parámetros sea más complejo agregando, por ejemplo, polinomios de las características, como [tamaño matemático] ^ 2 [/ matemático], o peor … agregando varias capas de unidades de cálculo mezclando la entrada formas lineales y no lineales, como en las redes neuronales. Pero sea cual sea el número de parámetros del modelo, el objetivo es encontrar una función, una incorporación del problema que minimice el error. Esto se realiza siguiendo el gradiente del error, respondiendo esta pregunta: si modifico este parámetro en mi modelo actual, ¿cómo variaría mi error?

Luego, el gradiente se resta del parámetro para seguir la pendiente del gradiente cuesta abajo. En su forma más simple, esto se llama descenso en gradiente . Tiene muchas advertencias y numerosos algoritmos, en particular, se han inventado métodos de muestreo para mejorar el método base, pero el descenso de gradiente es el núcleo de cualquier optimización . Está en el núcleo del aprendizaje en un espacio de error que es continuo. Continuo pero no tiene que ser lineal, por ejemplo, construyendo a partir de algoritmos que no son de aprendizaje, podrá aprender cuál es la mejor heurística para su juego de corrector a través del descenso de gradiente, y responder la pregunta: es [matemáticas] 2 * myPieces – oponentPieces [/ math] una mejor heurística que [math] 2.2 * myPieces – 1.3 * oponentPieces [/ math]?

Por ejemplo, podría seguir un gradiente de la cantidad de juegos perdidos entre 100 juegos simulados, este es un problema altamente no lineal.

Luego tiene muchos algoritmos, que van desde la simple regresión lineal hasta complejos algoritmos de IA con redes neuronales y muestreo rápido de políticas como en alpha go, o redes atencionales para el aprendizaje de una sola vez.

Esta es una lista corta de varios algoritmos capaces de aprender siguiendo un gradiente. Estoy creando una separación donde podría no ser necesario, principalmente porque a menudo se los considera diferentes, pero no porque sean intrínsecamente diferentes.

  • Árbol de decisión / bosque aleatorio: cada árbol representa un umbral difícil de decisión sobre una variable, por ejemplo, si desea predecir si un estudiante alguna vez encontrará un trabajo en Google DeepMind, puede establecer un umbral rígido en el número de publicaciones a 3 , y el número de mentores importantes a 1, para hacer su predicción para la clase 1: el estudiante “encontrará un trabajo en DeepMind”. Lo interesante es que la estructura de su decisión no está ordenada como invariante, puede tomar un modelo de decisión arbitrariamente complejo según el orden de las elecciones. Por ejemplo, si tiene varias publicaciones por debajo de 3, es posible que necesite 2 mentores. Pero por encima de 6 publicaciones, no se necesitan mentores para conseguir el trabajo de sus sueños y ser feliz para siempre.
  • Regresión lineal / Modelos lineales generales: el enfoque muy clásico de regresión, a menudo utiliza una variante de mínimos cuadrados ordinarios y, por lo tanto, tiene una solución de forma cerrada (sin necesidad de optimización). Los modelos no lineales utilizan la optimización para encontrar valores de parámetros adecuados.
  • Modelos de mezcla gaussiana
  • Regresión logística
  • Discriminante lineal
  • Máquinas Kernel: máquina de vectores de soporte
  • Modelo oculto de Markov
  • Máquina de Boltzmann restringida
  • Redes neuronales : todas están utilizando propagación hacia atrás
    • Perceptrón multicapa : representación distribuida de funciones complejas. Esta es la red neuronal clásica, organizada en capas hechas de pequeñas unidades de cómputo llamadas neuronas que reciben información, la transforma siguiendo algún tipo de función (las unidades lineales rectificadoras ReLu fueron, por ejemplo, un avance clave para una eficiente retropropagación en arquitecturas profundas). La fuerza central de las redes neuronales es que, dada una cierta cantidad de neuronas, cualquier función que respete algunos criterios de suavidad puede ser representada por la red, y no es necesario fijar su forma de antemano.
    • Redes recurrentes / redes de memoria a corto y largo plazo ( LSTM ): aproveche la invariancia del tiempo, use sistemas similares a la memoria. Esas redes usan el valor del estado de la red anterior para mantener el rastro del pasado, por ejemplo, pueden usar el valor de una capa oculta de la red (capa intermedia) en el tiempo t-1 y concatenar este vector al vector de entrada en el momento t. También podrían usar sistemas de memoria más explícitos.
    • Redes convolucionales : explotar la invariancia de traducción en el espacio de entrada. Por ejemplo, en lugar de tratar la imagen completa con cada píxel independientemente uno del otro, está utilizando un enfoque de parche deslizante. Porque la imagen de un gato no siempre está en el centro de su imagen de 400 * 400 píxeles. Puede estar en la parte superior izquierda o inferior derecha, deslizando este parche a través de la imagen puede detectar el gato donde sea que se esconda. La cosa es que la red neuronal no tiene una ventana deslizante, no seleccionan parte de las entradas, por lo que para hacer “como si” estuviera deslizando la ventana, copia y pega parches de neuronas receptoras que compartirán el mismo peso.
    • Red de atención : enfoque dinámico en dependencias temporales, espaciales, posiblemente relacionales. Permite transformar configuraciones desconocidas en una configuración conocida. Por ejemplo, imagine que está construyendo una red neuronal que debería ser capaz de imitar lo que le está mostrando, por ejemplo, si desea que un brazo robótico apunte al objeto al que apunta después de que lo observe apuntando hacia él. El problema es que puede apuntar muy rápido al objeto, o ser muy lento, o moverse, señalar varios objetos, y finalmente apuntar a este último objeto. Una red de atención podría, por ejemplo, transformar todas esas demostraciones de diferente longitud en una entrada de vector de tamaño fijo con supuestamente toda la información relevante necesaria para que la red principal comprenda la tarea. Supuestamente porque espera que aprenda a resumir con éxito, no está seguro de cuál podría ser esta representación al final, solo le pide a la red de atención que genere un vector de tamaño fijo y aprende a través del error de la red que está alimentando esta representación a. Escribí un artículo no tan pequeño en un artículo de OpenAi de 2017 que muestra el aprendizaje de imitación de una sola vez usando tales redes. Si esas redes le interesan, no dude en consultarlo / comentar si desea obtener más información.
    • Red relacional : invariancia de identidad de categoría y objeto.
    • Redes adversarias generativas : es más un entorno de aprendizaje cuando desea que el sistema aprenda a encontrar lo que mejor describe el problema cuando no sabe exactamente cómo debe escribir la función de error. Por ejemplo, no sabría cómo escribir la función de calificación de qué tan similar a un gato es una imagen de gato, deja que una red neuronal aprenda esa función de calificación y la use para entrenar a una red que intenta generar gatos … como si no hubiera suficientes gatos ya.

Tienes muchas técnicas para hacer que el descenso del gradiente sea más eficiente. Tiene métodos que manipularán la tasa de aprendizaje a medida que aprende a hacerlo gradualmente más pequeño. Un ejemplo de manipulación de la tasa de aprendizaje es el recocido simulado , que aumentará sus posibilidades de encontrar mínimos globales en un espacio no convexo.

Puede usar un enfoque probabilístico a través del muestreo con técnicas basadas en métodos de Monte Carlo de cadena de Markov ( MCMC ) o cuasi-MCMC como los métodos basados ​​en puntos . El muestreo le permite explorar el espacio más rápido que solo tendría que seguir el gradiente. Y tal vez lo lleve a lugares a los que no podría haber ido con los parámetros iniciales que seleccionó al comienzo de su búsqueda.

Impulso , también un montón de métodos, esta vez para la toma de decisiones. La idea principal es entrenar una gran cantidad de algoritmos / redes menos complejos, y hacer que todos juzguen el mismo problema, luego se toma el voto mayoritario. Esto se reproduce en redes neuronales que usan el abandono durante el aprendizaje, una técnica que permite que algunas neuronas no aprendan en ciertos ejemplos de aprendizaje, creando efectivamente un montón de mini redes dentro de grandes redes, esto reduce el riesgo de sobreajuste.

Otro método que reduce el sobreajuste es la regularización .

Finalmente, para implementar el aprendizaje en un espacio de estado como se vio anteriormente, con estados y acciones que conducen a otros estados, a menudo se utilizan métodos de aprendizaje de refuerzo . Aquí el agente tiene que aprender el valor de las acciones en estados específicos , a través del valor de la recompensa que recibe después de elegir esta acción. Lo recibe en cada acción o al final de una secuencia de acciones, lo que hace que la recompensa se propague a lo largo de la secuencia. No se supervisa necesariamente, pero supone algún tipo de mecanismo de recompensa. Es un método para implementar la optimización en un espacio de estado. Usando una descripción del proceso de decisión de Markov de su sistema, en el que el estado en el tiempo t solo depende de la acción que realice en el estado en el tiempo t-1 ( propiedad de Markov ), algunos algoritmos clásicos para RL son variantes de Q-Learning . Algunos modelos de sistemas en evolución son:

  • Proceso de decisión de Markov (MDP): el agente siempre sabe con certeza en qué estado se encuentra.
  • Proceso de decisión parcialmente observable (POMDP): el agente solo tiene información parcial sobre el estado en el que se encuentra (como un robot con un sensor defectuoso, por ejemplo). Para actualizar su modelo, el agente necesita mantener una lista de “estados de creencia” donde podría estar.

Actualmente se está investigando mucho sobre los agentes de aprendizaje de refuerzo profundo: se han descrito varios algoritmos. Utilizan redes neuronales profundas para aprender a predecir la recompensa de las acciones (como aprender una función heurística compleja para los inspectores), generalmente en espacios de estado complejos y no estructurados. Por ejemplo, podrían usar redes neuronales convolucionales si las entradas son los píxeles de una captura de pantalla en el juego. Un artículo reciente de una mente profunda que describe NEC.

.

He estado investigando en redes neuronales convolucionales ( CNN o ConvNets ) durante 3 meses para diseñar un acelerador de entrenamiento de hardware para ellos, así que creo que puedo dar una explicación de cómo funcionan.

Trataré de hacerlo lo más simple posible con algunas palabras clave técnicas. Tomemos una tarea que ConvNets puede hacer perfectamente y veamos cómo funciona, la tarea es Clasificación de objetos.

¡La clasificación de objetos es simplemente la capacidad de determinar qué es un objeto! entre muchas clases de las que tienes conocimiento previo. Puede parecer una tarea trivial para los humanos, sin embargo, es una tarea infernal para las máquinas.

¡Podemos decir fácilmente que este es un perro!

Pero, ¿cómo sabes que es un perro o sobre qué base decides o clasificas como perro? (La pregunta puede parecer estúpida pero así es como aprenden las máquinas).
:
Nosotros, en nanosegundos, podríamos decir que es un perro porque hemos visto miles, pueden ser millones, fotos de perros y sabemos cómo se ve un perro, hemos extraído inconscientemente algunas características / filtros que nos ayudan a decidir que es un perro y saber exactamente La estructura de su cuerpo. ¡Estamos entrenados muy bien!

Entonces, ¿cómo los conventos ven y clasifican esta imagen como un perro? ¡Simplemente necesitamos entrenarlos como nosotros, los humanos, estamos entrenados!

En la fase de entrenamiento , ingresamos miles de imágenes a la CNN y le decimos que todas esas imágenes contienen perros, la CNN por sí sola extraerá características o filtros que lo ayudarán a determinar qué es un perro. Las mismas reglas se aplican a diferentes clases:

Para los perros, la CNN puede extraer algunas características abstractas como estas;

Sin embargo, las características reales dentro de las capas CNN se ven así:

En el Fase de inferencia , ( después de que se entrena tan bien que se puede implementar en la vida real y clasificar los objetos por sí solo ); verificará la imagen para ver las características que aprendió (forma de boca / nariz / orejas, 4 patas, cola … etc.), si encuentra una pareja, entonces es un perro, si no, entonces es una de las otras clases.

CNN puede aprender miles de clases, por ejemplo, AlexNet recibió capacitación en 1.3 millones de imágenes que contienen clases de 1K. Aquí hay algunos ejemplos:

————————————-
Esta sección va un poco en detalles técnicos;

Un ConvNet se compone principalmente de 3 etapas de cómputos en cada capa (no necesariamente las 3 pero es el caso común)

1- Convolución : la convolución es la matemática detrás de encontrar una coincidencia o extraer una característica. Es la clave para reducir drásticamente la cantidad de pesos y los parámetros libres. CNN usa pesos compartidos en lugar de un caso de peso para cada neurona en las capas completamente conectadas.

2- Agrupación : para lograr la invariancia local y reducir las dimensiones de las capas.

3- Activación : es una operación no lineal aplicada al resultado de la agrupación, la función más utilizada es la de Unidades lineales rectificadas (Normalización) que simplemente sustituyen los números negativos con ceros; max (entrada, 0).

Puede repetir esa etapa una y otra vez e ir más profundo para reducir el error, sin embargo, el entrenamiento se vuelve más difícil y más intenso computacionalmente.

Para tener una idea de cómo las convoluciones pueden encontrar una coincidencia, imagine que el filtro o la característica es: [1 1 1 1 1], y la imagen de entrada es [1 0 1 0 1 0; 1 1 1 1 1 0; 1 1 1 1 1]. La circunvolución simplemente pasa el núcleo (filtro) sobre la imagen con un paso (paso) y multiplicación y acumulación (MAC), establezcamos el paso = 5, lo que significa que el filtro se movería 5 pasos a la vez antes de hacer otro MAC. Entonces [1 1 1 1 1] * [1 0 1 0 1; 1 1 1 1 0; 1 1 1 1 1] = [3/5; 4/5; 1]; puedes notar que da el mayor número en caso de una coincidencia.

Puedes ver el video de Brandon Roher en caso de que necesites más detalles:

verifique los enlaces a continuación:

Algoritmos de búsqueda populares de inteligencia artificial

También verifique Udacity – Clases gratuitas en línea y cursos de Nanodegrees de Google.

Consulte también los cursos de edX y Coursera | Cursos en línea de las mejores universidades. Únete gratis