ИИ для инженера: основы Представления: почему модель «не знает», как выглядит мир
0%

Представления: почему модель «не знает», как выглядит мир

Представления: почему модель «не знает», как выглядит мир

Фрагмент лекции: «Все что нужно знать про ИИ айтишнику», 21:10 — отсюда взято содержание этой главы.

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

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

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

Цвет — не свойство объекта, а свойство измерителя

Начнём с факта, который многих удивляет: цвета не существует в физическом смысле. Существует электромагнитное излучение с определённым распределением энергии по длинам волн. Апельсин не «оранжевый» — он отражает свет с определённым спектром.

В сетчатке человека три типа колбочек, чувствительных к коротким, средним и длинным волнам. Зрительная система сравнивает отклики трёх типов и на основе этого сравнения строит признак, который мы называем цветом. Такое зрение называется трихроматическим. Оно не считывает спектр — оно проецирует непрерывное распределение энергии на три числа. Разные спектры, дающие одинаковую тройку откликов, для нас неразличимы: это явление называется метамерией и лежит в основе всей цветной полиграфии и всех экранов.

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

Тигр, который оранжевый только для нас

Лучший проверяемый пример из лекции — тигр. Для человека рыжая шкура в зелёной листве кричит. Логика подсказывает, что засадному хищнику такая окраска должна мешать. Но добыча тигра — копытные, а подавляющее большинство наземных млекопитающих дихроматы: у них нет отдельного «длинноволнового» канала, и оранжевый с зелёным для них попадают примерно в одну область цветового пространства.

Это не умозрительное рассуждение. В работе Fennell, Talas, Baddeley, Cuthill, Scott-Samuel, «Optimizing colour for camouflage and visibility using deep learning» (Journal of the Royal Society Interface, 2019) авторы вставляли цветные цели в фотографии реальных сред, измеряли время обнаружения на людях и интерполировали результат нейросетью. Затем они повторили расчёт для симулированных дихроматов — типичного для нечеловеческих млекопитающих зрения. Вывод авторов прямой: для дихроматических наблюдателей цвет сильно влиял на время обнаружения, а трихроматы разрушали камуфляж заметно эффективнее. Это, как формулируют сами авторы, проясняет, почему некоторые хищники носят окраску, которая человеку кажется вредной для охоты из засады.

Заберём отсюда главную мысль главы:

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

Где кончается техника и начинается философия

В лекции этот сюжет сразу переходит в рассуждение «мы не знаем, как устроен наш мозг, и не знаем, одинаково ли мы видим». Здесь важно развести два разных утверждения, потому что дальше они работают по-разному.

Утверждение Статус
Совпадает ли субъективное переживание красного у двух людей Открытый философский вопрос (проблема квалиа, мысленный эксперимент с инвертированным спектром). Операционального теста нет, и в этой главе он нужен только как аналогия
Различается ли различительная способность зрения у людей и видов Проверяемый факт. Измеряется психофизикой и физиологией, различия документированы
Ограничено ли множество различимых моделью состояний мира её представлением входа Проверяемое свойство. Следует прямо из того, что на вход подаётся конечный вектор чисел

Дальше в главе мы работаем только со вторым и третьим пунктами. Первый — риторический мостик, а не аргумент: из «мы не знаем, что чувствует другой человек» ничего не следует про устройство нейросети.

Представление: единственный мир модели

Теперь перенос. Между объектом реального мира и моделью всегда стоит цепочка преобразований, и каждое звено что-то отбрасывает.

Фотография кота — уже не кот. Это решётка пикселей, где каждый пиксель — три числа, а спектр, температура, запах и то, что кот только что съел, отброшены на этапе измерения. Дальше представление может отбросить ещё: перевод в оттенки серого убирает цвет, уменьшение до 64×64 убирает текстуру шерсти.

Практическое следствие. Если признак, необходимый для решения задачи, отброшен на любом из этих шагов, никакая архитектура и никакой объём обучения его не вернут. Модель, различающая породы по чёрно-белым фотографиям 32×32, не отличит рыжего кота от серого — не потому что «плохо обучена», а потому что в её мире рыжего не бывает.

