다음은 토폴로지 기반 특이점 분석에 관한 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의 구성원이 관리합니다. 문제가 발생할 경우 문제를 열어주세요.