Введение в нейронные сети: распознавание рукописных цифр
Ключевые тезисы:
Мозг легко распознаёт образы (например, цифру "3") даже при низком качестве, что является сложной задачей для программирования.
Нейронные сети — это математическая модель, вдохновлённая мозгом, способная решать такие задачи.
Простейшая сеть для распознавания цифр состоит из слоёв нейронов, связанных весами и сдвигами.
Обучение сети — это поиск оптимальных значений 13 000+ параметров (весов и сдвигов).
Вся сеть — это сложная функция, преобразующая 784 входных значения (пиксели) в 10 выходных (уверенность в цифрах).
Почему это сложно и почему нейросети?
Задача написать программу, которая по сетке 28×28 пикселей определяет цифру, оказывается невероятно сложной. Нейронные сети — актуальный и мощный подход к решению таких задач машинного обучения.
Структура простейшей нейронной сети
Нейрон в данном контексте — это сущность, содержащая число от 0 до 1, называемое активацией.
Слои сети для распознавания цифр:
- Входной слой: 784 нейрона (28×28 пикселей). Активация каждого равна яркости соответствующего пикселя (0 — чёрный, 1 — белый).
- Скрытые слои: В примере — 2 слоя по 16 нейронов каждый. Их структура и размер выбраны произвольно для примера.
- Выходной слой: 10 нейронов. Активация каждого показывает уверенность сети, что на входе соответствующая цифра (от 0 до 9).
Принцип работы: Активация в одном слое определяет активацию в следующем.
Как может работать распознавание? (Идеальная картина)
Сеть может научиться выявлять иерархию признаков:
- Второй слой распознаёт мелкие грани (края, штрихи).
- Третий слой комбинирует грани в компоненты цифр (кружок, вертикальная линия).
- Выходной слой комбинирует компоненты в целые цифры.
Пример: Цифра 9 = кружок сверху + линия справа. Сеть активирует нейроны, отвечающие за эти компоненты, что в итоге сильно активирует нейрон "9".
Механика связи между слоями: Веса и сдвиги
Активация нейрона в следующем слое вычисляется на основе нейронов предыдущего слоя.
Процесс для одного нейрона:
- Взвешенная сумма: Каждое соединение с предыдущим слоем имеет вес (просто число). Активации предыдущего слоя умножаются на соответствующие веса и суммируются.
Положительный вес усиливает влияние нейрона.
Отрицательный вес ослабляет.
- Добавление сдвига: К сумме прибавляется число — сдвиг (bias). Он определяет, насколько легко нейрону активироваться (например, порог активации).
- Функция активации: Полученное число пропускается через функцию, сжимающую результат в диапазон от 0 до 1 (например, сигмоиду). Это и есть итоговая активация нейрона.
Пример для нейрона, ищущего грань: Ему назначаются положительные веса на пиксели в определённой области и отрицательные — на окружающие. Тогда он максимально активируется, когда центр области ярче, чем края (как у грани).
Масштаб параметров и компактная запись
- Между первыми двумя слоями: 784 × 16 весов + 16 сдвигов.
- Вся рассмотренная сеть содержит около 13 000 параметров (весов и сдвигов). Обучение — это настройка всех этих "ручек".
Компактное представление (линейная алгебра):
- Активации слоя → вектор.
- Веса между слоями → матрица.
- Взвешенная сумма → матричное умножение.
- Добавление сдвига и применение функции активации записывается в одну компактную формулу. Это эффективно для вычислений.
Сеть как функция
Вся нейронная сеть — это одна сложная функция с 13 000 параметров. Она принимает 784 числа (пиксели) на вход и выдаёт 10 чисел (уверенность в цифрах) на выходе.
Выводы
- Нейронная сеть — это слоистая структура нейронов-функций, преобразующих активации от входа к выходу.
- Веса и сдвиги — настраиваемые параметры, определяющие, какие шаблоны ищет каждый нейрон.
- Обучение (рассматривается в следующем видео) — это автоматический поиск значений этих параметров на основе данных.
- Понимание роли весов и сдвигов помогает не воспринимать сеть как "чёрный ящик" и даёт инструменты для её улучшения.
P.S.: В современных сетях вместо сигмоиды часто используют ReLU (выпрямитель) — функцию, возвращающую максимум из 0 и входного значения, что ускоряет и облегчает обучение глубоких сетей.