¿Cómo son útiles la estructura de datos y los algoritmos en el aprendizaje automático?

Gracias por el A2A.

Importancia de las estructuras de datos en el aprendizaje automático:

Una estructura de datos es una disposición de datos con el fin de poder almacenar y recuperar información. Por lo general, una estructura de datos es alguna representación física de un ADT.

La estructura de datos elegida para un tipo de datos debe cumplir con las limitaciones de recursos del problema.

Ejemplo : en un sistema contable,

  • La creación y eliminación de una nueva cuenta puede ser lenta
  • La búsqueda y actualización del saldo de una cuenta determinada debe ser extremadamente rápida.

Estas son las preguntas extremadamente importantes que debe hacer para determinar compensaciones aceptables:

  • ¿Se puede completar la estructura de datos al principio, o habrá inserciones entremezcladas con eliminaciones, búsquedas, actualizaciones y otras operaciones?
  • ¿Se pueden eliminar elementos de la estructura?
  • ¿Se procesarán siempre los artículos en un orden bien definido o se deberá admitir el acceso aleatorio ?
  • Para que los sistemas sean económicos, los datos deben estar organizados (en estructuras de datos ) de tal manera que permitan una manipulación eficiente (mediante algoritmos ).
  • Elegir los algoritmos y las estructuras de datos incorrectos hace que un programa sea lento en el mejor de los casos e insostenible e inseguro en el peor.

Importancia de los algoritmos en el aprendizaje automático:

Diseñamos algoritmos para llevar a cabo el comportamiento deseado de un sistema de software. Los buenos programadores tienden a utilizar el refinamiento gradual al desarrollar algoritmos, y entienden las compensaciones entre diferentes algoritmos para el mismo problema.

Algoritmos de clasificación

Existen varios esquemas de clasificación para algoritmos:

  • Por dominio del problema : numérico, procesamiento de texto (coincidencia, compresión, secuenciación), criptología, división equitativa, clasificación, búsqueda, geometría computacional, redes (enrutamiento, conectividad, flujo, extensión), visión por computadora, aprendizaje automático.
  • Por estrategia de diseño : divide y vencerás, codicioso, transformación algebraica, programación dinámica, programación lineal, fuerza bruta (búsqueda exhaustiva), retroceso, bifurcación, búsqueda heurística, algoritmos genéticos, recocido simulado, enjambre de partículas, Las Vegas, Monte Carlo, algoritmos cuánticos.
  • Por complejidad : constante, logarítmica, lineal, linealítica, cuadrática, cúbica, polinómica, exponencial.
  • Alrededor de las estructuras de datos centrales y su comportamiento: si (1) organizacional: conjunto, lineal, jerárquico o de red; o (2) implementacional: tablas hash, listas de omisión, árboles rojo-negros, árboles ab, árboles cartesianos, redes neuronales, redes bayesianas, enjambres.
  • Por una de las muchas dimensiones de implementación : secuencial versus paralelo, recursivo versus iterativo, determinista versus no determinista, exacto versus aproximado,….

Elegir el algoritmo correcto

Elegir el algoritmo correcto es a la vez

  • un arte , porque a menudo se requieren inteligencia, perspicacia, ingenio y suerte para encontrar algoritmos eficientes para ciertos problemas
  • una ciencia , porque los principios del análisis de algoritmos y los patrones algorítmicos ampliamente aplicables se han desarrollado con el tiempo para su uso.

Los clásicos

La historia es importante. Con el tiempo, muchos algoritmos se han vuelto conocidos (por diversas razones). Algunos de estos son:

  • MCD de Euclides
  • La transformación rápida de Fourier
  • Prueba de primalidad de Miller-Rabin

Recursos:

Tipos de estructuras de datos: estructuras de datos relacionadas con algoritmos de aprendizaje automático

En palabras simples, Machine Learning (ML) es una técnica informática que tiene sus orígenes en la Inteligencia Artificial (IA) y las estadísticas. El propio ML trata sobre algoritmos estadísticos y estructuras de datos. Las soluciones de ML ampliamente utilizadas son Clasificación, Regresión y Agrupación, que son implementaciones de algoritmos estadísticos complejos (técnicas) y estructuras de datos conocidas como modelos de datos.

