これは、トポロジー駆動の特異点解析に関する ICML 論文のコードです。
@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. }
}
私たちのコードは、Mac OS X および Linux 上の Python 3.8 および Python 3.9 でテストされています。他の Python バージョンでは、すべての依存関係がサポートされていない可能性があります。
プロジェクトをインストールする推奨方法は、 poetry
を使用することです。これが利用可能な場合、インストールは非常に迅速に行われるはずです。
$ poetry install
pip
の最新バージョンでは、プロジェクトを直接インストールできるはずです。
$ pip install .
論文の主な実験を再現するために、合成データ セットをリポジトリに同梱し、コンピューター ビジョン データ セット ( MNIST
およびFashionMNIST
) をダウンロードする自動機能を提供します。簡単にするために、最初に合成点群を使用して実験を再現することをお勧めします。合成点群は標準のデスクトップ コンピューターでも高速に実行できるためです。
すべての実験では、フレームワークにコマンドライン インターフェイスを提供するスクリプトcli.py
を使用します。局所年輪の入力パラメータが与えられると、このスクリプトは論文で説明されているようにユークリディシティ値を計算します。簡素化のため、すべての出力はstdout
(つまり端末の標準出力) に提供され、その後の分析のためにファイルにリダイレクトする必要があります。
その後、実験を再現するための正確なコマンドを提供します。読者は、 cli.py
のコードを参照するか、 python cli.py --help
を呼び出して、データ処理にどのような追加オプションが利用できるかを確認することをお勧めします。
リポジトリのルート ディレクトリから次のコマンドを実行します。
$ 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
これにより、500 個のサンプル ポイントの点群が作成されます。
警告: この例では、通常のマシンでは長い実行時間が必要になる可能性があります。これをクラスター上で実行しました (ルート ディレクトリのscripts
フォルダーも参照してください)。
リポジトリのルート ディレクトリから次のコマンドを実行します。
$ 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
これには、最近傍に基づく自動パラメータ選択手順が利用されます。この例では、より多くのクエリ ポイントが使用されていることに注意してください。もちろん、このパラメータを調整することも可能です。
独自のコードで TARDIS を使用する方法を示すいくつかのコード スニペットについては、サンプル フォルダーを確認してください。これらはすべて、暫定的な API を利用します。
私たちのコードは BSD-3-Clause ライセンスに基づいてリリースされています。このライセンスは基本的に、オリジナルの作成者を承認することを条件として、必要に応じてコードを自由に使用したり、プロジェクトに統合したりすることを許可します。詳細については、LICENSE.md を参照してください。
このプロジェクトは AIDOS Lab のメンバーによって維持されています。問題が発生した場合は、問題を開いてください。