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

В данном случае тут не квадрат ошибки и не модуль, а просто разность ответа сети и правильного ответа. Меня сбило с толку, что скорость обучения вначале хорошая, но вдруг резко снижается.
Еще раз напишу, как я делал обучение.
Есть пример с правильным ответом 

. Сеть дает ответ 

. После изменения одного из ее весов 

 на малый 

 (постоянный параметр на всем обучении) она на этом же примере дает ответ 

.
Абсолютная ошибка ответа 

 сети есть 

Абсолютная ошибка ответа 

 сети есть 

Ошибка изменилась на 

Нужно, чтобы подстройка веса приводила к 

Тогда нужно подстраивать вес так: 

На каждом примере сначала по очереди "дергаются" все веса, затем они все вместе корректируются (на данном примере).
Я заметил, что обучение лучше работает, если вместо 

 брать 

, т.е. 

А так обучение в общем работает нормально. Заданную функцию приближает хорошо (при удачном подборе параметров обучения). Пакетное обучение я попробую позже.
Такой вопрос возникает. У аппроксимируемой функции всего 5 параметров. А у этой сети 55 весовых коэффициентов. Явно избыточно. Но ведь и 5 весов будет явно недостаточно? Как примерно соотносится количество параметров аппроксимируемой функции и число весов сети?