Обучение с подкреплением: точная настройка выбора узла MCTS и этап расширения с неточными значениями

Я реализую программу игры в го примерно в соответствии с архитектурой более ранних версий AlphaGo (AlphaGo Fan или AlphaGo Lee), например. с использованием сети политик, сети значений и поиска по дереву Монте-Карло (MCTS). В настоящее время я обучил достойную сеть политик и нечувствительную сеть ценности, и у меня нет политики быстрого развертывания. Под «бесчувственным» я подразумеваю, что сеть создания ценности не способна оценивать сложные ситуации, выдавая процент выигрышей только около 50%, если только ситуация не является краткой. Сеть создания стоимости может правильно оценить краткую доску (без большой борьбы).

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

  1. Выбор узла осуществляется arg max (p_value + lambda * p_policy/visit_cnt). Помогает ли тонкая настройка параметра lambda?
  2. Интуитивно я хочу, чтобы MCTS исследовал как можно больше. На этапе расширения узла помогает ли установка условия расширения expand a leaf once it is visited a very small number of times, like 3? Какой метод расширения следует использовать?

РЕДАКТИРОВАТЬ: Второй вопрос касается этапа «расширения» типичного алгоритма «выбор, расширение, оценка, резервное копирование» MCTS. Я считаю, что расширяясь как можно быстрее, MCTS может исследовать глубже и давать более точные приблизительные значения. Я установил параметр n как how many times a leaf node is visited before it is expanded. Я хочу интуитивно знать, как большое n и маленькое n повлияют на производительность MCTS.


person Zhao Chen    schedule 27.01.2018    source источник
comment
Можете ли вы более четко определить p_value (я предполагаю, что это средняя оценка всех итераций, прошедших через узел до текущей итерации?), и подробнее остановиться на том, что именно вы предлагаете во втором вопросе?   -  person Dennis Soemers    schedule 27.01.2018
comment
@DennisSoemers p_value действительно является средней оценкой конечного узла путей, которые проходили через этот узел до текущей итерации. Второй вопрос касается этапа «расширения» типичного алгоритма MCTS «выбор, расширение, оценка, резервное копирование». Я считаю, что расширяясь как можно быстрее, MCTS может исследовать глубже и давать более точные приблизительные значения. Я установил параметр n как how many times a leaf node is visited before it is expanded. Я хочу интуитивно знать, что большое n и маленькое n повлияют на производительность MCTS. Спасибо за внимание.   -  person Zhao Chen    schedule 27.01.2018


Ответы (1)


  1. Выбор узла осуществляется arg max (p_value + lambda * p_policy/visit_cnt). Помогает ли тонкая настройка параметра lambda?

Давайте сначала попробуем хорошо понять, что делают все термины в этой формуле:

  • p_value: среднее значение всех оценок в конце итераций, прошедших через этот узел. Это наша текущая оценка того, насколько хорош этот узел в соответствии с оценками сети создания стоимости в конце развертывания.
  • p_policy/visit_cnt: p_policy будет высоким для узлов, которые кажутся хорошими в соответствии с вашей сетью политик, и низким для узлов, которые кажутся плохими в соответствии с вашей сетью политик. visit_cnt будет высоким для узлов, которые мы уже часто посещали, и низким для узлов, которые мы еще не посещали часто. Этот полный термин заставляет нас изначально «склоняться к сети политик», но с течением времени отходить от сети политик (поскольку узлы, которые являются хорошими в соответствии с сетью политик, будут иметь большое количество посещений).
  • lambda: Параметр, определяющий баланс между первым и вторым слагаемыми двух указанных выше пунктов. Если lambda высокое, мы будем больше полагаться на информацию, которую дает нам сеть политик, и меньше на информацию, которую дает нам сеть ценности. Если lambda низкий, мы быстрее начнем полагаться на информацию, предоставленную нам более ранними итерациями MCTS + оценки сети значений, и меньше полагаться на сеть политик.

В тексте вашего вопроса вы заявили, что считаете сеть политик приличной, а сеть ценности не очень информативной. Итак, если это так, я бы попробовал использовать высокое значение для lambda: если вы считаете, что сеть политик более информативна, чем сеть создания стоимости, вы захотите больше полагаться на сеть политик, чем на сеть создания ценности, поэтому вам нужно высокое lambda.

  1. Интуитивно я хочу, чтобы MCTS исследовал как можно больше. На этапе расширения узла помогает ли установка условия расширения как расширение листа, когда он посещается очень небольшое количество раз, например 3? Какой метод расширения следует использовать?

Единственная причина, по которой фаза расширения часто довольно ограничена в классических реализациях MCTS (например, часто расширяется только один узел за итерацию), — это проблемы с памятью; если вы расширяетесь слишком часто, ваше дерево растет слишком быстро, и вам не хватает памяти.

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

person Dennis Soemers    schedule 27.01.2018
comment
Большое спасибо! Это действительно информативно и полезно. - person Zhao Chen; 27.01.2018
comment
@ZhaoChen Не забудьте поставить галочку напротив ответа, если он вам помог, иначе вопрос навсегда останется на сайте как неотвеченный :) - person Dennis Soemers; 27.01.2018