Ini adalah kode untuk makalah ICML kami tentang analisis singularitas berbasis topologi:
@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. }
}
Kode kami telah diuji dengan Python 3.8 dan Python 3.9 di Mac OS X dan Linux. Versi Python lainnya mungkin tidak mendukung semua dependensi.
Cara yang disarankan untuk menginstal proyek ini adalah melalui poetry
. Jika ini tersedia, instalasi akan bekerja dengan sangat cepat:
$ poetry install
Versi terbaru pip
juga harus mampu menginstal proyek secara langsung:
$ pip install .
Untuk mereproduksi eksperimen utama dalam makalah kami, kami mengirimkan kumpulan data sintetis ke dalam repositori dan menawarkan kemampuan otomatis untuk mengunduh kumpulan data visi komputer ( MNIST
dan FashionMNIST
). Untuk alasan kesederhanaan, kami menyarankan untuk mereproduksi eksperimen dengan point cloud sintetis terlebih dahulu karena eksperimen tersebut berjalan dengan cepat bahkan pada komputer desktop standar.
Semua eksperimen menggunakan skrip cli.py
, yang menyediakan antarmuka baris perintah ke kerangka kerja kami. Mengingat parameter masukan untuk annuli lokal, skrip ini akan menghitung nilai Euclidisitas seperti yang dijelaskan dalam makalah. Untuk alasan kesederhanaan, semua keluaran disediakan ke stdout
, yaitu keluaran standar terminal Anda, dan perlu dialihkan ke file untuk analisis selanjutnya.
Kami selanjutnya akan memberikan perintah yang tepat untuk mereproduksi eksperimen; pembaca diundang untuk melihat kode di cli.py
atau memanggil python cli.py --help
untuk melihat opsi tambahan apa yang tersedia untuk memproses data.
Jalankan perintah berikut dari direktori root repositori:
$ 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
Ini akan membuat titik cloud dengan 500 titik sampel
Peringatan : contoh ini mungkin memerlukan waktu proses yang lama pada mesin biasa. Kami menjalankan ini di cluster kami (lihat juga folder scripts
di direktori root).
Jalankan perintah berikut dari direktori root repositori:
$ 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
Ini akan menggunakan prosedur pemilihan parameter otomatis berdasarkan tetangga terdekat. Perhatikan bahwa contoh ini menggunakan lebih banyak titik kueri; tentu saja dimungkinkan untuk menyesuaikan parameter ini.
Lihat folder contoh untuk beberapa cuplikan kode yang menunjukkan cara menggunakan TARDIS dalam kode Anda sendiri. Semuanya menggunakan API awal.
Kode kami dirilis di bawah lisensi BSD-3-Clause. Lisensi ini pada dasarnya mengizinkan Anda untuk secara bebas menggunakan kode kami sesuai keinginan, mengintegrasikannya ke dalam proyek Anda, dan banyak lagi---asalkan Anda mengakui penulis aslinya. Silakan merujuk ke LICENSE.md untuk informasi lebih lanjut.
Proyek ini dikelola oleh anggota AIDOS Lab. Silakan buka masalah jika Anda mengalami masalah.