Los algoritmos y las estructuras de datos no son dominios de las disciplinas de Ingeniería de Software únicamente. Uno debe saber que ML es otra disciplina (además de la programación típica de escritorio, web, móvil, base de datos, big-data, controladores de dispositivos, etc.) en Ingeniería de Software. Cada solución de ML funciona en modelos de datos específicos (conjuntos de datos enormes; estructura de datos con tipos de datos como variables continuas o discretas o categóricas) utilizando el tipo adecuado de algoritmos estadísticos.

El tipo correcto de estructuras de datos es clave para cada algoritmo óptimo. Solo las derivaciones matemáticas o las técnicas estadísticas no pueden actuar sobre un volumen de datos tan enorme y rápidamente cambiante. Necesita cierto grado de codificación para personalizar las aplicaciones para escalar y producir resultados en consecuencia que puedan ser consumidos por usuarios comerciales, tomadores de decisiones, estadísticos, etc. Por lo tanto, el conocimiento de algoritmos y estructuras de datos que se practican típicamente en Ingeniería de Software ayuda a crear o conceptualizar optimizados Modelos de datos y técnicas de procesamiento de grandes conjuntos de datos.

¡Espero que ayude!

Digamos que quieres trabajar con redes neuronales. Bueno. Las NN tienen multiplicaciones matriciales en su corazón. Digamos que nunca has oído hablar de las matrices. ¿Cómo consigue que la máquina funcione sin usar matrices como la estructura de datos principal aquí?

Digamos que quieres trabajar con Random Forests. Bueno. Los RF tienen árboles de decisión en su corazón, que comúnmente usan particiones recursivas de conjuntos para construirse. ¿Cómo haces esto de nuevo? ¿Olvidé mencionar que no puede usar algoritmos (en este caso, recursividad)?

¿NNs y RFs no son tu estilo? Veamos algo clásico. Decir una SVM. Estás trabajando para maximizar el margen. Espera un segundo. ¿Cuál es el margen? Necesitarás un algoritmo para resolverlo.

Sin embargo, hemos ido demasiado lejos. No se necesita todo eso para golpear la pared llamada “DSA”. Desea almacenar sus datos. ¿Cómo se almacena sin el uso de estructuras de datos y cómo se accede a esos datos sin algoritmos para extraerlos de la estructura de datos?

Todas las aplicaciones basadas en CS requieren DSA. En ML son especialmente útiles ya que pueden ser la diferencia entre entrenar su red durante 5 días o 4 horas [1] o decir entre obtener un rendimiento de nivel de DIOS y un rendimiento no tan bueno [2].

Notas al pie

[1] [1709.02755] RNN de entrenamiento tan rápido como CNN

[2] [1705.08039] Incrustaciones de Poincar para aprender representaciones jerárquicas

En mi opinión, el conocimiento de algoritmos y estructuras de datos es útil para todos los campos de la informática, incluido el aprendizaje automático. Tener conocimiento del algoritmo y las estructuras de datos sirven como los bloques de construcción básicos para desarrollar el pensamiento algorítmico y las habilidades lógicas, que son dos de los rasgos más importantes para cualquiera que trabaje en el campo de la informática.

Es posible que haya escuchado mucho esto, que un ingeniero de ML pasa la mayor parte de su tiempo recolectando datos y convirtiéndolos en una forma útil. Este es un lugar donde uno usaría algoritmos y estructuras de datos de manera bastante extensa. Por ejemplo, supongamos que el conjunto de datos recopilados tiene una dirección postal como columna. Ahora los algoritmos de ML no pueden funcionar en cadenas directamente, ni se requiere la dirección completa para la tarea de ML, sino que desea una parte de la dirección para su tarea, digamos el número de la calle o el estado (o algún otro dato catergógico) . Aquí es posible que deba aplicar algún Algoritmo de cadena para extraer la información requerida. Ahora recuerde que tendría un conjunto de datos con cientos de miles de direcciones. Sin el conocimiento de cómo implementar un algoritmo adecuado y optimizado, la tarea puede llevar mucho tiempo y puede dar lugar a resultados inexactos (algo que uno querría evitar).

