¿Cómo se usa el cálculo en la inteligencia artificial?

Redes neuronales artificiales.

Primero, ¿qué es una red neuronal? Voy a mantener esto lo menos técnico posible. Esencialmente, tienes un montón de “neuronas” o nodos. Estos nodos están organizados en capas, donde un nodo en una capa está conectado con nodos en la siguiente capa, como se muestra en la imagen a continuación. [1]

En cada nodo, sumas todas las entradas y aplicas lo que se llama una función de activación . Una forma de pensar en esto es que cada nodo mira la suma de las señales que entran y decide si enviar o no esa señal. Matemáticamente, esta función de activación suele ser sigmoidea, ReLU o tanh, como se muestra a continuación. [2]

Además, la conexión entre nodos tiene un peso asociado con ellos. Una señal que pasa se multiplicará por el peso antes de llegar al siguiente nodo.

Con el conocimiento de lo que sucede en cada nodo y en cada conexión, ahora puede ingresar valores en la red neuronal y obtener un conjunto de salidas. Sin embargo, para que los resultados sean significativos, necesita datos de capacitación , una recopilación de datos de entrada para los que conoce los resultados esperados. Cuando envía una entrada, obtiene una salida. Puede comparar esta salida con la salida esperada. Calcula un error , a menudo con

[matemáticas] E = \ Sigma (y_i – \ hat {y} _i) ^ 2 [/ matemáticas],

donde [math] y_i [/ ​​math] es la salida real y [math] \ hat {y} _i [/ ​​math] es la salida esperada.

Esa ecuación de error representa una superficie tridimensional, con un mínimo. El objetivo del entrenamiento es encontrar ese mínimo, lo que le proporcionaría el mejor modelo para predecir el resultado correcto de una entrada.

Aquí es donde entra el cálculo.

En cualquier punto de la superficie tridimensional representado por la función de error, tiene una pendiente en todas las direcciones. Sin embargo, es probable que desee “viajar” en la dirección del mayor descenso. Para determinar la dirección del descenso más pronunciado, calcula el gradiente. Luego, ajusta los pesos de su red neuronal para avanzar su error en esa dirección.

Calcular cuánto ajustar los pesos en su red neuronal, conocida como propagación inversa , también requiere cálculo. Esencialmente, necesita la derivada parcial con respecto a cada peso. Este resultado se determina usando la regla de la cadena. Derivada parcial del error con respecto a los nodos de salida, La PD de los nodos de salida con respecto a todos los demás nodos, y la PD de todos los demás nodos con respecto a los pesos de sus conexiones de entrada, encadenados producen la PD del error con los pesos. Con estos números, puede ajustar los pesos en consecuencia en muchos pasos pequeños para minimizar el error de su modelo.

La técnica descrita en esta respuesta es el descenso de gradiente, donde reduce su error al avanzar lentamente en la dirección correcta hasta alcanzar el mínimo.

Entonces, ahí lo tienes. Las redes neuronales de entrenamiento se basan en una pila de derivadas parciales. Alégrate de que módulos como NumPy existan para ayudarte.

Adiós gracias.

Notas al pie

[1] Red neuronal artificial – Wikipedia

[2] Una introducción práctica al aprendizaje profundo con Caffe y Python

Algunas respuestas fuertes aquí, aunque tal vez un poco más dramático de lo necesario. El aprendizaje automático (ML) definitivamente no necesita cálculo, pero los métodos populares para ajustar los pesos tienden a usar funciones trigonométricas, ya que esas funciones tienen que ver con las proporciones, y con el aprendizaje, debe disminuir la cantidad de cambio en un modelo a medida que mejorar, por lo que terminamos en el cálculo de dos extremos, o los dos extremos se fusionan.

