Визуализации вложений

Visualization of embeddings

Существует более одного способа визуализации высокоразмерных данных. Здесь мы возвращаемся в историю искусственного интеллекта, чтобы исследовать эволюцию этих визуализаций.

В 1990 году я представил свою первую статью по искусственному интеллекту на небольшую местную конференцию – “Midwest Artificial Intelligence and Cognitive Science Society”. В те дни область искусственного интеллекта полностью определялась исследованиями “символов”. Этот подход был известен как “Good, Old-Fashion AI” или GOFAI (произносится “го фи”, как “вай-фай”). Мы, работающие в области, которая сейчас известна как “Глубокое обучение”, должны были действительно доказывать, что то, что мы исследуем, вообще можно считать искусственным интеллектом.

Быть исключенным из области искусственного интеллекта было двусмысленным. С одной стороны, я не соглашался с большинством основных принципов, которые были определены как искусственный интеллект того времени. Основное предположение заключалось в том, что “символы” и “обработка символов” должны быть основой всего искусственного интеллекта. Поэтому я с радостью работал в области, которая даже не рассматривалась как искусственный интеллект. С другой стороны, было трудно найти людей, готовых выслушать ваши идеи, если вы не упаковывали их, по меньшей мере, как относящиеся к искусственному интеллекту.

Эта небольшая конференция принимала статьи по “ИИ” и “Когнитивной науке” – что я считал приглашением к идеям, выходящим за рамки просто “символической обработки”. Поэтому я представил свою первую статью, и она была принята! В статье был представлен подход нейронных сетей к обработке естественного языка. Многие из нас в этой области называли это направление исследований нейронных сетей “коннекционизмом”, но сегодняшние исследования этого типа будут называться “Глубоким обучением” (DL) – хотя мое первоначальное исследование было не очень глубоким… всего лишь три слоя! Современные системы DL могут состоять из сотен слоев.

Моя статья была принята на конференции, и я ее представил в Карбондейле, Иллинойс, в 1990 году. Позже организатор конференции, Джон Динсмор, пригласил меня представить версию статьи для книги, которую он готовил. Я думал, что не смогу самостоятельно написать статью, поэтому попросил двоих своих друзей из аспирантуры (Лизу Миден и Джима Маршалла) присоединиться ко мне. Они согласились, и у нас получилась глава в книге. Книга называлась “Символические и коннекционистские парадигмы: преодоление разрыва”. Наша статья хорошо вписалась в тематику книги. Мы назвали нашу статью “Исследование символического/подсимволического континуума: случайное исследование RAAM”. К моему восторгу, книга сфокусировалась на разделении этих двух подходов к искусственному интеллекту. Я думаю, что до сих пор область борется с этим разделением.

Я расскажу больше о своих первоначальных исследованиях позже. А пока я хочу поговорить о том, как область занималась визуализацией “вложений”. Сначала мы не называли эти векторы “вложениями”. Большинство исследований использовали фразу “представления скрытого слоя”. Это включало в себя любое внутреннее представление, которое коннекционная система изучила для решения проблемы. Как мы определяли их тогда, было три типа слоев: “входные” (где вы подключали набор данных), “выходные” (где вы указывали желаемые выходы или “цели”) и все остальное – “скрытые” слои. Скрытые слои – это место, где активации сети течут между входом и выходом. Активации скрытого слоя часто имеют высокую размерность и являются представлениями “концепций”, изученных сетью.

Как и сегодня, визуализация этих векторов высокой размерности считалась полезной для понимания работы и часто для выявления причин сбоев этих систем. В нашей главе в книге мы использовали три типа визуализаций:

  1. Так называемые “Диаграммы Хинтона”
  2. Диаграммы кластеров, или Дендограммы
  3. Проекция в двумерное пространство

Первый метод был новоиспеченной идеей, использованной Хинтоном и Шаллисом в 1991 году. (Это тот же Геоффри Хинтон, о котором мы знаем сегодня. Больше о нем в будущей статье). Эта диаграмма – это простая идея с ограниченными возможностями. Основная идея заключается в том, что активации, веса или любые другие числовые данные могут быть представлены в виде прямоугольников: белые прямоугольники (обычно представляющие положительные числа) и черные прямоугольники (обычно представляющие отрицательные числа). Кроме того, размер прямоугольника представляет величину значения относительно максимального и минимального значений в симулированном нейроне.

Вот представление из нашей статьи, показывающее средние “вложения” на скрытом слое сети в качестве представления слов, которые были представлены сети:

Рисунок 10 из нашей статьи.

