การแปลงฟูริเยร์คืออะไร?


46

เมื่อไม่นานมานี้ MIT ได้สร้างเสียงรบกวนเล็กน้อยเกี่ยวกับอัลกอริธึมใหม่ที่แปลงร่างเป็นฟูริเยร์ที่เร็วกว่าซึ่งทำงานบนสัญญาณบางชนิดเช่น: "การแปลงฟูริเยร์เร็วขึ้นชื่อหนึ่งในเทคโนโลยีเกิดใหม่ที่สำคัญที่สุดของโลก " นิตยสาร MIT Technology Review กล่าวว่า :

ด้วยอัลกอริธึมใหม่ที่เรียกว่าการกระจัดกระจายฟูริเยร์ (SFT) สตรีมข้อมูลสามารถประมวลผลได้เร็วขึ้น 10 ถึง 100 เท่าเมื่อใช้ FFT การเร่งความเร็วสามารถเกิดขึ้นได้เนื่องจากข้อมูลที่เราสนใจส่วนใหญ่มีโครงสร้างที่มากมาย: ดนตรีไม่ใช่เสียงรบกวนแบบสุ่ม สัญญาณที่มีความหมายเหล่านี้มักจะมีเพียงเศษเสี้ยวของค่าที่เป็นไปได้ที่สัญญาณสามารถทำได้ ศัพท์เทคนิคสำหรับเรื่องนี้ก็คือข้อมูลนั้น "กระจัดกระจาย" เนื่องจากอัลกอริทึม SFT ไม่ได้มีวัตถุประสงค์เพื่อทำงานกับสตรีมข้อมูลที่เป็นไปได้ทั้งหมดจึงสามารถใช้ทางลัดบางอย่างที่ไม่สามารถใช้ได้ ในทางทฤษฎีอัลกอริทึมที่สามารถรองรับสัญญาณกระจัดกระจายนั้นมี จำกัด มากกว่า FFT แต่ "กระจัดกระจายอยู่ทั่วไป" Katabi ศาสตราจารย์ด้านวิศวกรรมไฟฟ้าและวิทยาการคอมพิวเตอร์กล่าว "มันอยู่ในธรรมชาติมันเป็น ' s ในสัญญาณวิดีโอ มันอยู่ในสัญญาณเสียง "

ใครบางคนที่นี่สามารถให้คำอธิบายทางเทคนิคเพิ่มเติมเกี่ยวกับอัลกอริธึมที่แท้จริงและที่ใดที่อาจใช้งานได้

แก้ไข: ลิงค์บางส่วน:

คำตอบ:


40

แนวคิดของอัลกอริทึมคือ: สมมติว่าคุณมีความยาวสัญญาณที่กระจัดกระจายในโดเมนความถี่ ซึ่งหมายความว่าถ้าคุณอยู่ในการคำนวณของมันไม่ต่อเนื่องฟูเรียร์จะมีขนาดเล็กจำนวนมากของผลk « Nที่มีไม่ใช่ศูนย์; N - kอื่น ๆนั้นเล็กน้อย วิธีหนึ่งในการรับเอาต์พุตkที่คุณต้องการคือใช้FFTในลำดับทั้งหมดจากนั้นเลือกค่าk ที่ไม่ใช่ศูนย์NkNNkkk

อัลกอริธึมการแปลงฟูริเยร์ที่กระจัดกระจายนำเสนอที่นี่เป็นเทคนิคสำหรับการคำนวณเอาท์พุทมีความซับซ้อนต่ำกว่าวิธีที่ใช้ FFT โดยพื้นฐานแล้วเนื่องจากเอาต์พุตN - kเป็นศูนย์คุณสามารถประหยัดค่าใช้จ่ายได้ด้วยการใช้ทางลัดภายในอัลกอริทึมเพื่อไม่ให้สร้างค่าผลลัพธ์เหล่านั้น ในขณะที่ FFT มีความซับซ้อนของO ( n log n )อัลกอริธึมกระจัดกระจายมีความซับซ้อนที่ต่ำกว่าของO ( k log n )สำหรับกรณี sparse-spectrumkNkO(nlogn)O(klogn)

