Ваш комментарий заставил меня задуматься, и еще раз взглянуть на картинку с распределением действий. На ней видно, что на самом деле приоритетных направлений три, а не два. Да, оранжевая область со временем поглощает синюю, но не так сильно, как уменьшается зеленая. То есть возможно, тот подход с 3-мя действиями, который вы описали, алгоритм и уловил. И про стремление к составлению цепочек — хорошая мысль, думаю, что она действительно поможет существенно улучшить результаты. Спасибо за полезный комментарий!
Это очень интересный вопрос, спасибо! На самом деле я с этого и начинал. К своему стыду я только через месяц экспериментов догадался погуглить, как же все-таки правильно играть в эту игру. И именно после этого пришла мысль про штрафы, чтобы натолкнуть агента на нужную стратегию. До этого это был слепой поиск удачной архитектуры сети и гиперпараметров — почему-то мне казалось, что правильно все подобрав, можно добиться положительных результатов.
Наверное, если бы не было известной стратегии, ее пришлось бы искать подбором, по одному выискивая те действия или их комбинации, которые в среднем улучшают показатели в игре и говорят о ее продолжительности, например, не максимально достигнутую клетку, а количество сделанных ходов, или сумму схлопываний за все время игры.
Спасибо за конструктивный комментарий.
По поводу учета морфологии — отличная идея! Вполне возможно обучить еще одну сеть только на наборах морфем, а затем соединять результаты сети, работающей со словами, с результатами работающей с морфемами, и получать более красивые результаты. Единственное, что сходу приходит в голову — вероятность переобучиться становится выше. Но это решаемо.
Случайный выбор первого слова фразы сделан для простоты. Обычно заголовки очень короткие — 3-7 слов, и если задавать контекст несколькими словами, то заголовки либо будут выходить длинными, либо не останется пространства для фантазии для сети. Более длинная входная строка скорее применима для генерации самой новости по заголовку.
И да, обучение еще одной сети «справа-налево» тоже могло бы дать более интересные результаты.
В общем, простор для дальнейших исследований большой. Одному (тем более с моими ограниченными знаниями в области комп.лингвистики) это не осилить, так что надеюсь, что найдутся желающие и поделятся результатами. :)
Здесь наверно сначала стоит решить, что мы хотим улучшить?
Это может быть более точная формулировка смысла, или просто лучшая согласованность слов в предложении, или еще что-то… И в любом случае, размер сети вряд ли здесь будет определяющим фактором. Я написал, что пробовал, например, приводить слова в нормальную форму. Но это ничего не дало.
Скорее, понадобится больше пре- и пост-обработки.
Например, в для смысла необходимо будет использовать семантически размеченные корпусы (они есть, но это работа в процессе). Для согласования слов можно попробовать поиграться с pymorphy2, но тут опять же нужна семантика, разбор предложения на части, выделение иерархии, чтобы согласование проводить по подчинительным связям.
В общем, мне кажется, что в плане повышения качества генерации я уперся в потолок, а дальше моих знаний NLP пока не достаточно, чтобы проделать то, что я описал выше.
В ноутбуках на гитхабе я пробовал разные конфигурации (кол-во слоев, их размер), но все они давали примерно одинаковые результаты. Если есть желание, можете попробовать более глубокую сеть сделать — там нужно лишь изменить гиперпараметры и немного поправить код. Я пробовал и 3 скрытых слоя с 256 ячейками в каждом, но в этом случае сеть начала просто запоминать заголовки, даже с дропаутом.
Эта задача (которую я упоминаю в начале статьи) — text summarization — действительно имеет гораздо большую практическую ценность. В этой области уже довольно много наработок, есть готовые алгоритмы и даже онлайн инструменты (вбейте automatic text summarization в гугле). И я согласен, что это логичный следующий шаг. Осталось найти на это время :)
Надеюсь, что в сообществе найдутся люди, которые этим займутся. Датасет есть, теперь дело в технике.
Наверное, если бы не было известной стратегии, ее пришлось бы искать подбором, по одному выискивая те действия или их комбинации, которые в среднем улучшают показатели в игре и говорят о ее продолжительности, например, не максимально достигнутую клетку, а количество сделанных ходов, или сумму схлопываний за все время игры.
По поводу учета морфологии — отличная идея! Вполне возможно обучить еще одну сеть только на наборах морфем, а затем соединять результаты сети, работающей со словами, с результатами работающей с морфемами, и получать более красивые результаты. Единственное, что сходу приходит в голову — вероятность переобучиться становится выше. Но это решаемо.
Случайный выбор первого слова фразы сделан для простоты. Обычно заголовки очень короткие — 3-7 слов, и если задавать контекст несколькими словами, то заголовки либо будут выходить длинными, либо не останется пространства для фантазии для сети. Более длинная входная строка скорее применима для генерации самой новости по заголовку.
И да, обучение еще одной сети «справа-налево» тоже могло бы дать более интересные результаты.
В общем, простор для дальнейших исследований большой. Одному (тем более с моими ограниченными знаниями в области комп.лингвистики) это не осилить, так что надеюсь, что найдутся желающие и поделятся результатами. :)
Это может быть более точная формулировка смысла, или просто лучшая согласованность слов в предложении, или еще что-то… И в любом случае, размер сети вряд ли здесь будет определяющим фактором. Я написал, что пробовал, например, приводить слова в нормальную форму. Но это ничего не дало.
Скорее, понадобится больше пре- и пост-обработки.
Например, в для смысла необходимо будет использовать семантически размеченные корпусы (они есть, но это работа в процессе). Для согласования слов можно попробовать поиграться с pymorphy2, но тут опять же нужна семантика, разбор предложения на части, выделение иерархии, чтобы согласование проводить по подчинительным связям.
В общем, мне кажется, что в плане повышения качества генерации я уперся в потолок, а дальше моих знаний NLP пока не достаточно, чтобы проделать то, что я описал выше.
Надеюсь, что в сообществе найдутся люди, которые этим займутся. Датасет есть, теперь дело в технике.