alterna ai
ALTERNA AI / ГЛАВА 08 · 01

08.1 Слои обрабатывают набор примеров

Мы разобрали один нейрон.

Одинаковые веса применяются ко всем примерам. Каждый получает свои промежуточные числа, но не собственную новую сеть.

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

Общие веса для всего batch

Пусть X имеет shape[B,d_in], W[d_in,d_out], b[d_out]. Строка X — пример, столбец — признак. Тогда Z=XW+b и H=φ(Z) имеют shape[B,d_out]. Bias прибавляется каждой строке, веса переиспользуются. N02,N03; здесь принято строковое batch-соглашение.

Hij=ϕ(∑kXikWkj+bj).H_{ij}=\phi\left(\sum_k X_{ik}W_{kj}+b_j\right).

Возьмём четыре XOR-входа, W=[[1,1],[1,1]], b=[0,−1]. Строки Z: [0,−1],[1,0],[1,0],[2,1]. После ReLU получим [0,0],[1,0],[1,0],[2,1]. Выход с весами [1,−2] и нулевым bias равен [0,1,1,0].

Это конструктивный пример с ручными весами. В trainer используются другая, seeded инициализация и настоящий full-batch GD. Hidden layers выполняют affine+activation, последний слой выдаёт линейный скаляр, не вероятность. Loss=.5·mean((prediction−target)²) выбрана для прозрачного XOR-опыта, а не как универсальная loss классификации.

Эксперимент. На шаге0 проверьте формы и четыре predictions. Выполните один update: изменились реальные weights, затем пересчитана loss. Смена seed лишь выбирает новую инициализацию и сбрасывает траекторию; это ещё не обучение.

Воспроизводимый сценарий. Кнопка «Проверенный сценарий XOR» задаёт width4, depth1, tanh, seed42, scale2, learning rate1 и200 updates. Пройдите до конца: predictions приблизятся к[0,1,1,0], но не станут математически точными целыми. Это результат настоящего GD на этих настройках, не гарантия для другого seed. Консервативные defaults могут за100 шагов в основном научиться среднему target — сравните обе траектории.

X=[[0,0],[0,1],[1,0],[1,1]]
H=[[max(0,a+b),max(0,a+b-1)] for a,b in X]
out=[h1-2*h2 for h1,h2 in H]
assert H==[[0,0],[1,0],[1,0],[2,1]] and out==[0,1,1,0]

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Batch увеличивает activations, не копирует обучаемые параметры.

Ширина и глубина сети. Как этот вопрос продолжает полученный результат?

Python-примеры главы 08 Академическая база →