สำหรับกรณีทั่วไปมากขึ้นที่คลื่นความถี่คือ "ชนิดของเบาบาง" แต่มีมากกว่าค่าเป็นศูนย์ (เช่นสำหรับจำนวนของเสียงที่ฝังอยู่ในเสียง) พวกเขานำเสนอรูปแบบของอัลกอริทึมที่ประมาณการkเอาท์พุทที่ใหญ่ที่สุดด้วย ความซับซ้อนของเวลาของO ( k log n log nkkซึ่งอาจซับซ้อนน้อยกว่า FFTO(klognlognk)

ตามกราฟของผลลัพธ์ของพวกเขา (ทำซ้ำในภาพด้านล่าง) จุดครอสโอเวอร์สำหรับการปรับปรุงประสิทธิภาพเทียบกับ FFTW (ไลบรารี FFT ที่ปรับให้เหมาะสมทำโดยคนอื่นที่ MIT) อยู่รอบจุดที่1เท่านั้นถึง11211 -th ของสัมประสิทธิ์การแปลงเอาต์พุตเป็นค่าที่ไม่ใช่ศูนย์ นอกจากนี้ในการนำเสนอนี้พวกเขาระบุว่าอัลกอริทึมกระจัดกระจายให้ประสิทธิภาพที่ดีขึ้นเมื่อN1210]Nk[2000,106]

ป้อนคำอธิบายรูปภาพที่นี่

เงื่อนไขเหล่านี้จะ จำกัด การบังคับใช้อัลกอริทึมให้กับกรณีที่คุณรู้ว่ามีแนวโน้มที่จะมียอดเขาที่มีขนาดใหญ่จำนวนน้อยมากในสเปกตรัมของสัญญาณ ตัวอย่างหนึ่งที่พวกเขาอ้างถึงบนเว็บไซต์ของพวกเขาคือโดยเฉลี่ยแล้วบล็อกแบบ 8 ต่อ 8 พิกเซลมักใช้ในการบีบอัดภาพและวิดีโอเกือบ 90% กระจัดกระจายในโดเมนความถี่และอาจได้รับประโยชน์จากอัลกอริทึมที่ใช้คุณสมบัตินั้น ระดับของความกระจัดกระจายนั้นดูเหมือนจะไม่ตรงกับพื้นที่ของแอปพลิเคชั่นสำหรับอัลกอริทึมนี้โดยเฉพาะดังนั้นมันอาจเป็นเพียงตัวอย่างเท่านั้น

ฉันจำเป็นต้องอ่านวรรณกรรมให้มากขึ้นเพื่อให้ได้ความรู้สึกที่ดีขึ้นสำหรับวิธีการใช้เทคนิคดังกล่าวเพื่อใช้กับปัญหาในโลกแห่งความเป็นจริง แต่สำหรับแอปพลิเคชั่นบางประเภท


2
ดังนั้นโดยทั่วไปแล้ว FFT ที่สูญเสียไป ชอบโปรแกรมเปลี่ยนไฟล์ MP3?
endolith

3
kk

ฉันสงสัยว่ามันขึ้นกับอัลกอริทึม goertzel (หรือครอบครัวของพวกเขา) ดูเหมือนว่ามีความแตกต่างเพียงอย่างเดียวนั่นคือใน goertzel คุณรู้ว่าสิ่งที่คุณกำลังมองหาที่จะเริ่มต้นด้วย
Spacey

5
@endolith: การบีบอัด MP3 สูญเสียเนื่องจากค่าสัมประสิทธิ์เป็นปริมาณ ไม่ใช่เพราะมีเพียงค่าสัมประสิทธิ์ k สูงสุดเท่านั้น Sparse FFT = "การแสดง k-สัมประสิทธิ์คือการลดความแตกต่างกับสัญญาณอินพุต" การเข้ารหัสของ mp3 frame = "อะไรคือสัมประสิทธิ์เชิงปริมาณและระดับปริมาณที่ลดข้อผิดพลาด (การรับรู้) ที่ได้รับงบประมาณของบิต N สำหรับการจัดเก็บค่าสัมประสิทธิ์และมาตราส่วน"
pichenettes

