簡單易學的機器學習演算法 極限學習機 ELM

2021-08-14 23:24:16 字數 3742 閱讀 9210

極限學習機(extreme learning machine) elm,是由黃廣斌提出來的求解單隱層神經網路的演算法。

elm最大的特點是對於傳統的神經網路,尤其是單隱層前饋神經網路(slfns),在保證學習精度的前提下比傳統的學習演算法速度更快。

elm是一種新型的快速學習演算法,對於單隱層神經網路,elm可以隨機初始化輸入權重和偏置並得到相應的輸出權重。

(選自黃廣斌老師的ppt)

對於乙個單隱層神經網路(見figure 1),假設有

n 個任意的樣本(xi

,ti),其中xi

=[xi

1,xi

2,..

.,xi

n]t∈

rn,ti=

[ti1

,ti2

,...

,tim

]t∈r

m 。對於乙個有

l 個隱層節點的單隱層神經網路可以表示為∑i

=1lβ

ig(w

i⋅xj

+bi)

=oj,

j=1,

...,

n其中,g(

x)為啟用函式,wi

=[wi

1,wi

2,..

.,wi

n]t 為輸入權重,βi

輸出權重,bi

是第i 個隱層單元的偏置。wi

⋅xj表示

wj和x

j 的內積。

單隱層神經網路學習的目標是使得輸出的誤差最小,可以表示為∑j

=1n|

|oj−

tj||

=0即存在βi

,wi 和

bi,使得∑i

=1lβ

ig(w

i⋅xj

+bi)

=tj,

j=1,

...,

n 可以矩陣表示為hβ

=t其中,

h 是隱層節點的輸出,

β為輸出權重,

t 為期望輸出。h(

w1,.

..,w

l,b1

,...

,bl,

x1,.

..,x

l)=⎡

⎣⎢⎢g

(w1⋅

x1+b

1)⋯g

(wl⋅

x1+b

l)⋮⋯

⋮g(w

1⋅xn

+b1)

⋯g(w

l⋅xn

+bl)

⎤⎦⎥⎥

n×lβ

=⎡⎣⎢

⎢βt1

⋮βtl

⎤⎦⎥⎥

l×m,

t=⎡⎣

⎢⎢tt

1⋮tt

l⎤⎦⎥

⎥l×m

為了能夠訓練單隱層神經網路,我們希望得到w^

i ,b^

i 和β^

i ,使得||

h(w^

i,b^

i)β^

i−t|

|=minw,b

,β||

h(wi

,bi)

βi−t

||其中,i=

1,..

.,l ,這等價於最小化損失函式e=

∑j=1

n(∑i

=1lβ

ig(w

i⋅xj

+bi)

−tj)

2 傳統的一些基於梯度下降法的演算法,可以用來求解這樣的問題,但是基本的基於梯度的學習演算法需要在迭代的過程中調整所有引數。而在elm演算法中, 一旦輸入權重wi

和隱層的偏置bi

被隨機確定,隱層的輸出矩陣

h 就被唯一確定。訓練單隱層神經網路可以轉化為求解乙個線性系統hβ

=t。並且輸出權重

β 可以被確定β^

=h+t

其中,是矩陣的moore-penrose廣義逆。且可證明求得的解的範數是最小的並且唯一。

我們使用《簡單易學的機器學習演算法——logistic回歸》中的實驗資料。

原始資料集

我們採用統計錯誤率的方式來評價實驗的效果,其中錯誤率公式為:er

rorr

ate=

nume

rror

numa

ll對於這樣乙個簡單的問題,er

rorr

ate=

0 。

matlab**

主程式

%% 主函式,二分類問題  

%匯入資料集

a = load('testset.txt');

data = a(:,1

:2);%特徵

label = a(:,3);%標籤

[n,n] = size(data);

l = 100;%隱層節點個數

m = 2;%要分的類別數

%--初始化權重和偏置矩陣

w = rand(n,l)*2-1;

b_1 = rand(1,l);

ind = ones(n,1);

b = b_1(ind,:);%擴充成n*l的矩陣

temph = data*w+b;

h = g(temph);%得到h

%對輸出做處理

temp_t=zeros(n,m);

for i = 1

:nif label(i,:) == 0

temp_t(i,1) = 1;

else

temp_t(i,2) = 1;

endendt = temp_t*2-1;

outputweight = pinv(h)*t;

%--畫出圖形

x_1 = data(:,1);

x_2 = data(:,2);

hold on

for i = 1:n

if label(i,:) == 0

plot(x_1(i,:),x_2(i,:),'.g');

else

plot(x_1(i,:),x_2(i,:),'.r');

endend

output = h * outputweight;

%---計算錯誤率

tempcorrect=0;

for i = 1

:n

[maxnum,index] = max(output(i,:));

index = index-1;

if index == label(i,:);

tempcorrect = tempcorrect+1;

endend

errorrate = 1-tempcorrect./n;

啟用函式

function

[ h ] = g

( x )

h = 1 ./ (1 + exp(-x));

end

黃老師提供的極限學習機的**:

簡單易學的機器學習演算法 K Means演算法

聚類演算法是一種典型的無監督學習演算法,主要用於將相似的樣本自動歸到乙個類別中。聚類演算法與分類演算法最大的區別是 聚類演算法是無監督的學習演算法,而分類演算法屬於監督的學習演算法。在聚類演算法中根據樣本之間的相似性,將樣本劃分到不同的類別中,對於不同的相似度計算方法,會得到不同的聚類結果,常用的相...

2 3 機器學習 極限森林

在隨機森林的基礎上進行公升級。不尋找最有區別的閾值,而是為每個候選特徵隨機繪製閾值,並且這些隨機生成的閾值中的最佳閾值作為劃分規則。極限森林 1 樣本抽樣隨機 2 每棵樹 條件隨機 不是最好的裂分條件 決策樹,進行 的時候,根據資訊增益最大進行裂分,刻板 交叉驗證 資料簡單,普通演算法和複雜演算法效...

機器學習簡單演算法整理

今天整理了一下簡單的機器學習演算法。打算按照這個提綱學習 實現,不一定按順序,但希望自己每學習乙個都能了解透徹。打算寒假前就仔細研究這塊了。一 regression 回歸 二 基於例項的方法 三 regularazation 正則化方法 四 決策 decison 樹學習 五 bayesian 貝葉斯...