2016年10月27日 星期四

[深度學習練習] [Deep Learning Practice] 神經網路入門(一)- 機器學習介紹

最近呢,都在學深度學習,發現這真的是一門很有趣的學問。

深度學習可以拿來做很多很屌的事情,但如果要好好地在某個領域使用他,

不僅要該領域的專業知識,還要夠硬朗的深度學習的知識才行。

------------------------------------------------------------------------------------------------------------

這系列練習中,預計要分享下列東西:

1. 機器學習和神經網路介紹

2. 基本神經網路(Neural Network)模型建立與數字預測練習

3. 卷積神經網路(Convolutional Neural Network)應用於台灣指數預測

4. 遞迴神經網路(Recurrent Neural Network)應用於台灣指數預測

5. 心得與討論

這個算是滿大的工程,畢竟也是我學了一個多月玩的東西。

所以上面只是全局圖,全部紀錄完大概要10篇吧我猜。

------------------------------------------------------------------------------------------------------------

正文開始。

目標:學習神經網路並用來預測台股期貨指數

使用方法及語言:深度學習 Python 2.7

------------------------------------------------------------------------------------------------------------

一、機器學習介紹

之前已經玩過前兩個遊戲(水位預測和指數預測)的人呢,

要學習神經網路的概念,基本上是非常簡單的事情。

但因為之前真的是亂學,所以對於機器學習的全局概念是相當薄弱的,

這一小節就想說來重新記錄一下,到底什麼是機器學習。



機器學習是一種分析的方法,分析的主要概念是,

我們給他一堆資料,叫他給我 insight。(可能是未來的行為、結果和趨勢)




那麼,給他一堆資料的我們,肯定是有想要知道答案的問題,

這些問題可以是什麼呢?

------------------------------------------------------------------------------------------------------------

二、機器學習的應用

機器學習可以解決的問題其實可以被分為下面四類:

分類 Classification - 

給他已經知道答案的數據(離散),學完後,再給他不知道答案的數據,叫他給答案。

EX: 上一個指數預測的遊戲就是分類問題(漲或跌)

回歸 Regression -

給他已經知道答案的數據(連續),學完後,再給他不知道答案的數據,叫他給答案。

EX: 上上一個水位預測的遊戲就是回歸問題(水位高度值)

群聚 Clustering -

給他一堆不知道答案的資料,給他一些學習邏輯,讓他把資料做分類。

EX: Facebook 人臉辨識

概念衍生 Rule Extraction -

這個比較抽象,我自己亂學的理解是,它類似於用分析方法找到規則

比如,你丟了一萬張照片,群聚後發現你跟你姐一直被分在同一類,

那你就可以合理的懷疑,你跟你姐可能是同一個爸爸和媽媽。

照片辨識 -> 血緣關係 ,我想這大概就是概念衍生吧......

覺得這太嘴砲沒關係,假如你去做一萬組貨物的銷量回歸預測,

發現啤酒跟尿布購買力的週期是一樣,那你就可以合理的懷疑,

大家喝完酒都比較容易生小孩,銷量預測 -> 喝酒可以生小孩


到這邊,基本上我們已經了解機器學習可以解決什麼問題。



但是他要怎麼解決呢?

------------------------------------------------------------------------------------------------------------

三、機器學習中的演算法

使用各種演算法去解決問題。

算法太多我把文章放到參考資料裡面惹[4],

大概講幾個瞭解瞭解就可以。

1. Regression Algorithms

這就回歸方法,水位預測就是利用這個方法解決的。

當然回歸有很多種特殊方法,這邊就不細說。

2. Instance-based Algorithms

這是拿著已經發生的事實,去推算未來某個跡象出現時,會發生什麼事。

我們股票預測就是用這個,所以才會這麼悲劇。

3. Clustering Algorithms

分群,你把一堆點灑在一個任意維度的空間裡面,

自己去定義一個歐幾里得距離(Euclidean distance),聚一起的就是一掛的。

代表算法有 k-Means、k-Median

4. Kernel Algorithms

這個算是大數據時代前,機器學習裡最猛的演算法,

最著名的是支撐向量機算法(Supported Vector Machine, SVM),

概念是,我們把原始數據映射到高維度上,再去做分類

反正 polynomial function 總有一階可以完美切割這些資料。

5. Ensemble Algorithms

這個我滿喜歡的,學習各種訓練好的機器得到的結果,再算出一次結果,

大概可以想成一台 Alphago,

他要知道現在這一步的局勢,再加上你下的這一步的局勢,

還有他接下來下那一步的後續發展,藉由這樣來決定他要下哪一步。

6. Neural Network Algorithms

這是學習我們的神經細胞啊,

輸入一堆資料進去神經元,神經元做出非線性反應這樣。

7. Deep Learning

這個算是神經網路的一個變態,也是我們接下來主要要講的一個方法,

他的概念呢,就想成有好多個神經元們,彼此之間互相輸出輸入彼此的訊號

最後整個神經系統給出一個訊號或一個類別


當然還有很多其他種類的算法,只是再細讀就下去就不像在亂學,

我就也懶得學惹。

參考資料裡面的 Coursera 有免費的線上課程,

開課的 Andrew Ng 是一個大神,

目前在百度人工智慧部門帶頭,有興趣可以稍微看一下。



先到這,下一篇再稍微講一下深度學習的概念。

------------------------------------------------------------------------------------------------------------

Reference

[1] Practical Machine Learning Problem

[2] 圖解機器學習

[3] Coursera - Machine Leanring 

[4] A tour of machine learning algorithms

1 則留言: