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