目前分類:AI數學 (15)

瀏覽方式: 標題列表 簡短摘要

類神經網路筆記

一.前言

小編看了很多的書籍介紹類神經的,發現這本講的最淺顯易懂而且還附有程式碼,我認為電腦科學與其他物理學、電磁學…等最不同的點在於他是可以看出效果的,是感覺的到的,就算不太懂他的數學原理,反覆地去看程式碼再回來對照公式很快就可以更深入的了解,但是類似電磁學那種理論,即使你經由公式算出了電場是多少,電荷是多少,我依然沒有什麼感覺因為他看不到也摸不到,但電腦科學就不同了,你可以經由寫程式透過軟體去驗證你的理論正不正確,下面就帶各位一步一步地進入類神經的科學理論以及用個實際的例子說明這理論要如何使用。

類神經網路與模糊控制理論入門與應用(附範例程式光碟片)

二.類神經生物模型

當今最神秘的器官不外乎就是我們人類的大腦,就算在21世紀的今日我們還是對大腦還是有許多不解的地方,因此許多科學家就想解開大腦的奧秘,當中一些電腦科學家就想把腦神經的運作原理透過數學的方式推導出一套可行的演算法出來,因此第一代類神經就這樣產生了。

  • 下圖為一個典型的類神經圖解,人的腦神經系統分為下面幾個構造:

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(23) 人氣()

Convolutional Neural Net 筆記

更改版本:

2016/11/16 初版

2016/12/16 感謝rxliu同學提供的資料,讓我更清楚CNN的完整架構

 

 

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(10) 人氣()

-learning 推導

 

本文的目的是要讓大家了解Q learning 一行簡單的公式

 

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(6) 人氣()

最近Andrew Ng開了一堂深度學習的課,非常適合初學者學習,裡面有一系列課程,分別為
1.Neural Networks and Deep Learning
2.Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
3.Structuring Machine Learning Projects
4.Convolutional Neural Networks
5.Sequence Models

小編上了其中一堂,裡面非常詳細的講解object detection的由來以及YOLO的運作原理,上完這堂課令我茅塞頓開,許多以前懵懵懂懂的概念經過這堂課的洗禮後就清楚許多了,且coursera的教學方式本身我就非常的喜歡,上課時不只教學而已,課堂後也都會有小考試測試您對這章節所講述的概念有無理解,且還會有程式實作的作業,寫完作業後馬上就可以上傳伺服器來打分數,非常有效率。底下附上課程的連結:
https://www.coursera.org/learn/convolutional-neural-networks?specialization=deep-learning

小編這堂課上的是第四堂,主要講解的是深度學習中的主流網路-卷積神經網路,底下將整理一些小編在這堂課學習到的內容

1.classification:

下圖是一個CNN非常典型的例子,輸入一张圖片後來分辨圖片的種類,這是小編剛接觸深度學習時最初知道的概念,以為網路的功用即是做物件分類罷了。但慢慢學習之後才知道網路無所不能,只要丟入適當的input與output,網路甚至能告訴你物件在圖片中的位置並把它框出來,這類網路在學術界中稱為object detection model。

2.sliding window detection

早先最開始的概念是訓練各種不同大小的網路,然後在圖片上以滑動窗格的方式來尋找物體,如下圖所示,紅色的框框代表三個input size不同的CNN網路,藉由不同大小的框框分別在圖上滑動來預測物體,只要網路的信心大於一定值則可推斷框框所停的位置有極大的機率出現物體,因此我們就可以得知物體的位置並把框框畫出來。

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

DDPG也是延續著之前的觀念而來,是融合了Actor-Critic與DQN的experience replay而演化而來的演算法,完整架構圖如下所示,一樣是有兩個網路,Critic計算動作的好壞,Actor根據Critic網路調整參數獲得更好的策略

Critic network

