Эксперимент с нейронной сетью: универсальный установщик функций

Нейронные сети

Обзор

Говорят, что нейронная сеть — универсальный установщик функций, как понимать это предложение? Давайте проведем несколько экспериментов, чтобы получить более интуитивное понимание. Чтобы быть интуитивно понятным и простым для понимания, мы используем нейронную сеть для соответствия унарной функции, то естьy=f(x)y=f(x)

эксперимент

1. Функцияy=xy=x

Обучающие образцы

как показано на рисунке:

  • Синие точки представляют собой обучающие выборки, которые все получены из функцииy=xy=xполученный путем выборки
  • Оранжевая прямая представляет собой функцию, представленную нейронной сетью, которая в настоящее время не обучена и сильно отклоняется от выборки.

идеи

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

Отдельный нейрон имеет вид:y=о(wx+b)y = \sigma(wx+b)

  • wwиbbпараметры, подлежащие определению
  • о\sigmaэто функция активации

Если вы удалитео\sigma, в видеy=wx+by = wx+b, что является точно прямой линией. То есть мы можем подогнать эту функцию, используя нейрон без функции активации.

эксперимент

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

Соответствующая функцияy=1.0x+0.1y=1.0x+0.1, что очень близко к целевой функции и может быть ближе после еще нескольких шагов обучения.

2. Функция y=|x|

Обучающие образцы

Функция является кусочной функцией

y={xx0xx<0y = \begin{cases} x & x \ge 0 \\ -x & x < 0 \end{cases}

идеи

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

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

Окончательный результат выглядит следующим образом:

2 скрытых нейрона:

  • y1=ReLU(x)y_1=\mathrm{ReLU}(-x)
  • y2=ReLU(x)y_2=\mathrm{ReLU}(x)

Выходной нейрон:y=y1+y2y=y_1 + y_2, просто получите целевую кривую.

(Вышеуказанные результаты не тренируются с параметрами и получаются напрямую путем ручной настройки параметров)

3. Функция

y={x+33x<03x0x<30othery = \begin{cases} x+3 & -3 \le x < 0 \\ 3-x & 0 \le x < 3 \\ 0 & other \end{cases}

Количество требуемых скрытых нейронов возрастает до 4.

4. Функцияy=1.8*sin(3*x)/x)y = 1.8 * \sin(3 * x) / x)

Сеть становится более сложной, и подобранная кривая уже не идеальна.

Суммировать

По мере усложнения целевой функции:

  • Соответствующая нейронная сеть также более сложна.
  • Требуемый объем обучающих данных также выше
  • Тренировки становятся сложнее
  • становится все более неинтуитивным и трудным для объяснения

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

Справочное программное обеспечение

神经网络Нейронные сети