- [’23 ICLR] PatchTST : A TIME SERIES IS WORTH 64 WORDS: LONG-TERM FORECASTING WITH TRANSFORMERS
- [’24 ICLR] ITRANSFORMER: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING
- [’21 NeurIPS] Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting
- [’21 AAAI] Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting
- [’22 ICML] FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting
1. 들어가며
시계열 예측은 금융, 기후, 에너지, 의료 등 다양한 분야에서 중요한 역할을 합니다. 최근 Transformer 기반 모델들이 자연어 처리(NLP)에서 뛰어난 성능을 보이며 주목받았고, 이를 시계열 예측에 적용하려는 연구가 활발히 이루어지고 있습니다. 그러나 기존 Transformer 모델들은 여전히 몇 가지 중요한 한계를 가지고 있습니다.
첫 번째 문제는 계산 복잡도가 높다는 점입니다. Transformer의 self-attention 연산은 모든 입력 시점 간의 관계를 학습해야 하기 때문에 입력 길이가 N일 때 연산량이 O(N^2)으로 증가합니다. 이는 긴 시계열 데이터를 다룰 때 연산량이 급격히 증가하는 문제를 야기합니다. 이를 해결하기 위해 다양한 sparsity 기법이 연구되었지만, 여전히 연산 비용이 높은 것은 Transformer 기반 시계열 모델의 근본적인 한계로 남아 있습니다.
두 번째 문제는 글로벌 패턴 학습의 어려움입니다. 시계열 데이터는 특정 시점에서의 관계만 중요한 것이 아니라, 전체적인 패턴(Trend)과 주기적인 변화(Seasonality)를 함께 학습하는 것이 매우 중요합니다. 기존 Transformer 모델들은 attention 메커니즘을 활용하여 단기적인 의존성을 효과적으로 학습할 수 있지만, 전체적인 데이터 분포(Global Distribution)를 학습하는 데 어려움이 있어 장기적인 예측 성능이 떨어지는 문제가 발생합니다.
세 번째 문제는 고주파(High-Frequency) 성분을 효과적으로 학습하지 못한다는 점입니다. 시계열 데이터는 저주파 성분(장기적인 변화)과 고주파 성분(단기적인 변동)이 혼재되어 있습니다. 기존 Transformer 기반 모델들은 일반적으로 저주파 성분을 학습하는 데 초점을 맞추고 있지만, 고주파 성분을 제대로 학습하지 못하면 예측 성능이 저하되며, 특정 주기적인 변동을 놓치는 문제가 발생할 수 있습니다.
이러한 문제를 해결하기 위해 FEDformer가 제안되었습니다. FEDformer는 기존 Transformer 모델들의 연산량 문제를 해결하고, 장기적인 시계열 패턴을 효과적으로 학습하기 위해 Fourier Transform을 활용하여 Self-Attention을 대체하고, MOE(Mixture of Experts) Decomposition 기법을 도입하며, Frequency Enhanced Attention을 적용하는 방식으로 설계되었습니다.
이번 포스팅에서는 기존 Transformer 기반 시계열 예측 모델들의 한계를 분석하고, FEDformer가 이를 어떻게 해결하는지 자세히 살펴보겠습니다. 또한, 실험 결과를 통해 FEDformer가 기존 모델들과 비교하여 어떤 성능을 보이는지 평가하고, 마지막으로 FEDformer의 장점과 한계를 정리하겠습니다. 먼저, 기존 Transformer 모델이 시계열 예측에서 어떤 문제를 가지고 있었는지 살펴보겠습니다.
2. 기존 방법의 한계
Transformer 기반 모델들은 시계열 예측에서 강력한 성능을 보이며, 기존 RNN이나 LSTM 기반 모델들보다 더 긴 의존성을 학습하는 데 유리한 구조를 가지고 있습니다. 하지만 Transformer 모델이 도입된 이후에도 여전히 해결되지 않은 몇 가지 근본적인 한계가 존재합니다. 특히, 계산 복잡도가 높고, 전체적인 데이터 분포(global distribution)를 학습하는 능력이 부족하며, 고주파(high-frequency) 성분을 효과적으로 학습하지 못하는 문제가 있습니다.
2.1 계산 복잡도가 여전히 높음
Transformer 모델의 핵심 연산인 self-attention은 입력 길이가 N일 때 O(N^2)의 연산량을 필요로 합니다. 이를 해결하기 위해 Informer, Autoformer 등에서는 self-attention의 연산량을 줄이는 다양한 기법들이 제안되었지만, 여전히 완전히 해결되지 않은 문제로 남아 있습니다. 특히, 장기 시계열 예측(Long-term Series Forecasting, LSTF)에서는 긴 입력 시퀀스를 다룰 필요가 있는데, Transformer 기반 모델들은 이러한 긴 입력을 처리하는 과정에서 과도한 메모리 사용과 연산량 증가로 인해 효율성이 떨어지는 문제가 발생합니다.
최근 연구에서는 self-attention의 연산량을 줄이기 위해 다양한 sparse attention 기법이나, Autoformer처럼 self-attention을 다른 연산으로 대체하려는 시도들이 이루어지고 있습니다. 하지만 기존의 Transformer 기반 모델들은 여전히 입력 길이가 길어질수록 연산량이 급증하며, 실용적으로 사용하기 어려운 경우가 많습니다.
2.2 Global Distribution을 잘 학습하지 못함
Transformer 모델들은 self-attention을 통해 로컬(context) 단위에서의 패턴을 학습하는 데 강점이 있지만, 전체적인 데이터 분포(global distribution)를 학습하는 능력이 부족한 경우가 많습니다. 특히, 시계열 데이터는 전체적인 추세(trend)와 계절성(seasonality)가 중요한 요소인데, 기존 Transformer 기반 모델들은 이러한 장기적인 패턴을 충분히 학습하는 데 한계가 있습니다.
Autoformer에서는 이러한 문제를 해결하기 위해 시계열 데이터를 trend와 seasonal 성분으로 분해하는 Decomposition Mechanism을 도입하였지만, 여전히 시계열의 전체적인 분포를 명확하게 학습하는 데 어려움을 겪고 있습니다. 특히, 데이터의 전체적인 분포를 잘 반영하지 못하면 예측이 불안정해지고, 특정 패턴에 과적합(overfitting)하는 문제가 발생할 수 있습니다.
2.3 고주파(High-Frequency) 성분을 잘 학습하지 못함
시계열 데이터에는 저주파 성분(장기적인 변화)과 고주파 성분(단기적인 변동)이 혼재되어 있습니다. 기존 Transformer 기반 모델들은 대부분 저주파 성분을 잘 학습하는 데 집중하는 반면, 고주파 성분을 효과적으로 학습하는 능력은 부족합니다.
이는 Transformer의 self-attention이 데이터의 전체적인 관계를 학습하는 방식이기 때문입니다. 기존 Transformer 기반 모델들은 attention 연산을 통해 장기적인 의존성을 학습하는 데 유리하지만, 단기적인 변동을 반영하는 데는 최적화되어 있지 않습니다. 특히, 주기성이 강한 데이터에서 Transformer 모델이 고주파 성분을 잘 학습하지 못하면, 예측 성능이 저하되고, 특정 주기적인 변동을 놓치는 문제가 발생할 수 있습니다.
3. 제안 방법: FEDformer
FEDformer는 기존 Transformer 기반 시계열 모델들이 가진 한계를 극복하기 위해 제안되었습니다. 특히, Fourier Transform을 활용하여 Self-Attention 연산을 대체하고, MOE(Mixture of Experts) 기반의 Decomposition 기법을 도입하며, Frequency Enhanced Attention을 적용하여 연산량을 줄이면서도 성능을 유지하는 것이 주요 목표입니다. 기존 Transformer 모델들이 가지는 높은 계산 복잡도, global distribution 학습의 어려움, 고주파 성분을 효과적으로 학습하지 못하는 문제를 해결하기 위해 FEDformer는 새로운 아키텍처를 도입하였습니다.
3.1 Fourier Transform이란
Fourier Transform(푸리에 변환)은 시간 도메인(time domain)의 데이터를 주파수 도메인(frequency domain)으로 변환하는 기법입니다. 시계열 데이터는 보통 시간에 따른 변화를 나타내지만, 주파수 도메인으로 변환하면 데이터가 어떠한 주파수 성분으로 구성되어 있는지를 분석할 수 있으며, 특정한 패턴을 더욱 명확하게 추출할 수 있습니다.
FEDformer는 이러한 Fourier Transform을 활용하여 시계열 데이터를 직접 분석하는 대신, 주파수 도메인에서 중요한 성분만을 선택하여 학습하는 방식을 채택하였습니다. 기존 Transformer 기반 모델들은 시간 도메인에서 모든 시점을 다루어야 했지만, FEDformer는 불필요한 연산을 제거하고 더 중요한 주파수 성분에 집중할 수 있도록 설계되었습니다.
코드로 보면 이해하기 쉬운데요,
import numpy as np
import matplotlib.pyplot as plt
# 1. 시뮬레이션 데이터 생성 (2개 채널의 다변량 시계열 데이터)
N = 100 # 시간축 데이터 개수
t = np.linspace(0, 1, N) # 시간 변수 (0초~1초)
channel_1 = np.sin(2 * np.pi * 5 * t) + 0.5 * np.sin(2 * np.pi * 20 * t) # 5Hz + 20Hz 성분 포함
channel_2 = np.cos(2 * np.pi * 3 * t) + 0.3 * np.cos(2 * np.pi * 15 * t) # 3Hz + 15Hz 성분 포함
# 2. Fourier Transform 적용
freqs = np.fft.fftfreq(N, d=(t[1] - t[0])) # 주파수 값 계산
fft_channel_1 = np.fft.fft(channel_1) # Fourier 변환
fft_channel_2 = np.fft.fft(channel_2)
# 3. 결과 시각화
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
# 원본 시계열 데이터
axes[0, 0].plot(t, channel_1, label="Channel 1")
axes[0, 0].set_title("Original Time Series - Channel 1")
axes[0, 1].plot(t, channel_2, label="Channel 2", color="orange")
axes[0, 1].set_title("Original Time Series - Channel 2")
# 주파수 도메인 (Fourier 변환 결과)
axes[1, 0].stem(freqs[:N//2], np.abs(fft_channel_1[:N//2]), linefmt="b-", markerfmt="bo", basefmt=" ")
axes[1, 0].set_title("Frequency Domain - Channel 1")
axes[1, 1].stem(freqs[:N//2], np.abs(fft_channel_2[:N//2]), linefmt="r-", markerfmt="ro", basefmt=" ")
axes[1, 1].set_title("Frequency Domain - Channel 2")
plt.tight_layout()
plt.show()
위 코드를 실행하면 나오는 결과는 다음과 같습니다.
![['22 ICML] FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting 1 그림1. Fourier Transform 결과](https://ffighting.net/wp-content/uploads/2025/03/image-27-1024x681.png)
위쪽의 시간에 따른 데이터가 아래쪽의 주파수를 축으로하는 그래프로 변환되었으며, 각 시계열의 주파수가 강하게 반응하는 모습을 볼 수 있습니다.
3.2 MOE Decomposition: Mixture of Experts 기반 분해 기법
FEDformer는 기존 Autoformer에서 제안된 Decomposition Mechanism을 더욱 발전시켜, MOE(Mixture of Experts) Decomposition 기법을 도입하였습니다. 기존 Autoformer에서는 시계열 데이터를 단순히 Trend(장기적인 변화)와 Seasonal(주기적인 변동)로 분리하는 방식을 사용하였지만, FEDformer는 보다 정교한 분해 방식을 적용하여 각각의 전문가 모델이 특정 주파수 성분을 더 효과적으로 학습할 수 있도록 개선하였습니다.
MOE Decomposition의 핵심 아이디어는 시계열 데이터를 하나의 방식으로 단순 분해하는 것이 아니라, 여러 개의 전문가 네트워크(Experts)가 서로 다른 패턴을 학습하도록 하는 것입니다. 연산 과정은 다음과 같이 이루어집니다.
- 입력된 시계열 데이터를 주파수 도메인으로 변환한 후, 여러 개의 sub-model(Experts)이 서로 다른 주파수 대역을 학습하도록 분리합니다.
- 각 Expert는 특정한 주파수 영역에서의 변동을 포착하여 학습하며, 이를 통해 하나의 모델이 모든 패턴을 학습하는 기존 방식보다 더 효과적으로 시계열 데이터를 표현할 수 있습니다.
- 마지막으로, 모든 Expert들의 예측 결과를 통합하는 Weighted Aggregation(가중 합성) 과정을 거쳐 최종 예측값을 도출합니다.
이 방식은 기존 Decomposition 기법보다 더 정밀한 주파수 분해가 가능하며, 각각의 전문가 모델이 특정 주파수 대역에 특화되어 학습할 수 있기 때문에 모델의 표현력이 크게 향상됩니다.
파이썬 코드로는 아래와 같습니다.
import torch
import torch.nn as nn
import torch.nn.functional as F
###############################################################################
# 1. MOE Decomp (Mixture of Experts Decomposition) 구현
###############################################################################
class MOEDecomp(nn.Module):
def __init__(self, num_filters=[7, 12, 14, 24, 48], d_model=64):
super(MOEDecomp, self).__init__()
self.num_filters = num_filters
# 여러 개의 평균 풀링 레이어를 생성
self.pooling_layers = nn.ModuleList([
nn.AvgPool1d(kernel_size=f, stride=1, padding=f//2) for f in num_filters
])
# 학습 가능한 가중치 생성 (Softmax 적용)
self.weight_net = nn.Sequential(
nn.Linear(d_model, len(num_filters)),
nn.Softmax(dim=-1)
)
def forward(self, x):
"""
x: (batch_size, seq_len, d_model) - 입력 시계열 데이터
"""
batch_size, seq_len, d_model = x.shape
# Step 1: 여러 개의 평균 풀링 결과 계산
trend_components = torch.stack([pool(x.permute(0, 2, 1)).permute(0, 2, 1) for pool in self.pooling_layers], dim=-1)
# Step 2: 학습 가능한 가중치를 사용하여 최적 조합 생성
weights = self.weight_net(x) # (batch, seq_len, num_filters)
trend_final = torch.sum(trend_components * weights.unsqueeze(-2), dim=-1) # (batch, seq_len, d_model)
return trend_final
3.3 Frequency Enhanced Block: Self-Attention을 대체하는 연산 방식
FEDformer는 기존 Transformer 모델들이 사용했던 Self-Attention 연산을 완전히 대체하는 방식으로 Frequency Enhanced Block을 도입하였습니다. 기존 Transformer는 self-attention을 통해 모든 시점 간의 관계를 학습했지만, 이는 연산량이 많고 불필요한 패턴까지 학습하는 문제가 있었습니다.
FEDformer에서는 self-attention을 제거하는 대신, Fourier Transform을 적용하여 데이터의 주요 주파수 성분만을 학습하는 방식을 사용하였습니다. 연산 과정은 다음과 같이 진행됩니다.
- 입력된 시계열 데이터는 Fourier Transform을 통해 주파수 도메인으로 변환됩니다.
- 변환된 주파수 데이터에서 불필요한 성분을 제거하고, 특정 주파수 성분만을 학습할 수 있도록 필터링을 수행합니다.
- 최종적으로, 필터링된 주파수 데이터를 역변환(Inverse Fourier Transform)하여 시간 도메인으로 다시 변환하고, 다음 레이어로 전달합니다.
이 방식을 통해 기존 Self-Attention보다 훨씬 적은 연산량으로도 더 중요한 패턴을 학습할 수 있으며, 불필요한 관계를 학습하는 문제를 해결할 수 있습니다.
코드로 보면 다음과 같습니다.
import torch
import torch.nn as nn
import torch.fft
###############################################################################
# 1. Frequency Enhanced Block (FEB)
###############################################################################
class FrequencyEnhancedBlock(nn.Module):
def __init__(self, d_model, num_modes=64):
super(FrequencyEnhancedBlock, self).__init__()
self.num_modes = num_modes # 유지할 주파수 성분 개수
self.proj = nn.Linear(d_model, d_model) # 선형 변환
def forward(self, x):
"""
x: (batch_size, seq_len, d_model) - 입력 시계열 데이터
"""
batch_size, seq_len, d_model = x.shape
# Step 1: 선형 변환
q = self.proj(x) # (batch, seq_len, d_model)
# Step 2: Fourier Transform (FFT) 수행
q_fft = torch.fft.fft(q, dim=1) # (batch, seq_len, d_model)
# Step 3: 랜덤하게 num_modes개의 주파수 성분 선택
indices = torch.randperm(seq_len)[:self.num_modes] # 랜덤 인덱스 선택
q_selected = q_fft[:, indices, :] # (batch, num_modes, d_model)
# Step 4: 선택된 주파수 성분을 다시 시간 도메인으로 변환 (Inverse FFT)
q_reconstructed = torch.fft.ifft(q_selected, dim=1).real # (batch, num_modes, d_model)
# Step 5: Zero-Padding 수행 (원래 크기로 복원)
output = torch.zeros_like(q)
output[:, indices, :] = q_reconstructed
return output
Fourier Transform을 해준 뒤 랜덤으로 주파수를 선택하고 (Self Attention 역할) 다시 Inverse Transform을 통해 시계열로 변환해주는 모습을 볼 수 있습니다.
3.4 Frequency Enhanced Attention: Cross-Attention을 대체하는 모듈
FEDformer는 기존 Transformer 모델들이 사용했던 Cross-Attention 연산도 개선하기 위해 Frequency Enhanced Attention을 도입하였습니다. 기존 Cross-Attention은 모든 시점 간의 관계를 계산하는 방식이었지만, 이는 긴 시계열 데이터에서 연산량이 과도하게 증가하는 문제를 유발하였습니다.
FEDformer의 Frequency Enhanced Attention은 self-attention과 마찬가지로 Fourier Transform을 활용하여, 특정한 주파수 성분에서의 관계만을 학습하는 방식으로 동작합니다.
- Query-Key 간의 관계를 계산하기 전에, 모든 입력 데이터를 주파수 도메인으로 변환합니다.
- 특정한 주파수 성분에서 중요한 부분만을 추출하여, 이를 기반으로 attention 연산을 수행합니다.
- 주파수 도메인에서 학습된 정보를 다시 시간 도메인으로 변환하여 최종적인 attention score를 생성합니다.
이 방식은 기존 Cross-Attention 대비 연산량이 크게 감소하면서도, 더욱 중요한 정보만을 학습할 수 있는 장점이 있습니다. 특히, 시계열 데이터의 장기 의존성을 효과적으로 학습할 수 있으며, 기존 Transformer보다 더 적은 데이터로도 학습이 가능합니다.
파이썬 코드로 구현하면 아래와 같은데요.
import torch
import torch.nn as nn
import torch.fft
###############################################################################
# 1. Frequency Enhanced Attention (FEA) 구현
###############################################################################
class FrequencyEnhancedAttention(nn.Module):
def __init__(self, d_model, num_modes=64, activation='tanh'):
super(FrequencyEnhancedAttention, self).__init__()
self.num_modes = num_modes # 유지할 주파수 성분 개수
self.activation = activation
self.q_proj = nn.Linear(d_model, d_model)
self.k_proj = nn.Linear(d_model, d_model)
self.v_proj = nn.Linear(d_model, d_model)
self.out_proj = nn.Linear(d_model, d_model)
def forward(self, x):
"""
x: (batch_size, seq_len, d_model) - 입력 시계열 데이터
"""
batch_size, seq_len, d_model = x.shape
# Step 1: Query, Key, Value 생성
q = self.q_proj(x)
k = self.k_proj(x)
v = self.v_proj(x)
# Step 2: Fourier Transform (FFT) 수행
q_fft = torch.fft.fft(q, dim=1)
k_fft = torch.fft.fft(k, dim=1)
v_fft = torch.fft.fft(v, dim=1)
# Step 3: 랜덤하게 num_modes개의 주파수 성분 선택
indices = torch.randperm(seq_len)[:self.num_modes]
q_selected = q_fft[:, indices, :]
k_selected = k_fft[:, indices, :]
v_selected = v_fft[:, indices, :]
# Step 4: 어텐션 연산 수행
attention_weights = torch.matmul(q_selected, k_selected.transpose(-2, -1))
attention_weights = attention_weights / d_model ** 0.5
if self.activation == 'tanh':
attention_weights = torch.tanh(attention_weights)
else:
attention_weights = torch.softmax(attention_weights, dim=-1)
output_fft = torch.matmul(attention_weights, v_selected)
# Step 5: Inverse Fourier Transform (IFFT) 수행하여 시간 도메인 복원
output = torch.fft.ifft(output_fft, dim=1).real
# Step 6: Zero-Padding 수행 (원래 크기로 복원)
final_output = torch.zeros_like(q)
final_output[:, indices, :] = output
return self.out_proj(final_output)
Fourier Transform을 통해 주파수 도메인으로 변환한 뒤, Encoder로부터 나온 Feature와 함께 Cross Attention을 수행하는 모습을 볼 수 있습니다.
3.5 전체 Architecture
FEDformer의 전체 아키텍처는 Fourier Transform을 활용한 Frequency Enhanced Mechanism과 MOE Decomposition을 결합하여 최적의 시계열 예측을 수행하는 방식으로 구성됩니다.
![['22 ICML] FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting 2 그림2. FEDformer Architecture](https://ffighting.net/wp-content/uploads/2025/03/image-28-1024x540.png)
먼저, 입력된 시계열 데이터는 Fourier Transform을 적용하여 주파수 도메인으로 변환됩니다. 이 과정에서 불필요한 성분이 제거되며, 특정 주파수 대역의 정보만을 활용할 수 있도록 설계됩니다. 이후, MOE Decomposition을 활용하여 서로 다른 sub-model들이 주어진 데이터를 각각의 주파수 영역에서 학습하도록 설정됩니다.
이렇게 분해된 데이터는 Frequency Enhanced Block을 통해 Self-Attention 없이 직접 학습이 진행되며, 불필요한 시점 간 관계를 제거하고 더 중요한 정보에 집중할 수 있도록 합니다. 또한, Cross-Attention을 대체하는 Frequency Enhanced Attention을 통해 특정 주파수 성분에서의 관계만을 학습하며, 전체적인 연산량을 줄이는 데 기여합니다.
마지막으로, 주파수 도메인에서 학습된 데이터는 역변환(Inverse Fourier Transform)을 거쳐 시간 도메인으로 변환되며 최종 예측값이 생성됩니다. 이러한 구조를 통해 FEDformer는 기존 Transformer 기반 시계열 모델들보다 더 적은 연산량으로도 높은 성능을 유지할 수 있으며, 고주파 성분을 효과적으로 학습하여 예측 정확도를 향상시킬 수 있습니다.
다음 장에서는 실험 결과를 통해 FEDformer가 실제로 기존 모델들보다 얼마나 우수한 성능을 보이는지 살펴보겠습니다.
4. 실험 결과
FEDformer는 기존 Transformer 기반 시계열 모델들과 비교하여 성능을 검증하기 위해 다양한 실험을 수행했습니다. 실험은 대표적인 시계열 데이터셋을 사용하여 진행되었으며, 실험 결과는 주어진 예측 길이에 따른 MSE(Mean Squared Error) 및 MAE(Mean Absolute Error) 지표를 비교하여 평가되었습니다.
4.1 Univariate Forecasting Results
FEDformer의 단변량(Univariate) 시계열 예측 성능은 Table 3에 요약되어 있습니다.
![['22 ICML] FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting 3 그림3. Univariate Forecasting 실험 결과](https://ffighting.net/wp-content/uploads/2025/03/image-29.png)
실험 결과는 FEDformer가 장기적인 예측에 있어 더욱 효과적인 모델임을 시사합니다. 또한, Fourier 변환과 웨이블릿 변환을 활용하는 두 가지 변형(FEDformer-f 및 FEDformer-w)은 서로 다른 데이터셋에서 우수한 성능을 보이며 상호 보완적인 역할을 수행할 수 있음을 확인했습니다.
4.2 Multivariate Forecasting Results
FEDformer의 다변량(Multivariate) 시계열 예측 성능은 Table 2에 제시되었습니다.
![['22 ICML] FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting 4 그림4. Multivariate Forecasting 실험 결과](https://ffighting.net/wp-content/uploads/2025/03/image-30.png)
FEDformer는 모든 벤치마크 데이터셋에서 모든 예측 길이에 대해 최고의 성능을 달성했습니다. Exchange 데이터셋의 경우 명확한 주기성을 가지지 않음에도 불구하고 FEDformer는 뛰어난 성능을 보여주었습니다. 또한, 다양한 예측 길이에 걸쳐 FEDformer의 성능이 일정하게 유지되는 경향을 보이며, 이는 장기적인 예측에서의 강력한 일반화 성능을 나타냅니다.
5. 마치며
이번 포스팅에서는 FEDformer(Frequency Enhanced Decomposed Transformer)가 기존 Transformer 기반 시계열 예측 모델들이 가진 문제를 어떻게 해결하는지 살펴보았습니다. 기존 Transformer 모델들은 연산량이 많고, 전체적인 데이터 분포를 학습하는 데 어려움을 가지며, 고주파(high-frequency) 성분을 효과적으로 학습하지 못하는 문제를 가지고 있었습니다. 이러한 문제를 해결하기 위해 FEDformer는 Fourier Transform을 활용한 주파수 변환 기법과 MOE(Mixture of Experts) 기반 분해 기법을 도입하고, Frequency Enhanced Attention을 적용하여 연산량을 줄이면서도 성능을 유지하는 방식을 채택하였습니다.
먼저, Fourier Transform을 활용하여 Self-Attention 연산을 대체함으로써 기존 Transformer 모델들에서 필연적으로 발생하는 O(N^2)의 연산량 문제를 해결하였습니다. 기존 Transformer 기반 모델들은 모든 시점 간의 관계를 계산해야 했지만, FEDformer는 불필요한 성분을 제거하고 특정 주파수 대역만 선택적으로 학습할 수 있도록 설계되었습니다. 이를 통해 고주파 성분을 효과적으로 학습할 수 있으며, 더 적은 연산량으로도 높은 예측 성능을 유지할 수 있었습니다.
다음으로, MOE Decomposition 기법을 통해 기존의 단순한 trend/seasonality 분해 방식을 업그레이드하였습니다. 기존 Autoformer에서 사용되었던 Decomposition Mechanism을 발전시켜 서로 다른 주파수 영역을 학습하는 여러 개의 sub-model(Experts)을 활용하여 더욱 정밀한 분해가 가능해졌습니다. 이를 통해 각 Expert 모델이 특정 주파수 대역에서 더욱 효과적으로 학습할 수 있도록 최적화되었으며, 장기 예측 성능이 향상되었습니다.
또한, Frequency Enhanced Attention을 활용하여 기존 Cross-Attention 연산을 최적화하였습니다. 기존 Transformer 모델들은 모든 시점 간의 관계를 계산해야 했기 때문에, 연산량이 증가하는 문제가 있었습니다. 하지만 FEDformer는 Fourier Transform을 적용하여 특정한 주파수 성분에서 중요한 패턴을 찾아 Cross-Attention을 수행하는 방식으로 불필요한 연산을 줄이고 중요한 정보만을 학습하도록 설계되었습니다.
실험 결과에서도 FEDformer가 기존 Transformer 모델들보다 Univariate 및 Multivariate 시계열 예측에서 더 높은 성능을 보이며, 연산량도 획기적으로 줄일 수 있음을 확인하였습니다. Fourier Transform을 활용한 방식이 장기적인 패턴을 학습하는 데 효과적이며, 기존 Autoformer 대비 평균 22.6%의 MSE 감소를 달성하는 등 성능 향상이 뚜렷하게 나타났습니다. 특히, Ablation 실험을 통해 FEDformer의 주요 구성 요소들이 실제 성능 향상에 기여하고 있음을 입증할 수 있었습니다.
하지만, FEDformer에도 몇 가지 한계점이 존재합니다. Fourier Transform 기반의 방식이 항상 모든 시계열 데이터에 최적의 성능을 보장하는 것은 아니며, 특정한 데이터셋에서는 기존 Autoformer보다 성능이 낮아질 가능성이 있습니다. 또한, MOE Decomposition에서 Expert를 얼마나 잘 조합하는지가 성능에 영향을 미칠 수 있으며, 주파수 기반 Attention Mechanism이 특정 주기성을 가지지 않는 데이터에서는 효과적이지 않을 수도 있습니다.
그럼에도 불구하고, FEDformer는 기존 Transformer 기반 시계열 예측 모델들이 가진 핵심적인 문제를 해결하며, 장기 예측이 필요한 다양한 도메인에서 활용될 가능성이 높은 모델입니다. 특히, 금융 시장 예측, 에너지 수요 예측, 기후 변화 분석 등 대규모 시계열 데이터를 다루는 분야에서 FEDformer의 효율성이 더욱 빛을 발할 것으로 기대됩니다.