人工智能實戰_第七次作業(個人)_王濤


作業要求

標題 內容
這個作業屬於哪個課程 班級博客的鏈接
這個作業的要求在哪里 作業要求的鏈接
我在這個課程的目標是 完成一個完整的項目,學以致用
這個作業在哪個具體方面幫助我實現目標 應用LSTM和RL解決博弈論問題

一、黃金點游戲

規則:N個玩家,每人寫一個或兩個0~100之間的有理數 (不包括0或100),提交給服務器,服務器在當前回合結束時算出所有數字的平均值,然后乘以0.618(所謂黃金分割常數),得到G值。提交的數字最靠近G(取絕對值)的玩家得到N分,離G最遠的玩家得到-2分,其他玩家得0分。只有一個玩家參與時不得分。

二、理解

其實鄒欣老師的的理解以及很深刻了,這也是我玩黃金點的動力之一,想想簡單游戲和新技術發展規律融合在一起,想想就刺激。

三、使用的方法

  1. 簡單規律:當看到黃金點下降時候就下降之前下降量的二分之一,當看到黃金點上升時候上升之前上升量的二分之一。保持不變時候,取前兩次平均。
    失敗!
  2. 時序序列不用LSTM? 使用三層LSTM網絡,取steps=10,n_input=1,取當天黃金點個數70%做訓練集(182,10)vs(182,1),30%做驗證集,metrics:mse,收斂到mse為5.5 左右為一個較長的 plateus ,之后訓練誤差不斷減少,val誤差不斷增加,網絡開始嚴重過擬合。
    難道是一個LSTM cell 需要不只一個input嗎?所以steps=5,n_input=2,同理,仍然mse收斂到5.5,失敗!
    實際上,我思考到,RNN可以擬合一個有規律的時序序列,但是黃金點規律是難以察覺的,mse難以優化,我們不應該嘗試mse metrics,贏者通吃,你希望以LSTM去最好擬合這個序列是不可能,是的,你擬合的序列mse小了又如何,你還是贏不了,考慮更改metrics,只取tf.abs((y_pred-y_true)>1)內不計誤差,網絡無法收斂,因為開始mse=0,或者只計算tf.abs((y_pred-y_true)>1)的mse,仍然不行。
    inimize: sub = y_pred-y, 曾經考慮類似於下面loss計算,
    loss = -(tf.reduce_sum(tf.cast(sub<0.1, tf.float32))5+tf.reduce_sum(tf.cast(sub<0.3, tf.float32))3)
    告訴我梯度無法傳遞。
  3. 行,贏者通吃,好好復習RL, 用強化學習解決這個問題,不過其實第一時間想到的就是LSTM了,可惜不行。。。
  4. 當然也考慮過學習bot規則,可是我覺得在本地學習bot004, 預測前一個黃金點,botxxx,一直預測18.....。感覺本地先訓練是無恥的,可以考慮建立多個RNN模型根據每個bot預測他可能下一個回合預測的結果,去預測。建立更多的模型,算了,還是先試試RL吧。如果一個模型連基本bot004都打不敗,那么就沒有存在的必要性了。最近兩天把RL寫出來,看看結果,再試試‘無恥的方法’,最近多災多難,拖太久了。

四、2019_5_14補充

之前由於考慮到LSTM沒能有一個很好的MSE結果,故沒有測驗,昨天和今天嘗試了改進metrics的LSTM,主要是將轉化為(error一定范圍用MSE,error較大用線性L_1范數。),而且驗證集MSE越大小不一定越好,我們還要考慮到sum(abs(y_true-y_pred)<lambda)內的黃金點個數才是我們關注的,若最優MSE,預測值容易在較小范圍擺動。

當然沒有在預測時候繼續訓練,只是一個每次restore model罷了,但是,一個LSTM,也不值得這樣去嘗試,現在應該試試RL才是我們想要的。
現在在考慮強化學習中state,action怎么定義,obs可以是當前受到的別人的該輪的預測值,reward為獎勵,但是你的action如何定義是一個問題。

五、2019_5_19補充

RL包括兩個方面,先采取Policy Gradient方法,主要是定義了action和environment:如下圖:

reward主要是定義如果預測值和實際goldennumber相差0.5以內,給予reward;如果隨機初始化網絡權重,reward為173,訓練完,reward為473,實際上這個也可以用supervised learning去做,純Policy Gradient的學習表現在訓練集表現還行:43/92,現在在看看實際的表現,因為可能過擬合(只用訓練數據訓練,數據太少了,無validation)。還行吧,等幾天考完或者最近有時間就在試試Q-learning。
感覺action可以再優化;可以試試比如36個輸入(最近三回合),可以嘗試在reward取更小,看實際更小reward所帶來的sum(abs(y_true-y_pred)<lambda),lambda在0.5范圍的gain如何。還是挺有收獲的,感謝fatterbetter哈哈。

五、2019_5_19晚補充

改變了action_space:

改變原先方式輸入,原先是最近10回合goldnumber,現在是最近3回合goldnumber所有人的預測值和最近三回合goldnumber,即為n_inputs = 36
改變reward給予方式,原先是只給距離gold值0.5內,嘗試了不同距離給reward:0.4內12, 0.內8, 1內4,現在還在運行。
好好復習考試,下次繼續!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM