t-distributed Stochastic Neighbor Embedding (t-SNE)
t-SNE가 고차원 데이터를 시각화하는 방법을 살펴봅니다. 컴퓨터 비전 특징에서 클러스터를 발견하고 Ultralytics YOLO26의 머신러닝 모델을 최적화하는 방법을 알아봅니다.
t-분포 확률적 이웃 임베딩 (t-SNE)은 각 데이터 포인트에 2차원 또는 3차원 맵상의 위치를 부여하여 고차원 데이터를 시각화하는 통계적 방법입니다. 비선형 차원 축소의 한 형태인 이 기법은 수백 또는 수천 개의 특징을 포함하는 데이터셋을 탐색하기 위해 머신러닝에서 널리 사용됩니다. 전역 구조 보존에 중점을 두는 선형 방법과 달리, t-SNE는 유사한 인스턴스를 서로 가깝게 유지하는 데 탁월하여 그렇지 않으면 숨겨져 있을 수 있는 로컬 클러스터와 매니폴드를 드러냅니다. 따라서 유전체 연구부터 딥 뉴럴 네트워크의 내부 로직 이해에 이르기까지 다양한 분야에서 매우 유용한 도구로 활용됩니다.
t-SNE 작동 방식#
t-SNE의 핵심 아이디어는 데이터 포인트 간의 유사도를 결합 확률로 변환하는 것입니다. 원래의 고차원 공간에서 알고리즘은 가우시안 분포를 사용하여 포인트 간의 유사도를 측정합니다. 두 포인트가 서로 가까우면 "이웃"일 확률이 높습니다. 그런 다음 알고리즘은 이러한 확률을 유지하면서 해당 포인트를 저차원 공간(일반적으로 2D 또는 3D)에 매핑하려고 합니다.
이를 위해 t-SNE는 스튜던트 t-분포를 사용하여 저차원 맵에 유사한 확률 분포를 정의합니다. 이 특정 분포는 일반적인 가우시안 분포보다 꼬리가 두꺼워 "혼잡 문제"를 해결하는 데 도움이 됩니다. 혼잡 문제란 고차원 공간의 포인트를 저차원으로 투영할 때 포인트가 서로 겹쳐 뭉치는 현상입니다. 서로 유사하지 않은 포인트를 시각화에서 더 멀리 배치함으로써 t-SNE는 기저 학습 데이터의 구조를 보여주는 뚜렷하고 이해하기 쉬운 클러스터를 생성합니다. 알고리즘은 고차원 및 저차원 확률 분포 간의 발산을 비지도 학습을 통해 최소화하여 최적의 맵 표현을 효과적으로 학습합니다.
AI의 실제 활용 사례#
t-SNE는 탐색적 데이터 분석 (EDA)과 모델 진단을 위한 표준 도구입니다. 이를 통해 엔지니어는 모델이 무엇을 학습하고 있는지 "볼" 수 있습니다.
- 컴퓨터 비전 특징 검증: YOLO26과 같은 모델을 사용하는 객체 감지 워크플로에서 개발자는 네트워크가 시각적으로 유사한 클래스 간을 구분할 수 있는지 확인해야 하는 경우가 많습니다. 네트워크 마지막 레이어에서 특징 맵을 추출하고 이를 t-SNE로 투영하면, 엔지니어는 "고양이" 이미지가 "개" 이미지와 별도로 클러스터링되는지 시각화할 수 있습니다. 클러스터가 서로 섞여 있다면 모델의 특징 추출 역량을 개선해야 한다는 의미일 수 있습니다.
- 자연어 처리 (NLP): t-SNE는 단어 임베딩을 시각화하는 데 널리 활용됩니다. 고차원 단어 벡터(대개 300개 이상의 차원)를 2D로 투영하면 의미가 유사한 단어가 자연스럽게 함께 그룹화됩니다. 예를 들어 t-SNE 플롯에 "왕", "여왕", "왕자", "군주"를 포함하는 클러스터가 나타날 수 있으며, 이는 자연어 처리 (NLP) 모델이 왕족이라는 개념을 파악하고 있음을 보여줍니다.
- 유전체학 및 생물정보학: 연구자들은 단일 세포 RNA 시퀀싱 데이터를 시각화하기 위해 t-SNE를 사용합니다. 수천 개의 유전자 발현 값을 2D 플롯으로 축소하면 과학자들은 서로 다른 세포 유형을 식별하고 발달 궤적을 추적할 수 있으며, 이는 새로운 생물학적 통찰과 질병 마커를 발견하는 데 도움이 됩니다.
PCA와의 비교#
t-SNE를 또 다른 일반적인 축소 기법인 주성분 분석 (PCA)과 구분하는 것이 중요합니다.
- PCA는 데이터의 전역 분산 보존에 중점을 두는 선형 기법입니다. 결정론적이며 계산 효율성이 높아 초기 데이터 압축이나 노이즈 감소에 적합합니다.
- t-SNE는 로컬 이웃 보존에 중점을 두는 비선형 기법입니다. 확률론적(확률적)이며 계산 비용이 더 많이 들지만, 복잡한 비선형 매니폴드에 대해서는 훨씬 더 나은 시각화를 제공합니다.
데이터 전처리의 일반적인 모범 사례는 먼저 PCA를 사용하여 데이터를 관리 가능한 크기(예: 50차원)로 축소한 다음 최종 시각화를 위해 t-SNE를 적용하는 것입니다. 이 하이브리드 접근 방식은 계산 부하를 줄이고 t-SNE 결과를 저하시킬 수 있는 노이즈를 필터링합니다.
Python 예제: 특징 시각화#
다음 예제에서는 scikit-learn을 사용하여 합성 데이터셋에 t-SNE를 적용하는 방법을 보여줍니다. 이 워크플로는 딥러닝 모델에서 추출한 특징을 시각화하는 방식과 유사합니다.
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.manifold import TSNE
# Generate synthetic high-dimensional data (100 samples, 50 features, 3 centers)
X, y = make_blobs(n_samples=100, n_features=50, centers=3, random_state=42)
# Apply t-SNE to reduce dimensions from 50 to 2
# 'perplexity' balances local vs global aspects of the data
tsne = TSNE(n_components=2, perplexity=30, random_state=42)
X_embedded = tsne.fit_transform(X)
# Plot the result to visualize the 3 distinct clusters
plt.scatter(X_embedded[:, 0], X_embedded[:, 1], c=y)
plt.title("t-SNE Projection of High-Dimensional Data")
plt.show()주요 고려 사항#
t-SNE는 강력하지만 신중한 하이퍼파라미터 튜닝이 필요합니다. "perplexity" 매개변수는 핵심적인 역할을 하며, 기본적으로 각 포인트에 가까운 이웃이 몇 개 있는지 추정합니다. 이 값을 너무 낮거나 높게 설정하면 오해를 불러일으키는 시각화 결과가 나타날 수 있습니다. 또한 t-SNE는 전역 거리를 잘 보존하지 못합니다. 즉, 플롯에서 서로 다른 두 클러스터 간의 거리가 원래 공간에서의 실제 거리를 반드시 반영하는 것은 아닙니다. 이러한 세부적인 한계에도 불구하고 t-SNE는 컴퓨터 비전 (CV) 아키텍처를 검증하고 복잡한 데이터셋을 이해하는 데 핵심적인 기법으로 남아 있습니다. 대규모 데이터셋을 관리하는 사용자는 이러한 심층 분석을 수행하기 전에 데이터를 정리하기 위해 Ultralytics Platform을 활용하는 경우가 많습니다.









