порядок, в котором вы представляете наблюдения (входные векторы), составляющие ваш обучающий набор, сети, имеет значение только в одном отношении - рандомизированное расположение наблюдений в соответствии с переменной ответа настоятельно предпочтительнее, чем упорядоченное расположение.
Например, предположим, что у вас есть 150 наблюдений, включающих ваш обучающий набор, и для каждой переменной отклика является одна из трех меток класса (класс I, II или III), например,что наблюдения 1-50 находятся в классе I, 51-100 в классе II и 101-50 в классе III.То, что вы не хотите делать, это представить их в сети в таком порядке.Другими словами, вы не хотите, чтобы сеть видела все 50 наблюдений в классе I, затем все 50 в классе II, а затем все 50 в классе III.
Что произошло во время тренировки вашего классификатора?Ну, изначально вы представляли четыре наблюдения в вашей сети, неупорядоченные [0, 1, 1, 0].
Интересно, каково было расположение входных векторов в тех случаях, когда ваша сеть не сходилась?Если это было [1, 1, 0, 0] или [0, 1, 1, 1], это согласуется с этим хорошо документированным эмпирическим правилом, которое я упоминал выше.
С другой стороны, мне интересно, применимо ли это правило даже в вашем случае.Причина в том, что у вас так мало обучающих экземпляров, что даже если порядок равен [1, 1, 0, 0], обучение в течение нескольких эпох (что, я уверен, вы должны выполнять) будет означать, что этот порядок выглядит более «рандомизированным».а не пример, который я упоминал выше (то есть [1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0] - это то, как сеть будет представлена с данными обучения за три эпохи),Некоторые предложения по диагностике проблемы:
Как я упоминал выше, посмотрите на порядок ваших входных векторов в случаях не сходимости - сортируются ли они по переменной ответа?
В случаях не сходимости посмотрите на свои весовые матрицы (я полагаю, у вас их две).Ищите любые значения, которые очень велики (например, в 100 раз больше, или в 100 раз больше, чем было инициализировано).Большой вес может вызвать переполнение.