<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>hyooo__s.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Sat, 28 Feb 2026 06:35:19 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>hyooo__s.log</title>
            <url>https://velog.velcdn.com/images/hyooo__s/profile/d80a2060-00e5-4a7f-8438-62dfae4530fe/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. hyooo__s.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/hyooo__s" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[논문리뷰] LETS-C : Leveraging Text Embedding for Time Series Classification]]></title>
            <link>https://velog.io/@hyooo__s/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-LETS-C-Leveraging-Text-Embedding-for-Time-Series-Classification</link>
            <guid>https://velog.io/@hyooo__s/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-LETS-C-Leveraging-Text-Embedding-for-Time-Series-Classification</guid>
            <pubDate>Sat, 28 Feb 2026 06:35:19 GMT</pubDate>
            <description><![CDATA[<h2 id="overview">Overview</h2>
<blockquote>
<p><strong>논문명</strong>: LETS-C : Leveraging Text Embedding for Time Series Classification
<strong>학회(출판연도)</strong>: ACL(2025)
<strong>연구분야</strong>: 딥러닝 기반 시계열 표현 학습</p>
</blockquote>
<hr>
<h2 id="abstract">Abstract</h2>
<ul>
<li>최근 사전학습된 LLM을 시계열 분류 과제에 맞게 파인튜닝하는 방식이 SOTA 달성</li>
<li>하지만, LLM기반 모델들의 학습 파라미터가 수백만 개에 달하는 대규모 모델이라는 단점 존재
⇒ LLM을 파인튜닝하기 보단, 
① 텍스트 임베딩 모델을 통해서 시계열 데이터를 임베딩 한 후
② CNN과 다층 퍼셉트론(MLP)로 구성된 간단한 분류 헤드와 결합하자!</li>
</ul>
<p><strong>[결과]</strong></p>
<ul>
<li>기존 SOTA 모델 능가 </li>
<li>평균적으로 SOTA대비 14.5%정도 학습 가능한 파라미터 사용</li>
</ul>
<hr>
<h2 id="1-introduction">1. Introduction</h2>
<ul>
<li><p>시계열 분류</p>
<ul>
<li>금융, 헬스케어, 활동 인식 등 다양한 분야에서 폭넓게 활용
→ 효율적이면서도 정확한 분류 방법에 대한 필요성이 높아지고 있음</li>
</ul>
</li>
<li><p>TSC의 NLP와 LLM의 적용</p>
<ul>
<li>프롬프팅 기법</li>
<li>사전 학습 LLM에 파인튜닝 하는 방식</li>
</ul>
</li>
</ul>
<p>  <strong>(P) [한계]</strong></p>
<pre><code> - LLM은 수십억개의 파라미터를 가진 거대한 모델

      → 계산 비용이 높아 제한된 환경에서는 실용적X

 - 부분적으로 동결된 사전 학습 LLM을 파인튜닝하더라도 수백만개의 학습가능한 파라미터 필요</code></pre><ul>
<li><strong>(S) LETS-C</strong><ul>
<li>기성 텍스트 임베딩 모델을 활용하자!</li>
<li>텍스트 임베딩 + CNN과 MLP로 구성된 분류헤드 결합<ul>
<li>텍스트 임베딩 모델: 시간적 데이터에 내재된 복잡한 패턴과 의존성 포착</li>
<li>분류헤드: 서로 다른 클래스간 구분</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><strong>[기여]</strong></p>
<p><strong>1. 최고 수준 성능</strong></p>
<ul>
<li>다양한 시계열 도메인 데이터셋에서 SOTA 달성<ul>
<li>27개의 베이스라인모델 능가</li>
</ul>
</li>
</ul>
<p><strong>2. 계산 효율성</strong></p>
<ul>
<li>기존 SOTA대비 14.5%의 파라미터만을 사용</li>
</ul>
<p><strong>3. 시계열 임베딩 내재적 판별력</strong></p>
<ul>
<li>텍스트 임베딩이 분류 정확도 향상에 기여</li>
</ul>
<p><strong>4. 다양한 텍스트 임베딩 모델에 대한 일반화 성능</strong> - 서로 다른 텍스트 임베딩 모델에서도 굿</p>
<p><strong>5. 정확도 손실을 최소화한 모델 크기 최적화</strong></p>
<ul>
<li>모델 크기를 줄여도 높은 정확도 유지</li>
</ul>
<hr>
<h2 id="2-related-work">2. Related Work</h2>
<h3 id="time-series-classification">Time Series Classification</h3>
<h4 id="초기연구">[초기연구]</h4>
<ul>
<li><p>지도학습</p>
<ul>
<li>DTW, SVM 같은 거리 기반 접근법</li>
<li>특징추출기법 + XGBoost 분류기 결합 방식</li>
<li>CNN, MLP, LSTM같은 순환 신경망(RNN)을 포함한 딥러닝 기반 접근법</li>
<li>최근 Transformer기반 self-attention을 활용하여 장기 의존성 포착</li>
</ul>
</li>
<li><p>비지도학습</p>
<ul>
<li>마스킹된 시계열 복원 과제로 사전학습</li>
<li>분류와 같은 다운스트림 과제에 파인튜닝하는 방식</li>
</ul>
</li>
</ul>
<p>⇒ 높은 계산 비용으로 인해 학습 과정에서 부담有</p>
<h3 id="language-models-for-time-series">Language Models for Time Series</h3>
<h4 id="최근-연구">[최근 연구]</h4>
<ul>
<li><p>시계열 - 텍스트 모델링, 시계열에 대한 자연어 설명, 다양한 응용을 포함하여 시계열과 언어의 결합 탐구</p>
<ul>
<li>프롬프팅 → 시계열 예측에 활용 (일부 설명 가능한 금융 예측 생성 가능성 탐구됨)</li>
<li>Time-LLM<ul>
<li>시계열 데이터를 언어 임베딩 공간으로 매핑하여 LLM기반 예측</li>
</ul>
</li>
<li>GPT와 같은 LLM을 파인튜닝 → SOTA 달성<h4 id="lets-c">[LETS-C]</h4>
</li>
</ul>
</li>
<li><p>LLM을 직접 사용하기보단 텍스트 임베딩 활용</p>
<h3 id="text-embeddings">Text Embeddings</h3>
</li>
<li><p>NLP의 핵심적 표현 기법</p>
<ul>
<li>단어 또는 문장을 밀집 벡터 공간으로 매핑하여 의미적, 구문적 정보 포착</li>
<li>단어 수준의 임베딩: Word2Vec, GloVe</li>
<li>문맥기반 임베딩: BERT, RoBERTa </li>
</ul>
<blockquote>
</blockquote>
<p><strong>✓ Word2Vec</strong><img src="https://velog.velcdn.com/images/hyooo__s/post/02e3c494-436b-4187-8b80-b993d84f04c0/image.png" alt=""></p>
<ul>
<li>단어 하나마다 <strong>항상 같은 벡터</strong>를 부여하는 방식</li>
<li>각 점 = 단어 하나</li>
<li>비슷한 단어들이 공간에서 가까이 모여 있음</li>
</ul>
</li>
</ul>
<blockquote>
<p><strong>✓ GloVe</strong><img src="https://velog.velcdn.com/images/hyooo__s/post/e2acd2d4-5104-48b4-8347-831b9b1afa73/image.png" alt=""></p>
</blockquote>
<ul>
<li>단어들이 전체 말뭉치에서 얼마나 같이 등장하는지 보는 방식</li>
<li>같이 등장한 빈도 기반으로 벡터 공간 형성</li>
<li>고정된 단어 벡터</li>
</ul>
<ul>
<li><p>시계열</p>
<ul>
<li>NLP에 비해 대규모 데이터셋 부족</li>
<li>임베딩을 처음부터 학습하는 것에 대한 어려움</li>
</ul>
</li>
</ul>
<p>⇒ 시계열을 잘 표현하려면, <strong>시퀀스 전체 문맥을 요약</strong>할 수 있는 임베딩이 필요한데, NLP에서는 BERT계열이 가장 잘해왔다.</p>
<blockquote>
<p>LETS-C는 그걸 학습하지 않고, 그냥 가져다 쓰는(lightweight) 전략을 사용하자는 것!
즉, <strong>LLM을 학습하기 보단, 이미 학습된 표현공간을 활용하자는 아이디어</strong></p>
</blockquote>
<hr>
<h2 id="3-methodology">3. Methodology</h2>
<p><img src="https://velog.velcdn.com/images/hyooo__s/post/f752865a-7bb5-4ee7-84e8-55916c03fcba/image.png" alt=""></p>
<ul>
<li><p>시계열 분류 데이터셋</p>
<ul>
<li>다변량 시계열 샘플 x_i를 클래스 레이블 y_i에 대응
<img src="https://velog.velcdn.com/images/hyooo__s/post/c9c4f1b3-e406-47c3-93be-af625340eb96/image.png" alt=""></li>
</ul>
</li>
<li><p>목표: 각 시계열에 대해 클래스 레이블(햇y)을 정확히 예측하는 분류기 학습</p>
</li>
<li><p>과정</p>
<ul>
<li><p>시계열 데이터 정규화 (전처리)</p>
</li>
<li><p>정규화된 데이터로 임베딩 생성</p>
</li>
<li><p>임베딩과 원본 시계열 데이터 결합</p>
</li>
<li><p>결합 데이터를 CNN과 MLP로 구성된 분류 헤드에 입력</p>
</li>
</ul>
</li>
</ul>
<blockquote>
<p><strong>✓ 단순한 분류 헤드를 선택한 이유</strong></p>
</blockquote>
<ul>
<li>** 텍스트 임베딩만으로도** 효과적인 분류를 하기에 충분하다</li>
</ul>
<h3 id="preprocessing">Preprocessing</h3>
<ul>
<li><p>x_i의 각 특징 차원 [0,1]범위로 min-max 정규화</p>
<ul>
<li>일관된 스케일 보장 목적<h3 id="text-embedding-of-time-series">Text Embedding of Time Series</h3>
<blockquote>
<p><strong>✓ 임베딩이란?</strong></p>
</blockquote>
</li>
</ul>
</li>
<li><p>컴퓨터의 입장에서는 &quot;고양이가 귀엽다&quot;에서 고양이? 귀엽다? 의미를 모름 (숫자만 계산 가능)
→ 때문에 단어에 숫자를 붙이기 시작했음!</p>
</li>
<li><p><strong>one-hot encoding</strong>
  <img src="https://velog.velcdn.com/images/hyooo__s/post/5e7b6023-ee87-4f21-9b47-5412f6cc5d09/image.png" alt=""></p>
<ul>
<li>이렇게 되면 서로가 모두 다른 값이고 고양이와 강아지가 비슷하다와 같은 정보를 얻을 수 없음</li>
<li>또한 단어 수가 늘면 벡터가 엄청나게 커지는 문제 발생
**  ⇒ 비슷한 의미의 단어는 숫자 벡터에서도 비슷하게 만들자!**</li>
</ul>
</li>
<li><p><strong>임베딩</strong>
<img src="https://velog.velcdn.com/images/hyooo__s/post/427f7682-c243-4aca-a321-6e44df2719a2/image.png" alt=""></p>
<ul>
<li>복잡한 대상(단어, 문장, 이미지 등)을 의미를 담은 숫자 벡터로 바꾸는 것</li>
<li>벡터간 거리 = 의미 유사도</li>
</ul>
</li>
</ul>
<blockquote>
<p><strong>✓ 텍스트 임베딩이란?</strong><img src="https://velog.velcdn.com/images/hyooo__s/post/10aa9e84-8350-4e58-9fff-393dec7ce9ed/image.png" alt=""></p>
</blockquote>
<ul>
<li><p>문장(텍스트)의 &quot;의미&quot;를 숫자 벡터 하나로 압축해서 표현하는 것</p>
</li>
<li><p>핵심: 비슷한 의미의 문장은 숫자벡터에서도 가깝게 만들자!</p>
<ul>
<li>어떤 단어들이, 어떤 순서로, 어떤 문맥에서 함께 나오는지를 배움</li>
</ul>
</li>
<li><p>수치 문자열의 토크나이제이션 방식이 임베딩 결과에 큰 영향을 미칠 수 있으므로 텍스트 임베딩 적용 전 전처리된 시계열을 문자열 형태로 신중하게 변환하는 것이 중요!</p>
<ul>
<li>(P) 일반적으로 사용되는 서브워드 토크나이저 → 숫자를 임의로 분할</li>
<li>(S) <strong>digit-space 토크나이제이션</strong><ul>
<li>각 자릿수를 공백으로 분리</li>
<li>시간 단계 구분을 위해 쉼표 추가</li>
<li>고정 소수점 정밀도 가정 → 소수점 제거</li>
</ul>
</li>
</ul>
</li>
<li><p>text-embedding-3-large model 사용</p>
<ul>
<li>변환된 시계열 문자열을 임베딩 공간으로 매핑하기 위함
즉, NLP모델을 쓰기 위함
 <img src="https://velog.velcdn.com/images/hyooo__s/post/6abf5e10-5b53-46eb-aa65-93b8ce4cdf2f/image.png" alt=""></li>
</ul>
</li>
</ul>
<blockquote>
<p>즉, 정리하자면</p>
</blockquote>
<ul>
<li>시계열은 길고 무겁기 때문에 각 채널별로 텍스트 임베딩을 만든 후</li>
<li>각 채널 임베딩을 쌓아 행렬로 만든다</li>
<li>이 결과는 항상 같은 크기이기 때문에 <strong>한 번 계산하면 계속해서 사용 가능</strong>하다</li>
</ul>
<h3 id="fusing-embedding-and-time-series">Fusing Embedding and Time Series</h3>
<ul>
<li><p>제로 패딩 적용</p>
<ul>
<li><p>차원 일관성 유지 목적</p>
<ul>
<li>요소별 덧셈을 하기 위해서는 두 벡터(또는 행렬)의 크기가 완전히 같아야 함<ul>
<li>보통 <strong>임베딩 벡터 길이 &lt; 시계열 길이</strong> 이므로 남는 길이는 0으로 채움
⇒ 즉, 정보는 왜곡하지 않으면서 형태만 맞춘다</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><p>요소별 덧셈(element-wise addition) 사용</p>
<ul>
<li>같은 위치의 값을 더한다
⇒ <strong>임베딩과 전처리된 시계열 데이터 결합</strong></li>
</ul>
<blockquote>
<p><strong>✓ 임베딩과 전처리된 시계열 데이터의 결합</strong></p>
</blockquote>
<ul>
<li><strong>시계열 임베딩(Global)</strong><ul>
<li>텍스트 임베딩으로 얻은 벡터로, 전체 시계열의 전반적인 패턴 요약</li>
</ul>
</li>
<li><strong>전처리된 시계열(local)</strong><ul>
<li>정규화 및 패딩만 거친 시계열로 시간 별 세부 변화, 로컬 패턴
⇒ <strong>(P)이 둘의 형태가 다르기 때문에 (S)제로패딩!</strong></li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>요소별 덧셈은 ResNet의 Shortcut과 일맥상통하는 아이디어!</p>
<ul>
<li>ResNet에서 깊은층이 입력을 뭉그러뜨릴 수 있는 것처럼 LETS-C에서는 임베딩이 원본시계열을 뭉그러뜨릴 수 있음</li>
<li>때문에, <strong>임베딩 정보를 쓰되, 원본 시계열 기준으로 보정만 하자!</strong></li>
</ul>
</li>
<li><ul>
<li>⇒ fused = raw time seires + embedding**</li>
</ul>
<blockquote>
<p><strong>✓ ResNet의 Shortcut?</strong>
<img src="https://velog.velcdn.com/images/hyooo__s/post/8604da74-c0fe-43d3-8ecf-8bc94520fdb5/image.png" alt=""></p>
</blockquote>
<ul>
<li>이전 딥러닝에서는 층을 많이 쌓으면 더 똑똑하겠지?라는 믿음으로 CNN을 점점 더 깊게 만듦</li>
<li>그런데 20층 모델보다 50층의 모델이 더 성능이 나쁜것임!
과적합도 아니고 데이터 부족도 아니었음
⇒ <strong>성능열화문제(degradation problem)</strong></li>
</ul>
<blockquote>
<p>예를 들어, 입력이 고양이 → 출력도 고양이가 나와야함</p>
<pre><code>**(P)** 층을 거치면서 변형이 너무 많아지면 &quot;고양이였다&quot;는 정보 자체가 사라질 수 있음</code></pre><p> <strong>(S)</strong> 어떤 층은 아무 일도 안하는게 최선이라면? 
 → <strong>출력 = 원래 + 바뀐 것</strong> (즉, 차<strong>이(residual)</strong>을 배우게 하자!)
 <img src="https://velog.velcdn.com/images/hyooo__s/post/55da0271-7906-4c02-901b-10dee011c84e/image.png" alt=""></p>
</blockquote>
<ul>
<li><strong>x: 원본입력</strong>
⭐ 절대로 잃으면 안되는 정보!<ul>
<li>F(x): 여러 층을 거쳐 계산한 결과
ex. 귀 강조, 털 질감 등<ul>
<li>원본을 보완하기 위해 학습된 변화로, 만일 어떤층이 쓸모가 없다면 F(x)=0 즉, y=x로 학습하도록 함
⇒ <strong>층을 쌓더라도 최소한 손해를 보지 않음!</strong>
⇒ ResNet의 핵심은 학습된 표현이 원본 입력을 대체하지 못하게 하고 <strong>원본 입력을 항상 기준으로!</strong></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>서로 다른 모달리티 임베딩 결합</p>
<ul>
<li>시계열, 텍스트 임베딩은 서로 다른 종류의 정보</li>
<li>멀모에서 흔한 결합 방식으로는 concat, attention, element-wise addition이 있는데 그중 덧셈이 가장 단순하고 파라미터 증가가 없는 안정적인 방법이었음<h3 id="lightweight-classification-head">Lightweight Classification Head</h3>
</li>
</ul>
</li>
<li><p>위에서 결합한 시계열 표현이 <strong>1차원 CNN</strong>과 <strong>MLP로 구성된 분류 헤드</strong>와 결합</p>
</li>
</ul>
<ul>
<li><p>CNN 출력 → <strong>평탄화</strong> → *<em>MLP(softmax) *</em>→ 시계열 클래스 확률 벡터 출력</p>
<p>⇒ 단순 분류 헤드를 사용함으로써 transformer 기반 기존의 SOTA보다 훨씬 적은 학습 파라미터 사용</p>
</li>
</ul>
<blockquote>
<p>✓ <strong>주의</strong>: CNN은 특징추출기이고, CNN 뒤의 MLP와 softmax가 분류기!</p>
</blockquote>
<blockquote>
<p>✓ <strong>텍스트 임베딩을 통해 이미 특징을 다 뽑아 온거 아닌가? 왜 CNN이 필요한가?</strong></p>
</blockquote>
<ul>
<li>텍스트 임베딩 모델은<ul>
<li>입력을 고정된 벡터로 매핑, 비슷한 패턴을 가깝게 배치까지는 해줌</li>
<li>하지만 <strong>어떤 방향이 클래스 경계인지, 어떤 조합이 최적의 분리인지는 알려주지 않음</strong>
⇒ 즉 임베딩 = feature space, CNN = dicision boundary learner</li>
</ul>
</li>
<li>CNN은 지역적 패턴을 다시 추출해서 데이터셋의 specific한 특징을 강조하고 노이즈를 걸러내는 역할<ul>
<li>특징을 또 뽑는다기보단, 특징을 재구성한다는 표현이 더 맞음<ul>
<li>local 패턴 강조<ul>
<li>embedding이 준 global 정보와 raw가 준 local 정보를 조합하여 어떤 조합이 클래스 구분에 중요한가를 학습! </li>
<li><strong>단순 MLP만 사용할 경우 완전 연결이므로 시간 구조를 직접적으로 활용하지 못함</strong></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<blockquote>
<p><strong>✓ 시계열 CNN</strong><img src="https://velog.velcdn.com/images/hyooo__s/post/d6e014f6-8439-4124-8545-a8bc4415e2e2/image.png" alt=""></p>
</blockquote>
<blockquote>
<p><strong>✓ 최종 흐름</strong>
<img src="https://velog.velcdn.com/images/hyooo__s/post/a0393b27-df38-464f-98c8-36cdc3a87c80/image.png" alt=""></p>
</blockquote>
<hr>
<h2 id="4-experimental-protocol-and-details">4. Experimental Protocol and Details</h2>
<h3 id="datasets-and-evaluation-metrics">Datasets and Evaluation Metrics</h3>
<ul>
<li><p>벤치마크 기준으로 평가</p>
</li>
<li><p>데이터셋</p>
<ul>
<li>Ethanol Concentration, Face Detection, Handwriting, Heartbeat, Japanese Vowels, PEMS-SF, SelfRegulationSCP1, SelfRegulationSCP2, Spoken Arabic Digits, UWaveGestureLibrary</li>
</ul>
</li>
<li><p>변수 차원: 3~963</p>
</li>
<li><p>시계열 길이: 최대 1751</p>
</li>
<li><p>클래스 수: 최대 26개</p>
</li>
<li><p>평가지표: AvgWins</p>
<ul>
<li>우수한 성능 평균 횟수(동률포함), 학습가능파라미터 수 기준으로 계산 효율성<h3 id="baselines">Baselines</h3>
</li>
</ul>
</li>
<li><p>27개의 베이스 라인 모델</p>
<ul>
<li><p>전통적</p>
<ul>
<li>Dynamic Time Warping(DTW), eXtreme Gradient Boosting(XGBoost), RandOm Convolutional KErnel Transform(ROCKET)</li>
</ul>
</li>
<li><p>MLP기반</p>
<ul>
<li>DLinear</li>
</ul>
</li>
<li><p>RNN기반</p>
<ul>
<li>LSTM, LSTNet, 그리고 Linear State Space Layer(LSSL)</li>
</ul>
</li>
<li><p>CNN기반</p>
<ul>
<li><p>Temporal Convolutional Network(TCN), TimesNet</p>
</li>
<li><p>) 비지도 T-Loss, Temporal Neighborhood Coding(TNC), TS2Vec</p>
</li>
</ul>
</li>
<li><p>Transformer기반</p>
<ul>
<li><p>Transformer, Reformer, Informer, Pyraformer, Autoformer, Non-stationary Transformer, FEDformer, ETSformer, Flowformer, PatchTST</p>
</li>
<li><p>) 비지도 TS-TCC, Time Series Transformer(TST), MOMENT</p>
</li>
</ul>
</li>
<li><p>LLM기반</p>
<ul>
<li>OneFitsAll</li>
</ul>
</li>
</ul>
</li>
</ul>
<hr>
<h2 id="5-results-and-analysis">5. Results and Analysis</h2>
<h3 id="51-performance-and-efficiency">5.1 Performance and Efficiency</h3>
<h4 id="comparison-to-state-of-the-art">Comparison to State of the art</h4>
<p><img src="https://velog.velcdn.com/images/hyooo__s/post/0aa160fb-1251-4358-b448-73f7a90a84ef/image.png" alt=""></p>
<ul>
<li><p>27개의 베이스 라인 모델과 비교했을 때 LETS-C 모든 데이터셋에서 강건한 성능</p>
</li>
<li><p>기존 SOTA 대비 경쟁력 있다~</p>
<h4 id="computational-efficiency">Computational Efficiency</h4>
<p><img src="https://velog.velcdn.com/images/hyooo__s/post/c070b9a1-752d-4548-845d-b1e1bf92d813/image.png" alt=""></p>
</li>
<li><p>자원이 제한된 환경에서 성능과 계산 효율성 간의 균형 평가</p>
</li>
<li><p>OneFitsAII대비 평균적으로 14.48%정도의 학습가능파라미터만으로도 좋은 성능</p>
<ul>
<li>OneFitsAII은 TimesNet이나 FEDformer와 같은 주요 모델 대비 파라미터 수가 적다는 장점이 있는 모델임</li>
</ul>
</li>
<li><p>LETS-C는 텍스트 임베딩 계산이 딱 1번 수행된다는 점이 중요!</p>
<ul>
<li>OneFitsAII같은 모델은 부분 동결 LLM을 파인튜닝하는 과정에서 지속적으로 계산 발생<h3 id="52-effectiveness-of-lets-c">5.2 Effectiveness of LETS-C<img src="https://velog.velcdn.com/images/hyooo__s/post/ac3780fc-4a33-4e44-8b0d-f430f4e6d775/image.png" alt=""></h3>
</li>
</ul>
</li>
<li><p>텍스트 임베딩이 시계열 분류에 적절한지 검증</p>
<ul>
<li>동일 클래스 내의 시계열 쌍과 서로 다른 클래스 간의 시계열 쌍에 대해 평균 코사인 유사도 계산</li>
</ul>
</li>
<li><p>히트맵: 빨간색 - 유사도 높고, 파란색 - 유사도 낮음</p>
<ul>
<li>클래스 내부 유사도가 클래스 간 유사도보다 일관되게 높게 나타남<h4 id="generalization-across-various-text-embedding-models">Generalization Across Various Text Embedding Models</h4>
</li>
</ul>
</li>
<li><p>text-embedding-3-large이외의 다양한 텍스트 임베딩 모델에 대한 일반화 성능 평가<img src="https://velog.velcdn.com/images/hyooo__s/post/885ae250-e2eb-4990-9d77-e651bcef4f8d/image.png" alt=""></p>
<ul>
<li><p>e5-mistral-7b-instruct, gte-large-en-v1.5, nomic-embed-text-v 모델 추가 적용</p>
</li>
<li><p>다양한 텍스트 임베딩 모델 전반에서도 우수한 성능</p>
<h4 id="optimizing-model-size-with-minimal-accuracy-loss">Optimizing Model Size with Minimal Accuracy Loss</h4>
</li>
</ul>
</li>
<li><p>모델 정확도와 모델 크기 간의 trade-off 분석</p>
<ul>
<li>분류 헤드의 선형 계층 및 합성곱 계층 수를 1개~5개까지 조절</li>
</ul>
</li>
<li><p>trade-off가 데이터셋에 따라 다소 차이가 있으나 전반적으로 파라미터수를 줄여도 정확도 크게 안변함</p>
<h3 id="53-additional-analysis">5.3 Additional Analysis</h3>
<h4 id="ablation-study">Ablation Study</h4>
</li>
<li><p>텍스트 임베딩 + 시계열 데이터 결합이 단일 모달리티보다 어떤 이점을 갖는지 검증</p>
<h4 id="alternative-methods-for-fusing-time-series-with-embeddings">Alternative Methods for Fusing Time Series with Embeddings</h4>
</li>
<li><p>단순 덧셈 외, 시계열과 임베딩을 결합하기 위한 2가지 추가적인 방법 검증</p>
<ul>
<li>임베딩 → 합성곱 계층, 시계열 데이터 → 완전연결계층으로 처리한 뒤
두 분기의 특징을 하나의 최종 밀집 네트워크에서 결합</li>
<li>시계열과 임베딩 concat한 후, 경량 분류 헤드를 통해 처리</li>
<li>교차 어텐션은 계산복잡도가 커서 안했음</li>
</ul>
</li>
<li><p>본 연구의 목표는 경량모델개발이므로 보다 단순한 파라미터 구조의 덧셈 방식 최종 채택</p>
</li>
</ul>
<hr>
<h2 id="6-conclusion">6. Conclusion</h2>
<ul>
<li>기성 텍스트 임베딩을 시계열 분석, 특히 분류 과제에 적용한 최초의 연구</li>
<li>시계열 데이터를 텍스트 임베딩 모델을 통해 투영하고 단순하지만 효과적인 분류 헤드를 사용함으로써 SOTA달성</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] Modern TCN : A Modern Temporal Convolutional Network for Time Series Forecasting]]></title>
            <link>https://velog.io/@hyooo__s/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Modern-TCN-A-Modern-Temporal-Convolutional-Network-for-Time-Series-Forecasting</link>
            <guid>https://velog.io/@hyooo__s/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Modern-TCN-A-Modern-Temporal-Convolutional-Network-for-Time-Series-Forecasting</guid>
            <pubDate>Wed, 18 Feb 2026 06:05:00 GMT</pubDate>
            <description><![CDATA[<h2 id="overview"><strong>Overview</strong></h2>
<blockquote>
<ul>
<li><strong>논문명:</strong> ModernTCN: A Modern Temporal Convolutional Network for Time Series Forecasting</li>
</ul>
</blockquote>
<ul>
<li><strong>학회(출판연도):</strong> ICLR(2024)</li>
<li><strong>연구분야:</strong> 머신러닝, 시계열 예측, 시퀀스 모델 아키텍쳐 설계</li>
</ul>
<hr>
<h2 id="abstract">Abstract</h2>
<p>최근 Transformer 또는 MLP 기반 모델이 시계열 분석에 주도권을 가지고 있으나, 전통적인 TCN을 현대화함으로써 더 나은 효율성과 성능을 증명</p>
<blockquote>
<p><strong>✓ 설명을 덧붙이자면</strong> </p>
</blockquote>
<ul>
<li>2018년~2022년동안 시계열 분야는 LSTM → Transformer → 더 복잡한 Transformer 변형과 같이 발전</li>
<li>하지만 Transformer가 NLP에서 성공했을지라도 시계열은 NLP와 분명히 다르기 때문에 Transformer가 항상 최적은 아닐 수 있다.</li>
<li>*[참고]**
&lt;NLP의 경우&gt; ① 데이터가 많고 ② 문맥이 복잡하며 ③ 문장 길이가 제한되어 있다
↔ &lt;시계열&gt;은 ① 데이터가 적고 ② 패턴이 반복적이며 ③ 수 천~수 만 길이 가능</li>
</ul>
<hr>
<h2 id="1-introduction">1. Introduction</h2>
<h3 id="시계열-예측">시계열 예측</h3>
<blockquote>
<p>** ✓ 시계열 예측이란?**</p>
</blockquote>
<ul>
<li>과거 데이터를 기반으로 미래 값을 예측하는 문제
X_{t-L:t} → X_{t+1:t+H}</li>
<li>시계열 예측은 시간 순서가 절대적이고, 패턴이 고정되어 있지 않으며, 계절성 및 추세, 잡음이 많기 때문에 쉽지 않음</li>
</ul>
<blockquote>
<p>** ✓ TCN은 무엇인가?**</p>
</blockquote>
<ul>
<li>TCN은 시계열 데이터를 처리하기 위해 설계된 1차원 합성곱(1D Conv)기반 시퀀스 모델
즉, <strong>단순 CNN이 아님!</strong></li>
<li>RNN → LSTM/GRU → Transformer → (다시) Convolution <ul>
<li>RNN의 경우 병렬화의 어려움과 기울기 소실 문제가 있고,</li>
<li>Transformer의 경우에는 메모리를 많이 사용하고 작은 데이터셋에서는 과적합 등의 문제로 인해 다시 Convolution으로 흐름이 변하고 있는 추세</li>
</ul>
</li>
</ul>
<blockquote>
<p>** ✓ TCN의 3가지 핵심구조**</p>
</blockquote>
<ul>
<li><strong>인과적 합성곱(Causal Convolution)</strong><img src="https://velog.velcdn.com/images/hyooo__s/post/f6a99eab-b395-4315-9be7-c408106051d5/image.png" alt="">    <ul>
<li>출력 y_t는 현재와 과거만 연결, 미래는 연결X (시계열 예측에서는 미래 정보를 보면 안되기 때문</li>
</ul>
</li>
<li><strong>확장 합성곱(Dilated Convolution)</strong><img src="https://velog.velcdn.com/images/hyooo__s/post/ae9d2e2e-cf6e-429b-85bc-fd5a843eebdf/image.png" alt=""><ul>
<li>커널 사이에 dilation(간격)을 둬서 긴 과거 정보(long-range dependecy)를 적은 층으로 커버</li>
<li>dilation을 1,2,4,8식으로 늘리는데 커널 간격을 띄어서 과거를 샘플링하는 방식</li>
<li>레이어 수는 줄이고 계산량은 거의 유지할 수 있다는 장점</li>
</ul>
</li>
<li><strong>Residual Connection</strong><img src="https://velog.velcdn.com/images/hyooo__s/post/8a84b800-6d1d-45c6-9bb4-7747f2ef48d6/image.png" alt=""><ul>
<li>깊어질수록 gradient 소실 문제 발생</li>
<li>Resnet스타일의 구조를 활용하여 깊은 네트워크에서도 학습 안정성 확보<ul>
<li>y=x+TCNBlock(x)</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>결측치 예측, 행동 예측, 이상치 탐지 등 많은 활동이 가능함</p>
</li>
<li><p>Transformer기반 방법, MLP기반 모델이 특히 두드러짐    </p>
<ul>
<li>2010년대: TCN과 그 변형들이 많이 사용됨</li>
<li>2020년대: Transformer기반, TCN기반 모델들이 몇 년 사이에 등장해서 안정적인 성능 가능</li>
</ul>
</li>
</ul>
<h3 id="erf문제">ERF문제</h3>
<blockquote>
<h4 id="✓-erf란">✓ ERF란?</h4>
</blockquote>
<ul>
<li><p>모델의 출력 하나가 실제로 얼마나 넓은 입력 범위의 정보에 영향을 받는지</p>
</li>
<li><p>실제로는 학습과 추론에서 의미이쎅 기여하는 범위를 의미</p>
</li>
<li><p>입력시계열의 더 넓은 범위의 데이터를 사용하여 각 출력 지점의 정보 계산</p>
</li>
<li><p><strong>전통적 TCN의 경우</strong>
: 이론상 reception field는 커질 수 있지만, 실제 ERF는 <strong>중앙에 집중</strong>되고 멀어질수록 영향이 급격히 줄어드는 경우가 많음</p>
</li>
<li><p>** Transformer/MLP기반 모델의 경우**
: <strong>전역적인 ERF</strong>를 가짐으로써 먼 시점의 정보도 출력에 실질적인 영향을 줌
⇒ 제한된 ERF로 합성곱 기반 모델이 약세</p>
</li>
</ul>
<h3 id="modorn-tcn의-등장">Modorn TCN의 등장</h3>
<ul>
<li>Transformer 블록과 유사한 구조</li>
<li>ERF를 효과적으로 증가시킬 수 있는 대형 커널 주로 사용</li>
<li>현재 기준에서 성능이 그다지 높지 않지만, 합성곱이 변수간 의존성도 포착 가능</li>
<li>장단기예측, 결측값 보간, 분류, 이상탐지를 포함한 5가지 주요 시계열 분석 과제로 평가
→ 우수한 성능
<img src="https://velog.velcdn.com/images/hyooo__s/post/0a1799d1-d0f9-4010-bfbb-2b1b0e6a28c5/image.png" alt=""><img src="https://velog.velcdn.com/images/hyooo__s/post/e00b4030-a23d-4f2f-8239-860872417e0f/image.png" alt=""> ✓ 색이 진할수록 해당 시점 출력에 더 큰 영향을 미친다는 의미
⇒ 깊게 쌓기, 복잡한 구조, 멀티 브랜치가 아닌 <strong>큰 커널을 사용한 현대적 conv</strong>를 사용하자!
⇒ 합성곱이 시계열에서 밀린 이유는 구조가 낡았기 때문이지 합성곱 자체가 약해서가 아니다</li>
</ul>
<hr>
<h2 id="2-related-work">2. Related work</h2>
<h3 id="21-convolution-in-time-series-analysis">2.1 Convolution In Time Series Analysis</h3>
<h4 id="1-micn">1. MICN</h4>
<ul>
<li><p>인과적 합성곱뿐만 아니라 다중 스케일 합성곱 구조 제안</p>
<ul>
<li>시계열에서 국소적 특징과 전역적 상관관계를 결합하기 위함</li>
</ul>
</li>
</ul>
<h4 id="2-scinet">2. SCINet</h4>
<ul>
<li><strong>재귀적인 다운 샘플 - 합성곱 - 상호작용</strong> 구조 도입</li>
</ul>
<h4 id="한계">[한계]</h4>
<p>제한된 ERF로 인해 장기 의존성을 모델링하는데에 어려움</p>
<h4 id="3-timesnet">3. TimesNet</h4>
<ul>
<li><strong>1차원 합성곱을 사용하는 다른 모델과 달리</strong>
1차원 시계열을 2차원 변형으로 변환한 뒤, CV에서 사용되는 <strong>2D 합성곱 백본을 활용</strong>해서 정보성 높은 표현을 얻음</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hyooo__s/post/aaf550e7-fe7e-4a8e-aea8-31bda6052534/image.png" alt=""><img src="https://velog.velcdn.com/images/hyooo__s/post/a55270fa-5905-4b29-896c-06580d6fc839/image.png" alt=""></p>
<p>⇒ Transformer가 강한 이유는 attention이 아닌 <strong>블록설계</strong>에 있다.
때문에, Modern TCN은 ① Transformer block 구조 차용, ② attention 제거, ③ 큰 커널의 Conv로 ERF를 확보하고, ConvFFN으로 변수간 의존성 처리</p>
<h3 id="22-modern-convolution-in-computer-vision">2.2 Modern Convolution in Computer Vision</h3>
<h4 id="1-convnext">1. ConvNeXt</h4>
<p>: ConvNet → ViT → Modern Conv(ConvNeXt)</p>
<ul>
<li>20년대에 들어오면서 ViT가 제안되며 ConvNet을 능가</li>
<li>이를 따라 잡기 위해 Modern Conv가 도입되었고, ConvNeXt는 합성곱 블록을 <strong>Transformer 블록과 유사하게 설계</strong></li>
</ul>
<h4 id="2-replnet">2. RepLNet</h4>
<ul>
<li><p><strong>구조적 재파라미터화 기법</strong>으로 커널 크기를 31x31로 확장</p>
<ul>
<li>Transformer의 전역 ERF에 더 가까워지기 위함</li>
</ul>
</li>
</ul>
<h4 id="3-slak">3. SLak</h4>
<ul>
<li>큰 커널을 2개의 직사각형 <strong>병렬 커널로 분해</strong><ul>
<li>동적 희소성 사용
→ 커널 크기 51x51로 확장</li>
</ul>
</li>
</ul>
<hr>
<h2 id="3-modern-tcn">3. Modern TCN</h2>
<h3 id="31-modernize-the-1d-conv-block">3.1 Modernize The 1D Conv Block</h3>
<h4 id="1d-합성곱-블록의-재설계">[1D 합성곱 블록의 재설계]</h4>
<ul>
<li><p>DWConv</p>
<ul>
<li>각 feature별로 토큰들 사이의 시간적 정보 학습</li>
<li>Transformer의 self-attention 모듈과 동일한 역할</li>
</ul>
</li>
<li><p>ConvFFN</p>
<ul>
<li><p>Transformer의 FFN 모듈과 유사</p>
</li>
<li><p>2개의 PWConv로 구성</p>
</li>
<li><p>ConvFFN블록의 hidden 채널수가 입력 채널보다 r배 더 큰 inverted bottleneck 구조 채택</p>
<blockquote>
<h4 id="✓-inverted-bottleneck-역병목-구조">✓ inverted bottleneck (역병목 구조)</h4>
<p>: 입력과 출력 차원을 중간층(Hidden layer)의 차원을 훨씬 크게(r배) 가져가는 구조
즉, 채널을 <strong>먼저 확장</strong>하고 연산한 후 <strong>다시 줄이는 구조</strong>
↔ <strong>[병목구조]</strong>: 중간채널을 줄였다가 다시 <strong>늘리는 구조</strong><img src="https://velog.velcdn.com/images/hyooo__s/post/0193e709-eec8-4101-af8c-ee0f566757b9/image.png" alt="">→ 더 적은 파라미터로도 효율적으로 깊은 특징을 학습할 수 있음</p>
</blockquote>
<blockquote>
<h4 id="참고">[참고]</h4>
<p><img src="https://velog.velcdn.com/images/hyooo__s/post/ff526d41-5a8d-46d5-ae08-ea348b59cc5a/image.png" alt=""></p>
</blockquote>
</li>
</ul>
</li>
</ul>
<p>⇒ 이러한 설계는 시간정보와 feature 정보의 혼합을 분리함</p>
<p>⇒ 즉, DWConv와 ConvFFN은 각각 시간 차원 또는 feature 차원 중 하나에서만 정보를 혼합하고, 이는 <strong>두 차원을 동시에 섞는 전통적인 합성곱과 다름!</strong></p>
<h4 id="한계-1">[한계]</h4>
<ul>
<li><p>시계열의 특성을 고려하지 못함</p>
<ul>
<li>시계열은 feature, 시간 차원 이외에도 <strong>변수 차원</strong>이 존재</li>
<li>하지만 그림2(b)와 같이 설계된 합성곱 블록을 쌓은 백본은 변수 차원을 제대로 처리하지 못함</li>
</ul>
</li>
</ul>
<h3 id="32-time-series-related-modifications">3.2 Time Series related modifications</h3>
<h4 id="cv">[CV]</h4>
<ul>
<li>백본 이전에 각 픽셀의 3채널(RGB) 특징을 embedding layer을 통해 D차원 벡터로 임베딩하여 RGB채널 정보를 혼합</li>
</ul>
<h4 id="한계-2">[한계]</h4>
<ul>
<li><p>유사한 변수 혼합(각 시점에서 m개의 변수를 단순히 d차원 벡터로 임베딩하는 방식)은 시계여에는 적합하지 않음</p>
</li>
<li><p>시계열의 변수들 간의 차이는 RGB 채널간 차이보다 훨씬 크기 때문</p>
<ul>
<li>단순한 임베딩 레이어만으로 변수간 복잡한 의존성을 학습할 수 없고,
서로 다른 행동 특성을 고려하지 못해서 변수의 독립적인 특성마저 잃게 될 수 있음</li>
</ul>
</li>
<li><p>이러한 임베딩 설계는 변수 차원을 제거하게 되어 이후 변수간 의존성을 연구할 수 없음</p>
</li>
</ul>
<h4 id="1-patchify-variable-independent-embedding-패치화-변수-독립-임베딩">1. Patchify Variable-independent Embedding (패치화 변수 독립 임베딩)</h4>
<ul>
<li>입력: 길이 L을 갖는 M개의 변수의 입력 시계열</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hyooo__s/post/2204ba5c-6022-4f47-a81c-ee61ca08c221/image.png" alt=""></p>
<ul>
<li>적절한 패딩 후 이를 patch 크기P의 N개의 패치로 나눔</li>
</ul>
<pre><code>- 패칭 과정의 stride = S (연속된 두 패치의 비중첩 길이)
- 즉 시간 축을 길이가 P짜리 덩어리로 나눈다.
     ![](https://velog.velcdn.com/images/hyooo__s/post/4fb03f07-9349-4563-9aee-e41a62160492/image.png)</code></pre><ul>
<li><p>이후 패치들은 D차원 임베딩 벡터로 변환
  <img src="https://velog.velcdn.com/images/hyooo__s/post/7ea8e8c1-d645-4bcb-899f-d79bc67a38b1/image.png" alt=""></p>
<ul>
<li><p>입력 임베딩
  <img src="https://velog.velcdn.com/images/hyooo__s/post/923e7610-ef45-4c60-935d-0e682be6c460/image.png" alt=""></p>
<ul>
<li>m: 변수 개수(채널, 센서수)<ul>
<li>d: 임베딩 차원(feature 차원)</li>
<li>n: 패치 개수(시간 토큰 수)</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>L이 아니라 N으로 Patchify<blockquote>
<h4 id="✓-왜-m-x-d-x-n-이어야-하는가">✓ 왜 M x D x N 이어야 하는가?</h4>
<ul>
<li><strong>M이 가장 먼저 있는 이유</strong>
: 변수는 처음부터 섞으면 안된다.
→ 각 변수는 독립적으로 patchify 및 embedding</li>
<li><strong>D가 있어야 하는 이유</strong>
: 이 패치를 어떠한 관점으로 볼 것인가?
상승하강, 주기성, 변화량 등을 담는 표현 공간임</li>
<li><strong>마지막에 N인 이유</strong>
: 시간축으로 Conv해야함
즉, N이 새로운 time axis</li>
</ul>
</blockquote>
</li>
</ul>
</li>
<li><p>구현을 단순화하기 위해 본 논문에서는</p>
<ul>
<li><p>Patchify embedding을 <strong>완전 합성곱 방식</strong> 채택</p>
<ul>
<li>X in shape를 M x 1 x L로 확장한 뒤,
커널 크기 P, Stride를 S를 갖는 1D Conv layer에 입력</li>
<li>이 Stem layer는 입력 1채널을 D개의 출력 채널로 매핑 <strong>(시간축만 압축)</strong></li>
<li>단 M개의 단변량 시계열은 <strong>서로 독립적으로</strong> 임베딩 
→ 변수 차원 유지 가능  </li>
</ul>
</li>
</ul>
</li>
</ul>
<h4 id="2-dwconv-시간">2. DWConv (시간)</h4>
<ul>
<li><p>채널A, 채널 B가 서로 정보를 주고 받지 않고, 채널 A 내부에서만 과거 시점들을 컨볼루션으로 시간적으로 혼합한다는 뜻</p>
</li>
<li><p>원래 시간 정보를 학습하도록 설계됨</p>
<ul>
<li>DWConv만으로 시간 간, 변수 간 의존성을 동시에 학습하는 것은 어렵기 때문에, DWConv가 변수 차원 정보 혼합까지 담당하도록 하는 것은 부적절<ul>
<li>기존의 feature 독립 DWConv를 feature와 변수 모두에 대해 독립적인 형태로 수정
⇒ 각 단변량이 사간적 의존성을 독립적으로 학습하도록!</li>
</ul>
</li>
</ul>
</li>
<li><p>DWConv에 큰 커널을 사용</p>
<ul>
<li>ERF 확장 및 시간 모델링 능력 향상</li>
</ul>
</li>
</ul>
<h4 id="3-convffn-특징">3. ConvFFN (특징)</h4>
<ul>
<li><p>각 토큰의 새로운 <strong>특징 표현을 학습</strong></p>
</li>
<li><p>DWConv가 feature 및 변수가 독립적이므로 이를 보완하기 위해 feature 및 변수를 혼합해야함!</p>
</li>
<li><p>단일 ConvFFN으로 feature과 변수간의 의존성을 학습하는데에는 무리
⇒ PWConv를 grouped PWConv로 대체해서 서로 다른 group수를 설정</p>
</li>
<li><p>즉 단일 ConvFFN을 ConvFFN1, ConvFFN2로 추가 분리</p>
<ul>
<li>ConvFFN1: 변수별 새로운 <strong>feature</strong> 표현학습</li>
<li>ConvFFN2: feature별 <strong>변수 간</strong> 의존성 포착</li>
</ul>
</li>
</ul>
<h4 id="위-3개의-수정을-거쳐-최종-modern-tcn-블록-완성">위 3개의 수정을 거쳐 최종 Modern TCN 블록 완성</h4>
<h3 id="33-overall-structure">3.3 Overall Structure</h3>
<p><img src="https://velog.velcdn.com/images/hyooo__s/post/b16a3520-318c-48f9-ac61-775e50f1e11e/image.png" alt=""></p>
<hr>
<h2 id="4-experiments">4. Experiments</h2>
<p><img src="https://velog.velcdn.com/images/hyooo__s/post/d97a09c8-3ff3-4ca0-9eef-28644f490570/image.png" alt="">Modern TCN 좋다~</p>
<hr>
<h2 id="5-model-analysis">5. Model Analysis</h2>
<p>커널 크기 늘리는 것이 ERF 에 좋았다~</p>
<hr>
<h2 id="6-conclusion-and-future-work">6. Conclusion And Future Work</h2>
<p>시계열 분석에 있어서 컨볼루션 기반도 좋다~
향후 더 긴 시퀀스, 다양한 도메인에서의 일반화 및 모델 경량화, 추론 최적화같은 방향 확장이 과제</p>
]]></description>
        </item>
    </channel>
</rss>