Как ИНС может победить людей в GO, но не может предсказать f(x)=x²

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

Напишите нейронную сеть, которая предсказывает f(x)=x².

Любой из вас, кто прошел какой-либо курс по искусственному интеллекту или машинному обучению или даже написал какой-либо код ANN, знает, что предсказывать квадратную функцию легко. И это. На самом деле ИНС могут предсказывать любую полиномиальную функцию и любой степени. Но только при одном условии: конечный диапазон значений в наборе для тестирования.

Что это значит? Если вы обучили сеть на диапазоне [-100, +100], а затем протестировали ее на [-50, +50], вы получите довольно хорошие результаты. Однако, если вы протестировали его в диапазоне [-500, +500], сеть с треском провалится.

Хорошо, прежде чем мы углубимся в детали, давайте будем на одной волне. В 2014 году 4 ученых-исследователей опубликовали статью, в которой цитировалась статья 1993 года ученого по имени Бэррон, доказывающая те же результаты, но менее общие. Они доказали, что «двухслойная нейронная сеть может представлять любой полином ограниченной степени при определенных (на первый взгляд не ограничивающих) условиях».

Вот превью реферата их статьи:

«Сначала мы показываем, что для случайно инициализированной нейронной сети с достаточным количеством скрытых элементов общий алгоритм градиентного спуска изучает любой полином низкой степени, предполагая, что мы инициализируем веса случайным образом. Во-вторых, мы показываем, что если использовать комплекснозначные веса (целевая функция все еще может быть вещественной), то при подходящих условиях не существует «надежных локальных минимумов»: нейронная сеть всегда может выйти из локального минимума, выполнив случайное возмущение . Это свойство не выполняется для вещественных весов. В-третьих, мы обсуждаем, можно ли изучать разреженные полиномы с помощью небольших нейронных сетей, размер которых зависит от разреженности целевой функции».

Итак, учитывая все вышеперечисленное, все доказательства и разговоры ученых, почему она все еще иногда дает сбой?
Это потому, что нейронные сети могут аппроксимировать любую непрерывную функцию только в пределах компактного множества.
Итак, учитывая непрерывную функцию f(x) и конечный диапазон значений [a, b] , то наверняка существует нейронная сеть, которая может аппроксимировать функцию с ошибкой ε › 0. Например, если мы хотим аппроксимировать f(x)=x³+3 в диапазоне [-50, +50], то существует нейронная сеть, которая может сделать это довольно легко. Но попросите сеть предсказать значение функции в точке за пределами этого диапазона, и вы обнаружите, что точность вашего прогноза будет уменьшаться линейно по мере того, как вы выходите за пределы диапазона.

Вот что это означает на изображениях. Здесь вы увидите сеть, обученную в диапазоне [-7, +7] для предсказания квадратичной функции f(x)=x².

Как видите, сеть тестировалась на интервале [-30, +30] и показала достойные результаты. Что произойдет, если мы увеличим интервал тестирования? Вот:

Теперь вы можете видеть, что ошибка резко увеличилась, когда мы увеличили интервал тестирования. Так почему же? Почему ИНС могут творить чудеса, но не могут найти шаблон базовой квадратичной функции? Это из-за экстраполяции.

Интерполяция против экстраполяции

Интерполяция — это оценка значения в пределах двух известных значений в последовательности значений (т. е. [a,b], где a,b — конечные числа). Полиномиальная интерполяция — это метод оценки значений между известными точками данных. Когда графические данные содержат пробел, но данные доступны по обе стороны от пробела или в нескольких определенных точках внутри пробела, интерполяция позволяет нам оценить значения в пределах пробела.

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

Аппроксимация полиномиальной функции для бесконечного диапазона значений подпадает под экстраполяцию, однако ИНС подходят для интерполяции. Но почему?

Предположим, что у нас есть обучающий набор y с y∈ R. Может ли регрессионная модель нейронной сети экстраполировать и возвращать значения y_pred вне диапазона y в обучающей выборке? Это зависит от функции активации или нет?

Выходной нейрон модели — это просто ∑Θ[i]a[i], где Θ[i]является вес i-го нейрона на предыдущем скрытом слое, а a[i] — значение функции активации этого нейрона. Если использовать логистическую функцию, то a ∈ [-1, +1]. Таким образом, максимально возможное y_pred=∑Θ[i] при условии, что все a достигают своего максимального значения около 1. Но если мы используем линейную функцию активации, которая не имеет ограничений на выходные значения a (a ∈ R), модель вернет y_pred ∈ R, что может находиться за пределами обучающей выборки. Означает ли это, что вывод правильный? Нет. Прогноз будет менее точным в областях данных, которых не было в обучающих данных. Вот почему экстраполяция сложна для нейронных сетей.

И что теперь? Это оно? Нет, есть так много решений этой проблемы. Это не даст вам точности интерполяции нейронной сети, но все же даст хорошие результаты. Одним из решений является использование выпрямительного блока g(x)=max(0,x)в качестве функции активации. Это неограниченная, но нелинейная функция связи. Он также сохраняет хорошее свойство «универсальной аппроксимации» нейронной сети, но с неограниченными выходными данными.

Это была моя первая статья на Medium. Мне очень понравилось писать это, я многому научился из этого, и я очень надеюсь, что вам это тоже понравится. :)