Нейросетевое встраивание

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Создание статьи о нейросетевых встраиваниях)
(глубина, формулы, связность, второй промпт)
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] 15:26, 16 июня 2026 (MSD)
+
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] 20:15, 14 июля 2026 (MSD)
Промпт приводится полностью в [[Обсуждение:Нейросетевое встраивание]]
Промпт приводится полностью в [[Обсуждение:Нейросетевое встраивание]]
}}
}}
{{TOCright}}
{{TOCright}}
-
'''Нейросетево́е вста́ивание''' (англ. neural network embedding, также '''векторное представление''') — отображение объектов дискретного пространства (слов, символов, документов, пользователей, узлов графа и т.д.) в непрерывное векторное пространство фиксированной размерности<ref>{{\u043aнига|автор=Goodfellow I., Bengio Y., Courville A.|заглавие=Deep Learning|издательство=MIT Press|год=2016|страницы=502–511}}</ref>. Векторные представления позволяют моделям [[Нейронная сеть|нейронных сетей]] работать с дискретными объектами так же, как с числовыми данными, и улавливать семантические связи между ними.
+
 
 +
'''Нейросетево́е вста́ивание''' (англ. ''neural network embedding'', также '''векторное представление''', '''эмбеддинг''') — отображение объектов дискретного пространства (слов, токенов, предложений, документов, пользователей, узлов графа, изображений и т.д.) в непрерывное векторное пространство фиксированной размерности <tex>d</tex><ref name="goodfellow2016">{{книга |автор=Goodfellow I., Bengio Y., Courville A. |заглавие=Deep Learning |издательство=MIT Press |год=2016 |страницы=502–511}}</ref>. Эмбеддинги позволяют [[Нейронная сеть|нейронным сетям]] оперировать символами так же, как числами, и кодировать семантические, синтаксические или структурные отношения геометрией пространства.
 +
 
 +
Аналогия: словарь языка — огромный шкаф с ящиками-словами. Эмбеддинг раскладывает ящики в комнате так, что «близкие по смыслу» оказываются рядом, а «далёкие» — далеко. Тогда поиск, классификация и аналогии превращаются в операции с расстояниями и углами, а не в хрупкие правила на строках.
 +
 
 +
В современных [[Большая языковая модель|больших языковых моделях]] на архитектуре [[Трансформер (модель)|трансформера]] встраивания токенов — первый слой представления; [[Механизм внимания|механизм внимания]] далее смешивает их в контекстуальные состояния. Отдельные эмбеддинг-модели обслуживают семантический поиск и RAG в [[Промпт-инжиниринг|промпт-инжиниринге]].
== Основная идея ==
== Основная идея ==
-
Ключевое свойство качественного эмбеддинга — семантическая близость отображается в геометрическую близость векторов. Формально, если <tex>f: \mathcal{X} \to \mathbb{R}^d</tex> — функция встраивания, то для семантически близких <tex>x_1, x_2</tex> должно выполняться:
+
Качественный эмбеддинг отображает семантическую близость в геометрическую. Если <tex>f: \mathcal{X} \to \mathbb{R}^d</tex> — функция встраивания, то для семантически близких <tex>x_1, x_2</tex> и далёкого <tex>x_3</tex> ожидают:
 +
 
 +
:<tex>\|f(x_1) - f(x_2)\|_2 \ll \|f(x_1) - f(x_3)\|_2.</tex>
 +
 
 +
