Кто-нибудь пытался скомпилировать код в нейронную сеть и развить его? - PullRequest
3 голосов
/ 24 февраля 2011

Знаете ли вы, пытался ли кто-нибудь скомпилировать языки программирования высокого уровня (java, c # и т. Д.) В рекуррентную нейронную сеть, а затем развить их?

Я имею в виду, что весь процесс, включая использование памяти, хранится в графе нейронной сети, и я говорю о сложных программах (думаю о проблемах обработки естественного языка).

Когда я говорю нейронную сеть, я имею в виду ориентированные взвешенные графы, которые распространяют активацию, а узлы являются функциями их входных данных (линейных, сигмоидальных и мультипликативных, чтобы упростить их).

Кроме того, это то, что люди имеют в виду в генетическом программировании или есть разница?

Ответы [ 5 ]

2 голосов
/ 24 февраля 2011

Нейронные сети не особенно хорошо подходят для развивающихся программ; их сила, как правило, в классификации. Если кто-то пытался, я не слышал об этом (что, учитывая то, что я едва касаюсь нейронных сетей, не является сюрпризом, но в данный момент я активен в области общего ИИ).

Основная причина, по которой нейронные сети бесполезны для генерации программ, заключается в том, что они в основном представляют собой математическое уравнение (числовое, а не функциональное). Учитывая некоторый числовой ввод, вы получите числовой вывод. Трудно интерпретировать их в контексте программы более сложной, чем простая арифметика.

Генетическое программирование традиционно использует Lisp , который является чисто функциональным языком, и часто программы часто отображаются в виде древовидных диаграмм (которые иногда выглядят аналогично некоторым диаграммам нейронной сети - это источник вашей путаницы? ). Программы развиваются путем обмена целыми ветвями дерева (функцией и всеми ее параметрами) между программами или случайной регенерации всей ветки.

Конечно, есть много хороших (и много плохих) ссылок по обеим этим темам - я воздерживаюсь от их перечисления, потому что неясно, чем вы на самом деле интересуетесь. Википедия описывает каждую из этих техник. и является хорошей отправной точкой.

0 голосов
/ 09 марта 2011

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

Я никогда не слышал о саморазвивающихся и самовоспроизводящихся программах. Они могут существовать, поскольку специальные исследовательские инструменты, такие как генетический-programming.org, не имеют ничего общего для общего использования. И даже если они существуют, они очень ограничены операциями специального назначения, такими как обнаружение вредоносных программ, как упомянул Ален.

0 голосов
/ 24 февраля 2011

Что касается вашего основного вопроса, никто никогда не пробовал это на языках программирования, насколько мне известно, но есть некоторое исследование в области эволюционных вычислений, которое можно сравнить с чем-то вродеэто (но это, очевидно, надуманное сравнение).В качестве возможного интереса я задал похожий вопрос о самосовершенствующихся компиляторах некоторое время назад.

Чтобы узнать разницу между генетическими алгоритмами и генетическим программированием, взгляните на этот вопрос .

Нейронные сети не имеют ничего общего с генетическими алгоритмами или генетическим программированием, но вы, очевидно, можете использовать любой из них для развития нейронных сетей (как и любая другая вещь в этом отношении).

0 голосов
/ 24 февраля 2011

Некоторые сложные антивирусные программы, а также сложные вредоносные программы используют формальные грамматические и генетические операторы для развития друг против друга с помощью нейронных сетей.

Вот пример бумаги на эту тему: http://nexginrc.org/nexginrcAdmin/PublicationsFiles/raid09-sadia.pdf

Источники: класс по искусственному интеллекту, который я взял пару лет назад.

0 голосов
/ 24 февраля 2011

Генетическое программирование сильно отличается от нейронных сетей. То, что вы предлагаете, больше похоже на генетическое программирование - внесение небольших случайных изменений в программу, возможно, «размножение» успешных программ. Это нелегко, и я сомневаюсь, что это может быть успешно выполнено в большой программе.

У вас может быть больше удачи в извлечении небольшой, но важной части вашей программы, в которой есть несколько особых «аспектов» (таких как значения параметров), которые вы можете попытаться развить.

Google - твой друг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...