Я реализую политику выбора действий Softmax для задачи обучения с подкреплением (http://www.incompleteideas.net/book/ebook/node17.html).
Я пришел с этим решением, но я думаю, что есть возможности для улучшения.
1-Здесь я оцениваю вероятности
prob_t = [0]*3
denominator = 0
for a in range(nActions):
denominator += exp(Q[state][a] / temperature)
for a in range(nActions):
prob_t[a] = (exp(Q[state][a]/temperature))/denominator
2-Здесь я сравниваю случайно сгенерированное число в диапазоне] 0,1 [ со значением вероятности действий:
rand_action = random.random()
if rand_action < prob_t[0]:
action = 0
elif rand_action >= prob_t[0] and rand_action < prob_t[1]+prob_t[0]:
action = 1
else: #if rand_action >= prob_t[1]+prob_t[0]
action = 2
редактировать:
пример: rand_action — 0,78, prob_t[0] — 0,25, prob_t[1] — 0,35, prob_t[2] — 0,4. сумма вероятностей равна 1. 0,78 больше, чем сумма вероятностей для действий 0 и 1 (prob_t[0] + prob_t[1]), поэтому выбирается действие 2.
Есть ли более эффективный способ сделать это?
nActions
размеромQ[state]
? У вас естьnumpy
? - person Kiwi   schedule 07.05.2014