[Python人工智慧] 四.神經網路和深度學習入門知識
從本篇文章開始,作者正式開始研究Python深度學習、神經網路及人工智慧相關知識。前三篇文章講解了神經網路基礎概念、Theano庫的安裝過程及基礎用法、theano實現迴歸神經網路、theano實現分類神經網路,這篇文章又回到基礎知識,結合莫煩大神的視訊學習,講解機器學習基礎知識、神經網路基礎、CNN、RNN、LSTM RNN、GAN等知識,主要是學習"莫煩大神" 網易雲視訊的線上筆記,後面隨著深入會講解具體的專案及應用。基礎性文章和線上筆記,希望對您有所幫助,也建議大家一步步跟著學習,同時文章中存在錯誤或不足之處,還請海涵~
"莫煩大神" 網易雲視訊地址:http://study.163.com/provider/1111519/course.html
從2014年開始,作者主要寫了三個Python系列文章,分別是基礎知識、網路爬蟲和資料分析。
- Python基礎知識系列:Pythonj基礎知識學習與提升
- Python網路爬蟲系列:Python爬蟲之Selenium+Phantomjs+CasperJS
- Python資料分析系列:知識圖譜、web資料探勘及NLP
前文參考:
[Python人工智慧] 一.神經網路入門及theano基礎程式碼講解
[Python人工智慧] 二.theano實現迴歸神經網路分析
[Python人工智慧] 三.theano實現分類神經網路及機器學習基礎
目錄:
一.機器學習
二.神經網路
三.卷積神經網路
四.迴圈神經網路
五.LSTM RNN
六.自編碼
七.GAN
一.機器學習
首先第一部分也是莫煩老師的線上學習筆記,個人感覺挺好的基礎知識,推薦給大家學習。對機器學習進行分類,包括:
1.監督學習:通過資料和標籤進行學習,比如從海量圖片中學習模型來判斷是狗還是貓,包括分類、迴歸、神經網路等演算法;
2.無監督學習:只有資料沒有類標,根據資料特徵的相似性形成規律,比如不知道類標的情況進行分類貓或狗,常見的聚類演算法(物以類聚);
3.半監督學習:綜合了監督學習和無監督學習,通過少量有標籤樣本和大量沒有標籤樣本進行訓練和分類,有效提升了兩者效果;
4.強化學習:常用於規劃機器人行為準則,把計算機置於陌生環境去完成一項未知任務,比如投籃,它會自己總結失敗經驗和投籃命中的經驗,進而懲罰或獎勵機器人從而提升命中率,比如阿爾法狗;
5.遺傳演算法:和強化學習類似,通過淘汰機制去選擇最優模型,比如自己玩超級馬里奧,淘汰前面幾代差的,基於強者的"遺傳和變異",適者生存,弱者淘汰的原理。
二.神經網路
神經網路也稱為人工神經網路ANN(Artifical Neural Network),是80年代非常流行的機器學習演算法,在90年代衰退,現在隨著"深度學習"和"人工智慧"之勢重新歸來,成為最強大的機器學習演算法之一。
神經網路是模擬生物神經網路結構和功能的計算模型,由很多神經層組成,每一層存在著很多神經元,這些神經元是識別事物的關鍵。神經網路通過這些神經元進行計算學習,每個神經元有相關的激勵函式(sigmoid、Softmax、tanh等),包括輸入層、隱藏層(可多層或無)和輸出層,當神經元計算結果大於某個閾值時會產生積極作用(輸出1),相反產生抑制作用(輸出0),常見的型別包括迴歸神經網路(畫線擬合一堆散點)和分類神經網路(影象識別分類)。
如下圖所示,它表示的是一個人工神經細胞。其中: 輸入(Inputs):神經細胞的輸入;權重(Weight):左邊五個灰色圓底字母w代表浮點數;激勵函式(Activation Function):大圓,所有經過權重調整後的輸入加起來,形成單個的激勵值;輸出(Output):神經細胞的輸出。
進入人工神經細胞的每一個input(輸入)都與一個權重w相聯絡,正是這些權重將決定神經網路的整體活躍性。假設權重為-1和1之間的一個隨機數,權重可正可負(激發和抑制作用)。當輸入訊號進入神經細胞時,它們的值將與它們對應的權重相乘,作為圖中大圓的輸入。如果激勵值超過某個閥值(假設閥值為1.0),就會產生一個值為1的訊號輸出;如果激勵值小於閥值1.0,則輸出一個0。這是人工神經細胞激勵函式的一種最簡單的型別。涉及的數學知識如下圖所示:
如果最後計算的結果激勵值大於閾值1.0,則神經細胞就輸出1;如果激勵值小於閾值則輸出0。這和一個生物神經細胞的興奮狀態或抑制狀態是等價的。
下面簡單講解"莫煩大神"網易雲課程的一個示例。假設存在千萬張圖片,現在需要通過神經網路識別出某一張圖片是狗還是貓,如下圖所示共包括輸入層、隱藏層(3層)和輸出層。
每一個神經元都有一個激勵函式,被激勵的神經元傳遞的資訊最有價值,它也決定最後的輸出結果,經過海量資料的訓練,最終神經網路將可以用於識別貓或狗。
三. 卷積神經網路
卷積神經網路英文是Convolutional Neural Network,簡稱CNN。它通常應用於圖片識別和語音識等領域,並能給出更優秀的結果,也可以應用於視訊分析、機器翻譯、自然語言處理、藥物發現等領域。著名的阿爾法狗讓計算機看懂圍棋就是基於卷積神經網路的。
神經網路是由很多神經層組成,每一層神經層中存在很多神經元,這些神經元是識別事物的關鍵,當輸入是圖片時,其實就是一堆數字。
首先,卷積是什麼意思呢?卷積是指不在對每個畫素做處理,而是對圖片區域進行處理,這種做法加強了圖片的連續性,看到的是一個圖形而不是一個點,也加深了神經網路對圖片的理解。
卷積神經網路批量過濾器,持續不斷在圖片上滾動蒐集資訊,每一次搜尋都是一小塊資訊,整理這一小塊資訊之後得到邊緣資訊。比如第一次得出眼睛鼻子輪廓等,再經過一次過濾,將臉部資訊總結出來,再將這些資訊放到全神經網路中進行訓練,反覆掃描最終得出的分類結果。如下圖所示,貓的一張照片需要轉換為數學的形式,這裡採用長寬高儲存,其中黑白照片的高度為1,彩色照片的高度為3(RGB)。
過濾器蒐集這些資訊,將得到一個更小的圖片,再經過壓縮增高資訊嵌入到普通神經層上,最終得到分類的結果,這個過程即是卷積。如下圖所示,它將一張RGB圖片進行壓縮增高,得到一個很長的結果。
研究發現:卷積過程會丟失一些資訊,POOLING(持化2)能解決這些問題,卷積時不壓縮長寬,儘量保證更多資訊,壓縮工作交給持化。經過圖片到卷積,持化處理卷積資訊,再卷積再持化,將結果傳入兩層全連線神經層,最終通過分類器識別貓或狗。
如下圖所示,從下往上依次經歷“圖片-卷積-持化(處理卷積資訊)-卷積-持化-結果傳入兩層全連線神經層-分類器”的過程。
四. 迴圈神經網路
迴圈神經網路英文是Recurrent Neural Networks,簡稱RNN。假設有一組資料data0、data1、data2、data3,使用同一個NN(神經網路)預測他們,得到對應的結果。如果資料之間是有關係的,比如做菜下料的前後步驟,如何讓資料之間的關聯也被神經網路進行分析呢?這就要用到了RNN。
首先,想想人類是怎麼分析事物之間的關聯吧,人類通常記住之前發生的事情,從而幫助我們後續的行為判斷,那麼我們就讓計算機也記住之前發生的事情吧。
在分析data0時,我們把分析結果存入記憶,然後當分析data1時,NN會產生新的記憶,但是此時新的記憶和老的記憶沒有關聯,我們會簡單的把老記憶呼叫過來分析新的記憶,如果繼續分析更多的資料,NN就會把之前的記憶累積起來。
數學形式中,每次RNN執行完之後都會產生S(t),RNN分析X(t+1),而此時Y(t+1)是由S(t)和S(t+1)共同創造的,繼續累加。多個NN的累積就轉換為了迴圈神經網路,如下圖的右邊所示。
最後講講RNN的應用。分類,分析一個人說話情感是積極的還是消極的?它有N個輸入,最後一個時間點代表輸出結果的RNN。
影象識別,此時有一張圖片輸入,N張對應的輸出。
機器翻譯,其中輸入和輸出分別兩個,對應的是中文和英文,如下圖所示:
五.LSTM RNN
RNN是在有序的資料上進行學習的,RNN會像人一樣對先前的資料發生記憶,但有時候也會像老爺爺一樣忘記先前所說。為了解決RNN的這個弊端,提出了LTSM技術,它的英文全稱是Long short-term memory,長短期記憶,也是當下最流行的RNN之一。
假設現在有一句話,如下圖所示,RNN判斷這句話是紅燒排骨,這時需要學習,而“紅燒排骨“在句子開頭。
"紅燒排骨"這個詞需要經過長途跋涉才能抵達,要經過一系列得到誤差,然後經過反向傳遞,它在每一步都會乘以一個權重w引數。如果乘以的權重是小於1的數,比如0.9,0.9會不斷地乘以誤差,最終這個值傳遞到初始值時,誤差就消失了,這稱為梯度消失或梯度離散。
這也是RNN沒有恢復記憶的原因,LSTM就是解決這個問題而產生的。如下圖所示:
LSTM RNN多了三個控制器,即輸入、輸出、忘記控制器。左邊多了個條主線,例如電影的主線劇情,而原本的RNN體系變成了分線劇情,並且三個控制器都在分線上。
如果分線劇情對於最終結果十分重要,輸入控制器會將這個分線劇情按重要程度寫入主線劇情,再進行分析;如果分線劇情改變了我們之前的想法,那麼忘記控制器會將某些主線劇情忘記,然後按比例替換新劇情,所以主線劇情的更新就取決於輸入和忘記控制;最後的輸出會基於主線劇情和分線劇情。
基於這些控制的機制,LSTM是延緩記憶的良藥,從而帶來更好的結果。
六.自編碼
首先,什麼是自編碼(Autoencoder)?自編碼是一種神經網路的形式,注意它是無監督學習演算法。例如現在有一張圖片,需要給它打碼,然後又還原圖片的過程,如下圖所示:
一張圖片經過壓縮再解壓的工序,當壓縮時原有的圖片質量被縮減,當解壓時用資訊量小卻包含所有關鍵性檔案恢復出原來的圖片。為什麼要這麼做呢?有時神經網路需要輸入大量的資訊,比如分析高清圖片時,輸入量會上千萬,神經網路向上千萬中學習是非常難的一個工作,此時需要進行壓縮,提取原圖片中具有代表性的資訊,壓縮輸入的資訊量,再把壓縮的資訊放入神經網路中學習。這樣學習就變得輕鬆了,所以自編碼就在這個時候發揮作用。
如下圖所示,將原資料白色的X壓縮解壓成黑色的X,然後通過對比兩個X,求出誤差,再進行反向的傳遞,逐步提升自編碼的準確性。
訓練好的自編碼,中間那部分就是原資料的精髓,從頭到尾我們只用到了輸入變數X,並沒有用到輸入變數對應的標籤,所以自編碼是一種無監督學習演算法。
但是真正使用自編碼時,通常只用到它的前半部分,叫做編碼器,能得到原資料的精髓。然後只需要建立小的神經網路進行訓練,不僅減小了神經網路的負擔,而且同樣能達到很好的效果。
下圖是自編碼整理出來的資料,它能總結出每類資料的特徵,如果把這些資料放在一張二維圖片上,每一種資料都能很好的用其精髓把原資料區分開來。自編碼能類似於PCA(主成分分析)一樣提取資料特徵,也能用來降維,其降維效果甚至超越了PCA。
PS:強烈推薦大家去網易雲學習莫煩大神的Python視訊。
七.GAN生成對抗網路
神經網路分類很多,有普通的前向傳播神經網路,有分析圖片的CNN卷積神經網路,有分析序列化資料比如語音或文字的RNN迴圈神經網路,這些神經網路都是用來輸入資料,得到想要的結果。我們看中的是這些神經網路通過某種關係輸入和結果聯絡起來。
但還有一種神經網路,不是用來把資料對上結果的,而是用來憑空捏造結果,這就是我們要講的生成網路,GAN(Generative Adversarial Nets)就是其中一種。
憑空並不是沒有意義的盒子,而是有一些隨機數,通過這些沒有意義的隨機數來生成最終有意義的作品,比如蒙娜麗莎畫作。
再來屢屢步驟,如下:新手畫家用隨機靈感畫畫,新手鑑賞家會接收一些畫作,但他不知道這是新手畫家畫的還是達芬奇畫的,他說出了自己的判斷,你來糾正他的判斷。新手鑑賞家一邊說出自己的判斷,一邊告訴新手畫家要怎麼修改才能畫得像著名畫家,新手畫家從而學會如何從自己的靈感畫更好的畫作。
最後講講GAN的應用,訓練的GAN可以用來隨機生成臥室圖片,甚至可以做圖片加減法,修飾圖片,也可以根據隨機畫的幾筆草圖生成對應的圖片,如下圖所示。
講到這裡,神經網路入門知識已經普及完了,後面作者將結合原理及程式碼實現對應的神經網路,詳見部落格。同時推薦大家學習莫煩大神的視訊,最近自己在瘋狂的學習新知識,做好相關筆記和撰寫程式碼。
一個人如果總是自己說自己厲害,那麼他就已經再走下坡路了,最近很浮躁,少發點朋友圈和說說吧,更需要不忘初心,砥礪前行。珍惜每一段學習時光,也享受公交車的視訊學習之路,加油,最近興起的傲嬌和看重基金之心快離去吧,平常心才是更美,當然娜最美,早安。
(By:Eastmount 2018-05-31 早上10點 http://blog.csdn.net/eastmount/ )
相關文章
- 【深度學習】神經網路入門深度學習神經網路
- 深度學習、神經網路最好的入門級教程深度學習神經網路
- 深度學習入門筆記(十八):卷積神經網路(一)深度學習筆記卷積神經網路
- 如何用Python和深度神經網路識別影象?Python神經網路
- 人工智慧、機器學習、深度學習、神經網路的關係人工智慧機器學習深度學習神經網路
- 再聊神經網路與深度學習神經網路深度學習
- AI之(神經網路+深度學習)AI神經網路深度學習
- 深度學習與圖神經網路深度學習神經網路
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 深度學習四從迴圈神經網路入手學習LSTM及GRU深度學習神經網路
- 圖神經網路知識神經網路
- 【深度學習】1.4深層神經網路深度學習神經網路
- 深度學習三:卷積神經網路深度學習卷積神經網路
- 深度學習教程 | 深層神經網路深度學習神經網路
- Python+Matlab+機器學習+深度神經網路全套學習資料!PythonMatlab機器學習神經網路
- 【球類識別系統】影像識別Python+卷積神經網路演算法+人工智慧+深度學習+TensorFlowPython卷積神經網路演算法人工智慧深度學習
- 網路安全基礎知識入門!網路安全學習教程
- 深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet深度學習神經網路CNN
- 深度學習之RNN(迴圈神經網路)深度學習RNN神經網路
- 深度學習迴圈神經網路詳解深度學習神經網路
- 深度學習——LeNet卷積神經網路初探深度學習卷積神經網路
- 深度學習之上,圖神經網路(GNN )崛起深度學習神經網路GNN
- 深度學習筆記------卷積神經網路深度學習筆記卷積神經網路
- 深度學習之step by step搭建神經網路深度學習神經網路
- 深度學習卷積神經網路筆記深度學習卷積神經網路筆記
- 圖神經網路入門神經網路
- 深度學習經典卷積神經網路之AlexNet深度學習卷積神經網路
- 構建和優化深度學習模型(神經網路機器識圖)優化深度學習模型神經網路
- 零基礎入門深度學習(一):用numpy實現神經網路訓練深度學習神經網路
- 【深度學習】LeCun親授的深度學習入門課:從飛行器的發明到卷積神經網路深度學習LeCun卷積神經網路
- 初探神經網路與深度學習 —— 感知器神經網路深度學習
- NLP與深度學習(二)迴圈神經網路深度學習神經網路
- 中草藥識別系統Python+深度學習人工智慧+TensorFlow+卷積神經網路演算法模型Python深度學習人工智慧卷積神經網路演算法模型
- 【機器學習基礎】神經網路/深度學習基礎機器學習神經網路深度學習
- 阿爾茨海默病症識別+影像識別Python+人工智慧+深度學習+TensorFlow+機器學習+卷積神經網路演算法Python人工智慧深度學習機器學習卷積神經網路演算法
- 【昆蟲識別系統】影像識別Python+卷積神經網路演算法+人工智慧+深度學習+機器學習+TensorFlow+ResNet50Python卷積神經網路演算法人工智慧深度學習機器學習
- 海洋生物識別系統+影像識別+Python+人工智慧課設+深度學習+卷積神經網路演算法+TensorFlowPython人工智慧深度學習卷積神經網路演算法
- 神經網路與深度學習 課程複習總結神經網路深度學習