الأرقام المعقدة لذكاء الذكاء الاصطناعي
Type: Learn
Languages: Python, TypeScript
Prerequisites: Phase 1, Lessons 01-04 (linear algebra, calculus)
Time: ~60 minutes
أهداف التعلم
- أداء الحسابات المعقدة (اضافة، مضاعفة، تقسيم، مضافية) في كل من الشكل المستطيل والقطبي
- تطبيق صيغة أولر لتحويل بين المعارض المعقدة والظروف الثلاثية
- تنفيذ تحويل فوريه المميز باستخدام جذور معقدة من الوحدة
- شرح كيفية الدوران المعقدة التي تتمثل في رمزات المواقع الصناعية في المتحولات
المشكلة
فتحت ورقة حول تحويلات فوريير وهناكiفي كل مكان. تنظر إلى ترانسفورمات التشفير الموضعي وترىsinوcosفي ترددات مختلفة -- الأجزاء الحقيقية والخيالية من المكثفات المعقدة.
يبدو الأرقام المعقدة مجردة. يبدو أن نظام الأرقام المبني على الجذر التربيعي من -1 يبدو مثل خدعة رياضية. لكنه ليس خدعة. إنه اللغة الطبيعية للدورات والتذبذب. في كل مرة تدور فيها شيء أو تتأرجح أو تتذبذب، الأرقام المعقدة هي الأداة الصحيحة.
بدون فهم الأرقام المعقدة، لا يمكنك فهم تحويل فوريه المختلف. لا يمكنك فهم FFT. لا يمكنك فهم كيفية عمل RoPE (إدراج الموقف المتحرك) في نماذج اللغة الحديثة. لا يمكنك فهم لماذا تشفيرات الموقف السينوسيدال في ورقة المحول الأصلية تستخدم تردداتها.
هذه الدروس تبني الرياضيات المعقدة من الصفر، وتربطها بالهندسة، وتريك بالضبط أين تظهر الأرقام المعقدة في التعلم الآلي.
المفهوم
ما هو الرقم المعقد؟
عدد معقد يحتوي على جزءين: جزء حقيقي و جزء خيالي.
z = a + bi
where:
a is the real part
b is the imaginary part
i is the imaginary unit, defined by i^2 = -1هذا هو الأمر. تمد خط الأعداد إلى مستوى. الأرقام الحقيقية تقع على محور واحد. الأرقام الخيالية تقع على الآخر. كل عدد معقد هو نقطة في هذا المستوى.
الحساب المعقد
Addition.أضف الأجزاء الحقيقية معاً، أضف الأجزاء الخيالية معاً.
Multiplication.استخدم قانون التوزيع وتذكر ذلكi^2 = -1. . .
Conjugate.أعدّ علامة الجزء الخيالي
إن نسبة عدد معقد ومجموعه هو دائمًا حقيقي:
Division.مضاعفة العداد والسماسرة بموجب المكونات من السماسرة.
هذا يزيل الجزء الخيالي من المُعنى، مما يعطي رقمًا معقدًا نظيفًا.
الطائرة المعقدة
الطائرة المعقدة ترسم كل رقم معقد إلى نقطة ثنائية الأبعاد. المحور الأفقي هو المحور الحقيقي، والمحور الرأسي هو المحور الخيالي.
z = 3 + 2i corresponds to the point (3, 2)
z = -1 + 0i corresponds to the point (-1, 0) on the real axis
z = 0 + 4i corresponds to the point (0, 4) on the imaginary axisعدد معقد هو في نفس الوقت نقطة و متجه من الأصل. هذا التفسير المزدوج هو ما يجعل الأرقام المعقدة مفيدة للجيومétrie.
شكل قطبي
يمكن وصف أي نقطة في المسطح عن طريق مسافةها من المنشأ و زاويته من المحور الحقيقي الإيجابي.
شكل مستطيل(a + bi)هو جيد للضم.(r, \theta)هو جيد للضرب.
Multiplication in polar form.ضرب الكبيرة، أضف الزوايا.
هذا هو السبب في أن الأرقام المعقدة مثالية للدورات. مضاعفة عدد معقد مع الحجم 1 هو دوران نقي.
صيغة أولر
الجسر بين المكثفين المعقدين والتغنومترية:
هذه هي أهم صيغة في هذه الدروس\theta = \pi:
خمسة ثابتات أساسية (e،i،\pi، 1 ، 0) مرتبطة في معادلة واحدة.
لماذا صيغة أويلر مهمة ل ML
صيغة (أولر) تقول ذلكe^{i\theta}تتبع دائرة الوحدة\thetaيختلف.\theta = 0، أنت في(1, 0)في\theta = \pi/2، أنت في(0, 1)في\theta = \pi، أنت في(-1, 0)في\theta = 3\pi/2، أنت في(0, -1). الدوران الكامل هو\theta = 2\pi. . .
هذا يعني أن المُعَدّيات المعقدة هي دورانات، والدورات موجودة في كل مكان في معالجة الإشارات و ML.
اتصال مع الدوران الثنائي الأبعاد
مضاعفة العدد المعقد (x + yi)منe^{i\theta}يدور النقطة(x, y)بالزاوية\thetaحول الأصل
يُنتجون نتائج متطابقة. المضاعفة المعقدة هي الدوران في 2D. المصفوفة الدورانية هي مجرد مضاعفة معقدة مكتوبة في علامة المصفوفة.
graph TD
subgraph "Complex Multiplication = 2D Rotation"
A["z = x + yi<br/>Point (x, y)"] -->|"multiply by e^(i*theta)"| B["z' = z * e^(i*theta)<br/>Point rotated by theta"]
end
subgraph "Equivalent Matrix Form"
C["vector [x, y]"] -->|"multiply by rotation matrix"| D["[x cos theta - y sin theta,<br/> x sin theta + y cos theta]"]
end
B -.->|"same result"| Dالفازورات والإشارات المتناوبة
معقدة تعريفةe^{i\omega t}هو نقطة تدور حول دائرة الوحدة في تردد زاوي \omega. كماtيزيد النقطة تتبع الدائرة
الجزء الحقيقي من هذه النقطة المدارية هو\cos(\omega t)الجزء الخيالي هو\sin(\omega t)إشارة سينوسوايدل هي ظل عدد معقد يتناوب
هذه هي تمثيل الفازور. بدلاً من تتبع موجة سينوسية متذبذبة، تتبع سهمًا يتناوب بسلاسة. تحولات المراحل تصبح تعويضات الزاوية. تغيرات الضمنية تصبح تغيرات الكبيرة. إضافة الإشارات تصبح إضافة متجهة.
جذور الوحدة
- نعمN-أصول الوحدة هيNالنقاط المتنافسة على مسافة متساوية على دائرة الوحدة:
لأجلN = 4، الجذور هي: 1, i, -1, -i(أربعة نقاط الخريطة)
لأجلN = 8، تحصل على أربعة نقاط البوصلة بالإضافة إلى أربعة شوارع.
جذور الوحدة هي أساس تحويل فوريه المميز. يقوم DFT بتفكيك الإشارة إلى مكونات في هذهNترددات مساوية
اتصال مع DFT
تحويل إشارة فوريه المفصلةx[0], x[1], \ldots, x[N-1]هو:
كل واحدX[k]يُقيّم مدى ارتباط الإشارة مع الـk-أصل الوحدة-- سينوسيد معقد في الترددk. DFT يقطع إشارة إلىNوتخبرك بمدى ومرحلة كل منها
لماذا أنا لست خيالي
كلمة "خيالية" هي حادث تاريخي استخدمها ديكارتس بشكل مرفوضiلا تكون الأرقام السلبية أكثر خيالاً مما كانت عليه عندما رفض الناس لأول مرة. الأرقام السلبية تجيب على "ما الذي يمكنك إزالة 5 من 3 للحصول عليه؟" الوحدة الخيالية تجيب على "ما الذي يمكنك التربيعه للحصول على -1؟"
أكثر فائدة:iهو عامل دوران 90 درجة. ضرب عدد حقيقي ب iمرة واحدة، تدور 90 درجة إلى المحور الخيالية.iمرة أخرى (i^2و تدور في 90 درجة أخرى -- الآن أنت تُشير في الاتجاه الحقيقي السلبي.i^2 = -1ليس غامضًا، إنه نصف جولة بنيت من أربع جولتين
هذا هو السبب في أن الأرقام المعقدة موجودة في كل مكان في الهندسة. أي شيء يتناور -- موجات كهرومغناطيسية، وحالات كمية، تذبذبات الإشارة، تشفير المواقع -- يتم وصفها بطبيعة الحال بأرقام معقدة.
المعقدة المعروضات مقابل وظائف التغنومترية
قبل صيغة (أويلر) ، كتب المهندسون إشارات مثلA \cos(\omega t + \phi)-- الطولA, التردد\omega، مرحلة\phiهذا يعمل لكن يجعل الحساب مؤلم إضافة كوزينز مع مراحل مختلفة تتطلب هويات تثريجية
مع تعدد المعايير المعقدة، نفس الإشارة هيA e^{i(\omega t + \phi)}إضافة إشارات اثنين هو مجرد إضافة اثنين من الأرقام المعقدة. ضرب (تجديد) هو مجرد ضرب الكبرى وإضافة الزوايا. تحولات المرحلة تصبح إضافة الزاوية. تحولات التردد تصبح مضاعفات بالفازورات.
انتقلت مجال معالجة الإشارات بأكمله إلى علامة تعريضية معقدة لأن الرياضيات أكثر نظافة. "الإشارة الحقيقية" هي دائمًا الجزء الحقيقي من التمثيل المعقد. يتم حمل الجزء الخيالي معًا كحاسبة ، مما يجعل جميع الجبر يعمل بشكل طبيعي.
اتصال مع المحولات
Sinusoidal positional encodings(ورقة "تنسفورمير" الأصلية):
أزواج الخطيئة والجسم هي الأجزاء الحقيقية والخيالية من المضادات المعقدة في ترددات مختلفة. كل تردد يوفر "قرار" مختلف لموقف التشفير. تتغير ترددات منخفضة ببطء (موقف قاسي). تتغير ترددات عالية بسرعة (موقف جيد). معاً يعطي كل موقف بصمة أصابع تردد فريدة.
RoPE (Rotary Position Embedding)يزيد هذا الأمر. يضاعف صراحة المتجهات السائدة والكليدية بواسطة ماتريسيات دوران معقدة. يصبح الموقف النسبي بين رموزين زاوية دوران. يتم حساب الاهتمام باستخدام هذه المتجهات المدوجة ، مما يجعل النموذج حساسًا للموقف النسبي من خلال مضاعفة معقدة.
| Operation | Algebraic Form | Geometric Meaning |
|---|---|---|
| Addition | (a+c) + (b+d)i | Vector addition in the plane |
| Multiplication | (ac-bd) + (ad+bc)i | Rotate and scale |
| Conjugate | a - bi | Reflect over real axis |
| Magnitude | \sqrt{a^2 + b^2} | Distance from origin |
| Phase | \mathop{\mathrm{atan2}}(b, a) | Angle from positive real axis |
| Division | multiply by conjugate | Reverse rotation and rescale |
| Power | r^n e^{in\theta} | Rotate n times, scale by r^n |
graph LR
subgraph "Unit Circle"
direction TB
U1["e^(i*0) = 1"] -.-> U2["e^(i*pi/2) = i"]
U2 -.-> U3["e^(i*pi) = -1"]
U3 -.-> U4["e^(i*3pi/2) = -i"]
U4 -.-> U1
end
subgraph "Applications"
A1["Euler's formula:<br/>e^(i*theta) = cos + i*sin"]
A2["DFT uses roots of unity:<br/>e^(2*pi*i*k/N)"]
A3["RoPE uses rotation:<br/>q * e^(i*m*theta)"]
end
U1 --> A1
U1 --> A2
U1 --> A3بناءها
الخطوة الأولى: فئة معقدة
بناء فئة أرقام معقدة تدعم الحساب والحجم والمرحلة والتحويل بين الأشكال المستقيمة والقطبي.
import math
class Complex:
def __init__(self, real, imag=0.0):
self.real = real
self.imag = imag
def __add__(self, other):
return Complex(self.real + other.real, self.imag + other.imag)
def __mul__(self, other):
r = self.real * other.real - self.imag * other.imag
i = self.real * other.imag + self.imag * other.real
return Complex(r, i)
def __truediv__(self, other):
denom = other.real ** 2 + other.imag ** 2
r = (self.real * other.real + self.imag * other.imag) / denom
i = (self.imag * other.real - self.real * other.imag) / denom
return Complex(r, i)
def magnitude(self):
return math.sqrt(self.real ** 2 + self.imag ** 2)
def phase(self):
return math.atan2(self.imag, self.real)
def conjugate(self):
return Complex(self.real, -self.imag)الخطوة الثانية: التحويل القطبي وصيغة أولر
def to_polar(z):
return z.magnitude(), z.phase()
def from_polar(r, theta):
return Complex(r * math.cos(theta), r * math.sin(theta))
def euler(theta):
return Complex(math.cos(theta), math.sin(theta))التحقق من: euler(theta).magnitude()يجب أن يكون دائما 1.0. euler(0)يجب أن يعطي (1, 0). euler(pi)يجب أن يعطي (-1, 0).
الخطوة الثالثة: التناوب
تدور نقطة(x, y)بالزاوية\thetaهو مضاعفة معقدة واحدة:
point = Complex(3, 4)
rotated = point * euler(math.pi / 4)الحجم يبقى نفسه فقط الزاوية تتغير
الخطوة الرابعة: DFT من الرياضيات المعقدة
def dft(signal):
N = len(signal)
result = []
for k in range(N):
total = Complex(0, 0)
for n in range(N):
angle = -2 * math.pi * k * n / N
total = total + Complex(signal[n], 0) * euler(angle)
result.append(total)
return resultهذا هوO(N^2)كل إصدارX[k]هو مجموع عينات الإشارة مضاعفة بأصله من الوحدة.
الخطوة 5: DFT العكسية
يقوم DFT العكسي بإعادة تشكيل الإشارة الأصلية من طيفها. التغييرات الوحيدة من DFT الأمامية: قم بتعديل الإشارة في المُعبر وتقسمها ب N. . .
def idft(spectrum):
N = len(spectrum)
result = []
for n in range(N):
total = Complex(0, 0)
for k in range(N):
angle = 2 * math.pi * k * n / N
total = total + spectrum[k] * euler(angle)
result.append(Complex(total.real / N, total.imag / N))
return resultهذا يعطيك إعادة بناء مثالية. تطبيق DFT، ثم IDFT، وتحصل على إشارة الأصلية إلى دقة الآلة. لا يوجد معلومات ضائعة.
الخطوة السادسة: جذور الوحدة
def roots_of_unity(N):
return [euler(2 * math.pi * k / N) for k in range(N)]التحقق من اثنين من الخصائص:
- كل جذور لها حجم بالضبط 1.
- مجموع كل شيءNالجذور هي صفر (إنها تُلغي بالتناظر).
هذه الخصائص هي ما يجعل DFT قابلة للتحويل. جذور الوحدة تشكل أساساً متقاطعًا للمجال المتردد.
استخدمها
بايثون لديه دعم متكامل للأرقام المعقدة.jيمثل الوحدة الخيالية
z = 3 + 2j
w = 1 + 4j
print(z + w)
print(z * w)
print(abs(z))
import cmath
print(cmath.phase(z))
print(cmath.exp(1j * cmath.pi))بالنسبة للمصفوفات، يتعامل numpy بالأرقام المعقدة بشكل طبيعي:
import numpy as np
z = np.array([1+2j, 3+4j, 5+6j])
print(np.abs(z))
print(np.angle(z))
print(np.conj(z))
print(np.real(z))
print(np.imag(z))
signal = np.sin(2 * np.pi * 5 * np.linspace(0, 1, 128))
spectrum = np.fft.fft(signal)
freqs = np.fft.fftfreq(128, d=1/128)أرسله
أركضcode/complex_numbers.pyأوnpx tsx code/complex_numbers.tsلإنتاجoutputs/skill-complex-arithmetic.md. . .
التمارين
- Complex arithmetic by hand.الحساب(2 + 3i)(4 - i)و التحقق من ذلك باستخدام الرمز ثم الحساب(5 + 2i) / (1 - 3i)رسم كلتا النتائج على المستوى المعقد وتحقق من أن الضربة تدور وتحقيق النطاق الأول.
- Rotation sequence.ابدأ بالنقطة(1, 0). مضاعفة بـe^{i\pi/6}اثني عشر مرة تأكد من عودتك(1, 0)بعد 12 مضاعفة، طبع الإحداثيات في كل خطوة وتأكد أنها تتبع 12 غون عادية.
- DFT of a known signal.إخلق إشارة هي مجموع \sin(2\pi \cdot 3t)و0.5 \sin(2\pi \cdot 7t)قم بتشغيل DFT، تحقق أن الطيف الكبير لديه قمم في ترددات 3 و 7, مع ذروة في 7 هو نصف ارتفاع ذروة في 3.
- Roots of unity visualization.احسب الجذر الثامن من الوحدة، تحقق ان مجموعها الى الصفر، تحقق ان مضاعفة أي جذور بالجذر البدائيe^{2\pi i/8}يعطي الجذر التالي
- Rotation matrix equivalence.لـ 10 زوايا عشوائية و 10 نقاط عشوائية، تحقق من أن مضاعفة معقدة تعطى نفس النتيجة مثل مضاعفة المصفوفة المتجهة مع المصفوفة الدورانية 2x2. طبع أقصى فرق عددي.
إشارات
Exercise 1.توسيع المنتج مع i^2 = -1، ثم تقسيم من خلال مضاعفة الجزء العلوي والسفل بالخليط1 + 3iتحقق من المنتج معComplex(2, 3) * Complex(4, -1): هيmagnitude()يجب أن يكون مساويا لمربع الحجمين، وphase()يجب أن يكون مساوياً لمجموع المراحل.
Exercise 2.قم بالخطوة معeuler(math.pi / 6)و تضاعف 12 مرة. في كل خطوة، تحقق من أن الحجم يبقى 1 وأن الزاوية تزداد 30 درجة. يجب أن تكون النقطة النهائية داخل 1e-12 من (1, 0).
Exercise 3.قم بتحديد النقاط الزمنيةt = n/32و اتصلdftانظر فقط إلى القمامة 0 إلى 15 لأن النصف العلوي هو صورة مرآة.kلخدّة من التوسعAهوAN/2، لذا توقع حوالي 16 في السطح 3 و حوالي 8 في السطح 7.
Exercise 4.اتصلroots_of_unity(8)و أضف الجذور: يجب أن يكون حجم المجموع قريب من 0. تقسيم كل جذر بالجذر السابق وتحقق من أن كل نتيجة متساوية euler(2 * math.pi / 8). . .
Exercise 5.المصفوفة الدورانية هي [cos t، -sin t، [sin t، cos t]. لكل زاوية ونقطة، الحساب euler(t) * Complex(x, y)و المربع المنتج، ثم تسجيل أكبر الفرق المطلق.10^{-15}. . .
الشروط الرئيسية
| Term | What it means |
|---|---|
| Complex number | A number a + bi where a is the real part, b is the imaginary part, and i^2 = -1 |
| Imaginary unit | The number i, defined by i^2 = -1. Not imaginary in the philosophical sense -- it is a rotation operator |
| Complex plane | The 2D plane where the x-axis is real and the y-axis is imaginary. Also called the Argand plane |
| Magnitude (modulus) | The distance from the origin: \sqrt{a^2 + b^2}. Written as \lvert z \rvert |
| Phase (argument) | The angle from the positive real axis: \mathop{\mathrm{atan2}}(b, a). Written as \arg(z) |
| Conjugate | The mirror image across the real axis: conjugate of a + bi is a - bi |
| Polar form | Expressing z as r e^{i\theta} instead of a + bi. Makes multiplication easy |
| Euler's formula | e^{i\theta} = \cos\theta + i \sin\theta. Connects exponentials to trigonometry |
| Phasor | A rotating complex number e^{i\omega t} representing a sinusoidal signal |
| Roots of unity | The N complex numbers e^{2\pi i k/N} for k = 0 to N-1. N equally spaced points on the unit circle |
| DFT | Discrete Fourier Transform. Decomposes a signal into complex sinusoidal components using roots of unity |
| RoPE | Rotary Position Embedding. Uses complex multiplication to encode relative position in transformer attention |
المزيد من القراءة
- Visual Introduction to Euler's Formula- يُبني الحس البدني الهندسي دون علامات ثقيلة
- Su et al.: RoFormer (2021)- الورقة التي تعرضت إدخال الموقف الدواري باستخدام الدوران المعقد
- Vaswani et al.: Attention Is All You Need (2017)- ورقة "ترانسفارمر" الأصلية مع تشفيرات موقفية سينوسيدالية
- 3Blue1Brown: Euler's formula with introductory group theory- شرح بصري لسببe^{i\pi} = -1
- Needham: Visual Complex Analysis- أفضل معالجة بصرية للأرقام المعقدة، مليئة بالبصيرة الهندسية
- Strang: Introduction to Linear Algebra, Ch. 10- الأرقام المعقدة في سياق الجبر الخطوي والقيم الخاصة
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.