Диаграмма Хинтона помогает визуализировать шаблоны в данных. Но она не помогает понять отношения между представлениями, и она не помогает, когда количество измерений становится гораздо больше. Современные эмбеддинги могут иметь тысячи измерений.

Чтобы решить эти проблемы, мы обращаемся к второму методу: диаграммам кластеров или дендрограммам. Это диаграммы, которые показывают расстояние (как бы оно ни было определено) между любыми двумя шаблонами в виде иерархического дерева. Вот пример из нашей статьи с использованием евклидова расстояния:

Рисунок 9 из нашей статьи.

Это тот же вид информации, что и в диаграмме Хинтона, но в более полезном формате. Здесь мы можем увидеть внутренние связи между отдельными шаблонами и общие шаблоны. Обратите внимание, что вертикальное упорядочение не имеет значения: горизонтальное положение точек разделения является смысловым аспектом диаграммы.

На приведенной выше дендрограмме мы построили общую картину вручную, исходя из дерева кластеров, вычисленного программой. В настоящее время существуют методы автоматического создания такого дерева и изображения. Однако, когда количество шаблонов значительно превышает несколько десятков, диаграмма может стать трудно воспринимаемой. Вот пример, созданный с помощью matplotlib. Больше информации о API можно найти здесь: dendogram matplotlib.

Современная дендрограмма с большим числом шаблонов. Изображение, созданное автором.

Наконец, мы переходим к последнему методу, который сегодня используется преимущественно: методу проекции. Этот метод использует алгоритм для сокращения количества измерений эмбеддинга до числа, которое может быть легко понятно людьми (например, 2 или 3 измерения) и отображается в виде диаграммы рассеяния.

В то время в 1990 году основным методом проецирования высокоразмерных данных в более низкое число измерений был метод главных компонент (или PCA в кратком виде). Сокращение размерности – активная область исследований, и по-прежнему разрабатываются новые методы.

Возможно, наиболее используемыми алгоритмами сокращения размерности сегодня являются:

  1. PCA
  2. t-SNE
  3. UMAP

Какой из них лучший? Это действительно зависит от деталей данных и ваших целей при создании сокращения измерений.

PCA, вероятно, лучший метод в целом, так как он детерминированный и позволяет создать отображение из пространства высокой размерности в сокращенное пространство. Это полезно для обучения на одном наборе данных и затем изучения того, куда проецируется тестовый набор данных в изученном пространстве. Однако PCA может быть зависим от масштабирования данных и может привести к “скоплению точек”, что мало даёт представление о структурных шаблонах.

t-SNE, что означает t-распределенное стохастическое вложение соседей, был создан Ровеисом и Хинтоном (да, тем самым Хинтоном) в 2002 году. Это обучаемая проекция, которая может использовать не масштабированные данные. Однако одним из недостатков t-SNE является то, что он не создает отображение, а только сам является методом обучения для поиска кластеризации. То есть, в отличие от других алгоритмов, у которых есть методы Projection.fit() и Projection.transform(), t-SNE может выполнять только подгонку. (Существуют реализации, такие как openTSNE, которые обеспечивают отображение преобразования. Однако openTSNE кажется очень отличается от других алгоритмов, медленный и менее поддерживаемый, чем другие формы.)

Наконец, есть UMAP, Uniform Manifold Approximation and Projection. Этот метод был создан в 2018 году МакИннесом и Хили. Он, возможно, является наилучшим компромиссом для многих пространств высокой размерности, так как он достаточно вычислительно недорогой и способен сохранять важные структуры представления в сокращенных измерениях.

Вот пример алгоритмов сокращения размерности, примененных к не масштабированным данным о раке груди, доступным в sklearn:

Пример уменьшения размерности между тремя методами проекции, PCA, t-SNE и UMAP. Изображение создано автором.

Вы можете самостоятельно протестировать алгоритмы уменьшения размерности, чтобы найти лучший для вашего случая использования и создавать такие изображения, как показано выше, с помощью Kangas DataGrid.

Как уже упоминалось, уменьшение размерности является активной областью исследований. Я полностью ожидаю увидеть дальнейшие улучшения в этой области, включая визуализацию потока информации при перемещении по нейронной сети глубокого обучения. Вот последний пример из нашей главы книги, показывающий, как активации движутся в пространстве представления нашей модели:

Рисунок 7 из нашей статьи. Активации скрытого слоя на отдельных шагах в разделе декодирования нейронной сети.

Интересуетесь, откуда берутся идеи в области искусственного интеллекта, машинного обучения и науки о данных? Поставьте лайк и подпишитесь. Дайте мне знать, чем вас заинтересовало!