El código abierto es la columna vertebral del Machine Learning. Van de la mano. Los rápidos avances en este campo no hubieran sido posibles sin la contribución de la fraternidad de código abierto ya que gran parte de las herramientas más utilizadas en la comunidad de Machine Learning son de código abierto.

Cada año se agregan más y más bibliotecas a este ecosistema. En este artículo, presento un recorrido rápido por algunas de las bibliotecas que encontré recientemente y que podrían ser un gran complemento para tu pila de Machine Learning.


Tabla de contenidos

1️⃣. HummingBird

Humminbird es una biblioteca para compilar modelos de Machine Learning tradicionales entrenados en cálculos de tensores. Esto significa que puedes aprovechar la aceleración de hardware como GPU y TPU, incluso para los modelos tradicionales de Machine Learning. Esto es beneficioso en varios niveles.

  • El usuario puede beneficiarse de las optimizaciones actuales y futuras implementadas en marcos de redes neuronales;
  • El usuario puede beneficiarse de la aceleración de hardware nativo;
  • El usuario puede beneficiarse de tener una plataforma única para admitir modelos de redes tradicionales y neuronales;
  • El usuario no tiene que rediseñar sus modelos.
Arquitectura de alto nivel de la biblioteca Hummingbird | Fuente: documento oficial
Arquitectura de alto nivel de la biblioteca Hummingbird | Fuente: documento oficial

Además, Hummingbird también proporciona una API de «inferencia» uniforme y conveniente siguiendo la API de Sklearn. Esto permite intercambiar modelos de Sklearn con modelos generados por Hummingbird sin tener que cambiar el código de inferencia.

Hummingbird para convertir tu ML tradicional entrenado | Imagen del autor
Hummingbird para convertir tu ML tradicional entrenado | Imagen del autor

🛠 Github

  • https://github.com/microsoft/hummingbird

🔬 Papers

📋 Blog

Estandarización de las canalizaciones tradicionales de aprendizaje automático para la computación tensorial con Hummingbird. 

💻 Demo

La sintaxis de Hummingbird es muy intuitiva y mínima. Para ejecutar tu modelo ML tradicional en marcos DNN, solo necesitas import hummingbird.ml y agregar convert(model, ‘dnn_framework’) a tu código. A continuación, se muestra un ejemplo que utiliza un modelo de bosque aleatorio de scikit-learn y PyTorch como marco de destino.


2️⃣. Top2Vec

Los documentos de texto contienen mucha información. Examinarlos manualmente es difícil. El modelado de temas es una técnica ampliamente utilizada en la industria para descubrir temas en una gran colección de documentos de forma automática. Algunos de los métodos tradicionales y más utilizados son la asignación de Dirichlet latente (LDA) y el análisis semántico latente probabilístico (PLSA). Sin embargo, estos métodos adolecen de inconvenientes como no considerar la semántica o el orden de las palabras. Top2vec es un algoritmo que aprovecha la incrustación semántica conjunta de documentos y palabras para encontrar vectores de temas. Esto es lo que tienen que decir los autores:

Este modelo no requiere listas de palabras vacías, derivación o lematización, y encuentra automáticamente el número de temas. Los vectores de tema resultantes se incrustan conjuntamente con los vectores de documento y palabra y la distancia entre ellos representa la similitud semántica. Nuestros experimentos demuestran que top2vec encuentra temas que son significativamente más informativos y representativos del corpus entrenado que los modelos generativos probabilísticos. Incluso, los codificadores de oraciones universales pre-entrenados y el transformador de oraciones BERT están disponibles en codificación.

Una vez que se entrena un modelo Top2Vec, podemos hacer lo siguiente:

🛠 Github

🔬 Papers

📜 Documentation

https://top2vec.readthedocs.io/en/latest/index.html

💻 Demo

Aquí hay una demostración del entrenamiento de un modelo Top2Vec en el conjunto de datos de 20newsgroups. El ejemplo se ha tomado de su repositorio oficial de Github.


3️⃣. BERTopic

BERTopic es otra técnica de modelado de temas que aprovecha las incrustaciones de BERT y un TF-IDF basado en clases para crear grupos densos que permiten temas fácilmente interpretables mientras se mantienen palabras importantes en las descripciones de los temas. También admite visualizaciones similares a LDAvis. Aquí hay un resumen rápido de las capacidades de BERTopic.

🛠 Github

https://github.com/MaartenGr/BERTopic

🔬 Documentación

https://maartengr.github.io/BERTopic/

📋 Blog

💻 Demo

A visualization of the topics generated after training aBERTopic model on 20newsgroups dataset

Una visualización de los temas generados después de entrenar el modelo BERTopic en un conjunto de datos de 20 grupos de noticias.


4️⃣. Captum

Captum es una biblioteca de interpretación y comprensión de modelos para PyTorch. Captum significa comprensión en latín y contiene implementaciones de propósito general de gradientes integrados, mapas de prominencia, smoothgrad, vargrad y otros para modelos PyTorch. Además, tiene una integración rápida para modelos creados con bibliotecas específicas de dominio como torchvision, torch text y otros. Captum también proporciona una interfaz web llamada Insights para facilitar la visualización y el acceso a varios de nuestros algoritmos de interpretación.

¡Captum se encuentra actualmente en fase beta y en desarrollo activo!

🛠 Github

https://github.com/pytorch/captum

🔬 Documentación

https://captum.ai/

🎤 Diapositivas

  • Las diapositivas de NeurIPS 2019 se pueden encontrar aquí.
  • Las diapositivas del tutorial de KDD 2020 se pueden encontrar aquí.

💻 Demo

Así es como podemos analizar un modelo de muestra en CIFAR10 a través de Captum Insights:


5️⃣. Annoy

Molestar es sinónimo de vecinos más cercanos aproximados. Está construido en C ++ pero viene con enlaces en Python, Java, Scala, R y Ruby. Molestar se usa para hacer (aproximadas) consultas de vecinos más cercanos en espacios de alta dimensión. Aunque muchas otras bibliotecas realizan la misma operación, molestar viene con algunos complementos geniales. Crea grandes estructuras de datos basadas en archivos de solo lectura que se mmapean en la memoria para que muchos procesos puedan compartir los mismos datos. Annoy, creado por Erik Bernhardsson, se usa en Spotify para recomendaciones musicales, donde se usa para buscar usuarios / elementos similares.

Tenemos muchos millones de pistas en un espacio de alta dimensión, por lo que el uso de la memoria es una preocupación principal – Spotify

🛠 Github

https://github.com/spotify/annoy

🎤 Diapositivas

💻 Demo

Así es cómo podemos usar Molestar para encontrar los 100 vecinos más cercanos.


Resumen

Así que estas fueron las bibliotecas que encontré interesantes, útiles y que valía la pena compartir. Estoy seguro de que te gustaría explorarlas y ver cómo podrías utilizarlos en tu área de trabajo. Aunque ya tenemos innumerables bibliotecas con las que jugar, explorar otras nuevas siempre es divertido y así te aseguras que estás bien informado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *