Как сделать интерпретацию среды во входной сигнал ИНС и интерпретацию ее выходного сигнала в методы некого действия в этой среде?
Добрый день!
Недавно попытался сделать нейронную сеть, которая управляла бы неким агентом, в некой среде. Для получения информации из среды доступны методы radar(objectCategory); - находит объект категории в среде, distance(object); - возвращает расстояние до объекта, direction(object); - возвращает направление к объекту.
Меня интересует вопрос подачи возвращаемых значений этих методов на вход нейронной сети. Каким образом можно построить интерпретатор?
И более сложный вопрос, возможно ли вообще интерпретировать выходной сигнал так, что бы был выполнен метод по типу move(object.position); turn(object.direction()); и подобные им? То есть нужно набор значений от 0 до 1 интерпретировать в имя функции и ее параметры, при чем что есть некоторый ограниченный набор этих имен и параметров. Если это возможно, то так же хотелось бы услышать то, как это можно реализовать.
P.S.
Да, я знаю то, что нейронные сети плохо предназначены для подобных вещей, однако это никак не отменяет моего любопытства и желания сделать некое подобие AI на нейронных сетях.
НС не оперирует командами, НС оперирует входящими сигналами от органов чувств и сигналами к исполнительным органам. Вы можете осуществлять предобработку и постобработку входящих и исходящих сигналов для улучшения работы НС.
В общем случае НС не может испольнять "хочу идти туда", "повернусь до тех пор пока" и т.п.
НС может подавать элементарные команды (конечное кол-во) типа "идти 1 шаг вперед", "повернуть на 5 градусов налево", т.е. используя обратную связь от окружающей среды НС + фидбек от "целеполагающей функции" НС может определять необходимые действия для достижения цели.
Возможно, я неправильно описал, что я хочу узнать. Меня интересует именно то, как можно сделать именно эту пред- и пост обработку, о которой вы говорите.
Почитайте про цифровая обработка сигналов, фильтр Калмана, фильтрация сигналов и т.п.
Вы мыслите с позиции алгоритма работы НС, а нужно мыслить с позиции:
вот засуну я что-то в этот четрый ящик, и этот черный ящик что-то мне выдаст.
Как это интерпретировать решать вам. Если это НС с учителем, то у вас будут опорные результаты которые вы будете сравнивать с выходом, и на основе которых НС будет подстраивать своё поведение.
Если это без учителя, то опять же все в ваших руках и фантазии.
В том то и проблема, что я использую обучение с подкреплением, т.е. "правильных" ответов для ИНС у меня нет.
Тогда вопрос такой: если я буду использовать в выходных сигналах не один нейрон, а массив нейронов, т.е. значение нейрона #1 отвечает за имя функции, #2 за ее параметр, то насколько "черный ящик" сможет приспособится к тому, что одни и те же нейроны, в зависимости от вызываемой функции будут отвечать за параметры абсолютно разных типов, не будут ли они конфликтовать из за этого.
Для вас важно не кол-во нейронов в слое, а кол-во скрытых слоев между входом и выходом. Это добавляет больше нелинейности.
В общем случае приспособится сможет к чему угодно, вопрос устроит ли вас эта приспобляемость. Т.е. придется попотеть с подбором конфигурации НС.
Для каждой команды лучше завести отдельный выход, и делать интерпретацию команды "по самому высокому уровню сигнала". Лучше иметь конечное кол-во команд без каких-то параметров.