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

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

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

Рисунок 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)$$

Краткое содержание

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

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

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