1. 程式人生 > >Neural Networks(神經網路)

Neural Networks(神經網路)

神經網路基本原理:

這裡寫圖片描述

人類一向善於從大自然中尋找啟發,並做出必要的改進來滿足某種需要。而人類本身就有很多不可思議的事情,比如大腦。機器學習,學習學習,參考人類本身的學習就是對所見的事物一步一步的總結,一層一層的抽象,而大腦的神經-中樞-大腦的工作過程或許是一個不斷迭代,不斷抽象的過程,從原始的訊號,做低階的抽象,逐漸向高階抽象迭代。

感知機中,它採用了多個輸入單元來抽象,但是學習能力非常有限,無法解決非線性可分的問題,雖然SVM延伸了核技術解決了這一點,但是實際上利用多層的感知機(Multi-layer Perception)也能完成,不過雖然是多層,其實是隻有一層隱層節點的淺層模型。比如很多的分類,迴歸的學習方法都是淺層的演算法,在於有限的樣本和計算單元情況下對複雜的函式的表達能力有限,泛化能力不佳,計算量大。所以簡單的多層網路的學習規則肯定是不夠的,類比大腦產生更強大的演算法是必要的。

這裡寫圖片描述

正如一個感知機一樣,它有多個輸入,不過這些輸入可以取0~1的任何值而不是僅僅0,1。改進原先的啟用函式為Sigmoid函式: σ ( z ) = 1 1

+ e z \sigma(z)=\frac{1}{1+e^{-z}}

這裡寫圖片描述

**為什麼用Sigmoid?**包括改進前的啟用函式也是一樣,都是引入非線性變換函式便於我們的“分類”。而且它的好處在於求導後的影象如下,當輸入為 0 時,sigmoid 函式的導數達到最大值 0.25;當輸入越偏離 0 時,sigmoid 函式的導數越接近 0,能過避免一些梯度的問題。其實使用不同的啟用函式最大的變化只是求偏導時某些值的改變,事實證明這樣做能夠簡化計算,至於其他的啟用函式在下面會再次總結。
在這裡插入圖片描述

而正如模擬生物神經網路,當神經元“興奮”時就會向其相連的神經元傳送某些化學物質去改變相連神經元的電位,而且如果電位超過某個閾值(threshold),神經元將就會被啟用。事實上,不考慮它是否真的模擬了生物神經網路,只需將一個神經網路視為包含了許多引數的數學模型,由若干個函式相互巢狀即可。採用Sigmoid做啟用函式(activation function),可以構建一個多層感知機,由許多邏輯單元按照不同層級組織起來,每一層的輸出變數都是下一層的輸入變數:
在這裡插入圖片描述
@@@實際上多層神經元是由多個線性存在級聯產生的,由低階的特徵逐步擴充套件至更抽象的描述,最終再得到想要的目標結果。
這裡寫圖片描述

其中x1,x2,x3是輸入單元(input units),將原始資料輸入給它們。a1,a2,a3是中間單元,負責處理資料,然後呈遞到下一層,最後是輸出單元,它負責計算h(x)。然後與感知機類似,可以算出 a 1 ( 2 ) = σ ( w 11 ( 1 ) x 1 + w 12 ( 1 ) x 2 + w 13 ( 1 ) x 3 + b 1 ( 1 ) ) a_1^{(2)}= \sigma(w_{11}^{(1)}x_1 + w_{12}^{(1)}x_2 + w_{13}^{(1)}x_3 + b_1^{(1)})
a 2 ( 2 ) = σ ( w 21 ( 1 ) x 1 + w 22 ( 1 ) x 2 + w 23 ( 1 ) x 3 + b 2 ( 1 ) ) a_2^{(2)}= \sigma(w_{21}^{(1)}x_1 + w_{22}^{(1)}x_2 + w_{23}^{(1)}x_3 + b_2^{(1)})
a 3 ( 2 ) = σ ( w 31 ( 1 ) x 1 + w 32 ( 1 ) x 2 + w 33 ( 1 ) x 3 + b 3 ( 1 ) ) a_3^{(2)}= \sigma(w_{31}^{(1)}x_1 + w_{32}^{(1)}x_2 + w_{33}^{(1)}x_3 + b_3^{(1)})
計算結果做下一次的輸入,然後可得:
h W , b ( x ) = σ ( w 11 ( 2 ) a 1 ( 2 ) + w 12 ( 2 ) a 2 ( 2 ) + w 13 ( 2 ) a 3 ( 2 ) + b 1 ( 2 ) ) h_{W,b}(x)= \sigma(w_{11}^{(2)}a_1^{(2)} + w_{12}^{(2)}a_2^{(2)} + w_{13}^{(2)}a_3^{(2)} + b_1^{(2)})
機器學習老套路,此時需要一個損失函式來微調,常見的均方誤差: J ( W , b , x , y ) = 1 2 h W , b ( x ) y 2 2 J(W,b,x,y) = \frac{1}{2}||h_{W,b}(x)-y||_2^2
然後基於梯度下降策略,對引數們進行一層一層的誤差逆傳遞(Error BackPropagation,BP)更新引數。
W l = W l α i = 1 m δ i , l ( a i , l 1 ) T W^l = W^l -\alpha \sum\limits_{i=1}^m \delta^{i,l}(a^{i, l-1})^T
b l = b l α i = 1 m δ i , l b^l = b^l -\alpha \sum\limits_{i=1}^m \delta^{i,l}

