Multi-Exemplar Affinity Propagation
AP算法存在的固有缺陷是它不能對(duì)包含很多子類的category進(jìn)行建模,而在image categorization, face categorization, 多字體optical character recognition,手寫數(shù)字分類,每個(gè)category可能包含很多子類。
比如說,在自然場(chǎng)景類別可能包含很多主題,比如說,街景中可能包含一些主題,比如road,car,pedestrian,building等等。
在OCR和手寫數(shù)字分類問題中,代表letter或digit的類可能由多個(gè)子類組成,每個(gè)子類代表著不同的style或者字體。顯然,我們用一個(gè)代表點(diǎn)來統(tǒng)一表示這些子類是不合理的。
這篇論文提出了MEAP算法。每一個(gè)cluster都是自動(dòng)決定exemplars和superexemplars的數(shù)目,每個(gè)數(shù)據(jù)點(diǎn)都自動(dòng)分配給最接近的exemplar,而每個(gè)exemplar都分配給最接近的superexemplar。
superexemplar定義為代表一類cluster的所有exemplars中的最具代表性的那一個(gè)。
所以目標(biāo)函數(shù)是 最大化數(shù)據(jù)點(diǎn)和代表點(diǎn)(exemplar)之間的相似度,以及exemplar和superexemplar之間的相似度。
直接求解這個(gè)問題是NP困難的。所以我們可以使用max-sum belief propagation,可以產(chǎn)生對(duì)初始化信息不敏感的算法。
AP算法復(fù)習(xí)
在之前的博客中已經(jīng)有過具體的介紹,為了數(shù)學(xué)符號(hào)表示的一致性,這里用新的數(shù)學(xué)表達(dá)式再表示一次。
給定一個(gè)用戶定義的N個(gè)數(shù)據(jù)點(diǎn)的相似矩陣[sij]N×N,我們的目標(biāo)是獲得一個(gè)labels的valid configurationc=[c1,c2,...,cN],來優(yōu)化目標(biāo)函數(shù):
而 δk(c)是一個(gè)exemplar-consistency約束,就是說如果有數(shù)據(jù)點(diǎn)i選擇k作為代表點(diǎn),也就是滿足 ci=k,那么k必須同時(shí)也是自己的代表點(diǎn),也就是 ck=k
δk(c)={?∞,if?ck≠k?but???i:ci=k0,?otherwise
更新迭代的過程可以濃縮到下面幾行:
最后的類別向量c=[c1,...,cN]的計(jì)算方法為:
MEAP
假設(shè)[sij]N×N是一個(gè)用戶定義的相似度矩陣,sij代表著數(shù)據(jù)點(diǎn)i和代表點(diǎn)j之間的相似度,[lij]N×N代表著代表點(diǎn)i和潛在的super-exemplar j之間的相似度。
我們的目標(biāo)是最大化所有數(shù)據(jù)點(diǎn)和它們對(duì)應(yīng)的代表點(diǎn)之間的相似度S1,同時(shí)最大化代表點(diǎn)和superexemplar之間的相似度S2。
模型
假設(shè)C是assignment 矩陣,非對(duì)角線元素代表數(shù)據(jù)點(diǎn)j是數(shù)據(jù)點(diǎn)i的代表點(diǎn)cij=1,也就是ψ1(i)=j, 對(duì)角線元素代表 cii∈{1,...,N} 代表著cii是代表點(diǎn)i的superexemplar。
S1=∑i=1N∑j=1Nsij?[cij≠0],S2=∑i=1Nlicii?[cii≠0]
其中[?]是Iverson notation,當(dāng)true時(shí),取值為1。
我們可以得到S1+S2=∑Ni=1∑Nj=1Sij(cij)。同時(shí)必須滿足下面3個(gè)約束:
1) 每個(gè)數(shù)據(jù)點(diǎn)i必須只能分配給一個(gè)代表點(diǎn)
2) 代表點(diǎn)一致性約束
如果數(shù)據(jù)點(diǎn)i選擇了數(shù)據(jù)點(diǎn)j作為代表點(diǎn),那么數(shù)據(jù)點(diǎn)j本身必須是代表點(diǎn)。
3) superexemplar一致性約束
如果數(shù)據(jù)點(diǎn)i選擇了數(shù)據(jù)點(diǎn)k作為superexemplar, 那么k必須同時(shí)選擇自己作為superexemplar。
所以MEAP的目標(biāo)是最大化下面的目標(biāo)函數(shù):
上圖描述的是一個(gè)多層的結(jié)構(gòu),S1評(píng)估的是within-subcluster 的compactness,高層的ψ2描述的是exemplar 和superexemplar之間的關(guān)系。
根據(jù)single-exemplar的理論,最大化within-cluster 相似度會(huì)自動(dòng)最大化between-cluster separation.
從最大化margin clustering的角度,MEAP比AP要好,見下圖:
優(yōu)化
MEAP的因子圖如下圖:
多代表點(diǎn)的模型是單代表點(diǎn)的模型的普及,對(duì)其進(jìn)行優(yōu)化是NP-hard的。因此,我們使用max-sum belief propagation,這是一個(gè)local-message-passing 算法,它會(huì)收斂到局部最大值。
(可以發(fā)現(xiàn)對(duì)角線的變量多連接了F的函數(shù)),也就是 superexemplar的一致性約束。
上圖中圓形表示的變量節(jié)點(diǎn),方形表示的是函數(shù)節(jié)點(diǎn)。
從變量到函數(shù),將與這個(gè)變量連接的函數(shù)的信息求和(除了接收信息的函數(shù)以外)。
從函數(shù)到變量,包括除該變量外所有函數(shù)變量的maximization。
其中X=ne(f)是函數(shù)f的參數(shù)集。(或者我們可以理解成與該函數(shù)節(jié)點(diǎn)連接的所有變量節(jié)點(diǎn))
這里我們可以發(fā)現(xiàn)對(duì)角線和非對(duì)角線的變量節(jié)點(diǎn)很不同,所以我們對(duì)它們分開進(jìn)行討論。
非對(duì)角線元素的Messages
左圖有5種messages,與cij連接,i≠j,如左下圖:
非對(duì)角線元素
對(duì)角線元素
求解過程
非對(duì)角線變量
對(duì)于非對(duì)角線結(jié)點(diǎn),m=cij
我們來討論cjj,將這一項(xiàng)單獨(dú)寫出來,它的取值可以是1也可以是0
第一種情況:
如果是1,也就是m=1, 如果數(shù)據(jù)點(diǎn)i選擇j作為代表點(diǎn),那么j必須是一個(gè)代表點(diǎn),這時(shí)Ej(c1j,...,cij) 為0,而別的數(shù)據(jù)點(diǎn)i′可以選擇j作為代表點(diǎn)也可以不選,也就是ci′j的值不定。
第二種情況:
m=0,也就是說i沒有選j作為代表點(diǎn),我們?cè)儆懻摂?shù)據(jù)點(diǎn)j的情況,如果數(shù)據(jù)點(diǎn)j本身是一個(gè)代表點(diǎn),別的數(shù)據(jù)點(diǎn)i′要么選它作為數(shù)據(jù)點(diǎn),要么不選,就如第一種情況的結(jié)論,但是如果j本身不選自己,那么逆否命題成立我們可以推知,一定有cjj=0=>ci′j=0, 所以可以得到∑i′:i′≠iρi′j(0)
對(duì)于ηij,同樣是從函數(shù)結(jié)點(diǎn)到變量結(jié)點(diǎn)。
第一種情況,cij=1, 由于唯一性約束,也就是它只能有一個(gè)代表點(diǎn),那么β參數(shù)cij′必須是0。
第二種情況,如果是0,那么假設(shè)它的代表點(diǎn)是j′,再討論這個(gè)j′是不是i本身,除去j′的代表點(diǎn)的所屬權(quán)都必須是0。
(我一開始有點(diǎn)疑惑,因?yàn)榇笄疤嵋呀?jīng)是i≠j,后來我反應(yīng)過來這只是對(duì)cij的討論,而公式中覆蓋的條件是全面的。)
對(duì)角線變量
對(duì)于對(duì)角線上的變量,如果它們本身是代表點(diǎn),那么它們的取值為{1,...,N}, 如果它們不是代表點(diǎn),那么取值為0。
(1)
如果i是代表點(diǎn),也就是cii=m,m∈{1,...,N}那么別的數(shù)據(jù)點(diǎn)i′可以選擇它或者不選它。
此時(shí)Ei(c1i,...,cii=m,...,cNi)=0
(2)
如果i本身不是代表點(diǎn),那么ci′i=0
(1)
如果i本身是一個(gè)代表點(diǎn),也就是它選自己當(dāng)代表點(diǎn),所以它不能再選別人當(dāng)代表點(diǎn),由唯一性約束,那么別的cii′=0
(2)
如果i不是代表點(diǎn),假如它選了i’,那么它不能選別的數(shù)據(jù)點(diǎn)作為代表點(diǎn),所以可得
對(duì)于γ的討論比較復(fù)雜,
(1) 如果cii=k=i,也就是說一個(gè)代表點(diǎn)k,選了自己作為自己的superexemplar.
(2) 如果cii≠k=i
可以推出ckk≠k, 也就是說數(shù)據(jù)點(diǎn)k并沒有選自己作為superexemplar,那么別的數(shù)據(jù)點(diǎn)i′也不能選自己k作為superexemplar。
(3) cii=k≠i
如果i為代表點(diǎn),選擇k作為超級(jí)代表點(diǎn)(superexemplar),同時(shí)k≠i,那么k本身必須也是一個(gè)代表點(diǎn)同時(shí)選擇自己作為超級(jí)代表點(diǎn),也就是ckk=k,而別的除了i和k的數(shù)據(jù)點(diǎn)并沒有限制。
(4) cii≠k≠i
i沒有選擇k作為超級(jí)代表點(diǎn),我們可以對(duì)k的情況進(jìn)行討論,如果它本身不是超級(jí)代表點(diǎn),也就是ckk≠k,
這一項(xiàng)單獨(dú)寫出來可以得到
如果k本身是超級(jí)代表點(diǎn),ckk=k,單獨(dú)寫出來是:
最后的結(jié)果是兩項(xiàng)的較大值。
Message summary與代碼解讀
S: similiarty matrix,n*n的矩陣
L: linkage matrix, n*n的矩陣
Rhoij : ρ~ij Rhoim: ρ~mi
Alphaij: α~ij (N*N) Alphai: α~ii(N*1)
Betaij : β~ij Betaim : β~mi
Etaij: η~ij(N*N) Etaii : η~ii(N*1)
Gammaik: γ~ik
Phiik : ?~ik
更新ρ
%% rhoOldRhoij=Rhoij;Rhoij=S+Etaij;Rhoij=(1-lambda)*Rhoij+lambda*OldRhoij; %rho_ijOldRhoim=Rhoim;Rhoim=repmat(diag(S)+Etai,[1,N])+L+Gammaik;Rhoim=(1-lambda)*Rhoim+lambda*OldRhoim;更新α
OldAlphaij=Alphaij;OldAlphai=Alphai;Rp=max(Rhoij,0);for k=1:N, Rp(k,k)=max(Rhoim(k,:)); end;A=repmat(sum(Rp,1),[N,1])-Rp;dA=diag(A); Alphaij=min(A,0);for k=1:N, Alphai(k)=dA(k); end;Alphaij=(1-lambda)*Alphaij+lambda*OldAlphaij;Alphai=(1-lambda)*Alphai+lambda*OldAlphai;更新β
Betaij=S+Alphaij;Betaim=repmat(diag(S)+Alphai,[1,N])+L+Gammaik;更新η
B=Betaij; [Y,I]=max(B,[],2);
for i=1:N, B(i,I(i))=-inf; end;%最大值賦值為負(fù)無窮
[Y2,I2]=max(B,[],2);% Y2代表次大值
R=repmat(Y,[1,N]);
當(dāng)j的位置剛好對(duì)應(yīng)最大值時(shí),由于j′≠j所以取次大值
這一步得到
接下來計(jì)算:
接下來計(jì)算:
接下來計(jì)算
T=Betaij;for i=1:N, T(i,i)=-inf; end;%除去i'不等于i的情況Etai=-max(T,[],2);更新γ
這一步計(jì)算
對(duì)于對(duì)角線元素,通過上面的計(jì)算已經(jīng)求出,也就是Gammaik的對(duì)角線,所不同的是對(duì)非對(duì)角線,還有一個(gè)min函數(shù)的截?cái)唷K韵却鎯?chǔ)對(duì)角線元素,隨后對(duì)矩陣進(jìn)行min函數(shù)的截?cái)?#xff0c;再單獨(dú)賦值。
dGammaik=diag(Gammaik); Gammaik=min(Gammaik,0); for k=1:N, Gammaik(k,k)=dGammaik(k); end;Gammaik=(1-lambda)*Gammaik+lambda*OldGammaik;更新?
計(jì)算
計(jì)算sii+α~ii+η~ii
SAE=repmat(diag(S)+Alphai+Etai,[1,N]);Phiik=L-max(R,-SAE);Phiik=(1-lambda)*Phiik+lambda*OldPhiik;Assignment matrix
計(jì)算cij的所有輸入信息的和,隨后求解使得c^ij最大的值。
計(jì)算net similarity
T=diag(L);
netSim=sum(S(C~=0))+sum(T(diag(C)~=0));
總結(jié)
以上是生活随笔為你收集整理的Multi-Exemplar Affinity Propagation的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux根分区写保护,目录写保护,求助
- 下一篇: 简单的制作一个钓鱼网页!