8

正如我在前面的問題中提到的,我正在編寫一個迷宮求解應用程序,以幫助我瞭解更多理論CS主題,可以演化一組規則(由布爾值處理),以便通過迷宮找到一個好的解決方案。即使我沒有真正的神經網絡工作知識(沒有正式的理論CS教育),但我想用神經網絡加強它。在對這個主題進行一些閱讀之後,我發現可以使用神經網絡來訓練基因組以改善結果。比方說,我有一個基因組(基因組),如用神經網絡和/或鋼筋學習提高我的GA

1 0 0 1 0 1 0 1 0 1 1 1 0 0... 

我怎麼會用一個神經網絡(我假設MLP?),以培養和提高我的基因?

除了這一點,我對神經網絡一無所知我一直在尋找實施某種形式的鋼筋學習,使用我的迷宮矩陣(2維數組),雖然我有點卡在什麼下面的算法從我又想:

(從http://people.revoledu.com/kardi/tutorial/ReinforcementLearning/Q-Learning-Algorithm.htm

1. Set parameter , and environment reward matrix R 
    2. Initialize matrix Q as zero matrix 
    3. For each episode: 
      * Select random initial state 
      * Do while not reach goal state 
       o Select one among all possible actions for the current state 
       o Using this possible action, consider to go to the next state 
       o Get maximum Q value of this next state based on all possible actions 
       o Compute 
       o Set the next state as the current state 

    End Do 

    End For 

對我來說正好是實施獎勵矩陣R,什麼Q矩陣,並獲得Q值的大問題。我爲我的迷宮和枚舉狀態使用多維數組來處理每一個動作。這將如何用於Q-Learning算法?

如果有人能夠幫助解釋我需要做什麼來實現以下內容,最好在Java中,儘管C#也會很好,但可能有一些源代碼示例,這將是值得讚賞的。

+1

這是一個非常複雜的課題。你在談論的事情通常在AI的大學課程的整個學期中討論。我不確定他們是否可以在Stackoverflow問題中得到很好的解答,但我肯定會對看到人們嘗試的感興趣。我從來沒有把我的頭圍繞在這些算法中。 – 2010-03-17 14:57:12

+0

另一方面,如果你願意花費一些現金在關於這個主題的真正好的教科書上,那麼我可以建議:http://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597/ref = sr_1_1?ie = UTF8&s = books&qid = 1268837913&sr = 1-1 – 2010-03-17 15:12:38

+0

我已經瞥了幾遍這本書,雖然它提供了一個體面的理論背景, 。如果有人能夠寫出一個基本的解決方案,根據我提供的信息來工作,即使它是僞代碼,我也會很高興嘗試並實施它並給出一個可接受的答案。 – AlexT 2010-03-17 15:41:51

回答

3

正如在一些評論中指出的那樣,您的問題確實涉及大量的背景知識和主題,而這些知識和主題幾乎無法在stackoverflow上進行詳細介紹。但是,我們可以在這裏嘗試的是提出解決問題的方法。

首先:你的GA做什麼?我看到一組二進制值;他們是什麼?我看到他們要麼:

  • :的「右轉」和「左轉」的指令序列。爲什麼這不好?因爲你基本上是在做一個隨機的,蠻力的嘗試來解決你的問題。你沒有進化出一種基因型:你正在完善隨機猜測。
  • 更好:每個基因(基因組中的位置)代表將在表型中表達的特徵。基因組和表型之間不應該有1對1的映射!

讓我舉一個例子:在我們的大腦中有10^13個神經元。但是我們只有大約10^9個基因(是的,這不是一個確切的數值,只有我一秒鐘)。這告訴我們什麼?我們的基因型不編碼神經元。我們的基因組編碼這些蛋白質,然後去做我們身體的組成部分。

因此,通過選擇表型的特徵,進化對基因型直接起作用。如果我的每隻手都有6個手指,並且這會讓我成爲更好的程序員,讓我擁有更多的孩子,因爲我在生活中更加成功,那麼我的基因型就會被進化選中,因爲它包含了的能力給我一個更健康的身體(是的,那裏有一個雙關語,考慮到這裏大多數人的平均可重複性比率)。

現在,想想你的遺傳算法:你試圖完成什麼?你確定演變規則會有所幫助嗎?換句話說 - 你會在迷宮中表演嗎?什麼是最成功的事情可以幫助你:擁有一個不同的身體,或者擁有正確的出路的記憶?也許你可能想重新考慮你的基因型,並讓它記憶記憶能力。也許在基因型中可以存儲多少數據,以及你的代理人能夠多快地訪問它 - 然後衡量他們走出迷宮的速度。 另一種(較弱)的方法可能是編碼代理用來決定去哪裏的規則。回家的信息是,編碼一旦表達過的特徵可以通過健身來選擇。


現在,對神經網絡問題。有一點要記住,神經網絡是過濾器。他們收到一個輸入。對其執行操作並返回輸出。這是什麼輸出?也許你只需要區分一個真/假的條件;例如,一旦你將一張迷宮地圖提供給神經網絡,它可以告訴你是否可以從迷宮中走出來。你會怎麼做這樣的事情?您將需要正確編碼的數據。

這是關於神經網絡的關鍵點:您的輸入數據必須正確編碼。通常人們對它進行規範化,也許可以對其進行縮放,也許可以對其應用一個西格瑪函數以避免過大或過小的值;這些是處理錯誤措施和性能的細節。你現在需要了解的是NN是什麼,以及你不能使用它。

現在就解決您的問題。您提到要使用神經網絡,以及:怎麼樣,

  • 利用神經網絡來引導劑,和
  • 使用遺傳算法進化神經網絡的參數?

改寫像這樣:

  • 讓我們假設你有一個機器人:你NN是控制左右車輪,並作爲輸入接收到下牆的距離,有多少已經走過到目前爲止(這只是一個例子)
  • 你首先產生一個隨機基因型
  • 使基因型進入一個表型:第一個基因是網絡的敏感性;第二個基因編碼學習比率;第三基因..等等等等
  • 現在你有一個神經網絡,運行仿真
  • 看它如何執行
  • 產生第二隨機基因型,發展第二NN
  • 怎麼看這第二個個別執行
  • 獲得最佳的個體,那麼無論其變異基因型或重組它與失敗者
  • 重複

存在優秀在此閱讀此事:Inman Harvey Microbial GA

我希望你能對這些問題有所瞭解。 NN和GA沒有解決所有問題的靈丹妙藥。在有些情況下,他們可以做得很好,而在另一些情況下他們只是錯誤的工具。現在(仍然),我們要得到最好的一個,並且要這樣做,我們必須很好地理解它們。

玩得開心!我們很高興地知道這樣的事情,讓每天的生活多一點有趣的:)

+0

稍作修改。人類基因組中有大約10^9個鹼基對。大約有20,000到25,000個基因。我不能說有多少需要建立一個大腦, – Spike 2010-03-19 23:33:37

1

大概沒有「迷宮基因」發現,

遺傳算法正試圖設置屬性的載體和「過濾系統」通過某種算法「優勝劣汰的存活出現」決定找從哪套房產中做出最好的工作。

尋找迷宮方式的最簡單方法是沿着牆壁向左(或向右)移動。

Q算法似乎有一個問題,local maxima這是解決方法,因爲如果結果沒有改善,我記得踢(添加隨機值到矩陣)。

編輯:如上所述,回溯算法比GA或NN更適合這項任務。 如何結合兩種算法描述如下:hereNeuroGen描述GA如何用於訓練NN。

0
  • 嘗試使用免費的開源NerounDotNet C#庫,供您的神經網絡,而不是執行它。

  • 對於強化學習的圖書館,我目前正在爲一體,特別是對點NET框架..