相關推薦

Neural Networks神經網路

神經網路基本原理: 人類一向善於從大自然中尋找啟發,並做出必要的改進來滿足某種需要。而人類本身就有很多不可思議的事情,比如大腦。機器學習,學習學習,參考人類本身的學習就是對所見的事物一步一步的總結,一層一層的抽象,而大腦的神經-中樞-大腦的工作過程或許是一個不斷迭代,不斷抽象的

NNsNeural Networks神經網路和Polynomial Regression多項式迴歸等價性之思考,以及深度模型可解釋性原理研究與案例

1. Main Point 0x1:行文框架 第二章:我們會分別介紹NNs神經網路和PR多項式迴歸各自的定義和應用場景。 第三章:討論NNs和PR在數學公式上的等價性,NNs和PR是兩個等價的理論方法,只是用了不同的方法解決了同一個問題,這樣我們就形成了一個統一的觀察視角,不再將深度神經網路看成是一

樹莓派3 安裝tensorflow1.9.0神經網路

            樹莓派3  安裝tensorflow1.9.0(神經網路)   一、首先檢視python的版本,是否為python 3.5 python -V 如果是python2 或其它版本的,

Coursera deeplearning.ai 深度學習筆記1-4-Deep Neural Networks-深度神經網路原理推導與程式碼實現

在掌握了淺層神經網路演算法後,對深度神經網路進行學習。 1. 原理推導 1.1 深度神經網路表示 定義:L表示神經網路總層數,上標[l]代表第l層網路,n[l]代表第l層的節點數,a[l]

Effective Use ofWord Order for Text Categorization with Convolutional Neural Networks閱讀理解

一篇公開在2014年的文章,從現在的角度來看這篇文章的話,我們發現作者提出的方法很難算是主流方法,但在當時也有一定的啟發意義。這裡我們就簡單介紹一下這篇文章。本文提出了將CNN直接應用於高維度的文字資料上,為我們提供了兩者CNN網路Seq-CNNAs a running to

UVa 1590 IP NetworksIP 網路

Alex is administrator of IP networks. His clients have a bunch of individual IP addresses and he decided to group all those IP addresses into the smalle

Convolution Neural Networks卷積神經網路大家族

CNN原理: 受哺乳動物視覺系統的結構啟發,人們引入了一個處理圖片的強大模型結構,後來發展成了現代卷積網路的基礎。所謂卷積引自數學中的卷積運算: S

卷積神經網路Convolutional Neural Networks,CNNS/ConvNets

       卷積神經網路非常類似於普通的神經網路:它們都是由具有可以學習的權重和偏置的神經元組成。每一個神經元接收一些輸入,然後進行點積和可選的非線性運算。而整個網路仍然表示一個可微的得分函式:從原始的影象畫素對映到類得分。在最後一層(全連線層)也有損失函

