Перейти к основному содержимому

Многослойный персептрон

Архитектура

Как мы выяснили, отдельный нейрон способен моделировать линейную регрессию и линейную классификацию. Однако нейросети способны моделировать и более сложные нелинейные зависимости, если их наслаивать друг на друга, как показано ниже:

Это пример многослойного персептрона (multilayer perceptron, MLP), т.е. нейросети, у которой входной слой (input layer) состоит из признаков обрабатываемого объекта xx, далее следует один или более скрытых слоёв (hidden layers), после чего идет выходной слой (output layer), состоящий из одного или более нейронов.

На рисунке приведён пример 3-х слойного персептрона с 2-мя скрытыми слоями (нулевой слой, состоящий из входных признаков при расчёте числа слоёв не учитывается).

Действие этой сети на вектор признаков xx может быть записано аналитически:

y^=f(x)=g(W3h(W2h(W1x+b1)+b2)+b3),\hat{y} = f(x) = g(W_3 h(W_2 h(W_1 x+b_1) + b_2) +b_3),

где

  • W1RK×D,b1RKW_1\in\mathbb{R}^{K\times D},\, b_1\in\mathbb{R}^K - матрица весов и вектор смещений 1-го слоя;

  • W2RM×K,b2RMW_2\in\mathbb{R}^{M\times K},\, b_2\in\mathbb{R}^M - матрица весов и вектор смещений 2-го слоя;

  • W3RP×M,b3RPW_3\in\mathbb{R}^{P\times M},\, b_3\in\mathbb{R}^P - матрица весов и вектор смещений 3-го (выходного слоя) слоя;

  • h()h(\cdot) - функция нелинейности скрытых слоёв

  • g()g(\cdot) - функция нелинейности для выходного слоя (зависит от решаемой задачи).

При этом связи строятся только между нейронами соседних слоёв, каждый с каждым, т.е. используются полносвязные слои (fully connected layers, FC).

Обратите внимание, что на каждом слое используется нейрон, выдающий константную единицу (отмечены жёлтым цветом), чтобы моделировать смещение при расчёте взвешенной суммы активаций входных нейронов.

Каждой связи сопоставляется свой настраиваемый вес.

Рассчитайте общее число параметров сети на рисунке.

Поскольку связи строятся каждый с каждым, а тождественная единица только выпускает связи, но не принимает, то

  • на первом слое нужно оценить (D+1)K(D+1)K весов,
  • на втором - (K+1)M(K+1)M,
  • а на третьем - (M+1)P(M+1)P.

По сути, нейроны скрытых слоёв строят промежуточное признаковое представление (intermediate feature representation) обрабатываемого объекта, а итоговый прогноз строится по извлечённым признакам последнего скрытого слоя, т.е. работает принцип глубокого обучения.

При этом промежуточные признаки строятся автоматически, поскольку внутри сети настраиваются все веса - и для извлечения промежуточных признаков на скрытых слоях, и для построения итогового прогноза на выходном слое.

Если данных достаточно много, то настроенные промежуточные признаки окажутся более информативными и полезными, чем если бы аналитик строил признаки самостоятельно, а потом к ним применял линейную модель.

Если активациями выступают сигмоиды h(u)=1/(1+eu)h(u)=1/(1+e^{-u}), то каждый нейрон представляет собой логистическую регрессию (со своими параметрами). Нейроны первого слоя реализуют логистические регресии относительно исходных признаков, нейроны следующих слоёв - логистические регресии относительно прогнозов предыдущих логистических регрессий.

Чем это отличается от многоуровневого стэкинга логистических регрессий?

В стэкинге каждая логистическая регрессия настраивается независимо предсказывать одну и ту же целевую метку класса, после настройки она фиксируется.

В многослойном персептроне все логистические регрессии настраиваются одновременно, причём учатся предсказывать не метку класса, а такие выходы, которые бы приводили к максимально информативным промежуточным признакам, чтобы построить наиболее точный итоговый прогноз.

Какой класс функций будет моделировать многослойный персептрон, если в каждом нейроне использовать тождественную функцию активации h(u)=uh(u)=u?

Каждый нейрон будет моделировать линейную функцию. Суперпозиция линейных функций будет снова приводить к линейной функции.

Может возникнуть вопрос: зачем тогда использовать подобную суперпозицию? Это целесообразно как регуляризация (упрощение модели), если на скрытых слоях число нейронов будет небольшим.

Рассмотрим D=10,K=3,M=3,P=10D=10, K=3, M=3, P=10 для многослойного персептрона на рисунке. Тогда общее число оцениваемых параметров будет 85. Если бы мы исключили скрытые слои, то общее число связей и весов было бы 11×10=11011\times 10=110, т.е. более глубокая модель получилась проще.

Обобщение архитектуры

Из физической природы задачи и для упрощения настройки сети можно строить нейросети не только в виде многослойного персептрона, но и с произвольной топологией (расположением связей), например, такой: