跳到主要內容

類神經網路雜談

其實不管是類神經網路,學習語言或是學習任何領域的知識,都不斷的強調:
         先去用了,就知道要學什麼

特別是類神經網路這哦領域的知識,看了數種tensorflow 教學,有些人用數學的方式來介紹神經網路,嚇壞了一堆人,包括我,以為要學習神經網路要有非常深厚的數學能力,事實上當我們開始撰寫Tensorflow的程式碼的時候,一行數學式子都沒有用上,連我自己都嚇傻眼,但我不是反對你去了解這些數學式子,而是要告訴你其實學習類神經網路這件事情,比完全了解神經網路運作原理來的簡單太多了。

就像學開車一樣,其實大多數的人(包含我),都一直以為開車加速的[油門]是真的把油打開,但開車開了這麼多年上山下海,直到最近才知道原來所謂的油門,其實應該稱作[氣門],我們實際上並不是控制油,而是控制進氣閥,控制進去引擎的空氣量大小,錯了這麼多年了對於我們開車這件事情好像沒有太多影響。

如果不去深入了解類神經網路的數學式與原理,那我們該了解什麼,這也是這篇文章最重要的重點,學習類神經網路我們應該去瞭解他的觀念還有他的特性,並學會怎麼去假設我們的問題與目標,並使用神經網路幫我們解決這個議題。

我們該怎麼學習神經網路,Google一開始用了幾個範例來交導我們入門,用了手寫辨識這個簡單的範例,但是這個範例有一個很大的問題,就是不見頭不見尾,我娓娓道來。

分類(classification)的問題,為什麼很多機器學習的一開始就會介紹分類,而學習神經網路也對於分類這麼重視,事實上他就是我們大腦無時無刻都在做的事情,只是我們不稱他叫做分類,我們稱它叫做[決定]、[判斷]
       舉一個簡單的例子,例如我今天中午想要吃什麼午餐,我會想想 我肚子有沒有很餓,現在天氣式冷還是熱,所以我再[決定]要吃什麼午餐的時候我就是在以 肚子餓的程度與天氣的溫度做為判斷依據,於是我開始收集數據

肚子很餓,天氣很冷   想吃火鍋
肚子不餓,天氣很冷   想吃牛肉麵
肚子很餓,天氣很熱   想吃便當
肚子不餓,天氣很熱   想吃涼麵


如果我把這件件事情量化(量化就是把事情用數字表示),肚子餓用0-100分評比
(肚子 50分以下代表很餓 50分以上代表不餓)
(溫度 26度 以上大表很熱 26度以下代表很冷)


肚子 30,溫度 15  答案  火鍋
肚子 60,溫度 15  答案  牛肉麵
肚子 30,溫度 30  答案  便當
肚子 70,溫度 31  答案  涼麵


以圖表表示











留言

這個網誌中的熱門文章

使用藍牙BLE 讓iphone android 連接樹莓派3 raspberry pi 3

        Raspberry PI 3 終於內建藍牙與網路晶片 這個晶片有點強大,可以 同時 讓Wifi 與 BLE 和 SPP (RF Com) 同時繁忙通訊都沒有問題。        Raspberry PI 如果是當成藍牙Client 連結身邊的BLE裝置,例如ibeancon、智慧手環、智慧手錶,那只要使用簡單hcitool搭配hciconfig 指令就可以達到將資料要回來,在網路關鍵字一下就可以找到如何使用hcitool 連線並要得資料。      手機要與 Raspberry PI連線的方法可以透過,wifi 或是藍牙,但是操作上使用藍牙比較直覺與簡易。但是要讓手機連線 Raspberry PI, Raspberry PI上就需要將藍牙裝置當成Server,這件事情就需要一些程式碼上的撰寫。     現在的文件說到關於如何將 Raspberry PI藍牙裝置當成Server的文章並不太多,開發上總感覺困難重重,我也是在這裡停滯了好多天,不斷的搜尋解決方法,因為通起來了,資料來自網路所以也回饋給網路,讓下一個使用者減少這類問題的負擔。 不過目前這個方法未來開發資源越來越齊備可能不敷使用,但至少現在是可用的備案。     網路上搜尋之後,整體套件如下 藍牙硬體<== BlueZ <== Nodejs(Bleno) <== Node Ble <==  Node  Socket  <==你的程式 我們發現藍牙要動起來通常會倚賴BlueZ的套件,好在的是最新的版作業系統已經將BlueZ提升到5.23,支援BLE了。 所以安裝BlueZ套件這件事情就可以省略。        接著安裝 Node 環境 , http://blog.itist.tw/2016/04/using-raspberry-pi-3-to-build-eddystone-beacons-with-raspbian-jessie.html 於這篇網址提到安裝Node的快速方法,如果隨著時間推移太舊或是失效,在搜尋一下如何安裝Node即可解決。 題外話:Linux上開發要有所體悟,所有的架構都是在變動的,隨著版本的變動舊的API可能就會改變或是失效,期待不變與或是統一開發方式都是不太切合

