2010-11-21 40 views
1

我正嘗試做下一個節目:我的程序的一個易於學習機程序

描述教與學的用戶和機器 一個PROGRAMM,使字符串操作, 教的雙向互動是下一個: 首先,我想像這樣

input(ab) - output(aabb) 
input(ac) - output(aacc) 
input(ie) - output(iiee) 
input(pt) - output(pptt) 

規則你趕上了嗎? :)

我把第一對數據集。 輸入(ab) - 輸出(aabb) 我按下一個按鈕(存入存儲器)將這些數據輸入到程序存儲器中,然後按下其他按鈕(嘗試猜測按鈕)。 按下Try-to-guess botton後,程序會返回一個類似於任何...輸出(abbb)或輸出(aaaa)的答案... 不管... 我不希望我的程序在第一個嘗試。

我檢查我的第一對數據集的fisrt答案是錯誤的,並把嘗試再次botton。 在前面的段落中,我嘗試了一個基本的互動用戶機器 我希望如果以前的過程重複,三,四,或任何有限的和孩子規模的次數程序達到我所想的規則。

當我的程序得到正確答案時,我有兩個選擇: 一個是按下「Good!」 botton和 其他選項,如果我看到我的程序不斷給我一些很好的答案(所以顯然我的程序已經猜到了我的規則)我按「你猜對了!」鈕。 注意:這裏的Botton意味着相同的命令

所以程序會在很多檢查輸出的過程中得到我的規則。 所以程序試圖學習我腦海中的規則,只是分析我給它的數據對輸入輸出集合。 我想象程序做一個LUT的短語,並試圖找出什麼輸入對應於什麼特定的輸出。 我認爲基本的算法會是這樣的。該算法生成輸入的LUT - 輸出,並嘗試找到與特定輸入對應的輸出。 我希望我的解釋是不夠好

規則的種類

這個程序鴕鳥政策有關於之前設定的輸入輸出中的內存(這是沒有必要像馬爾可夫鏈)

問題

有沒有人知道這樣的事情,它已經完成了? 如果這個網站是做這個問題的最佳地點?如果沒有什麼是最好的地方? 如果stackoverflow不是這個問題的適當位置,請我與我分享任何網站來搜索我自己的。 什麼是最好的編程語言來做到這一點? (如果這不是問最後一個問題的網站,請註明網址) 歡迎任何其他建議! 非常感謝你!

+0

hhaarrdd qquueessttiioonn – 2010-11-21 07:36:42

+0

II konw riiightt – mauris 2010-11-21 07:41:10

+0

一個想法是試圖找到一個適合所有給出的例子最簡單的有限自動機,搜索「學習有限自動機」 – 2010-11-22 08:35:23

回答

2

所以,你想要做的是學習一個函數,將輸入映射到輸出。

爲簡單起見,假設我們有數字而不是字母。 例如:

input(23) - output(2233) 
input(01) - output(0011) 

如果n1是第一號和n2第二,你想學習功能 1100 * N1 + 11 * N2,對不對?我想第一個數字只有2位數,因爲你沒有提供任何更多的例子(我不確定會發生更長的數字會發生什麼)。 但是,通過在上述情況下將所有其他數字設置爲零,這可以很容易地推廣到更多數字。

Linear Regression可以很容易地解決這個問題。

我不知道如何添加您想要的「嘗試和錯誤」功能。 我想到的唯一的機器學習方法是Reinforcement Learning,但我不清楚如何在這種情況下使用它。

順便說一句,爲什麼甚至嘗試用機器學習方法學習這樣簡單的東西呢?它可以通過簡單的字符串操作輕鬆完成。

+0

是的,我跟你的規則說明1100 *一致n1 + 11 * n2,如果n1和n2是{0,1,2,3,4,5,6,7,8,9}。事實上,我不是對我的規則的正式描述。但通過一些例子,我認爲很容易用直觀的方式來理解它。 – Peterstone 2010-11-21 16:14:24

+0

你可以推廣到任何基地。例如,您可以將字母映射到值(a - 1,b - 2等)並將最大數字用作基數。所以,如果我們有1-n之間的數字,那麼輸出是n^3 * n1 + n^2 * n1 + n^1 * n2 + n^0 * n2。 – George 2010-11-21 16:43:09

+0

你是如何知道的?你有沒有使用特定的數學方法或只是你的數學直覺? – Peterstone 2010-11-21 20:20:41

0

我回應你關於...

我不知道你怎麼能添加「試錯」的功能,你想要的。我想到的唯一機器學習方法是鋼筋學習,但我不清楚如何在這種情況下使用它。順便說一句,爲什麼即使嘗試用機器學習方法學習這樣簡單的東西?它可以通過簡單的字符串操作輕鬆完成。

我想我可以解決我自己的問題,創建一個算法,使LUT專注於字符串操作,而不是基於鋼筋學習。但I'm找幾件事情:

  • A「規劃」不是根據書面授權任何語言的代碼,但在人與機器之間的簡單交互的方式。想象一種創建程序的方法,那些不知道程序如何編程的人可以直觀地理解如何創建這些程序。因此,我們可能需要將「程序」這個詞放在「技能」一詞中。 (即使最後只會被程序員使用))

  • 探索在不知道數學或統計學知識的情況下做IA應用程序的可能性。很有趣的事實是,在瞭解像線性迴歸或積分之前,您學會了解決基本算術問題 問題。我更喜歡尋找健壯的架構(雖然未針對任何特定問題進行優化,因爲他們對此進行編程,並不過分擔心數學問題。順便說一句,感謝您的鏈接),而不是用特定算法來解決特定問題。

  • 有一個有趣的時間教簡單的事情,我的電腦想逆轉的話,總和表,乘法表,怎麼做一些正式的衍生物,西班牙語單詞,模擬對話,最有趣的事情.. 然後合併! 讓我的電腦無需編程即可算數!