Sin embargo, otro punto interesante es que el cálculo fue uno de los primeros problemas abordados por ML incluso antes de que se llamara ML, y hasta cierto punto antes de que el nombre AI fuera incluso estandarizado. Los primeros días de la IA fueron financiados por el Departamento de Defensa de los Estados Unidos para lograr el santo grial de la traducción automática. Estados Unidos tenía muchos, muchos documentos en ruso, desde documentos técnicos hasta cables secretos, y muy pocos hablantes de ruso, por lo que si una computadora pudiera traducir del ruso al inglés, presto, tendríamos una solución, o al menos un nuevo problema de leyendo el texto traducido. Si ha utilizado Google Translate, sabrá que todavía no estamos allí.

Sin embargo, había mucha confianza porque una computadora había aprendido cálculo. Un proyecto en el MIT le había enseñado a una computadora cómo resolver problemas de cálculo presentando problemas y soluciones, en lugar de programar directamente las reglas de cálculo. El programa resultante obtuvo una A alta en la final del cálculo estándar del MIT de un semestre. Si podemos enseñarle a una computadora algo tan difícil como el cálculo, ¿podemos enseñarle algo tan simple como la traducción del ruso al inglés?

Decir ah. No.

Resulta que la traducción del ruso al inglés es mucho, mucho más difícil que el cálculo. Eso tiene mucho sentido si lo piensas; La capacidad de traducir un documento de un idioma a otro requiere varios años de esfuerzo, mientras que un estudiante con la formación adecuada puede aprender cálculo introductorio en un semestre. Además, el cálculo tiene respuestas definitivas que se pueden verificar. La traducción automática no. Esto debería haber destruido permanentemente la idea de que las humanidades son fáciles y las matemáticas son difíciles, pero nuevamente, no, la gente todavía cree eso.

No estoy seguro acerca de toda la inteligencia artificial, pero sí sé sobre el aprendizaje automático, y déjame decirte que el aprendizaje automático no podría existir sin cálculo, específicamente cálculo multivariado.

Un algoritmo utilizado en el aprendizaje automático se llama regresión logística. Si eso suena familiar, es porque también se usa mucho en estadística. Si ha tomado o leído sobre estadísticas avanzadas, reconocería que puedo detenerme aquí porque está fuertemente basado en el cálculo, pero continuaré de todos modos.

De todos modos, utiliza la regresión logística como algoritmo de clasificación en el aprendizaje automático. Para aquellos que no saben cuál es la fórmula de regresión logística es [math] y (x) = exp (b + wx) / (1 + exp (b + wx)) [/ math]. Aquí el sesgo es byw es el peso de una entrada x dada. Ahora no sabes qué son byw, pero sabes qué es [matemática] x [/ matemática] y sabes qué es [matemática] y (x) [/ matemática], así que quieres encontrar [matemática] ] b [/ math] y [math] w [/ math] de modo que satisfaga la ecuación. en la práctica, va a existir w, b, x e y (x) en matrices no como valores únicos. Ahora para estas matrices, desea minimizar la pérdida que genera la función. No recuerdo la función de pérdida para ser honesto, pero la pérdida más mínima le dará la matriz W y B exacta.

Entonces, ¿cómo encuentras el mínimo de una función? Toma la derivada, por supuesto, luego establece en 0 y resuelve para x. ¡Esto es cálculo! Por supuesto, este es un cálculo avanzado que resuelve fórmulas multivariadas, pero el concepto sigue siendo el mismo.

Por supuesto, en la práctica no tomas la derivada y resuelves 0, eso tomaría demasiado tiempo. Entonces, lo que haces es tomar el gradiente de la función. El gradiente es una generalización de una derivada, pero para funciones multivariadas. Con este gradiente, te mueves en proporción negativa al gradiente. Esto se llama gradiente decente y lo ayudará a encontrar un mínimo local que minimice su función de pérdida.

Si echas un vistazo a la mayoría de los libros de Machine Learning, sin duda explicarán mucho mejor lo anterior, pero también hablarán sobre muchos conceptos que aprendes en las clases de Cálculo, específicamente el cálculo de variables múltiples. Reconocerá símbolos, como gradientes, por todo el lugar.

