1. 程式人生 > >【Stanford CNN課程筆記】神經網路入門

【Stanford CNN課程筆記】神經網路入門

這篇文章非常適合初學者去學!小編只是覺得題文不那麼相符,故改變了題目。

下面這個博文的網址是:http://blog.csdn.net/elaine_bao/article/details/50810598?locationNum=3&fps=1  下面就是原文啦~~  

本課程筆記是基於今年斯坦福大學Feifei Li, Andrej Karpathy & Justin Johnson聯合開設的Convolutional Neural Networks for Visual Recognition課程的學習筆記。目前課程還在更新中,此學習筆記也會盡量根據課程的進度來更新。

今天終於可以開始講神經網路啦~~

1.一個簡單的介紹

我們先把那些關於人腦、神經什麼的東西拋到一邊,來簡單地理解下神經網路。在linear classification那一章,我們是通過計算輸入圖片屬於不同類別的score來判斷它到底屬於哪個類的,即s=Wx,其中W是引數矩陣,x是由輸入影象的所有pixel組成的一個特徵列向量。比如以CIFAR-10為例的話x就是[3072*1]的列向量,W是[10*3072]的矩陣,因此輸出是10個類別得分。 
那麼在神經網路中,計算score的方法有所不同:s=W2max(0,W1x)。其中W1也是一個引數矩陣,他可以把原始影象特徵x轉變成比如說100維的中間層向量特徵 (則此時W1應為[100*3072]維)。函式max(0,~)是一個非線性函式,對矩陣中小於0的元素置零而保留大於0的元素值不變。這個非線性函式我們有多種選擇(後面會講),不過這一個是比較常用的,簡單地通過0閾值來啟用元素值。最後,W

2則應該是一個[10*100]的矩陣,這樣我們最後還是得到了10個類別得分。其中W1W2就是通過之前所說的隨機梯度下降法學習到的,其中用到反向傳播演算法來計算每一步更新的梯度哦(不瞭解這部分內容要去戳一下我前面的課程筆記了啊)。注意非線性函式部分(也稱為啟用函式),是神經網路中很重要的一個部分,但是即使我們把非線性函式部分去掉,把W1x直接和W2相乘我們也可以得到10個類別得分,但是這樣就少了一些擾動(wiggle),影響泛化效能等。 
同樣的,3層的神經網路會長這個樣子:s=W3max(0,W2max(0,W1x)),就是這麼簡單!其中W1W2W3都是學習得到的引數。中間層特徵向量的維度是hyperparameter,我們在後面會講怎麼設定他們。 
接下來讓我們再用人腦神經元之類的東西來解釋上面所說的神經網路吧。

2. 建模神經元

神經網路這一領域最早來源於對生物神經系統的建模,而後慢慢演變成一種工程的方法,並且在機器學習中取得了很好的效果。我們這邊只簡短地介紹和我們相關的生物學系統的知識。

2.1 神經元的啟用和連線

人腦中基本的計算單元叫做神經元(neuron).人的神經系統中大約包含860億個這樣的神經元,並且他們之間通過大約10^14~10^15這麼多的突觸(synapses)連線。下圖就顯示了一個神經元和它抽象出的數學模型。每個神經元會從它們的樹突(dendrites)獲得輸入訊號,然後再將輸出訊號傳給它唯一的軸突(axon)。軸突再通過突觸和其他神經元的樹突相連。 
在神經元的數學模型中,軸突所攜帶的訊號(例如:x0)通過突觸進行傳遞,由於突觸的強弱不一,假設我們以w0表示,那麼我們傳到下一個神經元的樹突處的訊號就變成了w0x0。其中突觸強弱(引數w)是可學的,它控制了一個神經元對另一個神經元影響的大小和方向(正負)。然後樹突接收到訊號後傳遞到神經元內部(cell body),與其他樹突傳遞過來的訊號一起進行加和,如果這個和的值大於某一個固定的閾值的話,神經元就會被啟用,然後傳遞衝激訊號給樹突。在數學模型中我們假設傳遞衝激訊號的時間長短並不重要,只有神經元被啟用的頻率用於傳遞資訊。我們將是否啟用神經元的函式稱為啟用函式(activation function f),它代表了軸突接收到衝激訊號的頻率。以前我們比較常用的一個啟用訊號是sigmoid function σ,因為它接收一個實值的訊號(即上面所說的加和的值)然後將它壓縮到0-1的範圍內。我們在後面會介紹更多的啟用函式。 
這裡寫圖片描述 
關於上述傳播過程(前向傳播),程式碼如下:

