สถานะปัจจุบันของศิลปะเกี่ยวกับอัลกอริธึมสำหรับการสลายตัวของค่าเอกพจน์คืออะไร?


12

ฉันกำลังทำงานกับเมทริกซ์ไลบรารีส่วนหัวเท่านั้นเพื่อให้ความสามารถพีชคณิตเชิงเส้นในระดับที่สมเหตุสมผลในแพคเกจที่ง่ายที่สุดเท่าที่จะเป็นไปได้และฉันพยายามสำรวจว่าสถานะปัจจุบันของศิลปะเป็นอย่างไร: การคำนวณ SVD ของ เมทริกซ์ที่ซับซ้อน

ฉันกำลังสลายตัวแบบสองเฟส, การทำ bidiagonalization ตามด้วยการคำนวณค่าเอกพจน์ ตอนนี้ฉันกำลังใช้วิธีคฤหัสถ์สำหรับ bidiagonalization (ผมเชื่อว่า LAPACK ใช้นี้เช่นกัน) และผมคิดว่าเป็นเรื่องที่ดีที่จะได้รับในปัจจุบัน (ยกเว้นกรณีที่มีคนรู้ของอัลกอริทึม สำหรับมัน..). O(N2)

การคำนวณค่าเอกพจน์อยู่ถัดไปในรายการของฉันและฉันค่อนข้างจะวนซ้ำกับสิ่งที่อัลกอริทึมทั่วไปสำหรับทำสิ่งนี้ ฉันได้อ่านที่นี่ว่าการวิจัยมุ่งไปที่วิธีผกผันการทำซ้ำที่รับประกันความเป็นเอกเทศกับความซับซ้อน ฉันสนใจที่จะได้ยินเกี่ยวกับเรื่องนั้นหรือความก้าวหน้าอื่น ๆO(N)


มี doc สำหรับ matrix header-only lib ของคุณหรือไม่ (นอกเหนือจาก. h) นอกจากนี้โปรดเพิ่มแท็ก "svd"
เดนิส

คำตอบ:


7

"อัลกอริทึมแบบสุ่ม" เพิ่งได้รับความนิยมค่อนข้างมากสำหรับ svds บางส่วน การติดตั้งส่วนหัวเท่านั้นสามารถดาวน์โหลดได้ที่นี่: http://code.google.com/p/redsvd/

บทวิจารณ์วิธีการปัจจุบันสามารถดูได้ที่นี่: http://arxiv.org/abs/0909.4061

สำหรับ svds แบบเต็มฉันไม่แน่ใจว่าคุณสามารถทำได้ดีกว่าเจ้าบ้าน


ฟังดูน่าสนใจมากฉันจะต้องดูที่แบบสำรวจขอบคุณ!
ก.ย.

OP มีความสนใจในอัลกอริทึมสำหรับเมทริกซ์หนาแน่น ฉันไม่คิดว่าอัลกอริธึมแบบสุ่มจะแข่งขันในการตั้งค่านั้นถ้าพวกเขาทำงานเลย
Federico Poloni

โพสต์นี้ชี้ให้เห็นว่าวิธีการสุ่มทำงานได้ดีในการฝึกอบรมหนาแน่นresearch.facebook.com/blog/294071574113354/fast-randomized-svd
dranxo

@dranxo ไม่มีการเปรียบเทียบความแม่นยำเลยในการโพสต์นั้นและผลการจับเวลาไม่ได้ดูพิถีพิถันมากนัก อัลกอริธึมแบบสุ่มขึ้นอยู่กับการคาดการณ์ + การแก้ปัญหาที่แน่นอนของปัญหาขนาดเล็ก ซึ่งหมายความว่า OP จะต้องดำเนินการตาม "วิธีมาตรฐาน" สำหรับปัญหาขนาดเล็กที่เกิดขึ้นแล้ว
Federico Poloni

ยุติธรรมพอสมควร แม้ว่าฉันสับสนเล็กน้อยว่าทำไมเราควรคิดว่าวิธีการเหล่านี้ใช้ได้กับเมทริกซ์กระจัดกระจายเท่านั้น จากนามธรรมของกระดาษของ Joel Tropp: "สำหรับเมทริกซ์อินพุทหนาแน่นอัลกอริธึมแบบสุ่มต้องการ O (mn log (k)) การดำเนินการจุดลอยตัว (flops) ตรงกันข้ามกับ O (mnk) สำหรับอัลกอริธึมแบบดั้งเดิม" arxiv.org/pdf/0909.4061v2.pdf
dranxo

4

ฉันได้อ่านที่นี่ว่าการวิจัยมุ่งไปที่วิธีผกผันการทำซ้ำที่รับประกันความเป็นเอกเทศกับความซับซ้อน ฉันสนใจที่จะได้ยินเกี่ยวกับเรื่องนั้นหรือความก้าวหน้าอื่น ๆO(N)

