Este é o código para nosso artigo ICML sobre análise de singularidade orientada por topologia:
@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. }
}
Nosso código foi testado com Python 3.8 e Python 3.9 no Mac OS X e Linux. Outras versões do Python podem não suportar todas as dependências.
A forma recomendada de instalação do projeto é via poetry
. Se estiver disponível, a instalação deverá funcionar muito rapidamente:
$ poetry install
Versões recentes do pip
também devem ser capazes de instalar o projeto diretamente:
$ pip install .
Para reproduzir os principais experimentos em nosso artigo, enviamos conjuntos de dados sintéticos no repositório e oferecemos a capacidade automatizada de baixar os conjuntos de dados de visão computacional ( MNIST
e FashionMNIST
). Por razões de simplicidade, sugerimos reproduzir primeiro os experimentos com nuvens de pontos sintéticas, pois elas são executadas rapidamente, mesmo em um computador desktop padrão.
Todos os experimentos utilizam o script cli.py
, que fornece uma interface de linha de comando para nossa estrutura. Dados os parâmetros de entrada para os anéis locais, este script calculará os valores de euclidicidade conforme descrito no artigo. Por questões de simplicidade, toda a saída é fornecida para stdout
, ou seja, a saída padrão do seu terminal, e precisa ser redirecionada para um arquivo para análise posterior.
Posteriormente forneceremos os comandos precisos para reproduzir os experimentos; os leitores são convidados a dar uma olhada no código em cli.py
ou chamar python cli.py --help
para ver quais opções adicionais estão disponíveis para processamento de dados.
Execute os seguintes comandos no diretório raiz do repositório:
$ 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
Isso criará uma nuvem de pontos de 500 pontos de amostra com
Aviso : este exemplo pode exigir um longo tempo de execução em uma máquina comum. Executamos isso em nosso cluster (veja também a pasta scripts
no diretório raiz).
Execute os seguintes comandos no diretório raiz do repositório:
$ 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
Isso fará uso do procedimento automatizado de seleção de parâmetros com base nos vizinhos mais próximos. Observe que este exemplo usa mais pontos de consulta; é claro que é possível ajustar este parâmetro.
Confira a pasta de exemplos para alguns trechos de código que demonstram como usar o TARDIS em seu próprio código. Todos eles fazem uso da API preliminar.
Nosso código é lançado sob uma licença BSD-3-Clause. Esta licença essencialmente permite que você use livremente nosso código conforme desejado, integre-o em seus projetos e muito mais – desde que você reconheça os autores originais. Consulte LICENSE.md para obter mais informações.
Este projeto é mantido por membros do Laboratório AIDOS. Abra um problema caso encontre algum problema.