1
เมื่อพวกเขาถูกโยนออกไปนี่คือผลข้างเคียงของการทำให้เป็นควอน
ตั

7

ฉันยังไม่ได้อ่านกระดาษบน sFFT แต่ความรู้สึกของฉันคือความคิดของการยึด FFT ไว้ข้างหลังคือการใช้ประโยชน์จาก k-sparsity ก่อน ดังนั้นจึงไม่จำเป็นต้องคำนวณรายการทั้งหมดของค่าสัมประสิทธิ์ FFT แทนเพียงคำนวณ k ของพวกเขา นั่นเป็นสาเหตุที่สัญญาณ k-sparse ความซับซ้อนคือ O (klog n) แทนที่จะเป็น O (nlog n) สำหรับ FFT ทั่วไป

วิธีใดก็ตามที่เกี่ยวข้องกับความคิดเห็นของ @rcmpton โดยการพูดว่า "แนวคิดเบื้องหลังการตรวจจับแบบบีบอัดคือคุณสามารถกู้คืนข้อมูลเบาบางจากตัวอย่างสุ่มเบาบางที่ดึงมาจากโดเมนอื่น (เช่นกู้คืนรูปภาพเบาบางจากข้อมูลความถี่กระจายแบบสุ่ม) ." คำถามคือ "ตัวอย่างสุ่มกระจัดกระจาย" คืออะไร? ฉันคิดว่ามันอาจเป็นตัวอย่างที่เก็บรวบรวมโดยการฉายข้อมูลที่กระจัดกระจายไปยังพื้นที่ย่อย (การวัด) ที่ต่ำกว่า

และอย่างที่ฉันเข้าใจกรอบทฤษฎีของการตรวจจับแรงอัดประกอบด้วยประเด็น 3 ประเด็น ได้แก่ การกระจายการวัดและการกู้คืน โดยความกระจัดกระจายมันเกี่ยวข้องกับการหาตัวแทนเบาบางสำหรับสัญญาณบางระดับซึ่งเป็นหน้าที่ของการเรียนรู้พจนานุกรม โดยการวัดมันเกี่ยวข้องกับการค้นหาวิธีที่มีประสิทธิภาพ (ประสิทธิภาพการคำนวณและกู้คืนได้) เพื่อวัดข้อมูล (หรือการฉายข้อมูลไปยังพื้นที่การวัดที่ต่ำกว่า) ซึ่งเป็นงานของการออกแบบเมทริกซ์การวัดเช่นเมทริกซ์เกาส์แบบสุ่ม ... และจากการกู้คืนคือปัญหาการผกผันเชิงเส้นที่กระจัดกระจายเป็นเชิงเส้น, l0, l1, l1-l2, lp, l-group, blabla ... และอัลกอริทึมที่ได้นั้นมีให้เลือกมากมาย การแสวงหาพื้นฐาน, เบส์, ....

มันเป็นความจริงที่ว่า "cs คือการลดขนาดของ L1 norm" และ L1 norm เป็นหลักการพื้นฐานสำหรับ cs แต่ cs ไม่เพียง แต่ลดการใช้ L1 norm ให้เหลือน้อยที่สุด นอกเหนือจาก 3 ส่วนข้างต้นแล้วยังมีส่วนขยายบางอย่างเช่นการตรวจจับแรงอัดแบบมีโครงสร้าง (กลุ่มหรือแบบจำลอง) ซึ่งการกระจายโครงสร้างแบบเบาบางก็ใช้ประโยชน์ได้เช่นกัน

