Keras 教學- 機器學習與類神經網路 - Soul & Shell Blog
文章推薦指數: 80 %
Keras 是近年火紅的Machine Learning 函式庫,也是一個開源專案,透過Python 實做的深度學習高階API 函式庫。
採用MIT License,主要作者維護者是Google ...
Keras教學-機器學習與類神經網路
Tags:AIKerasMachineLearningMNIST手寫辨識機器學習深度學習類神經網路bySJ on 2020/08/21 in 科技與科學,程式設計,雲端AI大數據
最近在研究Keras與深度學習,順便記錄一下學習的過程(完整Keras投影片)。
現在網路上已經有很多的資源可以幫助我們進行MachineLearning,像是GPU可以用CoLab提供的P100來訓練,足夠應付一般的實驗工作。
如果要訓練比較龐大的影像資料,還是自己買GPU或租用雲端MaaS服務吧,不然免費的CoLab穩定性不太夠,而且只有一顆GPU。
因為學習心得有點多,內容可能會分幾篇文章進行介紹。
廢話說完,那就先開始吧......
Keras是什麽?
Keras是近年火紅的MachineLearning函式庫,也是一個開源專案,透過Python實做的深度學習高階API函式庫。
採用MITLicense,主要作者維護者是Google工程師FrançoisChollet。
在GitHubKerasProject獲得超多的Star與Fork。
Keras擁有以下特性:
相同的程式碼可以在CPU或GPU上執行
提供API快速建構神經網路雛型
內建函式庫支援卷神經網路、循環神經網路以及任何組合
可建構任何形式的深度學習模型,包含對抗神經網路、神經圖靈機
內建PlayDataset,可以進行一些演算法的實驗
架構如下:
https://www.slideshare.net/databricks/a-tale-of-three-deep-learning-frameworks-tensorflow-keras-and-deep-learning-pipelines-with-brooke-wenig-and-jules-damji
為什麽現在「深度學習」高速發展?
類神經網路的概念很久以前就已經被提出,早期計算機運算能力有限,那時候只能解決簡單問題,比如訓練一個XOR互斥或閘(XORProblem)這樣的問題。
如今伴隨科技的進步,以往複雜的問題所需要的大量運算,逐漸被克服,以下幾點也是近年來MachineLearning發展迅速的主因:
硬體設備提昇:GPU,CUDA平行運算(Nvidia)
資料:伴隨網路發展產生大量的資料、標記內容
演算法:更好的啟動函數、更好的權重初始化方法、更好的最佳化方式
其中我認為半導體的技術發展是最大的推手,利用半導體發展AI運算專用的晶片,或者未來實現In-memoryProcessing這樣的晶片架構,都會大幅提昇AI解決問題與應用的能力。
機器學習的基本概念
如果你跟我一樣也是個程式(Bug)設計師,那麼我們平常的工作應該是:
沒錯,就是理解正妹PM提出的需求,經過專業的系統分析師(應該也是你)分析以後,接著由軟體架構師(應該也是你)進行系統設計,然後交給程式設計師(還是你)進行設計。
這樣的開發過程就是現在程式設計的流程,所有的「答案」都是我們可以預測的(我是說大部分比較正常的情況下),而我們實現「規則」的過程就是程式設計,但有時候規則很難被歸納與實現,說的出來但是很難收斂與系統化,比如從一張照片分辨是貓還是狗。
像這一類的問題對人類來說很簡單,對機器來說卻是很複雜。
相較於傳統的程式設計,機器學習的過程就不太一樣:
首先我們要準備很多「答案」與「資料」作為訓練樣本,然後假設這個規則可能構成的方法,接著讓機器根據我們提供的答案與資料進行訓練,嘗試找出兩者之間的「規則」關係。
這類的問題通常都是很難用傳統的「程式設計」來解決的問題,甚至有一些模糊地帶與不容易量化的問題答案,就可以透過機器學習(深度學習)來完成。
除了深度學習,還有淺層學習
除了深度學習用到的類神經網路,還有一個領域是機器學習常用的方法,統稱淺層學習。
這個詞比較少見,其實就是一些傳統的統計方法,這些其實都是透過「資料與答案」尋找「規則」,當然也屬於機器學習的一部分。
這些常用的方法如下:
機率建模(Probabilisticmodeling)
單純貝式分類器
邏輯斯回歸(LogisticRegression)
KernelMethods
SVM-將資料投影到高維空間,進而尋找最佳決策邊界。
難以用在大量的資料集,像是影像處理領域。
屬於淺層工作法,其中「特徵工程」就變得相當重要。
決策樹、隨機森林、梯度提昇機器
決策樹(Decisiontree)
隨機森林(RandomForest):集合大量決策樹組合輸出值,在2010~2014廣授歡迎。
梯度提昇機(GradientBoostingMachines,GBM):適合處理非感知資料,透過迭代訓練逐步提昇模型的弱點,也稱為弱預測模型。
上述的方法大家應該多少有些聽聞,我就不一一介紹了(我也不懂R~~~)。
類神經網路ANN
會被稱為類神經網路(ArtificialNeuralNetwork,ANN),是因為組合的結構與人類腦中的神經元相似,目前在機器學習上使用的神經網路規模的架構,與人類腦中的神經元組成大不相同,無論是複雜度與數量都無法與人腦相比。
現在可以透過HPC處理比較龐大的類神經網路,用來解決複雜的問題,一個簡單的神經網路如下:
Refre:https://mc.ai/a-to-z-about-artificial-neural-networks-ann-theory-n-hands-on/
一個類神經網路由許多Layer組成,透過Input與Output給予資料來訓練Layer中的參數。
類神經網路就像一個龐大的「多項式」,需要大量計算才能求得最佳解。
如今類神經網路已經發展出非常多樣的網路模型,透過不同的神經元連接方式、資料處理方式、參數調整方式、收斂方式來建立AI模型,應付各種問題。
類神經網路的概念就像一個黑盒子,理論上可以學習任何規則(是理論!?),在很早期1975年PaulWerbos發明的反向傳播算法(Backpropagation)就成功訓練了「互斥或」邏輯運算,一直到近幾年積體電路GPU突飛猛進,可以進行複雜與龐大的運算,也讓神經網路開啟進入到另一個階段。
為什麽現在「深度學習」高速發展?主要以下幾個原因:
硬體設備提昇:GPU,CUDA平行運算(N-Vidia)
資料爆炸:伴隨網路發展,產生大量的資料、標記內容
演算法:更好的啟動函數、更好的權重初始化方法、更好的最佳化方式
深度學習的基本概念
深度學習的基本架構,透過不同的「網路層」連接方式,可以產生不同的AIModel,解決不同的問題。
那麼深度學習是如何運作的?以監督式學習為例,我們需要先準備很多「輸入資料X」與「標準答案Y」然後送進網路進行運算。
藉由不斷調整參數來找到「解法」,一開始我們就會定義網路的組成方式,這個網路代表一個假設空間,藉由我們輸入的資料讓這個假設空間(網路)可以找到解法。
但如果我們一開始設定的假設空間(網路)就已經沒有涵蓋最正確的解法,那麼無論怎麼運算都不會有好的結果,所以一開始網路的架構選擇與組成也是很重要的。
整個訓練過程如下圖:
上圖當「輸入資料X」經過網路的計算後,會獲得答案「預測值Y'」但是一開始這個答案給我們的「標準答案Y」會有一些差距,基本的訓練架構會透過「損失函數」計算出「損失分數」,藉由我們選擇的「優化器」逐漸優化調整網路權重值,好讓我們的「預測值Y'」可以慢慢接近「標準答案Y」。
經過數輪的計算後這個「超級函式」就會擬合(Fit)我們的輸入資料,當未來送入一樣概念的資料時,網路就能輸出這個概念所理解的答案。
這篇文章是我今年K書整理下來的心得,後續會慢慢介紹其他Keras的用法.......下次見~
更多文章Keras教學–如何透過資料擴增法利用少量資料訓練CNN網路Keras教學–訓練卷積神經網路Keras教學–神經網路訓練參數的特性與使用時機Keras教學–訓練IMDBReviewsCNN網路模型用GoogleColab免費GPU訓練AI模型教學Keras教學–KerasMNIST手寫辨識x深度學習的HelloWorld如何在Colab中透過KaggleAPI下載資料集
這是真的廣告
白金贊助
分享此文分享到Twitter(在新視窗中開啟)按一下以分享至Facebook(在新視窗中開啟)分享到LinkedIn(在新視窗中開啟)按一下即可以電子郵件傳送連結給朋友(在新視窗中開啟)按一下即可分享至Skype(在新視窗中開啟)分享到Reddit(在新視窗中開啟)分享到Tumblr(在新視窗中開啟)按一下以分享到Telegram(在新視窗中開啟)
Postnavigation
←如何在Colab中透過KaggleAPI下載資料集
免費Mac資料救援軟體!EaseUSDataRecoveryWizard幫你找回遺失的美好→
本著作由 SJ 製作,以創用CC姓名標示-禁止改作3.0Unported授權條款釋出。
聾子聽到啞巴說瞎子看到鬼!
Searchfor:
分類
App開發
iOS&Apple
Linux
Web開發
假文青聽音樂
其他雜項
區塊鏈
吃喝玩樂
宅系手作
敏捷開發
科技與科學
程式設計
系統管理
網際網路
自己動手做
自由軟體
軟體工程
雲端AI大數據
求分享求關注
友站連結
Holly和你
NiNi的好好
Booking訂房優惠
幣安註冊獲得100美金回饋
贊助廣告樂樂童鞋蝦皮領卷免運活動
延伸文章資訊
- 1機器學習之路: Caffe、Keras、scikit-learn 實戰| 天瓏網路書店
書名:機器學習之路: Caffe、Keras、scikit-learn 實戰,ISBN:7121321602,作者:阿布,出版社:電子工業出版社,出版日期:2017-08-01,分類:DeepL...
- 2Day 24:機器學習永遠不會跟你講錯-- Keras 除錯技巧 - iT 邦幫忙
- 3Keras 中文文档: 主页
Keras,Python 深度学习库中文文档。 ... 如果你在以下情况下需要深度学习库,请使用Keras:. 允许简单而快速的原型设计( ... Keras 是为人类而不是为机器设计的API。
- 4Keras 教學- 機器學習與類神經網路 - Soul & Shell Blog
Keras 是近年火紅的Machine Learning 函式庫,也是一個開源專案,透過Python 實做的深度學習高階API 函式庫。採用MIT License,主要作者維護者是Google ...
- 5精通機器學習:使用Scikit-Learn, Keras與TensorFlow 第二版
書名:精通機器學習:使用Scikit-Learn, Keras與TensorFlow 第二版,原文名稱:Hands-on Machine Learning with Scikit-Learn, ...