Причина, по которой нейронная сеть является мощной, заключается в ее мощных способностях моделирования. Теоретически он может моделировать произвольные функции с бесконечно малыми ошибками.
Другими словами, мы можем использовать нейронные сети для построения произвольных функций и получения произвольных алгоритмов.
Здесь мы используем несколько наглядных примеров, чтобы помочь вам получить некоторое интуитивное понимание.
Моделирование унарной функции
Прямая линия
Это простейший случай, мы можем смоделировать его, используя нейрон без функции активации.
f(x)=wx+b
w1
b0
Регулируя параметры w,b, можно моделировать любую прямую линию.
Пошаговая функция
Мы используем нейрон с функцией активации sigmoid, чтобы имитировать его.
w30
b0
По мере того как параметр w продолжает увеличиваться, нейронная сеть будет постепенно приближаться к функции.
Функция прямоугольного импульса
Разделим его на несколько этапов:
Используйте один нейрон, чтобы смоделировать левую половину функции.
f1(x)=sigmoid(w1x+b1)
w120
b120
Используйте отдельные нейроны, чтобы смоделировать правую половину функции (вверх ногами).
f2(x)=sigmoid(w2x+b2)
w220
b2-20
Используйте другой нейрон, чтобы синтезировать изображения первых двух шагов.
f3(x,y)=sigmoid(w31x+w32y+b3)
w3110
w32-10
b3-5
Полученный результат является хорошей аппроксимацией целевой функции.
Другие унарные функции
Используя прямоугольную импульсную функцию, мы можем легко аппроксимировать другие произвольные функции, как и принцип интегрирования.
n10
Эксперимент
Завершите миссию Broken Line и наблюдайте за функцией, соответствующей каждому нейрону.
Моделирование бинарной функции
Самолет
Это простейший случай, мы можем смоделировать его, используя нейрон без функции активации.
f(x,y)=w1x+w2y+b
w10
w21
b0
Регулируя параметры w1,w2,b, можно моделировать любую плоскость.
Функция двоичного шага
Мы используем нейрон с функцией активации sigmoid, чтобы имитировать его.
f(x)=sigmoid(w1x+w2y+b)
w10
w230
b0
Двоичная прямоугольная импульсная функция
Как и в случае с унарными функциями, мы реализуем его поэтапно:
Используйте один нейрон, чтобы смоделировать край функции.
f1(x,y)=sigmoid(w11x+w12y+b1)
w110
w1220
b120
Тогда мы можем получить следующую функцию:
wi10
wj-10
bi-5
Наконец, можно синтезировать следующие функции.
w5110
w52-10
w5310
w54-10
b5-15
Окончательная структура нейронной сети показана на рисунке ниже:
Другие бинарные функции
Используя двоичную прямоугольную импульсную функцию, мы можем легко аппроксимировать любую другую двоичную функцию, как и принцип интегрирования.
Эксперимент
Завершите миссию Круг и наблюдайте за функцией, соответствующей каждому нейрону.
Моделирование n-элементной функции
Принцип тот же, представьте сами! 😥
Вопрос
У нас уже есть цифровые схемы и программные алгоритмы, зачем нам нейронные сети?
Программы, построенные на цифровых схемах, также могут моделировать произвольные функции, так зачем изобретать искусственные нейронные сети?