Часто используют косинусную близость:
-
:<tex>\|f(x_1) - f(x_2)\|_2 \ll \|f(x_1) - f(x_3)\|_2,</tex>
+
:<tex>\mathrm{sim}(u,v) = \frac{u^\top v}{\|u\|_2\,\|v\|_2}.</tex>
-
где <tex>x_3</tex> — семантически далёкий объект. Размерность <tex>d</tex> обычно от 64 до 4096.
+
Размерность <tex>d</tex> типично от 64–300 (классические word embeddings) до 384–4096 (современные sentence / LLM embeddings). Слишком малая <tex>d</tex> теряет различия; слишком большая удорожает хранение и ANN-поиск без гарантии лучшего качества.
-
== Словесные эмбеддинги ==
+
== Статические словесные эмбеддинги ==
=== Word2Vec ===
=== Word2Vec ===
-
Одна из первых и наиболее известных моделей для построения эмбеддингов слов, предложенная Mikolov et al. в 2013 году<ref>{{\u0441татья|автор=Mikolov T. et al.|заглавие=Distributed Representations of Words and Phrases|издание=NeurIPS|год=2013}}</ref>. Реализует два варианта:
+
Модель Mikolov et al. (2013) обучает плотные векторы слов на задаче предсказания контекста<ref name="mikolov2013">{{статья |автор=Mikolov T., Sutskever I., Chen K., Corrado G., Dean J. |заглавие=Distributed Representations of Words and Phrases and their Compositionality |издание=Advances in Neural Information Processing Systems |год=2013 |том=26 |ссылка=https://arxiv.org/abs/1310.4546}}</ref>:
-
* '''CBOW''' — предсказывает целевое слово по контексту;
+
* '''CBOW''' — предсказать целевое слово по усреднённому контексту;
-
* '''Skip-gram''' — предсказывает контекстные слова по целевому.
+
* '''Skip-gram''' — предсказать контекстные слова по целевому.
-
Функция потерь Skip-gram:
+
Функция потерь Skip-gram (в упрощённом виде):
:<tex>\mathcal{L} = -\frac{1}{T}\sum_{t=1}^{T}\sum_{-c \le j \le c,\, j \ne 0} \log p(w_{t+j} \mid w_t),</tex>
:<tex>\mathcal{L} = -\frac{1}{T}\sum_{t=1}^{T}\sum_{-c \le j \le c,\, j \ne 0} \log p(w_{t+j} \mid w_t),</tex>
-
где <tex>T</tex> — длина корпуса, <tex>c</tex> — размер окна контекста.
+
где <tex>T</tex> — длина корпуса, <tex>c</tex> — размер окна. На практике применяют negative sampling или hierarchical softmax.
-
Знаменитое свойство: <tex>f(\text{\u043aороль}) - f(\text{\u043cужчина}) + f(\text{\u0436енщина}) \approx f(\text{\u043aоролева})</tex>.
+
Знаменитое свойство линейных аналогий:
 +
 
 +
:<tex>f(\text{король}) - f(\text{мужчина}) + f(\text{женщина}) \approx f(\text{королева}).</tex>
 +
 
 +
Ограничение: один вектор на словоформа/тип — многозначность («банка» как финансовое учреждение и как ёмкость) схлопывается в одну точку.
=== GloVe ===
=== GloVe ===
-
GloVe строит эмбеддинги на основе статистики совместной встречаемости. Целевая функция:
+
'''GloVe''' (Global Vectors) явно использует статистику совместной встречаемости<ref name="pennington2014">{{статья |автор=Pennington J., Socher R., Manning C. D. |заглавие=GloVe: Global Vectors for Word Representation |издание=Empirical Methods in Natural Language Processing |год=2014 |страницы=1532–1543 |ссылка=https://aclanthology.org/D14-1162/}}</ref>. Целевая функция:
:<tex>J = \sum_{i,j=1}^{V} h(X_{ij})\left(w_i^\top \tilde{w}_j + b_i + \tilde{b}_j - \log X_{ij}\right)^2,</tex>
:<tex>J = \sum_{i,j=1}^{V} h(X_{ij})\left(w_i^\top \tilde{w}_j + b_i + \tilde{b}_j - \log X_{ij}\right)^2,</tex>
-
где <tex>X_{ij}</tex> — количество совместных появлений, <tex>h</tex> — весовая функция.
+
где <tex>X_{ij}</tex> — счётчик совместных появлений, <tex>h</tex> — весовая функция, снижающая влияние редких и сверхчастых пар. GloVe сочетает глобальную матричную факторизацию с локальным контекстным окном.
=== FastText ===
=== FastText ===
-
Расширение Word2Vec: каждое слово представляется суммой эмбеддингов символьных n-грамм. Позволяет строить векторы для out-of-vocabulary слов.
+
'''FastText''' расширяет Word2Vec: слово представляется суммой эмбеддингов символьных n-грамм<ref name="bojanowski2017">{{статья |автор=Bojanowski P., Grave E., Joulin A., Mikolov T. |заглавие=Enriching Word Vectors with Subword Information |издание=Transactions of the Association for Computational Linguistics |год=2017 |том=5 |страницы=135–146 |ссылка=https://arxiv.org/abs/1607.04606}}</ref>. Это даёт векторы для out-of-vocabulary и морфологически богатых языков (в том числе русского): невиданное слово всё же собирается из знакомых кусков.
== Контекстуальные эмбеддинги ==
== Контекстуальные эмбеддинги ==
-
В отличие от статических, контекстуальные эмбеддинги зависят от всего предложения — одно слово получает разные векторы в разных контекстах.
+
Статический вектор не зависит от предложения. '''Контекстуальный''' эмбеддинг функция от всего контекста: одно и то же слово получает разные векторы в разных окружениях.
=== ELMo ===
=== ELMo ===
-
ELMo использует двунаправленную LSTM для построения многоуровневых представлений слов. Финальный эмбеддинг взвешенная комбинация скрытых состояний всех слоёв.
+
'''ELMo''' строит представления двунаправленной LSTM и комбинирует скрытые состояния разных слоёв взвешенной суммой<ref name="peters2018">{{статья |автор=Peters M. E. et al. |заглавие=Deep Contextualized Word Representations |издание=NAACL |год=2018 |ссылка=https://arxiv.org/abs/1802.05365}}</ref>. Нижние слои ближе к синтаксису, верхние к семантике. ELMo стал мостом от Word2Vec к трансформерной эре.
-
=== BERT-эмбеддинги ===
+
=== BERT и трансформерные представления ===
-
[[Трансформер (модель)|Трансформерные]] модели типа BERT производят мощные контекстуальные эмбеддинги. Для эмбеддинга предложения часто используется токен [CLS] или усреднение выходов всех токенов (mean pooling).
+
[[Трансформер (модель)|Трансформерные]] энкодеры вроде BERT производят мощные контекстуальные состояния через многослойное само-внимание<ref name="devlin2019">{{статья |автор=Devlin J., Chang M.-W., Lee K., Toutanova K. |заглавие=BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding |издание=NAACL |год=2019 |страницы=4171–4186 |ссылка=https://arxiv.org/abs/1810.04805}}</ref>. Для эмбеддинга предложения часто берут токен <code>[CLS]</code> или mean-pooling по токенам. Важно: «сырой» BERT без дообучения на семантическую близость — слабый sentence embedding: косинус плохо ранжирует парафразы (классический результат Sentence-BERT).
-
=== Sentence Transformers ===
+
Decoder-only LLM также дают скрытые состояния, но для retrieval обычно обучают или адаптируют отдельные embedding-головы / bi-энкодеры.
-
Специализированные [[\u0422рансформер (\u043cодель)|трансформерные]] модели, дообученные на задаче семантической близости пар. Контрастивная функция потерь:
+
=== Sentence-BERT (SBERT) ===
 +
 
 +
'''Sentence-BERT''' дообучает сиамские/триплетные сети на парах предложений, чтобы косинус в пространстве эмбеддингов отражал семантическую близость<ref name="reimers2019">{{статья |автор=Reimers N., Gurevych I. |заглавие=Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks |издание=Empirical Methods in Natural Language Processing |год=2019 |ссылка=https://arxiv.org/abs/1908.10084}}</ref>. Классическая контрастивная (contrastive) потеря с отступом:
:<tex>\mathcal{L} = (1-y)\frac{1}{2}D^2 + y\frac{1}{2}\max(0,\, m - D)^2,</tex>
:<tex>\mathcal{L} = (1-y)\frac{1}{2}D^2 + y\frac{1}{2}\max(0,\, m - D)^2,</tex>
-
где <tex>D = \|f(s_1) - f(s_2)\|</tex>, <tex>y \in \{0,1\}</tex> — метка схожести, <tex>m</tex> — отступ (margin).
+
где <tex>D = \|f(s_1) - f(s_2)\|_2</tex>, <tex>y \in \{0,1\}</tex> — метка схожести, <tex>m</tex> — margin. На практике широко используют Multiple Negatives Ranking Loss и аналоги InfoNCE.
-
== Графовые и мультимодальные эмбеддинги ==
+
SBERT сделал возможным быстрый семантический поиск: один проход энкодера на документ + ANN, вместо кросс-энкодера на каждую пару.
-
* '''Node2Vec / DeepWalk''' — применяют идеи Word2Vec к узлам графа;
+
== Контрастивное и мультимодальное обучение ==
-
* '''CLIP''' — совместное пространство для текста и изображений (контрастивное обучение).
+
-
== Поиск ближайших соседей ==
+
=== InfoNCE, SimCSE ===
 +
 
 +
Контрастивное обучение притягивает аугментации одного объекта и отталкивает негативы. Типичный InfoNCE:
 +
 
 +
:<tex>\mathcal{L} = -\log \frac{\exp(\mathrm{sim}(z_i,z_i^+)/\tau)}{\sum_{j}\exp(\mathrm{sim}(z_i,z_j)/\tau)},</tex>
 +
 
 +
где <tex>\tau</tex> — температура. '''SimCSE''' получает позитивы dropout-аугментацией одного предложения — простой и сильный способ sentence embeddings без размеченных пар<ref name="gao2021">{{статья |автор=Gao T., Yao X., Chen D. |заглавие=SimCSE: Simple Contrastive Learning of Sentence Embeddings |издание=Empirical Methods in Natural Language Processing |год=2021 |ссылка=https://arxiv.org/abs/2104.08821}}</ref>.
 +
 
 +
=== CLIP ===
 +
 
 +
'''CLIP''' обучает совместное пространство текста и изображений контрастивной целью на парах (caption, image)<ref name="radford2021">{{статья |автор=Radford A. et al. |заглавие=Learning Transferable Visual Models From Natural Language Supervision |издание=International Conference on Machine Learning |год=2021 |ссылка=https://arxiv.org/abs/2103.00020}}</ref>. Это основа zero-shot классификации изображений и текстового поиска по картинкам; родственные идеи используются в conditioning [[Диффузионная модель|диффузионных моделей]] (текстовые энкодеры как guidance).
 +
 
 +
== Графовые эмбеддинги (кратко) ==
 +
 
 +
'''DeepWalk''' / '''Node2Vec''' генерируют случайные блуждания по графу и обучают Skip-gram на последовательностях узлов — «слова» заменяются вершинами. Есть также GNN-подходы (GraphSAGE, GAT), где эмбеддинг узла агрегирует соседей. Применения: рекомендации, детекция сообществ, knowledge graphs. В LLM-экосистеме графовые эмбеддинги встречаются в entity linking и retrieval по knowledge base.
 +
 
 +
== Поиск ближайших соседей (ANN) ==
Для запроса <tex>q</tex> найти <tex>k</tex> ближайших векторов из базы <tex>\mathcal{D}</tex>:
Для запроса <tex>q</tex> найти <tex>k</tex> ближайших векторов из базы <tex>\mathcal{D}</tex>:
Строка 72: Строка 102:
:<tex>\mathrm{kNN}(q) = \arg\!\min_{S \subset \mathcal{D},\, |S|=k} \sum_{v \in S} \|q - v\|.</tex>
:<tex>\mathrm{kNN}(q) = \arg\!\min_{S \subset \mathcal{D},\, |S|=k} \sum_{v \in S} \|q - v\|.</tex>
-
Библиотеки: FAISS, ScaNN, Annoy. Используют HNSW, IVF, Product Quantization.
+
Точный kNN на миллионах/миллиардах векторов недоступен по latency; используют приближённый поиск (ANN):
 +
* '''HNSW''' (Hierarchical Navigable Small World) — многоуровневый граф близости, высокий recall при низкой latency<ref name="malkov2018">{{статья |автор=Malkov Y. A., Yashunin D. A. |заглавие=Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs |издание=IEEE Transactions on Pattern Analysis and Machine Intelligence |год=2020 |том=42 |номер=4 |страницы=824–836 |ссылка=https://arxiv.org/abs/1603.09320}}</ref>;
 +
* '''IVF''' — кластеризация (Voronoi) + поиск в коротком списке ячеек;
 +
* '''Product Quantization (PQ)''' — сжатие векторов для экономии памяти.
 +
 
 +
Библиотеки: FAISS, ScaNN, Annoy, hnswlib; векторные СУБД (pgvector, Milvus, Qdrant и др.). Метрики качества поиска: Recall@k, latency p95, память на вектор. Ловушка: смена модели эмбеддингов требует '''полной переиндексации''' — пространства несовместимы.
 +
 
 +
== Оценка качества эмбеддингов ==
 +
 
 +
* '''внутренние''': Word Similarity (WordSim, SimLex), аналогии; для предложений — STS (Semantic Textual Similarity), корреляция с человеческими оценками;
 +
* '''внешние / retrieval''': BEIR, MTEB — multi-task benchmark для embedding-моделей (retrieval, clustering, classification);
 +
* '''downstream''': качество RAG (answer faithfulness), классификации с линейным зондом на замороженных эмбеддингах;
 +
* калибровка: нормализация L2, размерность, доменная адаптация (fine-tune на своих парах query–doc).
 +
 
 +
Частая ошибка: оценивать только in-domain примеры и удивляться деградации на другом жаргоне или языке.
== Применения ==
== Применения ==
-
Нейросетевые встраивания применяются в:
+
* [[Обработка естественного языка|обработка естественного языка]] — перевод (как компоненты), анализ тональности, кластеризация текстов, дедупликация;
-
* [[Обработка естественного языка|ОБР]] — перевод, анализ тональности, семантический поиск;
+
* '''семантический поиск и RAG''' в связке с [[Промпт-инжиниринг|промпт-инжинирингом]] и [[Большая языковая модель|LLM]];
-
* RAG-системах в контексте [[Промпт-инжиниринг|промпт-инжиниринга]];
+
* рекомендательные системы (user/item embeddings);
-
* рекомендательных системах;
+
* мультимодальный поиск и guidance для [[Диффузионная модель|диффузионных]] генераторов;
-
* [[Обучение с подкреплением из обратной связи человека (RLHF)|RLHF]] — reward model использует эмбеддинги.
+
* [[Обучение с подкреплением из обратной связи человека (RLHF)|RLHF]] / preference models представления пар (запрос, ответ) внутри reward model;
 +
* anomaly detection и метрическое обучение.
 +
 
 +
== Ограничения и ловушки ==
 +
 
 +
* '''hubness''' в высоких размерностях: некоторые векторы становятся «ближайшими соседями» слишком часто;
 +
* смешение доменов и языков без multilingual / domain-adapted моделей;
 +
* утечка тестовых пар в обучение sentence-моделей завышает STS;
 +
* использование эмбеддингов LLM «как есть» без contrastive fine-tune для retrieval;
 +
* этические риски: эмбеддинги наследуют корпусные стереотипы (гендер, раса и т.д.).
 +
 
 +
== Практический пайплайн семантического поиска ==
 +
 
 +
Типичный промышленный контур:
 +
 
 +
# выбрать или дообучить bi-энкодер (SBERT-класс / E5 / BGE и аналоги) под язык и домен;
 +
# нарезать документы на чанки (баланс полноты и точности; overlap);
 +
# сохранить векторы и метаданные; построить HNSW/IVF-индекс;
 +
# на запросе — encode → ANN → (опционально) реранкинг кросс-энкодером → сборка контекста для [[Большая языковая модель|LLM]].
 +
 
 +
Реранкинг дороже, но повышает precision@k; для низкой latency часто ограничивают кандидатов (например, top-100 → top-10). В [[Промпт-инжиниринг|промпт-инжиниринге]] RAG качество «ответа» нельзя диагностировать одним LLM-judge: отдельно смотрят retrieval и grounded generation.
 +
 
 +
Инженерные детали, которые ломают качество чаще теории:
 +
* разные модели/версии эмбеддингов в одной базе без миграции;
 +
* нормализация векторов включена при обучении, но забыта на инференсе (или наоборот);
 +
* чанки режут посередине таблиц и списков;
 +
* query и documents кодируются разными промпт-префиксами (у ряда моделей это обязательно).
== См. также ==
== См. также ==
-
* [[Трансформер (модель)]]
 
* [[Большая языковая модель]]
* [[Большая языковая модель]]
 +
* [[Трансформер (модель)]]
* [[Механизм внимания]]
* [[Механизм внимания]]
* [[Промпт-инжиниринг]]
* [[Промпт-инжиниринг]]
* [[Обучение с подкреплением из обратной связи человека (RLHF)]]
* [[Обучение с подкреплением из обратной связи человека (RLHF)]]
 +
* [[Диффузионная модель]]
== Примечания ==
== Примечания ==
Строка 96: Строка 167:
== Литература ==
== Литература ==
-
* {{книга|автор=Goodfellow I., Bengio Y., Courville A.|заглавие=Deep Learning|издательство=MIT Press|год=2016}}
+
* {{книга |автор=Goodfellow I., Bengio Y., Courville A. |заглавие=Deep Learning |издательство=MIT Press |год=2016 |страницы=502–511}}
-
* {{статья|автор=Mikolov T. et al.|заглавие=Distributed Representations of Words and Phrases|издание=NeurIPS|год=2013}}
+
* {{статья |автор=Mikolov T. et al. |заглавие=Distributed Representations of Words and Phrases and their Compositionality |издание=Advances in Neural Information Processing Systems |год=2013 |том=26 |ссылка=https://arxiv.org/abs/1310.4546}}
-
* {{статья|автор=Pennington J. et al.|заглавие=GloVe: Global Vectors for Word Representation|издание=EMNLP|год=2014}}
+
* {{статья |автор=Pennington J., Socher R., Manning C. D. |заглавие=GloVe: Global Vectors for Word Representation |издание=Empirical Methods in Natural Language Processing |год=2014 |страницы=1532–1543}}
-
* {{статья|автор=Devlin J. et al.|заглавие=BERT: Pre-training of Deep Bidirectional Transformers|издание=NAACL|год=2019}}
+
* {{статья |автор=Bojanowski P. et al. |заглавие=Enriching Word Vectors with Subword Information |издание=Transactions of the Association for Computational Linguistics |год=2017 |том=5 |страницы=135–146}}
-
* {{статья|автор=Reimers N., Gurevych I.|заглавие=Sentence-BERT|издание=EMNLP|год=2019}}
+
* {{статья |автор=Devlin J. et al. |заглавие=BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding |издание=NAACL |год=2019 |страницы=4171–4186 |ссылка=https://arxiv.org/abs/1810.04805}}
-
* {{статья|автор=Radford A. et al.|заглавие=Learning Transferable Visual Models From Natural Language Supervision (CLIP)|издание=ICML|год=2021}}
+
* {{статья |автор=Reimers N., Gurevych I. |заглавие=Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks |издание=Empirical Methods in Natural Language Processing |год=2019 |ссылка=https://arxiv.org/abs/1908.10084}}
 +
* {{статья |автор=Gao T., Yao X., Chen D. |заглавие=SimCSE: Simple Contrastive Learning of Sentence Embeddings |издание=Empirical Methods in Natural Language Processing |год=2021 |ссылка=https://arxiv.org/abs/2104.08821}}
 +
* {{статья |автор=Radford A. et al. |заглавие=Learning Transferable Visual Models From Natural Language Supervision (CLIP) |издание=International Conference on Machine Learning |год=2021 |ссылка=https://arxiv.org/abs/2103.00020}}
 +
* {{статья |автор=Malkov Y. A., Yashunin D. A. |заглавие=Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs |издание=IEEE TPAMI |год=2020 |том=42 |номер=4 |страницы=824–836}}
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
[[Категория:Нейронные сети]]
[[Категория:Нейронные сети]]
[[Категория:Обработка естественного языка]]
[[Категория:Обработка естественного языка]]

Версия 17:25, 14 июля 2026

Статья написана с использованием LLM Claude Sonnet 4 и проверена участником Emil Petrov 20:15, 14 июля 2026 (MSD)

Промпт приводится полностью в Обсуждение:Нейросетевое встраивание


Содержание

Нейросетево́е вста́ивание (англ. neural network embedding, также векторное представление, эмбеддинг) — отображение объектов дискретного пространства (слов, токенов, предложений, документов, пользователей, узлов графа, изображений и т.д.) в непрерывное векторное пространство фиксированной размерности d[1]. Эмбеддинги позволяют нейронным сетям оперировать символами так же, как числами, и кодировать семантические, синтаксические или структурные отношения геометрией пространства.

Аналогия: словарь языка — огромный шкаф с ящиками-словами. Эмбеддинг раскладывает ящики в комнате так, что «близкие по смыслу» оказываются рядом, а «далёкие» — далеко. Тогда поиск, классификация и аналогии превращаются в операции с расстояниями и углами, а не в хрупкие правила на строках.

В современных больших языковых моделях на архитектуре трансформера встраивания токенов — первый слой представления; механизм внимания далее смешивает их в контекстуальные состояния. Отдельные эмбеддинг-модели обслуживают семантический поиск и RAG в промпт-инжиниринге.

Основная идея

Качественный эмбеддинг отображает семантическую близость в геометрическую. Если f: \mathcal{X} \to \mathbb{R}^d — функция встраивания, то для семантически близких x_1, x_2 и далёкого x_3 ожидают:

\|f(x_1) - f(x_2)\|_2 \ll \|f(x_1) - f(x_3)\|_2.

Часто используют косинусную близость:

\mathrm{sim}(u,v) = \frac{u^\top v}{\|u\|_2\,\|v\|_2}.

Размерность d типично от 64–300 (классические word embeddings) до 384–4096 (современные sentence / LLM embeddings). Слишком малая d теряет различия; слишком большая удорожает хранение и ANN-поиск без гарантии лучшего качества.

Статические словесные эмбеддинги

Word2Vec

Модель Mikolov et al. (2013) обучает плотные векторы слов на задаче предсказания контекста[1]:

  • CBOW — предсказать целевое слово по усреднённому контексту;
  • Skip-gram — предсказать контекстные слова по целевому.

Функция потерь Skip-gram (в упрощённом виде):

\mathcal{L} = -\frac{1}{T}\sum_{t=1}^{T}\sum_{-c \le j \le c,\, j \ne 0} \log p(w_{t+j} \mid w_t),

где T — длина корпуса, c — размер окна. На практике применяют negative sampling или hierarchical softmax.

Знаменитое свойство линейных аналогий:

f(\text{король}) - f(\text{мужчина}) + f(\text{женщина}) \approx f(\text{королева}).

Ограничение: один вектор на словоформа/тип — многозначность («банка» как финансовое учреждение и как ёмкость) схлопывается в одну точку.

GloVe

GloVe (Global Vectors) явно использует статистику совместной встречаемости[1]. Целевая функция:

J = \sum_{i,j=1}^{V} h(X_{ij})\left(w_i^\top \tilde{w}_j + b_i + \tilde{b}_j - \log X_{ij}\right)^2,

где X_{ij} — счётчик совместных появлений, h — весовая функция, снижающая влияние редких и сверхчастых пар. GloVe сочетает глобальную матричную факторизацию с локальным контекстным окном.

FastText

FastText расширяет Word2Vec: слово представляется суммой эмбеддингов символьных n-грамм[1]. Это даёт векторы для out-of-vocabulary и морфологически богатых языков (в том числе русского): невиданное слово всё же собирается из знакомых кусков.

Контекстуальные эмбеддинги

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

ELMo

ELMo строит представления двунаправленной LSTM и комбинирует скрытые состояния разных слоёв взвешенной суммой[1]. Нижние слои ближе к синтаксису, верхние — к семантике. ELMo стал мостом от Word2Vec к трансформерной эре.

BERT и трансформерные представления

Трансформерные энкодеры вроде BERT производят мощные контекстуальные состояния через многослойное само-внимание[1]. Для эмбеддинга предложения часто берут токен [CLS] или mean-pooling по токенам. Важно: «сырой» BERT без дообучения на семантическую близость — слабый sentence embedding: косинус плохо ранжирует парафразы (классический результат Sentence-BERT).

Decoder-only LLM также дают скрытые состояния, но для retrieval обычно обучают или адаптируют отдельные embedding-головы / bi-энкодеры.

Sentence-BERT (SBERT)

Sentence-BERT дообучает сиамские/триплетные сети на парах предложений, чтобы косинус в пространстве эмбеддингов отражал семантическую близость[1]. Классическая контрастивная (contrastive) потеря с отступом:

\mathcal{L} = (1-y)\frac{1}{2}D^2 + y\frac{1}{2}\max(0,\, m - D)^2,

где D = \|f(s_1) - f(s_2)\|_2, y \in \{0,1\} — метка схожести, m — margin. На практике широко используют Multiple Negatives Ranking Loss и аналоги InfoNCE.

SBERT сделал возможным быстрый семантический поиск: один проход энкодера на документ + ANN, вместо кросс-энкодера на каждую пару.

Контрастивное и мультимодальное обучение

InfoNCE, SimCSE

Контрастивное обучение притягивает аугментации одного объекта и отталкивает негативы. Типичный InfoNCE:

\mathcal{L} = -\log \frac{\exp(\mathrm{sim}(z_i,z_i^+)/\tau)}{\sum_{j}\exp(\mathrm{sim}(z_i,z_j)/\tau)},

где \tau — температура. SimCSE получает позитивы dropout-аугментацией одного предложения — простой и сильный способ sentence embeddings без размеченных пар[1].

CLIP

CLIP обучает совместное пространство текста и изображений контрастивной целью на парах (caption, image)[1]. Это основа zero-shot классификации изображений и текстового поиска по картинкам; родственные идеи используются в conditioning диффузионных моделей (текстовые энкодеры как guidance).

Графовые эмбеддинги (кратко)

DeepWalk / Node2Vec генерируют случайные блуждания по графу и обучают Skip-gram на последовательностях узлов — «слова» заменяются вершинами. Есть также GNN-подходы (GraphSAGE, GAT), где эмбеддинг узла агрегирует соседей. Применения: рекомендации, детекция сообществ, knowledge graphs. В LLM-экосистеме графовые эмбеддинги встречаются в entity linking и retrieval по knowledge base.

Поиск ближайших соседей (ANN)

Для запроса q найти k ближайших векторов из базы \mathcal{D}:

\mathrm{kNN}(q) = \arg\!\min_{S \subset \mathcal{D},\, |S|=k} \sum_{v \in S} \|q - v\|.

Точный kNN на миллионах/миллиардах векторов недоступен по latency; используют приближённый поиск (ANN):

  • HNSW (Hierarchical Navigable Small World) — многоуровневый граф близости, высокий recall при низкой latency[1];
  • IVF — кластеризация (Voronoi) + поиск в коротком списке ячеек;
  • Product Quantization (PQ) — сжатие векторов для экономии памяти.

Библиотеки: FAISS, ScaNN, Annoy, hnswlib; векторные СУБД (pgvector, Milvus, Qdrant и др.). Метрики качества поиска: Recall@k, latency p95, память на вектор. Ловушка: смена модели эмбеддингов требует полной переиндексации — пространства несовместимы.

Оценка качества эмбеддингов

  • внутренние: Word Similarity (WordSim, SimLex), аналогии; для предложений — STS (Semantic Textual Similarity), корреляция с человеческими оценками;
  • внешние / retrieval: BEIR, MTEB — multi-task benchmark для embedding-моделей (retrieval, clustering, classification);
  • downstream: качество RAG (answer faithfulness), классификации с линейным зондом на замороженных эмбеддингах;
  • калибровка: нормализация L2, размерность, доменная адаптация (fine-tune на своих парах query–doc).

Частая ошибка: оценивать только in-domain примеры и удивляться деградации на другом жаргоне или языке.

Применения

  • обработка естественного языка — перевод (как компоненты), анализ тональности, кластеризация текстов, дедупликация;
  • семантический поиск и RAG в связке с промпт-инжинирингом и LLM;
  • рекомендательные системы (user/item embeddings);
  • мультимодальный поиск и guidance для диффузионных генераторов;
  • RLHF / preference models — представления пар (запрос, ответ) внутри reward model;
  • anomaly detection и метрическое обучение.

Ограничения и ловушки

  • hubness в высоких размерностях: некоторые векторы становятся «ближайшими соседями» слишком часто;
  • смешение доменов и языков без multilingual / domain-adapted моделей;
  • утечка тестовых пар в обучение sentence-моделей завышает STS;
  • использование эмбеддингов LLM «как есть» без contrastive fine-tune для retrieval;
  • этические риски: эмбеддинги наследуют корпусные стереотипы (гендер, раса и т.д.).

Практический пайплайн семантического поиска

Типичный промышленный контур:

  1. выбрать или дообучить bi-энкодер (SBERT-класс / E5 / BGE и аналоги) под язык и домен;
  2. нарезать документы на чанки (баланс полноты и точности; overlap);
  3. сохранить векторы и метаданные; построить HNSW/IVF-индекс;
  4. на запросе — encode → ANN → (опционально) реранкинг кросс-энкодером → сборка контекста для LLM.

Реранкинг дороже, но повышает precision@k; для низкой latency часто ограничивают кандидатов (например, top-100 → top-10). В промпт-инжиниринге RAG качество «ответа» нельзя диагностировать одним LLM-judge: отдельно смотрят retrieval и grounded generation.

Инженерные детали, которые ломают качество чаще теории:

  • разные модели/версии эмбеддингов в одной базе без миграции;
  • нормализация векторов включена при обучении, но забыта на инференсе (или наоборот);
  • чанки режут посередине таблиц и списков;
  • query и documents кодируются разными промпт-префиксами (у ряда моделей это обязательно).

См. также

Примечания

Литература

  • Goodfellow I., Bengio Y., Courville A. Deep Learning. — MIT Press, 2016. — С. 502–511.
  • Mikolov T. et al. Distributed Representations of Words and Phrases and their Compositionality // Advances in Neural Information Processing Systems. — 2013. — Т. 26.
  • Pennington J., Socher R., Manning C. D. GloVe: Global Vectors for Word Representation // Empirical Methods in Natural Language Processing. — 2014. — С. 1532–1543.
  • Bojanowski P. et al. Enriching Word Vectors with Subword Information // Transactions of the Association for Computational Linguistics. — 2017. — Т. 5. — С. 135–146.
  • Devlin J. et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // NAACL. — 2019. — С. 4171–4186.
  • Reimers N., Gurevych I. Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks // Empirical Methods in Natural Language Processing. — 2019.
  • Gao T., Yao X., Chen D. SimCSE: Simple Contrastive Learning of Sentence Embeddings // Empirical Methods in Natural Language Processing. — 2021.
  • Radford A. et al. Learning Transferable Visual Models From Natural Language Supervision (CLIP) // International Conference on Machine Learning. — 2021.
  • Malkov Y. A., Yashunin D. A. Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs // IEEE TPAMI. — 2020. — Т. 42. — № 4. — С. 824–836.
Личные инструменты