UMAP 0.6이 출시되었습니다! 새로운 초기화 방식, 새로운 최적화 도구(optimizers), 그리고 더 빠른 근접 이웃 검색 기능 덕분에 UMAP은 훨씬 빠르고 대규모 데이터셋에서 훨씬 뛰어난 성능을 보여줍니다. 아카이브(arXiv) 논문 3백만 개를 처리하는 데 5분도 채 걸리지 않는데, 이는 UMAP 0.5가 아직 가장 가까운 이웃을 찾기도 전에 달성한 속도입니다. (UMAP 0.5와 UMAP 0.6의 경주 영상) 코드: https://github.com/lmcinnes/umap 설치 방법: pip install -U umap-learn (conda-forge에서도 사용 가능)
속도: 근접 이웃 검색 속도가 PyNNDescent를 더 잘 활용하여 약 4배 빨라졌습니다. 새로운 초기화 방식 덕분에 초기화 과정 자체도 빨라졌습니다. 새로운 최적화 도구들을 사용하여 고정된 시드(seed)로 모든 코어를 사용하면서 전체 실행이 재현 가능해졌습니다. 시드를 설정한 0.5 버전은 단일 스레드로 작동하여 52분이 걸리며, 이는 12배 더 긴 시간입니다.
품질: 결과를 얼마나 빨리 얻는 것만큼 결과의 품질 또한 중요합니다. UMAP 0.6은 새롭고 개선된 초기화 방식과 최적화 도구의 상당한 개선 덕분에 백만 단위 규모 데이터셋에서 훨씬 더 잘 작동합니다. 이전 버전보다 빠르면서도, 적은 에포크(epochs) 만에 더 미세한 클러스터 구조를 해결하며, UMAP 0.5보다 훨씬 정교한 수준의 디테일과 향상된 이웃 정확도를 보여줍니다. (아카이브 지도에서 더욱 세밀한 디테일을 살펴보는 영상)
재귀적 초기화(Recursive initialization): 개선의 상당 부분은 UMAP 자체를 사용하여 UMAP을 초기화하는 완전히 새로운 초기화 방식에서 나옵니다. 이는 그래프 구조의 거친 버전을 먼저 배치하고, 이를 재귀적인 초기화 탑(recursive tower)으로 정제합니다. (펼쳐지는 영상) 그 결과는 스펙트럴 초기화나 PCA에서 나오는 지저분한 흐릿함보다 UMAP의 최종 결과에 훨씬 가까운 시작점이며, 이전 방식들보다 더 빠르게 생성됩니다. 이 방식을 사용하면 최적화 도구가 구형 초기화 접근 방식보다 훨씬 적은 에포크 만에 안정화(최종 레이아웃 대비 3% 이내)될 수 있습니다. (초기화 경쟁 영상)
새로운 최적화 도구들: 대규모 데이터에서 충실도(fidelity)를 높이는 대부분의 개선점은 매우 효율적인 하드 네거티브 마이닝(hard-negative mining) 형태에서 나옵니다. 이는 음성 샘플링(negative sampling)을 매우 큰 데이터셋에서 훨씬 더 효과적으로 만들며, 높은 반발력 강도(high repulsion strengths) 처리 능력까지 향상시켰습니다.
( 하드 네거티브 마이닝 비디오 ) UMAP은 원래 인력-척력 스펙트럼의 작은 부분에 맞춰 설계되었습니다. 새로운 최적화 도구(optimizers)는 이러한 제약을 해제하여, UMAP이 훨씬 더 높은 척력 강도에서도 잘 작동하게 하고 더 나은 kNN 재현율(recall)을 제공합니다. ( 척력 강도 다이얼 탐색 비디오 ) 지금 사용해 보세요. 새로운 최적화 도구와 초기화 방식은 현재 출력을 변경하기 때문에 옵트인(opt-in) 방식으로 제공됩니다: compatibility_layout=False로 설정하세요. 향후 버전에서는 기본값으로 설정될 예정이니, 직접 사용해보시고 어떻게 작동하는지 알려주세요. 최적화 도구 문서 (Optimizers documentation), 대규모 데이터셋 문서 (Large datasets documentation)
이번 릴리스를 위해 기능과 버그 수정 사항을 제공해 주신 모든 기여자분들께 감사드리며, 댓글, 제안, 기능 요청으로 연락해 주신 모든 분들께도 감사합니다. 여러분의 도움이 없었다면 불가능했을 것입니다. 제출자: /u/lmcinnes [링크] [댓글]