โดยทั่วไปแล้วฟังก์ชั่นk ( x , y)เป็นฟังก์ชั่นเคอร์เนลที่ถูกต้อง (ในแง่ของเคล็ดลับเคอร์เนล) หากเป็นไปตามคุณสมบัติหลักสองประการ:
สมมาตร: k ( x , y) = k ( y, x )
ความแน่นอนกึ่งบวก
การอ้างอิง: หน้า 4 ของhttp://www.cs.berkeley.edu/~jordan/courses/281B-spring04/lectures/lec3.pdf
การตรวจสอบความสมมาตรมักจะตรงไปตรงมาโดยการตรวจสอบ การตรวจสอบความถูกต้องกึ่งเชิงบวกเชิงวิเคราะห์นั้นค่อนข้างมีขนดกในบางครั้ง ฉันสามารถนึกถึงสองกลยุทธ์สำหรับการตรวจสอบข้อเท็จจริงนี้:
- (1) ตรวจสอบการเป็นตัวแทน "ผลิตภัณฑ์ภายใน"
พิจารณา y ที่ เราสามารถหาϕ ( a )ที่k ( x , y ) = ϕ ( x ) T ϕ ( y ) ได้ไหม? คณิตศาสตร์น้อยแสดงให้เห็นว่าe x + y = e x e yดังนั้นให้ϕ ( a ) = e aและเราเสร็จแล้วk ( x , y) = ex + yϕ ( a )k ( x , y) = ϕ ( x )Tϕ ( y)อีx + y= exอีYϕ ( a ) = ea
หากคุณได้รับโชคดีคุณจะสามารถแก้ไขการวิเคราะห์นี้ได้ ถ้าไม่คุณสามารถใช้ตัวเลือก (2):k ( )
- (2) การตรวจสอบความแน่นอนเชิงบวกโดยการจำลองแบบสุ่ม
Dk ( x⃗ , y⃗ ) = ∑Dd= 1ขั้นต่ำ( xd, yd)x⃗ , y⃗
เราสามารถตรวจสอบสิ่งนี้ได้ด้วยการจำลองสถานการณ์ วาดชุดของเวกเตอร์สุ่มและสร้างแกรมเมทริกซ์โดยที่_j) จากนั้นตรวจสอบว่าเป็นค่าบวก (กึ่ง -) แน่นอนหรือไม่{ → x i } N i = 1 K K ฉันj = k ( → x i , → x j )ยังไม่มีข้อความ{ x⃗ ผม}ยังไม่มีข้อความi = 1KKผมเจ= k ( x⃗ ผม, x⃗ J)K
วิธีที่ดีที่สุดที่จะทำตัวเลขนี้คือการหาค่าลักษณะเฉพาะของเมทริกซ์ (ใช้ดีที่มีอยู่ในห้องสมุดเช่นตัวเลข SciPy หรือ MATLAB) และตรวจสอบว่ามีขนาดเล็กที่สุด eigenvalue มีขนาดใหญ่กว่าหรือเท่ากับ 0 ถ้าใช่เมทริกซ์คือ psd มิฉะนั้นคุณไม่มีเคอร์เนลที่ถูกต้องK
ตัวอย่าง 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) ) );
นี่คือการทดสอบง่ายมาก แต่ต้องระวัง หากการทดสอบล้มเหลวคุณสามารถตรวจสอบว่าเคอร์เนลไม่ถูกต้อง แต่ถ้าผ่านเคอร์เนลก็อาจไม่ถูกต้อง
ฉันพบว่าไม่ว่าจะสร้างเมทริกซ์สุ่มจำนวนเท่าใดและไม่คำนึงถึงและเคอร์เนลนี้จะผ่านการทดสอบดังนั้นมันอาจเป็นค่าบวกกึ่งแน่นอน (อันที่จริงนี่คือเคอร์เนลฮิสโทแกรมที่รู้จักกันดีและได้รับการพิสูจน์แล้ว) ถูกต้อง).Dยังไม่มีข้อความD
อย่างไรก็ตามการทดสอบเดียวกันกับล้มเหลวในการลองทุกครั้งที่ฉันได้รับ (อย่างน้อย 20) . ดังนั้นจึงเป็นสิ่งที่ไม่ถูกต้องแน่นอนที่สุดและค่อนข้างง่ายต่อการตรวจสอบเค(x⃗ ,y⃗ ) =∑Dd= 1m a x ( xd, yd)
ฉันชอบตัวเลือกที่สองนี้เพราะค่อนข้างเร็วและง่ายต่อการตรวจแก้จุดบกพร่องมากกว่าการพิสูจน์อย่างเป็นทางการที่รวบรวม ตามสไลด์ที่ 19 ของ Jitendra Malikเคอร์เนลถูกนำมาใช้ในปี 1991 แต่ไม่ได้รับการพิสูจน์ว่าถูกต้องจนถึงปี 2005 การพิสูจน์อย่างเป็นทางการอาจเป็นเรื่องที่ท้าทายมาก!