Visualizing and Understanding Convolutional Networks

一.abstract

本篇論文是可視化卷積神經網路的開山始祖,作者是卷積網路的發明者Yann Lecun的得意門生Matthew Zeiler,主要藉由提出來的可視化方法優化Alexnet網路,文中結果表示經過修改後的網路在勝過原始Alex網路1.7%(single model,test-top5),應用本文提供的方法可以很清楚的看出每一層到底學了什麼特徵,同時本篇論文也是2013年Imagenet分類任務的冠軍,是很值得學習的一篇文章。

二.main idea

文中說提出的方法很類似於[1],不同之處在於那篇文章是從全連接層去做映射,而此文章從卷積核去做映射。

底下為架構一個卷積神經網路的經典順序:

Input(pic) -> conv -> relu -> maxpool

而反卷積網路就將以上動作反著做以求出卷積核對圖片的哪些部分擁有最大激發值

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

To prune, or not to prune: exploring the efficacy of pruning for model compression

1.abstract

這是篇Google2017年發佈的論文,主要是透過將矩陣變稀疏進而提升網路的運行速度。 文中最重要的重點就是發現大模型並加上稀疏矩陣表現會比小模型網路的準確度還高上許多。

2.method

稀疏矩陣視意圖:

在每次訓練之中會把權重由大排到小,只選擇那些較大的權重數字,其他較小的權重就由稀疏矩陣乘上0消除那個權重對網路的整體影響,且這個稀疏矩陣的稀疏度是慢慢增加的,如下圖所示,隨著學習率的慢慢遞減,稀疏矩陣的稀疏度慢慢的增加到設定值。文中表示一開始的學習率不能設太高,設太高的話會導致訓練結果不會收斂,像本篇論文實做在mobilenet的時候學習率是設為原本學習率的十分之一。

下面公式就是描述稀疏度的公式,藉由給定開始稀疏度與結束稀疏度以及時間區間就能計算出各個step的稀疏度出來

文章標籤

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

Google free GPU

最近Google 很佛心的提供免費的GPU-k80供大家使用,只要擁有Google drive帳號即可使用Colabortory 程式開啟 jupyter notebook來編寫程式碼並調用Google 提供的GPU使用。不過這僅適用於小實驗,因為這服務只能讓你使用連續12個小時,12個小時後就會斷開連線並把資源釋放出來給其他人使用,如下圖。

創建 colabortory程式

https://colab.research.google.com/
要使用colabortory程式非常簡單,只要到以上網站隨便新增一個notebook

雲端硬碟中就會新增一個叫做Colab Notebook的資料夾

文章標籤

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

人人都可跑 AlphaGO Zero

如今人工智慧崛起,各式各樣的AI產品不斷的推陳出新,而領先世界潮流的正是Google 收購的公司 DeepMind,自從AlphaGo打敗李世石之後,全球圍棋界為之震驚,但DeepMind沒有停止研究腳步,過一陣子就創造出更強的圍棋程式Master,在圍棋網站上痛宰60個圍棋九段頂尖高手,不久之後更強的圍棋程式AlphaGoZero出現了,不像從前的版本是靠人類的棋譜學習的,AlphaGoZero像武俠小說的周伯通一樣學習左右互博術,僅僅依靠唯一的圍棋規則就可自我學習並變得越來越強,甚至還推翻了流行近代的定式,就連目前最頂尖的職業棋士-柯潔都自嘆不如,原本Google是不打算開源程式原始碼的,但他們有發論文在科學雜誌上,頂尖高手馬上就複製一個同樣的演算法出來讓大家免費使用。

論文:Mastering the Game of Go without Human Knowledge - DeepMind

今天小編要介紹給大家的是網路上開源的圍棋電腦軟體 Leela,有各式各樣的版本
Leela的官方網站:https://www.sjeng.org/leela.html

總共有兩種版本的,一個為GPU,另一個是普通版,小編稍微測試過在圍棋網上可輕鬆輾壓段位高手

不過這不是小編要介紹的重點,小編今天要介紹的是另一款開源程式Leela 進化版—Leela zero

文章標籤

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

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

1.Abstract

類神經網路在近幾年已取得巨大的突破,從最開始的Perceptron一直演化到AlexNet、VGG,精確度一直不斷的往上提升,但伴隨著的是模型複雜化,過度複雜的模型使得運算量極大以至於不能在低階產品(如手機上)運行,MobileNet的發明就是為了解決這想法而產生的,文中和許多當前有名的框架互相比較(Inception V3、VGG),速度真的提升許多,雖然精確度有稍許下降,但也都控制在可以接受的範圍內。

2.Main idea

文中最核心的思想就是把傳統的卷積過程簡化成計算量更少的過程,算式並沒有完全等效,但有趨近於等效的功用,主要是把過程分成Depthwise convolution 和 pointwise convolution,文中用公式來舉例說明

* 傳統卷積計算量:
$D_F$:代表輸入特徵圖片的邊長

文章標籤

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

爬取台灣上市上櫃公司股票代碼

今天要小編要介紹給大家如何用python爬取現在台灣上市上櫃的股票代碼,只要簡簡單單的寫幾行程式,網路上的資料就被爬下來了。今天要爬的網路資料如下圖所示,這是網站位置:http://isin.twse.com.tw/isin/C_public.jsp?strMode=2

爬取結果

