Может ли простая нейронная сеть выучить функцию sin, применяемую к суммированию четырех чисел? - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть простой многослойный персептрон с одним скрытым слоем и активациями tanh в скрытом и выходном слоях. В рамках задания я создал набор данных с 1000 примерами. Каждый вход (x_i) представляет собой массив из четырех случайных чисел в диапазоне от -1,0 до +1,0. Каждая этикетка (y_i) производится как sin(x_i[0] - x_i[1] + x_i[2] - x_i[3]). Мой MLP принимает в качестве входных данных каждый из 4 элементов x_i и выдает один выход. Возможно ли, чтобы этот единственный скрытый многоуровневый MLP научился производить суммирование четырех входов, а затем применять функцию sin?

Я обучил MLP, используя первые 80% набора данных, и проверял его на последних 20% каждые 1000 эпох, до 50 000. Используя функцию потерь MSE, потери от поезда и теста всегда относительно схожи, но не уменьшаются в огромной степени в течение 50 000 тренировочных эпох, и они прыгали вверх и вниз совсем немного. Значения потерь в конечную эпоху для обучения и тестирования составляли 0,01505 и 0,01504 соответственно.

После этих 50 000 тренировочных эпох я создал набор данных того же формата с новыми случайными числами от -1,0 до +1,0. Затем я отсортировал эти данные по значениям y и сделал прогноз для каждого обученного MLP. Это привело к следующему сюжету:

enter image description here

Ясно, что MLP изучает общую тенденцию, но точные значения чрезвычайно изменчивы. Есть ли какое-то объяснение тому, почему он не может лучше изучить эту функцию? Похоже, не было большого улучшения от 10000 эпох до 50000. Это из-за наличия только одного скрытого слоя?

1 Ответ

0 голосов
/ 29 апреля 2018

Если ваши потери в тренировках достигают максимума во время обучения, несмотря на обилие образцов данных, вы можете быть (почти) уверены, что вашей модели не хватает необходимой вместимости для решения проблемы. Пропускная способность может быть улучшена путем увеличения ширины скрытого (ых) слоя (ов), увеличения глубины сети или альтернативного переключения с плотного слоя на рекуррентный или сверточный слой с тем же количеством параметров. Чтобы убедиться, что недостаток емкости действительно является вашей проблемой, создайте больше данных и посмотрите, изменится ли максимальная производительность вообще. Если это не так, попробуйте любой из вышеперечисленных методов и проверьте, может ли ваша модель лучше следовать шаблону.


Редактировать : Опубликовать некоторые примеры результатов, которые я получил с несколькими различными архитектурами. Все результаты по данным испытаний после обучения на 1000 образцов за 1500 эпох.

Один скрытый слой формы 100: Single hidden

Один простой рекуррентный слой формы 20: Single recurrent layer

Два плотных скрытых слоя фигур (50,20): Two hidden layers

Четыре скрытых слоя фигур (32,32,16,16): enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...