Critic網路更新方式與之前介紹的Actor-Critic網路更新方式一樣,差別在於此處引用了兩個網路(target與now),這個概念源自於Double DQN,在此篇論文中發現一值更新同一個網路容易造成不穩定的現象,因此提出再創造一個網路(target)然後賦予相同的參數值,然後更新參數的時候更新原本的網路即可(now),等訓練一段時間後再把現now網路的參數再賦予給target網路,這麼做可以使得訓練更穩定,因此選取$q_{t+1}$的値時是選擇選取target網路所給予的q值

```python=
self.target_q = R + self.gamma * self.q_
self.loss = tf.reduce_mean(tf.squared_difference(self.target_q, self.q))
self.train_op = tf.train.AdamOptimizer(self.lr).minimize(self.loss)
``` 

Actor network

Actor 更新的概念很新穎,是採取連續微分的方式計算出action應該變動的方向,設計此網路時比較特殊,首先必須終止梯度計算倒傳遞到Actor網路,再來就是將Critic網路dq/da的梯度計算出來,然後再算出Actor網路da/dparams的微分,之後將兩者微分相乘並套用到Actor網路的參數上即可完成更新網路的動作了

```python=
#程式碼取自莫凡python
self.a = tf.stop_gradient(a)

# provided by Critic network
a_grads = tf.gradients(self.q, a)[0]   # tensor of gradients of each sample (None, a_dim)

# Actor network:caculate policy gradients
policy_grads = tf.gradients(ys=self.a, xs=e_params, grad_ys=a_grads)
train_op = opt.apply_gradients(zip(policy_grads, e_params))
```

Experirence replay

這概念也是源自於DQN網路,在訓練的過程中會持續的收集經驗,並且會設定一個buffer size,這個值代表要收集多少筆經驗,每當經驗庫滿了之後,每多一個經驗則最先收集到的經驗就會被丟棄,因此可以讓經驗庫一值保持滿的狀態並且避免無限制的收集資料造成電腦記憶體塞滿。

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

本方法使用兩個網路來達成學習動作,一為Actor網路,主要用來輸出動作,細心的讀者可能會發現這和之前所介紹的policy gradient的網路長的很像,沒錯!Actor網路就是從policy gradient 演化而來的,主要是改進policy gradient回合更新制的缺點,加了Critic網路之後就可以使用TD error當作advantage function做每步更新的步驟了

因此Actor-Critic演算法的核心理論就是

使用TD error當成policy gradient演算法的Advantage function

底下以莫凡python的github程式碼作解釋,有興趣可以自行觀看完整程式碼:

Critic network

 

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

今天要介紹RL的另一個家族Policy gradient,policy gradient顧名思義就是直接輸出動作機率,然後經由網路找出好的策略梯度方向進而慢慢改變神經元的權重使得網路輸出的策略達到最佳狀態,因此若此環境有n的動作的話,那麼輸出神經元就有n個,每個神經元的値分別代表不同動作的機率,因此選擇的動作的時候可以依據機率分布來挑選,這樣的學習方式稱為policy gradient,本文從兩個方向來了解PG演算法,分別是整合李弘毅老師的投影片[10]以及karparthy大神的Blog[4],不喜歡數學推導的可以直接跳到第二點。

1.Policy gradient 推導

本推導截自李弘毅老師的投影片,老師先從RL環境開始介紹起,如下圖所示,就是Actor網路與環境互動的過程,環境先給與初始環境s1,Actor網路接收到後預測出動作,之後將此動作輸入環境中又會使環境得到下一個狀態s2。

如此週而復始的循環就會得到一個Trajectory

因此可以假設得到上面這個Trajectory的機率為(得到s1狀態的機率)X(在s1狀態下採取a1這個動作的機率)X(在s1狀態並且採取a1的動作下與環境互動能得到s2的機率)…,一值周而復始的乘下去,數學表示式可以寫成最下面的連乘表示法

Expected reward則是使用期望值的概念來算出,窮舉所有可能出現的Trajectory並且把相對應的值與相對應的機率相乘做加總的動作就是網路採取theda這組參數所得到的Expected reward,PG演算法(Policy gradient)想解決的問題就是找到網路參數theda使得每次與環境互動時都可以得到最佳策略使之獲得的Expected reward能極大化,最後的等式則是論文上常表示的數學式。

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(4) 人氣()

