Проблема: зображення з простору, який ви не бачите
Реальні набори даних — векторні представлення слів, профілі експресії генів, активації прихованих шарів нейронної мережі — часто живуть у сотнях або тисячах вимірів. Люди не можуть дивитися на це безпосередньо. t-розподілене стохастичне сусіднє вкладення (t-SNE), представлене Лауренсом ван дер Маатен і Джефрі Хінтоном у 2008 році, знаходить 2D або 3D макет точок, структура суміжності якого максимально відповідає оригінальній багатовимірній структурі — точки, які були близькі в оригінальному просторі, закінчуються близькими на зображенні, а точки, які були далеко розставлені, закінчуються далеко розставленими, принаймні локально.
Крок перший: перетворюємо відстані на ймовірності
t-SNE спочатку перетворює багатовимірні евклідові відстані в розподіл ймовірностей попарно: для кожного пункту i, Гаусс, що центрується на i, призначає умовну ймовірність p(j|i), що пункт i обере j як свого сусіда, вища для близьких точок і швидко падає до майже нуля для далеких.
високорозмірне схожість (Гаусс): p(j|i) = exp(−||xi−xj||² / 2σi²) / Σ_k≠i exp(−||xi−xk||² / 2σi²)
низькорозмірне схожість (Student-t, 1 ступінь свободи): q(i,j) = (1 + ||yi−yj||²)^−1 / Σ_k≠l (1 + ||yk−yl||²)^−1 Ширина σᵢ кожного пункту не є фіксованою глобально — вона налаштовується індивідуально так, щоб отриманий розподіл мав фіксовану перешкодженість, гладкий замінник "ефективної кількості сусідів". Точки в щільних регіонах отримують вужчу Гаусс, точки в розріджених регіонах отримують ширшу, щоб кожна точка в кінцевому підсумку враховувала порівнянну ефективну околицю незалежно від місцевої щільності.
high-dim similarity (Gaussian): p(j|i) = exp(−||xi−xj||² / 2σi²) / Σ_k≠i exp(−||xi−xk||² / 2σi²) low-dim similarity (Student-t, 1 degree of freedom): q(i,j) = (1 + ||yi−yj||²)^−1 / Σ_k≠l (1 + ||yk−yl||²)^−1
Крок два: проблема наповнення та чому хвости повинні бути важкими
Якщо низьковимірні подібності також використовують Гаусову функцію, алгоритм зіткнеться з проблемою наповнення: багатовимірна простір має місце для точки мати багато помірно віддалених сусідів одночасно, але 2D простір вичерпає це швидко, змушуючи всі ці помірні відстані стискатися та накопичуватися біля центру кожної групи. Виправлення Ван дер Маатена та Хінтона полягало в тому, щоб надати низьковимірній карті розподіл Student-t з одним ступенем свободи (еквівалентний розподілу Кауса) замість Гаусового. Його важкі хвости дозволяють помірно несхожим точкам опинитися значно далеко від одне одного на карті без значних витрат ймовірності, що звільняє місце та змушує групи відокрещуватися одна від одної, створюючи чітко окреслені бульбашки, які є характерними для діаграм t-SNE.
Крок третí: мінімізувати KL дивергенцію за допомогою градієнтного спуску
З визначення обох розподілів, t-SNE шукає 2D позиції точок y, які роблять низьковимірний розподіл Q максимально відповідати високовимірному розподілу P, виміряне за допомогою KL дивергенції, та мінімізоване градієнтною оптимізацією:
Вартість: C = KL(P || Q) = Σᵢ Σⱼ pᵢⱼ · log(pᵢⱼ / qᵢⱼ) Градієнт (привабливий термін змушує схожі точки наближатися один до одного, відштовхуючий термін віддаляє несхожі точки один від одного): ∂C/∂yi = 4 Σⱼ (pᵢⱼ − qᵢⱼ)(yi − yj)(1 + ||yi−yj||²)⁻¹ Оскільки KL дивергенція асиметрична, вона штрафує за розміщення дійсно близьких точок далеко одна від одної значно більше, ніж навпаки — тому оптимізація пріоритезує збереження локальної структури на шкоду вірному представленню глобальних відстаней, що є точно тим компромісом, який робить t-SNE чудовим для виявлення кластерів, але ненадійним для читання точних відстаней між ними.
Cost: C = KL(P || Q) = Σᵢ Σⱼ pᵢⱼ · log(pᵢⱼ / qᵢⱼ) Gradient (attractive term pulls similar points together, repulsive term pushes dissimilar points apart): ∂C/∂yi = 4 Σⱼ (pᵢⱼ − qᵢⱼ)(yi − yj)(1 + ||yi−yj||²)⁻¹
Практичні ручки, і як t-SNE відрізняється від PCA
Перплексія (зазвичай 5-50) та швидкість навчання є двома налаштуваннями, які найбільше впливають, і обидва помітно змінюють кінцевий вигляд — стандартною практикою є запуск t-SNE при кількох різних перплексіях перед висновками. На відміну від PCA, який знаходить однорідну глобальну лінійну проекцію, що максимізує збережену дисперсію та є детермінованим і зворотнім, t-SNE нелінійний, стохастичний (різні випадкові початкові ініціалізації дають різні макети) та не опуклий, тому він може застрягати в різних локальних мінімумах у різних пробіжках — це інструмент візуалізації для виявлення структури, а не загальний крок зменшення розмірності для подальшого моделювання.
Frequently asked questions
Що саме контролює параметр perplexity?
Perplexity є гладким показником кількості ефективних найближчих сусідів, які кожен пункт враховує при обчисленні його розподілу подібності в багатовимірному просторі. Низька perplexity (приблизно 5) зосереджена на дуже локальній структурі і може фрагментувати справжні кластери на багато маленьких шматочків; висока perplexity (50 або більше) враховує більше сусідів і схильна розмивати тонкі локальні деталі в ширшу структуру. Типові значення коливаються приблизно від 5 до 50, і результати слід перевіряти на кількох налаштуваннях.
Чому t-SNE використовує розподіл Student-t у низьковимірному просторі, але Гауссовий у багатовимірному просторі?
Ця асиметрія вирішує проблему 'натискання': у високих вимірах є достатньо місця для багатьох точок, щоб бути помірно близькими до центральної точки, але 2D має набагато менше місця, тому вірне збереження всіх цих помірних відстаней розчавлювало б все разом. Розподіл Student-t з її важкими хвостами дозволяє помірно несхожим точках у вхідному просторі знаходитися значно далі один від одного на 2D карті, звільняючи місце біля кожного кластера та запобігаючи колапсу візуалізації в єдину кульку.
Чи можна довіряти відстаням між кластерами на діаграмі t-SNE?
Не надійно. t-SNE явно оптимізований для збереження локальної структури сусідства — які точки близькі до яких — а не глобальних відстаней або відносних розмірів кластерів. Два кластери, що здаються далеко розставленими, можуть бути не значно більш несхожими на два, що здаються близькими, і розміри кластерів на діаграмі не обов’язково відображають щільність даних. Використовуйте t-SNE для виявлення того, які точки групуються разом, а не для читання кількісних відстаней між групами.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте t-SNE Visualiser і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію t-SNE Visualiser