El aprendizaje profundo es un campo que se basa en gran medida en las matemáticas y es necesario tener una buena comprensión de las estructuras de datos y los algoritmos para resolver los problemas matemáticos de manera óptima. Las estructuras de datos y los algoritmos se pueden usar para determinar cómo se representa internamente un problema o cómo funciona el patrón de almacenamiento real y qué sucede debajo del capó de un problema.
¿Qué conocimientos de estructuras de datos y algoritmos se requieren en el campo del aprendizaje profundo y por qué se requieren?
1. Algoritmos (más importantes)
1.1 Algoritmos de Programación Dinámica (DP):
El concepto de programación dinámica ayuda a explorar todas las posibilidades y, posteriormente, es responsable de elegir el aspecto que más se espera en cada paso del cálculo. En un algoritmo genético, el algoritmo de aprendizaje por refuerzo utiliza el concepto de programación dinámica. Los modelos generativos, específicamente el modelo oculto de Markov, hacen uso del algoritmo de Viterbi, que también se basa en la programación dinámica.
1.2 Algoritmo aleatorio y sublineal:
Estos algoritmos son útiles en la optimización estocástica, la aproximación matricial aleatoria de bajo rango, el abandono para el aprendizaje profundo, la reducción aleatoria para la regresión, que son los temas cruciales de la disciplina del aprendizaje profundo, mientras que los problemas de optimización sublineal surgen en el aprendizaje profundo, como el entrenamiento de clasificadores lineales. y encontrando bolas envolventes mínimas.
1.3 Más algoritmos:
- Algoritmos de gradiente/estocásticos
- Métodos Primal-Dual
2. Estructuras de datos (lo más importante)
2.1 Listas enlazadas:
La inserción y la eliminación son operaciones de tiempo constante en la lista enlazada si se conoce el Node para el que se debe realizar dicha operación. Por lo tanto, las listas vinculadas se pueden usar para la misma aplicación que en las arrays dinámicas, ya que la array requiere el cambio de elementos si el nuevo elemento se inserta al principio o en el medio y eso es una complejidad de tiempo O (N) que es costosa, por lo tanto, la lista vinculada puede ser considerado como una opción más económica perfecta ya que también se puede convertir en arreglos.
2.2 Árboles binarios y árboles binarios balanceados:
A medida que se ordenan los árboles binarios , la inserción y la eliminación se pueden realizar en una complejidad de tiempo O (log N) y, al igual que el concepto de las listas vinculadas mencionadas anteriormente, un árbol binario también se puede transformar en una array. Ahora, en el peor de los casos, cuando los datos se distribuyen linealmente, la inserción es O (N) y se deben aplicar varias técnicas de transformación para que el árbol sea más equilibrado. Además, el algoritmo NN en Deep Learning requiere el conocimiento del árbol k-dimensional que utiliza conceptos de árbol de búsqueda binaria.
2.3 Estructura de datos del montón:
Esta estructura de datos es similar a los árboles, pero se basa en un orden vertical, a diferencia de los árboles. Sin embargo, se puede aplicar la misma aplicación para usarla con la estructura de datos Heap que se aplicó en el caso de los árboles anteriores, pero con un enfoque diferente. Además, a diferencia de los árboles, la mayoría de los montones se almacenan en una array con las relaciones entre los elementos solo implícitas.
2.4 Arrays dinámicas:
Un tema muy importante cuando se encuentra con el álgebra lineal, para ser específico, se requiere para la aritmética matricial donde una persona se encuentra con arrays unidimensionales, bidimensionales o incluso tridimensionales o cuatridimensionales. Además, se requiere una buena comprensión de Python NumPy si se trabaja con Python como lenguaje de programación principal para implementar algoritmos de aprendizaje profundo.
2.5 Estructura de datos de pila:
Basado en el concepto de «Último en entrar, primero en salir», la mayoría de las bibliotecas en Deep Learning utilizan un lenguaje de control recursivo para generalizar la clasificación binaria que puede implementarse mediante una pila. Además, las pilas son bastante fáciles de aprender, y tener una buena comprensión puede ayudar en muchos aspectos de la informática, como analizar la gramática, etc.
2.6 Estructura de datos de la cola:
Se define como «primero en entrar, primero en salir» y su enfoque se utiliza para predecir un escenario de cola, donde se puede extraer un histograma de las personas que esperan en la cola frente a la densidad de probabilidad a partir del conjunto de datos dado. Lo mismo se puede aplicar para registrar el tiempo parcial de un automóvil en una carrera de F1 donde hay colas de automóviles que ingresan a la línea de meta y el concepto de cola se puede aplicar aquí para registrar el tiempo parcial de cada automóvil que pasa y también dibujar el correspondiente histograma de los conjuntos de datos dados.
2.7 Establecer:
La estructura de datos establecida es muy útil ya que las matemáticas asociadas con Deep Learning se basan principalmente en el manejo de conjuntos de datos, por lo que esta estructura de datos es muy útil para una larga carrera en Deep Learning. Además, Python tiene un método establecido que es muy útil y muy preferido.
2.8 Hashing:
Es un método de indexación de datos que se puede aplicar para reducir la sobrecarga computacional para el aprendizaje profundo. Se utiliza una función hash óptima para convertir los conjuntos de datos en un pequeño número organizable llamado hash y, por supuesto, también se utiliza mucho el hash en contextos de recuperación y almacenamiento de información. Hashing fue una de las metodologías clave para manejar big data mucho antes de que «big data» fuera un término ampliamente utilizado y muestra la capacidad de hashing.
2.9 Gráficos:
Esta estructura de datos tiene una gran influencia en el campo del aprendizaje automático. Por ejemplo, en la predicción de enlaces, para predecir los bordes faltantes que es más probable que se formen en el futuro o predecir las relaciones faltantes entre entidades en un gráfico de conocimiento. Por lo tanto, debe tener competencia con la estructura de datos Graph para aprendizaje profundo o aprendizaje automático.
Referencias:
- Más información sobre la estructura de datos
- Aprenda sobre varios algoritmos asociados con el aprendizaje profundo
Publicación traducida automáticamente
Artículo escrito por luffysenpai y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA