Можно ли реализовать виртуальную машину как нейронную сеть?

StackOverflow https://stackoverflow.com/questions/1400590

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

РЕДАКТИРОВАТЬ: Здесь я ищу объяснение того, как именно виртуальная машина на основе нейронной сети будет интерпретировать ассемблер.Как будут обрабатываться входные данные и т. д.?Будет ли каждый отдельный вход адресом памяти?Давайте поразмышляем!

Это было полезно?

Решение

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

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

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

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

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

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

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

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

Другие советы

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

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

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

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

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

Вывод может быть примерно таким:

  • Перейти к указателю инструкции
  • Перейти к указателю данных
  • Перейти на аккумулятор
  • Операция стека (push, pop или ничего)
  • Операции с памятью (чтение в аккумулятор, запись в аккумулятор или ничего)
  • Новые флаги

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top