Статья Автор: Деникина Н.В., Деникин А.В.

От нейрона к слою

Несколько прогнозов сразу

Приложению нужен не один прогноз, а два: за сколько заказ доедет и сколько ждать, пока курьер его заберёт.

Признаки те же самые. А веса у прогнозов свои: число свободных курьеров на подачу влияет куда сильнее, чем на дорогу.

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

Слова «ровно матричное умножение» стоит проверить, а не принять на веру. Разберём одну клетку результата.


Слой — это матрица весов

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

X имеет форму (примеры, входы). W — форму (входы, нейроны). Результат — (примеры, нейроны).

Что стоит за одной клеткой

Возьмём первый заказ — 4 км, 2 светофора, 6 свободных курьеров — и первый нейрон, который предсказывает время в дороге.

4 × 3=12
2 × 1.5=3
6 × (−0.5)=−3
сумма=12
плюс смещение первого нейрона=20

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

Так устроена каждая клетка результата. Клетка на пересечении строки i и столбца j — это скалярное произведение i-го заказа на веса j-го нейрона плюс смещение этого нейрона.

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

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

X(4, 3)@W(3, 2)=Y(4, 2)33внутренние размеры совпадают — иначе умножения не будетвнешние размеры 4 и 2 и дают форму результата

Смещение — вектор длины «число нейронов», по одному базовому уровню на прогноз. Прибавляется broadcasting-ом из прошлой пары ко всем строкам сразу.

Порядок осей в W важен: (входы, нейроны), а не наоборот. Записав наоборот, ты либо получишь несовпадение форм, либо, если размеры случайно сойдутся, тихо посчитаешь чушь.

Батч не меняет веса. Подашь один заказ или тридцать тысяч — W и b те же самые. Они описывают правило, а не данные, и в этом вся идея: правило одно, применяется ко всем.



Вывод
(4, 3)
(3, 2)
(4, 2)
[[ 20.    5.5]
 [ 22.   11.5]
 [  7.  -16.5]
 [ 24.    9. ]]

Слой принимает 100 чисел и выдаёт 10. Сколько у него параметров вместе со смещениями?

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

Отрицательного времени не бывает. Линейная формула просто не знает, что ожидание не падает ниже минуты. Чинить будем в следующей паре.

Сколько в слое параметров

Параметры — числа, которые подбирает обучение: все веса плюс все смещения. Именно их количество называют размером модели, когда говорят «модель на семь миллиардов».

Их столько же, сколько клеток в W, плюс по одному смещению на нейрон.


X имеет форму (32, 64), W — форму (64, 10), b — форму (10,). Какая форма будет у X @ W + b?


Вывод
100352
128
100480

Соотнеси каждое матричное умножение с формой его результата.

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


Слой принимает 784 числа и выдаёт 128. Сколько у него параметров вместе со смещениями?
Загрузка...
Чтобы оставить комментарий, необходимо авторизоваться
💬
Пока нет комментариев. Будьте первым!
Печать