Self-Normalizing Neural Networks(自歸一化神經網路閱讀筆記

Abstarct:    針對FNNs(feed-forward neural networks)的層數都比較淺的情況,作者提出了SNNs(自標準化神經網路)的概念,SNNs可以使得網路更深,探索高層的抽象特徵。另外不像bn的強制每層歸一化,SNNs可以自動收

卷積神經網路學習筆記——Siamese networks孿生神經網路

完整程式碼及其資料,請移步小編的GitHub地址   傳送門:請點選我   如果點選有誤:https://github.com/LeBron-Jian/DeepLearningNote   在整理這些知識點之前,我建議先看一下原論文,不然看我這個筆記,感覺想到哪裡說哪裡,如果看了論文,還有不懂的,正好這篇部落

吳恩達機器學習第5周Neural NetworksCost Function and Backpropagation

and div bsp 關於 邏輯回歸 info src clas 分享 5.1 Cost Function 假設訓練樣本為:{(x1),y(1)),(x(2),y(2)),...(x(m),y(m))} L = total no.of layers in network

DeepTracker: Visualizing the Training Process of Convolutional Neural Networks對卷積神經網絡訓練過程的可視化

training ces ini net mini 個人 src works con \ 裏面主要的兩個算法比較難以贅述,miniset主要就是求最小公共子集。(個人認為)DeepTracker: Visualizing the Train

用卷積神經網路和自注意力機制實現QANet問答網路

歡迎大家關注我們的網站和系列教程:http://www.tensorflownews.com/,學習更多的機器學習、深度學習的知識! 在這篇文章中,我們將解決自然語言處理(具體是指問答)中最具挑戰性但最有趣的問題之一。我們將在Tensorflow中實現Google的QANet。就像它

深度學習筆記——神經網路和深度學習淺層神經網路

1.神經網路概覽 神經網路的結構與邏輯迴歸類似,只是神經網路的層數比邏輯迴歸多一層,多出來的中間那層稱為隱藏層或中間層。從計算上來說,神經網路的正向傳播和反向傳播過程只是比邏輯迴歸多了一次重複的計算。正向傳播過程分成兩層,第一層是輸入層到隱藏層,用上標[1]來表示;第二層是隱藏層到輸出層,用上標

什麼是pytorch3神經網路(翻譯)

神經網路 torch.nn 包可以用來構建神經網路。 前面介紹了 autograd包, nn 依賴於 autograd 用於定義和求導模型。 nn.Module 包括layers(神經網路層), 以及forward函式 forward(input),其返回結果 output. 例如我們來看一個手寫數字的

機器學習筆記:TensorFlow實戰二深層神經網路

1 - 深度學習與深層神經網路 深度學習的精確定義為:“一類通過多層非線性變換對高複雜性資料建模演算法的集合” 因此,多層神經網路有著2個非常重要的特性 多層 非線性 1.1 - 線性模型的侷限性 線上性模型中,模型的輸出為輸入的加權和,假設一

DL4J中文文件/模型/RNN迴圈神經網路

DL4J中的迴圈神經網路 本文概述了在DL4J中如何使用迴圈神經網路的具體訓練特徵和實用性。本文假定對迴圈神經網路及其使用有一定了解,而不是對遞迴神經網路的介紹,並且假定你對它們的使用和術語有一些熟悉。 內容 基礎:資料和網路配置 RNN訓練特徵 通過時間截

Python基於K-均值、RLS演算法實現RBF神經網路神經網路與機器學習 第五章 計算機實驗

1、生成資料集 class moon_data_class(object): def __init__(self,N,d,r,w): self.N=N self.w=w self.d=d self.r=r

機器學習筆記十二:TensorFlow實戰四影象識別與卷積神經網路

1 - 卷積神經網路常用結構 1.1 - 卷積層 我們先來介紹卷積層的結構以及其前向傳播的演算法。 一個卷積層模組,包含以下幾個子模組: 使用0擴充邊界(padding) 卷積視窗過濾器(filter) 前向卷積 反向卷積(可選) 1.1

第五週反向神經網路-【機器學習-Coursera Machine Learning-吳恩達】

目錄     代價函式     反向傳播     神經網路總結 1 代價函式 2 反向傳播演算法——讓代價函式最小化的演算法讓代價函式最小化,利用ma