3 คะแนน โดย GN⁺ 2025-02-27 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ในสถานการณ์ที่ ต้นทุนของ self-attention กลายเป็นคอขวดใน Transformer ที่มีคอนเท็กซ์ยาว SPECTRE ลดความซับซ้อนต่อเลเยอร์จาก O(L²) ลงเป็น O(L log L) ด้วย token mixer ที่อิงกับ FFT
  • attention head แต่ละตัวถูกแทนที่ด้วยการผสานระหว่าง real FFT แบบรวดเร็ว, spectral gate ที่ปรับตามเนื้อหา, และ inverse FFT โดยยังคงโครงสร้าง Transformer เดิมไว้
  • สำหรับการสร้างแบบอัตโนมัติถดถอย SPECTRE ลดภาระการคำนวณ FFT ซ้ำในแต่ละสเต็ปด้วย Prefix-FFT cache และสามารถชดเชยการสูญเสียลักษณะเฉพาะเชิงท้องถิ่นได้ด้วยโมดูล wavelet แบบเลือกใช้
  • มีการเปรียบเทียบ SDPA, FlashAttention-2 และ SPECTRE บนแบ็กโบน Llama-3.2-1B พร้อมวัด throughput และ latency สำหรับ 512~128k โทเค็นบน NVIDIA A100-80GB
  • SPECTRE ให้ประสิทธิภาพเทียบเท่าหรือดีกว่าค่ามาตรฐานบน PG-19 และ ImageNet-1k โดยเพิ่มพารามิเตอร์ ไม่ถึง 6% และมุ่งรองรับคอนเท็กซ์ยาวบน GPU ทั่วไป

วิธีลดต้นทุนกำลังสองของ self-attention ด้วย FFT

  • Transformer ที่มีคอนเท็กซ์ยาวมีความจำเป็นสำหรับงานที่ต้องจัดการกับ โทเค็นระดับหลายหมื่น เช่น multi-turn dialogue, การสรุประดับหนังสือ, และงานวิชันความละเอียดสูง
  • self-attention แบบเดิมมีต้นทุน O(n²d) ทำให้เมื่อคอนเท็กซ์ยาวขึ้น ทั้ง latency ระหว่างอนุมานและการใช้หน่วยความจำก็เพิ่มขึ้น
  • SPECTRE เป็นแนวทางทดแทนแบบ drop-in ที่เปลี่ยนเลเยอร์ self-attention ให้เป็น token mixer ในโดเมนความถี่
    • โปรเจ็กต์โทเค็นไปยัง orthonormal Fourier basis
    • ใช้ gate แนวทแยงที่ปรับตามเนื้อหาและ low-rank gate แบบเลือกใช้
    • แปลงกลับสู่พื้นที่โทเค็นด้วย inverse transform
  • แก่นสำคัญคือการลดความซับซ้อนต่อเลเยอร์ลงเป็น O(n log n) โดยไม่ต้องเปลี่ยนสถาปัตยกรรมเครือข่ายส่วนรอบข้าง

องค์ประกอบของ token mixer และการรองรับการสร้าง

  • องค์ประกอบที่ใช้แทน attention head ของ SPECTRE คือ fast real FFT, spectral gate, และ inverse FFT
  • spectral gating ทำงานบนค่าสัมประสิทธิ์ความถี่จำนวน n/2 + 1 เพื่อคงความสามารถในการแทนข้อมูลไว้พร้อมลดการคำนวณและการใช้หน่วยความจำ
  • Prefix-FFT cache ทำหน้าที่คล้ายกับ KV-cache มาตรฐานเพื่อรองรับการถอดรหัสแบบสตรีมมิง
    • ช่วยลดข้อเสียของ spectral mixer แบบเดิมที่ต้องคำนวณ FFT ใหม่ทุก time step ในการสร้างแบบอัตโนมัติถดถอย
    • เป็นโครงสร้างที่ทำให้การสร้างทำได้อย่างมีประสิทธิภาพภายใต้งบหน่วยความจำคงที่
  • Wavelet Refinement Module แบบเลือกใช้ช่วยชดเชยรายละเอียดเชิงท้องถิ่นที่อาจสูญเสียไปในแนวทาง spectral แบบล้วน ๆ โดยมี overhead ด้านการคำนวณต่ำ