Признаки руками и представления, которые выучиваются

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

Признаки (features) Представления (representations)
Кто задаёт Инженер вручную Модель в процессе обучения
Пример для изображения Гистограмма цветов, SIFT-дескрипторы, контуры по Кэнни Активации свёрточных слоёв
Пример для текста Длина, доля стоп-слов, TF-IDF по словарю Векторы токенов внутри трансформера
Плюс Интерпретируемо, работает на малых данных Не требует эксперта в предметной области
Минус Требует эксперта, упирается в его воображение Требует данных и вычислений, плохо интерпретируется

Ручное конструирование признаков — большая и до сих пор живая дисциплина, особенно для табличных данных, где нейросети регулярно проигрывают градиентному бустингу. Подробно она разобрана в главе про данные и признаки трека по машинному обучению; здесь мы её не пересказываем.

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

Эмбеддинг: смысл как точка в пространстве

Эмбеддинг — это представление объекта в виде точки в пространстве фиксированной размерности. Слово, предложение, изображение, товар в каталоге, пользователь — всё превращается в вектор из нескольких сотен или тысяч чисел.

Само по себе это ничего не даёт: закодировать слова числами можно и лексикографическим номером в словаре. Ценность появляется от одного свойства: близкие по смыслу объекты оказываются близкими в пространстве. Именно оно превращает «понимание смысла» в арифметику.

Мера близости почти всегда — косинус угла между векторами: cos(a, b) = dot(a, b) / (norm(a) * norm(b)). Единица означает сонаправленность, ноль — перпендикулярность, минус единица — противоположность. Угол выбран вместо расстояния сознательно: он не зависит от длины векторов, поэтому редкое слово с «коротким» вектором не проигрывает частому автоматически.

Вся арифметика — десяток строк без единой библиотеки.

import math

# Игрушечные эмбеддинги: по три числа на слово.
# В реальных моделях координат от 384 до нескольких тысяч, но арифметика та же.
VECTORS = {
    "кот":     [0.91, 0.12, 0.05],
    "котёнок": [0.88, 0.15, 0.09],
    "собака":  [0.79, 0.20, 0.11],
    "панда":   [0.62, 0.31, 0.14],
    "вагон":   [0.05, 0.88, 0.42],
}

def dot(a: list[float], b: list[float]) -> float:
    """Скалярное произведение — сумма попарных произведений координат."""
    return sum(x * y for x, y in zip(a, b))

def norm(a: list[float]) -> float:
    """Длина вектора — корень из суммы квадратов координат."""
    return math.sqrt(dot(a, a))

def cosine(a: list[float], b: list[float]) -> float:
    """Косинус угла между векторами. Длину векторов мера игнорирует:
    важно направление, а не масштаб."""
    denominator = norm(a) * norm(b)
    if denominator == 0.0:
        raise ValueError("нулевой вектор: угол не определён")
    return dot(a, b) / denominator

def nearest(word: str, top_k: int = 3) -> list[tuple[str, float]]:
    """Ближайшие соседи перебором.
    Время O(n * d) на запрос при n объектах и d координатах, память O(n)."""
    target = VECTORS[word]
    scored = [(other, cosine(target, vec))
              for other, vec in VECTORS.items() if other != word]
    scored.sort(key=lambda pair: pair[1], reverse=True)
    return scored[:top_k]

for word, score in nearest("кот"):
    print(f"{word:8} {score:.3f}")
# котёнок  0.998
# собака   0.990
# панда    0.936

Два инженерных замечания к этому коду. Первое: в продакшене векторы хранят заранее нормированными, тогда косинус вырождается в скалярное произведение и считается одной матричной операцией. Второе: перебор всех объектов приемлем до сотен тысяч векторов; дальше нужен приближённый поиск ближайших соседей, и с этого начинается RAG.

Откуда берётся «похожие по смыслу — близкие в пространстве»

Это свойство никто не программировал. Оно возникает как побочный эффект задачи обучения.