class Neuron(object):
  # ... 
  def forward(inputs):
    """ assume inputs and weights are 1-D numpy arrays and bias is a number """
    cell_body_sum = np.sum(inputs * self.weights) + self.bias
    firing_rate = 1.0 / (1.0 + math.exp(-cell_body_sum)) # sigmoid activation function
    return firing_rate
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.2 一個神經元就是一個線性分類器

神經元的上述前向傳播過程從形式上看著很熟悉。我們之前線上性分類器中看到,分類器具有判斷score好壞的能力,在神經元中也是一樣,我們通過啟用與否來得到神經元的輸出,再通過一個恰當的損失函式就能將一個神經元轉化成線性分類器了。 
Binary Softmax classifier. 比如說,我們可以把σ(iwixi+b)看成是某類的概率P(yi=1|xi;w),那麼另一類的概率則是

相關推薦

Stanford CNN課程筆記神經網路入門

這篇文章非常適合初學者去學!小編只是覺得題文不那麼相符,故改變了題目。 下面這個博文的網址是:http://blog.csdn.net/elaine_bao/article/details/50810598?locationNum=3&fps=1  下面

學習筆記 神經網路簡介

之前我們其實已經寫過了,這次既然原文單獨列了一章,我們也來再寫一次好了。原文希望我們把RMSE壓到110以下,我這裡驗證集的RMSE 115左右,因隨機數種子最低降到過112左右,在設定好種子的情況下seed(1) 驗證集的rmse在116左右。 上次我們用xs1,xs2,

深度學習基礎1神經網路基礎--邏輯迴歸

  本博文根據 coursera 吳恩達 深度學習整理。作為理解神經網路的基礎。 一、知識點        深度學習本質上是對資料的一種擬合。使用非線性的函式集合作為模型,對樣本對進行損失最小的模擬。首先理解單個神經元的作用和原理,可以從

深度學習基礎-09神經網路-機器學習深度學習中~Sigmoid函式詳解

