[AI] FFT(Fast Fourier Transform) - 신호의 주파수를 읽자

박감자·2025년 11월 3일

시작 전에...

왜... 마지막 글이 한달전이지... (당황스럽다

용어 설명

FFT(Fast Fourier Transform, 고속 푸리에 변환)는 복잡한 신호를 주파수 성분으로 분해하는 알고리즘
이라고 인터넷이 정리해주고 있다. (고마워요 GPT)

쉽게 말해, 시간축에서 관찰한 신호(예: 소리, 진동, 전압 등)를 ‘어떤 주파수들이 얼마나 포함되어 있는가’ 로 바꿔 표현하는 수학적 도구인 것!

기본 개념은 푸리에 변환(Fourier Transform) 에서 시작한다. 기존의 푸리에 변환은 연산량이 많아 실시간 처리에 부적합했기 때문에, 이를 효율적으로 계산하는 수식이 필요했는데 이것이 ‘고속’ 푸리에 변환(FFT) 이다.

즉, FFT는 O(n²) 복잡도를 갖던 계산을 O(n log n)으로 줄여 준다고 한다. (최적화 알고리즘인건가....)

실상황 적용 예시

FFT는 AI뿐만 아니라 생각보다 다양한 분야에서 사용되는데

  • 🎵 음악/오디오 분석: 노래의 스펙트럼을 분석해 저음·고음 비율을 시각화하거나, 음성 인식 모델의 입력으로 사용
  • 🧠 의료 영상 처리: 뇌파(EEG)나 심전도(ECG)의 주파수 패턴을 분석해 이상 신호를 감지
  • ⚙️ 기계 진동 분석: 공장 설비나 엔진의 진동 데이터를 FFT로 분석해 특정 주파수에서 이상 패턴을 감지
  • 📡 통신 시스템: 송신 신호를 여러 주파수로 나누어 전송하거나, 수신 신호를 주파수별로 복원하는 과정에서 필수적으로 사용

이처럼 FFT는 ‘시간 신호 → 주파수 신호’ 변환을 통해 데이터를 더 깊이 이해할 수 있게 만드는 핵심 기술이다.
항상 나오는 참고 사진이 있는데 아래와 같다

시간에 대한 함수(혹은 신호)를 구성하고 있는 주파수 성분으로 분해하는 과정

ML/AI에서 중요한 이유와 의미

머신러닝과 인공지능에서도 FFT는 특징(feature) 추출 도구로 자주 사용된다 (그래서 열심히 공부중입니다)

  • 1D 신호(오디오, 센서 데이터): CNN이나 Transformer 모델에 입력하기 전에, 원시 시계열 데이터를 FTT로 변환하면 주파수 기반 특징을 추출
  • 2D 이미지 처리: 이미지 역시 공간 주파수로 해석할 수 있기 때문에, FFT는 노이즈 제거, 압축, 엣지 검출 등에 활용
  • 딥러닝의 해석력 강화: 모델이 학습하는 ‘패턴’이 어떤 주파수 대역에 집중되어 있는지를 분석함으로써, 모델의 편향이나 오버피팅 경향을 진단

결국, FFT는 데이터를 “시간의 흐름”뿐 아니라 “주파수의 구성”으로 바라보게 해주며, ML/AI에서 데이터 표현력의 차원을 확장시킨다.

오디오 신호 처리에 쓰이는 방식

오디오 신호는 시간에 따라 연속적으로 변화하는 진폭(amplitude) 데이터를 가지는데
이를 FFT로 변환하면, 해당 신호에 포함된 주파수(Hz)진폭의 크기를 얻을 수 있다.

  • Step 1. 원시 오디오 신호(Amplitude vs Time) 확보
  • Step 2. 일정 구간(Window)을 잘라 FFT 수행
  • Step 3. 각 구간별 주파수 스펙트럼을 연결해 스펙트로그램(Spectrogram) 생성
  • Step 4. 스펙트로그램을 ML 모델의 입력으로 사용하거나, 시각화하여 분석

이 과정은 음성 인식(Speech Recognition), 음악 장르 분류, 음향 이상 탐지 등의 핵심 기반이라고 한다.

오디오 신호 처리에서 FFT는 “소리의 정체를 밝히는 현미경” 역할이다

그래서 중요하지만, 찾다보니 다른 신호처리 과정에서도 FFT는 그야말로 "빛"으로 작용하는 기술이다.
덕분에 세상 모든 신호를 분석할 수 있게 된것

마무리

FFT는 단순히 수학적인 도구가 아니라, 데이터를 해석하는 새로운 관점을 제공한다.
시간 영역에서 보이지 않던 패턴을 주파수 영역으로 드러내며, 음악, 의료, 산업, 인공지능 등 거의 모든 기술 분야에서 활용된다고 한다

주파수의 세계를 잠깐 엿보았는데
봤으니 다시 닫읍시다 (ㅋㅋㅋ....

농담이고 다시 복습하러 올게여;;

참조

https://underflow101.tistory.com/26
https://www.acmicpc.net/blog/view/141 <- 친절한 초보자용 설명

profile
코딩하는 감자

0개의 댓글