2009-09-09 5 views
2

Отказ от ответственности: Я не математический гений, и у меня нет опыта написания нейронных сетей. Итак, прошу простить любые идиотские вещи, которые я могу сказать здесь. ;)Может ли виртуальная машина быть реализована как нейронная сеть?

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

В частности, может ли виртуальная машина быть создана как нейронная сеть? Если да, то как это работает (не стесняйтесь использовать здесь абстрактное описание, если вам нужно)?

Я слышал о машине Joycean, но я не могу найти никакой информации, кроме очень, очень смутных объяснений.

EDIT: Что я ищу здесь, является объяснением того, как виртуальная VM на основе нейронной сети будет интерпретировать сборку. Как обрабатывать входные данные и т. Д.? Будет ли каждый отдельный вход быть адресом памяти? Давайте провести мозговой штурм!

+0

С ответом на изменение: Вы знакомы с компьютерной архитектурой? Виртуальная виртуальная сеть может быть (как и в случае одного подхода) эквивалентна эмуляции каждой части компьютерного оборудования с помощью виртуальной машины. Так, например, CPU может быть NN с входами, которые являются битами и выходами текущей команды, которые являются битами регистра управления. Это вопрос типа, который вы задаете? –

+2

Или вы можете просто спросить, завершены ли нейронные сети. – quillbreaker

+2

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

ответ

2

Вы действительно сделали мой день приятеля ...

Поскольку уже обученная нейронная сеть не будет сильно отличаться от обычного состояния машины, нет никакого смысла писать нейронную сеть VM для детерминированного набора команд.

Возможно, было бы интересно подготовить такую ​​виртуальную машину с несколькими наборами команд или неизвестным набором. Тем не менее, я сомневаюсь, что будет практично выполнять такое обучение, и даже правильный интерпретатор% 99 будет использоваться для обычного байт-кода.

Единственное использование виртуальной виртуальной сети, о которой я могу думать, это выполнение программы, содержащей конструкцию нечеткой логики или эвристику алгоритма AI.

Некоторые глупый пример стека машины, чтобы продемонстрировать идею:

push [x1] 
push [y1] ;start coord 
push [x2] 
push [y2] ;end coord 
pushmap [map] ;some struct 
stepastar ;push the next step of A* heuristics to accumulator and update the map 
pop ;do sth with is and pop 
stepastar ;next step again 
... ;stack top is a map 
reward ;we liked the coordinate. reinforce the heuristic 
stepastar 
... ;stack top is a map 
punish ;we didn't like the next coordinate. try something different 

Там нет explict эвристический здесь. Просто предположим, что мы сохраняем все состояние на карте, включая эвристический алгоритм.

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

1

Конечно. С довольно сложной сетью, без сомнения.

Большая часть синтаксического анализа байт-кодов/кодов операций - это сопоставление с образцом, в котором работают нейронные сети.

0

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

Input может быть что-то вроде:

  • Value на вершине стека
  • Значение в текущем аккумуляторе
  • байт-код на текущий указатель команды
  • значение
  • байт в указатель текущей информации
  • Предыдущая флаги

Выход c ульд быть что-то вроде:

  • Изменения к указателю команды
  • Изменения указателю данных
  • Изменения в аккумулятор
  • операцию Stack (толчок, поп, или ничего)
  • работы памяти (чтение в аккумулятор , написать аккумулятор или ничего)
  • Новые флаги

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^