Глубокое обучение

Нейронные сети: от биологии к математике

**86 миллиардов нейронов** в человеческом мозге - и всего **800 искусственных** достаточно, чтобы распознавать рукописные цифры с точностью 98%. Как учёные сжали суть работы мозга в несколько строк кода?

  • **Распознавание лиц:** Face ID в iPhone использует нейронную сеть с миллионами нейронов для идентификации владельца даже в темноте
  • **Голосовые помощники:** Siri, Alexa, Google Assistant - нейронные сети преобразуют звуковые волны в текст и обратно
  • **Рекомендации:** Netflix, YouTube, Spotify используют нейронные сети, чтобы предсказать, что вам понравится

Предварительные знания

  • Базовая линейная алгебра: векторы, скалярное произведение, умножение матриц
  • Производные и chain rule из математического анализа
  • Чтение простого кода на Python и NumPy
  • Машинное обучение: введение
  • Математический анализ: последовательности и пределы
  • Линейная алгебра: векторы

Когда биология стала формулой

В 1943 году нейрофизиолог Уоррен Маккаллок и логик Уолтер Питтс опубликовали первую математическую модель нейрона: с помощью пороговой логики они показали, что сети из простых бинарных элементов способны вычислять любую логическую функцию. В 1952 году Алан Ходжкин и Эндрю Хаксли описали, как настоящий нейрон возбуждается за счёт ионных токов, и за эту работу получили Нобелевскую премию по физиологии и медицине 1963 года. А в 1958 году Фрэнк Розенблатт построил перцептрон - первый нейрон, который сам подбирал веса по данным. Три шага за пятнадцать лет: биология превратилась в математику, а математика - в машину, которая учится.

Биологический vs искусственный нейрон

**В 1943 году нейрофизиолог Уоррен Маккаллок и математик Уолтер Питтс задали дерзкий вопрос:** можно ли описать работу мозга формулой? Они изучили биологический нейрон - клетку, которая принимает электрические сигналы через дендриты, обрабатывает их в теле (соме) и передаёт результат через аксон. И предложили простую математическую модель.

**Аналогия работает так:** входные сигналы (x₁, x₂, x₃) - это дендриты. Веса (w₁, w₂, w₃) - это синапсы, определяющие важность каждого входа. Сома суммирует сигналы: z = w₁·x₁ + w₂·x₂ + w₃·x₃ + b, где b (bias) - порог срабатывания. Функция активации f(z) решает, «зажжётся» ли нейрон.

**Модель Маккаллока-Питтса (1943)** - первая формальная модель нейрона. Она бинарная: нейрон либо активен (1), либо нет (0). Несмотря на упрощённость, эта идея стала фундаментом всего deep learning.

**Биологические нейроны несравнимо сложнее** искусственных. Настоящий нейрон имеет тысячи синапсов, работает с временными паттернами импульсов (spikes) и даже один дендрит может выполнять нелинейные вычисления. Искусственный нейрон - это грубое, но полезное упрощение.

Маккаллок и Питтс: нейрофизиолог и бездомный гений

**Маккаллок был философом и нейрофизиологом**, а Питтс - 18-летним бездомным гением-самоучкой. Они познакомились на семинаре, и Маккаллок пригласил Питтса жить в своём доме. Их статья 1943 года «A Logical Calculus of the Ideas Immanent in Nervous Activity» показала, что нейронные сети могут вычислять любую логическую функцию - за десятилетия до первого компьютера.

Какую роль в искусственном нейроне играют веса (weights)?

Perceptron: первая обучаемая модель

**В 1957 году Фрэнк Розенблатт сделал следующий шаг:** нейрон Маккаллока-Питтса не мог учиться - веса нужно было задавать вручную. Розенблатт создал **Perceptron** - нейрон, который сам подбирает веса на основе данных. The New York Times написала: «Зародыш компьютера, который сможет ходить, говорить, видеть и осознавать своё существование».

**Формула perceptron'а:** y = sign(w·x + b), где sign - пороговая функция (возвращает +1 если аргумент ≥ 0, иначе -1). Ключевая идея: если perceptron ошибся, мы корректируем веса в сторону правильного ответа.

**Perceptron Learning Rule** гениально проста: если ответ правильный - ничего не делай. Если ошибся - сдвинь веса в сторону правильного ответа. Математически доказано, что если данные **линейно разделимы**, perceptron всегда найдёт решение за конечное число шагов.

**Но есть проблема.** В 1969 году Марвин Минский и Сеймур Паперт опубликовали книгу «Perceptrons», где математически доказали: один perceptron не может решить задачу XOR.

**Книга Минского вызвала «зиму AI»** - финансирование исследований нейронных сетей практически прекратилось на 15 лет. Ирония: решение (многослойные сети) уже было известно, но алгоритма их обучения ещё не существовало.

Почему perceptron не может решить задачу XOR?

Слои: от perceptron к нейронной сети

**Решение проблемы XOR оказалось элегантным:** если один perceptron строит одну прямую линию, то комбинация нескольких может построить сколь угодно сложную границу. Так родилась идея **многослойных нейронных сетей** (multilayer perceptron, MLP).

**Нейронная сеть состоит из трёх типов слоёв.** **Input layer** - принимает данные (пиксели, числа, текст). **Hidden layers** - промежуточные слои, которые извлекают всё более абстрактные признаки. **Output layer** - выдаёт результат (класс, число, вероятность).

