Перейти к содержанию

Учусь ИИ, урок 3: математика для нейросетей — векторы, матрицы и вероятности

В первом уроке нейросеть была огромной формулой, а во втором текст превратился в номера токенов. Между ними остался вопрос: что можно делать с этими числами? Для начала хватит сложения и умножения. Слова «вектор» и «матрица» звучат страшнее, чем устроены.

Урок за 5 минут: список чисел, таблица весов, взвешенная сумма и вероятность. Всё можно посчитать на бумаге. Программировать пока не нужно.

Одно число и список чисел

Температуру можно записать одним числом: 18. Такое отдельное число математики называют скаляром.

А содержимое корзины одним числом описать неудобно. Пусть там два яблока и три груши. Договоримся: первое место — яблоки, второе — груши. Получится [2, 3].

Такой упорядоченный список чисел называется — вектор. Каждое число в нём, это координата. В векторе может быть сколько угодно координат. В нашем примере их две, то есть два места для чисел. Вектор [3, 2] описывает другую корзину: потому что порядок чисел здесь важен.

В школе вектор часто рисуют стрелкой. Например, [2, 3] можно нарисовать как перемещение на две клетки вправо и три вверх. Так координаты и их порядок выглядят более наглядно.

Вектор [2, 3] на клетчатом поле: от начала (0, 0) две клетки вправо и три вверх; синяя стрелка соединяет начало с точкой (2, 3)
Отсчитайте две клетки вправо и три вверх. Затем соедините начало и конец одной стрелкой — это изображение вектора [2, 3].

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

Векторы [2, 3] и [3, 2] описывают разные корзины; номер токена и его вектор — разные вещи
Векторы [2, 3] и [3, 2] описывают разные корзины; номер токена и его вектор — разные вещи

Вес: сколько даёт каждое число

Пусть яблоко стоит 4 монеты, а груша — 2. Цена корзины:

2 × 4 + 3 × 2 = 14

Мы взяли два списка: количество [2, 3] и цены [4, 2]. Умножили числа на одинаковых местах и сложили результаты. Это называется скалярным произведением. Название можно подсмотреть позже; сейчас важен сам способ счёта.

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

2 × 4 + 3 × (−2) = 2

Это уже не цена фруктов, а просто другой расчёт по двум входным числам.

Матрица: несколько расчётов сразу

Допустим, нужно посчитать цену корзины в двух магазинах. В первом цены [4, 2], во втором — [1, 3]. Запишем их строками таблицы:

Магазин Вес для яблок Вес для груш Результат
Первый 4 2 2 × 4 + 3 × 2 = 14
Второй 1 3 2 × 1 + 3 × 3 = 11

Прямоугольная таблица чисел — матрица. Входной вектор [2, 3] прошёл через таблицу весов, и получился новый вектор [14, 11].

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

Две строки весов превращают вход [2, 3] в выход [14, 11]; пример смешивания двух векторов
Две строки весов превращают вход [2, 3] в выход [14, 11]; пример смешивания двух векторов

Как смешать два вектора

В нейросети бывает нужно смешать информацию из нескольких токенов. Начнём с двух простых векторов: [1, 0] и [0, 1].

Возьмём половину первого и половину второго:

0,5 × [1, 0] + 0,5 × [0, 1]
= [0,5 + 0; 0 + 0,5]
= [0,5; 0,5]

Точка с запятой здесь только разделяет координаты, чтобы не спутать её с десятичной запятой. Если взять 80% первого вектора и 20% второго, получится [0,8; 0,2]. Это взвешенная сумма: доли определяют, сколько взять от каждого списка.

Оценка и вероятность — разные вещи

Нейросеть может выдать оценки продолжений: 4, 3 и −1. Это ещё не вероятности: вероятность не бывает отрицательной, а вероятности всех вариантов вместе должны составлять 100%.

Специальная формула softmax превращает оценки в положительные доли с общей суммой 100%. Более высокой оценке соответствует более высокая вероятность. В следующем уроке увидим готовый расчёт. Отрицательная оценка тоже получит маленькую, но положительную вероятность.

Вероятность 70% не обещает, что токен обязательно выпадет. Представьте мешок со 100 билетами: на 70 написано «молоко», на 30 — «спать». При случайном выборе один раз вполне может выпасть «спать».

Что это значит для текста

Номер токена — его адрес (порядковый номер) в словаре. Вектор токена — список чисел, который модель использует при вычислении. Номер 100 не означает «вдвое больше смысла», чем номер 50.

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

Попробуйте сами

Вход [3, 1], две строки весов: [2, 4] и [0, 5]. Посчитайте новый вектор. Потом смешайте [1, 0] и [0, 1], взяв 75% первого и 25% второго.

Что запомнить

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

Проверьте себя

  1. Одинаковы ли векторы [2, 3] и [3, 2]?
  2. Какой вектор получился в задании с входом [3, 1]?
  3. Может ли вероятность быть равна −1?

В следующем уроке — как нейросеть считает следующий токен. Возьмём маленькую сеть и пройдём её вычисления от входа до выхода.

Для тех, кто хочет глубже: векторы и матрицы в учебнике Dive into Deep Learning (на английском).

Написать комментарий

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

Возможно, вы не читали