Классическая формулировка задачи: предсказать слово по его окружению (или окружение по слову) — так устроен word2vec, Mikolov et al., 2013. Чтобы хорошо предсказывать соседей, модель вынуждена выдать словам «кот» и «котёнок» похожие векторы: они встречаются в похожих контекстах. Слово «вагон» живёт в других контекстах — его вектор уезжает в другую область пространства.

За этим стоит дистрибутивная гипотеза лингвистики: значение слова определяется распределением контекстов, в которых оно встречается. Модель не понимает, что такое кот. Она обнаруживает, что позиции «кот» и «котёнок» в тексте взаимозаменяемы, и кодирует это геометрией.

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

Отсюда же — три ограничения, о которых регулярно забывают:

  • Близость не равна синонимии. «Горячий» и «холодный» встречаются в почти одинаковых контекстах, поэтому в пространстве они соседи. Для поиска это нормально, для проверки фактов — источник ошибок.
  • Эмбеддинги наследуют смещения корпуса. Если в текстах профессия систематически связана с полом, геометрия это зафиксирует; классический разбор — Bolukbasi et al., 2016.
  • Пространства разных моделей несовместимы. Векторы из двух разных энкодеров нельзя сравнивать между собой: у них нет общей системы координат. Смена модели эмбеддингов означает переиндексацию всей базы.

Ловушка: модель выучивает не то, что вы думаете

В лекции есть мимоходом брошенная фраза, которая на самом деле упирается в одну из главных проблем прикладного машинного обучения: «круглые уши не факт что характеризуют панду». Разворачиваем.

Модель ищет любые числовые закономерности, отличающие один класс от другого. Она не различает причину и корреляцию. Если в обучающей выборке есть признак, который проще и надёжнее разделяет классы, чем сам объект, будет выучен именно он.

Три разобранных в литературе случая:

Хаски против волка. В работе Ribeiro, Singh, Guestrin, «Why Should I Trust You?» (2016) — той самой, где предложен метод LIME — авторы намеренно обучили плохой классификатор. Он показывал высокую точность, а объяснение показало, что решение принимается по снегу на фоне: волков фотографировали зимой, хаски — нет. Никакого признака животного модель не использовала.

Пневмония на рентгене. Zech et al., PLOS Medicine, 2018: модель, обученная на снимках нескольких больниц, теряла качество на снимках новой больницы. Часть сигнала приходила от аппарата и протокола съёмки — по сути от «отпечатка» конкретного отделения, коррелирующего с долей больных пациентов.

Линейка и разметка на снимке кожи. Winkler et al., JAMA Dermatology, 2019: хирургическая разметка вокруг образования на дерматоскопическом снимке значительно повышала долю ответов «меланома». Врач ставил метку рядом с подозрительным пятном — модель выучила метку, а не пятно. Похожая история подробно разобрана для моделей выявления COVID-19 по рентгену: DeGrave, Janizek, Lee, Nature Machine Intelligence, 2021.

Обобщение этих случаев называется shortcut learning — обучение по «короткому пути»: модель находит признак, который работает на обучающем распределении и рассыпается за его пределами. Систематический обзор — Geirhos et al., «Shortcut Learning in Deep Neural Networks», 2020. Родственная проблема — недоопределённость: несколько моделей с одинаковой метрикой на тесте опираются на разные признаки и ведут себя по-разному в проде (D’Amour et al., 2020).

Практический вывод жёсткий: высокая метрика на отложенной выборке ничего не доказывает, если отложенная выборка собрана так же, как обучающая.

Инструменты из этого цикла — карты значимости, локальные объяснения, абляции признаков — это отдельная дисциплина, интерпретируемость. Она разобрана в главе про интерпретируемость и безопасность; здесь достаточно запомнить, что без неё вы не знаете, на что смотрит ваша модель.

Про поисковые алгоритмы: это соседняя ветка

В лекции в этом месте звучит идея: а что если поискать взаимосвязи в данных поисковыми алгоритмами. Мысль здравая, но это другая дисциплина — поисковая оптимизация: генетические алгоритмы, локальный поиск, эволюционные методы. Ими действительно решают задачи отбора признаков, и они действительно применимы к разработке ПО. Но это не обучение представлений: там задан явный критерий качества и перебирается пространство решений, а не подбираются веса градиентным спуском.

