1. 程式人生 > >Google發布機器學習平臺Tensorflow遊樂場~帶你玩神經網絡(轉載)

Google發布機器學習平臺Tensorflow遊樂場~帶你玩神經網絡(轉載)

ima pdo androi 真的 技術 font 螺旋數據 本科 玩耍

Google發布機器學習平臺Tensorflow遊樂場~帶你玩神經網絡

原文地址:http://f.dataguru.cn/article-9324-1.html>

摘要: 昨天,Google發布了Tensorflow遊樂場。Tensorflow是Google今年推出的機器學習開源平臺。而有了Tensorflow遊樂場,我們在瀏覽器中就可以訓練自己的神經網絡,還有酷酷的圖像讓我們更直觀地了解神經網絡的工作原理。今 ...

技術分享

網絡 技術分享工具 技術分享機器學習 技術分享神經網絡 技術分享Tensorflow

昨天,Google發布了Tensorflow遊樂場。Tensorflow是Google今年推出的機器學習開源平臺。而有了Tensorflow遊樂場,我們在瀏覽器中就可以訓練自己的神經網絡,還有酷酷的圖像讓我們更直觀地了解神經網絡的工作原理。今天,就讓矽谷周邊帶你一起去Tensorflow遊樂場快樂地玩耍吧!
昨天,Google深度學習部門Google Brain的掌門人,也是Google裏受萬眾景仰的神級別工程師Jeff Dean,在Google Plus上發布了Tensorflow遊樂場的消息:

技術分享

於是小夥伴們都十分激動地去Tensorflow的網站上玩神經網絡了!遊樂場的地址是:http://playground.tensorflow.org。讓我們快點一起去看看遊樂場裏有哪些好玩的東東吧。
一打開網站,就看見上面的標語:

技術分享

“在你的瀏覽器中就可以玩神經網絡!不用擔心,怎麽玩也玩不壞哦!”
這簡直太令人振奮了!面對這麽多可以隨便點的按鈕,咱們從哪兒開始呢?

技術分享

首先讓我們來看看數據。在這個遊樂場中,我們有4種不同形態的數據可以玩:

技術分享

每組數據,都是不同形態分布的一群點。每一個點,都與生俱來了2個特征:x1和x2,表示點的位置。而我們數據中的點有2類:橙色和藍色。我們的神經網絡的目標,就是通過訓練,知道哪些位置的點是橙色、哪些位置的點是藍色。
如果橙色是橙子,藍色是藍莓。假設我們有2000個散落在各處的橙子和藍莓。前1000個,我們知道坐標(1,1)的是藍莓,(2,2)的是橙子,(0.5,0.5)的是藍莓等等。我們要用這些信息來訓練我們的神經網絡,讓它能夠準確地預測出後1000個哪些是橙子、哪些是藍莓。
看上面的4組數據,我們會發現,前3中都能相對簡單地區分開,而最後一組螺旋數據會是最難的。
Tensorflow遊樂場中的數據十分靈活。我們可以調整noise(幹擾)的大小,還可以改變訓練數據和測試數據的比例多少。下圖是不同noise的數據分布。

技術分享

當我們把每一個數據點的信息餵給機器學習系統時,我們需要做feature extraction,也就是特征提取。如果我們真的是在區分藍莓和橙子的話,大小、顏色等等都會是我們的特征。而這裏,每一個點都有x1和x2兩個特征。除此之外,由這兩個特征還可以衍生出許多其他特征:

技術分享

抽象來說,我們的機器學習classifier(分類器)其實是在試圖畫一條或多條線。如果我們能夠100%正確地區分藍色和橙色的點,藍色的點會在線的一邊,橙色的會在另一邊。
上面這些圖其實非常的直觀。第一張圖中,如果x1作為我們的唯一特征,我們其實就是在畫一條和x1軸垂直的線。當我們改變參數時,其實就是在將這條線左右移動。其他的特征也是如此。
很容易可以看出,我們需要智能地結合這其中一種或多種的特征,才能夠成功地將藍色點和橙色點分類。這樣的feature extraction,其實往往是機器學習應用中最難的部分。好在我們有神經網絡,它能夠幫我們完成大部分的任務。
如果我們選定x1和x2作為特征,我們神經網絡的每一層的每個神經元,都會將它們進行組合,來算出結果:

技術分享

而下一層神經網絡的神經元,會把這一層的輸出再進行組合。組合時,根據上一次預測的準確性,我們會通過back propogation給每個組合不同的weights(比重)。這裏的線越粗,就表示比重越大:

技術分享

下面就讓我們用最難的螺旋形數據,來試試這個神經網絡的表現吧!
在神經網絡出現前,我們往往會竭盡所能地想出盡可能好的特征,把它們全都餵給系統。而系統會是個十分淺的系統,往往只有一層。用這樣的方法來完成分類。
讓我們先來實驗傳統的方法。在這裏,我們將所有能夠想到的7個特征都輸入系統,並選擇只有1層的神經網絡:

技術分享技術分享

最後的結果是這樣的,可以看出我們的單層神經系統幾乎完美地分離出了橙色點和藍色點:

技術分享

接下來,讓我們來體驗神經網絡真正的魔法。神經網絡最大的魔力,就在於我們根本不需要想出各種各樣的特征,用來輸入給機器學習的系統。我們只需要輸入最基本的特征x1, x2, 只要給予足夠多層的神經網絡和神經元,神經網絡會自己組合出最有用的特征。
在這次試驗中,我們只輸入x1, x2,而選擇1個6層的,每層有8個神經元的神經網絡:

技術分享技術分享


最後的結果是這樣的。我們發現,通過增加神經元和神經網絡的層數,即使沒有輸入許多特征,我們也能夠成功地分類:

技術分享

神經網絡的偉大之處就在於此。當我們在解決分類橙色點和藍色點這樣的簡單問題時,想出額外的特征似乎並不是難事。但是,當我們要處理的問題越來越復雜,想出有用的特征就變成了最最困難的事。比如說,當我們需要識別出哪張圖片是貓,哪張圖片是狗時,哪些特征是真正有效的呢?
而當我們有了神經網絡,我們的系統自己就能學習到哪些特征是有效的、哪些是無效的,這就大大提高了我們解決復雜機器學習問題的能力,簡直是太酷啦!
看了以上的文章,你是不是對神經網絡有了更直觀的認識呢?好奇的小夥伴們,歡迎去http://playground.tensorflow.org/自己試試看,真的非常好玩!
作者簡介矽谷周邊,本科畢業於Carnegie Mellon University(卡耐基梅隆大學),主修電子與計算機工程和機器人。先後在蘋果(Macintosh Systems, iPod)和Google(Android, Google Glass)工作。現在是Google的一名軟件工程師。


來自為知筆記(Wiz)

Google發布機器學習平臺Tensorflow遊樂場~帶你玩神經網絡(轉載)