系列文章目錄
深度學習是什么
文章目錄
- 系列文章目錄
- 前言
- 一、神經網路的組成
- 二、什么是感知機
- 1.感知機的概念
- 2.感知機的數學表達
- 3.感知機的簡單應用實作
- 4.簡單感知機的代碼實作
- 5.引入偏置的概念,讓感知機更靈活
- 6.偏置實作
- 三、復雜感知機系統建立
- 總結
前言
在上一章中我們給大家介紹了什么是深度學習,以及深度學習與機器學習之間的關系,同時我們引出了深度學習中神經網路的概念,同時神經網路也將會是我們接下來進行深度學習學習的重要內容,從這章開始我便會帶領大家真正的開始學習深度學習,
一、神經網路的組成
神經網路其實源自生物學中人腦神經元的抽象從而建立起的模型結構,他用數學邏輯的方式模仿了人腦間神經元的結構和互動模式,也就是資訊在大腦中的接受,加工,傳遞,保存的方式,從而使得計算機可以像人一樣的學習、思考和解決問題,
所以神經網路領域最重要的一步就是從生物神經元到機器神經元的轉變和實作,

這就提出了我們深度學習第一站——感知機的概念,
二、什么是感知機
1.感知機的概念
感知機(Perceptron)這一演算法最早是由美國學者Frank Rosenblatt在1957年提出的,但我們今天依舊要提這么老的演算法的原因是——感知機同時也是深度學習神經網路的起源演算法,因此學習感知機,能夠最平滑的讓毫無基礎的人理解神經網路的概念,也能讓有一定基礎的人隊網路的原理理解更近一步,
感知機描述的是一個能接收多個信號,輸出一個信號的結構,這里的信號可以是資料流也可以是電流,感知機能對這樣的流信號進行處理并整流成1/0信號,這樣也更符號我們計算機的操作習慣,

2.感知機的數學表達

wi分別是不同結點上的權重,w的數值越大說明這個結點的權重越大,也可以說是重要性越大,而y的輸出則取決于全部輸入結點的和,如果該和大于θ則輸出1,反之輸出0,
代碼如下(示例):
3.感知機的簡單應用實作
感知機最簡單的應用便是在邏輯電路領域了,比如各自門電路(與門,非門,與非門等等)的實作,
比如最簡單的與門:

如何用感知機來實作這樣的一個與門呢?
我們可以將感知機的引數設定為(w1,w2,θ)=(0.5,0.5,0.9)
將不同的X代入可得

輸出和我們的預想一樣,其實這樣就是簡單的實作了一個與門,所以說一個感知機的性質取決于他的Wi和θ,
可能大家都還不清楚實作這樣的一個東西有什么用?但其實計算機作為一個電器物件,他的內部邏輯全是依賴于這樣的邏輯實作,而不是我們人類的自然語言交流,所以對這種邏輯的復現是我們在計算機上實作復雜的模型的第一步,
大家還可以嘗試著實作更多的門電路(非門,或門……)通過調整W和θ,
4.簡單感知機的代碼實作
def AND_G(x1,x2):
# w1,w2,θ
w1,w2,theta = 0.5,0.5,0.9
tmp = x1*w1+x2*w2
return 1 if tmp>theta else 0
輸出結果:
print(AND_G(0,0))
print(AND_G(1,0))
print(AND_G(0,1))
print(AND_G(1,1))
'''
0
0
0
1
Process finished with exit code 0
'''
5.引入偏置的概念,讓感知機更靈活

想必有一定神經網路基礎的同學對偏置這個詞一定很熟悉,他一般被描述為b,平時我們都很理所當然的默許了他的存在,但是為什么需要這樣一個配置量呢?
只看公式上來分析,b值的引入可以決定神經元被激活的容易程度,從圖形上看,因為無論是感知機還是后面復雜的神經網路,其實都能轉換成坐標系的中的線性表示,用最簡單的一元一次線性方程來舉例,如果沒有偏置b的存在,那就限制了線必須是過原點的,那使很多分類問題變得例外的困難,面對一個極其簡單的問題可能需要極其復雜的權重設定,比如下圖:

6.偏置實作
def AND_G(x1,x2):
w1,w2,b,theta = 0.5,0.5,0.2,0.9
tmp = x1*w1+x2*w2+b
return 1 if tmp>theta else 0
print(AND_G(0,0))
print(AND_G(1,0))
print(AND_G(0,1))
print(AND_G(1,1))
運行結果:
0
0
0
1
Process finished with exit code 0
三、復雜感知機系統建立
通過上面的實體大家已經掌握了簡單的邏輯電路的實作方式,但一個感知機在邏輯電路上的應用是萬能的嗎?可以來看看下面的邏輯電路

這是一個異或門,其實可以通過坐標系證明通過一條直線是不可能分割0/1情況的,所以也就是說用一個感知機是無法實作這個異或門的,于是就引出了我們的多層感知機系統,
我們現在手頭實作的感知機電路有三個,分別是與門、非門和或門,那我們如何來拼搭出這樣一個異或門呢?

讓我們來理論證明一下這個電路是否可行!

看來我們的實驗沒問題,通過多個感知機的拼搭我們確實實作了這樣一個復雜邏輯電路,但我們深度學習最終是要應用到計算機上的,所以我們還要考慮一個演算法可行性,
接下來就讓我們來實作一下這個感知機系統,
#與門的方法我們前面已經實作,非門和或門是留給大家的任務,我這邊就不給出答案了
#有問題的同學可以私信我討論
def XOR_G(x1,x2):
return AND_G(NAND_G(x1,x2),OR_G(x1,x2))
運行程式:
print(XOR_G(0,0))
print(XOR_G(1,0))
print(XOR_G(0,1))
print(XOR_G(1,1))
得出結果
0
1
1
0
Process finished with exit code 0
再對我們的感知機示意圖進行一定的變形:

是不是突然感覺和我們前面提到的神經網路模型非常的像,這就是個最簡易的神經網路模型,
大家也可以試著進行更多的搭配與組合,來產生更多更有趣的判斷網路,實作對一些生活中簡單邏輯問題的解決,
總結
至此我們的第一個神經網路就搭建成功了,我們從最本源的感知機講起,通過邏輯電路的例子來一步步完善到一個初步的神經網路,但他只是對上了形狀,其實感知機通過這么多年的演變,人們對他進行了越來越多的優化,也讓其越來越兼備計算機科學和生物學上的特點,使機器真正的具備人工智能,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225342.html
標籤:其他
上一篇:語法分析實作--運算式決議
