¿Por qué no hablamos de O grande para algoritmos de aprendizaje automático?

* A2A *

Hablamos de los algoritmos Big O para ML, pero solo lo llamamos con un nombre diferente porque es un poco más complicado que el análisis Big O habitual para otros algoritmos.

Si está familiarizado con los algoritmos ML, habrá notado que muchos de ellos siguen la siguiente plantilla de código

hacer {
// hacer algo
} while (! converged)

Tenga en cuenta que la condición de terminación de este bucle “! Convergido” no depende directamente de N. Por lo tanto, hacer un gran análisis de O en algoritmos de ML se reduce a responder las siguientes preguntas:

  1. ¿El algoritmo ML converge? En caso afirmativo, ¿converge de manera determinista o probabilística?
  2. ¿Se puede mostrar el número de iteraciones necesarias para converger en función de N? y bajo que condiciones
  3. Si no podemos dar una forma explícita para el número de iteraciones, ¿podemos al menos proporcionar la tasa de convergencia?

En algunos casos, estas preguntas son fáciles de responder, pero en algunos casos, son preguntas bastante difíciles de responder. Puede intentar leer “Conferencias sobre la optimización convexa moderna de Ben-Tal y Nemirovski” para comprender cómo se realiza el análisis de complejidad, al menos para los modelos convexos.

Podemos, pero puede no ser útil hacerlo. Por ejemplo, el algoritmo K-means más simple aplicado a N puntos de datos para obtener grupos K es [math] O (NK) [/ math] en el E-step y [math] O (N) [/ math] en el M- paso. Pero esa es solo una iteración, mientras que el número total de iteraciones depende en gran medida de los criterios de terminación, porque de los datos originales no está claro cuántas iteraciones se requieren antes de que las asignaciones de clúster y los centros de clúster dejen de cambiar para un umbral pequeño (es decir, cómo se requieren muchas iteraciones para la convergencia).

Estamos hablando de encontrar un mínimo de funciones de costo cuya complejidad dependa del “valor” de los datos y no solo del “tamaño” de los datos. La función de costo es una función del conjunto de datos. Esta es una diferencia clave entre los algoritmos utilizados para ML y otros.

Entonces, en ML, generalmente el número de hiperparámetros que usa determina la complejidad.

Por ejemplo, la red neuronal tiene más hiperparámetros que otros, como la regresión logística y, naturalmente, son más difíciles de calcular.

More Interesting

Cómo mejorar en algoritmos, estructuras de datos y programación competitiva, solo por puro aprendizaje, así como por ubicaciones en empresas de primer nivel, en un año

En la tercera edición de 'Introducción a los algoritmos', ¿por qué comprar acciones es un problema de subarrays máximos?

¿Cómo se puede usar un algoritmo genético para clasificar las soluciones candidatas?

¿Qué es una cola en la estructura de datos?

¿Cuál es la diferencia entre el tipo de burbuja y el de inserción? Además del hecho de que el ordenamiento de burbujas tiene una parte ordenada y una no ordenada de una matriz.

¿Son suficientes los tutoriales del codificador superior de la estructura de datos y los algoritmos para obtener una base sólida en la programación?

¿Qué es mejor para la búsqueda binaria, la matriz ordenada o la lista vinculada?

Algoritmos: ¿Cómo reduzco la latencia en HFT?

¿Alguien ha implementado algoritmos de detección de ECG en un microcontrolador para la detección PQRS?

¿Cómo funciona el algoritmo de caminante aleatorio para la segmentación de imágenes en términos simples?

Cómo escribir un programa para encontrar el mayor número entre cuatro números, sin usar sentencias if y variables de tipo de matriz

Si saco el bucle for más interno de un bucle for anidado y lo ejecuto solo, ¿cambiará la complejidad del tiempo?

¿Qué estructura de datos debo usar para completar esta tarea?

Cómo abordar y resolver problemas complejos de codificación o algoritmos

Cómo diseñar algoritmos de aprendizaje automático desde cero