C23 · Нейросетевые методы
Нейросеть по шагам
От знакомого фильтра к каналам, нелинейности и одному настоящему шагу обучения.
Если нужны основы
Теория
Изображение становится картами признаков
Знакомый фильтр можно применить к каждому цветному каналу со своими весами и сложить ответы. Получится новая карта: в ней каждое число означает отклик фильтра, а не красную, зелёную или синюю яркость. В примере один выходной канал; для восьми карт понадобилось бы восемь независимых наборов весов.
Дальше к этой карте применяется ReLU: max(0, z). Зачем? Если складывать только линейные фильтры, их цепочку снова можно заменить одним линейным преобразованием. Обнуление отрицательной части добавляет нелинейность. Здесь видно точно, какие значения меняются; после неё пулинг уменьшает карту. Тензор — название многомерного массива, например 16×16×3 для этого входа.
Один фильтр видит три канала
Сначала фильтр ищет границы: три цветных канала дают одну карту отклика. Нажми ReLU в схеме — слева появится эта карта, справа её отрицательные значения станут нулями. Пулинг затем объединит четыре соседние клетки в одну. Выбирай клетку прямо на карте, чтобы увидеть её расчёт.
- Вход RGB16×16×3 · три канала
Точные значения — в разборе точки
RGB; диапазон показа 0…1
Точные значения — в разборе точки
Синий − · белый 0 · красный +; шкала -0.75…0.75
Разобрать выбранную точку
Что показывает график
Фильтр выделяет локальные изменения; ReLU оставляет отклик только выбранного знака, а пулинг сохраняет сильнейший или средний отклик в каждом блоке. Это три разных действия. Числа в схеме — ширина × высота × число каналов.
- Входных каналов
- 3
- Весов + смещение
- 28
- Сторона выходной карты
- 8
Параметры и подробности
Слева — вход выбранного действия, справа — его результат. Веса заданы вручную; сеть не обучена. Суммы показаны на общей шкале −0,75…0,75, ReLU и пулинг — 0…0,75. Цвет обозначает отклик фильтра, а не исходный цвет предмета.
Выбери точку на изображении. Стрелки перемещают её; Home и End — к краям строки. Просмотр не изменяет вычисление.
Для изменения примера нужен JavaScript и Canvas. Рассчитанные изображения доступны выше.
Что меняет размер, а что — только значения
ReLU заменяет отрицательные числа нулями. Максимум или среднее по блоку 2×2 с шагом 2 уменьшает обе стороны вдвое. Stride — расстояние между центрами вычисления; padding — добавленные граничные значения; dilation — расстояние между весами ядра. Это разные операции, даже если их выходы иногда одного размера.
Размер стороны вычисляем как floor((n+2p−d(k−1)−1)/s)+1, если ядро помещается. У 16 клеток, ядра 3, padding 1 и stride 1 получается 16; без padding — 14. Область возможной зависимости выходной клетки называется полем восприятия. Она не сообщает, какие пиксели действительно повлияли сильнее.
Откуда берутся веса
У фиксированного фильтра веса выбрал автор. При обучении сравнивают ответ с целевым значением через функцию ошибки и меняют веса так, чтобы её уменьшить. Обратное распространение вычисляет производные по цепочке операций; оптимизатор использует их для шага. Одна производная в следующем примере полностью проверяема вручную.
Фильтр учится на целевой карте
Выбери «Целевая карта»: здесь нужно обратить направление знакомого фильтра границ. Вернись к ответу и увеличивай число шагов. Меняются реальные веса и вся карта, а не отдельное число. Затем включи новый снимок: обучение остаётся прежним, проверяется перенос того же фильтра.
Точные значения — в разборе точки
Серая шкала 0…1: от чёрного к белому.
Точные значения — в разборе точки
Синий − · белый 0 · красный +; шкала -2…2
Разобрать выбранную точку
Что показывает график
Каждая точка рассчитана по всей обучающей карте, не только по выбранному пикселю. Новый снимок меняет изображения, но не эту кривую и не выученный вес.
- Обучающий снимок
При η=0 вес не меняется. При η=1 эта задача с одним множителем решается одним шагом. Значения 1…1,5 перескакивают цель, но сходятся с колебаниями. Новые формы проверяют только этот простой фильтр, а не качество распознавания.
- Вес до
- 1
- Вес после
- -0.75
- Ошибка до
- 0.0016
- Ошибка после
- 0
Параметры и подробности
Учится только общий множитель 3×3-фильтра. Ошибка — среднее квадратов отклонения от целевой карты, делённое на 2. Шаг нормирован на средний квадрат отклика обучающего снимка, чтобы η управляла долей исправления ошибки веса. Новый снимок никогда не участвует в градиенте.
Выбери точку на изображении. Стрелки перемещают её; Home и End — к краям строки. Просмотр не изменяет вычисление.
Для изменения примера нужен JavaScript и Canvas. Рассчитанные изображения доступны выше.
Проверить один градиент вручную
Справка и следующие методы
В фильтре выше один вес разделяется между всеми пикселями. Следующий маленький расчёт оставляет только одно входное число: так проще вручную проверить знак производной и направление шага. Это арифметическая справка к уже видимому изменению изображения.
Как вес учится на ошибке
Цель — получить 1 из входа 2: ответ равен 2w. Выбери вес до шага, затем увеличь размер шага η. Две отметки на кривой покажут, куда переместился вес и уменьшилась ли ошибка. Здесь нет пикселей: это одна численная задача.
Точные значения — в разборе точки
Синий − · белый 0 · красный +; шкала -2…4
Точные значения — в разборе точки
Синий − · белый 0 · красный +; шкала -2…4
Разбор вычисления
Что показывает график
Кривая — ошибка для каждого возможного веса. Точка «до» показывает текущий вес, «после» — один шаг против градиента. Ниже на этой же кривой означает меньшую ошибку. Размер шага меняет расстояние между точками, а не саму задачу.
- L(w)
- До шага: -0.5; 2
- После шага: -0.1; 0.72
Минимум в w=0,5. При η=0 ничего не учится; большой допустимый шаг может перескочить минимум и всё же уменьшить ошибку.
- Ошибка до
- 2
- Ошибка после
- 0.72
- Ответ до: 2w
- -1
- Ответ после: 2w′
- -0.2
Параметры и подробности
Один пример x=2, y=1 и один параметр w. Изменение w — обучение; вычисление 2w при фиксированном w — инференс. Это точная маленькая задача, а не тренировка распознавания изображений.
Выбери точку на изображении. Стрелки перемещают её; Home и End — к краям строки. Просмотр не изменяет вычисление.
Для изменения примера нужен JavaScript и Canvas. Рассчитанные изображения доступны выше.
Что ещё проверяют при настоящем обучении
Справка и следующие методы
Во время обычного инференса веса не меняются. Обучающая выборка подбирает веса, валидационная помогает выбирать настройки, тестовая оценивает уже принятое решение. Новый кадр в опыте выше исключён из подбора: на нём применяется уже найденное правило. Двух авторских рисунков достаточно для этой проверки механизма, но недостаточно для оценки качества на реальных фотографиях.
Нормировка входа должна соответствовать обучению. Аугментация создаёт допустимые изменения примеров: переворот не всегда сохраняет смысл цифры или медицинского снимка. Batch normalization использует разные статистики при обучении и обычном инференсе. Эти условия относятся к настоящему обучению и применению сети; они не являются скрытыми режимами нашего одного скалярного примера.
Практика
Проверь идею на другом условии. Следуй задаче над изображениями; разбор точки поможет объяснить результат. Эта практика не оценивается.
Проверяем тот же фильтр на новом снимке
Новая прямоугольная фигура не участвовала в обучении. Сначала предскажи, что будет с направлением границы после трёх шагов, затем проверь. Сравни ответ с целевой картой и выбери край фигуры, где отклик не нулевой. Верни обучающий снимок: выученный вес не должен измениться.
Точные значения — в разборе точки
Серая шкала 0…1: от чёрного к белому.
Точные значения — в разборе точки
Синий − · белый 0 · красный +; шкала -2…2
Разобрать выбранную точку
Что показывает график
Каждая точка рассчитана по всей обучающей карте, не только по выбранному пикселю. Новый снимок меняет изображения, но не эту кривую и не выученный вес.
- Обучающий снимок
При η=0 вес не меняется. При η=1 эта задача с одним множителем решается одним шагом. Значения 1…1,5 перескакивают цель, но сходятся с колебаниями. Новые формы проверяют только этот простой фильтр, а не качество распознавания.
- Вес до
- 1
- Вес после
- 1
- Ошибка до
- 0.0463
- Ошибка после
- 0.0463
Параметры и подробности
Учится только общий множитель 3×3-фильтра. Ошибка — среднее квадратов отклонения от целевой карты, делённое на 2. Шаг нормирован на средний квадрат отклика обучающего снимка, чтобы η управляла долей исправления ошибки веса. Новый снимок никогда не участвует в градиенте.
Выбери точку на изображении. Стрелки перемещают её; Home и End — к краям строки. Просмотр не изменяет вычисление.
Для изменения примера нужен JavaScript и Canvas. Рассчитанные изображения доступны выше.
Игры
Проверь объяснение
Вопрос 1 из 5
Слева взвешенная сумма, справа ReLU. Почему часть откликов исчезла?
Точные значения — в разборе точки
Синий − · белый 0 · красный +; шкала -0.75…0.75
Точные значения — в разборе точки
Серая шкала 0…0.75: от чёрного к белому.
Точные значения — в разборе точки
Синий − · белый 0 · красный +; шкала -2…2
Точные значения — в разборе точки
Синий − · белый 0 · красный +; шкала -2…2
Точные значения — в разборе точки
Синий − · белый 0 · красный +; шкала -2…2
Точные значения — в разборе точки
Синий − · белый 0 · красный +; шкала -2…2
Выбери один ответ. Он проверится сразу.
Ограничения и материалы
Границы этого примера
Веса демонстрационного слоя заданы вручную; распознавания объектов и обучения полной сети здесь нет. Обучение изображения подбирает только общий множитель фиксированного ядра; новый снимок не участвует в подборе. Скалярная справка раскрывает отдельно одну квадратичную функцию.