Utilizamos mucho cálculo en IA (aprendizaje automático, reconocimiento de imágenes y todo). Como los algoritmos de IA no son más que una función matemática simple, ya sea una función de paso como ReLU o una función de optimización como SGD (Decente degradado estocástico). A continuación se presentan algunos ejemplos o casos de uso para el cálculo en AI / ML.

  1. Optimización: Utilizamos algoritmos de optimización como Gradientcente , que utiliza derivados para decidir si aumentar o disminuir los pesos para maximizar o minimizar algún objetivo (por ejemplo, la precisión de un modelo o las funciones de error).
  2. Probabilidades: para calcular las probabilidades de una variable en un rango usando integrales para decidir y mover / ajustar ciertos valores relacionados con ella.
  3. Cálculo predictivo en PNL: El cálculo predictivo tiene una gran contribución en los motores de procesamiento del lenguaje natural. [1]

Hay muchos más ejemplos como generalización (en regularización), varias redes de imágenes en CNN utilizan integraciones.

Déjeme saber si usted necesita más información .

Para respuestas relacionadas con AI / ML también puedes seguirme (Totalmente opcional: P)

¡¡Prestigio!!:)

Notas al pie

[1] La construcción de una base de conocimiento usando C ++ y una introducción al poder del cálculo predicado

La inteligencia artificial (IA) es un campo de estudio enormemente amplio con muchos enfoques diferentes. El aprendizaje automático (ML), un subcampo de IA, es un campo más especializado que trata con algoritmos que mejoran con ejemplos de entrenamiento. Del mismo modo que un niño aprendería a reconocer a un elefante en una foto al ver fotos de un elefante, un modelo de ML también puede aprender a reconocer a un elefante en una foto con solo ejemplos de fotos que contienen un elefante.

Entonces, ¿qué significa para una máquina aprender?

En términos matemáticos, estamos hablando de definir una medida de rendimiento que debe optimizarse. En la mayoría de los casos, consideramos una función de costo que se evalúa a lo largo de todos los ejemplos de capacitación y el objetivo es minimizar ese costo que, naturalmente, se basa en errores.

Entonces, dado un conjunto de ejemplos de entrenamiento:

[matemáticas] t = [(x_1, y_1), (x_2, y_2),…, (x_ {n}, y_ {n})] [/ matemáticas]

Un modelo de ML se puede visualizar como una función de mapeo [math] f () [/ math] con parámetros [math] w [/ math] tales que:

[matemáticas] \ hat {y} = f (x; w) [/ matemáticas]

donde [math] \ hat {y} [/ math] = salida real.

Y la medida de rendimiento puede definirse como un objetivo que deseamos satisfacer matemáticamente, definido por:

[matemática] L (t, w) = \ frac {1} {n} \ sum_ {i} ^ {n} l (y_ {i}, \ hat {y} _ {i}) [/ math]

La función de pérdida [matemática] l () [/ matemática] puede ser similar al error al cuadrado, la pérdida de bisagra o las funciones de pérdida de entropía cruzada.

Un algoritmo de ML tiene la tarea de encontrar un conjunto de parámetros óptimos definidos por [math] \ hat {w} [/ math] de modo que [math] L (t, \ hat {w}) [/ math] tenga un valor bajo aceptable , preferiblemente el valor más bajo posible.

En resumen, los algoritmos de ML deben resolver:

[matemática] \ hat {w} [/ matemática] = arg min [matemática] L (t, w) [/ matemática]

Esto requiere buscar los parámetros óptimos y cualquier persona que tenga algún conocimiento en optimización matemática puede ver claramente una manera de resolver dicho problema, a través de algoritmos de optimización basados ​​en descenso de gradiente (GD).

