- [’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
- [’21 ICML] Voice2Series: Reprogramming Acoustic Models for Time Series Classification
1. 들어가며
최근 머신 러닝 분야에서 사전 훈련된 모델(Pretrained Model)을 활용한 전이 학습(Transfer Learning)은 자연어 처리(NLP)와 이미지 분석 분야에서 큰 성공을 거두었습니다. 이미지 모델에서는 ImageNet으로 사전 훈련된 ResNet, ViT 등이 사용되며, NLP에서는 BERT, GPT와 같은 대규모 모델이 다양한 태스크에서 활용되고 있습니다. 하지만 시계열 데이터 분석 분야에서는 아직까지 사전 훈련된 모델을 활용하는 연구가 부족한 상황입니다.
기존의 시계열 분석 방법들은 주로 개별적인 데이터셋에서 모델을 처음부터 훈련하는 방식이 대부분이며, 이는 데이터의 크기가 충분하지 않은 경우 오버피팅(overfitting) 문제를 야기할 수 있습니다. 또한, 시계열 데이터는 도메인마다 특성이 크게 다르기 때문에, 하나의 모델을 다양한 시계열 데이터에 적용하는 것이 쉽지 않다는 한계가 있습니다.
이번 논문에서는 이러한 문제를 해결하기 위해 Voice2Series(V2S)라는 새로운 접근 방식을 제안합니다. V2S는 기존의 음성 인식 모델(Acoustic Model, AM)을 활용하여 시계열 데이터를 분석하는 방법을 제시합니다. 핵심 아이디어는 시계열 데이터를 주파수 도메인으로 변환하여, 음성 데이터와 유사한 형태로 만든 후, 이미 학습된 음성 모델을 활용하여 특징을 추출하고 분류하는 방식입니다. 이를 통해 기존의 시계열 모델들이 가지고 있던 학습 데이터 부족 문제를 해결하면서도, 강력한 사전 훈련된 모델을 활용할 수 있습니다.
이번 포스팅에서는 먼저 기존 시계열 모델들의 한계를 살펴본 후, V2S의 아키텍처와 핵심 아이디어를 자세히 분석해보겠습니다. 이후 실험 결과를 통해 V2S가 실제로 기존 모델들과 비교했을 때 어느 정도의 성능을 발휘하는지 평가하고, 마지막으로 V2S의 장점과 한계를 정리하겠습니다.
그럼 먼저 기존 시계열 모델들이 가지고 있는 문제점부터 살펴보겠습니다.
2. 기존 방법의 한계
시계열 데이터 분석은 금융, 의료, 기후 예측 등 다양한 분야에서 중요한 역할을 합니다. 하지만 기존의 시계열 분류 및 예측 모델들은 몇 가지 근본적인 한계를 가지고 있습니다. 특히, 이미지나 자연어 처리 분야에서는 사전 훈련된 모델(Pretrained Model)을 활용하는 다양한 방법이 연구되고 있지만, 시계열 데이터에서는 이러한 접근법이 거의 연구되지 않았다는 점이 가장 큰 차이점입니다.
2.1 사전 훈련 모델의 부족
이미지 분석에서는 ImageNet과 같은 대규모 데이터셋을 활용한 CNN 기반의 사전 훈련 모델이 존재하며, 자연어 처리(NLP)에서는 BERT, GPT 등의 사전 훈련된 Transformer 모델이 전이 학습(Fine-tuning)을 통해 다양한 downstream task에서 활용되고 있습니다. 이러한 접근 방식은 학습 데이터가 적은 경우에도 성능을 크게 향상시킬 수 있다는 장점이 있습니다.
하지만 시계열 데이터 분석에서는 대규모 데이터셋을 활용한 사전 훈련 모델이 거의 존재하지 않으며, 전이 학습을 위한 체계적인 방법론도 부족합니다. 대부분의 연구들은 task-specific 방식으로 특정 도메인에 맞춰 직접 모델을 훈련하는 접근을 사용하고 있습니다. 이는 데이터가 많지 않은 경우 모델이 충분히 일반화되지 못하고, 오버피팅(overfitting)되는 문제를 야기할 수 있습니다.
2.2. 데이터 간의 차이를 반영하지 못하는 기존 접근 방식
시계열 데이터는 도메인에 따라 다양한 특징을 가질 수 있습니다. 예를 들어, 의료 데이터는 환자의 생체 신호를 포함하며, 금융 데이터는 시장 변동을 포함하고, 기후 데이터는 복잡한 주기성을 가질 수 있습니다. 하지만 기존의 시계열 모델들은 일반적으로 고정된 구조를 사용하여 모든 데이터셋에 동일한 방식으로 적용되는 경우가 많습니다.
반면, 이미지와 언어 모델에서는 자연스러운 데이터 전처리 및 특징 추출 기법이 발전해 있으며, 도메인 간 차이를 효과적으로 반영할 수 있도록 설계되어 있습니다. 예를 들어, ResNet, ViT 같은 이미지 모델들은 다양한 도메인의 이미지를 학습할 수 있도록 설계되었으며, BERT는 문맥을 고려한 단어 표현을 학습할 수 있도록 훈련됩니다. 하지만 시계열 분석에서는 이러한 유연한 구조가 부족하여 특정 데이터셋에 특화된 방식으로 설계되는 경우가 많습니다.
3. 제안 방법: Voice2Series
이러한 기존 방법의 한계를 극복하기 위해 Voice2Series는 음성 인식 모델(Acoustic Model, AM)을 활용하여 시계열 데이터를 분석하는 새로운 접근 방식을 제안합니다. 기존의 시계열 모델들이 원본 데이터를 그대로 입력받아 학습하는 것과 달리, Voice2Series는 주파수 도메인(Frequency Domain)에서 특징을 추출하고, 이를 사전 훈련된 AM을 활용하여 분류하는 방식을 채택합니다. 이를 통해 기존 방법들보다 효율적으로 시계열 데이터를 처리하면서도 사전 훈련된 대규모 모델을 활용하는 전이 학습(Transfer Learning) 방식을 적용할 수 있습니다.
3.1 Architecture
Voice2Series의 전체적인 아키텍처는 (1) 입력 데이터를 주파수 도메인으로 변환, (2) 사전 훈련된 AM을 활용하여 특징을 추출, (3) 간단한 Linear Layer를 통해 최종 분류 수행하는 방식으로 구성됩니다.
![['21 ICML] Voice2Series: Reprogramming Acoustic Models for Time Series Classification 1 그림1. Voice2Series Architecture](https://ffighting.net/wp-content/uploads/2025/03/image-31-1024x254.png)
시계열 데이터를 주파수 도메인으로 변환
기존의 시계열 모델들은 일반적으로 원본 데이터를 그대로 입력받아 CNN, RNN, Transformer 등을 활용하여 특징을 추출하는 방식을 사용합니다. 하지만 이러한 방식은 시계열 데이터가 가지는 주파수 특성(Frequency Characteristics)을 효과적으로 반영하지 못하는 한계가 있습니다.
Voice2Series는 Fourier Transform 및 Mel-spectrogram 변환을 사용하여 시간 도메인의 데이터를 주파수 도메인으로 변환합니다. 이를 통해 시계열 데이터가 주파수 성분에 따라 어떻게 변화하는지를 분석할 수 있으며, 음성 데이터와 유사한 구조로 변환할 수 있습니다.
주요 변환 과정은 다음과 같습니다.
- Fast Fourier Transform (FFT): 시간 데이터를 주파수 도메인으로 변환하는 기본적인 방법입니다. FFT를 통해 시계열 데이터의 주요 주파수 성분을 추출할 수 있습니다.
- Mel-spectrogram 변환: 음성 인식 모델에서 널리 사용되는 변환 기법으로, 주파수 도메인에서의 정보를 보다 압축된 형태로 표현할 수 있습니다.
이러한 변환을 거치면, 원래 1D 시계열 데이터가 2D Spectrogram 이미지와 유사한 형태로 변환되며, 이를 기존의 AM에서 사용할 수 있도록 변환해 줍니다.
사전 훈련된 AM(Acoustic Model)을 활용한 특징 추출
변환된 데이터를 입력으로 받아, 사전 훈련된 음성 인식 모델(Acoustic Model, AM)을 활용하여 시계열 데이터의 고차원 특징을 추출합니다. 기존 음성 모델들은 대규모 데이터셋에서 학습되었기 때문에 다양한 주파수 패턴을 학습할 수 있으며, 이를 활용하면 시계열 데이터의 중요한 특성을 효과적으로 포착할 수 있습니다.
Voice2Series는 다양한 사전 훈련된 AM을 활용할 수 있으며, 대표적으로 다음과 같은 모델들이 사용될 수 있습니다.
- Wav2Vec 2.0: Self-Supervised Learning을 활용하여 대규모 음성 데이터를 학습한 모델
- DeepSpeech: CNN-RNN 구조를 활용하여 음성 데이터를 학습한 모델
- Hubert: 음성 데이터의 잠재 표현을 학습하는 최신 모델
이러한 모델들은 기존의 시계열 모델들이 학습하기 어려운 주파수 기반 특징(Frequency-based Features)을 자연스럽게 학습할 수 있도록 도와주며, 이를 활용하여 시계열 데이터를 효과적으로 분석할 수 있도록 합니다.
Label Mapping을 위한 Linear Layer 학습
AM에서 추출한 특징 벡터를 최종적인 예측 값으로 변환하기 위해 Linear Layer를 추가적으로 학습합니다. 이 과정에서 중요한 점은 모든 모델의 가중치는 고정하고(Freeze), 오직 Label Mapping을 수행하는 Linear Layer만 학습한다는 것입니다.
즉, Voice2Series는 사전 훈련된 AM을 그대로 활용하면서, 최소한의 학습 비용으로 시계열 데이터를 분류하는 효과적인 방법을 제공합니다.
3.2 파이썬 코드 구현
여기까지의 내용을 그대로 파이썬 코드로 구현하면 아래와 같습니다. V2SInputTransform class에서는 time series 입력을 spectrogram으로 변환해줍니다. 이어서 Pretrained AM모델을 붙이고, 최종적으로 Label Mapping (Linear Layer)를 붙여 학습하는 모습을 볼 수 있습니다.
import torch
import torch.nn as nn
import torchaudio
import numpy as np
###############################################################################
# 1. Voice2Series Input Transformation: Time Series → Spectrogram 변환
###############################################################################
class V2SInputTransform(nn.Module):
def __init__(self, target_sample_rate=16000, target_shape=(1, 128, 128)):
"""
- target_sample_rate: AM 모델이 요구하는 샘플링 속도 (Hz)
- target_shape: AM 모델이 기대하는 입력 차원 (채널, 높이, 너비)
"""
super(V2SInputTransform, self).__init__()
self.target_sample_rate = target_sample_rate
self.target_shape = target_shape
self.spectrogram = torchaudio.transforms.MelSpectrogram(
sample_rate=self.target_sample_rate, n_mels=target_shape[1]
)
def forward(self, x):
"""
x: Multivariate Time Series (batch, time_steps, features)
"""
batch_size, time_steps, features = x.shape
# Step 1: 채널 확장 (음성 모델은 1D 또는 2D 입력을 기대함)
x = x.permute(0, 2, 1) # (batch, features, time_steps)
# Step 2: 각 채널(Feature)에 대해 Spectrogram 변환 적용
x_spectrograms = [self.spectrogram(x[:, i, :]) for i in range(features)]
x_spectrograms = torch.stack(x_spectrograms, dim=1) # (batch, features, n_mels, time)
# Step 3: 필요하면 Zero-Padding 적용하여 목표 크기 맞추기
_, _, H, W = x_spectrograms.shape
target_H, target_W = self.target_shape[1], self.target_shape[2]
pad_H = max(0, target_H - H)
pad_W = max(0, target_W - W)
x_padded = nn.functional.pad(x_spectrograms, (0, pad_W, 0, pad_H))
return x_padded # (batch, features, target_H, target_W)
###############################################################################
# 2. Voice2Series Label Mapping: 기존 AM의 출력을 새로운 라벨로 매핑
###############################################################################
class V2SLabelMapping(nn.Module):
def __init__(self, pretrained_am_output_classes, target_classes):
"""
- pretrained_am_output_classes: AM이 예측하는 원래 클래스 수
- target_classes: Time Series 분류에서 원하는 최종 클래스 수
"""
super(V2SLabelMapping, self).__init__()
self.mapping = nn.Linear(pretrained_am_output_classes, target_classes)
def forward(self, am_output):
"""
am_output: (batch, pretrained_am_output_classes)
"""
return self.mapping(am_output) # (batch, target_classes)
###############################################################################
# 3. 전체 Voice2Series 모델 (입력 변환 + Pretrained AM + 출력 변환)
###############################################################################
class Voice2Series(nn.Module):
def __init__(self, pretrained_acoustic_model, input_transform, label_mapping):
super(Voice2Series, self).__init__()
self.input_transform = input_transform
self.pretrained_am = pretrained_acoustic_model # Frozen
self.label_mapping = label_mapping
def forward(self, x):
"""
x: Multivariate Time Series (batch, time_steps, features)
"""
# Step 1: Time Series → Spectrogram 변환
x_transformed = self.input_transform(x)
# Step 2: Pretrained Acoustic Model 통과 (Frozen)
with torch.no_grad():
am_output = self.pretrained_am(x_transformed)
# Step 3: Label Mapping을 사용하여 최종 분류 수행
return self.label_mapping(am_output)
###############################################################################
# 4. 모델 실행 예제
###############################################################################
if __name__ == "__main__":
batch_size = 8
time_steps = 100 # Time Series 길이
features = 3 # Multivariate Time Series (3개의 센서 데이터 예제)
# Dummy Time Series 데이터 생성
time_series_data = torch.randn(batch_size, time_steps, features)
# Pretrained Acoustic Model (예제: Google Speech Commands 모델)
pretrained_acoustic_model = nn.Sequential(
nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1),
nn.ReLU(),
nn.Flatten(),
nn.Linear(32 * 128 * 128, 12) # 12개의 음성 클래스 (예: Google Speech Commands)
)
# Voice2Series Model 구성
input_transform = V2SInputTransform(target_sample_rate=16000, target_shape=(1, 128, 128))
label_mapping = V2SLabelMapping(pretrained_am_output_classes=12, target_classes=5) # 원하는 5개 클래스
v2s_model = Voice2Series(pretrained_acoustic_model, input_transform, label_mapping)
# 예측 수행
output = v2s_model(time_series_data)
print("Output shape:", output.shape) # 예상 결과: (batch_size, target_classes)
4. 실험 결과
기존 transfer learning 방식과 V2S를 비교하기 위해 TFa라는 transfer learning baseline을 설정하고, 동일한 V2Sa 모델을 사용하여 비교 실험을 수행했습니다. TFa는 pretrained model의 전체 파라미터를 fine-tuning하는 방식이며, V2S는 reprogramming을 활용하여 pretrained acoustic model을 그대로 사용하면서 task-specific 부분만 학습하는 방식입니다. 결과적으로 TFa는 성능이 저조했던 반면, V2S는 높은 정확도를 달성하여 pretrained acoustic model을 효과적으로 활용할 수 있음을 보여주었습니다.
![['21 ICML] Voice2Series: Reprogramming Acoustic Models for Time Series Classification 2 그림2. 실험에 사용된 방법](https://ffighting.net/wp-content/uploads/2025/03/image-32-1024x368.png)
UCR Archive는 다양한 시계열 데이터셋을 포함하는 대표적인 시계열 분류 벤치마크입니다. 논문에서는 30개의 UCR 데이터셋을 선정하여 V2S의 성능을 비교 분석했습니다. 비교 대상에는 convolutional neural network(CNN) 기반 모델, ensemble-based framework, time warping framework 등이 포함되었습니다.
![['21 ICML] Voice2Series: Reprogramming Acoustic Models for Time Series Classification 3 그림3. UCR Time Series 실험 결과](https://ffighting.net/wp-content/uploads/2025/03/image-33-1024x843.png)
결과적으로 V2S는 30개 데이터셋 중 20개에서 SOTA 성능을 능가하거나 동일한 성능을 기록했으며, 평균 및 중앙값 정확도에서도 우수한 결과를 보였습니다. 또한 mean per-class error(MPCE) 측정에서도 기존 SOTA 모델 대비 오차율이 낮아, V2S가 다양한 시계열 분류 태스크에서 강력한 성능을 발휘할 수 있음을 입증했습니다.
이러한 실험 결과를 통해 V2S는 pretrained acoustic model을 효과적으로 활용하여 시계열 분류 성능을 향상시킬 수 있음을 보여주었습니다. Transfer learning 방식과 비교했을 때, task-specific 부분만 학습하는 방식이 시계열 데이터에 적합하다는 점이 확인되었습니다.
5. 마치며
이번 포스팅에서는 Voice2Series(V2S)라는 새로운 접근 방식을 통해 사전 훈련된 음성 모델(Acoustic Model, AM)을 활용하여 시계열 데이터를 분석하는 방법을 살펴보았습니다. 기존의 시계열 분석 모델들은 원본 데이터를 그대로 입력하여 학습하는 방식을 주로 사용해 왔지만, 이는 대규모 데이터가 필요한 문제와 함께, 다양한 시계열 데이터의 특성을 효과적으로 학습하기 어려운 한계가 있었습니다.
이러한 문제를 해결하기 위해 V2S는 시계열 데이터를 주파수 도메인으로 변환한 후, 사전 훈련된 AM을 활용하여 특징을 추출하고, 간단한 Linear Layer를 학습하여 최종 분류를 수행하는 방식을 제안했습니다. 특히, Fourier Transform 및 Mel-Spectrogram 변환을 활용하여 시계열 데이터를 음성 데이터와 유사한 형태로 변환함으로써, 기존의 음성 모델을 그대로 활용할 수 있도록 설계되었습니다.
V2S의 가장 큰 장점은 사전 훈련된 모델을 효과적으로 활용하면서도, 학습해야 할 파라미터 수를 최소화하여 효율적인 전이 학습(Transfer Learning)이 가능하다는 점입니다. 실험 결과에서도 이를 입증할 수 있었으며, 기존 Transfer Learning 방식과 비교했을 때 V2S는 전체 모델을 학습하는 것이 아니라, Label Mapping을 위한 Linear Layer만 학습하면서도 높은 성능을 유지할 수 있음을 확인하였습니다.
UCR 데이터셋을 활용한 성능 평가에서도 V2S는 30개 데이터셋 중 20개에서 기존 SOTA 모델을 능가하거나 동일한 성능을 기록하며, Mean Per-Class Error(MPCE)에서도 우수한 성능을 보였습니다. 이는 사전 훈련된 음성 모델이 시계열 데이터에도 효과적으로 적용될 수 있음을 보여주는 중요한 연구 결과입니다.
그러나 V2S에도 몇 가지 한계점이 존재합니다. 첫째, 모든 시계열 데이터가 음성 데이터처럼 주파수 도메인에서 명확한 패턴을 가질 것이라고 가정하는 점입니다. 특정 데이터셋에서는 주파수 변환이 정보 손실을 유발할 수도 있으며, 이로 인해 성능이 저하될 가능성이 있습니다. 둘째, V2S가 음성 모델에 의존하기 때문에, 모델의 성능은 활용하는 AM의 특성과 구조에 영향을 받을 수 있습니다. 따라서, 다양한 음성 모델을 실험하여 최적의 조합을 찾는 추가 연구가 필요합니다.
그럼에도 불구하고, V2S는 시계열 분석에서 사전 훈련된 모델을 활용하는 새로운 방향을 제시하며, 앞으로의 연구에 큰 영향을 미칠 가능성이 있는 모델입니다. 특히, 의료 데이터 분석, 금융 예측, 센서 데이터 해석 등 다양한 분야에서 효율적인 시계열 분석을 위한 핵심 기술로 활용될 가능성이 높습니다.