stringtranslate.com

paquete ml

mlpack es una biblioteca de software libre, de código abierto y de solo encabezado para aprendizaje automático e inteligencia artificial escrita en C++ , construida sobre la biblioteca Armadillo y la biblioteca de optimización numérica ensmallen. [3] mlpack pone énfasis en la escalabilidad, la velocidad y la facilidad de uso. Su objetivo es hacer posible el aprendizaje automático para usuarios novatos por medio de una API simple y consistente , al mismo tiempo que explota las características del lenguaje C++ para brindar el máximo rendimiento y la máxima flexibilidad para usuarios expertos. [4] mlpack también tiene una infraestructura de implementación liviana con dependencias mínimas, lo que lo hace perfecto para sistemas integrados y dispositivos de bajos recursos. Sus usuarios objetivo previstos son científicos e ingenieros.

Es un software de código abierto distribuido bajo la licencia BSD , lo que lo hace útil para desarrollar software de código abierto y propietario. Las versiones 1.0.11 y anteriores se publicaron bajo la licencia LGPL . El proyecto cuenta con el apoyo del Instituto de Tecnología de Georgia y con contribuciones de todo el mundo.

Características

Algoritmos clásicos de aprendizaje automático

mlpack contiene una amplia gama de algoritmos que se utilizan para resolver problemas reales, desde la clasificación y la regresión en el paradigma de aprendizaje supervisado hasta algoritmos de agrupamiento y reducción de dimensión. A continuación, se incluye una lista no exhaustiva de algoritmos y modelos que mlpack admite:

Hay disponibles plantillas de clase para estructuras GRU y LSTM , por lo que la biblioteca también admite redes neuronales recurrentes .

Encuadernaciones

Existen enlaces a R , Go , Julia , [5] Python y también a la interfaz de línea de comandos (CLI) mediante terminal. Su sistema de enlaces es extensible a otros lenguajes.

Aprendizaje por refuerzo

mlpack contiene varios algoritmos de aprendizaje por refuerzo (RL) implementados en C++ con un conjunto de ejemplos. Estos algoritmos se pueden ajustar según los ejemplos y combinar con simuladores externos. Actualmente mlpack admite lo siguiente:

Características de diseño

mlpack incluye una variedad de características de diseño que lo hacen particularmente adecuado para aplicaciones especializadas, especialmente en los dominios de IoT e IA de Edge. Su base de código C++ permite una integración perfecta con sensores, lo que facilita la extracción directa de datos y el preprocesamiento en el dispositivo en Edge. A continuación, describimos un conjunto específico de características de diseño que resaltan las capacidades de mlpack en estos entornos:

Bajo número de dependencias

mlpack es una biblioteca con pocas dependencias, lo que la hace perfecta para una implementación sencilla de software. Los binarios de mlpack se pueden vincular estáticamente e implementar en cualquier sistema con un mínimo esfuerzo. El uso del contenedor Docker no es necesario e incluso se desaconseja. Esto la hace adecuada para dispositivos con pocos recursos, ya que solo requiere ensmallen y Armadillo o Bandicoot según el tipo de hardware en el que estemos planeando implementar. mlpack usa la biblioteca Cereal para la serialización de los modelos. Otras dependencias también son solo de encabezado y parte de la biblioteca en sí.

Huella binaria baja

En términos de tamaño binario, los métodos mlpack ocupan un espacio significativamente menor en comparación con otras bibliotecas populares. A continuación, presentamos una comparación de los tamaños binarios implementables entre mlpack, PyTorch y scikit-learn. Para garantizar la coherencia, la misma aplicación, junto con todas sus dependencias, se empaquetó dentro de un solo contenedor Docker para esta comparación.

Existen otras bibliotecas como Tensorflow Lite , sin embargo, estas bibliotecas suelen ser específicas para un método, como la inferencia o el entrenamiento de redes neuronales.

Ejemplo

A continuación, se muestra un ejemplo sencillo de cómo entrenar un modelo de árbol de decisiones con mlpack y usarlo para la clasificación. Por supuesto, puede ingerir su propio conjunto de datos mediante la función Load, pero por ahora le mostramos la API:

// Entrenar un árbol de decisiones con datos numéricos aleatorios y predecir etiquetas en datos de prueba:// Todos los datos y etiquetas son aleatorios uniformes; datos de 10 dimensiones, 5 clases.// Reemplazar con una llamada data::Load() o similar para una aplicación real.arma :: mat dataset ( 10 , 1000 , arma :: fill :: randu ); // 1000 puntos.    arma :: Fila < size_t > etiquetas =   arma :: randi < arma :: Fila < tamaño_t >> ( 1000 , arma :: distr_param ( 0 , 4 ));  arma :: mat testDataset ( 10 , 500 , arma :: fill :: randu ); // 500 puntos de prueba.    mlpack :: DecisionTree árbol ; // Paso 1: crear modelo.  árbol . Tren ( conjunto de datos , etiquetas , 5 ); // Paso 2: entrenar el modelo.   arma :: Fila < size_t > predicciones ; árbol . Clasificar ( testDataset , predicciones ); // Paso 3: clasificar los puntos.  // Imprima alguna información sobre las predicciones de la prueba.std :: cout << arma :: accu ( predicciones == 2 ) << "puntos de prueba clasificados como clase"       << "2." << std :: endl ;   

