Я пытался смоделировать функции NN в MATLAB, прежде чем тестировать свою собственную закодированную сеть. Я тренировал y = x1+x2.
Но посмотрите, как это работает,
>> net = newfit([1 2 3 4 5 0 1 2 5;1 2 3 4 5 1 1 1 1],[2 4 6 8 10 0 2 3 6],15);
>> net = train(net,[1 2 3 4 5 0 1 2 5;1 2 3 4 5 1 1 1 1],[2 4 6 8 10 0 2 3 6]);
>> sim(net,[1;4])
ans =
12.1028
>> sim(net,[4;4])
ans =
8.0000
>> sim(net,[4;1])
ans =
3.0397
>> sim(net,[2;2])
ans =
5.1659
>> sim(net,[3;3])
ans =
10.3024
Кто-нибудь может объяснить, что не так с этими данными обучения? Разве недостаточно оценить y = x1+x2? Или это просто сверхспециализированный? Я считаю, что это проблема регрессии. Теперь я не знаю, чего мне ожидать от моей собственной закодированной сети. Мне было интересно, по каким критериям сходится эта НС, где она дает такой глупый результат? есть ли способ узнать, на какую функцию он сопоставляется (я не знаю, как!)? Моя собственная сеть даже не сойдется, потому что она проверяет квадрат ошибки суммы как условие разрыва цикла. Итак, как бороться с такой схемой обучения?
Однако у меня есть еще одна потрясающая схема тренировок, которую я не могу тренировать.
Кто-нибудь может обучить следующий набор данных? Будет ли работать/сойдется?
0 0 -------> 0
0 1 -------> 1000
1000 0 ----> 1
1 1 -------> 0
Я использовал f(x)=x в выходном слое и использовал алгоритм обратного распространения, но для этого шаблона код никогда не сходится.