Dies ist der Code für unser ICML-Papier zur topologiegesteuerten Singularitätsanalyse:
@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. }
}
Unser Code wurde mit Python 3.8 und Python 3.9 unter Mac OS X und Linux getestet. Andere Python-Versionen unterstützen möglicherweise nicht alle Abhängigkeiten.
Der empfohlene Weg, das Projekt zu installieren, ist die poetry
. Wenn dies verfügbar ist, sollte die Installation sehr schnell funktionieren:
$ poetry install
Neuere Versionen von pip
sollten auch in der Lage sein, das Projekt direkt zu installieren:
$ pip install .
Um die Hauptexperimente in unserem Artikel zu reproduzieren, versenden wir synthetische Datensätze im Repository und bieten die automatisierte Möglichkeit zum Herunterladen der Computer-Vision-Datensätze ( MNIST
und FashionMNIST
). Der Einfachheit halber empfehlen wir, die Experimente zunächst mit synthetischen Punktwolken zu reproduzieren, da sie selbst auf einem Standard-Desktop-Computer schnell laufen.
Alle Experimente nutzen das Skript cli.py
, das eine Befehlszeilenschnittstelle zu unserem Framework bereitstellt. Bei gegebenen Eingabeparametern für die lokalen Annuli berechnet dieses Skript die Euklidizitätswerte wie im Artikel beschrieben. Der Einfachheit halber werden alle Ausgaben an stdout
, also die Standardausgabe Ihres Terminals, bereitgestellt und müssen zur späteren Analyse in eine Datei umgeleitet werden.
Anschließend werden wir die genauen Befehle zur Reproduktion der Experimente bereitstellen; Leser sind eingeladen, einen Blick auf den Code in cli.py
zu werfen oder python cli.py --help
aufzurufen, um zu sehen, welche zusätzlichen Optionen für die Datenverarbeitung verfügbar sind.
Führen Sie die folgenden Befehle aus dem Stammverzeichnis des Repositorys aus:
$ 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
Dadurch wird eine Punktwolke mit 500 Beispielpunkten erstellt
Warnung : Dieses Beispiel kann auf einem normalen Computer eine lange Laufzeit erfordern. Wir haben dies auf unserem Cluster ausgeführt (siehe auch den scripts
im Stammverzeichnis).
Führen Sie die folgenden Befehle aus dem Stammverzeichnis des Repositorys aus:
$ 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
Dabei kommt das automatisierte Parameterauswahlverfahren auf Basis der nächsten Nachbarn zum Einsatz. Beachten Sie, dass in diesem Beispiel mehr Abfragepunkte verwendet werden. Es ist natürlich möglich, diesen Parameter anzupassen.
Im Beispielordner finden Sie einige Codeausschnitte, die veranschaulichen, wie Sie TARDIS in Ihrem eigenen Code verwenden. Sie alle nutzen die vorläufige API.
Unser Code wird unter einer BSD-3-Klausel-Lizenz veröffentlicht. Diese Lizenz erlaubt Ihnen im Wesentlichen die freie Nutzung unseres Codes nach Ihren Wünschen, die Integration in Ihre Projekte und vieles mehr – vorausgesetzt, Sie geben die ursprünglichen Autoren an. Weitere Informationen finden Sie unter LICENSE.md.
Dieses Projekt wird von Mitgliedern des AIDOS Lab betreut. Bitte öffnen Sie eine Ausgabe, falls Sie auf Probleme stoßen.