目錄 Sigmoid函式常常被用作神經網路中啟用函式   雙曲函式tanh(x) Logistic函式  拓展對比 Sigmoid函式常常被用作神經網路中啟用函式   函式的基本性質: 定義域:(−∞,+∞

深度學習基礎-07神經網路演算法(Neural Network)上--BP神經網路基礎理論

目錄 1 起源 2 多層向前神經網路(Multilayer Feed-Forward Neural Network) 3 設計神經網路  4 交叉驗證方法 5 BP神經網路演算法 1 起源 以人腦中的神經網路為啟發,出現過不同的版本 最著名的演算法是19

課程筆記opencv+tensorflow入門人工智慧影象處理(2018-4-19)

計算機視覺(opencv+tensorflow) 1.1 mac環境搭建 1、下載安裝anaconda 2、下載安裝tensorflow+配置opencv 3、下載安裝notebook Anaconda中搭建環境都是使用Environment進行搭

安全牛學習筆記python使用入門

信息安全 security+ python 第一講 python使用入門1.python版本可以分為2.x和3.xPython3.x缺點不向下兼容2.使用python的優點:語法簡潔,可讀性高,開發效率高,無需編譯,移植性好等等3.使用python可以做的事情系統編程,用戶圖形接口,interne

機器學習筆記20神經網路(鏈式求導和反向傳播)

【參考文獻】 【1】《面向機器智慧的TensorFlow實踐》4.7 假設存在網路結果如下 各個層輸出定義 L1=sigmoid(w1⋅x)L_1 = sigmoid(w_1 \cdot x)L1​=sigmoid(w1​⋅x) L2=sigmoid(w2⋅L

機器學習筆記21神經網路(多層感知機)

【參考資料】 【1】《深度學習》 花書 6.1 亦或問題 由於單層感知機相當於在一個空間增加了一個超平面進行分類,那麼對於像亦或問題這樣的情況則無法完成。 因此在多層感知機中增加了一個隱藏層,即一個啟用函式。現代神經網路最常用的啟用函式是整流線性單元,ReL

機器學習筆記19神經網路(單層感知機)

【參考資料】 【1】《人工神經網路教程》 【2】《matlab 2015b 神經網路技術》 基本概念 單層感知器可以看成一個線性累加器和一個二值化閾值元器件,通常會在累加一個偏移量。由公式表達為:oj=sgn(∑i=1nwijxi+b)o_j= sgn(\s

機器學習筆記22神經網路(卷積神經網路)

【參考資料】 【1】《面向機器智慧的tensorflow實踐》 【2】Keras/example – mnist_cnn.py 【3】Keras中文文件 常用層 卷積層 卷積理解就是之前影象處理裡用作檢測邊緣、檢測角點的運算元,例如: 輸入: [1234] \

機器學習筆記23神經網路(RNN)

基礎迴圈神經網路 迴圈神經網路(RNN)是一個由神經元和權值構成的有向圖,它的當前狀態與前一時刻的狀態和當前輸入決定,因此當前狀態也被稱為工作記憶。迴圈神經網路在時間序列上展開後如上圖所示,用於解決序列化的問題,諸如語音識別、語音合成、文字生成。 例子:利

機器學習筆記24神經網路(LSTM)

梯度消失原因 TBD 模型定義 LSTM 長短期記憶網路是一種特殊的RNN,為解決梯度爆炸和梯度消失的問題,LSTM將RNN中普通的神經元替換成了擁有少量記憶的LSTM單元。 第一步: 決定丟棄資訊 第二步: 確定更新資訊 第三步: 更新狀態 第四

深度學習神經網路的優化方法

前言 \quad\quad 我們都知道,神經網路的學習目的是找到使損失函式的值儘可能小的引數,這是一個尋找最優引數的

深度學習神經網路的學習過程

神經網路的學習 \quad\quad 線上性可分的與非門、或門的感知機模型中,我們可以根據真值表人工設定引數來實現,

神經網路入門用JAVA實現感知器演算法

簡述 隨著網際網路的高速發展,A(AI)B(BigData)C(Cloud)已經成為當下的核心發展方向,假如三者深度結合的話,AI是其中最核心的部分。所以如果說在未來社會,每個人都必須要學會程式設計的話,那麼對於程式設計師來說,人工智慧則是他們所必須掌握的技術(科技發展真tm快)。 這篇文章介紹

機器學習神經網路DNN的正則化

和普通的機器學習演算法一樣,DNN也會遇到過擬合的問題,需要考慮泛化,之前在【Keras】MLP多層感知機中提到了過擬合、欠擬合等處理方法的問題,正則化是常用的手段之一,這裡我們就對DNN的正則化方法做一個總結。 1. DNN的L1&L2正則化 想到正則化,我們首先想到的就是L1正則化和L2正則化

電腦科學2005.12神經網路在生物資料中的應用

本文為英國倫敦大學(作者:Aristoklis.D. Anastasiadis)的博士論文,共184頁。 在分類問題中訓練神經網路,特別是當涉及生物資料時,是一項非常具有挑戰性的任務。到目前為止,已經提出了許多訓練演算法來改善神經網路的效能。一種流行的方法是使用批量學習,對每個權值

2014.10神經網路中的深度學習綜述

本綜述的主要內容包括: 神經網路中的深度學習簡介 神經網路中面向事件的啟用擴充套件表示法 信貸分配路徑(CAPs)的深度及其相關問題 深度學習的研究主題 有監督神經網路/來自無監督神經網路的幫助 FNN與RNN中用於強化學習RL

深度學習神經網路

原址:http://tieba.baidu.com/p/3013551686?pid=49703036815&see_lz=1# 我們先從迴歸(Regression)問題說起,要讓機器學會觀察並總結規律的言論。具體地說,要讓機器觀察什麼是圓的,什麼是方的,區分各種顏