寫完整個程式小編才知道原來台灣的上市股票總共有916檔阿!!

關鍵代碼:pd.read_html(url)

爬取網頁前需要先安裝python 的pandas套件,pandas是專門做資料處理的,簡單的來說就是表格的處理包,可以想像成程式化的excel,excel可以處理的pandas都能處理,甚至功能更多更強,例如小編要介紹函式read_html,只要給予網站網址就能抓取所有的表格下來,是個非常方便的功能。底下附上完整代碼,header的功能是為了模仿網頁瀏覽器,因為有些網站會擋爬蟲程式碼,因此要偽裝成chrome瀏覽器才能順利爬取資料。
pd.read_html 官網源碼

解決亂碼問題:

小編第一次爬的時候發現爬出來的資料都是亂碼,這時候就必須檢查網頁的原始編碼的形式,結果發現是MS950

文章標籤

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

Youtube downloader

做影像處理常常會需要大量的資料去訓練,而取得資料最快的地方即是影片,其中又屬youtube的影片資料量最多,網路查詢過很多下載的方式,有把它做成程式下載器供別人離線下載的,也有很多像下圖這樣的線上下載網頁。這樣的網頁必須一個一個的將影片網址貼上然後再一次次的點擊下載,如果是少量的影片其實這些方法就很夠用了,但如果是要大量的下載影片,那麼光下載的動作可能就會耗掉一整天的時間,因此我開始搜尋有無更快的方法,最後發現原來python中有一個庫稱做pytube就已經提供用程式下載影片的功能了,這又讓我更愛上python了 XD。下面將介紹關於這工具的使用方式,現在如果我需要下載影片的話,只需要將網址全部貼一貼然後按執行就可以下載了~~~

1.install

# pytube version: 6.4.2
pip install pytube

2.引用YouTube函數

from pytube import YouTube
link = 'https://www.youtube.com/XXX'
yt = YouTube(link)

3.相關功能介紹

  • yt.get_videos()
    會針對剛剛所給的網址上網尋找影片,回傳值是一串list,包含網路上所有可下載的影片格式、解析度。特別注意的是,解析度的順序是由小排到大,因此如果只想要下載高清影片,只要讀取這個list的最後一項就可以了。

  • yt.filter(‘3gp’)
    此功能可以針對影片的特殊格式進行濾波,回傳也是一個list,根據解析度由小到大排列。

  • yt.get(‘mp4’,‘360p’):
    也可以同時指定影像種類以及解析度

文章標籤

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

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) 人氣()

ImageNet Classification with Deep Convolutional Neural Networks (2012)

一.abstract

說到深度學習的重大突破就不得不了解這曠世鉅作-Alexnet,現今深度學習的許多技巧在此篇著作中還是可以看到,說明此篇論文對後世影響廣大阿。這CNN架構是模仿著當時很有名的Lenet做修改,隨後在ILSVRC-2010競賽中嶄露頭角,當時最好的成績也不過是錯誤率Top1-45%,Top5-25.7%,與第二名也才差個兩個百分比,可是Alexnet一下就名列前茅且錯誤率達到Top1-37.5%,Top5-17%,一下子就超越七八個百分比,且論文中提及因為運算資源的關係(GPU 只有3GB記憶體)所以網路只能設計這麼大,說明還有很大的進步空間阿,幾年後果不其然,出現了甚至低於人類辨識率的網路,說明CNN的強大阿。本篇論文提出非常多的構想,包括relu、lrn、dropout,以及最重要的概念-加深網路深度可以讓辨識率提高

二.main idea

a.relu nonlinearity


在Alexnet之前,大部分的網路都是採用tanh(x)當作激活函數,但alex從hinton的論文當中發現了relu函數可以使得訓練速度更快,因此便把這個技術引進CNN中,成為現在家喻戶曉的relu函數

Hinton relu 起源:rectified linear units improve restricted boltzmann machines

b.local response normalization


lrn起源是來自神經學中的later-inhibition,主要講述的是發出的神經元訊號會抑制周圍的神經元訊號,這也是我們人類會在某些圖片中擁有錯覺的主要原因,具體可以參考下面連結。文中說明可以使得top-1、top-5錯誤率下降1.4%、1.2%,在cifar-10資料庫中也可以下降2%,不過參考多篇論文心得後發現後續研究者證明這技巧並沒什麼功效。
http://linfengwei.pixnet.net/blog/post/10515788-lateral-inhibition(側抑制)
https://prateekvjoshi.com/2016/04/05/what-is-local-response-normalization-in-convolutional-neural-networks/

c.overlapping pooling

正常的pool層都是stride=n,kernel_size=n,這樣就都不會有重複到的地方,而overlapping pooling就是stride<kernel size的意思,這裡作者設k=3,s=2,作者與k=2,s=2的卷積網路比較發現可以降低top-1:0.4%,top-5:0.3%,不過後來也證實這沒什麼用處。

文章標籤

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

 

這篇文章即將教大家Anaconda 安裝 各式各樣package的方法,萬變不離其宗,因此這裡以安裝opencv來示範,執行安裝的步驟非常簡單,首先一如往常的從windows系統中呼叫命令提示元,這裡教大家一個快速執行的方法: Windows (就是鍵盤上有著windows mark的那個按鈕,有四片矩形^.^)+ R 鍵,然後輸入cmd開啟


 

文章標籤

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