[讀書筆記]Deep learning 深度學習必讀:Keras 大神帶你用 ...

文章推薦指數: 80 %
投票人數:10人

[讀書筆記]Deep learning 深度學習必讀:Keras 大神帶你用Python 實作Part2 ... 可以學習到的pattern具平移不變性(translation invariant):在影像的 ... GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWrite[讀書筆記]Deeplearning深度學習必讀:Keras大神帶你用Python實作Part2Chapter5電腦視覺的深度學習卷積神經網路mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.com可以學習到的pattern具平移不變性(translationinvariant):在影像的右下角學習到的某個pattern,卷積神經網路可以在任何位置識別這樣的pattern。

可以學習到pattern的空間層次結構(spatialhierarchiesofpatterns):卷積神經網路能夠有效地學習越來越複雜和抽象的視覺概念。

卷積層的兩個關鍵參數及其他參數從輸入採樣的區塊大小:也就是掃描窗格的大小,通常是3X3或5X5。

輸出特徵圖的深度:也就是卷積層的過濾器數量。

填補(padding):如果要取得和輸入相同維度的輸出特徵圖,可以設定padding為same。

預設值是valid為不用填補。

步長(stride):設定窗格滑動的距離。

預設值是1。

最大池化MaxPooling的好處利於學習特徵的空間層次結構減少參數量,降低overfitting減少overfittng並提升神經網路的準確率的三種技術資料擴增法(dataaugmentation)預先訓練神經網路的特徵萃取法(featureextractionwithapretrainednetwork)微調預先訓練神經網路法(fine-tuningapretrainednetwork)以少量資料集從頭訓練一個卷積神經網路程式碼mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.com使用預先訓練的卷積神經網路及微調程式碼mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.com視覺化呈現卷積神經網路學習的方法mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.com視覺化中間層convnet的輸出(中間啟動函數的輸出):這有助於理解convnet是如何一層一層的轉化資料,以及對過濾器的含意有一個概念。

視覺化卷積神經網路過濾器:用於準確理解卷積神經網路中,每個過濾器所要接受的視覺pattern或概念。

視覺化類別激活熱圖(heatmapsofclassactivation):有助於了解影像的哪些部分被識別為某個類別,讓你定位影像中的物件。

Chapter6文字和序列資料的深度學習文件資料的預處理mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.com常用的分詞方法將文件資料拆解為單字,並將每個單字轉換為一個向量。

將文件資料拆解為字元,並將每個字元轉換為一個向量。

取n個的文字或字元,組成n元語法(n-grams),然後將每個n元語法轉換為向量。

(適用於輕量、淺層文字資料處理模型)Token轉換成向量的方法token的one-hotencodingtoken嵌入法(tokenembedding,如果是專門用於文字資料,就稱為文字嵌入法wordembedding,是低維度的浮點數向量)token的one-hothashingtrick,是one-hotencoding的變體,主要優點是不需要維護一個完整、明確的token字典,如此可以節省記憶體並允許在線編碼,但缺點是可能發生雜湊碰撞(hashcollisions),及兩個不同的token可能導致相同的雜湊值。

當雜湊空間的維度遠大於被雜湊的tokens總數時,雜湊碰撞的可能性就會隨之降低。

建立文字嵌入向量的方法在訓練模型時使用Embeddinglayer同時學習文字嵌入向量。

這種方法和學習神經網路權重的方式相同。

直接用其他機器學習模型已訓練好的文字嵌入向量。

這方式稱為預先訓練的文字嵌入法(pretrainedwordembedding)。

著名的有Word2vec和GloVe。

循環神經網路(recurrentneuralnetwork,RNN)是透過一個持續與過去資訊有相關的狀態(state)來迭代處理序列資料。

mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.comKeras提供的循環層有SimpleRNN、LSTM和GRU。

SimpleRNN理論上應該能夠在時間點t保留有關之前時間點看到的資訊,但實務上,這種長期依賴性是不可能學習的,這是由於存在有梯度消失問題。

LSTM是SimpleRNN的改良版,增加了一種跨多個時間點乘載資訊的方法,解決梯度消失問題。

GRU是LSTM的簡化版,執行成本較低,但模型的表示能力比較差。

三種改善循環神經網路性能和普適能力的進階技術mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.com循環丟棄(Recurrentdropout):這是一種特殊的內建方法,使用丟棄法來解決循環層中過度配適的問題。

正確的丟棄法應該在每個步驟(時間點)中都使用相同的丟棄遮罩(相同的剔除單元pattern),而不是隨著時間點的增加而隨機變化的丟棄遮罩。

堆疊循環層(Stackingrecurrentlayers):增加神經網路的轉換表示能力(但將付出更高的運算成本為代價)雙向循環層(Bidirectionalrecurrentlayers):以不同方式向循環神經網路提供相同的資訊,進而提高準確度並減少神經網路的遺忘問題。

在某些特定任務上的表現比一般RNN更好,尤其是自然語言處理方面。

使用1D卷積神經網路進行序列資料處理:相較於循環神經網路,1D卷積神經網路有更便宜的計算成本。

在某些任務上可用來取代RNN。

缺點是對於有順序性的資料不敏感,可以在RNN之前使用1D卷積神經網路作為預先處理步驟,以縮短序列資料並萃取資料特徵,再送給RNN進行處理。

mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.comChapter7進階深度學習的最佳實作方式Keras函數式API(functionalAPI)mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.com可以實現多輸入模型、多輸出模型和圖形結構模型等。

多輸入模型通常在神經網路中某些節點上會將多個輸入合併入到一個層,合併的方式可能包括相加(add)或串接(concatenate)。

多輸出模型需要為神經網路的不同輸出指定不同的損失函數來計算損失值。

但由於梯度下降要求純量最小化,因此必須將這些損失值結合成單一數值才能訓練模型,而結合不同損失值最簡單的方法就是全部加起來。

如果有非常不平衡的損失會導致模型優先針對最大損失的任務進行優化,而犧牲了其他任務。

為了解決這個問題,可以在compile()中加入loss_weights參數。

層的有向無環圖(DirectedAcyclicGraphs)所謂的無環(acyclic)表示這些圖形不能自成循環。

有幾個常見的神經網路被實作成圖形結構,如Inception模組和殘差連接。

層的權重共享將模型作為層:將模型A放到另一個模型B之中來使用,也就是可以將A模型視為一個"更大的層"。

在訓練期間使用回呼(callbacks)來對模型進行操作mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.com回呼是呼叫fit()方法時傳遞給模型的一個物件,並且可在訓練期間由模型在各個節點呼叫。

它可以檢視模型狀態及其表現的所有相關資料,並且可執行各類操作。

以下是一些回呼的操作:模型檢查點(modelcheckpoint):在訓練期間保存模型在不同時間點的權重。

早期停止(earlystopping):當驗證損失不在改善時中斷訓練,會自動保存訓練期間獲得的最佳模型。

在訓練期間動態調整某些參數的值,例如優化器的學習速率。

在訓練期間記錄訓練和驗證指標,或在模型更新時視覺化模型已學習到的表示法(權重)。

TensorBoard:TensorFlow視覺化框架在訓練期間視覺化呈現監控指標視覺化模型架構視覺化啟動函數結果和梯度變化的直方圖以3D方式探索嵌入向量批次正規化(BatchNormalization)運作原理是在訓練期間依所檢視到批次量資料的均值和變異數,持續保持內部的一個指數移動平均值。

主要影響在於協助梯度傳遞,很像殘差連接,索以允許建構更深的神經網路。

通常在卷積或密集連接層之後使用。

另外有改良版的Batchrenormalization可以參考。

深度可分離卷積(depthwiseseparableconvolution)替代一般卷積層Conv2D,可以使模型更輕量、更快,並使任務的執行成效提升幾個百分點。

在通過逐點卷積(1X1卷積)前,深度可分離卷積層獨立地在其輸入的每個channel上執行空間卷積(3X3卷積)。

這相當於將空間特徵的學習與channel特徵的學習分開,使用的前提是同一個channel的輸入資料的空間位置資訊具有高度相關性,但不同的channel之間是相當獨立的,不具相依性。

超參數優化自動化過程如下:選擇一組超參數(自動)。

建構對應的模型。

以訓練資料加以訓練,並測量驗證資料的最終成效。

選擇要嘗試的下一組超參數(自動)。

重複進行。

最終,測量測試資料的成效。

更新超參數非常具有挑戰性,必須考慮以下因素:計算回饋訊號的成本可能非常昂貴:需要在資料集上從頭開始創建和訓練新模型。

超參數空間通常由離散決策組成,因此不是連續與可微分的。

因此,通常無法在超參數空間中執行梯度下降。

相反,必須依賴非梯度優化技術,這種技術自然遠不如梯度下降。

另外在大規模自動超參數優化時,要記住的一個重要問題是驗證資料的過度適配問題。

模型集成(modelensembling)將多個不同模型的預測結果整合起來,以產生更好的預測。

模型集成建立在一項假設基礎上,就是獨立訓練的各個不同優秀模型可能由於不同的原因而得到部分好的結果。

模型集成可以得到好成效的關鍵是模型的多樣性(diversity)。

Chapter8生成式深度學習使用LSTM產生文字資料:使用softmaxtemperature做為取樣策略。

mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.comDeepDream:一種藝術圖片修改技術,使用反向卷積神經網路。

mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.com神經風格轉換:將參考圖片的風格應用於目標圖片,同時保留目標圖片的內容。

藉由定義一個損失函數來指定想要達成的目標,並最大限度地減少損失。

mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.com變分自編碼器(VariationalAutoencoders,VAE):導出高度結構化、連續性的潛在表示法。

特別適合於運用概念向量進行圖像編輯的任務。

mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.com生成對抗神經網路(GenerativeAdversarialNetwork,GAN):藉由強制讓生成圖像(假)與真實圖片(真)在統計上幾乎無法區分的條件下,進而生成相當逼真的合成圖像。

GAN由兩部分組成,生成器(generator)和鑑別器(discriminator)。

GAN是一個優化最小化不固定的系統,也就是每次經過梯度下降後,損失函數的趨勢都可能會改變,這是一個動態系統。

mimiachiu/Deep-Learning-with-Python-BookPermalinkDismissGitHubishometoover50milliondevelopersworkingtogethertohostandreviewcode,manage…github.comMorefromMiMiAChiuFollowLovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstartedMiMiAChiu11FollowersFollowMorefromMediumMinalChatterjeeTilltheofferlasts!Tiger.TradeCopyMetaverse:justHypeorHeretoStay.MonodramaRodiaFourAnxiouspeopleHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable



請為這篇文章評分?