Deep Q-learning (DQN) 原理說明

Mnih, Volodymyr, et al. “Playing atari with deep reinforcement learning.” arXiv preprint arXiv:1312.5602 (2013).

這個演算法就是當今鼎鼎有名的公司DeepMind所發明出來的,而DeepMind就是靠著這套演算法得到Google公司的青睞,因而在2014年就花高價把這間公司買下來,多年後證明Google當初的決定是對的,DeepMind不負眾望的挑戰從前人工智慧難以望其項背的棋類項目-圍棋,並成功打敗目前人類最頂尖棋手-柯潔,從最初版本的AlphaGo,一直到AlphaGO-Master,最後是不靠人類棋譜資料的AlphaGO-Zero,無處不顯示人工智慧的強大,而打造這一切的基礎便是當初的演算法DQN。

DQN 是由兩個龐大體系所組成的,第一個是強化式學習,另一個就是深度學習。強化學習是存在許久的理論,早在幾十年前研究學者就已經對它進行了許多研究,有興趣的朋友可以找找 Sutton 強化學習的聖經 - An introduction to reinforcement learning,又或者是可以到小編所寫日誌上觀看學習,亦或是到網路上也都存在許多珍貴的學習資源。
Reinforcement Learning - Q learning 推導

另一個龐大體系則為深度學習,是近期非常蓬勃發展的研究項目,DeepMind的厲害之處在於它成功的結合這兩大系統,並利用Atari遊戲當做實驗環境來進行學習並得到非常好的成效,在某些遊戲中,學習的機器人得分甚至比人類專家的得分還要高,因而人們才開始體現到這兩大演算法結合所能發揮的效用。

底下是DeepMind用DQN學習打磚塊遊戲的精彩影片 :
https://www.youtube.com/watch?v=V1eYniJ0Rnk

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(1) 人氣()

本篇是記錄學習李宏毅老師講解第二個章節[1]的學習筆記,在筆記之間多少也融合了之前Andrew Ng所講的內容[2],通過融合比較兩位大師的講解後,我對bias以及variance的概念又更理解了,著實有令人醍醐灌頂之意味

Bias and Variance

一開始老師以簡單的例子並搭配圖形介紹bias與variance的概念,如下圖,假設這是一個射飛鏢的遊戲,總共給你20次機會射靶,很厲害的人會全部都命中靶心,也就是如左上角這張圖一樣,在機器學習中稱為low bias and low variance,這也是使用機器學習的最終目的-訓練模形使得模型變成low bias and low variance。而右上角那張圖代表選手的偏差還有點大,雖然每次都在中心點附近,但還是存在一定的誤差範圍,這個時候在機器學習中即稱為high variance。再看看左下角那張圖,選手的偏差已經和高手平分秋色了,但選手的中心點卻不是瞄準靶心而是瞄準靶心稍稍上緣的位置,這個時候在機器學習中稱為high bias。

稍微有點variance 以及bias的概念後,老師繼續用個簡單例子加強說明,假設模型的目的是要找出X_cp到y之間的映射關係,左邊假設模型是個簡單的對應函式,經由gradient descent之後可以找到相對映的參數W、b,把很多組data做同樣的運算就可以得到如左圖的圖片出來,可以發現線條大部分都集中在中間的部分,相對於右邊用複雜的模形預測出的線條有規律許多,因此左邊的模形稱為small variance模型,右邊的模形稱為large variance模型。

bias也是做同樣的實驗,但老師不知道介於圖形中心點的那一條線的圖形因此就假設藍色的線為中心線,綠色的線為所有橘色的線取平均,因此由圖形可以發現到左圖兩條線的偏差比較大對應的圖形是large bias,右邊的圖形兩條線偏差相對小,因此對應的圖形是small bias。

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

Adagrad gradient descent implement

今天小編要教大家實作網路的梯度下降法,並用圖式化的方法一步一步的看出演算法的學習過程,非常適合初學者建立梯度下降法的概念,全文會公式與程式碼並行並搭配圖片讓概念更加具體化,本教學是看到台大李弘毅老師的課程因而寫的,老師在影片中說得很棒,很適合初學者學習,推薦大家去看老師的影片,底下附上影片連結,本篇只是以文字的方法描述老師影片所講解的內容而已。

 

 