El ejemplo anterior demuestra la simplicidad detrás del diseño de la API, que lo hace similar al popular kit de aprendizaje automático basado en Python ( scikit-learn ). Nuestro objetivo es simplificar para el usuario la API y las principales funciones de aprendizaje automático, como Clasificar y Predecir. Los ejemplos más complejos se encuentran en el repositorio de ejemplos, incluida la documentación de los métodos.

Backend

Armadillo

Armadillo es la biblioteca de álgebra lineal predeterminada que utiliza mlpack. Proporciona la manipulación y operación de matrices necesarias para los algoritmos de aprendizaje automático. Armadillo es conocido por su eficiencia y simplicidad. También se puede utilizar en modo de solo encabezado y las únicas bibliotecas con las que necesitamos vincularnos son OpenBLAS , IntelMKL o LAPACK.

Bandicoot

Bandicoot [6] es una biblioteca de álgebra lineal en C++ diseñada para computación científica. Tiene una API idéntica a Armadillo con el objetivo de ejecutar el cálculo en la unidad de procesamiento gráfico (GPU) . El propósito de esta biblioteca es facilitar la transición entre la CPU y la GPU haciendo cambios menores en el código fuente (por ejemplo, cambiando el espacio de nombres y la biblioteca de enlace). mlpack actualmente admite parcialmente Bandicoot con el objetivo de proporcionar entrenamiento de redes neuronales en la GPU. Los siguientes ejemplos muestran dos bloques de código que ejecutan una operación idéntica. El primero es el código de Armadillo y se ejecuta en la CPU, mientras que el segundo puede ejecutarse en una GPU compatible con OpenCL o una GPU NVIDIA (con backend CUDA).

usando el espacio de nombres arma ;   estera X , Y ;  X . randu ( 10 , 15 ); Y. randu ( 10 , 10 ) ; mat Z = 2 * norma ( Y ) * ( X * X . t () - Y );           
usando el espacio de nombres coot ;   estera X , Y ;  X . randu ( 10 , 15 ); Y. randu ( 10 , 10 ) ; mat Z = 2 * norma ( Y ) * ( X * X . t () - Y );           

encogerse

ensmallen [7] es una biblioteca C++ de alta calidad para optimizadores numéricos no lineales, que utiliza Armadillo o Bandicoot para álgebra lineal y es utilizada por mlpack para proporcionar un optimizador para entrenar algoritmos de aprendizaje automático. De manera similar a mlpack, ensmallen es una biblioteca de solo encabezado y admite un comportamiento personalizado mediante funciones de devolución de llamadas que permiten a los usuarios extender las funcionalidades para cualquier optimizador. Además, ensmallen se publica bajo la licencia BSD .

Ensmallen contiene una amplia gama de optimizadores clasificados según el tipo de función (diferenciable, parcialmente diferenciable, categórico, restringido, etc.). A continuación, enumeramos un pequeño conjunto de optimizadores disponibles en Ensmallen. Para obtener la lista completa, consulte este sitio web de documentación.

Apoyo

mlpack cuenta con el patrocinio y el apoyo fiscal de NumFOCUS. Considere realizar una donación deducible de impuestos para ayudar a los desarrolladores del proyecto. Además, el equipo de mlpack participa cada año en el programa Google Summer of Code y asesora a varios estudiantes.

Véase también

Referencias

  1. ^ "Check-in inicial del paquete de regresión que se lanzará · mlpack/mlpack". 8 de febrero de 2008. Consultado el 24 de mayo de 2020 .
  2. ^ "Versión 4.5.0". 18 de septiembre de 2024. Consultado el 22 de septiembre de 2024 .
  3. ^ Ryan Curtin; et al. (2021). "La biblioteca ensmallen para optimización numérica flexible". Revista de investigación en aprendizaje automático . 22 (166): 1–6. arXiv : 2108.12981 . Código Bibliográfico :2021arXiv210812981C.
  4. ^ Ryan Curtin; et al. (2023). "mlpack 4: una biblioteca de aprendizaje automático C++ rápida y de solo encabezado". Journal of Open Source Software . 8 (82): 5026. arXiv : 2302.00820 .
  5. ^ "Mlpack/Mlpack.jl". 10 de junio de 2021.
  6. ^ "Biblioteca C++ para álgebra lineal acelerada por GPU". coot.sourceforge.io . Consultado el 12 de agosto de 2024 .
  7. ^ "Inicio". ensmallen.org . Consultado el 12 de agosto de 2024 .

Enlaces externos