|
|
| Строка 1: |
Строка 1: |
| - | {{well|Статья написана с использованием LLM '''Gemini''' и проверена участником [[Участник:Kirill Bazhutov|Kirill Bazhutov]] 00:12, 3 июля 2026 (MSD)}}
| + | #REDIRECT [[Многослойная нейронная сеть]] |
| - | | + | |
| - | '''Многослойный персептрон''' (Multilayer Perceptron, MLP) — это базовая архитектура искусственных [[Нейронная сеть|нейронных сетей]] (Artificial Neural Network, ANN) прямого распространения (Feedforward). Сеть состоит из нескольких слоёв вычислительных узлов: входного, одного или нескольких скрытых и выходного. Каждый узел скрытого слоя обычно представляет собой искусственный нейрон с нелинейной [[Функция активации|функцией активации]]; вид выходного слоя зависит от решаемой задачи.
| + | |
| - | | + | |
| - | В парадигме [[Глубокое обучение|глубокого обучения]] (Deep Learning) MLP является одной из базовых архитектур и элементарных вычислительных схем. Несмотря на доминирование специализированных архитектур (CNN для компьютерного зрения, Transformer для NLP), полносвязные сети широко применяются для работы с табличными признаковыми описаниями (хотя в ряде практических задач конкурируют с методами [[Градиентный бустинг|градиентного бустинга]]) и часто выполняют роль проекционных или классифицирующих блоков в составе сложных нейросетевых архитектур.
| + | |
| - | | + | |
| - | == История и место MLP среди нейросетей ==
| + | |
| - | | + | |
| - | Оригинальный классический [[Персептрон|персептрон]] был предложен Фрэнком Розенблаттом в 1958 году. Однослойная модель была способна решать задачи линейной классификации. Однако в 1969 году работа Марвина Минского и Сеймура Пейперта показала фундаментальные ограничения однослойных персептронов, включая неспособность решать задачи, не являющиеся линейно разделимыми (такие как [[Исключающее ИЛИ|XOR]]). Часто считается, что эта критика стала одним из факторов снижения интереса к нейросетевым подходам в последующие годы.
| + | |
| - | | + | |
| - | Появление скрытых слоёв концептуально решало эту проблему, но требовало нового математического аппарата для обучения. Возрождение направления произошло в 1980-х годах благодаря популяризации [[Алгоритм обратного распространения ошибки|алгоритма обратного распространения ошибки]] (Backpropagation), который позволил эффективно обучать многослойные архитектуры. Широкое признание этот метод получил после публикации фундаментальной работы Дэвида Румельхарта, Джеффри Хинтона и Рональда Уильямса в 1986 году.
| + | |
| - | | + | |
| - | == Архитектура и векторизованное представление ==
| + | |
| - | | + | |
| - | Основой MLP является [[Полносвязный слой|полносвязный слой]] (Dense layer). При отсутствии скрытых слоёв модель сводится к линейному классификатору, близкому по выразительной способности к [[Логистическая регрессия|логистической регрессии]] или однослойному персептрону. Скрытые слои позволяют строить нелинейные разделяющие поверхности.
| + | |
| - | | + | |
| - | В математическом смысле каждый слой выполняет аффинное преобразование входного пространства с последующим применением поэлементной нелинейности. Для вычислительной эффективности операции рассматриваются не для отдельных векторов, а для матриц (мини-пакетов).
| + | |
| - | | + | |
| - | Пусть размер мини-пакета (mini-batch) равен <tex>N</tex>. Тогда входные данные представляются матрицей <tex>X \in \mathbb{R}^{N \times d_0}</tex>, где <tex>d_0</tex> — размерность входного признакового пространства. Прямое распространение ([[Прямое распространение|Forward pass]]) для слоя <tex>l</tex> (где <tex>l = 1, \dots, L</tex>) записывается в матричном виде:
| + | |
| - | | + | |
| - | ::<tex>Z^{(l)} = A^{(l-1)} W^{(l)} + B^{(l)}</tex>
| + | |
| - | ::<tex>A^{(l)} = f^{(l)}(Z^{(l)})</tex>
| + | |
| - | | + | |
| - | Где:
| + | |
| - | * <tex>W^{(l)} \in \mathbb{R}^{d_{l-1} \times d_l}</tex> — матрица весов, где <tex>d_l</tex> — количество нейронов в слое <tex>l</tex>.
| + | |
| - | * <tex>A^{(l-1)} \in \mathbb{R}^{N \times d_{l-1}}</tex> — матрица активаций предыдущего слоя (при <tex>l=1</tex>, <tex>A^{(0)} = X</tex>).
| + | |
| - | * <tex>B^{(l)}</tex> — матрица смещений, полученная путём распространения вектора смещений <tex>b^{(l)} \in \mathbb{R}^{d_l}</tex> на все строки мини-пакета.
| + | |
| - | * <tex>f^{(l)}</tex> — нелинейная [[Функция активации]].
| + | |
| - | | + | |
| - | Общее число обучаемых параметров MLP равно сумме параметров всех слоёв, что подчёркивает быстрый рост сложности модели при увеличении ширины слоёв:
| + | |
| - | ::<tex>P = \sum_{l=1}^{L} (d_{l-1} + 1)d_l</tex>
| + | |
| - | где <tex>+1</tex> учитывает вектор смещений.
| + | |
| - | | + | |
| - | === Роль функций активации ===
| + | |
| - | Без нелинейных функций <tex>f^{(l)}</tex> композиция любого количества аффинных слоёв сводится в одно эквивалентное линейное преобразование. При достаточном числе нейронов и подходящих функциях активации MLP способен аппроксимировать широкий класс непрерывных функций на компактных множествах ([[Универсальная теорема аппроксимации|Теорема Цыбенко]]). Однако теорема универсальной аппроксимации не гарантирует эффективности обучения или хорошей обобщающей способности модели.
| + | |
| - | | + | |
| - | Исторически в скрытых слоях применялись сигмоида и гиперболический тангенс, однако в современных MLP они во многом вытеснены семейством '''ReLU''' (Rectified Linear Unit):
| + | |
| - | ::<tex>\text{ReLU}(z) = \max(0, z)</tex>
| + | |
| - | Производная ReLU равна 1 при <tex>z > 0</tex> и 0 при <tex>z < 0</tex>; в точке <tex>z = 0</tex> обычно используется выбранный субградиент. Благодаря наличию линейного участка ReLU частично снижает проблему исчезающего градиента ([[Проблема исчезающего градиента|Vanishing gradient problem]]) по сравнению с сигмоидой и тангенсом.
| + | |
| - | | + | |
| - | === Вид выходного слоя и типы задач ===
| + | |
| - | Вид выходного слоя и соответствующая функция потерь определяются спецификой решаемой задачи:
| + | |
| - | * '''Регрессия:''' Применяется линейный выходной слой (без активации).
| + | |
| - | * '''Бинарная классификация:''' Выходной слой из одного нейрона использует сигмоиду для предсказания вероятности целевого класса. Используемая функция потерь — бинарная кросс-энтропия (Binary Cross-Entropy).
| + | |
| - | * '''Многоклассовая классификация:''' Выходной слой использует функцию [[Softmax]], преобразующую логиты в распределение вероятностей по взаимно исключающим классам. Соответствующая функция потерь — категориальная кросс-энтропия (Categorical Cross-Entropy).
| + | |
| - | | + | |
| - | == Обучение и Метод максимального правдоподобия ==
| + | |
| - | | + | |
| - | Процесс обучения MLP сводится к нахождению оптимальных матриц весов <tex>\theta = \{W^{(l)}, b^{(l)}\}_{l=1}^L</tex>, минимизирующих эмпирический риск. Во многих стандартных задачах машинного обучения выбор [[Функция потерь|функции потерь]] может быть обоснован через статистический [[Метод максимального правдоподобия]] (Maximum Likelihood Estimation, MLE), хотя на практике могут применяться и другие функции (робастные функции потерь или суррогатные функции, ориентированные на метрики конкретной задачи).
| + | |
| - | | + | |
| - | Если рассматривать выходы нейронной сети как параметры вероятностного распределения <tex>p(y | x; \theta)</tex>, то задача обучения в рамках MLE — это максимизация правдоподобия обучающей выборки, что эквивалентно минимизации отрицательного логарифма правдоподобия (Negative Log-Likelihood, NLL).
| + | |
| - | | + | |
| - | === Алгоритм обратного распространения ошибки ===
| + | |
| - | Минимизация функции потерь осуществляется итеративно с помощью алгоритма [[Градиентный спуск|градиентного спуска]]. Вычисление градиентов по всем параметрам сети опирается на [[Алгоритм обратного распространения ошибки]] (Backpropagation).
| + | |
| - | | + | |
| - | Определим матрицу ошибок для слоя <tex>l</tex> как градиент потерь по преактивациям: <tex>\Delta^{(l)} = \frac{\partial L}{\partial Z^{(l)}} \in \mathbb{R}^{N \times d_l}</tex>.
| + | |
| - | Шаг обратного распространения вычисляется рекурсивно от последнего слоя к первому. Для скрытого слоя (при <tex>l-1 \geq 1</tex>) ошибка распространяется следующим образом:
| + | |
| - | ::<tex>\Delta^{(l-1)} = (\Delta^{(l)} (W^{(l)})^T) \odot f'^{(l-1)}(Z^{(l-1)})</tex>
| + | |
| - | Где <tex>\odot</tex> — произведение Адамара (поэлементное умножение), а <tex>f'</tex> — производная функции активации.
| + | |
| - | | + | |
| - | Градиенты параметров вычисляются так:
| + | |
| - | ::<tex>\frac{\partial L}{\partial W^{(l)}} = \frac{1}{N} (A^{(l-1)})^T \Delta^{(l)}</tex>
| + | |
| - | ::<tex>\frac{\partial L}{\partial b^{(l)}} = \frac{1}{N} \sum_{i=1}^N \Delta^{(l)}_{i, :}</tex>
| + | |
| - | | + | |
| - | ''Примечание:'' Если <tex>L</tex> обозначает среднюю потерю по мини-пакету, множитель <tex>\frac{1}{N}</tex> включается либо в определение <tex>\Delta^{(l)}</tex>, либо применяется при итоговом вычислении градиентов параметров. Важно соблюдать единую конвенцию нормировки.
| + | |
| - | | + | |
| - | Обновление весов происходит в направлении антиградиента с учётом [[Скорость обучения|скорости обучения]] (learning rate) и возможных эвристик оптимизатора (Momentum, Adam).
| + | |
| - | | + | |
| - | == Практика применения ==
| + | |
| - | | + | |
| - | === Предобработка данных ===
| + | |
| - | Многослойный персептрон обычно чувствителен к масштабу входных признаков. Перед началом обучения стандартной практикой является применение стандартизации (z-score normalization) или минимаксной нормализации входных данных.
| + | |
| - | | + | |
| - | === Инициализация, регуляризация и нормализация ===
| + | |
| - | Устойчивая сходимость глубокого MLP требует комплекса дополнительных техник:
| + | |
| - | * '''Инициализация весов:''' Для логистических активаций применяется метод Xavier (Glorot), для семейства ReLU — инициализация He. Это позволяет избежать проблем с дисперсией сигнала на начальных этапах.
| + | |
| - | * '''Регуляризация:''' Традиционно применяется L2-регуляризация (weight decay). Эффективным подходом является метод [[Dropout]], который случайно отключает часть нейронов в процессе обучения, что можно интерпретировать как приближение ансамблирования множества подсетей.
| + | |
| - | * '''Нормализация:''' Пакетная нормализация ([[Batch Normalization]]) или нормализация слоя (Layer Normalization) могут стабилизировать обучение и ускорять сходимость глубоких сетей.
| + | |
| - | * '''Ранняя остановка (Early stopping):''' Эвристический метод прерывания оптимизации при начале деградации метрик на валидационной выборке.
| + | |
| - | | + | |
| - | === Основные гиперпараметры ===
| + | |
| - | При проектировании и обучении MLP настройке подлежат:
| + | |
| - | * Архитектурные: число скрытых слоёв, количество нейронов в каждом слое, тип функции активации.
| + | |
| - | * Оптимизационные: скорость обучения (learning rate), размер мини-пакета (batch size), коэффициент регуляризации, количество эпох обучения.
| + | |
| - | | + | |
| - | == Преимущества и ограничения ==
| + | |
| - | | + | |
| - | '''Преимущества:'''
| + | |
| - | * Универсальная аппроксимирующая способность.
| + | |
| - | * Широкая применимость при работе с табличными данными.
| + | |
| - | * Концептуальная простота реализации и естественная векторизация, масштабируемая на современные графические ускорители (GPU).
| + | |
| - | | + | |
| - | '''Ограничения:'''
| + | |
| - | * Отсутствие индуктивных смещений: при работе с изображениями, текстами и последовательностями MLP обычно уступает архитектурам, использующим специальные индуктивные смещения, таким как CNN, RNN и [[Трансформер|трансформер]].
| + | |
| - | * Высокая параметрическая емкость: полносвязность обуславливает огромное количество обучаемых параметров, что увеличивает риск [[Переобучение|переобучения]].
| + | |
| - | * Требовательность к пайплайну: алгоритм оптимизации зависит от масштабирования признаков, инициализации весов и качественного подбора гиперпараметров.
| + | |
| - | | + | |
| - | == См. также ==
| + | |
| - | * [[Искусственная нейронная сеть]]
| + | |
| - | * [[Глубокое обучение]]
| + | |
| - | * [[Алгоритм обратного распространения ошибки]]
| + | |
| - | * [[Функция активации]]
| + | |
| - | * [[Градиентный спуск]]
| + | |
| - | * [[Полносвязный слой]]
| + | |
| - | | + | |
| - | == Литература ==
| + | |
| - | * {{книга | автор = Bishop C. M. | заглавие = Pattern Recognition and Machine Learning | год = 2006 | издательство = Springer }}
| + | |
| - | * {{книга | автор = Hastie T., Tibshirani R., Friedman J. | заглавие = The Elements of Statistical Learning: Data Mining, Inference, and Prediction | год = 2009 | издательство = Springer }}
| + | |
| - | * {{книга | автор = Goodfellow I., Bengio Y., Courville A. | заглавие = Deep Learning | год = 2016 | издательство = MIT Press }}
| + | |
| - | * {{статья | автор = Rumelhart D. E., Hinton G. E., Williams R. J. | заглавие = Learning representations by back-propagating errors | издание = Nature | год = 1986 | том = 323 | страницы = 533–536 }}
| + | |
| - | * {{статья | автор = Cybenko G. | заглавие = Approximation by superpositions of a sigmoidal function | издание = Mathematics of Control, Signals and Systems | год = 1989 | том = 2 | страницы = 303–314 }}
| + | |
| - | * {{статья | автор = Glorot X., Bengio Y. | заглавие = Understanding the difficulty of training deep feedforward neural networks | издание = AISTATS | год = 2010 }}
| + | |
| - | * {{статья | автор = He K., Zhang X., Ren S., Sun J. | заглавие = Delving deep into rectifiers: Surpassing human-level performance on imagenet classification | издание = ICCV | год = 2015 }}
| + | |
| - | * {{статья | автор = Srivastava N., Hinton G., Krizhevsky A., Sutskever I., Salakhutdinov R. | заглавие = Dropout: A simple way to prevent neural networks from overfitting | издание = JMLR | год = 2014 | том = 15 | страницы = 1929–1958 }}
| + | |
| - | | + | |
| - | [[Категория:Искусственные нейронные сети]]
| + | |
| - | [[Категория:Машинное обучение]]
| + | |
| - | [[Категория:Глубокое обучение]]
| + | |