Кто-нибудь пробовал скомпилировать код в нейронную сеть и развить его?

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

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

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

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


person Uri    schedule 23.02.2011    source источник
comment
Java не является функциональным языком программирования.   -  person SLaks    schedule 24.02.2011
comment
@SLaks Может быть, если так использовать. Это не особенно удобный язык функционального программирования (и не особо удобный объектно-ориентированный язык, как утверждают некоторые), но он определенно не запрещает вам использовать функциональное программирование.   -  person Zooba    schedule 24.02.2011
comment
вы можете перепутать свои термины. Когда вы говорите «Функциональный», вы имеете в виду язык, который организован в методы (часто называемые функциями? Или вы имеете в виду язык, который организован в серию преобразований без побочных эффектов?   -  person Chris Pfohl    schedule 24.02.2011
comment
Я имел в виду только языки высокого уровня, такие как java. Я поменяю.   -  person Uri    schedule 24.02.2011


Ответы (5)


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

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

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

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

person Zooba    schedule 23.02.2011
comment
Я не согласен / не понял: у вас может быть много выходных нейронов и интерпретировать их, как вам нравится ... вы можете отсортировать массив, если у вас достаточно выходных единиц. Кроме того, конечно, я сначала проверил Википедию и Google, но не получил достаточно информации. - person Uri; 24.02.2011
comment
@Uri Конечно, с достаточным количеством нейронов вы можете делать все, это теория. Однако практические ограничения (оперативная память, время) не позволяют их реализовать. Если вас интересует развитие императивных языков, а не функциональных, вы можете изучить Grammatical Evolution. Если вы заинтересованы в развитии программ в сети, вы, вполне возможно, выходите за рамки существующего диапазона исследований, а это значит, что вам придется попробовать и посмотреть, что произойдет (и написать об этом, чтобы следующий заинтересованный человек мог узнать работает ли). - person Zooba; 24.02.2011

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

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

Google - ваш друг.

person BeeOnRope    schedule 23.02.2011
comment
Я знаю, что они разные, но есть ли разница между тем, что я предлагаю, и генетическим программированием? Если я могу моделировать основные операции программирования с помощью нейронной сети, почему не всю программу? - person Uri; 24.02.2011
comment
Насколько я понимаю, вы предлагаете генетические алгоритмы, расположенные поверх нейронной сети. То есть последнее развивает первое. В этом смысле это приложение генетического программирования, но наличие под ней нейронной сети нехарактерно. - person BeeOnRope; 24.02.2011

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

Вот пример статьи по теме: http://nexginrc.org/nexginrcAdmin/PublicationsFiles/raid09-sadia.pdf

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

person Alain    schedule 23.02.2011

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

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

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

person JohnIdol    schedule 24.02.2011

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

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

person Unmanned Player    schedule 09.03.2011