К девяти утверждениям сводится всё, что разобрано выше. Каждое из них по ходу главы было получено разбором или проверено вычислением.
- Первая ось считает примеры, последняя описывает один пример.
- Формы сравниваются справа налево. Растянуть можно только единицу.
- Смещение прибавляется один раз, а не к каждому признаку.
- Скалярное произведение — свёрнутый цикл. Матричное умножение — все скалярные произведения сразу.
- Внутренние размеры обязаны совпасть, внешние дают форму результата.
- Веса описывают правило, а не данные: от числа примеров они не зависят.
- Без функции активации слои схлопываются в один.
- Цикл по примерам почти всегда лишний.
- Тест открывают один раз.
Сводка форм и формул
Таблица 15. Формы в слое из n примеров, k входов и m нейронов
| объект | форма | сколько чисел |
| таблица примеров X | (n, k) | n · k |
| таблица весов W | (k, m) | k · m |
| вектор смещений b | (m,) | m |
| результат X @ W + b | (n, m) | n · m |
| параметров в слое | | k · m + m |
Читаем по строкам. Первые четыре строки — формы, последняя отвечает на другой вопрос: сколько чисел подбирает обучение. Обратите внимание, что число параметров не зависит от n: сколько примеров ни подай, подбирать всё равно k · m + m чисел.
Нейрон: y = w₁·x₁ + w₂·x₂ + … + w_k·x_k + b, где x — признаки, w — веса, b — смещение, y — предсказание.
Слой: Y = X @ W + b.
Двухслойная сеть: Y = ReLU(X @ W₁ + b₁) @ W₂ + b₂.
Словарь
Тензор — числа одного типа, разложенные по осям так, что вдоль каждой оси их поровну. Форма — список размеров по всем осям. Срез — часть тензора, полученная указанием, что брать по каждой оси. Broadcasting — правило, по которому тензор меньшей формы мысленно повторяется вдоль недостающих осей. Нормализация — вычитание среднего и деление на разброс по каждому признаку. Вес — множитель при признаке. Смещение — слагаемое, не связанное ни с одним признаком. Скалярное произведение — сумма попарных произведений двух наборов равной длины; результат — одно число. Матричное умножение — все скалярные произведения строк левой таблицы на столбцы правой. Нейрон — взвешенная сумма признаков со смещением. Слой — несколько нейронов над одними и теми же признаками, с разными весами. Параметры — все веса и все смещения; числа, которые подбирает обучение. Функция активации — поэлементное преобразование выхода нейрона; форму не меняет, параметров не имеет. ReLU — линейный выпрямитель: отрицательное в ноль, положительное без изменений. Прямой проход — прогон данных через все слои от входа к предсказанию. Скрытый слой — слой, выход которого передаётся следующему слою, а не наружу. Перцептрон — взвешенная сумма признаков с порогом на выходе. Многослойный перцептрон, MLP — несколько полносвязных слоёв с активацией между ними. Векторизация — запись вычисления над тензорами без цикла по элементам. Обобщение — способность модели работать на данных, которых она не видела. Утечка — попадание в подбор весов информации из тестовой выборки.
Вопросы на подумать
- Датасет собран из 40 цветных фотографий 28 × 28 пикселей. Какая у него форма и сколько в нём чисел?
- Массив
a имеет форму (2, 1, 7), массив b — форму (3, 7). Сложатся ли они, и если да, какой формы будет результат? - Заказ: 9 км, 2 светофора, 14 свободных курьеров. Веса и смещение те же, что в таблице 8. Сколько минут предскажет нейрон?
- Какая форма получится у произведения (12, 5) @ (5, 8)? А у (12, 5) @ (8, 5)?
- Слой
nn.Linear на 6 входов и 2 нейрона. Сколько в нём параметров? - После ReLU второй нейрон скрытого слоя выдал ноль на всех четырёх заказах. Что это значит для предсказания?
- Модель ошибается в среднем на минуту на заказах, по которым подбирались веса, и на двенадцать минут на новых. О чём это говорит?
- Таблица заказов имеет форму (30, 3). Нужно прибавить к каждому заказу свою поправку — одно число на заказ. Какой формы должен быть вектор поправок и почему форма (30,) не подойдёт?
Ответы
- (40, 28, 28, 3); чисел 40 · 28 · 28 · 3 = 94 080.
- Сложатся, результат формы (2, 3, 7). Справа семёрки совпали; средняя единица растянулась до трёх; первой оси у
b нет, она дописывается как единица и растягивается до двух. - 9 · 3 + 2 · 1.5 + 14 · (−0.5) + 8 = 27 + 3 − 7 + 8 = 31 минута.
- Первое даёт (12, 8). Второе невозможно: рядом стоят пятёрка и восьмёрка.
- 6 · 2 + 2 = 14.
- На этих четырёх заказах он не влияет на предсказание: в следующий слой от него уходит ноль, умноженный на любой вес. Веса у него при этом могут быть нормальными — просто взвешенная сумма на этих заказах вышла отрицательной.
- Модель запомнила заказы, по которым подбирались веса, вместо того чтобы найти правило. Учить дольше в такой ситуации сделает хуже.
- Нужна форма (30, 1): единица растянется до трёх признаков, а каждому заказу достанется своё число. Форма (30,) при выравнивании справа даст встречу тройки и тридцатки — они не равны и ни одна не единица. Форма (3,) сработает без ошибки, но прибавит поправку к признаку, а не к заказу.
Что дальше
Все веса в этой главе задавались вручную: мы либо брали их из правила, которое сами же придумали, либо из обученной сети. Девять чисел можно подобрать рассуждением, и в конце главы 2 вы это сделаете. А в скромной сети из раздела 5 их сто тысяч, и рассуждением столько не подобрать.
Значит, нужен способ подбирать веса вычислением. Для этого требуются две вещи: свести качество модели к одному числу, которое можно уменьшать, — это глава 2, и научиться понимать, в какую сторону двигать каждый из ста тысяч весов, — это глава 3.