>Обеспечивает ли надежность бэкпроп в классчиеской версии без дополнительных примочек?
Само дифференцирование (получение градиента) - надёжнее железобетонного бомбоубежища.
Ряд примочек (биполярные сигмоиды, центрирование сигналов) просто максимально снижают риск получения "подпространства меньшей размерности" (когда отдельные компоненты градиента становятся околонулевыми из-за околонулевых производных у влетевших в насыщение нейронов, например).
А обучение (коррекция вдоль градиента) - надёжность при оптимальном шаге в теории тоже обеспечивает.
>вы имеете введу только реализацию классического алгоритма или плюсуете сюда ряд "примочек"?
При работе с компьютером - требуется примочки знать. По вине компьютера. Ибо, например, комп считает, что при сложении 0.1 и 0.2 результат должен быть 0.300000004470348
Вычислительная математика от "абстрактной" математики всё же отличается - ибо в первой есть и обусловленные компьютером погрешности вычислений, и возможность накопления этих погрешностей.
>кстати, есть доказательство сходимости бэкпропа ? именно в терминах сетей, а не как абстрактного градиентного поиска ?
А как Вы себе представляете это "именно в терминах сетей"?
>алгоритм, который описан так из рук вон плохо, что допускает СУЩЕСТВЕННЫЕ ошибки в реализации - это проблема авторов алгоритма, т.к. люди не могут повторить результаты.
Так это ведь не один алгоритм. Цепное правило дифференцирования сложной функции - отдельно, метод оптимизации (градиентной в пакетном режиме обучения и стохастической в попримерном режиме обучения) - отдельно.
>Причем схождение мне естественно важно такое (и я был удивлен, когда этим не озаботились ряд практиков использования бэкпропа): перцептрон должен БЕЗОШИБОЧНО выучить реакции на ВСЕМ обучающем множестве БЕЗ ИСКЛЮЧЕНИЙ.
Практикам не нужна безошибочность. Практикам нужна статистически одинаковая ошибка на репрезентативных обучающей и тестовой выборках.
>Бэкпроп обеспечивает якобы не только двоичные выходы. Именно поэтому в моих тестах ситуация усложнена. Для бэкпропа я делаю один выход скажем на 5 значений - от 0 до 0.2 - один образ, от 0.2 до 0.4 второй и т.д. И вот именно такого схождения я не получаю, или получаю существенно медленно
Это - ошибка, и именно Ваша ошибка. Вы номинальные признаки (коды классов), причём неупорядоченные номинальные (т.к. порядок нумерации классов скорее всего можно изменить без влияния на смысл задачи), сводите в один количественный признак, и при этом появляются НЕЕСТЕСТВЕННЫЕ расстояния между новыми кодами (интервалами значений) классов. Первый класс получается БЛИЖЕ ко второму, чем к третьему и последующим. Второй - ближе к первому и третьему, чем к четвертому и пятому. И т.д. А в обучающей выборке близость между классами может быть совершенно другой.
Более того - исходные классы могли, например, быть попарно (вернее, один любой от всех остальных) отделимы друг от друга. При описанном Вами кодировании выходов - линейно отделить "некрайние" классы от других нельзя. Вспомните про задачу XOR и её нерешаемость одним единственным нейроном.