torchsom: The Reference PyTorch Library for Self-Organizing Maps
Berthier, Shokry, Moreaud et al.
This paper introduces torchsom, an open-source Python library that provides a reference implementation of the Self-Organizing Map (SOM) in PyTorch. This package offers three main features: (i) dimensionality reduction, (ii) clustering, and (iii) friendly data visualization. It relies on a PyTorch backend, enabling (i) fast and efficient training of SOMs through GPU acceleration, and (ii) easy and scalable integrations with PyTorch ecosystem. Moreover, torchsom follows the scikit-learn API for ease of use and extensibility. The library is released under the Apache 2.0 license with 90% test coverage, and its source code and documentation are available at https://github.com/michelin/TorchSOM.
academic
torchsom: La Biblioteca de Referencia de PyTorch para Mapas Autoorganizados
Este artículo presenta torchsom, una biblioteca Python de código abierto basada en PyTorch que proporciona una implementación de referencia para Mapas Autoorganizados (SOM). La biblioteca ofrece tres funcionalidades principales: (1) reducción de dimensionalidad, (2) agrupamiento, (3) visualización de datos amigable. Mediante el backend de PyTorch, la biblioteca implementa (1) entrenamiento rápido y eficiente de SOM mediante aceleración GPU, (2) integración fácil y extensible con el ecosistema de PyTorch. Además, torchsom sigue el diseño de API de scikit-learn, facilitando su uso y extensión. La biblioteca se publica bajo licencia Apache 2.0 con una cobertura de pruebas del 90%.
Aunque los Mapas Autoorganizados (SOM) siguen siendo una técnica valiosa y persistente en el aprendizaje automático, con importancia significativa en el análisis de datos moderno, las implementaciones existentes de SOM en Python presentan deficiencias notables:
Arquitectura técnica obsoleta: Falta de soporte para aceleración GPU
Integración insuficiente con el ecosistema: Dificultad para integración con marcos de aprendizaje profundo modernos
Experiencia de usuario deficiente: Falta de API amigable y funcionalidades de visualización
Problemas de mantenimiento: Bibliotecas existentes con mantenimiento insuficiente y documentación incompleta
Mediante análisis comparativo de bibliotecas SOM existentes en Python (MiniSom, SimpSOM, SOMPY, somoclu, som-pbc), se identifican los siguientes problemas:
Limitaciones de rendimiento: La mayoría basadas en NumPy, carecen de aceleración CUDA
Funcionalidad incompleta: Falta de agrupamiento integrado y funcionalidades de visualización avanzada
Prácticas de ingeniería de software insuficientes: Baja cobertura de pruebas, documentación deficiente
Pobre extensibilidad: Bajo grado de modularidad, difícil de personalizar y extender
Primera biblioteca SOM integral basada en PyTorch: Proporciona implementación completa de SOM con soporte para aceleración GPU e integración con flujos de trabajo de aprendizaje profundo moderno
Diseño de API estandarizado: Sigue el estilo de API de scikit-learn, proporcionando experiencia de uso consistente
Herramientas de visualización enriquecidas: Proporciona 9 categorías de funcionalidades de visualización, soportando topologías rectangulares y hexagonales
Funcionalidad de agrupamiento integrada: Integra algoritmos de agrupamiento K-means, GMM y HDBSCAN
Ingeniería de software de alta calidad: Cobertura de pruebas del 90%, documentación completa, diseño modular
Mediante operaciones de tensores de PyTorch y computación paralela GPU, se implementa procesamiento por lotes, mejorando significativamente la eficiencia de entrenamiento.
Kohonen, T. (1982). Self-organized formation of topologically correct feature maps
Kohonen, T. (1990). The self-organizing map
Vettigli, G. (2018). MiniSom: Minimalistic implementation of Self Organizing Maps
Pedregosa, F. et al. (2011). Scikit-learn: Machine Learning in Python
Evaluación General: Este es un artículo de ingeniería de software de alta calidad que mejora significativamente la usabilidad y rendimiento de SOM mediante implementación moderna. Aunque la innovación a nivel de algoritmo es limitada, su valor de ingeniería e importancia práctica son innegables, proporcionando un ejemplo excelente de aplicación de algoritmos de aprendizaje automático tradicionales en entornos computacionales modernos.