Esto nos lleva al cálculo, ya que los métodos de aprendizaje basados ​​en GD necesitan derivados para minimizar la función de costo. Es tan simple como evaluar [math] \ frac {\ partial L} {\ partial w} [/ math] y actualizar los pesos en cada iteración usando:

[matemáticas] w \ leftarrow w – \ lambda \ frac {\ partial L} {\ partial w} [/ math]

donde [math] \ lambda [/ math] = tasa de aprendizaje, que debe ser pequeña para evitar sobrepasar el punto mínimo, pero no demasiado pequeña porque puede conducir a una tasa de convergencia dolorosamente lenta.

El problema ahora es con la evaluación de los derivados reales del costo con respecto a los parámetros de peso en cada capa.

Es fácil hacerlo cuando solo hay una capa, pero extremadamente complicado cuando hay varias capas una encima de la otra. Dado que un modelo de una sola capa, excepto si usamos el truco del núcleo, no puede manejar los problemas exclusivos OR, NOR exclusivos o no separables linealmente, los perceptrones multicapa (MLP) cayeron en desgracia rápidamente debido a la dificultad inherente de entrenarlos.

Aquí es donde muchos investigadores se quedaron atrapados en los años 80 antes de que Geoffrey Hinton demostrara que la regla de la cadena del cálculo puede usarse para propagar errores a través de la arquitectura de la red neuronal hacia atrás para evaluar la derivada del costo con respecto a cualquier parámetro de peso siempre que Las funciones de activación utilizadas en esos nodos son diferenciables por partes.

Pasaron varios años antes de que finalmente en 2012 Geoffrey Hinton y su grupo lograran entrenar un modelo de aprendizaje profundo (DL) de una manera integral utilizando backprop en el desafiante desafío ImageNet de 1000 clases. Esto es lo que realmente energizó a la comunidad de IA y trajo la revolución DL tal como la conocemos hoy.


Avancemos un poco en profundidad sobre esta magia de backprop.

Asumiremos un NN en capas dado por:

[matemáticas] f (x; w) = f_ {n} (f_ {n-1} (… f_ {2} (f_ {1} (x; w_ {1}); w_ {2}) …; w_ { n-1}); w_ {n}) [/ math]

En inglés, significa que la función [math] f_1 () [/ math] se alimenta a [math] f_2 () [/ math] y [math] f_ {n-1} () [/ math] se alimenta a [math] f_ {n} () [/ math].

También podemos asumir una etapa de mapeo lineal intermedia [matemática] g_ {i} () [/ matemática] en la capa i como se define por:

[matemáticas] f_ {i} = \ phi_ {i} (f_ {i-1} w_ {i} ^ {T}) = \ phi_ {i} (g_ {i} (f_ {i-1}, w_ { i})) [/ matemáticas]

Donde [math] \ phi_ {i} [/ math] = función de activación en la capa i, [math] g_ {i} () [/ math] = producto de punto entre la entrada [math] f_ {i-1} [/ matemáticas] y los pesos [matemáticas] w_ {i} [/ matemáticas]

La idea es encontrar las derivadas del costo con respecto a los parámetros en cualquier capa dada i.

[matemáticas] \ frac {\ partial L} {\ partial w_ {i}} = \ frac {\ partial L} {\ partial f_ {i}} \ frac {\ partial f_ {i}} {\ partial w_ {i }}[/matemáticas]

podemos denotar

[matemáticas] \ delta_ {i} = \ frac {\ partial L} {\ partial f_ {i}} [/ math]

que es la señal de error de retroceso que puede evaluarse fácilmente en la capa de salida y propagarse de una capa a otra de manera inversa, de ahí el término algoritmo de propagación hacia atrás (backprop).

[matemáticas] \ frac {\ partial L} {\ partial w_ {i}} = \ frac {\ partial f_ {i}} {\ partial w_ {i}} \ delta_ {i} [/ math]

[matemáticas] \ frac {\ partial f_ {i}} {\ partial w_ {i}} = \ frac {\ partial f_ {i}} {\ partial g_ {i}} \ frac {\ partial g_ {i}} {\ parcial w_ {i}} [/ matemáticas]

[matemática] \ frac {\ parcial g_ {i}} {\ parcial w_ {i}} = f_ {i-1} [/ matemática]

[matemáticas] \ frac {\ partial f_ {i}} {\ partial g_ {i}} = \ Phi_ {i} (g_ {i}) [/ math]

Donde [math] \ Phi_ {i} (a) = \ frac {\ partial \ phi_ {i}} {\ partial a} [/ math], la derivada de la función de activación.

Entonces

[matemática] \ frac {\ parcial L} {\ parcial w_ {i}} = f_ {i-1} \ Phi_ {i} \ delta_ {i} [/ matemática]

Pero aún necesitamos determinar cómo se propagan los deltas. Podemos usar la regla de la cadena también aquí.

[matemáticas] \ frac {\ partial L} {\ partial f_ {i}} = \ frac {\ partial L} {\ partial f_ {i + 1}} \ frac {\ partial f_ {i + 1}} {\ parcial f_ {i}} [/ math]

y

[matemáticas] \ delta_ {i + 1} = \ frac {\ partial L} {\ partial f_ {i + 1}} [/ math]

y otra regla de la cadena

[matemáticas] \ frac {\ partial f_ {i + 1}} {\ partial f_ {i}} = \ frac {\ partial f_ {i + 1}} {\ partial g_ {i + 1}} \ frac {\ parcial g_ {i + 1}} {\ parcial f_ {i}} [/ math]

Y [matemáticas] \ frac {\ partial f_ {i + 1}} {\ partial g_ {i + 1}} = \ Phi_ {i + 1} [/ math]

[matemática] \ frac {\ parcial g_ {i + 1}} {\ parcial f_ {i}} = w_ {i + 1} [/ matemática]

Entonces esto da

[matemáticas] \ frac {\ partial f_ {i + 1}} {\ partial f_ {i}} = \ Phi_ {i + 1} w_ {i + 1} [/ matemáticas]

Y finalmente

[matemáticas] \ delta_ {i} = \ Phi_ {i + 1} w_ {i + 1} \ delta_ {i + 1} [/ matemáticas]


Por lo tanto, el cálculo se usa en el popular algoritmo de backprop que se usa para entrenar NN profundos.

Espero que esto ayude.

More Interesting

Cómo aprender IA para mi juego

¿Qué asignaturas de informática son necesarias para aprender Machine Learning e IA ya que mi experiencia es eléctrica?

¿Dónde puedo encontrar una demostración de la mejor tecnología de reconocimiento de emociones?

¿Las inteligencias artificiales tendrán sentido del humor?

¿Cuáles son algunas de las nuevas empresas de aprendizaje automático en 2016?

¿Cuál es la forma más fácil y competente de aprender IA?

¿Cuáles son las medidas cuantitativas de progreso en inteligencia artificial?

¿Cuál será la próxima gran novedad en la visión por computadora, después del rápido progreso en el aprendizaje profundo?

Con el avance del aprendizaje automático, ¿la educación superior será más un privilegio que un derecho?

¿Por qué necesitamos microprocesadores de alta velocidad para IA si el cerebro humano tiene una velocidad de aproximadamente 20-40 MS?

¿Cuál es un posible escenario en el que Google podría convertirse en Skynet?

¿Qué lenguaje de programación debo saber si quiero desarrollar inteligencia artificial?

¿Qué crm usa la inteligencia artificial?

¿Cómo se aplica el aprendizaje profundo y las redes neuronales, especialmente el aprendizaje no supervisado, en las redes informáticas?

Cómo obtener un trabajo relacionado con IA (aprendizaje automático / minería de datos / procesamiento de lenguaje natural / recuperación de información) si no tengo experiencia laboral real en ninguno de esos campos