
人工神經網絡(ANN),簡稱神經網絡,是一種模仿生物神經網絡的結構和功能的數學模型或計算模型。神經網絡由大量的人工神經元聯結進行計算。大多數情況下人工神經網絡能在外界信息的基礎上改變內部結構,是一種自適應系統?,F代神經網絡是一種非線性統計性數據建模工具,常用來對輸入和輸出間復雜的關系進行建模,或用來探索數據的模式。
人工神經網絡從以下四個方面去模擬人的智能行為:
物理結構:人工神經元將模擬生物神經元的功能
計算模擬:人腦的神經元有局部計算和存儲的功能,通過連接構成一個系統。人工神經網絡中也有大量有局部處理能力的神經元,也能夠將信息進行大規模并行處理
存儲與操作:人腦和人工神經網絡都是通過神經元的連接強度來實現記憶存儲功能,同時為概括、類比、推廣提供有力的支持
訓練:同人腦一樣,人工神經網絡將根據自己的結構特性,使用不同的訓練、學習過程,自動從實踐中獲得相關知識
神經網絡是一種運算模型,由大量的節點(或稱“神經元”,或“單元”)和之間相互聯接構成。每個節點代表一種特定的輸出函數,稱為激勵函數。每兩個節點間的連接都代表一個對于通過該連接信號的加權值,稱之為權重,這相當于人工神經網絡的記憶。網絡的輸出則依網絡的連接方式,權重值和激勵函數的不同而不同。而網絡自身通常都是對自然界某種算法或者函數的逼近,也可能是對一種邏輯策略的表達。
感知器相當于神經網絡的一個單層,由一個線性組合器和一個二值閾值原件構成:
構成ANN系統的單層感知器:
感知器以一個實數值向量作為輸入,計算這些輸入的線性組合,如果結果大于某個閾值,就輸出1,否則輸出‐1。
感知器函數可寫為:sign(w*x)有時可加入偏置b,寫為sign(w*x b)
學習一個感知器意味著選擇權w0,…,wn的值。所以感知器學習要考慮的候選假設空間H就是所有可能的實數值權向量的集合
算法訓練步驟:
1、定義變量與參數x(輸入向量),w(權值向量),b(偏置),y(實際輸出),d(期望輸出),a(學習率參數)
2、初始化,n=0,w=0
3、輸入訓練樣本,對每個訓練樣本指定其期望輸出:A類記為1,B類記為-1
4、計算實際輸出y=sign(w*x b)
5、更新權值向量w(n 1)=w(n) a[d-y(n)]*x(n),0<a<1
6、判斷,若滿足收斂條件,算法結束,否則返回3
注意,其中學習率a為了權值的穩定性不應過大,為了體現誤差對權值的修正不應過小,說到底,這是個經驗問題。
從前面的敘述來看,感知器對于線性可分的例子是一定收斂的,對于不可分問題,它沒法實現正確分類。這里與我們前面講到的支持向量機的想法十分的相近,只是確定分類直線的辦法有所不同??梢赃@么說,對于線性可分的例子,支持向量機找到了“最優的”那條分類直線,而單層感知器找到了一條可行的直線。
我們以鳶尾花數據集為例,由于單層感知器是一個二分類器,所以我們將鳶尾花數據也分為兩類,“setosa”與“versicolor”(將后兩類均看做第2類),那么數據按照特征:花瓣長度與寬度做分類。
運行下面的代碼:
#感知器訓練結果:
a<-0.2
w<-rep(0,3)
iris1<-t(as.matrix(iris[,3:4]))
d<-c(rep(0,50),rep(1,100))
e<-rep(0,150)
p<-rbind(rep(1,150),iris1)
max<-100000
eps<-rep(0,100000)
i<-0
repeat{
v<-w%*%p;
y<-ifelse(sign(v)>=0,1,0);
e<-d-y;
eps[i 1]<-sum(abs(e))/length(e)
if(eps[i 1]<0.01){
print("finish:");
print(w);
break;
}
w<-w a*(d-y)%*%t(p);
i<-i 1;
if(i>max){
print("max time loop");
print(eps[i])
print(y);
break;
}
}
#繪圖程序
plot(Petal.Length~Petal.Width,xlim=c(0,3),ylim=c(0,8),
data=iris[iris$Species=="virginica",])
data1<-iris[iris$Species=="versicolor",]
points(data1$Petal.Width,data1$Petal.Length,col=2)
data2<-iris[iris$Species=="setosa",]
points(data2$Petal.Width,data2$Petal.Length,col=3)
x<-seq(0,3,0.01)
y<-x*(-w[2]/w[3])-w[1]/w[3]
lines(x,y,col=4)
#繪制每次迭代的平均絕對誤差
plot(1:i,eps[1:i],type="o")
分類結果如圖:
這是運行了7次得到的結果。與我們前面的支持向量機相比,顯然神經網絡的單層感知器分類不是那么的可信,有些弱。
我們可以嘗試來做交叉驗證,可以發現交叉驗證結果并不理想。
盡管當訓練樣例線性可分時,感知器法則可以成功地找到一個權向量,但如果樣例不是線性可分時它將不能收斂。因此,人們設計了另一個訓練法則來克服這個不足,稱為delta法則。
如果訓練樣本不是線性可分的,那么delta法則會收斂到目標概念的最佳近似。
delta法則的關鍵思想是使用梯度下降來搜索可能權向量的假設空間,以找到最佳擬合訓練樣例的權向量。
我們將算法描述如下:
1、定義變量與參數。x(輸入向量),w(權值向量),b(偏置),y(實際輸出),d(期望輸出),a(學習率參數)(為敘述簡便,我們可以將偏置并入權值向量中)
2、初始化w=0
3、輸入樣本,計算實際輸出與誤差。e(n)=d-x*w(n)
4、調整權值向量w(n 1)=w(n) a*x*e(n)
5、判斷是否收斂,收斂結束,否則返回3
Hayjin證明,只要學習率a<2/maxeign, delta法則按方差收斂。其中maxeigen為x’x的最大特征值。故我們這里使用1/maxeign作為a的值。
我們還是以上面的鳶尾花數據為例來說這個問題。運行代碼:
p<-rbind(rep(1,150),iris1)
d<-c(rep(0,50),rep(1,100))
w<-rep(0,3)
a<-1/max(eigen(t(p)%*%p)$values)
max<-1000
e<-rep(0,150)
eps<-rep(0,1000)
i<-0
for(i in 1:max){
v<-w%*%p;
y<-v;
e<-d-y;
eps[i 1]<-sum(e^2)/length(e)
w<-w a*(d-y)%*%t(p);
if(i==max)
print(w)
}
得到分類直線:
相比感知器分類而言已經好了太多了,究其原因不外乎傳遞函數由二值閾值函數變為了線性函數,這也就是我們前面提到的delta法則會收斂到目標概念的最佳近似。增量法則漸近收斂到最小誤差假設,可能需要無限的時間,但無論訓練樣例是否線性可分都會收斂。
為了明了這一點我們考慮鳶尾花數據后兩類花的分類(這里我們將前兩類看做一類),使用感知器:
使用線性分類器:
但是要解釋的一點是,收斂并不意味著分類效果更好,要解決線性不可分問題需要的是添加非線性輸入或者增加神經元。我們以Minsky & Papert (1969)提出的異或例子為例說明這一點。
使用線性神經網絡,代碼與上面完全相同,略。
第一個神經元輸出:
權值: [,1] [,2] [,3]
[1,] 0.75 0.5 -0.5
測試: [,1] [,2] [,3] [,4]
[1,] 1 0 1 1
第二個神經元輸出:
權值: [,1] [,2] [,3]
[1,] 0.75 -0.5 0.5
測試: [,1] [,2] [,3] [,4]
[1,] 1 1 0 1
求解異或邏輯(相同取0,不同取1)有結果:(代碼xor(c(1,0,1,1),c(1,1,0,1)))
[1] FALSE TRUE TRUE FALSE
即0,1,1,0,分類正確。
最后再說一點,Delta規則只能訓練單層網絡,但這不會對其功能造成很大的影響。從理論上說,多層神經網絡并不比單層神經網絡更強大,他們具有同樣的能力。
回顧我們前面提到的感知器,它使用示性函數作為分類的辦法。然而示性函數作為分類器它的跳點讓人覺得很難處理,幸好sigmoid函數y=1/(1 e^-x)有類似的性質,且有著光滑性這一優良性質。我們通過下圖可以看見sigmoid函數的圖像:
Sigmoid函數有著計算代價不高,易于理解與實現的優點但也有著欠擬合,分類精度不高的特性,我們在支持向量機一章中就可以看到sigmoid函數差勁的分類結果。
BP (Back Propagation)神經網絡,即誤差反傳誤差反向傳播算法的學習過程,由信息的正向傳播和誤差的反向傳播兩個過程組成。由下圖可知,BP神經網絡是一個三層的網絡:
輸入層(input layer):輸入層各神經元負責接收來自外界的輸入信息,并傳遞給中間層各神經元;
隱藏層(Hidden Layer):中間層是內部信息處理層,負責信息變換,根據信息變化能力的需求,中間層可以設計為單隱層或者多隱層結構;最后一個隱層傳遞到輸出層各神經元的信息,經進一步處理后,完成一次學習的正向傳播處理過程;
輸出層(Output Layer):顧名思義,輸出層向外界輸出信息處理結果
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
2025 年,數據如同數字時代的 DNA,編碼著人類社會的未來圖景,驅動著商業時代的運轉。從全球互聯網用戶每天產生的2.5億TB數據, ...
2025-05-27CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25