在生活中,都有行為準則,好的行為會得到獎勵,不好的行為會得到懲罰。比如小時候做作業,有兩種選擇:寫作業或者看電視。如果選擇寫作業,則家長回來後寫完了作業會受到表揚;如果選擇看電視導致作業沒有寫完,那麼父母回家後發現沒有寫完作業則會受到批評。
具體可看
qlearning也是乙個決策過程。
**如下:
import numpy as np
import pandas as pd
import time
np.random.seed(2)
#隨機數列
print
(np.random.uniform())
n_states=
6#一回合有多少此選擇
actions=
['left'
,'right'
]#每次選擇
epsilon=
0.9#選擇最優的概率
alpha=
0.1#學習效率
lambda=
0.9#獎勵衰減
max_episodes=
10#回合次數
fresh_time=
0.1#步長
defbuild_q_table
(n_states,actions)
: table=pd.dataframe(np.zeros(
(n_states,
len(actions)))
,columns=actions,
)print
(table)
return table
defchoose_action
(state,q_table)
: state_actions=q_table.iloc[state,:]
#q_table按行取
if(np.random.uniform(
)>epsilon)
or(state_actions.
all()==
0): action_name=np.random.choice(actions)
#隨機選擇actions中的動作,左或者右
else
: action_name=state_actions.idxmax(
)return action_name
defget_env_feedback
(s,a)
:if a==
"right"
:if s==n_states-2:
s_="terminal"
r=1else
: s_=s+
1 r=
0else
: r=
0if s==0:
s_=s
else
: s_=s-
1return s_,r
defupdata_env
(s,episode,step_counter)
: env_list=
['-']*
(n_states-1)
+['t']
if s==
'terminal'
: interaction=
'episode %s:total_step=%s'
%(episode+
1,step_counter)
print
('\r{}'
.format
(interaction)
,end='')
time.sleep(2)
print
('\r '
,end='')
else
: env_list[s]
='0'
interaction=
''.join(env_list)
print
('\r{}'
.format
(interaction)
,end='')
time.sleep(fresh_time)
defrl()
: q_table=build_q_table(n_states,actions)
for episode in
range
(max_episodes)
: step_counter=
0 s=
0 is_terminated=
false
updata_env(s,episode,step_counter)
while
not is_terminated:
a=choose_action(s,q_table)
s_,r=get_env_feedback(s,a)
q_predict=q_table.loc[s,a]
if s_!=
'terminal'
: q_target=r+lambda*q_table.iloc[s_,:]
.max()
else
: q_target=r
is_terminated=
true
q_table.loc[s,a]
+=alpha*
(q_target-q_predict)
s=s_
updata_env(s,episode,step_counter+1)
step_counter+=
1return q_table
if __name__ ==
'__main__'
: q_table=rl(
)print
('\r\nq-table:\n'
)print
(q_table)
強化學習之Q learning
三要素 狀態 state 動作 action 獎賞 reward 更具具體情況自行進行給定。q更新公式 q是什麼?動作效用函式 action utility function 用於評價在某一狀態下採取某個動作的優劣。如果q訓練好了,之後 時就可以按照q進行選擇動作。詳解q更新函式 是學習速率 是折扣...
強化學習演算法 Q learning
q learning 演算法的步驟 1 給定引數lamda和獎勵矩陣r 2 令q為0 3 for each episode 3.1 隨機選擇初始的狀態s 3.2 未達到目標狀態,則執行以下幾步 1 在當前狀態s的所有可能行為中選取乙個行為a 2 按照q s,a r s,a lamda max,其中s...
強化學習 Q learning演算法
我們以乙個迷宮尋寶的遊戲為例來看什麼是 q learning。在這個遊戲中,agent 從乙個給定的位置開始,即起始狀態。在不穿越迷宮牆壁的前提下,在每個狀態時,都可以選擇上下左右四個方向走一步,或者原地不動,上下左右這四個動作的每乙個都會將 agent 帶到網格的乙個新的單元格,即新的狀態,在迷宮...