Чтобы быть ясным, я не имею в виду, если последние две цифры в последовательности обеспечивают следующий:
(2, 3, -> 5)
Но, учитывая, что любой индекс содержит число Фибоначчи:
(0 -> 1) or (7 -> 21) or (11 -> 144)
Добавление двух чисел - очень простая задача для любой структуры машинного обучения, а подсчет числа на один, два или любое фиксированное число - это простое правило добавления. Однако рекурсивные вычисления...
Насколько я понимаю, большинство обучающих сетей полагаются только на оценку вперед, тогда как большинство языков программирования имеют петли, прыжки или круговые шаблоны потока (все они обычно являются скачками ASM), что позволяет рекурсии.
Уверен, что некоторые сети не только форварды; Но может ли обработка весов с помощью гиперболической касательной или сигмовидной функции ввести любое вычислительно полное состояние?
то есть. условные операторы, условные переходы, принудительные переходы, простые циклы, сложные циклы с несколькими условиями, порядок сортировки, фактическое переупорядочение элементов, присвоения, выделение дополнительных регистров и т.д.
Казалось бы, даже сеть с непереходными правами будет находить только полином наилучшего соответствия, уменьшая ошибки на просторах учебного набора и не далее.
Я пропустил что-то очевидное, или большая часть машинного обучения просто смотрела на рекурсию и притворялась, что эти проблемы не существуют?
Обновление
Технически любой язык программирования можно рассматривать как ДНК генетического алгоритма, где компилятор (и, возможно, консольное измерение) будет функцией фитнеса. Проблема в том, что программирование (пока) не может быть выражено в восхождении на холме - буквально, фитнес равен 0, пока фитнес не будет 1. Вещи не работают в программировании наполовину, и если они это сделают, то нет способа измерение того, как "рабочая" программа предназначена для неизвестных ситуаций. Даже одна ошибка может показаться совершенно другой и хаотичной системой без выхода. Именно по этой причине научиться кодировать в первую очередь так сложно, кривая обучения почти вертикальна.
Некоторые могут утверждать, что вам просто нужно предоставить более строгие правила основания для использования системы, но это просто приводит к попытке обобщить все проблемы программирования, которые обращаются назад к разработке языка программирования и теряет все понятие какой-либо учебной машины вообще. Следуя этой дороге, вы подходите к близкому варианту LISP с мутантным кодом и практически бессмысленными функциями фитнеса, которые грубо заставляют "приятное" и "простое" выглядящее кодовое пространство в попытке следовать лучшим методам кодирования человека.
Другие могут утверждать, что мы просто не используем достаточную популяцию или импульс, чтобы получить поддержку на поверхности ошибки, или сделать значимый шаг к решению. Но по мере того, как ваше население приближается к числу перестановок ДНК, вы на самом деле просто грубый форсинг (и очень неэффективно). Перетаскивание перекоса перебора Brute не является чем-то новым, и, безусловно, не машинным обучением - на самом деле это довольно часто встречается в regex golf, я думаю, что там даже xkcd об этом...
Реальная проблема заключается не в поиске решения, которое работает для некоторой конкретной рекурсивной функции, а в поиске пространства решений, которое может каким-то образом использовать рекурсивный домен.
Таким образом, кроме Нейронных сетей, прошедших обучение с использованием Backpropagation, гипотетически находя замкнутую форму рекурсивной функции (если закрытая форма даже существует, и они не в большинстве реальных случаев, когда рекурсия полезна), или только для непереходной сети действуя как псевдо-программирующий язык с ужасными перспективами в области фитнеса в лучшем случае, плюс практически невозможная задача настройки ограничений выхода для предотвращения бесконечной рекурсии... На самом деле это пока что для машинного обучения и рекурсии?