小四軸飛行器:驅動馬達

等待陀螺儀 的這段時間馬達先來了,所以我們開始測試馬達驅動系統飛行器的馬達是透過 Arduino 發出 PWM 訊號,傳送給驅動器 ( 小型為 MOS FET ,大型為電調 ) 控制馬達的轉速,達到控制飛行器。為了測試我們的驅動電路,我們先寫一個簡單的 PWM 控制,讓 PWM 輸出值越來越大,到大極限的時候,又慢慢地變小,如果我們的驅動電路可以正常運作時我們應該可以聽到馬達的聲音漸漸地變大,然後漸漸地變小。 測試馬達之前我們先學習 Arduino 的 PWM ,學習的過程當中我參考了下面的網站 http://coopermaa2nd.blogspot.tw/2011/07/6-pwm.html http://coopermaa2nd.blogspot.tw/2011/07/61-pwm-modes-part1.html 感謝 Cooper Maa 。       一開始我們先使用一個 LED 正腳接再 PWM Nano 的 D3 ,然後負腳接到 GND ,接著寫讓 PWM 變大變小的程式 然後又找到如下網站 葉難 :Arduino 練習 : 呼吸燈 http://yehnan.blogspot.tw/2012/02/arduino_16.html 使用網站上的程式碼,我們可以看到燈慢慢亮起來,又慢慢的暗下去, 如果看到這樣的結果代表我們的 PWM 範例程是可以動作。 當呼吸燈完成了,代表我們的程式碼是沒有問題的 ( 如果有問題就是電路的問題 ) ,接下來只要把 LED 腳換成馬達控制腳,就可以測試我們的驅動。 查詢了一下 SI2302 ,由下表可以知道為什麼選用這個 IC ,這張表是在某個賣場抓到的 http://taiwan.tmall.com/item/20689248199.htm? 型號 電流 電壓 標示 極性 封裝 2SK3018 100MA 30V KN N 通道 SOT23 2N70

四軸飛行器:飛控板DIY

最近 我有時會問自己為什麼要從Arduino 開始弄非控板,而不去買已經整體弄好的Multiwii 非控板,其實主要是自己組裝出來的樂趣, 學習過程中嘗試透過各種資源與方法解決問題的能力 ,其實MAKER的資源很多,但怎麼應用這些資源裁示值得學習的,凌爸學習東西喜歡直接做,做的過程當中,自然就會了解WHY與HOW,這遠比看書學習的效果高上很多。 零件陸陸續續一包一包來了,發現郵費比零件貴太多~~~~@@,今天先把非控板黏在冰棒棍上,如下 正面   背面 上至下分別是 Arduino Nano,MPU6050(GY521),藍芽模組(4.0),至於固定的方式目前只是用一條雙面膠讓他們黏在上面,因為我還在考慮是否使用藍芽模組4.0還是2.1 ,2.1的好處是ARDUINO的燒錄與調適可以直接透過藍牙,如果是使用4.0就只能飛行與設定,不能燒入Arduino,但是藍牙4.0的優點是iphone 也可以控制,所以目前就先黏上藍牙4.0。 第一步 先讓Arduino 與 GY521通訊起來,這樣的開始就會特別有感覺,由於想要呈現比較高質感的電路圖,發現一套很棒的軟體  http://fritzing.org/home/   fritzing 這一套電路圖軟體居然是OPEN SOURCE的,且畫出來的畫面很棒又簡單,也推薦給妳試試看,其實我蠻害怕畫電路圖的因為PROTEL太龐大了,我又不是本科系的所以電路圖對我來說太恐怖, fritzing玩起來像是玩具一樣,完全消除我心中的恐懼感。真是太感謝了,也學習到快速畫電路圖的技巧。 GY521與ARDUINO的通訊很簡單,透過I2C的連線方式即可,其實我並不太知道I2C是什麼,但是維基百科說( https://zh.wikipedia.org/zh-tw/I%C2%B2C ),他是一種並聯通訊,所以我們ARDUINO上的SCL、SDA,連結到裝置的SCL、SDA之間就可以透過I2C資料傳遞。由圖可以 知道 A5 是SCL A4 是SDA 圖片網址 http://www.pighixxx.com/test/portfolio-items/nano/ 連接圖如下 A5 是SCL A4 是SDA 電源 5V 與接地 然後還有一個INT 我還沒搞懂。先這樣焊接了