(ฉันต้องการเพียงแค่แสดงความคิดเห็นไม่กี่ครั้งเนื่องจากฉันไม่มีเวลาเขียนรายละเอียด แต่มันค่อนข้างใหญ่สำหรับกล่องความคิดเห็น)

ฉันเชื่อว่าน่าจะเป็นอัลกอริทึม MRRR (การเป็นตัวแทนที่แข็งแกร่งหลายครั้ง)ของ Dhillon และ Parlett สิ่งนี้มีรากฐานมาจากการทำงานก่อนหน้าของเฟอร์นันโดซึ่งได้รับแรงบันดาลใจจากปัญหาที่จิมวิลกินสันวางไว้ในหนังสือเล่มใหญ่ของเขาเกี่ยวกับปัญหาค่าลักษณะเฉพาะ ที่ "ผกผันซ้ำ" เพื่อให้ได้มาเป็นเอกเทศในแนวคิดของเวกเตอร์"บิด factorizations" โดยเฟอร์นันโดซึ่งใช้ประโยชน์จากการฝึกอบรมในและแยกส่วนU D ULDLUDU

ส่วน "ค่าเอกพจน์" ของอัลกอริทึมนั้นมาจากอัลกอริทึม(เปลี่ยน) ความแตกต่างของผลหาร (dqd (s))ซึ่งเป็นสุดยอดของงานก่อนหน้านี้โดยFernando, Parlett , Demmel และ Kahan (ด้วยแรงบันดาลใจ จาก Heinz Rutishauser)

ดังที่คุณอาจทราบวิธีการ SVD มักจะดำเนินการย่อยสลายแบบสองมิติก่อนที่จะได้ค่าเอกพจน์จากเมทริกซ์ bidiagonal น่าเสียดายที่ฉันไม่ได้อัปเดตด้วยวิธีที่ดีที่สุดในปัจจุบันสำหรับการแยกย่อยแบบสองส่วนแนวหน้า สุดท้ายฉันตรวจสอบวิธีการปกติคือเริ่มต้นด้วยการสลายตัวของ QR กับแกนหมุนคอลัมน์และจากนั้นใช้การแปลงมุมฉากอย่างเหมาะสมกับปัจจัยรูปสามเหลี่ยมเพื่อให้ได้การสลายตัวแบบสองทางในที่สุด

ฉันเข้าใจว่าตัวเองมีรายละเอียดต่ำมาก ฉันจะพยายามสรุปคำตอบนี้ต่อไปเมื่อฉันเข้าถึงห้องสมุดของฉัน ...


เมทริกซ์ไปยังรูปแบบสองแนวทแยงทำคอลัมน์จากนั้นหนึ่งแถวทำซ้ำในแนวทแยง: ใช้ givens หรือเจ้าของบ้านให้เป็นศูนย์ถึงคอลัมน์ในแนวทแยงมุมจากนั้นทำแบบเดียวกันสำหรับแถวกับแนวทแยงมุม
adam W

เพิกเฉยความคิดเห็นก่อนหน้าของฉันฉันกำลังคิดรูปแบบเส้นทแยงมุม ขอโทษ การทำให้เป็นเส้นทแยงมุมนั้นไม่ได้เล็กน้อยในความคล้ายคลึงกัน (จริง ๆ แล้วมันจะเปิดเผยค่าลักษณะเฉพาะ) แต่การอ้างอิงของคุณไม่ได้ทำสิ่งที่คล้ายคลึงกันมันกำลังทำอย่างอื่น ซ้ายและขวาคูณกับเมทริกซ์มุมฉากที่แตกต่างกัน นั้นเป็นเส้นทแยงมุมที่มีและซึ่งสามารถทำได้ตามที่คุณพูดด้วย QR ก่อน แต่ไม่ได้อธิบายอย่างง่ายดายในความคิดเห็น ฉันอาจสนใจถ้าคุณตอบคำถามออกไปอีก (แต่ฉันก็สามารถหาคำตอบได้ตั้งแต่การศึกษาของฉันกำลังมุ่งหน้าไปในทิศทางนี้ในขณะนี้) U U = I V V = IUAVUU=IVV=I
adam W

0

มีไลบรารี PROPACK และ nu-TRLan

http://soi.stanford.edu/~rmunk/PROPACK/

http://crd-legacy.lbl.gov/~kewu/trlan/


2
ที่นี่โปสเตอร์ขออัลกอริทึมมากกว่าห้องสมุด คุณสามารถพูดถึงอัลกอริทึมที่ใช้ในห้องสมุดเหล่านี้แทนความซับซ้อนในการคำนวณของพวกเขาและทำไมห้องสมุดเหล่านี้ถึงทันสมัย
Geoff Oxberry
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.