В-обучение, как влияет количество тестовых эпизодов на конвергенцию?

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

objs.sort((a,b)=> fn1(a,b) || fn2(a,b) || fn3(a,b) )

Где fn1, fn2, ... являются функциями сортировки, которые возвращают [- 1,0,1]. Это приводит к «сортировке по fn1», «сортировке по fn2», которая в значительной степени равна ORDER BY в SQL.

Это решение основано на поведении оператора ||, который оценивает значение первое оцениваемое выражение, которое может быть преобразовано в true .

Простейшая форма имеет только одну встроенную функцию:

// ORDER BY last_nom
objs.sort((a,b)=> a.last_nom.localeCompare(b.last_nom) )

Имея два шага с last_nom , порядок сортировки first_nom будет выглядеть так:

// ORDER_BY last_nom, first_nom
objs.sort((a,b)=> a.last_nom.localeCompare(b.last_nom) || 
                  a.first_nom.localeCompare(b.first_nom)  )

Общая функция сравнения может быть примерно такой:

// ORDER BY 
let cmp = (a,b,n)=>a[n].localeCompare(b[n])

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

Вы можете использовать его с привязкой к ним по приоритету сортировки:

// ORDER_BY last_nom, first_nom
objs.sort((a,b)=> cmp(a,b, "last_nom") || cmp(a,b, "first_nom") )
// ORDER_BY last_nom, first_nom DESC
objs.sort((a,b)=> cmp(a,b, "last_nom") || -cmp(a,b, "first_nom") )
// ORDER_BY last_nom DESC, first_nom DESC
objs.sort((a,b)=> -cmp(a,b, "last_nom") || -cmp(a,b, "first_nom") )

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

1
задан Meysam Ghorbani 16 January 2019 в 06:03
поделиться

1 ответ

В этом примере TEST_EPISODES используется для изменения критериев решения. С TEST_EPISODES = 1 игра считается решенной, как только последняя игра набирает> 0,80, а с TEST_EPISODES = 20 средний счет за последние 20 раундов должен быть> 0,80, чтобы считать игру решенной.

Поскольку в этой игре есть стохастические действия, т. Е. Вы не получаете один и тот же результат за то, что каждый раз выполняете одно и то же действие в одном и том же состоянии, чем выше вы поднимаетесь TEST_EPISODES, тем более надежным будет решение , С помощью TEST_EPISODES = 1 этот сценарий будет считать игру решенной, если он просто случайно найдет цель с первой попытки, но вероятность сделать это 20 раз подряд с плохой моделью гораздо меньше.

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

0
ответ дан Nick Larsen 16 January 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: