Внимание правильный ответ

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Что в черном ящике???
Что в черном ящике???

Top-down подход

Если читатель был достаточно внимателен, то, наверное, заметил, что в предыдущей заметке я обошел стороной непосредственно блок механизма внимания, точнее сказать, описание было дано методом черного ящика: вот тут такие-то входы, там такие-то выходы. Теперь, внимание, вопрос знатокам: Что лежит в черном ящике? В действительности, крайне важно понимать, что там внутри и логично посвятить данной теме отдельный текст. Понимание механизма внимания определяет ход дальнейших размышлений вплоть до самых передовых архитектур ИИ и поэтому сложно переоценить важность этой темы.

Обычно в технической литературе принято сначала говорить об элементах по отдельности и далее уже давать композиционное представление сочетания таких элементов, это так называемых bottom-up (снизу вверх) подход. Консультантам обычно ближе подход top-down (сверху вниз), что позволяет сначала поймать идею на уровне композиции и далее погружаться в детали. Именно второму варианту я отдаю предпочтение: я начал с архитектуры Pointer Network и теперь хочу разобрать элемент механизма внимания в деталях.

На Хабре есть замечательная статья-перевод Transformer в картинках, где подробно и наглядно по шагам разбираются вычисления для механизма внимания и архитектуры трансформеров, но вот, что касается основных элементов механизма внимания там дословно написано следующее:

…Что представляют собой векторы «запроса», «ключа» и «значения»?

Это абстракции, которые оказываются весьма полезны для понимания и вычисления внимания. Прочитав ниже, как вычисляется внимание, вы будете знать практически все, что вам нужно о роли этих векторов в рассматриваемой нами модели…

Объяснение в стиле: вот формула, считает так, она работает, слово пацана. Лично я в этом вижу очень много недосказанности:

  • Что за ключи, значения, запросы? Там внутри база данных? Откуда она взялась?

  • Почему формула с softmax ? Как она выведена?

  • Есть ли за механизмом внимания какая-то интуиция?

Еще раз подчеркиваю, статья бодрая и очень полезная, обязательна к прочтению, но принцип работы механизма внимания там раскрыт очень поверхностно.

Непараметрическая регрессия Надарая-Ватсона

В свое время редактор Стивена Хоккинга справедливо заметил, что каждая формула в книге отнимает ноль в цифре его аудитории и поэтому в итоговой версии Краткой истории времени было решено оставить лишь одну формулу E=mc^2. Лично я стараюсь также избегать формул, но в данном случае придется все-таки изменить привычке и добавить чуть больше математического контекста, хотя и спрятанного под спойлер.

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

Немного ядерной математики

Допустим, мы хотим оценить некую регрессионную функцию m(x) непараметрическим методом для некоторой независимой переменной X в отношении зависимой Y. Достаточно сложно оценить полностью условную плотность распределения вероятности, но можно попробовать оценить условное среднее для каждого значения x, то есть формально:

m(x) =E[Y \mid X=x] = \int y f_{Y \mid X=x}(y) d y = \frac{\int y f(x, y) d y}{f_X(x)}​

Это выражение следует из формулы среднего значения случайной величины и определения условной плотности вероятности. Иными словами, регрессионная функция может быть оценена из совместного f и маржинального распределений.

Теперь предлагаю вспомнить формулу ядерной оценки плотности распределения:

\hat{f}(x; h) = \frac{1}{n} \sum_{i=1}^n K_h(x - X_i),,

где h – ширина окна (bandwidth), которая также определяет ширину столбцов при построении гистограммы. Собственно все непараметрические методы танцуют математику вокруг некой агрегации значений на интервале h. Аналогично формула для совместного распределения двух переменных:

\hat{f}(x,y) = \frac{1}{n}\sum_{i=1}^{n} K_h(x-x_i) K_h(y-y_i)

подставляем формулы ядерной оценки плотности распределения в первую формулу расчета среднего:

\operatorname{\hat E}(Y | X=x) = \int \frac{y \sum_{i=1}^{n} K_h(x-x_i) K_h(y-y_i)}{\sum_{i=1}^{n} K_h(x-x_i)} dy,

далее выносим все постоянные, независящие от y за знак интеграла:

