本文簡要介紹了數學上的傅立葉變換及其在AI中的應用。 介紹傅里葉變換是有史以來最深刻的數學見解之一,但不幸的是,其含義深深地埋在了一些荒謬的方程式中。 傅立葉變換是一種將某些東西分解為一堆正弦波的方法。 像往常一樣,這個名字來自一個很久以前住的人,叫做傅里葉。 用數學術語來說,傅立葉變換是一種將信號轉換為其組成成分和頻率的技術。 傅里葉變換不僅廣泛用于信號(無線電,聲音等)處理,而且還廣泛用于圖像分析(例如,傅里葉變換)。 邊緣檢測,圖像過濾,圖像重建和圖像壓縮。 一個例子:透射電子顯微鏡圖像的傅立葉變換有助于檢查樣品的周期性。 周期性-表示模式。 數據的傅立葉變換可以擴展有關分析樣品的可訪問信息。 為了更好地理解它,請考慮信號x(t): 如果我們對另一個信號執行相同操作,并選擇相同的時間點,我們將測量其幅度。 考慮另一個信號y(t): 當我們同時發射這兩個信號或將它們加在一起時會發生什么? 當我們同時發射這兩個信號時,我們得到一個新信號,它是這兩個信號的振幅之和。 之所以如此,是因為這兩個信號被加在一起。 將兩個信號求和:z(t)= x(t)y(t) 如果只給出一個信號(x(t)和y(t)之和),我們能否恢復原始信號x(t)和y(t)? 是。 這就是傅里葉變換的作用。 它吸收信號并將其分解為組成它的頻率。 在我們的示例中,傅立葉變換會將信號z(t)分解成其組成頻率,如信號x(t)和y(t)。 傅里葉變換的作用是將我們從時域移到頻域。 Source 如果有人在想,如果我們想從頻域回到時域怎么辦? 我們可以使用傅立葉逆變換(IFT)來實現。 您需要知道的數學。'時域中的任何連續信號都可以由無窮多個正弦波唯一唯一地表示。' 這是什么意思? 這意味著,如果我們有一個由某個函數x(t)生成的信號,那么我們可以提出另一個函數f(t): 因此,無論信號有多強,我們都可以找到f(t)之類的函數,它是無窮多個正弦曲線之和,實際上可以完美地表示信號。 現在,現在出現的問題是,如何在上式中找到系數,因為這些值將決定輸出的形狀,從而決定信號的形狀。 因此,為了獲得這些系數,我們使用傅立葉變換,并且傅立葉變換的結果是一組系數。 因此,我們使用X(w)來表示傅立葉系數,它是頻率的函數,是通過求解以下積分得到的: 傅立葉變換表示為不定積分: X(w):傅立葉變換x(t):傅立葉逆變換 Fourier Transform and Inverse Fourier transform 另外,當我們實際求解上述積分時,我們得到這些復數,其中a和b對應于我們要求的系數。 連續傅立葉變換將無限持續時間的時域信號轉換成由無限數量的正弦波組成的連續頻譜。 實際上,我們處理的是離散采樣的信號,通常以固定間隔,有限的持續時間或周期性地進行。 為此,經典傅里葉變換算法可以表示為離散傅里葉變換(DFT),該函數將函數的等距樣本的有限序列轉換為離散時間的等距樣本的等長序列 傅里葉變換: 因此,這本質上是離散傅立葉變換。 我們可以進行此計算,它將產生ib形式的復數,其中有兩個傅里葉級數系數。 現在,我們知道了如何對信號進行采樣以及如何應用離散傅立葉變換。 我們想做的最后一件事是,我們想擺脫復數i,因為在mllib或systemML中不支持復數,因為它使用稱為Euler的公式來表示: 因此,如果將歐拉公式插入傅立葉變換方程并求解,它將產生實部和虛部。 如您所見,X由ib或a-ib格式的復數組成。 因此,如果您求解上述方程,您將獲得傅立葉系數a和b。 現在,如果僅將a和b的值放在f(t)的方程式中,則可以根據信號的頻率定義信號。 通常,我們使用快速傅里葉變換(FFT)算法,該算法將DFT遞歸地劃分為較小的DFT,從而大大減少了所需的計算時間。 DFT的時間復雜度為2N2,而FFT的時間復雜度為2NlogN。 為什么表示信號時要使用余弦和正弦函數?雖然Sine和Cosine函數最初是基于直角三角形定義的,但從當前情況來看,這并不是最好的方法。 您可能已經被教會認識到正弦函數是'斜邊對立的',但是現在該是一個稍微不同的觀點了。 考慮單位圓: 在笛卡爾平面上。 假設通過原點的直線與軸在逆時針方向上形成角度θ,則直線與圓的交點為(cos?θ,sin?θ)。 想一想。 這種觀點與較早的觀點相關嗎? 這兩個定義是相同的。 假設我們通過使θ線性增加來開始旋轉直線。 您會得到如下信息: Credits 正弦和余弦函數在某些情況下可以說是最重要的周期函數: · SHM振蕩器中位移,速度和加速度如何隨時間變化的周期性函數是正弦函數。 · 每個粒子都有波動的性質,反之亦然。 這是德布羅意的波粒對偶。 波始終是某種物理量的正弦函數(例如EM波的電場和聲波的壓力)。 聲音本身就是壓力擾動,它通過能夠壓縮和擴展的材料介質傳播。 隨聲波變化的一點是壓力,它隨時間呈正弦變化。 傅立葉變換的收斂如果一個點以恒定的速度繞圓運行,則其在地面上方的高度將跟蹤正弦函數。 點移動的速度對應于頻率,圓的半徑對應于振幅。 再增加1個圓圈, 再添加2個圈子, 再添加9個圈子: 幾乎是離散的波形。 由于傅立葉定理,我們可以生成具有適當頻率和半徑的圓的任何信號。 例如,這是一個近似的方波。 我使用了來自#125編碼挑戰的Dan Shiffman的代碼來制作動畫。 您可以從他的GitHub獲取javascript代碼,也可以嘗試一下。 人工智能中的傅立葉變換傅里葉變換是線性函數,可引起非線性。 使用卷積。 2個信號乘積的傅立葉變換是2個信號的卷積。 令x(t)和y(t)是兩個具有卷積X(t)* Y(t)的函數,則 F {x(t).y(t)} = X(t)* Y(t) 請記住,時域中的卷積是頻域中的乘法。 這就是傅立葉變換主要用于機器學習,尤其是深度學習算法的方式。 我將以卷積神經網絡(CNN)為例; CNN中90%的計算是卷積,并且有許多方法可以降低這種計算的強度,其中之一是快速傅立葉變換(FFT)。 代替卷積,輸入和濾波器矩陣通過FFT轉換到頻域,以進行乘法。 然后,通過逆FFT(IFFT)將輸出轉換回時域。 FFT的另一用途是可用于降維或特征提取。 當數據集中的每個樣本都是信號(時間序列或圖像等)時,它可能包含數千個樣本。 但是它們實際上可能只對應于傅立葉域中的幾個點(特別是如果存在一定的周期性)。 這大大簡化了問題。 有時使用傅立葉域可能會提供平移不變性。 也就是說,即使信號之間存在滯后,這種方差也不會影響它們在傅立葉域中的表示。 傅立葉變換的Python實現可以使用numpy和scipy python庫完成FFT的最簡單實現。 %matplotlib inlineimport numpy as npimport matplotlib.pyplot as pltimport scipy.fftpack# Number of samplepointsN = 600# sample spacingT = 1.0 / 800.0x = np.linspace(0.0, N*T, N)y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x)yf = scipy.fftpack.fft(y)xf = np.linspace(0.0, 1.0/(2.0*T), N/2)fig, ax = plt.subplots()ax.plot(xf, 2.0/N * np.abs(yf[:N//2]))plt.show() FFT plot 結論FFT用于數字記錄,采樣,加法合成和音高校正軟件。 FFT的重要性源于以下事實:它使在頻域中的工作與在時域或空間域中的工作在計算上同等可行。 FFT的一些重要應用包括: · 快速大整數和多項式乘法 · Toeplitz,循環矩陣和其他結構化矩陣的高效矩陣向量乘法 · 過濾算法 · 離散余弦或正弦變換的快速算法(例如用于JPEG和MPEG / MP3編碼和解碼的快速離散余弦變換)。 · 快速切比雪夫逼近。 · 求解差分方程。 · 同位素分布的計算。 好吧,這就是本文的全部內容,希望大家喜歡閱讀,如果本文對您有所幫助,我將感到非常高興。 隨時在評論部分分享您的評論/想法/反饋。 謝謝閱讀!!! (本文翻譯自Nagesh Singh Chauhan的文章《Fourier Transformation for a Data Scientist》,參考:https:///fourier-transformation-for-a-data-scientist-1f3731115097) |
|
來自: 天朗氣清uizw04 > 《數學》