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

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

(Различия между версиями)
Перейти к: навигация, поиск
(глубина, формулы, связность, второй промпт)
(Исправлена формула аналогий: кириллица вынесена из tex)
 
Строка 36: Строка 36:
где <tex>T</tex> — длина корпуса, <tex>c</tex> — размер окна. На практике применяют negative sampling или hierarchical softmax.
где <tex>T</tex> — длина корпуса, <tex>c</tex> — размер окна. На практике применяют negative sampling или hierarchical softmax.
-
Знаменитое свойство линейных аналогий:
+
Знаменитое свойство линейных аналогий (классический пример на английских токенах; по-русски: «король − мужчина + женщина ≈ королева»):
-
:<tex>f(\text{король}) - f(\text{мужчина}) + f(\text{женщина}) \approx f(\text{королева}).</tex>
+
:<tex>f(\mathrm{king}) - f(\mathrm{man}) + f(\mathrm{woman}) \approx f(\mathrm{queen}).</tex>
-
Ограничение: один вектор на словоформа/тип — многозначность («банка» как финансовое учреждение и как ёмкость) схлопывается в одну точку.
+
Ограничение: один вектор на словоформу/тип — многозначность («банка» как финансовое учреждение и как ёмкость) схлопывается в одну точку.
=== GloVe ===
=== GloVe ===

Текущая версия

Статья написана с использованием 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(\mathrm{king}) - f(\mathrm{man}) + f(\mathrm{woman}) \approx f(\mathrm{queen}).

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

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.
Личные инструменты