2

我剛開始一個機器學習課程,我們探討了Perceptrons。對於作業,我們應該: 「選擇適當的兩維(平面)訓練和測試數據集,使用10個數據點進行訓練,5個進行測試。」然後我們應該編寫一個程序,使用感知器算法和輸出:瞭解感知器

  • 訓練數據點是否是線性評論 可分離
  • 在測試點是否線性可分
  • 你的權重和常數
  • 最終解決方案的初始選擇評論方程(決策邊界)
  • 更新權重的總數你的算法做出
  • 在培訓方面,迭代的總數設置
  • 最終誤分,如果有的話,訓練數據和 也對測試數據

我已經多次閱讀過本書的第一章,而且我仍然無法完全理解感知器。

我明白,你改變權重,如果一個點被錯誤分類,直到沒有再被錯誤分類,我想我唔明是

  1. 我怎麼使用測試數據,以及如何做這涉及到 培訓數據?
  2. 如何知道點是否被錯誤分類?
  3. 我該如何着手選擇測試點,訓練點,門檻或偏見?

如果沒有我的書提供很好的例子,我很難知道如何彌補其中之一。正如你可以說我很迷茫,任何幫助將非常感激。

回答

10

我該如何使用測試數據以及如何與 培訓數據相關?

想想感知爲年幼的孩子。你想教孩子如何區分蘋果和橘子。告訴你它是5個不同的蘋果(全紅/黃色)和5橘子(不同形狀的),同時告訴它什麼它看到動輒(「這是一個蘋果。這是一個橙色)。假如孩子有完美的記憶,它會學習瞭解是什麼讓蘋果的蘋果和桔子桔子,如果你給他足夠的例子,他最終將開始沒有你居然告訴他使用的元功能(如形狀)。這是一個感知器做什麼之後你給他看所有的例子,你從頭開始,這就是所謂的新時代

當你想測試孩子的知識,會發生什麼?你給它新的東西。青蘋果(不只是黃色/紅色),葡萄柚,也許是西瓜。爲什麼不在訓練期間向孩子展示與之前完全相同的數據?因爲孩子有完美的記憶,它只會告訴你你告訴他什麼。你不會看到它有多好,概括從已知到看不見數據,除非你有不同的訓練數據,你從來沒有在訓練中顯示他。如果孩子對測試數據,但在訓練數據100%的性能恐怖的表現,你就會知道他已經什麼也沒學到 - 訓練時它只是重複他已被告知 - 你訓練他太久,他只有記憶你的例子不理解是什麼讓一個蘋果一個蘋果,因爲你給了他太多的細節 - 這被稱爲過度擬合。爲了防止您的感知器只能(!)識別訓練數據,您必須在合理的時間停止訓練,並在訓練和測試集的大小之間找到一個良好的平衡點。

如何知道點是否被錯誤分類?

如果是從它應該是什麼樣的不同。假設一個蘋果的類爲0,橙色爲1(這裏您應該開始閱讀單/多層感知器以及多個感知器的神經網絡如何工作)。該網絡將採取您的輸入。它如何編碼與此無關,比方說輸入是一個字符串「apple」。你的訓練集是{(apple1,0),(apple2,0),(apple3,0),(orange1,1),(orange2,1).....}。既然你事先知道這個類,網絡將爲輸入「apple1」輸出1或0。如果它輸出1,則執行(targetValue-actualValue)=(1-0)= 1。在這種情況下,意味着網絡輸出錯誤。將此與增量規則進行比較,您會明白,這個小方程是較大更新方程的一部分。如果您得到1,您將執行重量更新。如果目標和實際值相同,您將始終得到0,並且您知道網絡沒有錯誤分類。

我該如何去選擇測試點,訓練點,門檻或 的偏見?

實際上,偏差和閾值本身不是「選擇」的。與其他任何單位一樣,使用簡單的「技巧」訓練偏差,即使用偏差作爲值爲1的附加輸入單位 - 這意味着實際偏差值在該附加單位的重量中編碼,我們使用的算法將確保它自動學習我們的偏見。

根據您的激活功能,閾值是預先確定的。對於一個簡單的感知器,會產生很多的分類如下:

Perceptron

由於我們使用二進制輸出,這是一個良好的開端(0和1之間)把門檻爲0.5,因爲這正好中間範圍[0,1]。

現在到您關於選擇培訓和測試要點的最後一個問題:這是非常困難的,您通過經驗來做到這一點。在你所在的位置,你首先實現簡單的邏輯函數,比如AND,OR,XOR等等。這很簡單。您將所有內容都放入您的訓練集中,並使用與您的訓練集相同的值進行測試(因爲對於x XOR y等,只有4個可能的輸入00,10,01,11)。對於像圖像,音頻等複雜數據,您必須嘗試並調整數據和功能,直到您感覺網絡可以像您希望的那樣良好地工作。

0

我該如何使用測試數據以及它與訓練數據有何關係?

通常,爲了驢特定算法如何執行,一個第一列車它,然後使用不同數據測試做得如何在其上已經從未見過的數據。

如何知道點是否被錯誤分類?

您的訓練數據有標籤,這意味着對於訓練集中的每個點,您都知道它屬於哪個類。

如何選擇測試點,訓練點,閾值或偏差?

對於簡單的問題,你通常會拿所有的訓練數據並將其分成80/20左右。你訓練80%,並測試剩下的20%。

+0

感謝您的迴應!我還有幾個問題:因此,對於我的訓練數據,我會喜歡[10] [3]數組,它是x值,y值還是標記?而且我對這個算法如何「訓練」訓練數據也有點困惑,你可以再擴展一下嗎? – Sarah 2015-01-31 23:44:59

+0

在你提到的問題中,你提到「我知道你改變權重,如果一個點被錯誤分類,直到沒有人被誤分類」。 **是**的學習,它指的是找到合適的權重。 – Dave 2015-01-31 23:50:24

+0

噢,那麼權重是否會從測試數據的訓練數據的最終權重開始? – Sarah 2015-01-31 23:57:24