Что вам нужно, так это Pointer Networks (https://arxiv.org/abs/1506.03134)
Вот вступительная цитата из сообщения об этом:
Сети указателей - это новая нейронная архитектура, которая изучает указатели на позиции во входной последовательности. Это ново, потому что существующие методы должны иметь фиксированное количество целевых классов, что обычно не применимо - рассмотрим задачу коммивояжера, в которой количество классов равно количеству входных данных. Дополнительным примером может быть сортировка последовательности переменного размера. - https://finbarr.ca/pointer-networks/
Это модель, основанная на внимании.
По сути, сеть указателей используется для предсказания указателей обратно на вход, что означает, что ваш выходной слой на самом деле не фиксированный, а переменный.
Вариант использования, в котором я их использовал, - это перевод необработанного текста в запросы SQL.
- Исходный текст: "СКОЛЬКО МАШИН БЫЛО ПРОДАНО В США В 1983 ГОДУ".
- Вывод: SELECT COUNT (Car_id) FROM Car_table WHERE (Country = 'US' AND Year == '1983').
Проблема с необработанным текстом, подобным этому, заключается в том, что он будет иметь смысл только в отношении определенной таблицы (в данном случае таблица автомобилей с набором переменных, касающихся продаж автомобилей, аналогична вашим различным доскам для настольных игр). Это означает, что если вопрос не может быть единственным входом. Таким образом, ввод, который фактически попадает в указательную сеть, представляет собой комбинацию:
Вход -
- Запрос
- Метаданные таблицы (названия столбцов)
- Словарь токенов для всех категориальных столбцов
- Ключевые слова из синтаксиса SQL (SELECT, WHERE и т. Д.)
Все они складываются вместе.
Затем выходной слой просто указывает на конкретные индексы ввода. Он указывает на страну и год (из имен столбцов в метаданных), он указывает на США и 1983 год (из токенов в словаре категориальных столбцов), он указывает на SELECT, WHERE и т. Д. Из синтаксического компонента SQL входных данных.
Последовательность этих индексов в добавленном индексе затем используется в качестве выходных данных вашего графа вычислений и оптимизируется с использованием набора данных для обучения, который существует как набор данных WIKISQL.
Ваш случай очень похож: вам нужно передать входные данные, метаданные игры и все, что вам нужно, как часть вашего вывода в виде добавленного индекса. Затем сеть указателей просто делает выбор из входных данных (указывает на них).
person
Akshay Sehgal
schedule
31.07.2019