\operatorname{\hat E}(Y | X=x) = \frac{\sum_{i=1}^{n} K_h(x-x_i) \int y \, K_h(y-y_i) dy}{\sum_{i=1}^{n} K_h(x-x_i)},

теперь, выражение под интегралом представляет собой формулу взвешенного по ядерной функции среднего для y_i и следовательно итоговое выражение принимает вид:

\operatorname{\hat E}(Y | X=x) = \frac{\sum_{i=1}^{n} K_h(x-x_i) y_i}{\sum_{i=1}^{n} K_h(x-x_i)},

Формула Надарая-Вотсона для оценки среднего с использованием ядерной регрессии

\hat{m}(x; 0, h) := \sum_{i=1}^n \frac{K_h(x - X_i)}{\sum_{i=1}^n K_h(x - X_i)} Y_i = \sum_{i=1}^n W_i^0(x) Y_i,,

где

W_i^0(x) := \frac{K_h(x - X_i)}{\sum_{i=1}^n K_h(x - X_i)}.

Имеем оценку взвешенного среднего целевой переменной Y_1,...Y_n​ по весам W^n_{i=1}(x), которые меняются в зависимости от значений x. Другими словами, оценка Надарая-Вотсона представляет собой локальное среднее Y_1,...Y_n в окрестности значений X=x при этом оценка близости осуществляется с помощью ядерной функции K_h​. Действительно, если нам нужно сделать оценку целевой переменной \hat y​для заданного X=x, то стоит поискать ответ где-то в Y_1,...Y_n​, которые будут близкими к \hat y​ по значениям x.

Интуиция и реализация

Немного ершистой математики и вот уже получилось протянуть мостик от функции взвешенного среднего к миру ИИ, однако ощущений на кончиках пальцев пока еще не появилось. Для того чтобы усилить интуицию вокруг механизма внимания и модели Надарая-Вотсона нужно презентовать немного кода на R.

В первую очередь необходимо вспомнить и определить ядерные функции:

library(torch) # тот самый Torch, нужный для тензорных операций
library(ggplot2) # рисовалка графиков  
library(patchwork) # для композиций графиков

# Определяем ядерные функции
gaussian <- function(x) torch_exp(-x**2 / 2) 
boxcar <- function(x) torch_abs(x) < 1
constant <- function(x) 1 + 0 * x
epanechikov <- function(x) torch_max(1 - torch_abs(x), other = torch_zeros_like(x))
kernel <- list(`gaussian`, `boxcar`, `constant`, `epanechikov`)
kernel_names <- c("gaussian", "boxcar", "constant", "epanechikov")

# Функция чтобы рисовать ядерные функции
plts <- mapply(kernel, kernel_names, SIMPLIFY = F, FUN=function(f, names){
  ggplot() + 
    xlim(-2, 2) +
    geom_function(fun = \(x)f(x) |> torch_tensor(dtype = torch_float()) |> as_array()) +
    labs(title = names)
})
Reduce(`+`, plts) + # графики ядерных функций
  plot_annotation(title = "Графики распространенных ядерных функций")

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

  1. Ключами (keys) будут называться известные (фактические) x

  2. Значениями (values) будут называться известные (фактические) y

  3. Запросами (queries) будут называться новые xx для которых нужно найти оценку \hat y

Вот оно как, Михалыч, получается, все эти ключи, значения и запросы заехали к нам в ИИ из мира непараметрической статистики из модели регрессии на локальное среднее

Источник: https://habr.com/ru/articles/877000/


Интересные статьи

Интересные статьи

Мейнтейнер открытого решения PiVPN Carlos (4s3ti) Colaço объявил о прекращении работы над проектом и скором переводе в архив репозитория на GitHub. Последний официальный релиз PiVPN получил номер v4....
Часто при разговорах с клиентами мы спрашиваем, как они ведут учет различных данных и используют ли они CRM-систему? Популярный ответ — мы работаем с Excel-файлами, а пот...
Статья о том, как упорядочить найм1. Информируем о вакансии2. Ведём до найма3. Автоматизируем скучное4. Оформляем и выводим на работу5. Отчитываемся по итогам6. Помогаем с адаптацией...
Самое интересное из англоязычных медиа, оставшееся без внимания технологических изданий. Читать дальше →
Компании растут и меняются. Если для небольшого бизнеса легко прогнозировать последствия любых изменений, то у крупного для такого предвидения — необходимо изучение деталей.