<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 強化學習的樸素神經網絡策略 我們按照以下策略進行: 1. 讓我們實現一個樸素的基于神經網絡的策略。為定義一個新策略使用基于神經網絡的預測來返回動作: ```py def policy_naive_nn(nn,obs): return np.argmax(nn.predict(np.array([obs]))) ``` 1. 將`nn`定義為一個簡單的單層 MLP 網絡,它將具有四個維度的觀測值作為輸入,并產生兩個動作的概率: ```py from keras.models import Sequential from keras.layers import Dense model = Sequential() model.add(Dense(8,input_dim=4, activation='relu')) model.add(Dense(2, activation='softmax')) model.compile(loss='categorical_crossentropy',optimizer='adam') model.summary() ``` 這就是模型的樣子: ```py Layer (type) Output Shape Param # ================================================================= dense_16 (Dense) (None, 8) 40 _________________________________________________________________ dense_17 (Dense) (None, 2) 18 ================================================================= Total params: 58 Trainable params: 58 Non-trainable params: 0 ``` 1. 這個模型需要訓練。運行 100 集的模擬并僅收集分數大于 100 的那些劇集的訓練數據。如果分數小于 100,那么這些狀態和動作不值得記錄,因為它們不是好戲的例子: ```py # create training data env = gym.make('CartPole-v0') n_obs = 4 n_actions = 2 theta = np.random.rand(4) * 2 - 1 n_episodes = 100 r_max = 0 t_max = 0 x_train, y_train = experiment(env, policy_random, n_episodes, theta,r_max,t_max, return_hist_reward=100 ) y_train = np.eye(n_actions)[y_train] print(x_train.shape,y_train.shape) ``` 我們能夠收集 5732 個樣本進行訓練: ```py (5732, 4) (5732, 2) ``` 1. 接下來,訓練模型: ```py model.fit(x_train, y_train, epochs=50, batch_size=10) ``` 1. 訓練的模型可用于玩游戲。但是,在我們合并更新訓練數據的循環之前,模型不會從游戲的進一步游戲中學習: ```py n_episodes = 200 r_max = 0 t_max = 0 _ = experiment(env, policy_naive_nn, n_episodes, theta=model, r_max=r_max, t_max=t_max, return_hist_reward=0 ) _ = experiment(env, policy_random, n_episodes, theta,r_max,t_max, return_hist_reward=0 ) ``` 我們可以看到,這種樸素的策略幾乎以同樣的方式執行,雖然比隨機策略好一點: ```py Policy:policy_naive_nn, Min reward:37.0, Max reward:200.0, Average reward:71.05 Policy:policy_random, Min reward:36.0, Max reward:200.0, Average reward:68.755 ``` 我們可以通過網絡調整和超參數調整,或通過學習更多游戲玩法來進一步改進結果。 但是,有更好的算法,例如 Q-Learning。 在本章的其余部分,我們將重點關注 Q-Learning 算法,因為大多數現實生活中的問題涉及無模型學習。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看