Entonces, sí, el conocimiento de Algorithm and Data Structures es realmente útil para alguien que quiera explorar o trabajar en Machine Learning.

El aprendizaje automático se compone de técnicas sofisticadas, enfoques basados ​​en principios y métodos científicos que se basan en estadísticas , optimización , probabilidad e ideas completamente diferentes, como árboles de decisión , SVM y redes neuronales.


Ahora combina estas ideas para desarrollar un algoritmo para realizar tareas específicas, por ejemplo: –

  • Reconocimiento facial
  • Predicción del tiempo
  • Drones voladores autónomos [ Ref : Drone usa IA y 11,500 choques para aprender a volar [1]]
  • Vehículos sin conductor
  • Agrupando Flores / Animales
  • Clasificación de porno ( ¡Sí! ¡Lo leíste bien, y estoy trabajando en uno actualmente!)

… y una gran cantidad de otras tareas.

Para materializar estos algoritmos de manera efectiva, debe ser bueno en Data Structures.

  1. Si la implementación es de mala calidad!
  2. ¡Si sus estructuras de datos implementadas no son efectivas!
  3. Si el algoritmo está descuidado!

¿Resultará un programa eficiente?

Y si lo hará, tendrá un diseño muy malo, que probablemente sería muy lento, consumirá todos sus recursos informáticos y probablemente hará más mierda épica .

Para crear prototipos o probar una idea rápidamente, esto puede ser aceptable.

Pero para la demostración ante el público en vivo o para ser utilizado en sistemas de producción ,

[matemáticas] Yo: [/ matemáticas]

[matemática] Quorans: [/ matemática]

[matemáticas] Yo: [/ matemáticas] (otra vez)


Así que creo que debes aprender todos estos componentes básicos y tratar de juntarlos de manera eficiente para hacer algo útil.

Gracias.

def (about_me): # Sígueme si te gustó esto 🙂

Piyush Raj (@ 0x48piraj) | Gorjeo

Notas al pie

[1] Drone usa inteligencia artificial y 11,500 choques para aprender a volar

Afirmo algo bastante controvertido: no, el conocimiento de las estructuras de datos y los algoritmos no es tan útil para la mayoría de los profesionales del aprendizaje automático.

En primer lugar, hay un requisito básico de conocimiento aquí: definitivamente debe saber sobre tablas hash, listas vinculadas y un poco sobre gráficos y algunos de los algoritmos básicos asociados. Sin embargo, las estructuras de datos más específicas y el conocimiento de algoritmos no lo ayudarán como profesional de ML.

En segundo lugar, hay una advertencia importante: si le interesa construir sistemas de ML de producción , necesita saber más sobre algoritmos y sistemas que si está aplicando ML en entornos que no son de producción (por ejemplo, de investigación). La mayoría de los científicos de datos parecen trabajar en esto último, así que me concentraré en eso.

La mayor parte del trabajo de un científico de datos probablemente se centra en comprender sus datos y construir modelos basados ​​en este entendimiento. Los detalles algorítmicos de los modelos mismos generalmente han sido resueltos por otros. Esto significa que ignorar los detalles de qué estructuras de datos y algoritmos se utilizan para hacer que sus modelos funcionen rápidamente está bien.

Además, los “algoritmos” de ML no son similares en sabor a los algoritmos tradicionales que puede encontrar en CLRS. No saber lo último no perjudicará tu comprensión de lo primero.

El argumento de que es difícil discernir si un problema requiere o no una solución de LD sin un conocimiento profundo de los algoritmos tradicionales no estadísticos parece engañoso. La mayoría de los problemas de ML tienen una estructura bastante clara y es bastante fácil identificarlos, incluso si no sabes nada sobre los montones o los árboles de Van Emde Boas.

