आम तौर पर, एक फ़ंक्शन k ( x , y) एक वैध कर्नेल फ़ंक्शन है (कर्नेल ट्रिक के अर्थ में) यदि यह दो प्रमुख गुणों को संतुष्ट करता है:
समरूपता: k ( x , y) = के ( y, x )
सकारात्मक अर्ध-निश्चितता।
संदर्भ: http://www.cs.berkeley.edu/~jordan/courses/281B-spring04/lectures/lec3.pdf के पेज 4
निरीक्षण द्वारा समरूपता की जांच आमतौर पर सीधी होती है। सकारात्मक अर्ध-निश्चितता को विश्लेषणात्मक रूप से सत्यापित करना कभी-कभी काफी बालों वाला हो सकता है। मैं इस तथ्य की जाँच के लिए दो रणनीतियों के बारे में सोच सकता हूँ:
- (1) "आंतरिक-उत्पाद" प्रतिनिधित्व के लिए निरीक्षण
पर विचार करें । हम कुछ मिल सकता है φ ( एक ) ऐसी है कि कश्मीर ( एक्स , वाई ) = φ ( एक्स ) टी φ ( y ) ? एक छोटी सी गणित से पता चलता है कि ई एक्स + y = ई एक्स ई y , इसलिए φ ( एक ) = ई एक और हम काम हो गया।k ( x , y) = ईx + yφ ( ए )k ( x , y) = Φ ( एक्स )टीϕ ( y))इx + y= ईएक्सइyφ ( एक ) = ईए
यदि आप भाग्यशाली हैं, तो आपका इस विश्लेषण के लिए उत्तरदायी होगा। यदि नहीं, तो आप विकल्प (2) का सहारा ले सकते हैं:के ( )
- (2) यादृच्छिक सिमुलेशन द्वारा सकारात्मक निश्चित-नेस की जाँच करना।
पर समारोह पर विचार -dim वैक्टर कश्मीर ( → एक्स , → y ) = Σ डी डी = 1 मिनट ( एक्स डी , y घ ) है, जहां प्रत्येक वेक्टर → एक्स , → y गैर नकारात्मक और योग एक करने के लिए किया जाना चाहिए। क्या यह एक वैध कर्नेल है?डीk ( x)⃗ , वाई⃗ ) = ∑डीघ= 1मिनट ( x)घ, वाईघ)एक्स⃗ , वाई⃗
हम सिमुलेशन द्वारा इसकी जांच कर सकते हैं। यादृच्छिक वैक्टर { → x i } N i = 1 का एक सेट बनाएं और एक ग्राम मैट्रिक्स बनाएँ जहाँ । फिर जांचें कि क्या पॉजिटिव (सेमी-) निश्चित है।एन{ एक्स⃗ मैं}एनमैं = १K i j = k ( → x i , → x j ) Kकश्मीरकश्मीरमैं जे= के ( एक्स)⃗ मैं, एक्स⃗ जे)कश्मीर
इस संख्यात्मक तरीके से करने का सबसे अच्छा तरीका मैट्रिक्स के आइगेनवैल्यूज़ (अच्छे मौजूदा संख्यात्मक पुस्तकालयों जैसे कि स्कैपी या मैटलैब का उपयोग करके) को ढूंढना है, और यह सत्यापित करना है कि सबसे छोटा ईजेनवल्यू 0 से बड़ा या बराबर है । यदि हाँ, तो मैट्रिक्स psd है अन्यथा, आपके पास एक वैध कर्नेल नहीं है।कश्मीर
नमूना MATLAB / ऑक्टेव कोड:
D=5;
N=100;
X = zeros(N,D);
for n = 1:N
xcur = rand(1,D);
X(n,:) = xcur/sum(xcur);
end
K = zeros(N,N);
for n = 1:N; for m = 1:N
K(n,m) = sum( min( X(n,:), X(m,:) ) );
end; end;
disp( min( eig(K) ) );
यह एक बहुत ही सरल परीक्षण है, लेकिन सावधान रहें । यदि परीक्षण विफल हो जाता है, तो आप सुनिश्चित कर सकते हैं कि कर्नेल मान्य नहीं है, लेकिन यदि यह कर्नेल को पास करता है तब भी मान्य नहीं हो सकता है।
एनडी
k ( x)⃗ , वाई⃗ ) = ∑डीघ= 1m a x ( x)घ, वाईघ)
मैं वास्तव में इस दूसरे विकल्प को पसंद करता हूं क्योंकि यह औपचारिक प्रमाणों की तुलना में डिबग करने में काफी तेज और बहुत आसान है। जितेंद्र मलिक की स्लाइड 19 के अनुसार , चौराहे की गिरी 1991 में शुरू की गई थी, लेकिन 2005 तक सही साबित नहीं हुई। औपचारिक प्रमाण बहुत चुनौतीपूर्ण हो सकते हैं!