Este es el código de nuestro artículo ICML sobre análisis de singularidad basado en topología:
@inproceedings { vonRohrscheidt23a ,
title = { Topological Singularity Detection at Multiple Scales } ,
author = { von Rohrscheidt, Julius and Rieck, Bastian } ,
year = 2023 ,
booktitle = { Proceedings of the 40th International Conference on Machine Learning } ,
publisher = { PMLR } ,
series = { Proceedings of Machine Learning Research } ,
number = 202 ,
pages = { 35175--35197 } ,
editor = { Krause, Andreas and Brunskill, Emma and Cho, Kyunghyun and Engelhardt, Barbara and Sabato, Sivan and Scarlett, Jonathan } ,
abstract = { The manifold hypothesis, which assumes that data lies on or close to an unknown manifold of low intrinsic dimension, is a staple of modern machine learning research. However, recent work has shown that real-world data exhibits distinct non-manifold structures, i.e. singularities, that can lead to erroneous findings. Detecting such singularities is therefore crucial as a precursor to interpolation and inference tasks. We address this issue by developing a topological framework that (i) quantifies the local intrinsic dimension, and (ii) yields a Euclidicity score for assessing the `manifoldness' of a point along multiple scales. Our approach identifies singularities of complex spaces, while also capturing singular structures and local geometric complexity in image data. }
}
Nuestro código ha sido probado con Python 3.8 y Python 3.9 en Mac OS X y Linux. Es posible que otras versiones de Python no admitan todas las dependencias.
La forma recomendada de instalar el proyecto es mediante poetry
. Si está disponible, la instalación debería funcionar muy rápidamente:
$ poetry install
Las versiones recientes de pip
también deberían poder instalar el proyecto directamente:
$ pip install .
Para reproducir los experimentos principales de nuestro artículo, enviamos conjuntos de datos sintéticos en el repositorio y ofrecemos la capacidad automatizada de descargar los conjuntos de datos de visión por computadora ( MNIST
y FashionMNIST
). Por razones de simplicidad, sugerimos reproducir primero los experimentos con nubes de puntos sintéticas, ya que se ejecutan rápidamente incluso en una computadora de escritorio estándar.
Todos los experimentos utilizan el script cli.py
, que proporciona una interfaz de línea de comandos para nuestro marco. Dados los parámetros de entrada para los anillos locales, este script calculará los valores de euclididad como se describe en el artículo. Por razones de simplicidad, toda la salida se proporciona a stdout
, es decir, la salida estándar de su terminal, y debe redirigirse a un archivo para su posterior análisis.
Posteriormente proporcionaremos los comandos precisos para reproducir los experimentos; Se invita a los lectores a echar un vistazo al código en cli.py
o llamar python cli.py --help
para ver qué opciones adicionales están disponibles para procesar datos.
Ejecute los siguientes comandos desde el directorio raíz del repositorio:
$ cd tardis
$ python cli.py ../data/Pinched_torus.txt.gz -q 500 -r 0.05 -R 0.45 -s 0.2 -S 0.6 > ../output/Pinched_torus.txt
Esto creará una nube de puntos de 500 puntos de muestra con
Advertencia : este ejemplo puede requerir un tiempo de ejecución prolongado en una máquina normal. Ejecutamos esto en nuestro clúster (consulte también la carpeta scripts
en el directorio raíz).
Ejecute los siguientes comandos desde el directorio raíz del repositorio:
$ cd tardis
$ python cli.py -k 100 -q 2000 -d 2 --num-steps 20 ../data/Wedged_spheres_2D.txt.gz > ../output/Wedged_spheres_2D.txt
Esto hará uso del procedimiento de selección de parámetros automatizado basado en los vecinos más cercanos. Observe que este ejemplo utiliza más puntos de consulta; Por supuesto, es posible ajustar este parámetro.
Consulte la carpeta de ejemplos para ver algunos fragmentos de código que demuestran cómo usar TARDIS en su propio código. Todos hacen uso de la API preliminar.
Nuestro código se publica bajo una licencia BSD-3-Clause. Básicamente, esta licencia le permite utilizar libremente nuestro código como desee, integrarlo en sus proyectos y mucho más, siempre que reconozca a los autores originales. Consulte LICENSE.md para obtener más información.
Este proyecto es mantenido por miembros del Laboratorio AIDOS. Abra un problema en caso de que encuentre algún problema.