Аппроксимация z = y^2 + x^2 с помощью нейронной сети

Как быстро нейронная сеть должна аппроксимировать функцию z = y^2 + x^2? Мой, кажется, борется, когда я также делаю входные данные отрицательными, и все веса становятся очень маленькими (* 10 ^ -16! при использовании 2x40x1) или все становятся одинаковыми (например, -0,16 и 0,16 при использовании 2x20x1). Я использую 2000 входных примеров за эпоху.

Однако, похоже, все в порядке, если все входные данные положительные. Что это может означать?

Как вы думаете, какое количество входных пар на эпоху, архитектуру и количество эпох я должен использовать для решения этой проблемы?

Я использую обратное распространение, нейронную сеть без смещения с 1 скрытым слоем (и все мои входы находятся между -1 и +1 и желаемыми выходами [0, 1]).

Спасибо,


person Katya    schedule 22.09.2010    source источник
comment
Первым делом я бы добавил еще 1 или 2 скрытых слоя, но не более того. Какую функцию активации вы используете?   -  person David Titarenco    schedule 23.09.2010
comment
Привет, Дэвид, я использую tanh. Хм, я не программировал более 1 слоя, но сейчас сделаю и посмотрю. Я планирую использовать эту сеть для прогнозирования финансового рынка, поэтому немного обеспокоен тем, что, если она не может изучить 2D-функцию, как она будет отображать сложную функцию, подобную функции финансового рынка? Да будет программа в другом слое. Какую архитектуру вы бы посоветовали для этого? Он хорошо показал себя для XOR, изучив его за 280 эпох. Однако я не использую предвзятость (будет ли это серьезной проблемой?). Спасибо   -  person Katya    schedule 23.09.2010
comment
@Katya, ты решил это в конце концов? Если да, то какой был ответ?   -  person Chogg    schedule 08.11.2016


Ответы (2)


При положительных входах функция монотонна. Как только вы пересекаете начало координат, это уже не так.

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

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

person Ben Voigt    schedule 23.09.2010
comment
Привет, Бен, это код, который я разработал, поэтому в нем нет «ограниченной оптимизации или неотрицательных предположений» (которые, по крайней мере, были задуманы! LOL). Я буду кодировать смещение, так как до сих пор я его не включал, так как не знаю, как обновить смещение с помощью обратного распространения. Как бы я это сделал? Таким образом, я бы включил дополнительный вход 1 в каждый нейрон со случайным весом, прикрепленным к этому входу (т.е. смещением) - но я должен обновить этот вес, верно? Как и другие веса? Будет сложно закодировать это так, как я это делал до сих пор. Придется подумать. - person Katya; 23.09.2010
comment
@Katya: Я бы сначала попробовал просто иметь некоторые нейроны с нулевым смещением, некоторые с +1, некоторые с -1. - person Ben Voigt; 23.09.2010
comment
Пожалуйста, просто проверьте: этот код на самом деле предназначен для проверки предсказания финансового рынка (сначала я просто пытался проверить его на 2D-функции). Как вы думаете, мне понадобится предвзятость, чтобы делать предполагаемые предсказания? (Монотонность означает, что по мере увеличения x увеличивается y, поэтому я предполагаю, что такая сложная функция не является монотонной, верно?). В идеальном случае, как следует регулировать смещение во время обратного распространения, пожалуйста? - person Katya; 23.09.2010
comment
Я не думаю, что корректировка смещения действительно необходима. Проблема с требованием нулевого смещения заключается в том, что вы можете представить только линейное преобразование, а разрешая ненулевое смещение, вы разрешаете аффинное преобразование. Но величину смещения можно зафиксировать без потери общности, поскольку все остальные коэффициенты будут масштабироваться в соответствии с любым выбранным вами смещением. Так что вам просто нужно инициализировать некоторые узлы с отрицательным, некоторыми нулевым, некоторым положительным смещением. Но имейте в виду, что я делаю предложения, а не говорю из опыта. - person Ben Voigt; 23.09.2010

Это зависит от того, какова цель алгоритма? Если вы хотите только воссоздать график, нет проблем с его переобучением, и вы должны тренировать его до тех пор, пока дельта-ошибка не станет минимально возможной (около 0,0001).

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

для получения дополнительной информации: http://neuralnetworksanddeeplearning.com/chap2.html или https://en.wikipedia.org/wiki/Обратноераспространение

person Hananel    schedule 15.07.2015