開始之前先解釋一下程式碼的概念,首先會有10組創造出的data,接著將透過演算法找尋適合的weight、bias,使得用這組w、b預測出來的 y 值會最接近提供的數據,並讓Error加總最小。創造Error function有多種形式,這裡採取最簡單的square error做講解。

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

Machine learning MAP(mean average precision)

1.MAP來源:

MAP是資料檢索系統中很重要的指標,用於評斷一個搜尋系統的好與壞,高的MAP代表搜尋出的相關文件排在很前面,因此MAP包括了順序的評斷訊息在裡面,而後來有人將這樣的評斷指標稍微修改一下規則套在圖像辨識的object detection任務中來做為評斷圖像辨識系統的好與壞。

P:precision

  • 正確率(precision):相當於返回的結果中相關文檔所佔的比例
  • 召回率(recall):指返回結果中占所有相關文檔的比例

例如資料庫中有各種不同特徵組成的男女資料,你被要求設計一個系統負責從資料庫中僅僅藉由特徵中找出所有女生的資料。假設這資料庫共有男生、女生各五人,系統一搜索出的結果如下:

  • 系統1:
1 2 3 4 5 6 7

正確率:4/7
召回率:4/5

  • 系統2:
1 2 3 4 5 6 7

正確率:4/7
召回率:4/5

由上表可以發現,系統1和系統2的正確率和召回率皆相同,但我們可以很明顯的看出第二個檢索系統比較好,為什麼會造成這種現象?因為我們沒考慮順序的因素,一個良好的檢索系統當然希望越相關的排在越前面越好,因此就出現了AP這個概念。

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(1) 人氣()

 

小編延續之前的教學繼續教大家如何把前面所講的公式用python一步一步實作出來,這裡選擇的是用ipython notebook實作,這種筆記本也是小編愛上python的原因,有了ipython notebook程式碼和解說公式可以放在一起互相比對,也可以把實驗結果跑出來的圖放在筆記本上,簡直是神器阿XD。在公式旁小編都會附上對應的程式碼,如果還有不懂得歡迎留言詢問 ^.^

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

Chap6:Temporal Difference

Learning(TD)

 

TD 概念:每個值都找太麻煩了,為什麼不用走過的經驗去更新就好呢?走過哪裡就收集經驗,然後做更新,鼎鼎有名的Q learning就是TD的一種,走過的經驗我們稱做sample

 

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(8) 人氣()

Chap4:Dynamic Programming

 

講完了RL的概念後,再來就是想辦法使得V值以及Q值越大越好,這樣就代表我們可以拿到更多reward,後面的章節就是在講採用何種方法可以最大化這些值,DP 就是其中一個解決MDP的辦法,其他辦法還有Monte CarloChapter 5)就是Alpha Go 採取的方法,TD(Chapter 6)等等。

 

相信經過前面的講解後,各位對這三行方程式應該就不再陌生了,這三行是推導DP前的重要假設:

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

Chap3:Reinforcement Learning Problem

arkov Decision Processes:

 

在學習RL之前必須從MDP開始了解起,什麼是MDP呢?大家可以上上維基百科查詢,如同百科上所說的,MDP是一個數學架構模型,他有一個很特殊的性質叫作馬可夫性質, 即系統的未來狀態s(t+1)只與現在狀態s(t)有關,而與之前狀態s(t-1),s(t-2).....無關,那什麼系統符合MDP呢?舉個簡單的例子,下棋就是一個MDP系統,你下一步該怎麼走s(t+1)只根據你現在的盤面狀態s(t)決定即可,跟你之前走的都沒關係,所以這也是AI常常會以下棋做研究的原因,因為他就是一個標準的MDP系統。了解大概什麼是MDP系統後,我們再細部講解馬可夫對這系統下了什麼定義,馬可夫總共定義了六種東西,分別是:

 

1.一系列的狀態(s):

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(11) 人氣()