深度學習實驗系列(1)

2022-05-07 10:30:09 字數 2635 閱讀 8504

開篇貼上導師的幾句話:

最近準備趁著幾位開題,把神經網路,深度學習方面的內容系統的挖挖。

要學習深度學習,多少要了解一下神經網路,神經網路的典型就是bp,而bp本身是很簡單的。

我們前面就從這幾個資料(關於資料,我會在接下來的內容中一一展開)開始吧。

一、perception感知器演算法

先說一下感知器演算法。

引例:判斷乙個人是否長得帥??? 有如下feature: 身高,體重,三圍,顏值,學習成績(帥的人學習成績好的少...為何如此說先不討論,本人作為女生,認為此說法並無什麼依據)等等。

假設有乙個標準:每乙個評分項給予多少分的權重,當所有feature與權重相乘的和大於某乙個值的時候,那這個人就是帥哥!!

例子: 180*5+150*3+....>1000 帥哥! 小於則.....

感知器任務:通過已知的例項調節權重,使其能夠**出未知例項的結果。

符號表示:

if       (w1*x1+w2*x2+.......>b) return true

else        return false

由於b是常數,我們可以將b表示為-w0×x0,則可以表示為

if       (w1*x1+w2*x2+.......+w0×x0>0) return true

else        return false

訓練方法:

當**值等於我們期待的結果時: 什麼也不用做

w1*x1+a*x1*x1+w2*x2+a*x2*x2+......  注:a為學習速率因子,會影響學習速率

w的更新值相當於wi=wi+a*xi

當**值大於我們期待的結果時應改為減號,歸結起來應為如下表示式:

wi=wi+a*(y-h(x))*xi

偽**表示:

1

while

(迴圈結束條件) ;

3for

(每個樣本)

7}

8for

(每個特徵 i)

12 }

shortage:

只能解決線性可分問題。

questions:

1.迭代的停止條件是什麼?

答:自己定。。。可以是某個驗證集取得理想結果的時候,或是像上述例子,單純改變迴圈次數。

2.當訓練時候遇到正確樣本會發生什麼?

答:什麼也不發生,當**結果正確時,就假定是最好感知器。

3.每次迭代調整w或是所有樣本迭代完全後調整w(上例)有區別麼?

答:區別不大,也許w權值會有所變化,但實際效果沒多大區別。

4.某輪迭代後結果一定變好麼?

答:不一定,但總體趨勢是變好的!

5.a的作用和取值問題

答:作用是控制學習速率,一般選0-1之間,過大不能學習到最優值,過小沒有什麼變化~~

下面給出具體的c語言實現**:

#include#include 

using

namespace

std;

double hypothose(double w,int feature_num,double*training_set)

if (sum>0) return

1;

else

return

0;

} //

以下函式為感知器演算法真正函式,引數分別是特徵個數,訓練樣本數,學習速率,迭代次數,訓練樣本,初始w陣列

void perception(int feature_num,int training_num,double a,int times,double** training_set,double

w)

for(int i=0;i)

} for(int i=0;i)

delete delta_w;

} } int

main()

double* w=new

double[feature_num+1

];

for(int i=0;i)

for(int i=0;i)

} for(int i=0;i<=feature_num;i++)

perception(feature_num+1

,training_num,a,times,training_set,w);

for(int i=0;i)

cout

delete w;

for(int i=0;i)

delete training_set;

} return

0;

}

檔案輸入格式如下:

執行結果:(我的編譯環境是vs2013)

Theano深度學習系列1

最近將英文原版書籍 python for data analysis 看完,也將 scikit learn cookbook 例子實現完,對基本的機器學習有一定的了解,下面來學習強大的python深度學習庫theano以及keras。import numpy import theano import...

深度學習系列(1) 簡要概念

deep learning 的概念源於人工神經網路的研究。含多隱層的多層感知器就是一種深度學習結構。深度學習通過組合低層特徵形成更加抽象的高層表示屬性類別或特徵,以發現資料的分布式特徵表示。1 深度學習的概念由hinton等人於2006年提出。基於深信度網 dbn 提出非監督貪心逐層訓練演算法,為解...

深度學習系列 深度學習簡介

機器學習 使用計算機系統利用經驗改善效能,是人工智慧領域的分支,也是實現人工智慧的一種手段。表徵學習關注如何自動找出表示資料的合適方式,以便更好地將輸入變換為正確的輸出。深度學習 具有多級表示的表徵方法,在每一級 原始資料開始 通過簡單的函式將該級的表示變換為更高階的表示。可以將深度學習看作多個簡單...