Lo responderé de manera bastante simple: ¿cómo sabrá cuándo o cuándo no aplicar Machine Learning si no comprende los algoritmos, ni siquiera entra en las estructuras de datos? Por ejemplo, no quieres ser ese tipo que intenta aplicar enfoques de IA metaheurísticos y sofisticados cuando los informáticos y los matemáticos ya tienen un algoritmo eficiente para el problema. Utiliza cosas como el aprendizaje automático cuando se queda sin herramientas o cuando un problema tiene una estructura que le permite tener sentido aplicarlo. Imagine que le dan una linterna que tiene un haz de luz intenso pero muy estrecho y tiene que caminar por un bosque oscuro. Conocer las áreas circundantes fuera del aprendizaje automático o aquellas en las que se basa el aprendizaje automático (muchos algoritmos) tomará esa linterna de una luz intensa que es casi inútil a una que te ayudará a salir del bosque. Esto no es solo cierto para el aprendizaje automático, las áreas más avanzadas de ciertas materias en CS que dependen de materiales más fundamentales. Los algoritmos son uno de los temas centrales que sustentan todas las CS.

Tomemos un problema de algoritmo muy simple. Encuentra el máximo en una matriz. ¿Lo necesitarías para ML? Absolutamente.

Digamos que tiene datos de entrenamiento, un conjunto de desarrollo y un conjunto de prueba. Usted entrena su modelo en el juego de trenes, lo prueba en el juego de desarrollo, para cada época. Inicialmente, se ajustará mejor y mejor (suponiendo que su modelo funcione) en los conjuntos de entrenamiento y desarrollo. Pero luego se adapta al conjunto de trenes y la precisión del conjunto de desarrolladores disminuye. Toma el modelo correspondiente a la mejor precisión del conjunto de desarrollo y lo aplica en el conjunto de prueba. ¿Necesitas algo de array-min?

La estructura de datos y el algoritmo son una herramienta básica para el aprendizaje automático. Debe hacer una base sólida de todos y cada uno de los conceptos de ds y algoritmo y luego buscar estadísticas y probabilidad después de comenzar el aprendizaje automático porque el aprendizaje automático se basa en la ciencia de datos, debe saber cómo para mantener una forma organizada de datos para un uso eficiente …… .. Espero que sea útil para usted.

Usar una biblioteca de IA, comprender cómo funciona puede ser útil, pero no es necesario. El desarrollo de nuevas tecnologías de IA, DS y Algo son imprescindibles. Echa un vistazo al código dentro de algunas de las bibliotecas de IA como TensorFlow, verás lo que quiero decir.

Mucho. Además, el deseo de las matemáticas.

More Interesting

¿Por qué no hay soluciones a pedido de Hadoop para múltiples inquilinos?

¿Cuáles son los conceptos de software que todo programador debe saber?

¿Cómo podemos hacer un programa para encontrar la suma y el promedio de los valores de la matriz? ¿Por favor ayuda?

Sin el uso de un generador de números aleatorios, ¿cuál es el método más complicado que se te ocurre para generar una serie de números enteros?

¿Cuál fue tu algoritmo favorito del que aprendiste mucho?

¿Cuáles son algunas preguntas asombrosas de CodeChef con soluciones comprensibles que me ayudarán a aprender nuevos métodos y conceptos?

Dada una matriz con 1s y 0s, necesitamos crear una matriz tal que a [i] [j] = 1, si solo cada elemento en la fila i y columna j es 1, de lo contrario 0. Tenemos que usar un espacio constante y tener Una óptima complejidad temporal. ¿Cuáles son algunas posibles soluciones?

Cómo realizar una operación de revolución usando un treap

¿Cómo se vinculan los nodos al mismo nivel en un árbol binario?

¿El aprendizaje automático funciona modificando algoritmos o modificando datos y variables?

¿Por qué SuperMemo no es tan fácil de usar como Anki?

Dado un conjunto etiquetado de nodos, ¿podemos 'siempre' construir un árbol de búsqueda binario (BST) para ellos?

Tenemos una serie de N palabras, ¿cómo podríamos clasificarlas con O (N) complejidad de tiempo?

Con la complejidad de O (n) u O (1) u O (log n), ¿cómo encuentro cuándo se romperá una bola rompible cuando se lance desde un piso de un edificio que tiene más de 100 pisos?

¿Cuál es exactamente la diferencia entre f (n) yg (n)?