The Jerusalem PostJerusalem Orchestra East & West youth division to perform at UNוואלה164 קמ"ש במקום 60: נהגת חדשה בת 18 נתפסה במהירות קיצונית בלב חיפהRTP DesportoPresidente do V. Guimarães agastado com início de época "frustrante"Daily MaverickStudent opens fire outside school in Turkey, eight pupils wounded, NTV reportsThe South AfricanBombshell: Springboks may play Malcolm Marx in new positionStraits Times SportLa Liga president hits out at Real Madrid refereeing ‘conspiracy’ claimsХабрИИ режет не рутину, а расходы. Поэтому подушка теперь базовый минимумOnetPolski "Niedźwiedź" pokazał się światu. Żołnierze powinni być zachwyceniIl Fatto QuotidianoMorto Grigory Ponomarev: l’addio improvviso a 31 anni di “Grizzly”, ex lottatore MMA. L’ipotesi di un legame con l’infortunio del 2023CNN بالعربيةأستراليا تؤكد تحويل أجزاء من مقاتلات F-35 الأمريكية إلى هونغ كونغ بالخطأSportstarLIVE India vs Sri Lanka, Asian Games 2026 hockey: IND 10 - 0 SL, Abhishek, Jugraj score two eachVilaWebLa UE tanca la discussió sobre l’oficialitat del català en set minuts i sense adoptar cap decisió
The Daily Newsstand · Free, Always
Tuesday, September 22, 2026

Способ визуализации n‑мерных эмбеддингов в трёхмерном пространстве

Translate

Эмбеддинг простыми словами — это всего лишь сопоставление некоторого объекта, с которым должна работать нейронная сеть, и набора чисел — вектора. Количество кооридинат вектора и является мерностью n пространства, в котором задан данный вектор (эмбеддинг). Более подробно про эмбеддинги можно почитать в этой статье для начинающих.

Обычно при упоминании отображения эмбеддингов (или как мы уже знаем, n‑мерных векторов) имеют в виду отображение множества этих векторов на двумерное или трёхмерное пространство с уменьшением размерности. Про основные методы отображения n‑мерных векторов рассказывается, например, в статье «Как у алгоритмов снижения размерности получается вас обмануть».

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

Однако для анализа векторов человеком может быть полезно также визуализировать и отдельный вектор. В этом случае возможно сравнивать «форму» объектов, отображающих векторы и на основании похожести такой формы делать вывод о близости сравниваемых векторов. Также было бы интересно иметь возможность визуализировать вектор во время итераций обучения нейронной сети и видеть изменения «формы» вектора в ходе обучения модели. При этом мы избегаем недостатка потери данных для используемых обычно методов отображения векторов с уменьшением их размерности. Объективности ради надо сказать, что мы получаем другой недостаток — трудность визуализации большого числа векторов. Но для пары (или нескольких) векторов такой способ визуализации вполне приемлем.

В качестве основы для отображения вектора в трёхмерном пространстве было решено взять обычную трёхмерную сферу. А вот радиус данной сферы будет переменным. Его величина в каждой точке сферы и будет значением одной из координат отображаемого нами n‑мерного вектора.

В качестве источника значений координат векторов будем использовать локально запущенную модель «qwen3-embedding:latest» и библиотеку ollama. Установка и настройка локальной LLM в данной статье описываться не будет. Для формирования массивов координат будем использовать библиотеку numpy а для отрисовки трёхмерных объектов по вычисленным координатам воспользуемся библиотеками plotly и dash

Основная последовательность действий будет следующей:

  1. Получить значение вектора для интересующего нас объекта (в случае с LLM это будут слова)

  2. Вычислить набор трёхмерных координат объекта

  3. Отобразить полученные координаты в трёхмерном пространстве.

Получение вектора для выбранного слова word с помощью обращения к API ollama может выглядеть так:

import ollama
import numpy as np

response = ollama.embed(
    model='qwen3-embedding:latest',
    input='word'
)

vector = response['embeddings'][0]

Далее полученный вектор vector надо преобразовать в матрицу для удобства вычисления координат. В нашем случае размерность вектора, который отдаёт LLM qwen3-embedding:latest составляет 4096 координат. Превращаем его в матрицу 64 х 64 (64 х 64 = 4096) значения.

r = np.reshape(vector, (64, 64))

А далее можно вычислить трёхмерные координаты объекта, который будет отображать наш вектор:

u, v = np.mgrid[0:2*np.pi:64j, -np.pi/2:np.pi/2:64j]
x = r * np.sin(u) * np.cos(v)
y = r * np.sin(u) * np.sin(v)
z = r * np.cos(u)

В приведённом выше примере мы сначала формируем набор параметров u и v (это набор значений углов — сферических координат), необходимых для вычисления трёх координат объекта x,y,z в декартовых координатах. И далее с использованием библиотеки numpy вычисляется сам набор декартовых координат точек объекта.

После этого останется только отобразить этот набор координат в трёхмерном пространстве.

Для демонстрации результатов работы описанного метода визуализации n‑мерных векторов были подготовлены несколько изображений. На первом изображении показаны визуализации слова «смерть» (death) — левая фигура и «жизнь» (life) — правая фигура.

Глядя на приведённое изображение можно отметить следующее:

  1. Форма объектов напоминает форму морского ежа. Поэтому данный метод визуализации n‑мерных векторов в трёхмерном пространстве можно назвать методом «морского ежа»

  2. У объектов есть ярко выраженные более длинные «шипы». Эти «шипы» соответствуют большим значениям координат векторов.

  3. Количество длинных «шипов», размеры «шипов», и направления «шипов» у объектов, визуализирующих слова «смерть» и «жизнь», сильно отличается. Т.е. по форме объектов можно судить о степени их похожести и делать вывод о том насколько соответствующие объектам вектора ближе (объекты более похожи) или дальше (объекты менее похожи)

Для сравнения приводим объекты, соответствующие векторам для слов «стол» (слева) и «стул» (справа):

Видно, что данные объекты похожи — количество и направление длинных «шипов» у них практически совпадает. Отличий гораздо меньше, чем для слов «смерть» и «жизнь».

Можно сделать следующие выводы:

  1. Описываемый метод визуализации n‑мерных векторов в трёхмерном пространстве действительно позволяет отобразить соответствующие этим векторам объекты, причем это происходит без потери координат.

  2. Получившиеся объекты похожи на морских ежей, характеризуются наличием более длинных «шипов», отображающих координаты вектора с большими абсолютными значениями. Эти координаты, вероятно, являются более значимыми для соответствующего вектору объекту (слову в нашем примере).

  3. Объекты можно сравнивать по формы. Чем сильнее отличаются объекты (по количеству, направлению и длине шипов) тем дальше располагаются соответствующие объектам векторы.

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.