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