เป็นข้อสรุป cs เป็นขั้นตอนใหญ่ในการสุ่มตัวอย่างทฤษฎีให้เป็นวิธีที่มีประสิทธิภาพในการส่งสัญญาณตัวอย่างระบุว่าสัญญาณเหล่านี้จะเบาบางพอ ดังนั้นcs เป็นทฤษฎีการสุ่มตัวอย่างใครก็ตามที่จะใช้มันเป็นเทคนิคบางอย่างสำหรับการจำแนกหรือการจดจำนั้นทำให้เข้าใจผิดหลักการ และบางครั้งฉันพบกระดาษบางส่วนที่มีชื่อว่า "การตรวจจับแรงกดตาม ..... " และฉันคิดว่าหลักการของกระดาษดังกล่าวกำลังใช้ประโยชน์จาก l1-minimization แทนการใช้ cs และดีกว่าการใช้ "l1-minimization ตาม ... "

หากฉันผิดโปรดแก้ไขให้ถูกต้อง


ยินดีต้อนรับสู่ DSP.SE นี่คือผลงานที่ยอดเยี่ยม
Phonon

6

ฉันได้อ่านบทความนี้แล้วและฉันคิดว่าฉันเข้าใจวิธีการทั่วไปแล้ว "souse ลับ" ของวิธีการเป็นวิธีการรับสัญญาณการกระจายสัญญาณในโดเมนความถี่ อัลกอริธึมก่อนหน้านี้ใช้กำลังดุร้ายชนิดหนึ่งสำหรับตำแหน่งของค่าสัมประสิทธิ์การกระจัดกระจาย วิธีการนี้ใช้เทคนิคแทนการเรียกว่า "การกู้คืนพื้นที่" หรือบทความบีบอัดการตรวจจับ "การกด" ที่นี่ วิธีการที่แน่นอนของการกู้คืนแบบเบาบางใช้ที่นี่มีลักษณะคล้ายกับ 'thresholding ยาก "- หนึ่งใน

เทคนิค PS ของการกู้คืนแบบกระจาย / การตรวจจับการบีบอัดและเชื่อมต่อกับมันการย่อขนาด L1 ใช้จำนวนมากในการประมวลผลสัญญาณที่ทันสมัยและโดยเฉพาะอย่างยิ่งในการเชื่อมต่อกับการแปลงฟูริเยร์ ในความเป็นจริงมันเป็นสิ่งที่ต้องรู้สำหรับการประมวลผลสัญญาณที่ทันสมัย แต่ก่อนที่จะใช้การแปลงฟูริเยร์เป็นหนึ่งในวิธีการแก้ปัญหาการฟื้นตัวแบบเบาบาง ที่นี่เราเห็นตรงกันข้าม - การกระจัดกระจายสำหรับการแปลงฟูริเยร์

เว็บไซต์ที่ดีสำหรับการตรวจจับโดยรวมที่ถูกบีบอัด: nuit-blanche.blogspot.com/

PPS ตอบความคิดเห็นก่อนหน้า - หากสัญญาณอินพุตไม่กระจัดกระจายอย่างแน่นอน

อย่าลังเลที่จะแก้ไขฉันหากฉันผิดวิธี


กระดาษ FFT ไม่ได้รับการตรวจจับการบีบอัด แนวคิดที่อยู่เบื้องหลังการตรวจจับแบบบีบอัดคือคุณสามารถกู้คืนข้อมูลเบาบางจากตัวอย่างสุ่มเบาบางที่ดึงมาจากโดเมนอื่น (เช่นกู้คืนรูปภาพเบาบางจากข้อมูลความถี่การกระจัดกระจายแบบสุ่ม (เช่น MRI)) ขณะนี้สามารถลดเวลาในการซื้อมันจะเพิ่มต้นทุนการคำนวณ กระดาษ FFT แตกต่างกันตรงที่คุณมีข้อมูลทั้งหมดในทั้งสองโดเมนและเป้าหมายคือการทำให้การคำนวณเกิดขึ้นอย่างรวดเร็ว
dranxo

คุณผิดเกี่ยวกับการตรวจจับที่ถูกบีบอัด
mirror2image

1
คุณสามารถทำอย่างละเอียด?
dranxo

LpAx=yRmyin,m>>nwithconstraint
mirror2image

min|x|1Ax=y
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.