วิธีนำไปใช้กับ Transformer เดิม

  • SPECTRE สามารถแทนที่เลเยอร์ multi-head attention ได้โดยตรง จึงไม่ต้องปรับโครงสร้างสถาปัตยกรรมครั้งใหญ่
  • โมเดลที่ผ่านการพรีเทรนมาแล้วสามารถนำมา fine-tuning ด้วยเลเยอร์ SPECTRE ได้
    • พารามิเตอร์ที่อัปเดตคือพารามิเตอร์ใหม่ที่ถูกเพิ่มเข้ามา
    • พารามิเตอร์ที่เพิ่มขึ้นมี ไม่ถึง 6% ของน้ำหนักทั้งหมด
  • แตกต่างจากแนวทางที่ต้องอาศัยการเพิ่มประสิทธิภาพเฉพาะทางหรือสถาปัตยกรรมที่ไม่เป็นมาตรฐาน เพราะ SPECTRE ยังคงโครงสร้าง Transformer โดยรอบไว้

การทดลองบนพื้นฐาน Llama-3.2-1B

  • มีการเปรียบเทียบโดยใช้ attention kernel สามแบบบนแบ็กโบน Llama-3.2-1B เดียวกัน
    • standard softmax-dot-product attention(SDPA)
    • FlashAttention-2
    • SPECTRE mixer
  • สภาพแวดล้อมการวัดคือ NVIDIA A100-80GB และความยาวลำดับคือ L ∈ {512, 1k, 4k, 8k, 32k, 128k}
  • ตัวชี้วัดคือ throughput แบบ tokens-per-second และ single-batch latency
    • throughput ยิ่งสูงยิ่งดี
    • latency ยิ่งต่ำยิ่งดี
  • SPECTRE แสดงเวลาในการรันที่ใกล้เคียง O(n log n) พร้อมคงความแม่นยำของแบ็กโบนไว้
    • เวลาในการรันแทบจะคงที่จนถึง 32k โทเค็น
    • ตามบทคัดย่อ เร็วกว่า FlashAttention-2 ได้สูงสุด ที่คอนเท็กซ์ 128k-token
    • ตามรายการ contribution ในเนื้อหา เร็วกว่า FlashAttention-2 ได้สูงสุด ในการอนุมานที่ 32k โทเค็น

ผลลัพธ์บนเบนช์มาร์กและขอบเขตการใช้งานจริง

  • SPECTRE ให้ผลลัพธ์เทียบเท่าหรือดีกว่า baseline บนงาน language modeling ของ PG-19 และการจัดประเภทของ ImageNet-1k
  • ยังคงการผสมบริบทแบบ global ได้ ขณะเดียวกันก็หลีกเลี่ยงต้นทุนกำลังสองของ self-attention ในการประมวลผลคอนเท็กซ์ยาว
  • วิธีเร่ง attention ที่อิงกับ sparse pattern, kernel approximation หรือโครงสร้าง low-rank อาจมีข้อจำกัด เช่น ต้องแลกกับ exactness, ต้องพึ่งการเพิ่มประสิทธิภาพที่ไม่เป็นมาตรฐาน หรือไม่รองรับ streaming generation
  • SPECTRE ใช้แนวทางในโดเมนความถี่ที่อาศัยคุณสมบัติของ FFT ในการ diagonalize circular convolution และเปลี่ยน global mixing ให้เป็นการคูณแบบ element-wise
  • โดยจำกัดพารามิเตอร์เพิ่มเติมไว้ต่ำกว่า 6% จึงมุ่งรองรับการประมวลผลคอนเท็กซ์ระดับหลายแสนโทเค็นบน commodity GPU โดยไม่ต้องใช้ฮาร์ดแวร์เฉพาะทาง

