Нейронные сети: структура

Если вы помните из модуля Feature Crosses , следующая задача классификации является нелинейной:

Картезианский сюжет. Традиционная ось x помечена как «x1». Традиционная ось Y помечена как «x2». Синие точки занимают северо-западный и юго-восточный квадранты; желтые точки занимают юго-западный и северо-восточный квадранты.

Рис. 1. Нелинейная задача классификации.

«Нелинейный» означает, что вы не можете точно предсказать метку с моделью формы \(b + w_1x_1 + w_2x_2\) . Другими словами, «поверхность решения» не является линией. Ранее мы рассматривали пересечения признаков как один из возможных подходов к моделированию нелинейных задач.

Теперь рассмотрим следующий набор данных:

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

Рисунок 2. Более сложная задача нелинейной классификации.

Набор данных, показанный на рисунке 2, не может быть решен с помощью линейной модели.

Чтобы увидеть, как нейронные сети могут помочь в решении нелинейных задач, давайте начнем с представления линейной модели в виде графика:

Три синих круга подряд, соединенные стрелками с зеленым кружком над ними

Рисунок 3. Линейная модель в виде графика.

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

Как мы можем изменить эту модель, чтобы улучшить ее способность справляться с нелинейными задачами?

Скрытые слои

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

Три синих круга подряд с надписью

Рис. 4. График двухслойной модели.

Является ли эта модель линейной? Да, его выход по-прежнему является линейной комбинацией его входов.

В модели, представленной на следующем графике, мы добавили второй скрытый слой взвешенных сумм.

Три синих круга подряд с надписью

Рис. 5. График трехслойной модели.

Является ли эта модель все еще линейной? Да, это так. Когда вы выражаете выходные данные как функцию входных данных и упрощаете, вы получаете просто еще одну взвешенную сумму входных данных. Эта сумма не будет эффективно моделировать нелинейную задачу на рисунке 2.

Функции активации

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

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

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

Рис. 6. График трехслойной модели с функцией активации.

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

Общие функции активации

Следующая сигмовидная функция активации преобразует взвешенную сумму в значение от 0 до 1.

$$F(x)=\frac{1} {1+e^{-x}}$$

Вот сюжет:

Сигмовидная функция

Рисунок 7. Сигмовидная функция активации.

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

$$F(x)=max(0,x)$$

Превосходство ReLU основано на эмпирических данных, вероятно, обусловленных тем, что ReLU имеет более полезный диапазон чувствительности. Отзывчивость сигмовидной кишки падает относительно быстро с обеих сторон.

Функция активации ReLU

Рисунок 8. Функция активации ReLU.

Фактически любая математическая функция может служить функцией активации. Предположим, что \(\sigma\) представляет нашу функцию активации (Relu, Sigmoid или что-то еще). Следовательно, стоимость узла в сети определяется следующей формулой:

$$\sigma(\boldsymbol w \cdot \boldsymbol x+b)$$

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

Резюме

Теперь в нашей модели есть все стандартные компоненты того, что обычно имеют в виду, когда говорят «нейронная сеть»:

  • Набор узлов, аналогичных нейронам, организованных слоями.
  • Набор весов, представляющих связи между каждым слоем нейронной сети и слоем под ним. Слой ниже может быть другим слоем нейронной сети или каким-либо другим слоем.
  • Набор смещений, по одному на каждый узел.
  • Функция активации, которая преобразует выходные данные каждого узла в слое. Разные слои могут иметь разные функции активации.

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