訓練神經網路主要圍繞以下四個方面。
它們之間的關係如下圖所示:
神經網路的基本資料結構是層。層是乙個資料處理模組,將乙個或多個輸入張量轉換為乙個或多個輸出張量。有些層是無狀態的,但大多數的層是有狀態的,即層的權重。權重是利用隨機梯度下降學到的乙個或多個張量,其中包含網路的知識。
不同的張量格式與不同的資料處理型別需要用到不同的層。
你可以將層看作深度學習的樂高積木,keras 等框架則將這種比喻具體化。在keras 中,構建深度學習模型就是將相互相容的多個層拼接在一起,以建立有用的資料變換流程。這裡層相容性(layer compatibility)具體指的是每一層只接受特定形狀的輸入張量,並返回特定形狀的輸出張量。使用keras 時,你無須擔心相容性,因為向模型中新增的層都會自動匹配輸入層的形狀。
深度學習模型是層構成的有向無環圖。最常見的例子就是層的線性堆疊,將單一輸入對映為單一輸出。一些常見的網路拓撲結構如下:
網路的拓撲結構定義了乙個假設空間(hypothesis space)。機器學習的定義為:「在預先定義好的可能性空間中,利用反饋訊號的指引來尋找輸入資料的有用表示。」選定了網路拓撲結構,意味著將可能性空間(假設空間)限定為一系列特定的張量運算,將輸入資料對映為輸出資料。然後,你需要為這些張量運算的權重張量找到一組合適的值。
選擇正確的網路架構更像是一門藝術而不是科學。雖然有一些最佳實踐和原則,但只有動手實踐才能讓你成為合格的神經網路架構師。我們需要構建神經網路的詳細原則,也需要建立直覺,明白對於特定問題哪些架構有用、哪些架構無用。
一旦確定了網路架構,你還需要選擇以下兩個引數。
具有多個輸出的神經網路可能具有多個損失函式(每個輸出對應乙個損失函式)。但是,梯度下降過程必須基於單個標量損失值
。因此,對於具有多個損失函式的網路,需要將所有損失函式取平均,變為乙個標量值。
選擇正確的目標函式對解決問題是非常重要的。網路的目的是使損失盡可能最小化,因此,如果目標函式與成功完成當前任務不完全相關,那麼網路最終得到的結果可能會不符合你的預期。
幸運的是,對於分類、回歸、序列**等常見問題,你可以遵循一些簡單的指導原則來選擇正確的損失函式。只有在面對真正全新的研究問題時,你才需要自主開發目標函式。
機器學習,深度學習,神經網路,深度神經網路
先來說一下這幾者之間的關係 人工智慧包含機器學習,機器學習包含深度學習 是其中比較重要的分支 深度學習源自於人工神經網路的研究,但是並不完全等於傳統神經網路。所以深度學習可以說是在傳統神經網路基礎上的公升級。神經網路一般有輸入層 隱藏層 輸出層,一般來說隱藏層大於2的神經網路就叫做深度神經網路,深度...
深度學習 深度神經網路
神經網路是由乙個個神經元相互連線並按層次排列構成的,深度神經網路是有任意層的神經網路,這裡的深度是指層次的多,而不是神經元數量的多。有任意層,那麼就要有乙個迴圈來負責遍歷每一層進行計算。所以深度神經網路的計算形式,就必須要適應這個迴圈結構。我們先來說說神經元吧 對於多神經元神經網路,其實也是一樣的。...
Python深度學習 迴圈神經網路
rnn存在的問題 梯度較容易出現衰減或 bptt 控迴圈神經 絡 捕捉時間序列中時間步距離較 的依賴關係 重置 有助於捕捉時間序列 短期的依賴關係 更新 有助於捕捉時間序列 期的依賴關係。長短期記憶long short term memory 遺忘門 控制上一時間步的記憶細胞 輸入門 控制當前時間步...