**Universal Approximation Theorem (Хорник, 1989):** нейронная сеть с одним скрытым слоем и достаточным количеством нейронов может приблизить **любую непрерывную функцию** с произвольной точностью. Это значит, что нейронные сети - универсальные аппроксиматоры.

**Но почему тогда deep learning использует десятки слоёв, а не один огромный?** Потому что глубина экспоненциально эффективнее ширины. Сеть с 10 слоями по 100 нейронов (1000 нейронов) может представить функции, для которых одному слою потребовались бы миллиарды нейронов.

СвойствоШирокая (1 слой)Глубокая (много слоёв)
ПараметрыМожет потребоваться экспоненциально многоПолиномиально мало
Иерархия признаковНет - всё в одном слоеДа - от простого к сложному
Пример (зрение)Пытается сразу распознать котаКрая → текстуры → части → кот
ОбучаемостьСложно оптимизироватьЕсть свои проблемы (vanishing gradients)

**Глубокие сети строят иерархию.** В распознавании изображений: первый слой находит края, второй - углы и текстуры, третий - части объектов (ухо, глаз), четвёртый - целые объекты (кот, собака). Каждый слой использует результаты предыдущего.

Что утверждает Universal Approximation Theorem?

Функции активации: нелинейность решает всё

**Без функций активации многослойная сеть бесполезна.** Вот почему: если каждый слой - это линейное преобразование (y = Wx + b), то композиция линейных функций - снова линейная функция. Два слоя без активации эквивалентны одному: W₂(W₁x + b₁) + b₂ = (W₂W₁)x + (W₂b₁ + b₂) = W'x + b'.

**Функция активации вносит нелинейность** - именно она позволяет сети аппроксимировать сложные функции. Рассмотрим основные.

ФункцияФормулаДиапазонКогда использовать
Sigmoidσ(z) = 1/(1+e⁻ᶻ)(0, 1)Выход: вероятность
Tanhtanh(z) = (eᶻ-e⁻ᶻ)/(eᶻ+e⁻ᶻ)(-1, 1)Скрытые слои (центрировано)
ReLUmax(0, z)[0, ∞)Скрытые слои (по умолчанию)
Leaky ReLUmax(0.01z, z)(-∞, ∞)Если ReLU не работает
GELUz·Φ(z)(-0.17, ∞)Transformers (BERT, GPT)

**Почему ReLU победил?** До 2010-х годов использовали sigmoid и tanh. Но у них есть фатальный недостаток - **vanishing gradient problem**: при больших или малых значениях z производная стремится к нулю. В глубокой сети градиенты умножаются (chain rule), и к первым слоям доходит практически ноль - сеть перестаёт учиться.

**ReLU тоже не идеален.** Проблема «мёртвых нейронов» (dying ReLU): если вход нейрона всегда отрицательный, его выход и градиент навсегда равны нулю - нейрон «умирает». Leaky ReLU решает это, пропуская маленький сигнал (0.01·z) для отрицательных значений.

Больше слоёв - всегда лучше результат. Глубокая сеть автоматически мощнее мелкой.

Без правильных функций активации глубокая сеть математически эквивалентна одному линейному слою. И наоборот: слишком глубокая сеть без специальных техник (residual connections, batch normalization) обучается хуже мелкой из-за vanishing/exploding gradients.

Композиция линейных функций - снова линейная функция. Именно нелинейные активации дают глубоким сетям их мощь. А проблемы с градиентами делают «наивное» увеличение глубины вредным. ResNet (2015) показал, что для успешного обучения глубоких сетей нужны skip connections.

Почему ReLU стал стандартной функцией активации для скрытых слоёв?

Ключевые идеи

  • **Искусственный нейрон** - упрощённая модель биологического: входы × веса → сумма + bias → активация
  • **Perceptron** (1957) - первый обучаемый нейрон, но ограничен линейными задачами (не решает XOR)
  • **Многослойные сети** решают проблему линейности: каждый слой извлекает всё более сложные признаки
  • **Функция активации** - ключ ко всему: без нелинейности глубокая сеть бесполезна. ReLU стал стандартом, решив проблему vanishing gradients
  • Помните 800 нейронов для цифр? Теперь вы знаете, как это работает: слои + активации + обучение весов

Связанные темы

Нейронные сети - фундамент всего deep learning. Вот куда ведут эти идеи:

  • Backpropagation — Алгоритм обучения весов - как нейронная сеть учится на ошибках
  • Linear Regression — Нейрон без активации - это линейная регрессия. Основа для понимания

Вопросы для размышления

  • Почему, на ваш взгляд, «зима AI» после книги Минского длилась 15 лет, хотя решение (многослойные сети) было известно?
  • Если Universal Approximation Theorem гарантирует, что один скрытый слой может аппроксимировать любую функцию, зачем нужны глубокие сети?
  • Можно ли считать искусственные нейронные сети моделью мозга? Где проходит граница аналогии?

Связанные уроки

  • dl-02 — Архитектуры нейронных сетей: от перцептрона к CNN и RNN
  • ml-01-intro — Основы машинного обучения как фундамент
  • calc-01-sequences — Математический анализ для понимания градиентов
  • la-01-vectors-intro — Матричное умножение - ядро прямого прохода нейросети
  • aie-03-llm-fundamentals — LLM - прямое применение глубоких архитектур
  • ml-26-backpropagation — Backpropagation как итеративная обратная связь по ошибке
Нейронные сети: от биологии к математике

0

1

Войти