1 ความคิดเห็น

 
GN⁺ 2025-02-27
ความคิดเห็นจาก Hacker News
  • โดยพื้นฐานแล้วนี่คือการใช้ ทฤษฎีบทคอนโวลูชัน: คอนโวลูชันที่มีต้นทุนสูงในโดเมนเดิมจะกลายเป็นการคูณแบบง่ายในอีกโดเมนหนึ่ง และกลับกันก็เป็นจริง
    ถ้ามีการทำคอนโวลูชันกับข้อมูล ก็แค่แปลงไปยังโดเมนคู่ควบแล้วเปลี่ยนให้เป็นการคูณ
    พูดอีกแบบคือ ให้ทำงานกับข้อมูลในโดเมนที่เป็นธรรมชาติของมัน
    https://en.wikipedia.org/wiki/Convolution_theorem

    • พออธิบายแบบนี้ก็ดีมาก แต่สำหรับฉัน มันไม่ชัดเจนเลยว่าใน LLM attention space ที่มีโครงสร้างนั้นเป็นโดเมนความถี่
    • นี่คือ space transform sandwich ทางคณิตศาสตร์แบบพื้นฐาน: 1) แปลงข้อมูลไปยังอีกโดเมนหนึ่ง 2) ทำการคำนวณในโดเมนนั้น แล้ว 3) แปลงกลับมายังโดเมนเดิม
      ถ้าจะปรับให้มีประสิทธิภาพ ก็ต้องปรับแต่ละขั้นให้ดี และพยายามทำงานให้มากที่สุดในโดเมนที่มีประสิทธิภาพที่สุดเท่าที่ทำได้
    • จากคำว่า “ให้ทำงานกับข้อมูลในโดเมนที่เป็นธรรมชาติของมัน” ฉันไม่เข้าใจว่าทำไมการคูณถึงถูกมองว่า เป็นธรรมชาติ กว่าคอนโวลูชันในบางโดเมน
      มันไม่ใช่แค่เรื่องที่คำนวณง่ายกว่าหรือ?
    • โดเมนคู่ควบ นี่หมายถึงความถี่ = 1/เวลา แบบ 1/สเปซ เสมอไปหรือเปล่า?
    • ใช่ แต่การประหยัดส่วนใหญ่เป็นเรื่องทางทฤษฎีมากกว่า การเปลี่ยนจาก O(n²) เป็น O(nlog n) ฟังดูดี จนกว่าจะนึกได้ว่าค่าเฉลี่ยของ n คือ 3
      แถมยังต้องใช้ จำนวนเชิงซ้อน ในการคำนวณ และมีเสถียรภาพเชิงตัวเลขน้อยกว่าเท่าไรนัก เท่าที่ฉันรู้ FFT ไม่ได้ให้ประโยชน์กับคอนโวลูชันทั่วไป
      สำหรับ self-attention หรือกรณีใช้งานในงานวิจัยนี้ n อาจใหญ่กว่ามาก ฉันยังไม่ได้อ่านงานวิจัยนะ แต่ปัญหาเรื่องจำนวนเชิงซ้อนก็ยังอยู่
  • Google เคยนำแนวคิดนี้มาใช้ตั้งแต่ปี 2022 ด้วยงาน FNet: Mixing Tokens with Fourier Transforms
    หลังจากนั้นก็พบว่าในสถานการณ์ส่วนใหญ่ ประสิทธิภาพการคูณเมทริกซ์บน TPU เร็วกว่า FFT เสียอีก
    https://arxiv.org/abs/2105.03824

    • งานวิจัยนี้ก็อ้างถึงเรื่องนั้นด้วย:
      “โดยรวมแล้ว แนวทางอย่าง FNet, Performer และ sparse transformer แสดงให้เห็นว่าการผสมโทเค็นแบบคงที่หรือแบบประมาณสามารถลดภาระการคำนวณได้ แต่กลยุทธ์ adaptive spectral filtering ของเราผสานประสิทธิภาพของ FFT เข้ากับ spectral filter ที่เรียนรู้ได้และขึ้นอยู่กับอินพุตอย่างมีเอกลักษณ์ ซึ่งมอบการผสมผสานที่ทรงพลังระหว่างความสามารถในการขยายขนาดและความสามารถในการปรับตัว ที่สำคัญสำหรับงาน modeling ลำดับที่ซับซ้อน”
      หลังจากนั้นก็มีส่วนเปรียบเทียบด้วย
    • การเปรียบเทียบว่าฮาร์ดแวร์เฉพาะทางดีกว่านั้นดูแปลกนิดหน่อย
      แล้วในฝั่ง DSP มี ฮาร์ดแวร์เฉพาะ สำหรับช่วย FFT ไหม? ถามด้วยความอยากรู้จริง ๆ ไม่เคยใช้เอง แต่รู้สึกคลับคล้ายคลับคลาว่าน่าจะช่วยได้
    • GPU ให้ การปรับปรุง 10% เมื่อเทียบกับ TPU
      “TPU ไม่มีประสิทธิภาพกับ Fourier transform มากจนผู้วิจัยเลือกใช้ Fourier transform implementation ที่สเกลแบบกำลังสองโดยอาศัย DFT matrix ที่คำนวณไว้ล่วงหน้า แทนที่จะใช้ FFT algorithm สำหรับลำดับที่สั้นกว่า 4096”
      “บน Nvidia Quadro P6000 GPU การทำ Fourier transform คิดเป็นเวลาสูงสุด 30% ของเวลาการอนุมานในสถาปัตยกรรม FNet”
      บริษัทนี้เคยอ้างในปี 2021 ว่าถ้า Google ใช้ชิปแสงของพวกเขากับ TPU จะลดเวลาอนุมานได้ 40% ถ้า FFTNet รับภาระงานมากขึ้นก็อาจลดได้มากกว่านั้นอีก
      https://scribe.rip/optalysys/attention-fourier-transforms-a-...
    • ยิ่งเพิ่มจำนวนโทเค็นในหน้าต่างบริบทมากขึ้น การสเกลของ FFT ก็น่าจะยิ่งดูดีขึ้น เป็นเรื่องน่าสนใจที่โมเดลของ Google มักนำหน้าคู่แข่งในด้านขนาดบริบท
    • ไม่ใช่แค่ว่าเร็วกว่า FFT เท่านั้น แต่ การรองรับ FFT บน TPU ก็เป็นแบบ best-effort มาโดยตลอด ครั้งสุดท้ายที่ฉันลอง ยังมีปัญหาเรื่องความแม่นยำที่รุนแรงอยู่เลย
  • Fourier transform ถูกนำไปใช้ตามมิติ “โทเค็น” แต่ในหลายการใช้งาน มิตินี้ไม่ได้มีความหมายอะไรนัก ดังนั้นทรานส์ฟอร์เมอร์จึงเป็นตัวเลือกที่ดีสำหรับการจัดการข้อมูลแบบ ไม่แปรตามการเรียงสับเปลี่ยน
    ฉันอยากเห็นการทดลองเพิ่มเติมที่ใช้ Fourier transform บน finite groups ซึ่งคนรู้จักกันน้อยกว่า เพราะมันไม่แปรตามการเรียงสับเปลี่ยน และยังมีคุณสมบัติร่วมกับ Fourier transform มาตรฐานหลายอย่าง
    แล้วถ้านี่กลายเป็นคลื่นลูกใหญ่ถัดไปของ LLM จริง ฉันก็สงสัยเหมือนกันว่า inference engine อย่าง vLLM หรือ llama.cpp จะผสานรวมสิ่งนี้ได้ง่ายแค่ไหน
    https://en.wikipedia.org/wiki/Fourier_transform_on_finite_gr...

    • ฉันไม่ใช่ผู้เชี่ยวชาญด้านนี้ แต่ในโมเดลส่วนใหญ่ โทเค็นไม่ได้ถูกแปลงพร้อมกับ ข้อมูลที่ขึ้นกับตำแหน่ง อยู่แล้วหรือ?
      เท่าที่ฉันเข้าใจ llama จะใช้การหมุนกับเวกเตอร์ตามตำแหน่งของมันในอินพุต
    • แล้วกรณีนี้ finite group คืออะไร?
  • คณิตศาสตร์นี่เกินความเข้าใจของฉันไปหมด และแม้แต่คำอธิบายรอบ ๆ สมการก็ยังพอเข้าใจแค่คร่าว ๆ มีใครช่วยอธิบายแบบง่าย ๆ ได้ไหมว่าสิ่งนี้เทียบเท่ากับ กลไก attention ได้อย่างไร?
    แล้ว “ความถี่” ที่พูดถึงตรงนี้คืออะไร และความสัมพันธ์เชิงตำแหน่งระหว่างโทเค็นถูกเข้ารหัสอย่างไร?

    • การแปลงฟูเรียร์เป็น ตัวดำเนินการผกผันได้ กล่าวคือมันกระทำกับฟังก์ชัน และในกรณีของเมทริกซ์ ทั้งฟังก์ชันและตัวดำเนินการสามารถแทนด้วยเมทริกซ์ได้เช่นกัน มันจะแปลงไปยังสิ่งที่เราเรียกว่าโดเมนความถี่
      สำหรับการวิเคราะห์สัญญาณหรือภาพจะเห็นภาพได้ชัดที่สุด: https://homepages.inf.ed.ac.uk/rbf/HIPR2/fourier.htm
      โดเมนความถี่โดยแก่นแท้แล้วเป็นโดเมน “เชิงซ้อน” ที่แทนด้วยจำนวนเชิงซ้อน ความถี่มีข้อดีคือช่วยให้มองปัญหาในภาพรวมแบบโกลบอล
      กลไกนี้ไม่ได้เทียบเท่ากับกลไก attention และมีจุดแลกเปลี่ยนที่ชัดเจนอยู่แน่นอน แต่ก็น่าจะจับความสัมพันธ์สำคัญหลายอย่างที่ attention จับได้
      สำหรับ modReLU ตอนนี้ฉันยังไม่มีสัญชาตญาณที่ดีนัก แต่ดูเหมือนว่าจะสำคัญเพราะมันปรับความถี่ได้ในขณะที่ยังคงรักษาการแปลงฟูเรียร์ผกผันไว้
    • ตัวกลไกจริง ๆ ค่อนข้างเรียบง่าย ใช้ FFT กับอินพุตเอ็มเบดดิง จากนั้นคูณแบบรายองค์ประกอบกับค่าน้ำหนักที่ได้จาก MLP บนอินพุตเอ็มเบดดิง แล้วบวกไบแอสคงที่แต่เรียนรู้ได้ ผ่านฟังก์ชันกระตุ้น และสุดท้ายจึงใช้ inverse FFT
      “ความถี่” ในที่นี้อาจเป็นสิ่งที่ค่อนข้างนามธรรมพอสมควร FFT มักถูกใช้ในแบบที่ไม่มีการตีความเรื่องความถี่อย่างชัดเจนอยู่แล้ว หลายครั้งใช้เพราะคุณสมบัติทางคณิตศาสตร์ที่สะดวก เช่นทฤษฎีบทคอนโวลูชัน
      ถ้ามันทำงานได้ดีจริงก็น่าทึ่งมาก และถือว่าสวยงามมาก
    • ฉันไม่ใช่ผู้เชี่ยวชาญเลย แต่ถ้าจะเสริมสัญชาตญาณอีกนิด self-attention สุดท้ายแล้วก็คือตัวผสมโทเค็นที่มีพารามิเตอร์
      กล่าวคือเวกเตอร์เอาต์พุตแต่ละตัวขึ้นอยู่กับการที่เวกเตอร์อินพุตนั้นถูกแปลงโดยฟังก์ชันบางอย่างของเวกเตอร์อินพุตอื่น ๆ ทั้งหมด
      https://medium.com/optalysys/attention-fourier-transforms-a-...
      ในเชิงแนวคิดจะพอมองออกว่านี่คล้ายกับคอนโวลูชันที่ทำให้ง่ายลงเล็กน้อยได้อย่างไร: https://openreview.net/pdf?id=8l5GjEqGiRG
      คอนโวลูชันมักถูกใช้เมื่อคุณต้องการพิจารณาสถานะโดยรวมแบบโกลบอลไม่ทางใดก็ทางหนึ่ง
  • ถ้าจะใส่ causal masking เข้าไปในเฟรมเวิร์กนี้ ดูเหมือนว่าจะต้องทำ FFT ที่ต่างกัน n ครั้ง และก็ไม่มีการพูดถึงการฝังตำแหน่งด้วย
    ดังนั้น implementation ของ self-attention ที่ใช้เทียบก็น่าจะเป็น NoPE แบบไม่เป็นเชิงสาเหตุ และถ้าเป็นอย่างนั้นก็อาจเป็นกรณีที่ตั้ง baseline ให้อ่อนลงโดยเจตนา เลยอาจไม่น่าประทับใจเท่าไร
    ถ้าผลลัพธ์เข้าใกล้ระดับล้ำสมัยจริง ผู้เขียนก็น่าจะพูดถึงแล้ว

    • ในเบนช์มาร์ก Long Range Arena (LRA) เขาแสดงให้เห็นว่าโมเดลของตัวเองชนะทุกหมวดหมู่จริง ๆ หวังว่าเขาจะไม่ได้ตัดหมวดที่แพ้ออกหรือไม่นำโมเดลที่ดีกว่ามาเทียบ
  • น่าจะเป็นงานอ้างอิงที่เกี่ยวข้อง: https://arxiv.org/abs/2111.13587
    Adaptive Fourier Neural Operators: Efficient Token Mixers for Transformers
    John Guibas, Morteza Mardani, Zongyi Li, Andrew Tao, Anima Anandkumar, Bryan Catanzaro

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

  • ดูเหมือนว่าจะไม่ได้อ้างถึงงานก่อนหน้าอย่าง Hyena Operator ซึ่งเมื่อหลายปีก่อนก็แสดงการผสมบริบททั้งหมดแบบ O(n log n) ไปแล้ว
    https://arxiv.org/abs/2302.10866

  • สัญลักษณ์ Big-O พอช่วยให้เห็นภาพคร่าว ๆ ได้บ้าง แต่เหมือนเนื้อหาส่วนใหญ่ที่เกี่ยวกับวิทยาการคอมพิวเตอร์หรือวิศวกรรมไฟฟ้า เรื่องนี้ก็ยังเกินความเข้าใจของฉันอยู่ดี
    ในฐานะคนที่อ่อนคณิตศาสตร์มาก ฉันอิจฉาคนที่เข้าใจเรื่องพวกนี้ หรืออย่างน้อยก็เรียนจนได้ทั้งปริญญาวิศวกรรมและใบอนุญาตวิชาชีพ
    สิ่งที่ฉันรู้เกี่ยวกับ FFT ก็มีแค่ว่ามันใช้แปลงสัญญาณ ใช้ในงานประมวลผลสัญญาณบางประเภท และเคยได้ยินมาว่ามันเคยเป็นหัวใจสำคัญของการตรวจจับการระเบิดนิวเคลียร์

    • สัญชาตญาณที่ดีพอเกี่ยวกับการแปลงฟูเรียร์นั้นมีประโยชน์มาก ถึงแม้คุณจะไม่สามารถพิสูจน์การแปลงฟูเรียร์ด้วยมือหรือเขียนอัลกอริทึม FFT เองได้ก็ตาม
      แนวคิดพื้นฐานคือ: สัญญาณที่มีประโยชน์แทบทั้งหมดสามารถแทนได้ด้วยผลรวมของคลื่นไซน์หลายลูกที่มีความถี่และเฟสต่างกัน ตัวอย่างเช่น สัญญาณไฟฟ้าหรือคลื่นเสียงเป็นสัญญาณหนึ่งมิติที่มีแกน x เป็นเวลา ซึ่งอาจดูเป็นเส้นคดเคี้ยวซับซ้อนที่จัดการได้ยาก
      เมื่อใช้การแปลงฟูเรียร์ คุณจะสามารถแยกความถี่แต่ละตัวออกจากสัญญาณที่อิงเวลาได้ จากนั้นก็แก้ไขความถี่บางช่วงตามที่ต้องการได้ เช่น ถ้าสัญญาณมีสัญญาณรบกวนแบบแหลมสุ่มอยู่มาก สิ่งนั้นจะปรากฏเป็นความถี่สูง วิธีทำให้เรียบคือแปลงฟูเรียร์ก่อน จากนั้นทิ้งข้อมูลที่มีความถี่สูงกว่าค่าเกณฑ์ที่กำหนด แล้วใช้การแปลงฟูเรียร์ผกผันกับข้อมูลที่เหลือ เพื่อย้อนกลับไปเป็นสัญญาณต้นฉบับในเวอร์ชันที่เรียบขึ้น วิธีนี้เรียกว่าตัวกรองความถี่ต่ำผ่าน และเกือบจะเหมือนกับการทำค่าเฉลี่ยเคลื่อนที่ของสัญญาณต้นฉบับ
      ส่วนที่น่าสนใจคือแนวคิดนี้ขยายไปยังมิติที่สูงขึ้นได้อย่างค่อนข้างตรงไปตรงมา สัญญาณสองมิติที่ทั้งแกน x และ y เป็นเชิงพื้นที่ก็คือภาพ JPEG compression ก็อิงอยู่บนแนวคิดนี้ โดยตัดสัญญาณความถี่สูงออกเพื่อเก็บภาพให้เล็กลง แลกกับการสูญเสียรายละเอียดเล็ก ๆ หรือถ้าตัดมากเกินไปก็จะเกิดอาร์ติแฟกต์เป็นวง ๆ ถ้าเพิ่มมิติเวลาเป็นมิติที่สาม ก็จะกลายเป็นวิดีโอ และยังขยายต่อไปได้อีก
      ทั้งหมดนี้เหมาะกับการทำความเข้าใจด้วยภาพมาก จึงสร้างสัญชาตญาณที่ดีได้แม้จะไม่ได้เข้าใจคณิตศาสตร์ทั้งหมดอย่างลึกซึ้ง หน้าที่ดีที่มีภาพและตัวอย่างอินเทอร์แอ็กทีฟมากมาย: https://www.jezzamon.com/fourier/index.html
      วิดีโอของ 3Blue1Brown ก็อธิบายได้ดีมากเช่นกัน: https://youtu.be/spUNpyF58BY?si=dz0z-s8NftW3Htun
    • พูดแบบง่าย ๆ สมมติว่าคุณมีสัญญาณโดเมนเวลาแบบหนึ่งมิติ เช่น สัญญาณเสียงที่วัดด้วยไมโครโฟน ถ้าไมโครโฟนอยู่นิ่ง นั่นก็คือการวัดการกระจัดของอากาศที่ตำแหน่งจุดหนึ่งตามเวลา
      การแปลงฟูเรียร์ซึ่ง FFT เป็นเวอร์ชันไม่ต่อเนื่องของมัน จะสลายสัญญาณโดเมนเวลาแบบหนึ่งมิตินั้นออกเป็นองค์ประกอบของขนาดและเฟสตามความถี่
      ความถี่ก็คือระดับเสียงโดยพื้นฐาน คลื่นไซน์บริสุทธิ์หรือโทนบริสุทธิ์จะคล้ายเสียงที่เคยได้ยินตอนดึก ๆ เมื่อทีวีสมัยก่อนปิดสถานี ในกรณีนั้นค่าส่วนใหญ่จะเป็น 0 และจะมี “สไปก์” หนึ่งจุดที่ตำแหน่งความถี่ของโทนนั้น ยิ่งแอมพลิจูดของสัญญาณมาก ขนาดของสไปก์ก็ยิ่งใหญ่ขึ้น เมื่อระดับเสียงหรือความถี่สูงขึ้นหรือต่ำลง ตำแหน่งของสไปก์นี้ก็จะเลื่อนไปตามแกนนอน
      เฟสคือค่าออฟเซ็ตทางเวลาของสัญญาณโดยพื้นฐาน โทนที่ล่าช้าออกไปไม่ทางใดก็ทางหนึ่งจะปรากฏเป็นเฟสที่ต่างออกไป อย่างไรก็ตามนี่ไม่ใช่การวัดแบบสัมบูรณ์ แต่เป็นแบบสัมพัทธ์ เนื่องจากหน่วยเป็นเรเดียนหรือมุม เมื่อครบหนึ่งรอบวงกลมค่าก็จะ “รีเซ็ต” ดังนั้นจึงบอกไม่ได้ว่าสัญญาณเลื่อนไป 1 วินาทีหรือ 2 วินาที
      ดังนั้นจากสัญญาณหนึ่งตัว หรือก็คือแอมพลิจูดตามเวลา คุณจึงได้ข้อมูลจริง ๆ สองส่วนคือขนาดและเฟสตามความถี่
      ถ้าคุณเข้าใจจำนวนจินตภาพหรือจำนวนเชิงซ้อนอยู่แล้ว สัญญาณสองตัวนี้จริง ๆ ก็เป็นเพียงขนาดและอาร์กิวเมนต์ของเอาต์พุต FFT ซึ่งเป็นฟังก์ชันเชิงซ้อนเท่านั้น
  • ในยุคของเทเลเมทรี การไม่เอา FFT ไปใช้กับ cloud telemetry เพื่อค้นหาความผิดปกติแบบมีคาบและระบบกึ่งเสถียรก่อนที่จะเกิดเหตุ แทนที่จะรอหลังเกิดเหตุ ดูเหมือนเป็นการพลาดโอกาสครั้งใหญ่
    น่าเสียดายที่นี่เป็นเรื่องที่ฉันพอมองออกว่าเป็นไปได้ แต่ยังไม่มีทักษะพอจะลงมือทำ และตารางงานก็แน่นไปหมดแล้ว
    “SLA มักถูกละเมิดมากที่สุดหลัง deploy service ไปแล้ว 23~25 นาที หืม ทำไมถึงเป็นแบบนั้น... อ้อ ไม่นะ”

    • “ขออภัยนะ Dave แอปพลิเคชันของคุณไม่สามารถ deploy ได้”
      พักเรื่องมุกตลกไว้ก่อน พื้นที่ที่สิ่งนี้ทำเงินได้จริงคือการพยากรณ์รอบของทราฟฟิกเพื่อเพิ่มหรือลดจำนวน server instance และลดต้นทุน
      ถ้าทำเป็นโปรเจกต์เวลาส่วนตัว บริษัทคงไม่มีวันอนุมัติแน่ แต่ถ้าห่อเป็นผลิตภัณฑ์สำเร็จรูป นี่คือประเภทงานที่บริษัทพร้อมซื้อทันที