Смешивать их не нужно. Тема раскрыта в треке по SBSE — идём дальше.

Что модель хранит на самом деле

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

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

Отсюда три следствия, которые пригодятся дальше по треку:

  1. «Модель знает X» — метафора. Строго говоря, из параметров восстанавливается распределение, в котором правильный ответ на вопрос про X имеет высокую вероятность. Ничем не отличается механизм, порождающий верный ответ и уверенную выдумку — это одна и та же операция. Подробный разбор — в главе «Могут ли нейросети думать».
  2. Размер модели не равен объёму усвоенных данных. Модель на десятки гигабайт параметров обучена на терабайтах текста. Сжатие с потерями, и теряется в первую очередь редкое и единичное — ровно то, о чём вас, скорее всего, и спросят.
  3. Отдельные обучающие примеры иногда всё же извлекаются. Если пример повторялся в корпусе многократно, вероятность его дословного воспроизведения перестаёт быть пренебрежимой. Это не противоречит пункту выше — это его крайний случай.

Размерность: почему сырые пиксели — плохое представление

Последний кусок пазла — размер представления. Цветная фотография 512×512 — это 512 * 512 * 3 = 786432 числа. Такой вектор технически можно подать на вход, и наивные подходы так и делали. Проблемы начинаются сразу:

  • Расстояние в пиксельном пространстве не отражает смысл. Сдвиньте изображение на один пиксель вправо — картинка для человека та же, а вектор изменился почти во всех координатах. Два разных кота на одинаковом фоне окажутся ближе друг к другу, чем один и тот же кот на двух фонах.
  • Число параметров взрывается. Полносвязный слой на 1000 нейронов поверх такого входа — это почти 800 миллионов весов только в первом слое.
  • Данных требуется непропорционально много. Чем выше размерность, тем более разрежённым становится пространство и тем больше примеров нужно, чтобы покрыть его хоть сколько-нибудь плотно. Это семейство эффектов называют проклятием размерности.

Ответ — перейти к представлению меньшей размерности, сохраняющему нужную информацию. Делается это либо явными методами снижения размерности (PCA, UMAP и родственные), либо самой сетью: свёрточные слои как раз превращают решётку пикселей в компактный вектор признаков, устойчивый к сдвигу. Механику и границы применимости разбирает глава про снижение размерности.

Здесь важна только идея: выбор представления — это инженерное решение, которое определяет потолок качества сильнее, чем выбор архитектуры.

Источники

Мини-итог

  • Цвет — не свойство объекта, а результат работы конкретного измерителя: трихроматическое зрение проецирует непрерывный спектр на три числа, и метамерные спектры для нас неразличимы.
  • Наблюдатель определяет, какие признаки вообще существуют. Оранжевый тигр в зелёной листве не выделяется для дихромата-копытного — это измерено, а не придумано.
  • Для модели существует ровно то, что попало в представление. Признак, отброшенный сенсором или кодированием, не восстанавливается ни архитектурой, ни объёмом обучения.
  • Признаки задаются человеком, представления выучиваются моделью; переход от первого ко второму — суть революции глубокого обучения.
  • Эмбеддинг — точка в пространстве, близость меряется косинусом, а свойство «близкие по смыслу рядом» возникает из задачи обучения, а не задаётся вручную.
  • Модель учит корреляцию, а не причину: снег вместо волка, аппарат вместо пневмонии, разметка врача вместо меланомы. Высокая метрика на отложенной выборке из того же источника ничего не доказывает.
  • В весах нет ни картинок, ни фактов — только параметры, из которых на инференсе восстанавливается распределение. Поэтому «модель знает» — метафора, а не описание механизма.

Что дальше

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

Большие языковые модели: от T9 до трансформера

Нашли неточность? Выделите фрагмент текста — рядом появится жучок.

Нужен разбор именно вашей ситуации?

Статья описывает общий случай. Если у вас частный — можно разобрать его отдельно, платно. А если не хватает целого материала, предложите тему: её оплачивают вскладчину, и она выходит открытой для всех.

Доска запросов