lab
Neural Network
Русский

Как нейронная сеть имитирует произвольную функцию

Обзор

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


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


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

Моделирование унарной функции

Прямая линия

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

f(x)=wx+bf(x) = wx + b
ww1
bb0

Регулируя параметры w,bw, b, можно моделировать любую прямую линию.

Пошаговая функция

Мы используем нейрон с функцией активации sigmoid, чтобы имитировать его.

ww30
bb0

По мере того как параметр ww продолжает увеличиваться, нейронная сеть будет постепенно приближаться к функции.

Функция прямоугольного импульса

Разделим его на несколько этапов:

  1. Используйте один нейрон, чтобы смоделировать левую половину функции.
f1(x)=sigmoid(w1x+b1)f_1(x) = \text{sigmoid}(w_1x+b_1)
w1w_120
b1b_120
  1. Используйте отдельные нейроны, чтобы смоделировать правую половину функции (вверх ногами).
f2(x)=sigmoid(w2x+b2)f_2(x) = \text{sigmoid}(w_2x+b_2)
w2w_220
b2b_2-20
  1. Используйте другой нейрон, чтобы синтезировать изображения первых двух шагов.
f3(x,y)=sigmoid(w31x+w32y+b3)f_3(x, y) = \text{sigmoid}(w_{31}x + w_{32}y + b_3)
w31w_{31}10
w32w_{32}-10
b3b_3-5

Полученный результат является хорошей аппроксимацией целевой функции.

Другие унарные функции

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

nn10

Эксперимент

Завершите миссию Broken Line и наблюдайте за функцией, соответствующей каждому нейрону.

Моделирование бинарной функции

Самолет

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

f(x,y)=w1x+w2y+bf(x, y) = w_1x + w_2y + b
w1w_10
w2w_21
bb0

Регулируя параметры w1,w2,bw_1, w_2, b, можно моделировать любую плоскость.

Функция двоичного шага

Мы используем нейрон с функцией активации sigmoid, чтобы имитировать его.

f(x)=sigmoid(w1x+w2y+b)f(x) = \text{sigmoid}(w_1x + w_2y + b)
w1w_10
w2w_230
bb0

Двоичная прямоугольная импульсная функция

Как и в случае с унарными функциями, мы реализуем его поэтапно:

  1. Используйте один нейрон, чтобы смоделировать край функции.
f1(x,y)=sigmoid(w11x+w12y+b1)f_1(x, y) = \text{sigmoid}(w_{11}x + w_{12}y + b_1)
w11w_{11}0
w12w_{12}20
b1b_120
  1. Тогда мы можем получить следующую функцию:
wiw_i10
wjw_j-10
bib_i-5
  1. Наконец, можно синтезировать следующие функции.
w51w_{51}10
w52w_{52}-10
w53w_{53}10
w54w_{54}-10
b5b_5-15

Окончательная структура нейронной сети показана на рисунке ниже:

Другие бинарные функции

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

Эксперимент

Завершите миссию Круг и наблюдайте за функцией, соответствующей каждому нейрону.

Моделирование n-элементной функции

Принцип тот же, представьте сами! 😥

Вопрос

У нас уже есть цифровые схемы и программные алгоритмы, зачем нам нейронные сети?

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