<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>BITLAB</title>
        <link>https://velog.io/</link>
        <description>AI Insight with Bitlab</description>
        <lastBuildDate>Fri, 31 Oct 2025 13:38:50 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>BITLAB</title>
            <url>https://velog.velcdn.com/images/vitaminlab_0901/profile/b19cb7f6-5422-4a7c-85b7-2cd68ad5bb4b/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. BITLAB. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/vitaminlab_0901" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[scGPT: toward building a foundation model 
for single-cell multi-omics using generative AI]]></title>
            <link>https://velog.io/@vitaminlab_0901/scGPT-toward-building-a-foundation-model-for-single-cell-multi-omics-using-generative-AI</link>
            <guid>https://velog.io/@vitaminlab_0901/scGPT-toward-building-a-foundation-model-for-single-cell-multi-omics-using-generative-AI</guid>
            <pubDate>Fri, 31 Oct 2025 13:38:50 GMT</pubDate>
            <description><![CDATA[<p>Cui, Haotian et al. &quot;scGPT: toward building a foundation model for single-cell multi-omics using generative AI.&quot; Nature methods vol. 21,8 (2024): 1470-1480. doi:10.1038/s41592-024-02201-0</p>
<p><a href="https://www.nature.com/articles/s41592-024-02201-0">논문 링크</a></p>
<h2 id="abstract">Abstract</h2>
<blockquote>
<ul>
<li>word와 유전자의 유사성에 착안, NLP 분야에서 성공한 generative pretrained transformer 접근법을 Single cell 분야에 적용</li>
</ul>
</blockquote>
<ul>
<li>3300만 개 이상의 데이터를 기반으로 파운데이션 모델 scGPT 구축</li>
<li>학습된 scGPT는 유전자 발현 및 세포에 관한 생물학적 데이터를 효과적으로 추출</li>
<li>파인 튜닝 등을 통한 방법으로 다양한 다운스트림 작업에서 높은 성능을 보임 </li>
</ul>
<h2 id="introduction">Introduction</h2>
<ul>
<li>문제점 <ul>
<li>현재 single-cell 분석 모델들은 특정 분석 목적에만 초점을 맞춰 분산되어 있음<ul>
<li>연구별 데이터셋의 범위와 규모가 제한적임</li>
</ul>
</li>
</ul>
</li>
<li>파운데이션 모델의 필요성<ul>
<li>기존 파운데이션 모델(GPT-4, Enformer)들은 일반적 지식 능력을 가짐</li>
<li>다양한 조직의 유전자 간 복잡한 상호작용을 학습할 대규모 모델이 필요</li>
</ul>
</li>
<li>scGPT<ul>
<li>3,300만 개 이상 세포로 사전학습된 파운데이션 모델</li>
<li>non-sequential한 오믹스 데이터를 직접 모델링하는 통합 생성형 사전학습 워크플로우 구축</li>
<li>사전 훈련-파인튜닝 접근 방식 제시</li>
<li>장점<ol>
<li>전이 학습 / 파인튜닝 성능 : 세포 유형 예측,  perturbation 예측, 배치 보정, 다중 오믹스 통합 등 광범위한 다운스트림 작업에서 성능 달성</li>
<li>생물학적 지식 반영 : 유전자 임베딩과 어텐션을 통해 조건별 유전자-유전자 상호작용 규명</li>
</ol>
</li>
</ul>
</li>
</ul>
<h2 id="method">Method</h2>
<h3 id="input-embeddings">Input Embeddings</h3>
<p>모델의 입력을 구성하기 위해, scGPT는 유전자, 발현값, 조건이라는 세 가지 이질적인 정보를 통합하여 고차원 벡터 공간에 투영함</p>
<ul>
<li><p>Gene Tokens :</p>
<ul>
<li>각 유전자 g는 자연어 처리의 단어와 같이 이산적인 토큰으로 간주 → 고유한 정수 ID에 매핑</li>
<li>세포 i의 유전자 토큰 시퀀스는 아래와 같이 표현
$\mathbf{g}^{(i)} = [id(g_1^{(i)}), \dots, id(g_M^{(i)})]$</li>
</ul>
</li>
<li><p>Expression Values : </p>
<ul>
<li><p>단일 세포 데이터는 실험 배치 간의 기술적 변이로 인해 절대적인 발현량의 스케일 차이가 큼</p>
</li>
<li><p>scGPT는 이를 정규화하기 위해 cell-specific value binning 기법을 도입</p>
<ol>
<li>각 세포 i 내에서 0이 아닌 발현값을 가진 유전자들을 B개의 동일한 크기의 구간으로 나누기</li>
<li>유전자 j의 발현값 $x_{i, j}$는 자신이 속한 구간의 인덱스 k로 변환 → 절대적 수치를 상대적 순위 정보로 변환하는 효과를 가짐
$x_j^{(i)} = \begin{cases} k, &amp; \text{if } X_{i,j} &gt; 0 \text{ and } X_{i,j} \in [b_k, b_{k+1}] \ 0, &amp; \text{if } X_{i,j} = 0 \end{cases}$</li>
</ol>
</li>
<li><p>이를 통해 발현 벡터 x가 생성됨</p>
</li>
</ul>
</li>
<li><p>Condition Tokens:</p>
<ul>
<li><p>perturbation 여부와 같은 위치별 메타 데이터를 나타내는 토큰 벡터</p>
<p>$\mathbf{t}<em>c^{(i)} = [t</em>{c,1}^{(i)}, \dots, t_{c,M}^{(i)}]$</p>
</li>
</ul>
</li>
<li><p>최종 입력 임베딩 (Final Input Embedding):</p>
<p>$\mathbf{h}^{(i)} = \text{emb}_g(\mathbf{g}^{(i)}) + \text{emb}_x(\mathbf{x}^{(i)}) + \text{emb}_c(\mathbf{t}_c^{(i)})$</p>
<ul>
<li>세 가지 구성 요소는 각각 별도의 임베딩 레이어를 통과한 후, 원소별 덧셈을 통해 M x D차원의 최종 입력 h 를 형성</li>
<li>emb(g)와 emb(c)는 표준적인 고정 길이 임베딩 벡터 레이어</li>
<li>emb(x)는 binning된 값의 순서 관계를 모델링하기 위해 완전 연결 레이어를 사용</li>
</ul>
</li>
</ul>
<h3 id="cell-and-gene-expression-modeling-by-transformers">Cell and gene expression modeling by transformers</h3>
<p>scGPT는 표준 트랜스포머 인코더 스택을 활용하여 유전자 간의 복잡한 상호작용을 포착할 수 있음</p>
<p>$\mathbf{h}<em>t^{(i)} = \mathrm{transformer_block}\left(\mathbf{h}</em>{t-1}^{(i)}\right), \quad \forall t \in [1, n].$</p>
<ol>
<li>입력 임베딩 h는 L개의 트랜스포머 블록 스택을 통과</li>
<li>최종 출력은 유전자 수준의 풍부한 문맥적 표현을 포함</li>
</ol>
<ul>
<li><p>세포 표현 (Cell Representation)</p>
<ul>
<li>BERT와 유사하게, 유전자 토큰 시퀀스 맨 앞에 특수 토큰 cls를 추가합니다</li>
<li>이 토큰에 해당하는 최종 출력 벡터는 세포 전체의 상태를 요약하는 aggregated representation으로 사용</li>
</ul>
</li>
<li><p>배치 및 Modality 처리</p>
</li>
<li><p>서로 다른 실험이나 데이터 유형(RNA, ATAC-seq 등)을 구별하기 위한 추가 토큰 : (배치 : $t_b$ / Modality : $t_m$)</p>
</li>
<li><p>토큰들은 트랜스포머 내부로 입력되지 않고, 트랜스포머를 통과한 output에 연결</p>
<p>  → 배치나 Modality 자체의 특성이 아닌, 생물학적 정보에 더 집중하도록 유도</p>
<p>  → 파인튜닝에서 배치 효과를 보정하는 데 도움</p>
</li>
<li><p>다중 오믹스 연결
$\mathbf{h}_{\text{out}}^{(i)} = \text{concat}(\mathbf{h}_L^{(i)}, \text{emb}_b(\mathbf{t}_b^{(i)}) + \text{emb}_m(\mathbf{t}_m^{(i)}))$</p>
</li>
<li><p>scRNA-seq 세포 레벨 통합
$\mathbf{h}_{c, \text{out}}^{(i)} = \text{concat}(\mathbf{h}_c^{(i)}, \text{emb}_b(t_b^{(i)}))$</p>
</li>
</ul>
<h3 id="generative-pretraining">Generative pretraining</h3>
<p>GPT 모델은 입력 토큰을 바탕으로 다음 토큰을 예측 → 세포생물학적 접근으로 변환</p>
<p>⇒ cell type을 통해 유전자 발현량을 예측 (세포는 유전자로 정의)</p>
<p>비순차적(non-sequential) 데이터인 유전자 발현을 위한 생성형 학습 방식을 제안</p>
<ul>
<li><p>Specialized Attention Mask</p>
<ul>
<li><p>기존 causal masking은 순서가 없는 유전자에 적용 불가</p>
<p>  → scGPT는 입력 유전자를 known genes와 unknown genes로 동적 분할함</p>
</li>
<li><p>표준 attention 공식 : 
$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d}} + A_{\text{mask}}\right)V$</p>
</li>
<li><p>mask 구성</p>
<p>$a_{ij} = \begin{cases} 0, &amp; \text{if } j \notin \text{ unknown genes}, \ 0, &amp; \text{if } i = j \text{ and } j \in \text{ unknown genes}, \ -\infty, &amp; \text{if } i \ne j \text{ and } j \in \text{ unknown genes}. \end{cases}$</p>
<ul>
<li><p>알려지지 않은 유전자가 오직 알려진 유전자와 cls 토큰, 그리고 자기 자신에게만 어텐션을 수행하도록 강제</p>
<p> ⇒ 모델은 예측해야 할 유전자(= unknown gene)가 다른 알려지지 않은 유전자에는 어텐션하지 않고, 세포 임베딩이나 이미 알려진 유전자, 그리고 자기 자신에게만 어텐션하도록 마스킹</p>
</li>
<li><p>prediction confidence를(Attention 산출물) 기반으로 예측 순서를 정의 → 가장 예측하기 쉬운 것부터 예측하고, 그것을 단서 삼아 다음 것을 예측하는 동적인 순서를 제작 가능</p>
</li>
<li><p>추론 시, 가장 확신도 높은 예측부터 순차적으로 알려진 유전자 세트에 추가하는 반복적 생성 프로세스를 가능하게 하여 , 비순차적 데이터에 대한 autoregressive 생성을 구현</p>
</li>
</ul>
</li>
</ul>
</li>
<li><p>Pretraining Objective</p>
<ul>
<li><p>학습 목표는 알려지지 않은 유전자의 비닝된 발현값을 예측하는 것</p>
</li>
<li><p>손실 함수는 예측값과 실제값 사이의 Mean Square Error
$\mathcal{L} = \frac{1}{|\mathcal{U}<em>{\text{unk}}|} \sum</em>{j \in \mathcal{U}_{\text{unk}}} \left( \mathrm{MLP}!\left(\mathbf{h}_n^{(i)}\right) - x_j^{(i)} \right)^2$</p>
</li>
<li><p>훈련 중에는 gene-prompt 단계와 cell-prompt 단계가 순차적으로 진행</p>
<ul>
<li><p>각 단계에서 계산된 손실 값을 합산하여 모델 파라미터를 업데이트</p>
<ul>
<li>Gene prompts → 유전자 발현 예측: 알려진 유전자 발현 값을 기반으로 알려지지 않은 유전자 발현 값을 생성하도록 모델을 훈련</li>
<li>Cell prompts → 전체 유전체 발현 예측 : 특정 세포 유형 조건을 입력하면 전체 유전체 발현 패턴을 생성하도록 훈련</li>
</ul>
<p>⇒ 다양한 환경에서 유전자 및 세포 간의 복잡한 상호작용을 효과적으로 학습 가능</p>
<p>⇒ zero-shot(사전 훈련) 및 fine-tuning 환경 모두에서 문맥 인지 능력을 갖추도록 함</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="fine-tuning-objectives">Fine-tuning Objectives</h3>
<p>   사전학습된 모델은 특정 다운스트림 작업에 맞게 다양한 목적 함수의 조합으로 미세 조정</p>
<ol>
<li><p>GEP (Gene Expression Prediction)</p>
<ul>
<li>입력 유전자의 일부를 무작위로 마스킹하고 예측</li>
<li>유전자 간 공동 발현 관계 학습
$\mathcal{L}<em>{\text{GEP}} = \frac{1}{|\mathcal{M}</em>{\text{mask}}|} \sum_{j \in \mathcal{M}_{\text{mask}}} \left( \tilde{x}_j^{(i)} - x_j^{(i)} \right)^2$</li>
</ul>
</li>
<li><p>GEPC (GEP for Cell Modeling)</p>
<ul>
<li>유전자 발현을 세포 임베딩으로부터 예측
$\mathcal{L}<em>{\text{GEPC}} = \frac{1}{|\mathcal{M}</em>{\text{mask}}|} \sum_{j \in \mathcal{M}_{\text{mask}}} \left( \tilde{x}_j^{(i)} - x_j^{(i)} \right)^2$</li>
</ul>
</li>
<li><p>ECS (Elastic Cell Similarity)</p>
<ul>
<li>세포 임베딩 간의 유사도가 특정 임계값을 넘도록 → 대조 학습 방식 손실</li>
<li>유사한 세포끼리 가깝게 제작
$\mathcal{L}_{\text{ECS}} = -\left( \mathrm{sim}!\left(\mathbf{h}_c^{(i)}, \mathbf{h}_c^{(i&#39;)}\right) - \beta \right)^2$</li>
</ul>
</li>
<li><p>DAR (Domain Adaptation via Reverse Backpropagation)</p>
<ul>
<li>배치 효과 제거를 위한 적대적 학습<ul>
<li>$h_c$로부터 배치를 예측하는 도메인 분류기 생성
  → 해당 분류기는 배치를 잘 맞추도록 학습
  → 메인 트랜스포머는 Gradient Reversal Layer를 통해 분류기가 배치를 못 맞추도록 학습 :  cls 표현이 batch-invariant</li>
</ul>
</li>
</ul>
</li>
<li><p>Cell Type Classification</p>
<ul>
<li>표준적인 지도 학습</li>
<li>$h_c$에 MLP 분류기를 연결하여 세포 유형 레이블을 예측하고, 교차 엔트로피 손실을 최소화</li>
</ul>
</li>
</ol>
<h3 id="fine-tuning-on-downstream-tasks">Fine-tuning on downstream tasks</h3>
<ul>
<li><p>Cell type annotation</p>
<ul>
<li>GT가 존재하는 참조 데이터셋을 사용해 모델 학습</li>
<li>별도로 분리된 query set을 통해 성능 검증</li>
<li>사전학습 파운데이션 모델과 참조 데이터셋 사이 공통적으로 존재하는 유전자만을 유지해 사용</li>
<li>유전자 발현 값은 정규화 + 로그 변환 + binning을 거쳐 입력</li>
<li>CE를 최소화 하도록 학습</li>
</ul>
</li>
<li><p>Perturbation response prediction</p>
<ul>
<li>Highly Variable Genes 선별 + 발현 값 전처리</li>
<li>binning 값 대신 log 변환 발현 값을 input, target으로 사용 → 절대적인 발현량 예측 용이</li>
<li>조건 토큰을 추가해 유전자가 교란 대상인지 모델에 전달</li>
<li>control cell을 input - perturbed cell을 target으로 사용하는 pair를 구성해 학습 → 대조군 전체의 유전자 발현량과 특정 유전자의 Perturbation token을 바탕으로 이후 세포 상태를 예측하도록 학습</li>
</ul>
</li>
<li><p>Batch correction on integrating multiple scRNA-seq datasets</p>
<ul>
<li><p>batch effects 교정을 목적으로 함</p>
<p>→ 데이터 통합 시 배치 효과는 제거, 생물학적 다양성은 보존</p>
</li>
<li><p>생물학적 정보 보존 : GEP / GEPC  사용</p>
</li>
<li><p>배치 보정 : ECS / DAR / DSBN (Domain-Specific Batch Normalization) 동시에 최적화</p>
</li>
</ul>
</li>
<li><p>Integrative representation learning for scMultiomic data</p>
<ul>
<li>modality  token을 사용</li>
<li>GEP와 GEPC 목적 함수로 최적화</li>
<li>DAR 목적 함수를 추가하여 배치 보정을 함께 수행</li>
</ul>
</li>
<li><p>Gene regulatory network inference</p>
<ul>
<li><p>유전자 조절 네트워크(GRN)를 추론하는 두 가지 방법</p>
<ol>
<li><p>유전자 임베딩 기반</p>
<ul>
<li><p>유전자 임베딩 벡터의 유사성 기반 네트워크</p>
</li>
<li><p>사전학습된 모델의 유전자 임베딩으로부터 k-최근접 이웃을 기반으로 유전자 유사도 네트워크를 구축</p>
</li>
<li><p>특정 데이터셋으로 파인튜닝된 모델의 유전자 임베딩을 사용하여 네트워크를 구축</p>
<p>  ⇒ 유사도 그래프에 대해 Leiden 클러스터링을 수행</p>
<p>  ⇒ 5개 이상의 유전자로 구성된 유전자 클러스터 추출 : 유전자 프로그램 (기능 유전자 집합)</p>
</li>
</ul>
</li>
<li><p>어텐션 기반 </p>
<ul>
<li>Adamson dataset으로 파인튜닝</li>
</ul>
<ol>
<li>control 세포와 perturbed 세포를 각각 모델에 입력 → 어텐션 맵 획득</li>
<li>마지막 어텐션 레이어의 헤드로부터 attention scores를 추출</li>
<li>정규화 수행 후  평균 내어 최종적인 aggregate attention map을 생성</li>
<li>관심 유전자 열 선택 후 score 비교 → 높은 순서대로 정렬 시 영향을 많이 받는 유전자가 만들어짐 : 유전자 조절 네트워크 추론 결과</li>
</ol>
</li>
</ol>
</li>
</ul>
</li>
</ul>
<h2 id="result">Result</h2>
<h3 id="single-cell-transformer-foundation-model-overview">Single-cell transformer foundation model overview</h3>
<ul>
<li>scGPT<ul>
<li>대규모 cell atlas에 대한 pretraining과 특정 작업을 위한 fine-tuning이라는 두 단계로 구성된 파운데이션 모델</li>
<li>non-sequential 유전자 발현 데이터에 적용하기 위해 특별히 설계된 attention mask와 generative training pipeline 을 도입</li>
<li>사전학습을 위해 CELLxGENE 컬렉션에서 수집한 3,300만 개 이상의 정상 인간 세포 데이터가 사용</li>
</ul>
</li>
</ul>
<h3 id="scgpt-improves-the-precision-of-cell-type-annotation">scGPT improves the precision of cell type annotation</h3>
<ul>
<li><p>cell type annotation 작업에 미세조정한 결과</p>
</li>
<li><p>3가지 데이터셋에서 높은 예측 정확도를 달성</p>
<p>  → 건강한 세포로 학습시킨 모델이 MS 질병 상태의 세포를 정확히 예측</p>
<p>  →  6가지 암 종류로 학습한 모델이 이전에 본 적 없는 3가지 암 종류의 세포 유형도 정확히 분류</p>
</li>
<li><p>scGPT는 TOSICA, scBERT에 비해 모든 평가지표에서 일관되게 우수한 성능을 보임</p>
</li>
</ul>
<ul>
<li>췌장 데이터셋 클러스터링 결과 : GT와 Pred가 유사함</li>
</ul>
<h3 id="scgpt-predicts-unseen-genetic-perturbation-response">scGPT predicts unseen genetic perturbation response</h3>
<p>scGPT가 genetic perturbation 실험의 결과를 예측하는 데 사용될 수 있음을 확인</p>
<p>셀프 어텐션 메커니즘을 통해 모델은 교란된 유전자와 다른 유전자들 간의 복잡한 상호작용을 학습 가능함</p>
<ul>
<li><p>Prediction of unseen gene perturbations</p>
<ul>
<li>perturbation 실험 데이터로 미세 조정 후 unseen gene의 perturbation 결과 예측</li>
<li>3개의 Perturb-seq 데이터셋에서 perturbation 전후 발현 변화량 측정 → scGPT가 선형회귀 모델보다 5-20% 더 우수</li>
<li>실험적으로 검증된 5%의 perturbations 조합 → in silico로 확장해 전체 조합 공간 반응 예측</li>
</ul>
</li>
<li><p>In silico reverse perturbation prediction</p>
<ul>
<li><p>어떤 세포 상태를 얻기 위해 어떤 유전자를 조작해야 하는지를 찾는 역방향 예측 작업 → 치료 유전자 타겟을 찾는데 활용</p>
</li>
<li><p>Norman 데이터셋의 20개 유전자 하위 집합(210개 조합 가능)</p>
<p>  → 39개(18%)의 알려진 perturbation으로  학습</p>
<p>  →  scGPT는 세포 상태를 유발한 원인 유전자 조합을 Top-K 예측 내에서 성공적으로 찾음</p>
</li>
</ul>
</li>
</ul>
<h3 id="scgpt-enables-multi-batch-and-multi-omic-integration">scGPT enables multi-batch and multi-omic integration</h3>
<ul>
<li><p>Multi-batch scRNA-seq integration</p>
<ul>
<li><p>서로 다른 배치(다른 실험)에서 생성된 scRNA-seq 데이터를 통합하는 경우</p>
<p>  → 생물학적 변이 보존 + 기술적 배치 효과 제거 필요</p>
</li>
<li><p>마스킹된 유전자 발현을 복구하는 방식으로 미세조정 (SSL)</p>
</li>
<li><p>Seurat, Harmony 같은 기존 기술과 비교해 scGPT AvgBIO 점수가 5-10% 높음</p>
</li>
</ul>
</li>
<li><p>Single-cell multi-omic integration</p>
<ul>
<li>RNA, ATAC, 단백질 등 여러 모달리티의 정보를 통합하여 단일 세포 임베딩을 추출 가능</li>
<li>모든 세포가 모든 모달리티를 가질 경우<ul>
<li>BMMC (RNA+Protein)<ul>
<li>12개 배치, 9만 개 세포의 복잡한 데이터 에서 Seurat보다 9% 향상된 AvgBIO 점수를 기록</li>
</ul>
</li>
<li>CD4 naive T 세포와 CD4+ activated T 세포 같은 미묘한 하위 유형을 분리 가능</li>
</ul>
</li>
<li>세포마다 모달리티가 다를 경우<ul>
<li>ASAP human PBMC (RNA, ATAC, Protein이 4개 배치에 걸쳐 모자이크 형태로 존재)  : scMoMatt과 비교 시, scGPT가 특히 B세포, 골수성 세포 등에서 더 우수한 배치 보정 성능</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="scgpt-uncovers-gene-networks-for-specific-cell-states">scGPT uncovers gene networks for specific cell states</h3>
<ul>
<li>임베딩 기반 GRN<ul>
<li>사전학습 : 사전학습 모델의 임베딩만으로 HLA class I과 class II 유전자 그룹을 정확히 분리</li>
<li>미세조정 : 면역 데이터셋으로 미세조정한 모델은 T세포 활성화, B세포 신호전달등 더 구체적인 면역 관련 유전자 네트워크를 포착</li>
</ul>
</li>
<li>어텐션 기반 GRN<ul>
<li>어텐션 맵은 단일 세포 수준의 문맥 특이적 상호작용을 포착</li>
<li>perturbation 전후의 어텐션 맵을 비교함으로써, 특정 유전자에 의해 가장 큰 영향을 받는 유전자를 추론 가능<ul>
<li>DDIT3 유전자를 억제했을 때, scGPT가 어텐션 맵을 기반으로 선정한 상위 20개의 가장 영향받은 유전자는 실제 ChIP-Atlas 데이터베이스에 등록된 DDIT3의 표적 유전자와 100% 일치</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="scaling-and-in-context-effects-in-transfer-learning">Scaling and in-context effects in transfer learning</h3>
<ul>
<li>Scaling Effect : 다양한 크기의 데이터로 scGPT 모델들을 사전학습시킨 결과 , 사전학습 데이터의 양이 증가할수록 미세조정 후의 다운스트림 작업 성능이 일관되게 향상</li>
<li>In-context Effects : whole-human 데이터와 특정 장기 데이터로 사전학습한 모델의 차이 탐구<ul>
<li>COVID-19 데이터에서 혈액, 폐 특화 모델이 뇌 특화 모델보다 우수함 → 사전학습 모델과 다운스트림 작업의 맥락을 맞추는 것이 중요</li>
<li>범용적인 whole-human 모델도 사용 가능</li>
</ul>
</li>
</ul>
<h2 id="discussion">Discussion</h2>
<ul>
<li><p>언어 모델의 self-supervised pretraining 성공에 착안</p>
<p>  → 복잡한 생물학적 상호작용을 규명하고자 single cell에 동일한 접근법을 적용</p>
</li>
<li><p>Transformer를 통해 유전자와 세포 임베딩을 동시에 학습 + 어텐션 메커니즘으로 single cell의 유전자 간 상호작용을 포착하여 해석 가능성을 확보</p>
</li>
<li><p>사전학습 단계로만 새로운 데이터셋에서 세포 유형에 따른 의미 있는 클러스터링 가능 + 모델에 학습된 유전자 네트워크가 실험적으로 알려진 그룹과 일치</p>
</li>
<li><p>파인튜닝 과정을 통해 특정 작업에 맞게 조정된 scGPT는 처음부터 학습된 모델보다 우수한 성능을 보임</p>
</li>
<li><p>한계</p>
<ul>
<li>현 사전학습 모델은 배치 효과를 본질적으로 완화 불가</li>
<li>명확한 GT 값이 부재하고 데이터 품질이 일관되지 않아 모델 평가가 복잡</li>
</ul>
</li>
<li><p>향후 계획</p>
<ul>
<li>spatial omics 처럼 더 크고 다양한 질병 데이터를 포함하는 데이터셋으로 확장</li>
<li>시간 데이터를 통합해 인과 관계 학습</li>
<li>파인튜닝 없이 다운스트림 task에 적용하는 문맥 내 지시 학습 탐구 → 분석의 차이와 요구사항을 정확히 파악 : 유용성, 확장성 증가</li>
</ul>
</li>
</ul>
<h2 id="comment">Comment</h2>
<blockquote>
<p>유전 정보를 범용 모델 구조를 이용해서 학습했고, 일정 성능을 보였다는 게 유의미
attention 매커니즘이 성공적으로 정보 추출을 진행하여 실험적으로 해야 했던 부분들 상호보완 가능성 있음
내부적인 문맥을 고려하는 방법 이외 지식 내재화를 통하여 일반화 시킬 수 있는 방법이 있는지 궁금</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] FINETUNED LANGUAGE MODELS ARE ZERO-SHOT
LEARNERS
]]></title>
            <link>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-FINETUNED-LANGUAGE-MODELS-ARE-ZERO-SHOTLEARNERS-a3r9pu3j</link>
            <guid>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-FINETUNED-LANGUAGE-MODELS-ARE-ZERO-SHOTLEARNERS-a3r9pu3j</guid>
            <pubDate>Wed, 29 Oct 2025 02:21:13 GMT</pubDate>
            <description><![CDATA[<h1 id="0-abstract">0. ABSTRACT</h1>
<p>이 논문은 언어 모델의 제로샷 학습 능력을 향상시키는 간단한 방법을 탐구한다.
이 논문은 <strong>instruction tuning(지시문 튜닝)</strong> — 즉, 여러 데이터셋을지시문을 통해 파인튜닝하는 방식 — 이 보지 못한 과제들에 대한 제로샷 성능을 크게 향상시킨다는 것을 보여준다.</p>
<ul>
<li><strong>모델</strong>: 137B 파라미터 언어 모델</li>
<li>** 데이터**: 60개 이상의 NLP 데이터셋</li>
<li><strong>튜닝 방식:</strong> 각 데이터셋을 “자연어 지시문 템플릿” 형태로 변환</li>
<li><strong>결과 모델:</strong> *<em>FLAN *</em></li>
</ul>
<p>25개 평가 데이터셋 중 <strong>20개에서 GPT-3(175B)</strong>보다 높은 제로샷 성능을 가짐.</p>
<p>추가적인 실험 결과, <strong>성공의 핵심 요인은 다음 세 가지</strong>임이 밝혀졌다:
1️⃣ 미세조정에 사용된 <strong>데이터셋의 다양성과 수</strong>,
2️⃣ <strong>모델의 규모</strong>,
3️⃣ 그리고 <strong>자연어 형태의 지시문</strong> 사용.</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/7738d9dd-517f-4ddc-9c4d-15751fb3e9d7/image.png" alt=""></p>
<blockquote>
<p><strong>Figure 1.</strong></p>
</blockquote>
<p>여러 NLP 과제를 모두 *<em>자연어 지시문 *</em>형태로 변환해 학습함.
예시:</p>
<blockquote>
</blockquote>
<ul>
<li><strong>&quot;Get a cool sleep on summer days. How would you accomplish this goal?&quot;</strong></li>
<li><strong>&quot;Translate this sentence to Spanish.&quot;</strong><blockquote>
</blockquote>
이런 식으로, 각 과제마다 사람이 말하듯 문장 형태로 문제를 제시함.<blockquote>
</blockquote>
이를 통해 추론 과정에서는 학습에서 한 번도 본 적 없는 새로운 유형의 과제에 대해 모델이 지시문만 보고 답을 생성함.<blockquote>
</blockquote>
→ <strong>예: “Does the premise entail the hypothesis?” → It is not possible to tell.</strong><blockquote>
</blockquote>
즉, 여러 과제를 자연어로 학습시키면, 새로운 과제도 자연스럽게 이해해 풀 수 있는 모델이 된다는 걸 보여줌. 또한 FLAN이 GPT-3보다 작음(137B vs 175B)에도 불구하고 모든 항목에서 제로샷 기준으로 GPT-3을 능가한다는 것을 보여준다.</li>
</ul>
<h1 id="introduction">INTRODUCTION</h1>
<p>GPT-3와 같은 대규모 언어모델은 few-shot learning에서는 높은 성능을 보이나 제로샷에서는 그만큼의 성능을 내지 못한다.</p>
<p>그 이유 중 하나는, few-shot 예시가 주어지지 않으면 모델이 사전학습 데이터의 형식과 유사하지 않은 프롬프트에 대해 제대로 작동하기 어렵기 때문일 수 있다.</p>
<p>따라서 본 논문에서는 제로샷 성능을 높이기 위한 방법으로 <strong>&#39;지시문 튜닝&#39;</strong>을 활용했다.</p>
<p><strong>Instruction tuning</strong>은 <strong>pretrain–finetune</strong> 방식과 <strong>prompting</strong> 방식의 장점을 결합한 간단한 방법이다.</p>
<p>이는 <strong>파인튜닝</strong>을 통해 언어 모델이 <strong>추론 시점</strong>의 텍스트 입력에 더 잘 반응하도록 만든다.</p>
<p>이는 언어 모델이 순수히 <strong>자연어 지시문</strong>만으로 주어진 과제를 수행할 수 있는 잠재력을 보여준다.</p>
<p>또한 추가적인 실험 결과, </p>
<ul>
<li>instruction tuning에 포함되는 과제의 다양성을 늘릴수록 보지 못한 과제에서의 성능이 향상되며,</li>
<li>instruction tuning의 효과는 충분히 큰 모델 규모에서만 나타난다는 점이 밝혀졌다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/e93043e0-9b3d-4929-9d52-ed75cb7fbf3b/image.png" alt=""></p>
<table>
<thead>
<tr>
<th>방식</th>
<th>예시 모델</th>
<th>특징</th>
<th>한계</th>
</tr>
</thead>
<tbody><tr>
<td>(A) Pretrain–Finetune</td>
<td>BERT, T5</td>
<td>각 과제별로 따로 파인튜닝</td>
<td>과제마다 모델 따로 필요</td>
</tr>
<tr>
<td>(B) Prompting</td>
<td>GPT-3</td>
<td>예시나 프롬프트로 직접 유도</td>
<td>제로샷에 약함, 프롬프트 민감</td>
</tr>
<tr>
<td>(C) Instruction Tuning</td>
<td>FLAN</td>
<td>여러 과제를 지시문으로 학습 → 새로운 과제도 수행</td>
<td>대형 모델 필요</td>
</tr>
</tbody></table>
<h1 id="2-flan-instruction-tuning-improves-zero-shot-learning">2 FLAN: INSTRUCTION TUNING IMPROVES ZERO-SHOT LEARNING</h1>
<p>지시문 튜닝의 목적은 언어 모델이 <strong>NLP 지시문을 더 잘 이해하고 따르게 만드는 것</strong>이다. 여러 과제를 지시문 형태로 학습시키면, 모델이 <strong>보지 못한 과제도 지시문만 보고 수행할 수 있게</strong> 된다.</p>
<p>이를 평가하기 위해 과제 유형별로 데이터를 묶고, 한 클러스터를 제외한 나머지로 학습해 성능을 검증했다.</p>
<h2 id="21-tasks--templates">2.1 TASKS &amp; TEMPLATES</h2>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/a6c04e6c-b279-4a65-ae8e-972a6cb4c118/image.png" alt=""></p>
<p>다양한 과제를 포함한 지시문 튜닝용 데이터셋을 처음부터 새로 만드는 것은 많은 자원과 시간이 필요하기 때문에, 본 논문에서는이미 공개된 기존 데이터셋들을 <strong>지시문 형식으로 변환</strong>하였다.</p>
<p>이를 위해 <strong>TensorFlow Datasets</strong>에 공개되어 있는 <strong>62개의 텍스트 데이터셋</strong>을 수집하여,** language understanding<strong>와 **language generation</strong> 과제를 모두 포함하는 <strong>하나의 혼합 데이터셋</strong>으로 통합하였다.</p>
<p>각 데이터셋은 <strong>12개의 과제 클러스터</strong> 중 하나에 속하며 같은 클러스터 내의 데이터셋들은 동일한 과제 유형을 가진다.</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/be781e93-b89f-4450-b874-a36bd57480de/image.png" alt="">
<strong>Figure 4:</strong> 하나의 과제를 여러 문장 템플릿으로 다양하게 표현</p>
<p>각 데이터셋마다, 해당 과제를 <strong>지시문</strong>으로 설명하는 <strong>10개의 고유한 템플릿</strong> 을 직접 작성하였다.</p>
<table>
<thead>
<tr>
<th>종류</th>
<th>예시</th>
</tr>
</thead>
<tbody><tr>
<td>원래 문장</td>
<td>“이 리뷰의 감정은 긍정인가 부정인가?”</td>
</tr>
<tr>
<td>템플릿 1</td>
<td>“이 문장의 감정이 어떤지 말해줘.”</td>
</tr>
<tr>
<td>템플릿 2</td>
<td>“이 리뷰가 긍정적인지 부정적인지 판단해봐.”</td>
</tr>
<tr>
<td>템플릿 3</td>
<td>“이 영화 리뷰는 좋았을까, 나빴을까?”</td>
</tr>
<tr>
<td>템플릿 4</td>
<td>“긍정인지 부정인지 한 단어로 대답해.”</td>
</tr>
<tr>
<td>…</td>
<td>(이런 식으로 10개)</td>
</tr>
</tbody></table>
<p>10개의 템플릿 중 대부분은 원래의 과제를 그대로 설명하지만, <strong>다양성을 높이기 위해</strong>, 각 데이터셋마다 최대 <strong>3개의 “반전된 형태의 템플릿”</strong> 도 포함시켰다.</p>
<p>ex)</p>
<ul>
<li><strong>원래 과제:</strong> “이 리뷰는 긍정인가 부정인가?”</li>
<li><strong>반전 템플릿:</strong> “긍정적인 영화 리뷰를 하나 써봐.”</li>
</ul>
<p>모든 과제를 하나로 합친 <strong>통합 데이터셋</strong>으로 모델을 지시문 튜닝했고, 각 데이터셋 예시는 매번 <strong>랜덤한 지시문 템플릿</strong>을 골라서 모델이 <strong>다양한 표현의 명령을 이해하도록</strong> 학습시켰다.</p>
<h2 id="22-evaluation-splits">2.2 EVALUATION SPLITS</h2>
<p>FLAN이 지시문 튜닝에서 ** unseen 과제<strong>에 대해 얼마나 잘 수행하는지는 중요한데, 이때 무엇을</strong> unseen 과제**로 설정할 것인지가 중요하다.</p>
<p>기존에는 같은 데이터셋이 학습에 포함되지 않으면 그걸 unseen task로 간주하였는데 FLAN 방식은 좀 더 보수적으로 어떤 과제가 속한 <strong>클러스터 전체</strong>가 학습에서 빠져야 한다고 설정한다.</p>
<p>예를 들어, 데이터셋 D가 자연어 추론 과제라면,지시문 튜닝에는 어떤 자연어 추론 데이터셋도 포함되지 않고, 대신 다른 모든 클러스터(예: 감정분석, 번역, 요약 등)만 사용해 학습한다.</p>
<p>따라서, c개의 과제 클러스터에 대해 제로샷 성능을 평가하려면,각 클러스터를 하나씩 제외하고 학습한 c개의 서로 다른 모델을 각각 학습시켜 평가해야 한다.</p>
<h2 id="23-classification-with-options">2.3 CLASSIFICATION WITH OPTIONS</h2>
<p>FLAN은 <strong>디코더 전용 언어 모델</strong> 을 지시문 튜닝한 버전이기 때문에,자연스럽게 <strong>자유 형식의 텍스트</strong> 로 응답을 생성한다. 따라서 <strong>생성 과제</strong>에는 추가적인 수정이 필요하지 않다.</p>
<p>한편, <strong>분류 과제</strong>의 경우, 이전 연구에서는 <strong>순위 분류</strong> 방식을 사용했다.</p>
<blockquote>
<p>예: 가능한 답이 “yes” / “no” 두 가지일 때
→ 모델이 각 단어에 부여한 확률 중 더 높은 쪽을 예측 결과로 선택</p>
</blockquote>
<p>하지만 이 방식에는  “yes”를 표현할 수 있는 다양한 단어들(예: yeah, yep, sure) 때문에 정답의 확률이 여러 단어로 분산되어 낮게 계산될 수 있다는 한계가 있다.</p>
<p>따라서 이에 대한 해결책으로 <strong>options suffix</strong> 를 추가했다.
즉, 분류 과제를 모델에 입력할 때, 문장 끝에 <code>OPTIONS</code>라는 토큰과 함께 <strong>가능한 정답 후보 목록</strong>을 명시적으로 붙인다.</p>
<p>이 방식은 모델이 어떤 답변 형태를 선택해야 하는지를 명확히 인식하도록 돕는다.</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/7f7806bc-ec74-444f-8586-5804586957b7/image.png" alt=""></p>
<h2 id="24-training-details">2.4 TRAINING DETAILS</h2>
<h3 id="1-모델-구조-model-architecture--pretraining">1) 모델 구조 (Model Architecture &amp; Pretraining)</h3>
<ul>
<li><strong>기반 모델:</strong> LaMDA-PT
→ 137B(1,370억) 파라미터를 가진 디코더 전용 트랜스포머 언어 모델</li>
</ul>
<ul>
<li><p><strong>사전학습 데이터:</strong></p>
<p>웹 문서
대화 데이터(dialog data)
위키피디아(Wikipedia)</p>
</li>
<li><p><strong>토크나이징:</strong>
SentencePiece
2.49조(BPE) 토큰, 어휘 수 32k
비영어 데이터: 약 10% 포함</p>
</li>
</ul>
<h3 id="2-지시문-튜닝-instruction-tuning-procedure">2). 지시문 튜닝 (Instruction Tuning Procedure)</h3>
<ul>
<li>*<em>튜닝 대상: *</em>LaMDA-PT</li>
</ul>
<p>모든 데이터셋을 무작위로 섞어 학습
데이터셋별 최대 30,000개 예시만 사용
데이터 크기 비율에 따라 혼합 — 최대 mixing rate 3k</p>
<h1 id="3-results">3. RESULTS</h1>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/6cdd7307-34f8-4333-a9af-d38db7e3dfd0/image.png" alt=""></p>
<p>FLAN은 다음 <strong>7가지 과제 유형</strong> 에서 성능을 평가함:</p>
<ul>
<li><strong>자연어 추론 (NLI)</strong></li>
<li><strong>독해 (Reading Comprehension)</strong></li>
<li><strong>비문맥 질의응답 (Closed-book QA)</strong></li>
<li><strong>번역 (Translation)</strong></li>
<li><strong>상식 추론 (Commonsense Reasoning)</strong></li>
<li><strong>지시어 해석 (Coreference Resolution)</strong></li>
<li><strong>구조→문장 생성 (Struct-to-Text)</strong></li>
</ul>
<p>평가 시, 각 과제 유형을 <strong>하나씩 제외</strong> 하여 <strong>unseen task</strong> 성능을 측정.</p>
<hr>
<h3 id="전반적-결과-요약">전반적 결과 요약</h3>
<table>
<thead>
<tr>
<th>비교 대상</th>
<th>결과 요약</th>
</tr>
</thead>
<tbody><tr>
<td><strong>LaMDA-PT vs FLAN</strong></td>
<td>Instruction tuning 후 <strong>대부분의 데이터셋에서 성능 대폭 향상</strong></td>
</tr>
<tr>
<td><strong>GPT-3 (175B)</strong></td>
<td><strong>25개 중 20개</strong> 데이터셋에서 GPT-3 제로샷보다 우수<br><strong>10개</strong>에서는 GPT-3 few-shot도 능가</td>
</tr>
<tr>
<td><strong>GLaM (64B/64E)</strong></td>
<td><strong>19개 중 13개</strong> 제로샷 성능 우수<br><strong>19개 중 11개</strong>에서는 원샷(one-shot) GLaM 초과</td>
</tr>
</tbody></table>
<blockquote>
<p>Instruction tuning은 특히 <strong>지시문 형태로 표현 가능한 과제(NLI, QA, Translation 등)</strong> 에서 매우 효과적이었다.
반면, 문장 완성형 과제(Commonsense Reasoning, Coreference Resolution)에서는 효과가 제한적이었다.</p>
</blockquote>
<hr>
<h3 id="과제별-주요-결과">과제별 주요 결과</h3>
<h3 id="자연어-추론-nli">자연어 추론 (NLI)</h3>
<ul>
<li>전제(premise)와 가설(hypothesis) 간의 의미 관계를 판단하는 과제.</li>
<li>FLAN은 GPT-3, LaMDA-PT 등 <strong>모든 기준 모델을 큰 폭으로 능가.</strong></li>
<li>NLI 문장을 “Does <code>&lt;premise&gt;</code> mean that <code>&lt;hypothesis&gt;</code>?”처럼
<strong>자연스러운 질문 형태로 표현</strong>하여 성능 향상.</li>
</ul>
<hr>
<h4 id="독해-reading-comprehension">독해 (Reading Comprehension)</h4>
<ul>
<li>주어진 지문을 읽고 질문에 답하는 과제.</li>
<li><strong>MultiRC</strong>, <strong>OBQA</strong>에서 기준 모델보다 우수.</li>
<li><strong>BoolQ</strong>에서도 GPT-3보다 훨씬 높은 성능.
(LaMDA-PT도 강했지만 FLAN이 더 뛰어남)</li>
</ul>
<hr>
<h4 id="비문맥-질의응답-closed-book-qa">비문맥 질의응답 (Closed-book QA)</h4>
<ul>
<li><p>외부 문서 없이 세계 지식만으로 질문에 답함.</p>
</li>
<li><p><strong>GPT-3보다 4개 데이터셋 모두에서 성능 우위.</strong></p>
</li>
<li><p><strong>GLaM</strong>과 비교 시:</p>
<ul>
<li>ARC-e, ARC-c에서 더 좋음</li>
<li>NQ, TQA에서는 약간 낮음</li>
</ul>
</li>
</ul>
<hr>
<h4 id="번역-translation">번역 (Translation)</h4>
<ul>
<li><p>학습 데이터의 90%가 영어, 일부 다국어 포함.</p>
</li>
<li><p><strong>WMT’14 (Fr-En)</strong>, <strong>WMT’16 (De-En, Ro-En)</strong> 기준 평가.</p>
</li>
<li><p>결과:</p>
<ul>
<li><strong>6개 제로샷 평가 모두에서 GPT-3보다 우수</strong></li>
<li><strong>few-shot GPT-3보다는 다소 낮음</strong></li>
<li>영어→타언어 번역은 상대적으로 약함
<em>(영어 중심 SentencePiece 토크나이저 및 데이터 편향 때문)</em></li>
</ul>
</li>
</ul>
<hr>
<h4 id="추가-과제-additional-tasks">추가 과제 (Additional Tasks)</h4>
<ul>
<li><p><strong>Commonsense Reasoning</strong>, <strong>Coreference Resolution</strong>:</p>
<ul>
<li>7개 중 3개만 LaMDA-PT 초과 → 효과 미미</li>
<li>이유: 이미 언어모델의 기본 학습 목표(문장 완성)와 유사하기 때문</li>
</ul>
</li>
<li><p><strong>Sentiment Analysis</strong>, <strong>Paraphrase Detection</strong>, <strong>Struct-to-Text</strong> 등
→ 대부분 <strong>zero-shot FLAN이 zero-shot LaMDA-PT보다 우수</strong>,
<strong>few-shot 성능과도 비슷하거나 더 좋음.</strong></p>
</li>
</ul>
<hr>
<h3 id="결론-요약">결론 요약</h3>
<blockquote>
<p>🔹 <strong>Instruction tuning</strong>은 “지시문 형태로 표현 가능한 과제”에서 탁월한 효과를 보였으며,
🔹 <strong>NLI, QA, 번역, 요약 등 고차원적 언어 이해 과제</strong>에서 특히 강력하다.
🔹 반면 <strong>언어모델링 기반 과제(상식추론, 대명사 해석)</strong> 에서는 효과가 제한적이다.</p>
</blockquote>
<h1 id="4-ablation-studies--further-analysis">4 ABLATION STUDIES &amp; FURTHER ANALYSIS</h1>
<h2 id="41-number-of-instruction-tuning-clusters">4.1 NUMBER OF INSTRUCTION TUNING CLUSTERS</h2>
<blockquote>
<p>지시문 튜닝에 사용된 과제(cluster) 의 개수가 많아질수록
모델의 제로샷 성능이 어떻게 달라지는지 확인하는 실험.</p>
</blockquote>
<h4 id="실험설정">실험설정</h4>
<ul>
<li>자연어 추론(NLI), 비문맥 질의응답(Closed-book QA), 그리고 상식 추론(Commonsense Reasoning) 을 평가용 클러스터로 남겨둠</li>
<li>나머지 7개 클러스터를 지시문 튜닝에 사용</li>
<li>1개에서 7개까지의 클러스터를 순차적으로 추가하면서 결과를 확인</li>
<li>클러스터는 각 클러스터 내 task의 개수가 많은 순서대로 추가되었다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/b98f1022-bbf9-4458-9570-16e083fabad5/image.png" alt=""></p>
<p>평가용으로 제외된 3개 클러스터(NLI, Closed-book QA, Commonsense) 에 대한 평균 성능은 지시문 튜닝에 포함된 클러스터와 과제의 수가 늘어날수록 향상되었다.</p>
<p>이는 제안된 지시문 튜닝 방법이 새로운 과제에서 제로샷 성능을 향상시키는 데 실질적인 효과가 있음을 확인시켜준다.</p>
<p>또한 7개의 클러스터를 모두 사용했을 때도 성능이 아직 포화되지 않았다는 것이다. 즉, 더 많은 클러스터를 추가하면 성능이 더 향상될 가능성이 있음을 시사한다.</p>
<p>다만, 어떤 클러스터가 각 평가 클러스터의 성능 향상에 가장 크게 기여했는가에 대해서는 알 수 없다.</p>
<p>단, <strong>감정 분석 클러스터</strong>는 추가적인 이점이 거의 없었다는 점은 확인되었다.</p>
<h2 id="42-scaling-laws">4.2 SCALING LAWS</h2>
<blockquote>
<p>모델의 규모(파라미터 수) 에 따라 지시문 튜닝의 효과가 어떻게 달라지는지 확인.</p>
</blockquote>
<p>이전 절(4.1)의 클러스터 분할과 동일한 설정을 사용하여,
*<em>422M, 2B, 8B, 68B, 137B *</em>파라미터 크기의 모델들에 대해 instruction tuning의 영향을 평가.</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/0d2e93ec-1631-46ff-b18e-8bc7527ecfe9/image.png" alt=""></p>
<p>그 결과 100B 규모(즉, 68B 및 137B 모델)의 경우, instruction tuning이 보지 못한 과제에 대한 성능을 크게 향상시켰다.</p>
<p>하지만 8B 이하의 작은 모델들에서는 instruction tuning이 오히려 성능을 떨어뜨렸다.</p>
<p>이러한 현상이 나타나는 이유는 <strong>작은 모델</strong>의 경우, instruction tuning에서 사용된 약 40개의 과제를 학습하는 것만으로도 모델의 전체 용량이 가득 차 버린다.</p>
<p><strong>즉, 이 모델들은 새로운 과제를 수행할 여유 용량이 남지 않아 오히려 일반화 성능이 저하된다는 것이다.</strong></p>
<p>반면, <strong>대규모 모델</strong>의 경우 instruction tuning이 모델의 일부 용량을 사용하긴 하지만, 그 과정에서 지시문을 이해하고 따르는 능력을 학습하게 된다.</p>
<p>따라서 남은 용량으로는 여전히 새로운 과제에 대한 일반화를 수행할 수 있게 된다.</p>
<h2 id="43-role-of-instructions">4.3 ROLE OF INSTRUCTIONS</h2>
<blockquote>
<p>instruction 자체가 진짜 효과의 원인인지, 아니면 그냥 여러 과제를 동시에 학습한 멀티태스크 학습 덕분인지를 실험으로 구분</p>
</blockquote>
<h4 id="지시문이-없는-두-가지-파인튜닝-설정"><strong>지시문이 없는 두 가지 파인튜닝 설정</strong></h4>
<ol>
<li><p><strong>No template 설정</strong>:</p>
<p>입력과 출력만 모델에 제공</p>
<p>예를 들어 번역 과제에서는</p>
<p>입력: <code>&quot;The dog runs.&quot;</code>
출력: <code>&quot;Le chien court.&quot;</code></p>
<p>즉, 지시문이나 설명 없이 단순히 문장 쌍만 학습시켰다.</p>
</li>
<li><p><strong>Dataset name 설정</strong>:
각 입력 앞에 <strong>과제 이름과 데이터셋 이름</strong>을 붙였다.</p>
<p>예를 들어 프랑스어 번역 과제의 경우</p>
<p>입력: <code>&quot;[Translation: WMT’14 to French] The dog runs.&quot;</code>
출력: <code>&quot;Le chien court.&quot;</code></p>
</li>
</ol>
<p>이 두 가지 설정을 FLAN의 방식과 비교했다.</p>
<p>FLAN의 경우 예시</p>
<p> “Please translate this sentence to French: ‘The dog runs.’”
 → “Le chien court.”</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/b669a86a-89d2-405e-835a-a4024f5233e6/image.png" alt=""></p>
<p>평가는 <strong>4개의 보지 못한 과제 클러스터</strong> 를 기준으로 수행했다.</p>
<ul>
<li><p><strong>No template 설정</strong>의 경우,
모델이 어떤 과제를 수행해야 하는지 알 수 없기 때문에,
<strong>제로샷 추론 시에는 FLAN의 지시문을 추가로 사용</strong>했다.</p>
</li>
<li><p><strong>Dataset name 설정</strong>의 경우,
제로샷 추론 시 두 가지 버전 모두 평가했다 —
FLAN 지시문을 사용하는 경우와, 데이터셋 이름만 사용하는 경우.</p>
</li>
</ul>
<p>이 두 가지 설정은 모두 <strong>FLAN 방식보다 성능이 크게 낮았다.</strong></p>
<p> <strong>즉, 학습 단계에서 실제 지시문을 함께 사용하는 것이, 새로운 과제에 대한 제로샷 성능 향상에 결정적으로 중요하다는 것</strong>이 확인되었다.</p>
<h2 id="44-instructions-with-few-shot-exemplars">4.4 INSTRUCTIONS WITH FEW-SHOT EXEMPLARS</h2>
<blockquote>
<p>추론 시 few-shot 예시가 주어졌을 때 instruction tuning이 어떻게 작동하는지</p>
</blockquote>
<p>실험은 이전과 동일한 태스크 분할 및 평가 절차를 사용했다.</p>
<p>즉, unseen 과제에 대해서는, inference 시에만 few-shot 예시를 추가했다.</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/0721ad01-44d3-4afb-87db-7b4b5148a833/image.png" alt=""></p>
<p><strong>Figure 9</strong>에 나타난 결과를 보면, few-shot 예시를 추가했을 때 모든 과제 클러스터에서 성능이 향상되었다. 이는 zero-shot FLAN보다 항상 우수한 결과를 보여준다.</p>
<p>특히 출력 공간이 크거나 복잡한 과제들 —Struct-to-Text,번역, Closed-book QA</p>
<p>같은 과제에서는 few-shot 예시의 효과가 훨씬 두드러졌다.</p>
<p><strong>이는 예시가 있으면 모델이 출력 형식을 더 명확히 이해할 수 있기 때문이다.</strong></p>
<p>추가로 모든 과제 클러스터에서, few-shot FLAN의 템플릿 간 표준편차가 zero-shot FLAN보다 낮게 나타났다.</p>
<p><strong>즉, few-shot 예시를 사용하면 모델이 프롬프트 문구(templates)에 덜 민감해지고, 프롬프트 엔지니어링에 덜 의존하게 된다</strong>.</p>
<h2 id="45-instruction-tuning-facilitates-prompt-tuning">4.5 INSTRUCTION TUNING FACILITATES PROMPT TUNING</h2>
<blockquote>
<p>지시문 튜닝이 된 모델은 소프트 프롬프트 튜닝도 더 잘 된다”는 걸 증명하는 실험</p>
</blockquote>
<p>Instruction tuning은 모델이 사람의 지시문에 더 잘 반응하도록 훈련하는 방법이다. 그렇다면, 이렇게 지시문에 잘 반응하는 모델(FLAN)은 soft promp 를 사용할 때도 더 좋은 성능을 낼 수 있을까?</p>
<p><strong>Soft Prompt:</strong> 모델 입력 앞에 연속 벡터를 붙이고 학습시키는 방식.** (텍스트 명령 대신 벡터로 과제 정보를 전달함)**</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/192db29a-b8b9-4929-9cbf-8cf3fdacfd0a/image.png" alt=""></p>
<p>두 가지 환경에서 실험</p>
<ol>
<li>충분한 데이터</li>
<li>적은 데이터</li>
</ol>
<p>모든 경우에서 결과는 일관적으로** FLAN이 LaMDA-PT보다 프롬프트 튜닝 성능이 더 좋았다.**</p>
<p>특히 데이터가 적은 환경에서는 FLAN이 LaMDA-PT보다 10% 이상 성능 향상</p>
<p>*<em>이는 Instruction tuning을 거친 모델은 지시문을 잘 따르는 것뿐만 아니라, 다른 방식의 학습에도 더 잘 적응하는 좋은 초기 상태가 된다는 것을 보여준다.
*</em></p>
<h1 id="5-related-work">5. RELATED WORK</h1>
<table>
<thead>
<tr>
<th>구분</th>
<th>기존 연구</th>
<th>FLAN의 차별점</th>
</tr>
</thead>
<tbody><tr>
<td>QA 기반 학습</td>
<td>NLP 과제를 질문–답변 형태로 통합 (주로 multi-task 초점)</td>
<td>자연어 <strong>지시문 기반</strong>으로 제로샷 일반화 향상</td>
</tr>
<tr>
<td>Instruction-following 연구</td>
<td>지시문 학습은 있었지만 <strong>모델 규모 작음(≤11B)</strong></td>
<td><strong>137B 대규모 모델</strong>에 <strong>instruction tuning 적용</strong></td>
</tr>
<tr>
<td>학습 방식</td>
<td>대부분 단순 fine-tuning</td>
<td><strong>60개 이상의 지시문 데이터셋 혼합 튜닝</strong></td>
</tr>
<tr>
<td>결과</td>
<td>few-shot 성능 위주 개선</td>
<td><strong>zero-shot + few-shot 둘 다 향상</strong>, GPT-3 능가</td>
</tr>
</tbody></table>
<h1 id="6-discussion">6 DISCUSSION</h1>
<h3 id="⚠️-limitations">⚠️ Limitations</h3>
<ul>
<li><p><strong>클러스터 분류의 주관성</strong>
과제를 12개 클러스터로 나누는 과정에서 일부 분류가 연구자 판단에 의존했음.</p>
</li>
<li><p><strong>짧은 명령어만 사용</strong>
대부분의 instruction이 한 문장짜리 간단한 형태였음.
(실제 사용자 지시처럼 긴 문장은 다루지 않음)</p>
</li>
<li><p>** 데이터 중복 가능성**
평가 예시 일부가 모델의 사전학습 데이터(web text)에
포함되어 있을 가능성이 있음. 하지만 사후 분석 결과, 큰 영향은 없는 것으로 확인됨.</p>
</li>
<li><p><strong>모델 규모 문제</strong>
FLAN-137B는 너무 커서 실제 서비스 운영에는 비용이 큼.</p>
</li>
</ul>
<h3 id="향후-연구-제안-future-work">향후 연구 제안 (Future Work)</h3>
<ul>
<li>더 다양한 과제 클러스터 수 확장</li>
<li>다국어 instruction tuning 실험</li>
<li>FLAN을 이용해 새로운 데이터 생성 및 다른 모델 학습 보조</li>
<li>편향,공정성 개선을 위한 미세조정 연구</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[WizardLM : Empowering Large Language Models to Follow Complex Instructions]]></title>
            <link>https://velog.io/@vitaminlab_0901/WizardLM-Empowering-Large-Language-Models-to-Follow-Complex-Instructions-fwjsx7sq</link>
            <guid>https://velog.io/@vitaminlab_0901/WizardLM-Empowering-Large-Language-Models-to-Follow-Complex-Instructions-fwjsx7sq</guid>
            <pubDate>Wed, 29 Oct 2025 01:30:43 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/abs/2304.12244">논문 바로가기</a></p>
<blockquote>
<h3 id="my-comment">My comment</h3>
<p>진화 알고리즘의 핵심은, 지시문을 진화시키는 방법을 여섯 가지 카테고리로 나누었다는 점인 것 같다.
그리고 한 번에 너무 많은 진화를 시도하지 않고, 단계적으로 복잡도를 높이는 것이 순차적 진화의 핵심이라고 생각한다.
LLM에게 한 번에 너무 많은 작업을 시키면, 할루시네이션이나 잘못된 정보를 생성할 가능성이 높다고 본다.
따라서 앞으로의 연구에서는, LLM이 특정 테스크를 가장 효율적으로 수행할 수 있는 적절한 명령 범위를 고민하는 것이 중요하다고 생각한다.</p>
</blockquote>
<br>

<h2 id="abstract">Abstract</h2>
<p>지시 데이터를 수작업으로 생성하는 것은 많은 시간적&amp;인적 리소스 발생
$\rarr$ 인간 대신 <strong>LLM</strong>을 이용하여 대량의 지시 데이터를 생성
<strong>Evol-Insturct</strong> : 지시문을 단계적으로 다시 작성(rewrite)하여 복잡한 지시문으로 진화시키는 기법
<strong>WizardLM</strong> : Evol-Instruct 기법을 통해 생성된 데이터를 LLaMA모델에 파인튜닝한 모델
$\rarr$ Alpaca, Vicuna보다 더 뛰어난 성능을 보임</p>
<h2 id="1-introduction">1. Introduction</h2>
<ul>
<li>LLM 모델의 한계 : 특정 지시나 목표 수행에 취약하며, 실제 환경에서 활용성 및 응용가능성이 제한된다.</li>
<li>LLM 모델의 훈련은 초기에 NLP 테스크 (closed-domain)을 수행하는데 이는 두 가지 한계를 감
1) 소수의 공통된 지시문을 공유해서 다양성이 제한된다.
2) 대부분의 지시문은 단일 작업 수행만 요구 (인간의 지시는 복합적임)</li>
<li><em>open-domain instruction data*</em> : 특정 domain에 제한되지 않은 일반적이고 다양성 높은 지시문 데이터 $\rarr$ 다양한 작업 수행을 가능하게 하지만 인적, 시간적 리소스가 많이 요구되고 있음</li>
</ul>
<h3 id="evol-instruct">Evol-Instruct</h3>
<p>자동으로 open-domain instructions data 대량 생산하는 새로운 방법</p>
<blockquote>
<h4 id="in-depth-evolving">In-depth Evolving</h4>
</blockquote>
<ol>
<li>제약조건 추가 (Add Constraints)</li>
<li>심화 (Deepening)</li>
<li>구체화 (Concretizing)</li>
<li>추론 단계 증가 (Increase Reasoning Steps)</li>
<li>입력 복잡화 (Complicate Input)<blockquote>
<h4 id="in-berath-evolving">In-berath Evolving</h4>
</blockquote>
</li>
<li>변이 (mutation) : 주어진 지시문을 기반으로 완전히 새로운 재시문 생성<h4 id="instruction-eliminator-지시문-제거기">Instruction Eliminator (지시문 제거기)</h4>
</li>
</ol>
<ul>
<li><p>프롬프트를 통해 LLM이 지시문을 생성 $\rarr$ 진화가 실패한 지시문 제거</p>
</li>
<li><p>학습 결과 비교
  -- Alpaca : self-instruct를 통해 데이터 생성
  -- Vicuna : 인간이 만든 open-domain instruction 포함 (현실 데이터)
  -- WizardLM : 인간 없이 LLM을 이용해 지시문 자체를 점점 복잡하게 진화시켜 만든 모델</p>
</li>
</ul>
<blockquote>
<h4 id="결론-발견사항">결론 (발견사항)</h4>
</blockquote>
<ol>
<li>open-domain instruction을 LLM을 통해 자동 대량 생성함으로써, LLM의 성능을 향상시키는 Evol-Instuct 제안</li>
<li>WizardLM 모델을 개발하여, 다양한 도메인에서 크게 우수한 성능을 보임</li>
<li>지시문의 복잡도가 supervised fine-tuning 성능 향상에 매우 중요함을 확인</li>
</ol>
<h2 id="2-related-work">2. Related Work</h2>
<h3 id="closed-domain-instruction-tuning">Closed domain instruction tuning</h3>
<ul>
<li>초기 언어모델은 작업 간 일반화 능력에 초점을 맞춤</li>
<li>다양한 연구들에서는 다양한 NLP 작업 지시문으로 언어모델을 fine-tuning을 하면 새로운 작업에서도 성능이 향상된다는 점을 보임</li>
<li>But, closed로 훈련된 언어모델은 실제 사용자 시나리오에서는 제대로 동작 못함</li>
</ul>
<h3 id="open-domain-instruction-tuning">Open domain instruction tuning</h3>
<ul>
<li>인간 작성 instruction-response 쌍 제작</li>
<li>LLM의 표면적 응답 텍스트 뿐만 아니라, 복잡한 추론 과정 신호까지 학습</li>
<li>기존 연구와의 차이점 : Vicuna와 달리 AI가 생성한 데이터를 이용하여 파인튜닝을 하고, Alpaca의 self-instruct와 달리 생성되는 지시문의 난이도와 복잡도 수준을 정교하게 제어할 수 있다.</li>
</ul>
<h2 id="3-approach">3. Approach</h2>
<p>Evol-Instruct의 파이프라이은은 크게 <strong>Instruction Evolver(In-Depth Evolving + In-Breathe Evolving)</strong>와 <strong>Instruction Eliminator</strong>로 구성
<img src="https://velog.velcdn.com/images/sjh7099/post/cd16890c-a200-4b49-aa42-c28ebd9e63eb/image.png" alt=""></p>
<h3 id="31-definition-of-instruction-data-evolution">3.1 Definition of Instruction Data Evolution</h3>
<p>$I^{(t)}$를 Evol-Instruct 프롬프트를 사용하여 LLM에 입력
$\rarr$ 새로운 지시문 $I^{(t+1)}$ 생성
$\rarr$ $I^{(t+1)}$를 통해 $D^{(t+1)}$ 생성
$\rarr$ M회 반복</p>
<h3 id="32-automatic-instruction-data-evolution">3.2 Automatic Instruction Data Evolution</h3>
<blockquote>
<p><strong>지시문 생성 3가지 단계</strong></p>
</blockquote>
<ol>
<li>instruction evolving </li>
<li>response generation</li>
<li>elimination evolving</li>
</ol>
<h4 id="instruction-evolution">Instruction Evolution</h4>
<blockquote>
<p>LLM 특징</p>
</blockquote>
<ul>
<li>LLM은 특정한 프롬프트를 사용하면 instruction을 더 복잡하고 어려운 형태로 변환 가능</li>
<li>완전히 새로운 복잡한 instruction도 생성할 수 있음</li>
</ul>
<p>초기 instruction 데이터셋을 반복적으로 진화시켜, instruction의 difficulty를 높이고, 내용의 풍부함과 다양성을 확장</p>
<ul>
<li>instrcution pool에서 이전 instruction을 불러와 진화시키고, instruction eliminator을 통해 진화가 실패했는지 검사</li>
<li>성공적으로 진화한 instruction은 pool에 추가하고, 실패한 instruction은 그대로 유지하여 다음 단계에서 다시 시도</li>
</ul>
<h4 id="instruction-evolver">Instruction Evolver</h4>
<blockquote>
<p><strong>In-Depth Evolving</strong></p>
</blockquote>
<ol>
<li>제약조건 추가</li>
<li>심화</li>
<li>구체화</li>
<li>추론 단계 증가</li>
<li>입력 복잡화 <br><blockquote>
<p><strong>프롬프트 내용</strong>
&quot;Your objective is to rewrite
a given prompt into a more complex version to make those famous AI systems (e.g., ChatGPT
and GPT4 (OpenAI, 2023)) a bit harder to handle. But the rewritten prompt must be reasonable,
understood, and responded to by humans&quot; <br> </p>
</blockquote>
</li>
</ol>
<p><strong>korean ver.</strong>
&quot;당신의 목표는 주어진 프롬프트를 더 복잡한 버전으로 다시 작성하여,
ChatGPT나 GPT-4 같은 유명한 AI 시스템이 처리하기 조금 더 어렵게 만드는 것이다.
단, 새로 작성된 프롬프트는 인간이 이해하고 응답할 수 있을 정도로 합리적이어야 한다.&quot;</p>
<ul>
<li>instruction의 난이도를 조금씩 높이도록 유도하고, 추가되는 단어 수를 최대 10~20단어로 제한</li>
<li>입력 복잡화를 제외한 네 가지는 예시없이 수행 가능</li>
</ul>
<blockquote>
<p><strong>In-Breadth Evovlving</strong></p>
</blockquote>
<ul>
<li>주제 범위, 기술 범위, 전체 데이터셋의 다양성을 확장하기 위한 과정</li>
<li>기존 instruction에서 영감을 받아 새로운 instruction을 생성하도록 프롬프트 진행<br>
> **프롬프트 내용**
"I want you act as a Prompt Creator.
Your goal is to draw inspiration from the #Given Prompt# to create a brand new prompt.
This new prompt should belong to the same domain as the #Given Prompt# but be even more rare.
The LENGTH and difficulty level of the #Created Prompt# should be similar to that of the #Given Prompt#."

</li>
</ul>
<h4 id="response-generation">Response Generation</h4>
<ul>
<li>진화된 instruction에 대한 response를 생성</li>
</ul>
<h4 id="elimination-evolving">Elimination Evolving</h4>
<blockquote>
<p><strong>진화 실패로 분류하는 4가지 경우</strong>에 따라 해당 instruction을 제거한다.</p>
</blockquote>
<ol>
<li>진화된 instruction이 기존 instruction과 비교해 정보 이득(information gain)
이 없는 경우</li>
<li>진화된 instruction에 대해 LLM이 응답을 제대로 생성하지 못하는 경우</li>
<li>생성된 응답이 문장부호나 불용어만 포함하는 경우</li>
<li>진화된 instruction이 프롬프트 내부 단어를 그대로 복사한 경우</li>
</ol>
<h3 id="33-finetuning-the-llm-on-the-evolved-instructions">3.3 Finetuning the LLM on the Evolved Instructions</h3>
<ul>
<li>initial instruction dataset과 각 단계의 진화된 instruction dataset을 병합하고, 샘플을 무작위로 섞어 최종 finetune dataset 구성
$\rarr$ 이렇게 하는 이유: 다양한 난이도의 지시문이 고르게 분포되어 모델의 학습이 안정적으로 진행됨</li>
<li>Vicuna에서 사용한 동일한 프롬프트 형식을 가지고 파인튜닝 수행</li>
</ul>
<h2 id="4-experiment">4. Experiment</h2>
<p>WizardLM을 automatic evaluation과 human evaluation 수행</p>
<h3 id="41-baselines">4.1 Baselines</h3>
<ul>
<li>ChatGPT, ALpaca, Vicuna, 그 외 LLaMa-13B 기반 모델들과 비교 수행<h3 id="42-experiment-detail">4.2 Experiment Detail</h3>
</li>
<li>각 라운드 진화에서 여섯 가지 진화 프롬프트 중 하나를 무작위 선택<blockquote>
<p><strong>parameter</strong></p>
</blockquote>
<ul>
<li>temperature = 1</li>
<li>최대 생성 토큰 수 = 2048</li>
<li>frequency penalty = 0</li>
<li>top-p = 0.9
<strong>learning</strong>
optimizer = Adam
learning rate = 2 x10^-5
최대 토큰 길이 : 2048
배치 크기 : GPU당 4</li>
</ul>
</li>
</ul>
<h3 id="43-automatic-evaluation">4.3 Automatic Evaluation</h3>
<p><img src="https://velog.velcdn.com/images/sjh7099/post/fab65b56-6e51-49ef-80a3-960b670a566c/image.png" alt="">
<img src="https://velog.velcdn.com/images/sjh7099/post/cfb4ecc6-7cb2-428e-bdee-a49c3d6117d9/image.png" alt=""></p>
<ul>
<li>벤치마크 테스크 종류 : 다지선다형 학술 문제, 과학 질문, 상식 추론, 모델의 허위 정보 모방하는 정도 측정, 코드 생성, 수학 추론, GPT-4 평가 벤치마크</li>
<li>다른 오픈소스 모델들과 비교할 때 WizardLM은 대부분의 벤치마크에서 두드러진 성능 우위를 보임</li>
</ul>
<h3 id="44-human-evaluation">4.4 Human Evaluation</h3>
<ul>
<li>직접 제작한 테스트셋 <strong>WizardEval</strong>을 통해 평가 수행</li>
<li>총 29개의 기술과 도메인 포괄
<img src="https://velog.velcdn.com/images/sjh7099/post/38fe0d59-b850-47c7-9e52-c83b91a51cd8/image.png" alt=""></li>
<li>직접 생성한 데이터셋은 난이도 분포가 일정</li>
<li>인간 평가 결과, Alpaca와 Vicuna와 비교했을 때 더 나은 응답을 나타냄을 알 수 있음</li>
</ul>
<h3 id="45-ablation-study">4.5 Ablation Study</h3>
<p>(요약)
In-depth Evovling은 instruction의 복잡도와 추론 난이도를 단계적으로 높여서 모델의 사고 능력을 강화
In-breath Evolving은 주제 다양성을 넓혀 모델이 더 다양한 영역을 다룰 수 있도록 함
$\Rarr$ 두 과정이 상호보완적으로 작용하여 WizardLM이 더 넓은 범위의 instruction을 처리하고 더 깊이 있는 추론을 수행</p>
<h2 id="5-conclusions">5. Conclusions</h2>
<p>본 논문에서는 <strong>Evol-Instruct</strong>라는 새로운 진화 알고리즘을 제안하였고, 이를 통해 다양한 instruction data를 자동으로 생성하였다.
이를 오픈소스 LLM 모델에 파인튜닝한 <strong>WizardLM</strong>은 다른 LLM보다 다양한 테스크의 벤치마크에서 우수한 성능을 보였다.</p>
<h4 id="한계점">한계점</h4>
<ul>
<li>automatic evaluation과 human evaluation을 수행했지만, 이러한 평가방식은 확장성과 신뢰성 측면에서 제약 있음</li>
<li>본 논문에서 제안한 test set이 모든 시나리오나 도메인을 대표하지는 않음</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[ARC-NCA: Towards Develpmental solutions to the Abstraction and Reasoning Corpus]]></title>
            <link>https://velog.io/@vitaminlab_0901/ARC-NCA-Towards-Develpmental-solutions-to-the-Abstraction-and-Reasoning-Corpus</link>
            <guid>https://velog.io/@vitaminlab_0901/ARC-NCA-Towards-Develpmental-solutions-to-the-Abstraction-and-Reasoning-Corpus</guid>
            <pubDate>Tue, 28 Oct 2025 04:49:19 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/abs/2505.08778">논문 출처</a></p>
<h3 id="네줄요약">네줄요약</h3>
<ol>
<li>ARC -NCA는 Neural Celluar Automata(NCA) +EngramNCA(기억 기반 확장 모델) 활용함</li>
<li>인간 수준의 추론을 요구하는 ARC-AGI 벤치마크 문제를 해결할려고함</li>
<li>단순히 패턴 예측이 아닌 형태를 발달시킬려고함 </li>
<li>GPT 기반 방식보다 훨씬 낮은 비용 더 나은 성능</li>
</ol>
<h2 id="arc란">ARC란?</h2>
<ul>
<li>ARC(Abstraction and Reasoning Corpus)는 시각적 입력-출력 쌍을 바탕으로 <strong>추상적 규칙을 유추하고 새로운 입력에 적용할 수 있는가를 측정하는 테스트</strong>. 문제마다 단 1~3개의 예제만이 주어지며, 마지막 입력에 대해 정답 출력을 생성해야 함.</li>
</ul>
<p>이 문제의 본질은 단순한 이미지 매칭이 아니라, <strong>사람처럼 패턴과 규칙을 이해하고 이를 유추·확장하는 추론 능력</strong>에 있음</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/c2db45eb-8c28-46ae-87fe-130c165a6fdd/image.png" alt=""></p>
<blockquote>
<p>Figure 1:                                                                                                                                                        입력 격자에서 파란 점이 위치한 곳 주변으로 초록색 대각선이 출력되는 규칙을 스스로 발견해야 함.마지막 입력에 대해서는 이러한 규칙을 바탕으로 정답 격자를 생성해야 함. 인간에게는 쉬운 예제</p>
</blockquote>
<h2 id="기존-접근의-한계">기존 접근의 한계</h2>
<table>
<thead>
<tr>
<th>접근 방식</th>
<th>장점</th>
<th>주요 한계</th>
</tr>
</thead>
<tbody><tr>
<td>DSL 탐색 (brute-force)</td>
<td>명시적 규칙 생성</td>
<td>연산량 과다, 일반화 어려움</td>
</tr>
<tr>
<td>GPT/LLM 기반 생성</td>
<td>사전지식 활용 가능</td>
<td>고비용, 기억력/상황 적응력 부족, 구조 생성은 불가</td>
</tr>
</tbody></table>
<p>기존 방식은 대부분 &quot;정답을 찾는 방법&quot;을 외부에서 주입받는 방식. 하지만 ARC 문제는 <strong>정답 생성 방식 자체를 모델이 &#39;안에서&#39; 구성</strong>해야 한다는 점에서 다른 접근이 필요!</p>
<h2 id="💡-arc-nca-방식-요약">💡 ARC-NCA 방식 요약</h2>
<ul>
<li>Neural Cellular Automata (NCA)는 전체 패턴을 단번에 출력하는 것이 아니라, 격자 내 각 셀이 주변 셀과 상호작용하며 <strong>점진적으로 패턴을 형성해 나가는 구조</strong>. 이는 실제 생물의 조직 형성과 유사하며, &#39;성장&#39;이라는 개념이 중심에 있음.</li>
<li>각 셀은 CNN 기반 연산을 통해 자신과 이웃의 상태를 바탕으로 다음 상태를 갱신</li>
<li>이러한 연산이 수백 번 반복되며, 최종적으로 의미 있는 전체 출력 격자가 형성됨</li>
<li>입력은 초기 상태로 주어지며, 출력은 발달 과정을 통해 자연스럽게 만들어짐</li>
</ul>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/ad5a6b93-0a1c-4412-9cfa-7d4507c329c0/image.png" alt=""></p>
<p>Figure 2 :</p>
<blockquote>
<p>이 그림은 NCA가 어떻게 문제를 해결하는지를 시각적으로 설명. 입력 격자는 단순히 고정된 픽셀 배열이 아니라, 스스로 진화하는 격자 상태로 봄. 초기 입력 상태가 주어지면 각 셀이 자신의 주변 셀들과의 상호작용을 통해 끊임없이 상태를 갱신하고, 그 결과 전체 출력이 점진적으로 &#39;성장&#39;. 이 과정은 단순 CNN의 한 번 forward pass로는 구현할 수 없는 구조이며, 마치 유기체가 형태를 발달시키듯이 출력이 완성. 중요한 점은 출력 결과가 &#39;미리 결정된 답&#39;이 아니라 학습된 생성 규칙에 의해 스스로 만들어졌다는 점.</p>
</blockquote>
<h2 id="engramnca-기억을-통해-유연함을-더한-구조">EngramNCA: 기억을 통해 유연함을 더한 구조</h2>
<p>기본 NCA만으로는 복잡한 조건 분기나 규칙 전환이 어렵기 때문에, 저자들은 <strong>기억 상태를 갖는 NCA</strong>, 즉 EngramNCA를 도입했다. 이는 <strong>문제마다 다른 조건을 기억하고, 적절히 조절하며 규칙을 활성화할 수 있는 구조</strong>다.</p>
<h3 id="구조-설명">구조 설명</h3>
<ul>
<li>EngramNCA는 두 부분으로 나뉜다:<ul>
<li><code>GeneCA</code>: 초기 시드 셀에서 시작해 기본 구조 및 primitive 형태를 형성 (ex. 선, 블록)</li>
<li><code>GenePropCA</code>: 형성된 구조를 격자 전역으로 전파하고, 필요 시 조절 (ex. 어디서부터 선을 자를지 결정)</li>
</ul>
</li>
<li>각 셀은 두 종류의 채널을 갖는다:<ul>
<li><code>공개 상태</code>: 출력에 직접 반영되는 상태 (시각적으로 드러나는 것)</li>
<li><code>비공개 상태</code>: 내부 메모리로 사용되는 상태 (전파되는 규칙 정보, 유전자 정보 등)</li>
</ul>
</li>
</ul>
<p>이러한 구조는 다양한 문제 조건에 따라 <strong>서로 다른 해결 전략을 적용할 수 있게 하며</strong>, 기존 LLM이 갖지 못한 <strong>내부 발달적 유연성</strong>을 부여</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/6afd654b-7d61-4238-8eeb-5b27363cd404/image.png" alt=""></p>
<p>Figure 3 :</p>
<blockquote>
<p>GeneCA가 어떻게 초기 형태를 형성하는지를 보여줌. 특정 셀이 &#39;시드(seed)&#39;로 주어지면, 그 주변으로 primitive 패턴(기초 블록)이 확산된다. 여기서 중요한 건 이 확산이 단순한 이미지 복사가 아니라, 기억 상태(비공개 채널)를 포함한 구조적 정보 전파라는 점. 결과적으로, 이후 GenePropCA는 이 정보를 바탕으로 조건부 조절을 수행할 수 있게 된다. 이는 단순한 패턴 반복이 아니라, &#39;조건 기반 발달&#39;을 가능하게 함.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/38587fad-8c15-4ca7-92b5-57780f689281/image.png" alt=""></p>
<p>Figure 4 :</p>
<blockquote>
<p>이 그림은 GenePropCA 가 하나의 primitive 구조가 어떻게 다른 형태로 분기되며 전파되는지를 보여줌. GenePropCA는 격자의 각 셀에 내재된 기억 정보를 해석하며, 이 정보를 바탕으로 &#39;이 셀은 어떤 출력 규칙을 따라야 하는가&#39;를 결정한다. 마치 신경망이 attention weight에 따라 선택적으로 정보를 전달하듯, GenePropCA도 문제의 조건에 따라 출력 형태를 유연하게 전개하는 핵심 모듈.</p>
</blockquote>
<h2 id="구조-흐름도">구조 흐름도</h2>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/9326e5ab-40a2-44e5-962f-8229ee1f1ac2/image.png" alt=""></p>
<h3 id="①-초기-구조-형성--geneca-단계">① 초기 구조 형성 – GeneCA 단계</h3>
<ul>
<li>흰색 배경의 격자에 파란색 패턴이 확산되고 있다. 여기서 파란색은 <strong>&#39;primitive&#39; 형태를 구성하는 기초 구조</strong>.</li>
<li>이 단계는 모델이 <strong>출력 결과를 직접 만드는 것이 아니라, 우선 그 결과가 생성될 기반을 만드는 과정</strong>. 마치 식물이 성장할 때, 뿌리와 줄기를 먼저 형성하는 것.</li>
<li>중요한 점은, 이 확산이 무작위가 아니라 <strong>모델이 학습한 로컬 규칙</strong>에 의해 발생한다는 것. 각 셀은 자신의 위치, 주변 셀의 상태, 시간에 따라 <strong>CNN 기반 필터</strong>로 상태를 갱신.</li>
<li>동시에 각 셀 내부에는 <strong>비공개 메모리 채널</strong>도 함께 확산되며, 이 메모리는 후속 단계에서 <strong>조건 분기</strong>를 가능하게 해주는 정보로 활용.</li>
</ul>
<blockquote>
<p>왜 이렇게 하냐면: ARC 문제는 단순히 색을 바꾸는 문제가 아니라, 구조를 먼저 파악하고 구성하는 과정이 중요하기 때문. 단순 출력 예측으로는 불가능한 &#39;형태의 준비&#39;를 이 단계에서 먼저 수행.</p>
</blockquote>
<hr>
<h3 id="②-정보의-선택적-확산--genepropca-단계">② 정보의 선택적 확산 – GenePropCA 단계</h3>
<ul>
<li>이전 단계에서 형성된 파란 구조 위로, <strong>초록색 정보가 부분적으로 퍼져나감</strong></li>
<li>초록색은 문제 해결을 위한 실제 <strong>출력 형태를 구성하는 활성화된 정보</strong>이다. 하지만 모든 곳에서 퍼지는 것이 아니라, <strong>일부 경로만 선택적으로 확산</strong></li>
<li>이 선택은 각 셀이 <strong>자신의 비공개 기억 상태를 참조해 &#39;내가 확산의 일부인가?&#39;를 판단</strong>하는 방식으로 이뤄진다. 여기서 조건 분기와 구조 조절이 발생</li>
<li>결과적으로 <strong>같은 파란 구조 안에서도 어떤 셀은 멈추고, 어떤 셀은 새로운 확장을 수행하며, 어떤 셀은 연결을 중단</strong></li>
</ul>
<blockquote>
<p>왜 이렇게 하냐면: ARC 문제는 하나의 규칙으로만 구성된 것이 아니라, 조건에 따라 다양한 형태로 변화해야 하는 경우가 많음. 이때 GenePropCA는 그런 ‘조건 기반 다양성’을 실현하는 핵심이다.</p>
</blockquote>
<hr>
<h3 id="③-출력의-수렴과-안정화--최종-출력-상태">③ 출력의 수렴과 안정화 – 최종 출력 상태</h3>
<ul>
<li>초록색 정보의 확산이 완료된 후, <strong>격자 전체는 변화 없이 고정된 상태로 수렴</strong>.</li>
<li>이 상태가 바로 모델이 제출하는 <strong>최종 출력 결과</strong>이다. 더 이상 업데이트가 일어나지 않으며, 셀의 상태는 시각적으로 의미 있는 정답으로 변환.</li>
<li>중요한 점은, 이 결과는 하나의 네트워크 계산으로 나온 게 아니라 <strong>수십~수백 번의 반복적 업데이트 과정을 통해 진화적으로 형성된 것</strong>.</li>
</ul>
<blockquote>
<p>왜 이렇게 하냐면: ARC 문제는 단순한 분류 문제와 달리, 출력이 정해져 있는 것이 아니라 계산 과정을 통해 만들어져야 할 복잡한 구조이기 때문. CNN처럼 고정된 파라미터로 한 번에 뱉을 수 있는 형태가 아님.</p>
</blockquote>
<h3 id="3단계-요약">3단계 요약</h3>
<ol>
<li><strong>GeneCA</strong>: 초기 구조 형성. 시드 셀이 시작점이며, 구조 생성과 동시에 내부 정보도 퍼짐.</li>
<li><strong>GenePropCA</strong>: 조건 기반 전파. 셀은 자신의 메모리를 바탕으로 확산 여부를 결정.</li>
<li><strong>출력 수렴</strong>: 전체 출력 격자가 안정화되고, 최종 상태로 고정됨.</li>
</ol>
<h2 id="arc-문제에-특화된-학습-전략">ARC 문제에 특화된 학습 전략</h2>
<ol>
<li><strong>Patch-based 학습</strong><ul>
<li>전체 격자를 다 학습하는 대신, 일정 크기의 패치로 나누어 학습 효율을 높임</li>
<li>일반화 성능이 개선되고, 학습 안정성도 높아짐</li>
</ul>
</li>
<li><strong>Toroidal lattice (토로이달 격자)</strong><ul>
<li>격자의 끝과 끝이 연결된 것처럼 작동하도록 처리해 <strong>경계에서의 정보 손실을 방지</strong></li>
<li>일부 문제에서 출력 구조가 좌우 또는 상하 대칭일 경우 효과적</li>
</ul>
</li>
<li><strong>Sensing 채널</strong><ul>
<li>입력을 &#39;그대로 복사&#39;하지 않고, 셀이 입력을 감지하고 이에 따라 행동할 수 있도록 만든 채널</li>
<li>예: 특정 색이 감지되면, 그 주변 셀들이 다른 규칙을 적용함</li>
</ul>
</li>
</ol>
<h2 id="실험-결과">실험 결과</h2>
<table>
<thead>
<tr>
<th>모델</th>
<th>Solve Rate</th>
<th>평균 log(loss)</th>
<th>문제당 비용</th>
<th>특징</th>
</tr>
</thead>
<tbody><tr>
<td>NCA</td>
<td>10.7%</td>
<td>-4.31</td>
<td>$0.0003</td>
<td>기본 구조</td>
</tr>
<tr>
<td>EngramNCA (v3)</td>
<td><strong>12.9%</strong></td>
<td>-4.35</td>
<td>$0.0004</td>
<td>메모리 + 전파 조절 포함</td>
</tr>
<tr>
<td>ChatGPT 4.5</td>
<td>10.3%</td>
<td>-</td>
<td><strong>$0.29</strong></td>
<td>고비용, 유사 정확도</td>
</tr>
<tr>
<td>- 다양한 버전 조합 시 Solve Rate는 최대 17.6%까지 상승</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>- log loss 허용 범위를 약간 완화하면 최대 24%까지 해결 가능</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody></table>
<h2 id="실제-문제-해결-사례"><strong>실제 문제 해결 사례</strong></h2>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/d1f03b1c-5bf7-49f4-9a15-e74c082a0cd4/image.png" alt=""></p>
<p>-&gt; 이 문제는 규칙이 단순한 만큼, 구조 생성보다 <strong>선택적 조절</strong> 능력이 핵심 ARC-NCA는 과잉 확산 없이 딱 필요한 셀만 바꾸는 데 성공</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/798d4c99-a34c-451b-bf31-de7670915b28/image.png" alt=""></p>
<p>-&gt;이 문제는 LLM이 실패하기 쉬운 ‘조건 분기 처리’가 필요한 문제. ARC-NCA는 셀의 기억 상태를 기반으로, <strong>색상별 규칙을 구분 적용</strong>하는 데 성공</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/7c93c6a8-3138-45d7-8277-0b82bbc35b69/image.png" alt=""></p>
<p>-&gt; 이 문제에서는 형태는 유지하고 내용만 바뀌므로, ARC-NCA는 <strong>기존 구조를 유지하면서 필요한 셀만 수정하는 유연성</strong>을 보여줌</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/7aae89c2-414c-487b-8310-a931e2e993ed/image.png" alt=""></p>
<p>-&gt; 이 문제는 기존 모델들이 실패하거나 다수 조건 충돌이 발생하는 문제지만, ARC-NCA는 <strong>메모리 + 조건 분기 + 위치 기반 조절</strong>을 조합해 문제를 해결.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] ResNet : Deep Residual Learning for Image Recognition]]></title>
            <link>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-ResNet-Deep-Residual-Learning-for-Image-Recognition-vtz92ztf</link>
            <guid>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-ResNet-Deep-Residual-Learning-for-Image-Recognition-vtz92ztf</guid>
            <pubDate>Mon, 27 Oct 2025 04:57:30 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/abs/1512.03385">ResNet : Deep Residual Learning for Image Recognition 논문 링크</a></p>
<h1 id="overview">Overview</h1>
<blockquote>
</blockquote>
<p>심층 CNN은 이미지 분류에서 큰 성과를 내왔고, 16~30층 수준의 매우 깊은 모델이 선도 성능을 보여왔다. 그러나 초기화·BN으로 기울기 문제를 완화해도, 깊어질수록 <strong>퇴화</strong>(degradation)가 나타나 정확도가 포화·저하되고 <strong>더 깊은 모델의 훈련 오류가 오히려 커지는</strong> 문제가 발생한다.(과적합이 원인 아님)
&nbsp;
본 논문은 이를 <strong>잔차 학습</strong>으로 해결한다. 목표 H(x)를 직접 학습하지 않고 잔차 F(x)=H(x)-x를 학습해 출력을 y=x+F(x)로 두며, 항등 지름길(shortcut)로 기울기 경로를 항상 열어 둔다. 이 방식은 <strong>추가 파라미터/연산 거의 없이 최적화</strong>를 쉽게 만들어, 깊이를 크게 늘려도 성능 향상을 보인다.
&nbsp;
결론적으로, 잔차 학습은 깊은 네트워크의 <strong>퇴화 문제를 구조적으로 해소</strong>하고, <strong>극도로 깊은 표현</strong>을 실제로 학습 가능하게 만들어 다양한 시각 과제에서 <strong>최고 성능</strong>을 달성한다.</p>
<p>&nbsp;</p>
<h1 id="related-work">Related Work</h1>
<h3 id="잔차-표현-residual-representations">잔차 표현 (Residual representations)</h3>
<p>이미지 인식에서 VLAD과 Fisher Vector는 코드북(사전)에 대한 <strong>잔차 벡터</strong>로 이미지를 인코딩하며, 벡터 양자화에서도 <strong>원본 대신 잔차를 인코딩</strong>하는 편이 더 효과적인 것으로 알려져 있다. 다만 이는 <strong>피처 인코딩(얕은 표현)</strong> 단계의 잔차 사용이다. ResNet은 한 단계 더 나아가 <strong>학습 대상 함수 자체</strong>를 잔차로 두며 F(x)=H(x)-x, y=x+F(x) 형태로 모델을 재정의한다.</p>
<h3 id="다중격자multigrid·계층적-기저-사전조건화">다중격자(Multigrid)·계층적 기저 사전조건화</h3>
<p>PDE 해법의 <strong>다중격자</strong>는 문제를 <strong>여러 스케일의 하위 문제</strong>로 쪼개고, 각 단계가 <strong>거친-세밀 스케일 간 잔차</strong>를 푼다. <strong>계층적 기저 사전조건화</strong>도 두 스케일 간 <strong>잔차 벡터</strong>를 명시적으로 다뤄 <strong>수렴을 가속</strong>한다. &quot;문제를 잔차로 재정의하면 최적화가 단순해진다&quot;는 ResNet의 철학과 통한다.</p>
<h3 id="지름길-연결shortcut-connections-관련-선행">지름길 연결(Shortcut connections) 관련 선행</h3>
<p>초기 MLP의 입력-&gt;출력 선형 연결, 중간 층을 보조 분류기에 직접 연결해 기울기 문제를 완화하는 방법, 반응/기울기/오류의 중심화, 인셉션의 지름길 분기+깊은 분기 등이 있다. 그러나 대부분은 연결 형태의 설계에 초점이었지, 블록이 항상 잔차 함수를 학습하도록 목표를 재정의하진 않았다.</p>
<h3 id="highway-networks-vs-resnet">Highway Networks vs ResNet</h3>
<p>하이웨이는 게이트(매개변수 보유)가 달린 지름길로, 데이터에 따라 열림/닫힘이 결정된다. 게이트가 닫히면 항등 경로가 보장되지 않아 잔차 함수로 해석되지 않을 수 있다. 
ResNet은 항등 지름길(매개변수 없음)을 항상 열어 두고, 블록이 항상 잔차 F(x)를 학습하도록 정식화한다 -&gt; 정보/기울기가 항상 통과하여 최적화가 용이하고 깊이 확장이 쉽다. 
-&gt; Highway : <strong>매우 깊은 영역에서 이득 제한적</strong>
-&gt; ResNet : <strong>더 깊은 네트워크에서 안정적 최적화·성능 향상</strong></p>
<p>&nbsp;</p>
<h1 id="deep-residual-learning">Deep Residual Learning</h1>
<h2 id="residual-learning">Residual Learning</h2>
<ul>
<li><strong>목표 재정의</strong> : 직접 H(x)를 학습하지 않고 <strong>잔차</strong> F(x)=H(x)-x를 학습 -&gt; <strong>출력</strong> y=x+F(x)</li>
<li><strong>왜 쉬워지나</strong> : 최적해가 항등에 가깝다면 F(x)=0으로 만들면 됨 -&gt; 사전조건화 효과로 최적화 용이</li>
<li><strong>퇴화 해결</strong> : 깊어질수록 훈련 오류↑(=퇴화)를 잔차 학습으로 완화</li>
<li>실증 근거 : Fig.7-학습된 잔차 반응 크기가 작음(항등 근처에서 작은 보정만)</li>
</ul>
<blockquote>
<p><strong>잔차 F(x)</strong> = H(x) - x =&gt; 목표 함수와 항등의 차이
(작은 보정이 유리한 이유)
    -&gt; 사전조건화 효과 : 최적이 항등에 가깝다면 F(x)≈0이 해답
    -&gt; 기울기 경로 보장 : 항등 경로가 있어 기울기가 사라지지 않음
    -&gt; 안정적 스케일업 : 큰 변환을 한 번에 하지 않고, 작은 수정들을 많이 누적하니 깊은 층까지 안정적으로 학습됨
     &nbsp;
*사전조건화 : 변수나 식을 재정의/변환해서 기울기 흐름과 곡률(컨디셔닝)을 좋게 만들고, 수렴을 빠르고 안정적으로 만드는 방법</p>
</blockquote>
<p>=&gt; &#39;항등 + 작은 보정&#39;을 직접 배우게 해서 깊은 네트워크도 안정적으로 학습</p>
<h2 id="identity-mapping-by-shortcuts">Identity Mapping by Shortcuts</h2>
<ul>
<li>*<em>y=F(x,{Wi})+x *</em>
  -&gt; F : 보통 2~3층(Conv-BN-ReLU 스택)
  -&gt; 덧셈 이후 ReLU 한 번 더</li>
<li><strong>Shortcut(항등 경로)</strong> : 추가 파라미터/연산 거의 없음 -&gt; plain과 공정 비교 가능</li>
<li>차원 안 맞을 때 : 1x1 Conv 사영 Ws·x로 정렬(필요할 때만)
  <strong>y = F(x,{Wi})+Ws·x</strong></li>
<li>유의 : F가 1층이면 y=W1·x+x인 선형 합과 유사 -&gt; 이점 미미</li>
<li>Conv에도 동일 적용 : 덧셈은 채널별 원소합</li>
</ul>
<p>잔차 블록 y = x + F(x)
-&gt; 수식상 <strong>역전파</strong> : ∂L/∂x = ∂L/∂y(I+∂F/∂x) 
=&gt; <strong>I(지름길) 덕분에 큰 수정이 없어도 기울기가 잘 흐름</strong></p>
<blockquote>
<p>1) <strong>차원이 같을 때 : y=F(x)+x</strong> [항등 지름길]</p>
</blockquote>
<ul>
<li>형상 일치 : x와 F(x)가 같은 (C,H,W) -&gt; 바로 원소별 덧셈 가능</li>
<li>비용 없음 : 가중치 0, 추가 연산은 덧셈뿐(미미함)</li>
<li>최적화 이점 : 역전파에 항등 항(I)이 남아 기울기 경로 보장</li>
</ul>
<blockquote>
<p>2) <strong>차원이 다를 때 : y=F(x)+Ws∗x</strong> [사영 지름길, 1x1 conv]</p>
</blockquote>
<ul>
<li>형상 정렬 : 채널 수/해상도가 변하면 x를 선형 사영해 F(x)와 정확히 같은 크기로 맞춰야 덧셈이 정의됨
  -&gt; Ws : 1x1 conv(필요 시 stride s로 다운샘플링)</li>
<li>정보·기울기 보존 : 0-padding(채널만 0으로 채움)과 달리, 1x1 사영은 모든 채널 정보를 학습적으로 섞어 전달 -&gt; 모든 채널로 기울리 흐름 확보</li>
<li>효율성 : 1x1은 공간 커널이 없어 파라미터/연산 최소</li>
</ul>
<p>=&gt; 항등 경로를 항상 열어 기울기/정보가 막히지 않게 한다</p>
<h2 id="network-architectures">Network Architectures</h2>
<p><img src="https://velog.velcdn.com/images/yeowon123/post/79bf8793-cdcc-4924-b4d5-8d993d80eee2/image.png" alt=""></p>
<p><strong>Plain 기준선 (VGG 철학)</strong></p>
<ul>
<li>규칙:
  동일 해상도 구간 -&gt; 채널 수 고정
  해상도 1/2될 때 -&gt; 채널 x2</li>
<li>다운샘플링 : stride=2 Conv</li>
<li>헤드 : Global AvgPool -&gt; 1000-way FC</li>
<li>ex. 34층, 3.6B Flops(VGG-19의 ~18%)</li>
</ul>
<p><strong>Residual  버전</strong></p>
<ul>
<li>plain에 shortcut 삽입</li>
<li>차원 동일 -&gt; 항등 shortcut</li>
<li>차원 증가 시 2옵션:
  (A) 0-padding(무파라미터)
  (B) 1x1 projection(Ws)</li>
<li>해상도 변경은 stride=2</li>
</ul>
<p>=&gt; 같은 뼈대에 shortcut만 더해 깊이를 늘려도 최적화/성능을 확보</p>
<h2 id="implementation">Implementation</h2>
<ul>
<li><strong>데이터 증강</strong><ul>
<li>짧은 변 [256,480] 랜덤 스케일링<ul>
<li>224x224 랜덤 크롭, 좌우 반전</li>
<li>픽셀 평균값 차감, 표준 색상 증강</li>
</ul>
</li>
</ul>
</li>
<li><strong>학습 설정</strong><ul>
<li>SGD, Batch 256, Momentum 0.9, Weight decay 1e-4<ul>
<li>LR 0.1 시작 -&gt; 정체 시 10x 감소</li>
<li>600k iterations, Dropout 없음</li>
</ul>
</li>
</ul>
</li>
<li><strong>테스트</strong><ul>
<li>기본 : 10-crop<ul>
<li>최고 성능 : Fully Convolutional로 변환 후 입력 크기 {224,256,384,480,640} 멀티스케일 평균</li>
</ul>
</li>
</ul>
</li>
<li><strong>주의</strong><ul>
<li>Conv -&gt; BN -&gt; ReLU 순서<ul>
<li>He 초기화</li>
<li>Plain/Residual 모두 처음부터 학습 (pretrained 미사용)</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<h1 id="experiments">Experiments</h1>
<h2 id="imagenet-classification">ImageNet Classification</h2>
<p>ImageNet-2012(1000 클래스, 학습 128만/검증 5만/테스트 10만)에서, <strong>plain</strong> 네트워크는 18-&gt;34층으로 깊어질수록 <strong>훈련·검증 오류가 오히려 상승</strong>하는 퇴화가 관찰된다. BN을 사용해도 기울기 소실 문제가 아닌 <strong>수렴 지연(최적화 난이도)</strong>로 해석된다. 반면 <strong>ResNet</strong>은 잔차 학습 덕분에 <strong>깊어질수록 훈련 오류가 감소하고 정확도는 상승</strong>한다.
차원 증가 시 지름길은 (A)0-padding, (B)1x1 projection, (C)전부 projection을 비교했을 때 <strong>셋 모두 plain보다 우수</strong>했고, (B)≳(A),(C)는 근소 우세지만 파라미터 증가가 있어 필수적이지 않다. 깊이를 크게 늘릴 때는 <strong>병목(1x1-&gt;3x3-&gt;1x1)</strong> 블록으로 복잡도를 통제한다.</p>
<blockquote>
<p><strong>핵심 수치</strong></p>
</blockquote>
<ul>
<li>plain 34층 대비 ResNet 34층 : top-1 약 -3.5%p</li>
<li>ResNet-50/101/152 : 깊이 증가에도 복잡도 통제, ResNet-152 ≈ 11.3B FLOPs &lt; VGG-16/19(15.3B/19.6B)</li>
<li>ResNet-152 단일 : top-5 검증 4.49%</li>
<li>6-모델 앙상블(152 두 개 포함) : 테스트 top-5 3.57%(ILSVRC 2015 1위)</li>
</ul>
<p><strong>&lt;차원 증가 시 지름길 옵션&gt;</strong>
(A) <strong>Identity + O-padding</strong> (무파라미터)
: 남는 채널을 0으로 패딩해 F(x)와 동일 크기로 만든 뒤 원소별 덧셈 </p>
<ul>
<li>장점 : 추가 파라미터/연산 0</li>
<li>한계 : 0으로 채운 채널로는 정보/기울기 흐름 없음 -&gt; 성능이 (B)보다 소폭 낮을 수 있음</li>
</ul>
<p>(B) *<em>1x1 Projection *</em>(사영 지름길)
: 1x1 conv로 Cin-&gt;Cout 채널 재매핑, 필요 시 stride s로 공간도 정렬</p>
<ul>
<li>장점 : 모든 채널에 정보/기울기 경로 확보, (A) 대비 소폭 더 정확</li>
<li>비용 : 파라미터=Cin x Cout (1x1이어서 최소 비용)</li>
</ul>
<p>(C) <strong>All Projection</strong> (모든 지름길을 1x1로)
: 모든 블록에서 지름길에 1x1 conv 사용</p>
<ul>
<li>장점 : (B)보다 근소한 성능 이득 가능</li>
<li>비용 : 지름길마다 파라미터/연산 증가 -&gt; 메모리·시간 부담</li>
</ul>
<p><img src="https://velog.velcdn.com/images/yeowon123/post/24759c9c-81d8-46d0-8505-e2485ced1848/image.png" alt="">
<img src="https://velog.velcdn.com/images/yeowon123/post/cfb273a9-401d-482f-83db-3d0595c38297/image.png" alt="">
<img src="https://velog.velcdn.com/images/yeowon123/post/2a819cbe-89bc-4860-8fd9-7b41d8ed9297/image.png" alt="">
<img src="https://velog.velcdn.com/images/yeowon123/post/d256a533-0531-4d22-b9c2-18a8ce074de2/image.png" alt=""></p>
<p>&nbsp;</p>
<h2 id="cifar-10-and-analysis">CIFAR-10 and Analysis</h2>
<p>CIFAR-10(학습 5만/테스트 1만,10클래스)에서 <strong>구조와 학습 조건을 통일</strong>해 비교했다. <strong>plain</strong>은 깊어질수록 <strong>훈련 오류 ↑(퇴화)</strong>, <strong>ResNet</strong>은 깊어질수록 <strong>오류 ↓·정확도 ↑</strong>가 재현된다. 층 반응(std) 분석 결과, ResNet은 <strong>잔차가 작은 보정</strong>만 수행(항등+작은 보정)한다는 가설을 지지한다.
아키텍처는 입력 32x32, <strong>총 층수 6n+2</strong>, 해상도 <strong>32-&gt;16-&gt;8</strong>(각 2n층), <strong>16/32/64</strong>, 다운샘플링은 <strong>stride=2 conv</strong>, <strong>지름길은 모두 항등(option A)</strong>. 학습은 batch 128, SGD(m=0.9,wd=1e-4), He 초기화, BN, <strong>dropout 없음</strong>, Ir 0.1(32k/48k에서 x0.1, 64k 종료), 증강은 <strong>4px pad -&gt; 32x32 랜덤 크롭/플립</strong></p>
<blockquote>
<p><strong>핵심 수치/포인트</strong></p>
</blockquote>
<ul>
<li>ResNet-110 : 안정 수렴, 테스트 오류 6.43%</li>
<li>ResNet-1202(~19.4M 파라미터) : 훈련 &lt;0.1% vs 테스트 7.93% -&gt; 과적합(데이터 대비 과대 모델)</li>
<li>워밍업 트릭(110층) : 초기 LR=0.01로 ≈400 iters(훈련오류 &lt;80%)까지 워밍업 후 0.1 복귀</li>
</ul>
<p><img src="https://velog.velcdn.com/images/yeowon123/post/1231c226-39a8-4ff0-bebc-c1d895458e30/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/yeowon123/post/18b0a113-a41b-4aa1-a7e8-363f665703d1/image.png" alt=""></p>
<p>&nbsp;  </p>
<h2 id="object-detection-on-pascal--ms-coco">Object Detection on PASCAL &amp; MS COCO</h2>
<p><strong>Faster R-CNN</strong> 파이프라인에서 <strong>백본만 VGG-16 -&gt; ResNet-101</strong>로 교체(나머지 동일)하면, PASCAL/COCO 모두 <strong>유의미한 향상</strong>을 얻는다. (대회 설정에선 <strong>BN 통계 고정</strong>으로 메모리/안정성 확보)</p>
<blockquote>
<p><strong>핵심 수치/포인트</strong></p>
</blockquote>
<ul>
<li>PASCAL VOC 2007/2012 : ResNet-101이 VGG-16 대비 mAP 상승</li>
<li>MS COCO(val) : mAP@[.5:.95] + 6.0%p(상대+28%), mAP@.5 + 6.9%p -&gt; 인식력과 정밀 위치 지정 모두 개선</li>
<li>대회 성과(2015) : ImageNet Detection/Localization, COCO Detection/Segmentation 모두 1위</li>
</ul>
<p>&nbsp;</p>
<hr>
<h1 id="summary">Summary</h1>
<h3 id="resnet-특징-요약">&lt;ResNet 특징 요약&gt;</h3>
<h4 id="1-핵심-아이디어">1) 핵심 아이디어</h4>
<ul>
<li><strong>잔차 학습</strong> : 직접 H(x)를 배우지 않고 잔차 F(x)=H(x)-x를 학습하여 y=x+F(x)로 출력</li>
<li><strong>지름길(Shortcut)</strong> : 입력을 출력으로 그대로 더하는 경로를 항상 열어둠 -&gt; 기울기 흐름 보장, 깊어도 최적화 용이</li>
</ul>
<h4 id="2-블록-구성-두-가지-계열">2) 블록 구성 (두 가지 계열)</h4>
<ul>
<li>Basic Block (ResNet-18/34)
: Conv 3x3 -&gt; BN -&gt; ReLU -&gt; Conv 3x3 -&gt; BN -&gt; +skip -&gt; ReLU</li>
<li>Bottleneck Block (ResNet-50/101/152)
: 1x1(채널 축소) -&gt; 3x3 -&gt; 1x1(채널 확장, 보통 x4) -&gt;+skip -&gt; ReLU
-&gt; 장점 : 연산/파라미터 효율 높아 깊이 확장에 유리</li>
</ul>
<h4 id="3-지름길shortcut-종류">3) 지름길(Shortcut) 종류</h4>
<ul>
<li><strong>항등 지름길</strong> : S(x)=x (차원 같을 때) -&gt; 추가 파라미터 0, 연산은 원소별 덧셈뿐</li>
<li><strong>사영 지름길</strong>(Projection) : S(x)=Ws*x (1x1 conv, 필요 시 stride)
 -&gt; 차원/해상도 바뀔 때 형상 맞춤, 0-padding보다 정보·기울기 보존이 좋음</li>
</ul>
<h4 id="4-최적화-측면의-특징">4) 최적화 측면의 특징</h4>
<ul>
<li>기울기 고속도로 : 역전파가 ∂L/∂x = ∂L/∂y(I+∂F/∂x) -&gt; I 덕에 기울기 소실/폭주 완화 -&gt; 깊게 쌓아도 학습 안정</li>
<li>항등 해 접근 용이 : 필요하면 F(x)=0으로 바로 항등 구현 (층 추가로 나빠지지 않도록 안전장치)</li>
<li>&quot;작은 보정&quot; 누적 : 평균적으로 F(x)의 반응 크기가 작게 학습되어 안정적으로 큰 표현 변화를 누적</li>
</ul>
<h4 id="5-핵심-과정">5) 핵심 과정</h4>
<p>기본식 : y = x + F(x)</p>
<ul>
<li><strong>의미 있는 변환</strong>이 필요한 위치/샘플/채널에선 F(x)가 큰 쪽으로 학습되어 x를 보정한다</li>
<li><strong>변환이 굳이 필요 없으면</strong> F(x)≈0 쪽으로 머물러 거의 항등이 된다</li>
</ul>
<p>(+) F(x)를 0으로 만드는 별도의 규칙은 없고, 손실 L을 줄이는 방향으로 경사하강이 F의 크기를 자연스럽게 조절한다 (평균적으로 작게 나오는 경향)</p>
<p>=&gt; <strong>&quot;항등 + 작은 보정&quot;을 여러 블록에 걸쳐 누적하면, 한 번에 크게 비틀지 않고도 안정적으로 큰 변화를 만들 수 있고, 기울기 소실/폭주도 완화된다</strong></p>
<hr>
<h2 id="comment">Comment</h2>
<blockquote>
<p>잔차 학습이 표현을 크게 바꾸는 대신 항등에 작은 보정을 누적하도록 재정의해, 깊이 증가 시 성능이 떨어지던 병목을 깔끔히 해소했다는 점이 인상적이다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Attention Is All You Need]]></title>
            <link>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Attention-Is-All-You-Need</link>
            <guid>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Attention-Is-All-You-Need</guid>
            <pubDate>Sun, 26 Oct 2025 15:11:52 GMT</pubDate>
            <description><![CDATA[<h2 id="overview">OverView</h2>
<p><a href="https://arxiv.org/abs/1706.03762">https://arxiv.org/abs/1706.03762</a></p>
<blockquote>
<ul>
<li>기존의 RNN이나 CNN 구조 없이 오직 attention 매커니즘만으로 시퀀스 간의 의존성을 학습하는 transformer 모델을 제안한 논문</li>
</ul>
</blockquote>
<ul>
<li><strong>Self-Attention</strong>을 통해 문장 내 단어 간의 관계를 한 번에 파악함으로써 장기 의존성 문제를 효과적으로 해결한 것이 핵심 아이디어</li>
</ul>
<hr>
<h2 id="abstract">Abstract</h2>
<h3 id="기존-시퀀스-변환-모델">기존 시퀀스 변환 모델</h3>
<ul>
<li>인코더와 디코더를 포함하는 복잡한 순환신경망(RNN) 기반</li>
<li>합성곱 신경망 기반</li>
<li><strong>[SOTA]</strong> 어텐션 메커니즘을 통해 인코더와 디코더를 연결하기도 함</li>
</ul>
<hr>
<h3 id="어텐션-기반-transformer의-등장">어텐션 기반 Transformer의 등장</h3>
<ul>
<li>병렬화 더욱 용이</li>
<li>훈련 시간 훨씬 적게 소요</li>
</ul>
<hr>
<h3 id="성능">성능</h3>
<ul>
<li>WMT 2014 영어-독일어 번역 작업<ul>
<li>28.4 BLEU 달성 (기존 + 2BLEU)</li>
<li>8개의 GPU에서 3.5일동안 훈련한 후 41.8의 새로운 단일 모델 최고 수준의 BLEU 점수 확립</li>
<li>다른 작업에도 잘 일반화 됨(constituency parsing)</li>
</ul>
</li>
</ul>
<hr>
<h2 id="1-introduction">1. Introduction</h2>
<h3 id="기존의-모델과-한계점">기존의 모델과 한계점</h3>
<ul>
<li>순환 신경망 RNN, LSTM, GRU
→ 언어 모델링 및 기계 번역과 같은 시퀀스 모델링 및 변환 문제에서 최첨단 접근 방식으로 확고히 자리 잡음</li>
<li>순차적인 특성으로 인해 훈련 예제 내 병렬화 불가능
→ <strong>[P]</strong> 시퀀스 길이가 길어질수록 메모리 제약 조건으로 인해 <strong>예제 간의 배칭(batch size) 제한</strong>
→** [S]** factorization tricks + condition computation을 통해 계산 효율성 및 성능 향상</li>
<li>하지만, 여전히 순차적 계산의 근본적인 제약은 여전히 남아 있음</li>
</ul>
<hr>
<h3 id="attention-매커니즘의-등장">Attention 매커니즘의 등장</h3>
<ul>
<li>입출력 시퀀스에서 거리에 무관하게 종속성 모델링 가능 
→ 다양한 시퀀스 작업에 필수적인 구성요소</li>
<li>대부분, RNN과 함께 사용 됨</li>
</ul>
<hr>
<h3 id="transformer">Transformer</h3>
<ul>
<li>순환을 완전히 제거하고 어텐션만으로 ‘입력 - 출력’ 간 전역 종속성을 학습하는 transformer</li>
<li>병렬화에 유리 + 8개의 P100 GPU에서 12시간 학습만에 기계 번역에서의 SOTA 달성</li>
</ul>
<hr>
<h2 id="2-background">2. Background</h2>
<h3 id="cnn기반의-시퀀스-모델">CNN기반의 시퀀스 모델</h3>
<ul>
<li><p><code>Extended Neural GPU</code>, <code>ByteNet</code>, <code>ConvS2S</code> : RNN의 순차 연산을 줄이기 위해 <strong>CNN을 기본블록</strong>으로!</p>
</li>
<li><p>입력/출력 위치 전체에 대해 <strong>병렬</strong>로 hidden representation 계산 가능</p>
<p>  BUT, <strong>두 위치 사이 거리가 멀수록 신호 연결에 필요한 연산 수 증가</strong></p>
<ul>
<li><strong>ConvS2S</strong>: 선형적 증가 (입력이 증가하는 비율과 결과가 증가하는 비율이 일정한 “직선적인” 성장)</li>
<li><strong>ByteNet</strong>: 로그 증가 (입력이 증가하더라도 결과의 증가 속도가 점점 느려지는 “증가율 둔화”)</li>
</ul>
</li>
</ul>
<hr>
<h3 id="transformer-1">Transformer</h3>
<ul>
<li>일정한 수의 연산으로 줄어듦 but, 어텐션 가중치가 적용된 위치의 평균화로 <strong>(P)유효 해상도 감소</strong>
  → 3.2절 Multi-Head Attention으로 상쇄</li>
</ul>
<hr>
<h3 id="self-attention">Self-Attention</h3>
<ul>
<li>한 시퀀스 내 서로 다른 위치를 연결해 표현을 계산하는 매커니즘</li>
<li>독해, 요약, 텍스트 함의, 문장 표현 학습 등 다양한 작업에서 성과 입증</li>
<li><strong>End-to-End memory networks</strong><ul>
<li>시퀀스 정렬된 RNN 대신, self-attention 메커니즘 기반<ul>
<li>간단한 언어 질의 응답 및 언어 모델링 작업에서 우수한 성능</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><strong>즉, Transformer는 RNN, CNN에 전혀 의존하지 않고, self-attention만으로 입출력 표현을 학습한 최초의 모델</strong></p>
<hr>
<h2 id="3-model-architecture">3. Model Architecture</h2>
<h3 id="기존-신경-시퀀스-변환-모델">기존 신경 시퀀스 변환 모델</h3>
<ul>
<li>대부분 <strong>인코더-디코더(encoder-decoder)</strong>구조 채택<ul>
<li><strong>인코더</strong>: 입력 심볼 시퀀스 (x1, ,,, , xn) → 연속 표현 시퀀스 (z1, ,,, zn)로 변환<ul>
<li><strong>디코더</strong>: 인코더의 표현 z를 바탕으로 출력 심볼 시퀀스 (y1, ,,, ym) 하나씩 순차적으로 생성</li>
</ul>
</li>
<li>새로운 심볼 생성할 때, 이미 생성된 심볼들을 추가 입력으로 활용</li>
</ul>
</li>
</ul>
<hr>
<h3 id="transformer-2">Transformer</h3>
<ul>
<li>인코더-디코더 전체 구조는 동일하게 유지
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/15d102b3-4b74-4e22-8c1f-9fbf2f3c399f/image.png" alt=""><ul>
<li>단 인코더, 디코더 내부 구성 요소를 <strong>self-attention + position-wise feed-forward layer</strong>로 대체</li>
</ul>
</li>
</ul>
<p><strong>⇒ 관계 학습(self-attention) + 개별 토큰 변환(FFN) 두 층을 교차로 쌓음</strong></p>
<hr>
<h3 id="31-encoder-and-decoder-stacks">3.1 Encoder and Decoder Stacks</h3>
<h3 id="인코더">인코더</h3>
<ul>
<li><strong>구성</strong>: 동일한 레이어 6개 (stack)</li>
<li><strong>각 레이어 (2개의 sub-layer)</strong><ul>
<li>Multi-Head Self-Attention</li>
<li>Position-wise Feed-Forward Network</li>
</ul>
</li>
<li><strong>Residual Connection + Layer Normalization</strong><ul>
<li>각 sub-layer 출력:  $LayerNorm(x + Sublayer(x))$</li>
<li>sub-layer 결과와 입력을 더한 뒤 정규화</li>
</ul>
</li>
<li><strong>출력 차원</strong>: 모든 sub-layer 및 embedding layer는 d_model = 512
  → residual connection을 용이하기 위함</li>
</ul>
<hr>
<h3 id="디코더">디코더</h3>
<ul>
<li><strong>구성</strong>: 동일한 레이어 6개(stack)</li>
<li><strong>각 레이어</strong><ul>
<li>Masked Multi-Head Self-Attention - 미래 토큰 참조 금지</li>
<li>Encoder-Decoder Multi Head Attention - 인코더 출력 참조</li>
<li>Position-wise Feed Forward Network</li>
</ul>
</li>
<li><strong>Residual Connection + Layer Normalization</strong>: 인코더와 동일하게 적용</li>
<li><strong>Masking</strong><ul>
<li>시점 i에서 예측은 반드시 <strong>이전 위치 (&lt;i) 출력에만 의존</strong></li>
<li>auto-regressive 성질을 보장</li>
</ul>
</li>
</ul>
<hr>
<h3 id="32-attention">3.2 Attention</h3>
<h3 id="attention-function">Attention function</h3>
<ul>
<li><p>Attention function: <strong>입력 쿼리</strong>와 <strong>키-값(key-value) 쌍</strong>을 받아 출력을 만들어 내는 함수</p>
<ul>
<li>Query, Key, Output 모두 벡터로 표현됨</li>
</ul>
</li>
<li><p>출력: value의 가중합으로 계산</p>
<ul>
<li>value에 할당된 가중치는 해당 key와 query의 호환성 함수에 의해 계산</li>
</ul>
</li>
</ul>
<hr>
<h3 id="321-scaled-dot-product-attention">3.2.1 Scaled Dot-Product Attention</h3>
<h3 id="입력">입력</h3>
<ul>
<li>쿼리 Q: 차원 $d_k$<ul>
<li>내 목적이 뭔지? - 문장구조를 보고 싶어! 에 맞는 걸 하겟다고 하면</li>
</ul>
</li>
<li>키 K: 차원  $d_k$<ul>
<li>문장구조 특징이 담겨있는 벡터로 표현되어 있는거고</li>
<li>그걸 내적하면 문장 구조에 대한 목적을 가지고 있는 단어들 간의 유사도를 뽑아냄</li>
</ul>
</li>
<li>값 V: 차원 $d_v$<ul>
<li>value는 목적과 관계없이 단어가 임베딩상의 위치</li>
</ul>
</li>
</ul>
<hr>
<h3 id="계산과정">계산과정</h3>
<p>1) <strong>쿼리와 모든 키의 내적(dot product) 계산</strong> → 유사도 점수</p>
<p>2) <strong>내적 값을  $sqrt(d_k)$로 나눔 *<em>(스케일링): *</em>$d_k$  가 커질수록 내적 값이 커져 softmax가 매우 작은 기울기</strong>를 갖게 되므로 학습이 어려워짐 → 안정화 필요</p>
<p>3) <strong>softmax 적용</strong> → 가중치(확률 분포) 획득</p>
<p>4) <strong>그 가중치로 값 V들의 가중합</strong> → 최종 출력</p>
<hr>
<h3 id="attention-fuction">Attention Fuction</h3>
<ul>
<li><p><strong>additive attention</strong><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/87b1860f-001c-4f8d-b7a3-86004bb6b340/image.png" alt=""></p>
<ul>
<li>단일 hidden layer를 가진 feed-forward network를 사용하여 호환성 함수 계산</li>
</ul>
</li>
<li><p><strong>dot-product (multiplicative) attention</strong>  <img src="https://velog.velcdn.com/images/vitaminlab_0901/post/02478aaf-fe56-419b-8727-ca6329b05655/image.png" alt=""></p>
<ul>
<li><p>$1/sqrt(d_k)$의 스케일링 인자를 제외하고 알고리즘 동일</p>
<p>  ⇒ additive attention과 dot-product attention 이론적인 복잡성은 유사하지만,</p>
<p>  dot-product attention은 최적화된 행렬 곱셈 코드를 사용하여 구현 가능 → 빠르고 공간 효율적</p>
</li>
</ul>
</li>
</ul>
<hr>
<h3 id="성능차이">성능차이</h3>
<ul>
<li><strong>$d_k$가 작을 때</strong>: additive와 dot-product 성능 비슷</li>
<li>$d_k$<strong>가 클 때</strong>: 스케일링 없는 dot-product는 성능 저하 → additive가 더 유리</li>
</ul>
<p><strong>⇒ Transformer는 스케일링 factor $1/sqrt(d_k)$를 넣어 안정적으로 학습</strong></p>
<hr>
<h3 id="322-multi-head-attention">3.2.2 Multi-Head Attention</h3>
<ul>
<li><p>단일 어텐션은 입력(Query, Key, Value)을 <strong>d_model 차원</strong>에서 직접 계산</p>
</li>
<li><p>이렇게 하면 표현력은 제한되고, dot-product(내적) 크기가 커지는 문제 발생</p>
<p>  → $d_k, d_k, d_v$ 차원으로 서로 다른 학습된 선형 투영을 통해 h번 선형적으로 투영하는 것이 유용하다는 것을 발견</p>
</li>
</ul>
<hr>
<h3 id="차원축소와-병렬화">차원축소와 병렬화</h3>
<ul>
<li><p>Q, K, V를 각각 서로 다르게 학습된 선형 변환 행렬($W_i^Q, W_i^K, W_i^V$)</p>
</li>
<li><p><strong>투영 차원</strong></p>
<p>  d_k = d_v = d_model / h</p>
<ul>
<li>Base 모델: d_model = 512, h = 8 → d_k = d_v =64</li>
</ul>
</li>
</ul>
<h2 id="⇒-전체-벡터를-여러-부분-공간subspace로-쪼개-병렬로-attention-수행">  ⇒ 전체 벡터를 여러 <strong>“부분 공간(subspace)”</strong>로 쪼개 <strong>병렬로 attention 수행</strong></h2>
<h3 id="병렬-attention후-결합">병렬 Attention후 결합</h3>
<ul>
<li>각 head에서 어텐션 결과(출력값, 차원d_v)를 구한 뒤 Concat(head_1, ... , head_h) - → 최종 출력</li>
</ul>
<p><strong>⇒ Q, K, V를 여러 부분 공간으로 선형 변환해 병렬 어텐션을 수행하고, 이를 합쳐 최종 출력으로 만드는 방식</strong>
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/5472557a-1fe8-42dd-913e-9a5fe579c9b5/image.png" alt=""></p>
<hr>
<h3 id="323--applications-of-attention-in-our-model">3.2.3  Applications of Attention in our Model</h3>
<h3 id="transformer의-attention-활용-방식-3종류">Transformer의 Attention 활용 방식 3종류</h3>
<p><strong>1) Encoder-Decoder Attention</strong></p>
<ul>
<li>Query: 이전 디코더 레이어 출력</li>
<li>Key, Value: 인코더 출력(memory)</li>
<li>기능: 디코더가 출력 단어를 생성할 때 입력 시퀀스 전체를 참고할 수있도록 함</li>
<li>기존의 seq2seq 모델의 encoder-decoder attention 계승</li>
</ul>
<p><strong>2) Encoder Self-Attention</strong></p>
<ul>
<li><p>Query, Key, Value: 모두 인코더 이전 레이어 출력</p>
</li>
<li><p>기능: 입력 시퀀스의 각 위치가 다른 모든 위치와 상호작용 할 수 있음</p>
<p>  → 입력 문장 내 단어 간 전역 문맥 학습</p>
</li>
</ul>
<p><strong>3) Decoder Self-Attention</strong></p>
<ul>
<li>Query, Key, Value: 모두 디코더의 이전 레이어 출력</li>
<li>기능: 디코더 각 위치가 자신 포함 모든 이전 위치를 참고할 수 있음</li>
<li>masking: 미래 단어로 정보가 흘러가면 안됨<ul>
<li>softmax 입력에서 불법 연결에 해당하는 값을 -무한대로 설정</li>
<li>auto-regressive 성질 유지</li>
</ul>
</li>
</ul>
<hr>
<h3 id="33-position-wise-feed-forward-networks">3.3 Position-wise Feed-Forward Networks</h3>
<h3 id="구조">구조</h3>
<ul>
<li><p>Attention sub-layer 외에, 인코더와 디코더의 각 레이어는 FFN 포함</p>
</li>
<li><p><code>Feed-Forward sub-layer</code> /  <code>Encoder-Decoder Attention sub-layer</code></p>
</li>
<li><p>각 토큰 위치별로 <strong>독립적이지만 동일한 방식</strong>으로 적용
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/100ad043-3ac8-42e2-a8e9-e182db108905/image.png" alt=""></p>
<ul>
<li>2개의 선형 변환 + ReLU 활성화</li>
<li>x는 어텐션 결과값, w1을 곱하고 b1 을 더해줌</li>
</ul>
</li>
</ul>
<h3 id="특징">특징</h3>
<ul>
<li>위치마다 같은 가중치를 적용 → 병렬화 용이</li>
<li>단, 레이어마다 다른 파라미터 학습</li>
</ul>
<p> → 즉, 인코더 6개층에 들어간 FFN은 각각 고유의 W1, W2를 가짐</p>
<p>⇒ 커널크기 1인 2개의 convolution으로 설명
⇒ 입력 및 출력 차원 d_model = 512, inner-layer 차원: d_ff = 2048
    <strong>→ 즉 512 차원을 2048차원으로 확장했다가 다시 512로 압축 (표현력 강화 목적)</strong></p>
<hr>
<h3 id="34-embedding-and-softmax">3.4 Embedding and Softmax</h3>
<p><strong>1) 입력/출력 임베딩</strong></p>
<ul>
<li>다른 시퀀스 변환 모델과 마찬가지로 입력/출력 토큰을 학습된 embedding layer로 변환</li>
</ul>
<p><strong>2) 출력 예측</strong></p>
<ul>
<li>디코더의 출력을 학습된 선형 변환 + softmax를 통해 다음 토큰 확률 분포로 변환</li>
</ul>
<p><strong>3) 가중치 공유</strong></p>
<ul>
<li>입력 임베딩, 출력 임베딩, softmax 직전 선형 변환의 가중치 행렬 공유</li>
</ul>
<p><strong>4) 스케일링</strong></p>
<ul>
<li>Embedding 벡터에 sqrt(d_model)을 곱해 스케일 조정<ul>
<li>초기화시 임베딩 벡터 크기가 너무 작아지는 것을 방지하고 안정적 학습 유도하기 위함</li>
</ul>
</li>
</ul>
<hr>
<h3 id="35-positional-encoding">3.5 Positional Encoding</h3>
<h3 id="p">P</h3>
<ul>
<li>Transformer는 RNN이나 CNN처럼 순차 구조가 없음
  → 토큰 순서 정보가 사라질 수 있어서 “위치정보” 주입해야함<h3 id="s">S</h3>
</li>
<li>인코더와 디코더 스택 하단의 입력 임베딩에 “positional encodings” 추가<ul>
<li>임베딩과 동일한 차원인 d_model을 가져서 두 값 합산 가능</li>
</ul>
</li>
<li>구현 방법: 1) 학습형 2) 고정형 2가지 有<ul>
<li>서로 다른 주파수의 사인 및 코사인 함수 사용</li>
</ul>
</li>
</ul>
<hr>
<h2 id="4-why-self-attention">4. Why Self-Attention</h2>
<ul>
<li>** Self-Attention vs RNN/CNN 비교정리**<ul>
<li>계산 복잡도</li>
<li>필요한 최소 순차 연산 수로 측정되는 병렬화할 수 있는 계산량</li>
<li>네트워크에서 장거리 의존성 간의 경로 길이(주요과제)<ul>
<li>순방향 및 역방향 신호가 통과해야하는 경로 길이 </li>
<li>길이가 짧을 수록 학습에 쉬움</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/3e491b58-483e-41c7-9f5f-35512416cbb9/image.png" alt=""></p>
<hr>
<h2 id="5-training">5. Training</h2>
<h3 id="51-training-data-and-batching">5.1 Training Data and Batching</h3>
<ul>
<li><strong>영어-독일어</strong><ul>
<li>WMT 2014 데이터셋 (약 450만 문장 쌍)</li>
<li>Byte-Pair Encoding, 공유 어휘 37,000개 사용</li>
</ul>
</li>
<li><strong>영어-불어</strong><ul>
<li>WMT 2014 데이터셋 (약 3600만 문장 쌍)</li>
<li>WordPiece, 어휘 크기 32,000 사용</li>
</ul>
</li>
<li><strong>Batch 구성</strong><ul>
<li>문장 길이를 기준으로 대략 정렬 후 배치</li>
<li>각 배치: 약 25000 source 토큰 + 25000 target 토큰</li>
</ul>
</li>
</ul>
<hr>
<h3 id="52-hardware-and-schedule"><strong>5.2 Hardware and Schedule</strong></h3>
<ul>
<li>하드웨어: NVIDA P100 GPU x 8</li>
<li>Base 모델<ul>
<li>Step당 약 0.4초</li>
<li>100,000 steps 약 12시간 학습</li>
</ul>
</li>
<li>Big 모델<ul>
<li>step당 약 1초</li>
<li>300,000 steps 약 3.5일 학습</li>
</ul>
</li>
</ul>
<hr>
<h3 id="53-optimizer"><strong>5.3 Optimizer</strong></h3>
<ul>
<li><p>Adam optimizer</p>
<ul>
<li>베타1 = 0.9, 베타2 = 0.98, 에러 = 10^(-9)</li>
</ul>
</li>
<li><p>학습률
  <img src="https://velog.velcdn.com/images/vitaminlab_0901/post/955613d0-9e82-4bc1-8703-16090132439a/image.png" alt=""></p>
<ul>
<li>초반 warmup 단계(4000 steps): 선형 증가</li>
<li>이후: 단계수의 역제곱 비율로 감소</li>
</ul>
</li>
</ul>
<hr>
<h3 id="54-regularization"><strong>5.4 Regularization</strong></h3>
<ul>
<li><strong>Residual Dropout</strong><ul>
<li>각 sub-layer 출력에 dropout 적용 후, sub-layer에 입력 추가 및 정규화</li>
<li>인코더, 디코더의 임베딩 + positional encoding 합에도 dropout 적용</li>
<li>Base 모델 P_drop = 0.1</li>
</ul>
</li>
<li><strong>Label Smoothing</strong><ul>
<li>els = 0.1</li>
<li>모델이 과도하게 확신하지 않도록 → perplexity(복잡)는 다소 높아지지만 정확도 BLEU 향상</li>
</ul>
</li>
</ul>
<hr>
<h2 id="6-result">6. Result</h2>
<h3 id="61-machine-translation">6.1 Machine Translation</h3>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/ecf06e7b-b79c-4215-9fc8-4594310f6179/image.png" alt=""></p>
<hr>
<h3 id="62-model-variations">6.2 Model Variations</h3>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/0212cabf-13af-4e2b-b5ea-506adfce331d/image.png" alt=""></p>
<hr>
<h3 id="63-english-constituency-parsing">6.3 English Constituency Parsing</h3>
<p><img src="blob:https://velog.io/7e9f0793-39f5-4ac0-a60c-16d06d8ff562" alt="업로드중.."></p>
<hr>
<h2 id="7-conclusion">7. Conclusion</h2>
<ul>
<li><p>Transformer는 인코더-디코더 아키텍쳐에서 RNN을 완전히 제거하고</p>
<p>  multi-head self-attention만으로 구성된 최초의 sequence transduction 모델 제안</p>
</li>
</ul>
<ul>
<li>Transformer를 텍스트 말고 modality에 확장해고 싶고, 대규모 입출력을 효율적으로 할 수 있도록 하고 싶으며, 더 병렬적으로 하고 싶다</li>
</ul>
<hr>
<h2 id="comment">Comment</h2>
<blockquote>
<ul>
<li>본 논문은 단순히 새로운 모델을 제안한 것을 넘어 복잡한 구조보다 &quot;관계(attention)&quot;가 더 중요하다는 패러다임의 전환을 보여줬다.</li>
</ul>
</blockquote>
<ul>
<li>데이터 간의 연결성과 맥락 이해의 중요성을 강조한 점이 인상적이었던 것 같다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] Sequence to Sequence Learning with Neural Networks]]></title>
            <link>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Sequence-to-Sequence-Learning-with-Neural-Networks</link>
            <guid>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Sequence-to-Sequence-Learning-with-Neural-Networks</guid>
            <pubDate>Tue, 30 Sep 2025 08:37:56 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/joseph1129/post/95323e58-2c9e-4528-99ee-1af46bd93b67/image.png" alt=""></p>
<h1 id="abstract">Abstract</h1>
<ul>
<li>전통적인 MLP/Conv 등 고정 길이 입력을 주로 다루는 DNN은 시퀀스처럼 가변 길이이고 순서·의존성이 중요한 데이터에 직접 적용하기 어렵다.</li>
<li>RNN은 재귀적으로 은닉상태를 갱신하며 시퀀스를 처리하지만, 긴 의존성을 다룰 때 기울기 소실/폭주(vanishing/exploding) 문제가 발생한다.</li>
<li>LSTM은 게이트와 셀 상태(𝑐𝑡) 를 도입해 중요한 정보를 오래 보존하고 불필요한 것은 잊게 하면서 이 문제를 완화한다.</li>
<li>Seq2Seq(Encoder–Decoder) 는 인코더가 입력 시퀀스를 요약한 뒤(컨텍스트/최종 상태) 디코더가 이를 조건으로 다음 토큰 분포를 순차적으로 생성하는 구조다. 바닐라 RNN 대신 LSTM 셀을 쓰면 장기 의존성에 더 강하다.</li>
<li>다층 LSTM을 사용<ul>
<li>입력 시퀀스를 고정 차원의 벡터로 매핑하고, 이어서 또 다른 다층 LSTM을 사용해 그 벡터로 부터 목표 시퀀스를 디코딩한다.</li>
<li>어순을 거꾸로 하면서 입력 문장과 target 문장 사이에 많은 단기 종속성 (short term dependencies)를 도입하도록 함</li>
<li>본 논문에서는 인위적으로 만들어낸 다양한 패턴들에 대해서 LSTM을 적용시켜 RTRL, BPTT, Recurrent Cascade-Correlation, Elman nets, Neural Sequence Chnking등과 비교해보았으며, 실험을 통해 LSTM의 우수함을 입증하였다.<h1 id="introduction">Introduction</h1>
</li>
</ul>
</li>
<li>기존 DNN에 관한 내용<ul>
<li>음성 인식과 객체 탐지와 같이 많은 task에 사용되고 있음</li>
<li>병렬 컴퓨팅이 가능하고, 지도 학습의 경우에는 역전파를 이용하여 최적의 파라미터 찾음</li>
<li>그러나, input과 target이 고정된 길이의 벡터로 encoding되는 점이 문제점<ul>
<li>실제로 대부분의 task는 고정된 길이가 아닐 것이기 때문에, 도메인 독립적인 게 필요!
논문은 LSTM을 제시하면서 이 문제를 풀고자 한다. 입력 시퀀스를 한 타임 스템씩 읽어 큰 고정 차원의 벡터 표현을 얻고, 그 다음 또 다른LSTM을 사용해 그 벡터로 부터 출력 시퀀스를 추출하는 것이다. 
모델 구조 </li>
</ul>
</li>
</ul>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/joseph1129/post/4680f77d-d3c6-495e-b40a-9964143e2f98/image.png" alt=""></p>
<p>모델을 읽는 법 박스는 RNN cell에서 LSTM으로 대체했다 그리하여 LSTM이반 seq2seq가 된다.
 첫번째, 하나의 LSTM을 사용하여 입력 sequence를 읽고나서 고정 차원 벡터로 표현한다.
두번째, 다른 LSTM을 사용하여 해당 벡터에서 출력 sequence를 추출한다.
세번째, LSTM은 입력 sequence에 따라 조건이 지정된다는 점을 제외하면 기본적으로 RNN 언어 모델이다.
마지막으로, LSTM은 입력과 해당 출력 사이에 상당한 시간 지연이 있기 때문에 긴 범위의 일시적인 의존성을 학습한다.</p>
<h3 id="lstm-vs-rnn">Lstm vs Rnn</h3>
<p>아래는 <strong>편집·복붙 가능한 Markdown + LaTeX</strong> 형태로 깔끔히 정리한 내용입니다.</p>
<hr>
<h2 id="rnn-기본식과-한계">RNN 기본식과 한계</h2>
<p>바닐라 RNN의 한 스텝 갱신식은 다음과 같다.</p>
<p>$$
h_t = \phi!\left(W^{xh} x_t + W^{hh} h_{t-1} + b^h\right), \qquad
y_t = \mathrm{softmax}!\left(W^{hy} h_t + b^y\right)
$$</p>
<p>여기서 $\phi$는 보통 $\tanh$ 또는 ReLU를 사용한다.
긴 시퀀스에서는 $\frac{\partial h_T}{\partial h_t}$가 반복 곱 형태가 되어, 작은 고유값(또는 큰 고유값)에 의해 <strong>기울기 소실(또는 폭주)</strong>가 발생하기 쉽다. 그 결과, 멀리 떨어진 정보가 학습 신호로 잘 전달되지 않는 문제가 생긴다.</p>
<hr>
<h2 id="lstm-셀-구조와-수식">LSTM 셀 구조와 수식</h2>
<p>LSTM은 은닉상태 $h_t$와 별도로 <strong>셀 상태 $c_t$</strong> 를 유지한다. 한 스텝의 갱신은 다음과 같다.</p>
<p>$$
\begin{aligned}
i_t &amp;= \sigma!\left(W_i x_t + U_i h_{t-1} + b_i\right) &amp;&amp; \text{(input gate)} \
f_t &amp;= \sigma!\left(W_f x_t + U_f h_{t-1} + b_f\right) &amp;&amp; \text{(forget gate)} \
g_t &amp;= \tanh!\left(W_g x_t + U_g h_{t-1} + b_g\right) &amp;&amp; \text{(cell candidate)} \
o_t &amp;= \sigma!\left(W_o x_t + U_o h_{t-1} + b_o\right) &amp;&amp; \text{(output gate)} \
c_t &amp;= f_t \odot c_{t-1} + i_t \odot g_t \
h_t &amp;= o_t \odot \tanh(c_t)
\end{aligned}
$$</p>
<h3 id="흐름도-관점텍스트-설명">흐름도 관점(텍스트 설명)</h3>
<ul>
<li><strong>입력:</strong> $(x_t, h_{t-1}, c_{t-1})$가 LSTM 셀로 들어간다.</li>
<li><strong>수평 내부 전달:</strong> $c_{t-1} \rightarrow c_t \rightarrow c_{t+1}$ (셀 상태의 “고속도로”).</li>
<li><strong>수직 출력:</strong> $h_t$가 FC(+softmax)로 올라가 출력 분포를 만든다.</li>
<li><strong>다음 스텝으로 전달:</strong> $(h_t, c_t)$ <strong>둘 다</strong> 다음 시점으로 전달된다.</li>
</ul>
<blockquote>
<p><strong>중요:</strong> “RNN의 확률”과 “LSTM의 확률” <strong>정의는 동일</strong>하다. 달라지는 것은 확률을 만들게 되는 <strong>표현 $h_t$</strong> 의 품질이며, LSTM은 $c_t$ 덕분에 장기 정보를 보존해 더 나은 $h_t$를 제공하는 경향이 있다.</p>
</blockquote>
<blockquote>
</blockquote>
<h1 id="lstmlong-short-term-memory에-대해-좀-더-자세히-설명하자면">LSTM(Long Short-Term Memory)에 대해 좀 더 자세히 설명하자면</h1>
<p>  <img src="https://velog.velcdn.com/images/joseph1129/post/41f6dfab-6f1f-457c-b2c2-65397b4356aa/image.png" alt=""></p>
<ul>
<li>장기의존성의 약점을 보완하기 위해 lstm이 탄생했다.</li>
</ul>
<p>  <img src="https://velog.velcdn.com/images/joseph1129/post/8eb0687b-e9c1-4f18-bcc3-cc01b0309352/image.png" alt="">
LSTM Cell의 구조는 위와 같다.</p>
<blockquote>
</blockquote>
<p>기존 Vanilla RNN이 hidden state만을 사용하던 것과 달리, LSTM에서는 Cell State라는 새로운 Flow를 도입하였다. 이는 마치 컨베이어 벨트처럼 이전에 입력됐던 정보들을 전달해주는 역할을 한다.</p>
<blockquote>
</blockquote>
<p>이전 Cell에서 넘어온 hidden state에 대해서 과거의 정보중 어느 것을 Cell State에 반영할 것인지를 정하는 Forget Gate(불필요한 정보를 잊는다는 의미), 현재 입력된 정보를 얼마나 Cell State에 반영할 것인지를 정하는 Input Gate, 다음 Cell에 전달할 hidden state 값에 Cell State를 얼마나 반영할 것인지를 정하는 Output Gate로 구성된다.</p>
<blockquote>
</blockquote>
<h1 id="forget-gate">Forget gate</h1>
<p>모델의 구성 
<img src="https://velog.velcdn.com/images/joseph1129/post/7035e399-a800-479c-b10f-3203e7e4a32a/image.png" alt="">
과거에서 넘어온 정보 중, 불필요하다고 여겨지는 데이터들을 삭제해주는 역할을 한다.</p>
<blockquote>
</blockquote>
<p>정확히는 삭제라기보다는, Sigmoid 함수를 통해 얻어진 0~1 사이의 가중치를 곱해줘서 학습을 하면서 상대적으로 중요한 정보에는 높은 가중치를, Gradient 갱신에 별로 좋지 않은 영향을 끼치는 정보에 대해서는 낮은 가중치를 가지게 한다.</p>
<blockquote>
</blockquote>
<p>즉 Neural Network를 학습하여 얻어진 W_f(Weight of Forget Gate)와 B_f(Bias of Forget Gate)를 바탕으로 0에 가까운 값이 나오면 정보를 버리는 효과, 아예 0이 되면 삭제 반대로 1에 가까울 수록 정보 보존, 1일 경우 데이터 그대로 전달의 역할을 함으로써 Cell을 지나면서도 계속적으로 유의미한 데이터들은 Cell State Flow에 보존되도록 한다.</p>
<h1 id="input-gate">input gate</h1>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/joseph1129/post/4e75b082-2411-48be-810f-a1ca5186726e/image.png" alt="">
현재의 입력값 X_t와 이전 hidden state를 적절히 사용하여 현재 Cell의 Local State를 얻어내고, 이를 Global Cell State에 얼마나 반영할지를 결정하는 게이트이다.</p>
<blockquote>
</blockquote>
<p>마찬가지로 Sigmoid 함수를 사용하므로, 현재 시점에서 얻은 정보가 큰 효용가치가 있을 경우 Cell State에 많이 반영하고, 별로 의미가 없는 데이터일 경우에는 0에 가까운 가중치를 줘서 반영을 최소화한다.
<img src="https://velog.velcdn.com/images/joseph1129/post/97717317-9f08-4e66-85b9-b2d72f32eb4e/image.png" alt="">
이후, 과거 hidden state에서 적절히 forget이 이루어진 cell state와, 현재 cell에서 얻을 수 있는 새로운 데이터를 반영한 cell state를 더해서 최종적인 global cell state를 update하게 된다.</p>
<h1 id="output-gate">output gate</h1>
<p>  <img src="https://velog.velcdn.com/images/joseph1129/post/15302c62-9710-4562-a274-2b9c883eecbc/image.png" alt="">
 최종적으로 얻어진 Cell State 값에서 어느정도를 취해서 Hidden State로 전달할 것인지를 정하는 마지막 Gate이다.</p>
<blockquote>
</blockquote>
<p>여기서 최종적으로 얻어진 h_t를 바탕으로 다음 셀에서는 C_t+1을 구하게 된다.</p>
<h2 id="논문-과제">논문 과제</h2>
<p>WMT’14 영어→프랑스어 번역 과제
5개의 deep LSTMs(with 384M parameters and 8,000 dimensional state each)를 앙상블</p>
<p>simple left-to-right beam-search decoder 사용
적은 수(80K)의 단어로 학습한 결과, BLEU score가 34.81임</p>
<p>결론 </p>
<p>LSTM이 생각보다 긴 문장에 취약하지 않다고 함
어순 배열 바꾸기 trick으로 optimize를 되게 simple하게 해줌
  경로 길이 ≈ t + (n - t) = n (거의 항상 n)</p>
<p>뒤집기 후엔 대응 소스 위치가 s&#39; = n - t + 1이 돼.</p>
<p>경로 길이 ≈ t + (n - s&#39;) = t + (t - 1) = 2t - 1
LSTM의 경우에는 가변 길이의 문장을 고정된 길이로 바꿔주는 것을 학습함
SOTA 보다는 약간 낮은 BLEU Score이기는 하지만, Sequence한 task를 다뤘다는 점에서 의의</p>
<h1 id="model">Model</h1>
<ul>
<li>Rnn은 다음의 방정식을 반복하여 출력 y를 수행한다.
<img src="https://velog.velcdn.com/images/joseph1129/post/8206bd85-85cd-492f-b783-28e4c44260b9/image.png" alt="">
<img src="https://velog.velcdn.com/images/joseph1129/post/9741b60d-20a8-4227-a371-2ed5030d1f6a/image.png" alt=""><blockquote>
</blockquote>
이런식으로 입출력의 갯수가 같다고 진행함
영어는 목적어가 주어와 조금 떨어진 즉 어순이 다르다. 우리는 그리워라는 단어를 확인 했을 때 비로소 miss라는 동사를 가진다고 알 수 있는 것이다. 이것은 정확한 유추가 힘들어 지는 원인이 되며
본 논문은 context 벡터를 뽑은 후에 디코딩이 도리 수 있도록 만드는 것이다.
<img src="https://velog.velcdn.com/images/joseph1129/post/a340265c-edb5-4098-8150-bc4348c3b9fe/image.png" alt="">
즉 lstm 및 rnn은 밑과 같은 조건부 확률로 계산된다.
<img src="https://velog.velcdn.com/images/joseph1129/post/a6424845-0304-4f3e-bb16-a8ed3c4dfdbd/image.png" alt=""></li>
</ul>
<p>그리하여 본 논문은 위 설명과 세가지 중요한 점에서 다름을 보여준다.
첫째, 입력 시퀀스용 LSTM과 출력 시퀀스용 LSTM 두 개를 사용했는데, 이는 계산 비용 증가가 미미한 수준에서 모델 파라미터 수를 늘려 주며 여러 언어쌍을 동시에 학습시키기에 자연스럽기 때문이다 
둘째, 깊은 LSTM이 얕은 LSTM보다 훨씬 더 우수하다는 것을 발견했기 때문에 4개 층을 가진 LSTM을 선택했다. 
셋째, 입력 문장의 단어 순서를 역순으로 바꾸는 것이 매우 유용하다는 것을 발견했다.(그림으로 설명하겠음)
<img src="https://velog.velcdn.com/images/joseph1129/post/55ee0af8-58c5-4b99-9694-9d44b9334ad3/image.png" alt=""></p>
<h1 id="decoding-and-rescoing">Decoding and Rescoing</h1>
<p><img src="https://velog.velcdn.com/images/joseph1129/post/001dc9ab-de3d-4826-aecb-bc88b0b24487/image.png" alt="">
여기서 사용하는 방법은 일반적인 방법으로 특별한 것은 없다. S: 소스고 T: 타겟이다. 즉 소스 센텐스에 대한 타겟이 나올 수 있도록 학습을 진행하였고 로그를 넣음으로 써 확률값이 놓아지는 방향으로 하였다.
:???? 왜 로그를 붙였다고 확률이 높아지는가?--&gt; 그래프를 그려서 생각해라
학습이 
<img src="https://velog.velcdn.com/images/joseph1129/post/8c8fd23e-5e89-47d6-ad77-5ad260b43b7a/image.png" alt="">
매번 센텐스가 주어질 때마다 가장 높은 확률을 타겟을 return하도록 한다. 또한 beam search기법을 활용하여 eos가 나올 떄까지의 가장 높은 확률을 고르며 토큰을 이어 붙인다. 통계적 접근 중 rescoring에서 저 기법을 사용한다.</p>
<p><img src="https://velog.velcdn.com/images/joseph1129/post/12f982af-16c0-45a1-b3bc-873c026cb3ae/image.png" alt="">
<img src="https://velog.velcdn.com/images/joseph1129/post/f4ab3e40-94ae-4f1a-80e2-1d447c8ecc38/image.png" alt="">
<img src="https://velog.velcdn.com/images/joseph1129/post/9c113f25-ebec-439e-884e-e3e18268d5cd/image.png" alt=""></p>
<p>로그확률 합은 길어질수록(곱이 많아질수록) 더 작아지기 쉬워서, 빔서치가 짧은 문장을 과도하게 선호하는 편향이 있지 않을까? 하는 생각 같이 생각나누기!!</p>
<h1 id="model-analysis">Model Analysis</h1>
<p><img src="https://velog.velcdn.com/images/joseph1129/post/9526f517-cb12-4d9c-b447-f3240463a17a/image.png" alt="">
<img src="https://velog.velcdn.com/images/joseph1129/post/0d5fdd95-247b-42d9-b20b-dc6c406fda63/image.png" alt=""></p>
<h1 id="conclusion">Conclusion</h1>
<ol>
<li>LSTm을 깊게 쌓아서 기존의 통계적 선택 기법에 비해 성능이 좋았다는 것을 보여줌</li>
<li>입력 단어 순서를 바꾸는 것이 기존 그대로 이용하는 것보다 좋은 성능을 보일 수 있다.</li>
<li>LSTM기반의 디코더를 거쳐 번역을 만들어 성능을 높인다. </li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding]]></title>
            <link>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-BERT-Pre-training-of-Deep-Bidirectional-Transformers-for-Language-Understanding</link>
            <guid>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-BERT-Pre-training-of-Deep-Bidirectional-Transformers-for-Language-Understanding</guid>
            <pubDate>Tue, 30 Sep 2025 07:42:28 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><strong>논문 출처:</strong> <a href="https://arxiv.org/pdf/1810.04805">https://arxiv.org/pdf/1810.04805</a></p>
</blockquote>
<p>Devlin, Jacob, et al. &quot;Bert: Pre-training of deep bidirectional transformers for language understanding.&quot; Proceedings of the 2019 conference of the North American chapter of the association for computational linguistics: human language technologies, volume 1 (long and short papers). 2019.</p>
<h1 id="0-abstract">0. Abstract</h1>
<p>이 논문에서는 BERT(Bidirectional Encoder Representations from Transformers)라 불리는 새로운 언어 표현 모델을 소개한다. BERT는 모든 층에서 좌우 문맥을 공동으로 조건화함으로써 비지도 학습 기반의 깊은 양방향 표현을 사전 학습하도록 설계되었다.</p>
<p>그 결과, 사전 학습된 BERT 모델은 단 하나의 <strong>추가 출력 층</strong>만으로도 다양한 작업(예: 질의 응답, 언어 추론)에 대해 높은 성능을 달성할 수 있으며, 특정 작업에 특화된 아키텍처의 대규모 변경 없이도 가능하다.</p>
<p>BERT는 다음을 포함한 11개의 자연어 처리 작업에서 새로운 최첨단 결과를 달성하였다:</p>
<ul>
<li>GLUE 점수: 80.5% (7.7%포인트 향상)</li>
<li>MultiNLI 정확도: 86.7% (4.6%포인트 향상)</li>
<li>SQuAD v1.1 테스트 F1: 93.2 (1.5포인트 향상)</li>
<li>SQuAD v2.0 테스트 F1: 83.1 (5.1포인트 향상)</li>
</ul>
<blockquote>
<p><strong>앞뒤 문맥을 동시에 고려하는 BERT는, 사전학습만 잘 해두면 거의 모든 언어 작업을 쉽게 해낼 수 있다.</strong></p>
</blockquote>
<hr>
<h1 id="1-introduction">1. Introduction</h1>
<p><img src="https://velog.velcdn.com/images/hsyoo826/post/10c435a5-d2fe-49bd-9acd-e1dca28ae370/image.png" alt=""></p>
<p>언어 모델 <strong>사전 학습</strong>은 다양한 자연어 처리 작업의 성능을 향상시키는 데 효과적인 것으로 입증되었다.</p>
<p>여기에는 문장 전체를 분석하여 문장 간 관계를 예측 <strong>문장 수준 작업</strong>과, <strong>토큰 수준 작업</strong>이 포함된다</p>
<blockquote>
</blockquote>
<ul>
<li>*<em>문장 수준 *</em>
예: 자연어 추론(NLI), 패러프레이징</li>
<li><em>→ 문장 간의 관계를 파악하는 작업*</em><blockquote>
</blockquote>
</li>
<li>*<em>토큰 수준 *</em>
예: 개체명 인식(NER), 질의응답(QA)<blockquote>
<p><strong>→ 문장에서 특정 단어(토큰)에 대한 정밀한 판단이 필요한 작업</strong></p>
</blockquote>
</li>
</ul>
<p>사전 학습된 언어 표현을 다운스트림 작업에 적용하는 기존 전략은 두 가지가 있다: <strong>특징 기반 접근법</strong>과 <strong>파인튜닝 접근법</strong>이다.</p>
<blockquote>
</blockquote>
<ul>
<li><strong>특징 기반 접근법</strong>: 사전 학습된 표현을 추가적인 입력 특성으로 사용하며, 작업별로 <strong>별도의 아키텍처</strong>를 설계한다.<blockquote>
<p>** ex) ELMo**</p>
<ul>
<li><strong>파인튜닝 방식</strong>: 작업별로 최소한의 파라미터만 추가하고, 사전 학습된 모든 파라미터를 그대로 파인튜닝하여 다운스트림 작업에 적용한다.</li>
</ul>
</blockquote>
</li>
<li><em>ex) OpenAI GPT*</em></li>
</ul>
<p>이 두 접근법은 사전 학습 단계에서 <strong>같은 목적 함수</strong>를 사용하며, 일반적으로 <strong>단방향 언어 모델</strong>을 통해 일반적인 언어 표현을 학습한다.</p>
<blockquote>
<p>“같은 목적 함수를 사용한다” → <strong>사전학습할 때 둘 다 단방향 언어모델링(다음 단어 예측)</strong>이라는 동일한 학습 문제를 풀었다는 뜻</p>
</blockquote>
<p>그러나 기존 방식들, 특히 파인튜닝 기반 접근법은 사전학습된 표현의 잠재력을 제한하는 <strong>한계</strong>가 있다.</p>
<p>그 핵심 원인은 대부분의 언어 모델이 <strong>단방향 구조</strong>를 따르기 때문인데, 이로 인해 사전학습 단계에서 사용할 수 있는 모델 구조가 제한된다.</p>
<p>예를 들어, OpenAI GPT는 <strong>왼쪽에서 오른쪽</strong>으로만 문맥을 바라보는 구조를 채택했다.
이 구조에서는 트랜스포머의 self-attention 계층에서 각 토큰이 자신 앞에 있는 단어들만 참고할 수 있다.</p>
<blockquote>
<p>❌ <strong>문제점</strong>
<strong>1). 문장 수준 작업에 비효율적</strong></p>
</blockquote>
<p>자연어 추론(NLI)처럼 문장 전체 의미를 파악해야 하는 작업에선
한쪽 방향 정보만 보면 정확한 판단이 어렵다.</p>
<blockquote>
</blockquote>
<p><strong>2) 토큰 수준 작업에는 더 치명적</strong>
예를 들어 질의응답(QA)에서는 &quot;정답이 왼쪽에 있는지, 오른쪽에 있는지&quot; 모르는 상황이 많은데,GPT 같은 구조는 반쪽짜리 문맥만 보기 때문에 성능에 한계가 생긴다.</p>
<p>이 논문에서는 이러한 파인튜닝 기반 접근법을 개선하기 위해 <strong>BERT</strong>를 제안한다.</p>
<p>BERT는 <strong>Masked Language Model, MLM</strong>이라는 사전 학습 목적 함수를 사용함으로써 앞서 언급한 단방향 제약을 완화한다.</p>
<blockquote>
<p>✨ <strong>해결책</strong>
<strong>1).Masked Language Model (MLM)</strong></p>
</blockquote>
<p>기존처럼 단방향으로만 보는 게 아니라, 입력 문장에서 일부 단어를 마스킹하고, 양쪽 문맥을 모두 활용해 해당 단어를 맞추는 방식으로 학습
→ 이걸 통해 Transformer 전체를 <strong>깊은 양방향</strong>으로 사전학습할 수 있게 된다,</p>
<blockquote>
</blockquote>
<p>2). <strong>Next Sentence Prediction (NSP)</strong></p>
<blockquote>
</blockquote>
<p>문장 간 관계도 미리 학습시키기 위해, &quot;다음 문장이 실제로 이어지는 문장인가?&quot;를 맞추는 이진 분류 태스크도 함께 학습한다.</p>
<p>본 논문의 주요 기여는 다음과 같다:</p>
<ul>
<li><strong>양방향 학습의 중요성 강조</strong>
-GPT처럼 단방향이 아니라, MLM을 통해 진짜 양방향 표현 학습을 가능하게 함
-기존 모델들과 확실히 차별화됨</li>
</ul>
<ul>
<li><p><strong>복잡한 모델 설계 필요 없음</strong></p>
</li>
<li><p><strong>사전 학습된 표현</strong>이 고도로 설계된 작업별 아키텍처에 대한 의존을 줄일 수 있음을 보여준다.</p>
</li>
<li><p><strong>성능 향상</strong></p>
</li>
<li><p>BERT는 파인튜닝 기반의 표현 학습 모델 중 최초로, 다양한 문장 수준 및 토큰 수준 작업에서 최첨단 성능을 달성했으며, 많은 작업별 전용 아키텍처들을 능가했다.</p>
</li>
<li><p>BERT는 총 11개의 NLP 작업에서 최신 성능을 갱신했다.</p>
</li>
</ul>
<hr>
<h1 id="2-related-work">2 Related Work</h1>
<p>일반적인 언어 표현을 사전학습 하는 연구는 오랜 역사를 가지고 있으며, 이 절에서는 가장 널리 사용되는 접근법들을 간단히 정리한다.</p>
<h2 id="21-unsupervised-feature-based-approaches">2.1 Unsupervised Feature-based Approaches</h2>
<p>단어의 <strong>범용적이고 널리 적용 가능한 표현</strong>을 학습하는 것은 수십 년간 활발히 연구되어온 주제다.
이에는 <strong>비신경망 기반 기법</strong>과 <strong>신경망 기반 기법</strong> 모두 포함된다.</p>
<p>사전학습된 단어 임베딩은  초기화 없이 훈련한 임베딩에 비해 <strong>상당한 성능 향상</strong>을 제공한다</p>
<p>이러한 단어 임베딩 벡터를 사전학습하기 위해 사용된 목적 함수는 아래와 같다.</p>
<blockquote>
<ul>
<li><strong>왼쪽에서 오른쪽 방향의 언어 모델링</strong></li>
<li><strong>좌우 문맥을 기반으로 올바른 단어와 틀린 단어를 구분하는 목적 함수</strong></li>
</ul>
</blockquote>
<p>이러한 접근법은 단어만으로는 문맥을 표현하기 어려우니,더 큰 단위인 <strong>문장 임베딩</strong>이나 <strong>문단 임베딩</strong>으로 발전했다.</p>
<p>문장 표현을 훈련하기 위해 다음과 같은 방법들이 사용되어 왔다:</p>
<table>
<thead>
<tr>
<th>방법</th>
<th>설명</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Skip-Thoughts</strong></td>
<td>이전 문장을 보고 다음 문장을 생성</td>
</tr>
<tr>
<td><strong>Quick-Thoughts</strong></td>
<td>다음 문장을 맞히는 순위 예측 문제</td>
</tr>
<tr>
<td><strong>Paragraph Vector</strong></td>
<td>문단 전체를 하나의 벡터로 표현</td>
</tr>
<tr>
<td><strong>Denoising Autoencoder</strong></td>
<td>문장에 노이즈를 넣고 원래 문장 복원</td>
</tr>
</tbody></table>
<p>ELMo 및 그 전신 모델은 기존 단어 임베딩 연구를 <strong>다른 차원</strong>으로 일반화한 것이다.
-&gt; 단어를 문맥에 따라 다르게 표현할 수 있다</p>
<blockquote>
<p>예: “play”는 밴드에서 쓰이면 악기 뜻, 경기에서 쓰이면 스포츠 동사
→ 문맥에 따라 벡터가 달라짐</p>
</blockquote>
<p><strong>ELMo의 구조</strong></p>
<ul>
<li>왼쪽→오른쪽 LSTM + 오른쪽→왼쪽 LSTM → 각각 따로 훈련</li>
<li>각 토큰의 표현 = 두 방향 결과를 붙여서 사용
→ 하지만 여전히 완전히 양방향 학습은 아님 </li>
</ul>
<p>이러한 문맥 단어 임베딩을 기존의 작업별 아키텍처에 통합했을 때,
ELMo는 여러 주요 NLP 벤치마크에서 <strong>최첨단 성능</strong>을 달성했다 </p>
<p>여기에는 다음과 같은 작업들이 포함된다:</p>
<ul>
<li>질의응답 </li>
<li>감성 분석 </li>
<li>개체명 인식</li>
</ul>
<p><strong>그 외 다양한 시도들</strong></p>
<ul>
<li><strong>Melamud et al. (2016)</strong>
→ 좌우 문맥을 기반으로 중간 단어를 예측하는 task
→ 이 모델도 feature-based였고, 깊은 양방향 구조는 아님.</li>
</ul>
<table>
<thead>
<tr>
<th>구분</th>
<th>특징 기반 (Feature-based)</th>
<th>깊은 양방향 (Deeply Bidirectional)</th>
</tr>
</thead>
<tbody><tr>
<td>대표 예시</td>
<td><strong>ELMo</strong></td>
<td><strong>BERT</strong></td>
</tr>
<tr>
<td>구조</td>
<td>좌→우, 우→좌 <strong>따로 훈련</strong></td>
<td>한 모델에서 <strong>좌우 동시에 학습</strong></td>
</tr>
<tr>
<td>문맥 처리</td>
<td>양쪽 문맥을 <strong>나눠서 보고</strong> 나중에 결합</td>
<td>문맥을 <strong>한 번에 양방향으로</strong> 처리</td>
</tr>
<tr>
<td>표현 방식</td>
<td>L2R 벡터 + R2L 벡터 → concat</td>
<td>전체 문장을 한 번에 보고 토큰 임베딩 생성</td>
</tr>
<tr>
<td>파인튜닝 방식</td>
<td>기존 모델에 <strong>임베딩만 추가</strong></td>
<td>전체 모델을 <strong>통째로 fine-tuning</strong></td>
</tr>
<tr>
<td>한계</td>
<td>좌우 정보가 <strong>완전히 통합되지 않음</strong></td>
<td>진짜 의미의 <strong>양방향 이해 가능</strong></td>
</tr>
</tbody></table>
<ul>
<li><strong>Fedus et al. (2018)</strong>
→ Cloze task (빈칸 채우기)를 활용해 텍스트 생성 모델의 견고성 향상</li>
</ul>
<h2 id="22-unsupervised-fine-tuning-approaches">2.2 Unsupervised Fine-tuning Approaches</h2>
<p><img src="https://velog.velcdn.com/images/hsyoo826/post/ee987b38-dbbd-418e-83c7-bfce4404d118/image.png" alt=""></p>
<p>기존의 feature-based 접근법과 마찬가지로, 초기의 연구들은 비지도 텍스트에서 <strong>단어 임베딩 파라미터만을 사전학습</strong>하는 데 집중했다 </p>
<p>이후에는 더 발전된 방식으로,문장 또는 문서 인코더가 등장했는데,</p>
<blockquote>
</blockquote>
<ol>
<li><strong>문맥 기반 토큰 표현</strong>을 </li>
<li><strong>비라벨 데이터로 사전학습</strong>한 뒤,<blockquote>
<ol start="3">
<li>라벨이 있는 다운스트림 작업에 <strong>fine-tuning</strong>하는 흐름으로 발전</li>
</ol>
</blockquote>
</li>
</ol>
<p>이 접근법의 장점은, 처음부터 새로 학습해야 할 파라미터 수가 적다는 점이다. 이러한 이점 덕분에, OpenAI GPT는 GLUE benchmark의 여러 문장 수준 태스크에서 <strong>기존 최고 성능</strong>을 달성할 수 있었다.</p>
<p>이러한 모델들을 사전학습하는 데에는 아래와 같은 방식 사용</p>
<blockquote>
</blockquote>
<ul>
<li><strong>Left-to-right language modeling</strong>
→ 문장을 왼쪽에서 오른쪽으로 순차적으로 예측</li>
<li>** Autoencoder 기반 학습**
→ 문장 구조를 복원하거나 중간 단어를 예측하는 방식</li>
</ul>
<h2 id="23-transfer-learning-from-supervised-data">2.3 Transfer Learning from Supervised Data</h2>
<p>대규모 supervised learning 데이터셋을 활용한 태스크로부터 <strong>전이 학습</strong>이 효과적이라는 연구들도 있다.</p>
<blockquote>
<p><strong>전이학습</strong>: 기존에 학습된 모델이 습득한 표현/지식을 유사하거나 전혀 다른 태스크에 적용함으로써 모델의 일반화 성능을 높이고 학습 효율을 개선하는 기술</p>
</blockquote>
<p>예를 들어,</p>
<ul>
<li>자연어 추론</li>
<li>기계 번역
같은 과제에서 감독 데이터로 훈련된 모델을 다른 작업에 전이하는 방식이다.</li>
</ul>
<p>컴퓨터 비전 분야에서도 전이 학습의 중요성이 여러 차례 입증되었으며,ImageNet으로 사전학습된 모델을 다른 비전 태스크에 <strong>파인튜닝</strong>하는 방식이 효과적인 접근법으로 자리잡았다.</p>
<hr>
<h1 id="3-bert">3. BERT</h1>
<p>이 절에서는 BERT와 그 구현 세부사항을 소개한다.</p>
<p>프레임워크는 두 단계로 구성된다:** ① Pre-training<strong>, **② Fine-tuning</strong></p>
<blockquote>
</blockquote>
<ul>
<li><strong>사전학습</strong> 단계에서는 모델이 다양한 사전학습 과제에 대해 unlabeled 데이터를 사용하여 학습된다.<blockquote>
<ul>
<li><strong>파인튜닝</strong> 단계에서는 사전학습된 파라미터로 초기화된 BERT 모델을, 다운스트림 작업의 라벨이 있는 데이터로 모든 파라미터를 파인튜닝한다.</li>
</ul>
</blockquote>
</li>
</ul>
<p>모든 다운스트림 태스크는 같은 사전학습된 파라미터로 초기화되지만,
태스크마다 개별적으로 파인튜닝된 모델을 가진다.</p>
<p>✅ BERT의 뚜렷한 특징 중 하나는, <strong>다양한 task에 대해 동일한 아키텍처를 사용할 수 있다는 점</strong>이다.
-&gt; 사전학습 시의 모델 구조와 다운스트림 태스크 시의 구조가 거의 동일하다.</p>
<blockquote>
<p><strong>시작점도 같고 구조도 같지만, 각 태스크에서 따로 훈련하니까 결과 모델은 달라진다.
구조(아키텍처)는 동일하고, 파라미터는 파인튜닝으로 달라지는 것!</strong></p>
</blockquote>
<h4 id="하이퍼파라미터-표기">하이퍼파라미터 표기</h4>
<ul>
<li><strong>Transformer 층 수</strong>: L</li>
<li>** 히든 사이즈:** H</li>
<li><strong>self-attention 헤드 수</strong>: A</li>
</ul>
<p>이 논문에서는 다음 두 가지 BERT 모델 크기에 대해 결과를 보고한다:</p>
<table>
<thead>
<tr>
<th>모델</th>
<th>L</th>
<th>H</th>
<th>A</th>
<th>총 파라미터 수</th>
</tr>
</thead>
<tbody><tr>
<td><strong>BERTBASE</strong></td>
<td>12</td>
<td>768</td>
<td>12</td>
<td>110M</td>
</tr>
<tr>
<td><strong>BERTLARGE</strong></td>
<td>24</td>
<td>1024</td>
<td>16</td>
<td>340M</td>
</tr>
</tbody></table>
<p>중요한 차이점은 다음과 같다:
BERT는 <strong>양방향 self-attention</strong>을 사용하는 반면, GPT는** 좌측 문맥만을 참고하는 제한된 self-attention**을 사용한다.</p>
<h3 id="inputoutput-representations">Input/Output Representations</h3>
<p>BERT가 다양한 다운스트림 태스크를 처리할 수 있도록 하기 위해,
입력 표현 방식은 <strong>단일 문장</strong>과 <strong>문장 쌍</strong>을 하나의 토큰 시퀀스로 명확히 표현할 수 있도록 설계되었다.</p>
<p>이 논문에서 <strong>&quot;문장&quot;</strong>이란, 단순히 <strong>연속된 텍스트</strong>를 의미한다. <strong>&quot;시퀀스&quot;</strong>는 BERT에 입력되는 <strong>토큰 시퀀스 전체</strong>를 뜻하며, 하나의 문장 또는 두 문장이 결합된 형태일 수 있다.
<strong>-&gt; BERT는 &quot;문장 1개&quot;든, &quot;문장 2개&quot;든 모두 하나의 입력으로 만들어서 처리할 수 있다.</strong></p>
<p>BERT는 <strong>WordPiece 임베딩</strong>을 사용하며, 30,000개의 토큰vocabulary를 기반으로 한다.</p>
<blockquote>
</blockquote>
<ul>
<li>모든 시퀀스의 첫 토큰은 항상 <strong>[CLS]</strong>라는 특수한 분류 토큰이다.</li>
<li>이 토큰에 해당하는 최종 hidden state는 <strong>분류 작업에서 시퀀스 전체의 표현</strong>으로 사용된다.</li>
<li><em>-&gt; 분류할 때는 [CLS] 토큰의 출력 벡터 하나만 보고 전체 문장을 판단*</em></li>
</ul>
<p>문장 쌍 입력 시, 두 문장을 하나의 시퀀스로 결합하고
두 가지 방식으로 구분한다:</p>
<ul>
<li>두 문장 사이에 <strong>특수 토큰 [SEP]</strong>을 삽입한다.</li>
<li>각 토큰마다 해당 토큰이 문장 A에 속하는지, 문장 B에 속하는지를 나타내는 학습 가능한 <strong>segment embedding</strong>을 더해준다.</li>
</ul>
<p>각 입력 토큰의 벡터 표현은 다음 세 가지를 더해서 만든다:</p>
<p><img src="https://velog.velcdn.com/images/hsyoo826/post/aed6a704-7fb3-433b-9a19-db79a9c3970e/image.png" alt=""></p>
<ul>
<li>WordPiece Embedding : 실질적인 입력이 되는 워드 임베딩. 임베딩 벡터의 종류는 단어 집합의 크기로 30,522개.</li>
<li>Position Embedding : 위치 정보를 학습하기 위한 임베딩. 임베딩 벡터의 종류는 문장의 최대 길이인 512개.</li>
<li>Segment Embedding : 두 개의 문장을 구분하기 위한 임베딩. 임베딩 벡터의 종류는 문장의 최대 개수인 2개.</li>
</ul>
<h2 id="31-pre-training-bert">3.1 Pre-training BERT</h2>
<p>이 논문에서는 BERT를 사전 학습할 때 전통적인 좌→우 또는 우→좌 언어 모델을 사용하지 않았다.
대신, 이 섹션에서 설명할 두 가지 <strong>비지도 학습 기반 과제</strong>를 통해 BERT를 사전 학습했다. </p>
<h3 id="✅-task-1-masked-lm-mlm">✅ Task #1: Masked LM (MLM)</h3>
<p>기존 언어 모델(좌→우, 우→좌)은 단방향이라 한계가 있다.
→ 진짜 &quot;양방향 문맥&quot;을 활용하려면, 단어 예측할 때 양쪽 다 봐야 됨.</p>
<p>⚠️
그러나 양방향으로 문장을 보면서 단어를 예측하면...
모델이 답을 미리 보고 맞추게 됨→ 학습 무의미</p>
<p>💡 <strong>해결책</strong>
그래서 진짜 양방향 표현을 학습할 수 있게 하기 위해,단어를 ‘가려서’ 예측하게 만들자!</p>
<p>→ <strong>Masked LM (MLM)</strong> 등장
: <strong>입력 토큰 중 일부를 무작위로 가리고(Mask), 그 가려진 단어를 예측하는 방식</strong>을 사용하는 방식.</p>
<ul>
<li>입력 문장에서 <strong>WordPiece 토큰 중 15%</strong>를 무작위로 선택해 마스킹</li>
</ul>
<p>이 방식 덕분에 양방향 표현을 학습할 수 있게 되었지만, <strong>하나의 단점</strong>도 있다:</p>
<blockquote>
</blockquote>
<p>→ 사전 학습에는 <code>[MASK]</code> 토큰을 쓰는데,
→ <strong>실제 다운스트림 파인튜닝할 때는 <code>[MASK]</code>가 등장하지 않기 때문에</strong>,</p>
<blockquote>
<p>→ <strong>사전 학습과 파인튜닝 간에 불일치가 생긴다.</strong></p>
</blockquote>
<p>이 문제를 줄이기 위해, 마스킹 방식은 아래처럼 세 가지로 랜덤하게 처리:</p>
<ul>
<li><strong>80% 확률</strong>로 <code>[MASK]</code> 토큰으로 바꾸고</li>
<li><strong>10% 확률</strong>로 무작위 단어(random token)로 바꾸고</li>
<li><strong>10% 확률</strong>로 그냥 원래 단어를 유지한다</li>
</ul>
<p>이후, </p>
<ol>
<li>[MASK]가 있던 자리에 대해 BERT는 그 위치의 벡터(T_i)를 만들어내고,</li>
<li>이걸 가지고 전체 단어 목록 중에서 가장 가능성 높은 단어를 <strong>softmax</strong>로 예측한다.</li>
<li>그 다음, 이 예측 결과가 실제 정답이랑 얼마나 다른지를 <strong>cross-entropy loss</strong>로 계산해서,</li>
<li>틀린 만큼 모델이 더 똑똑해지도록 파라미터를 업데이트</li>
</ol>
<hr>
<h3 id="✅-task-2next-sentence-prediction-nsp">✅ Task #2:Next Sentence Prediction, NSP</h3>
<p>질문 응답, 자연어 추론 등 <strong>중요한 많은 다운스트림 작업들</strong>은
두 문장 간의 관계 이해가 필수적인데, 이는 단순한 언어 모델링만으로는 직접적으로 학습되지 않는다.</p>
<p>그래서 BERT는 두 문장의 연결 관계를 학습할 수 있도록 <strong>NSP</strong>라는 이진 분류 태스크를 설계했다.</p>
<p>이 NSP 데이터는 단일 코퍼스로부터 아주 쉽게 생성할 수 있다.
구체적으로, 매 사전 학습 샘플마다 문장 A와 B를 선택할 때:</p>
<ul>
<li><strong>50% 확률로</strong> B는 A 다음에 실제로 등장하는 문장 (라벨: <code>IsNext</code>)</li>
<li><strong>50% 확률로</strong> B는 완전 랜덤한 문장 (라벨: <code>NotNext</code>)</li>
</ul>
<p>비록 이 task는 단순해 보일 수 있지만,  <strong>QA와 NLI 성능에 큰 영향을 준다.</strong></p>
<p>기존 연구는 <strong>sentence embedding만</strong>을 전달했던 반면,
<strong>BERT는 전체 모델 파라미터 자체를 다운스트림 task에 그대로 전달</strong>한다는 점에서 다르다.</p>
<hr>
<h3 id="✅-사전-학습-데이터">✅ 사전 학습 데이터</h3>
<p>BERT는 언어 모델 사전 학습에 관한 기존 연구들을 전반적으로 따랐다.
사전 학습에 사용한 데이터는 다음과 같다:</p>
<ul>
<li><strong>BooksCorpus</strong> (8억 단어) </li>
<li><strong>영어 위키백과</strong> (25억 단어)</li>
</ul>
<p>이때 중요한 건,
<strong>문서 단위로 구성된 코퍼스를 사용하는 것이 필수적</strong>이라는 점이다.
<strong>-&gt; NSP는 문장 간 관계를 학습하는 과제이기 때문에, 문장 단위로 랜덤하게 섞인 데이터는 부적절</strong></p>
<h2 id="32-fine-tuning-bert">3.2 Fine-tuning BERT</h2>
<p>Transformer의 <strong>셀프 어텐션 메커니즘</strong> 덕분에, BERT는 단일 문장이든 문장 쌍이든 다양한 다운스트림 태스크를 유연하게 처리할 수 있기 때문에 fine-tuning은 매우 간단하다.</p>
<p><strong>→ 즉, 입력과 출력 구조만 태스크에 맞게 바꿔주면, 파인튜닝은 그냥 그대로 전체 모델을 학습시키면 된다.</strong></p>
<p>문장 쌍이 필요한 태스크에서는, 기존 방식대로라면 <strong>문장 A와 문장 B를 각각 따로 인코딩한 다음</strong>, 그 후에 서로 정보를 주고받는 <strong>양방향 교차 어텐션</strong>을 적용하는 게 일반적이다.</p>
<p>하지만 BERT는 이 두 단계를 <strong>하나로 통합</strong>한다.
→ 문장 A와 B를 단순히 이어붙여서 Transformer에 입력하면, <strong>셀프 어텐션</strong>이 자동으로 <strong>양방향 교차 어텐션 역할까지 해준다.</strong>
→ 즉, 문장 A의 토큰은 문장 B의 모든 토큰을 참고하고, 그 반대도 마찬가지</p>
<table>
<thead>
<tr>
<th>항목</th>
<th>기존 방식 (예: Parikh et al., Seo et al.)</th>
<th>BERT 방식</th>
</tr>
</thead>
<tbody><tr>
<td>문장 쌍 처리</td>
<td>A, B 각각 인코딩 → Cross-Attention</td>
<td>A와 B를 그냥 이어붙임 → Self-Attention 하나로 처리</td>
</tr>
<tr>
<td>교차 정보 교환</td>
<td>별도 어텐션 필요</td>
<td>스스로 양방향 참고함</td>
</tr>
</tbody></table>
<hr>
<p><strong>각 태스크에서는 다음과 같이 진행한다:</strong></p>
<p><img src="https://velog.velcdn.com/images/hsyoo826/post/35d771b7-f378-49e4-86a4-1a86777209b3/image.png" alt=""></p>
<ul>
<li><p>입력 단계에서는, 사전학습에서 사용했던 문장 A와 B 쌍이 다음과 같이 사용된다:</p>
<ol>
<li>문장 유사도 분석 (paraphrasing) → 문장 쌍</li>
<li>자연어 추론 (NLI) → 가설(hypothesis)-전제(premise) 쌍</li>
<li>질의응답 (QA) → 질문(question)-지문(passage) 쌍</li>
<li>문장 분류 또는 시퀀스 태깅 → 사실상 문장 하나 (문장 B 없음)</li>
</ol>
</li>
<li><p>출력 단계에서는 다음처럼 나뉜다:</p>
<ul>
<li><strong>토큰 단위 출력이 필요한 작업</strong>은 → 각 토큰에 대한 표현을 그대로 출력층에 보낸다. ex) 시퀀스 태깅/ 질문 응답</li>
<li><strong>전체 문장 판단이 필요한 작업</strong>은 → <code>[CLS]</code> 토큰의 표현을 출력층에 보낸다. ex) 감성 분석/문장 분류</li>
</ul>
</li>
</ul>
<p><strong>사전학습과 비교했을 때</strong>, 파인튜닝은 훨씬 가볍고 빠르다.
→ 이 논문에서 제시한 모든 결과는 단 한 대의 Cloud TPU로 <strong>1시간 이내</strong>, 혹은 일반 GPU로 <strong>몇 시간 내에</strong> 재현 가능하다.</p>
<hr>
<h1 id="4-experiments">4. Experiments</h1>
<p><img src="https://velog.velcdn.com/images/hsyoo826/post/2cd14681-1f16-45e9-8a76-2911a8a9340c/image.png" alt=""></p>
<p>GLUE 벤치마크는 다양한 자연어 이해 태스크로 구성된 평가 셋이다. </p>
<p>BERT를 GLUE에 파인튜닝할 때는,아래와 같이 입력 시퀀스를 구성한다:</p>
<ul>
<li>단일 문장 또는 문장 쌍을 입력</li>
</ul>
<pre><code>예) [CLS] 문장 A [SEP] 문장 B [SEP]</code></pre><p>이 중 [CLS] 토큰에 해당하는 최종 hidden vector C ∈ ℝᴴ를 사용해 <strong>전체 시퀀스를 대표하는 벡터</strong>로 간주한다.</p>
<h4 id="파인튜닝-구조">파인튜닝 구조</h4>
<ul>
<li><p>분류 계층만 추가됨:
가중치 행렬 W ∈ ℝᴷˣᴴ (K는 라벨 수, H는 hidden size)</p>
</li>
<li><p>분류 방식:
log(softmax(CWᵀ)) 형태로 분류 손실을 계산 (Cross-Entropy Loss)</p>
</li>
</ul>
<h4 id="학습-설정">학습 설정</h4>
<ul>
<li>배치 크기: 32</li>
<li>전체 학습 횟수 (epoch): 3</li>
<li>학습률:
→ 검증셋에서 성능이 가장 좋은 값을 선택함
→ 후보 값: 5e-5, 4e-5, 3e-5, 2e-5</li>
</ul>
<p>BERT-LARGE의 경우, 일부 데이터셋이 작으면 파인튜닝이 불안정한 경우가 있었기 때문에, 저자는 여러 번의 랜덤 초기화로 실험을 반복한 후, 검증셋에서 가장 좋은 성능을 낸 모델을 선택하였다.</p>
<p>이때 사용하는 랜덤 초기화는, 동일한 사전 학습 모델 체크포인트를 유지하면서,</p>
<p>다음을 바꾸면서 실험 반복:</p>
<p>데이터 셔플 순서
분류 계층 초기화 방식</p>
<h4 id="결과-요약">결과 요약</h4>
<p>BERT-BASE와 BERT-LARGE는 모든 태스크에서 기존 최고 성능 모델을 크게 능가하는 성과를 보였다.</p>
<p>평균 정확도 기준으로, 기존 최고 성능보다 각각 <strong>4.5%, 7.0%</strong> 향상된 결과를 얻었다.</p>
<p>(참고로, BERT-BASE와 OpenAI GPT는 구조상 거의 동일한 모델이지만, 어텐션 마스킹 방식만 다르다.) </p>
<p>가장 크고 널리 사용되는 GLUE 태스크인 MNLI에서는,
→ BERT가 기존보다 4.6% 정확도 향상을 기록했다.</p>
<p>GLUE 공식 리더보드에 따르면:</p>
<ul>
<li>BERT-LARGE: 80.5점</li>
<li>OpenAI GPT: 72.8점</li>
</ul>
<hr>
<p>저자는 BERT-LARGE가 BERT-BASE보다 모든 태스크에서 성능이 뛰어나다는 것을 확인했다.
특히, 훈련 데이터가 매우 적은 태스크일수록 성능 차이가 더 두드러졌다.</p>
<h2 id="42-squadv11">4.2 SQuADv1.1</h2>
<p><strong>SQuADv1.1</strong>은 약 <strong>10만 개의 질문-답변 쌍</strong>으로 구성된 데이터셋</p>
<p>→ 질문과 정답이 포함된 <strong>위키피디아 문단</strong>이 주어지면,
→ 그 문단 안에서 <strong>정답이 어디서부터 어디까지인지</strong>(텍스트 범위)를 예측하는 게 목표.</p>
<blockquote>
</blockquote>
<p>ex)
문단: “나폴레옹은 1769년 프랑스 코르시카에서 태어났다…”
질문: “나폴레옹은 어디서 태어났어?”
정답: “프랑스 코르시카”</p>
<hr>
<p>질문 + 문단을 하나의 시퀀스로 붙여서 입력한다.</p>
<ul>
<li>이때 질문 부분에는 Segment A 임베딩을,</li>
<li>문단 부분에는 Segment B 임베딩을 적용한다.</li>
</ul>
<p>파인튜닝 과정에서는 다음 두 개의 벡터만 새로 추가한다:</p>
<ul>
<li>시작 위치를 예측하기 위한 벡터 S (Start vector) ∈ ℝᴴ</li>
<li>끝 위치를 예측하기 위한 벡터 E (End vector) ∈ ℝᴴ</li>
</ul>
<hr>
<h4 id="예측-방식">예측 방식</h4>
<ul>
<li><p>어떤 단어 i가 정답의 시작일 확률은
→ S · Ti (점곱),
→ 그다음 문단 전체 단어에 대해 softmax 수행:
끝 단어에 대해서도 같은 방식으로 계산.</p>
</li>
<li><p>시작 위치 i, 끝 위치 j에 대해
→ 점수는 S · T_i + E · T_j로 계산된다.</p>
</li>
<li><p>가능한 모든 (i ≤ j) 조합 중에서
→ 이 점수가 가장 높은 위치를 <strong>정답 범위(span)</strong>로 예측한다.</p>
</li>
</ul>
<h4 id="학습-방식">학습 방식</h4>
<p>학습 목표: <strong>정답 시작 위치와 끝 위치를 정확히 맞추는 확률을 최대화</strong>하는 것.
-&gt;  <strong>정답 시작 위치의 로그 확률 + 끝 위치의 로그 확률</strong>을 더해서 loss를 줄여나감.</p>
<ul>
<li><p>하이퍼파라미터:</p>
<ul>
<li>에폭 수: 3</li>
<li>러닝레이트: 5e-5</li>
<li>배치 사이즈: 32</li>
</ul>
</li>
</ul>
<hr>
<h4 id="성능-결과">성능 결과</h4>
<p>앙상블 시스템 기준으로 리더보드 1위 모델보다 <strong>F1 점수 +1.5 향상</strong>, 단일 모델 기준으로도 +1.3 향상시켰다.
심지어 단일 BERT 모델이 기존 최고 앙상블 모델보다도 F1이 더 높다.</p>
<h2 id="43-squadv20">4.3 SQuADv2.0</h2>
<p><strong>SQuAD 2.0</strong> 과제는 SQuAD 1.1보다 <strong>더 현실적인 문제 정의</strong>를 가지고 있다.
SQuAD 2.0에서는 질문에 대해 <strong>주어진 문단에 정답이 없는 경우</strong>도 가능하다.</p>
<hr>
<p>저자는 기존 <strong>SQuAD v1.1용 BERT 모델</strong>을 아주 간단한 방식으로 확장했다:</p>
<ul>
<li><strong>정답이 존재하지 않는 질문</strong>은
→ 답변의 시작/끝 위치가 <strong><code>[CLS]</code> 토큰 위치</strong>라고 간주한다.</li>
</ul>
<p>즉, <strong>정답 없음 = 답변이 <code>[CLS]</code>에 위치</strong>한다고 생각하는 것이다.</p>
<hr>
<h4 id="확률-계산-방식">확률 계산 방식</h4>
<ul>
<li><p><strong>답변 범위의 시작과 끝 위치를 예측하는 확률 공간</strong>에
→ 기존 문단의 단어들뿐만 아니라, <strong><code>[CLS]</code> 위치도 포함</strong>시킨다.</p>
</li>
<li><p>예측할 때는 아래 두 점수를 비교한다:</p>
<ol>
<li><p><strong>정답 없음 (no-answer)</strong> 점수
→ $s_{\text{null}} = S \cdot C + E \cdot C$
→ 즉, <code>[CLS]</code> 위치에서의 시작 점수 + 끝 점수</p>
</li>
<li><p><strong>가장 점수가 높은 실제 정답 구간 (non-null span)</strong>
→ $s_{ij} = \max_{j \ge i} S \cdot T_i + E \cdot T_j$</p>
</li>
</ol>
</li>
<li><p>이 둘을 비교해서 아래 조건을 만족하면 <strong>정답이 있다</strong>고 예측한다:</p>
<p>$s_{ij} &gt; s_{\text{null}} + \tau$</p>
<p>여기서 $\tau$는 <strong>threshold (임계값)</strong>이다.</p>
</li>
</ul>
<hr>
<h4 id="학습-세부-설정">학습 세부 설정</h4>
<ul>
<li><p>총 <strong>2 에폭</strong> 동안 파인튜닝</p>
</li>
<li><p>러닝레이트: 5e-5</p>
</li>
<li><p>배치 사이즈: 48</p>
</li>
</ul>
<hr>
<h4 id="성능-결과-1">성능 결과</h4>
<p><img src="https://velog.velcdn.com/images/hsyoo826/post/e782e758-45c5-4d65-b7f7-adee4fc9271a/image.png" alt=""></p>
<p> 결과적으로, 이전 최고 성능 시스템 대비  <strong>F1 점수에서 +5.1포인트 향상</strong>을 기록했다.</p>
<hr>
<h2 id="44-swag">4.4 SWAG</h2>
<p><strong>SWAG(Situations With Adversarial Generations)</strong> 데이터셋은 <strong>총 113,000개의 문장 쌍 완성 예시</strong>로 구성되어 있으며, <strong>현실적인 상식 기반 추론 능력</strong>을 평가하는 데 사용된다 </p>
<p>주어진 문장 A가 있을 때,
→ 이어질 수 있는 <strong>4개의 문장 후보</strong> 중에서
→ <strong>가장 그럴듯한 문장 B를 선택</strong>하는 것이 과제다.</p>
<hr>
<h4 id="swag용-fine-tuning-방법">SWAG용 Fine-tuning 방법</h4>
<ul>
<li><p>학습할 때는, 각 선택지마다 <strong>총 4개의 입력 시퀀스</strong>를 구성한다.</p>
<ul>
<li><p>각각은 주어진 문장 A와 하나의 문장 B 후보를 <strong>연결</strong>한 것이다.</p>
<ul>
<li>즉, <code>Input = Sentence A + Sentence B</code></li>
</ul>
</li>
</ul>
</li>
<li><p>이 작업에서 <strong>추가로 도입된 task-specific 파라미터</strong>는 단 하나:</p>
<ul>
<li>바로 하나의 <strong>벡터</strong>인데, 이 벡터는 <code>[CLS]</code> 토큰의 표현 $C$과 <strong>내적</strong>을 계산하여</li>
<li>각 선택지에 대한 <strong>점수</strong>로 사용된다.</li>
</ul>
</li>
<li><p>이 점수는 소프트맥스를 통해 정규화되어 최종 확률로 변환된다.</p>
</li>
</ul>
<h4 id="학습-세팅">학습 세팅</h4>
<ul>
<li>학습은 총 <strong>3 에폭</strong> 동안 수행,</li>
<li>러닝레이트: <strong>2e-5</strong></li>
<li>배치 사이즈: <strong>16</strong></li>
</ul>
<hr>
<h4 id="성능-결과-2">성능 결과</h4>
<p><img src="https://velog.velcdn.com/images/hsyoo826/post/8e6797c1-9615-4d8c-ac13-e6390e678a6f/image.png" alt=""></p>
<ul>
<li><p><strong>BERT-LARGE</strong> 모델은</p>
<ul>
<li>논문 저자들이 제시한 기존 베이스라인인 <strong>ESIM + ELMo 시스템</strong>보다
→ <strong>+27.1%</strong> 높은 정확도를 기록했고,</li>
<li><strong>OpenAI GPT 모델</strong>보다도
→ <strong>+8.3%</strong> 더 높은 성능을 보여주었다.</li>
</ul>
</li>
</ul>
<hr>
<h1 id="5-ablationstudies">5. AblationStudies</h1>
<p>이 절에서는 BERT의 다양한 요소들에 대해 <strong>ablation experiments</strong>을 수행하여, 각 요소가 모델 성능에 얼마나 중요한지를 더 잘 이해하고자 한다.</p>
<h2 id="51-effect-of-pre-training-tasks">5.1 Effect of Pre-training Tasks</h2>
<p><strong>BERT의 깊은 양방향성</strong>의 중요성을 알기 위해 여기서는 동일한 사전학습 데이터, 파인튜닝 방식, 하이퍼파라미터를 사용한 두 가지 사전학습 목표를 비교 평가한다:</p>
<p><strong>① No NSP</strong>
→ MLM 은 그대로 사용
→ NSP 태스크는 제거한 양방향 모델.</p>
<p><strong>② LTR &amp; No NSP</strong>
→ &#39;왼쪽 문맥만 보는 Left-to-Right(LTR)&#39; 언어 모델로 훈련된 모델.
→ MLM 대신 일반적인 LTR 방식 사용.
→ 마찬가지로 NSP는 사용하지 않음.
→ 파인튜닝할 때도 왼쪽 방향만 보도록 강제: 그렇지 않으면 사전학습과 파인튜닝 간의 불일치로 인해 성능이 저하되기 때문에.</p>
<h4 id="▸-nsp-태스크의-효과">▸ NSP 태스크의 효과:</h4>
<p><img src="https://velog.velcdn.com/images/hsyoo826/post/e158970b-71c3-48f7-8277-1bbcee1b3ea4/image.png" alt=""></p>
<p>Table 5를 보면 NSP를 제거하면 <strong>QNLI, MNLI, SQuAD 1.1</strong> 태스크에서 성능이 <strong>현저히 하락</strong>하는 걸 볼 수 있다.
→ 즉, NSP는 생각보다 꽤 중요한 역할을 한다</p>
<hr>
<h4 id="▸-양방향-표현-학습의-효과">▸ 양방향 표현 학습의 효과:</h4>
<p>&quot;<strong>No NSP</strong>&quot;과 &quot;<strong>LTR &amp; No NSP</strong>&quot; 을 비교하면, LTR 모델은 <strong>모든 태스크에서 MLM 모델보다 성능이 떨어진다</strong>.
특히 <strong>MRPC</strong>와 <strong>SQuAD</strong>에서 큰 성능 하락이 발생함.</p>
<h4 id="▸-ltr-모델-성능-개선-시도">▸ LTR 모델 성능 개선 시도</h4>
<p>LTR 모델을 개선하기 위해, 위에 <strong>무작위 초기화된 BiLSTM을 추가</strong>해봤다.
→ 그 결과, <strong>SQuAD에서는 성능이 꽤 향상되었지만</strong>,
→ <strong>여전히 BERT처럼 사전학습된 양방향 모델보다는 성능이 한참 낮았다.</strong></p>
<p>게다가, 이 BiLSTM은 <strong>GLUE 태스크들에서는 오히려 성능을 떨어뜨렸다.</strong></p>
<hr>
<h4 id="▸-ltr--rtl-모델을-병렬로-쓴다면">▸ LTR + RTL 모델을 병렬로 쓴다면?</h4>
<p>ELMo 방식처럼:</p>
<ul>
<li>LTR 모델 + RTL 모델을 따로 훈련시킨 후,</li>
<li>각 토큰 표현을 두 모델의 출력을 <strong>합쳐서</strong> 사용할 수도 있다.</li>
</ul>
<p>하지만 이 방식은 다음과 같은 단점이 있다:</p>
<ol>
<li><strong>비용</strong>: 양방향 모델 하나 훈련하는 것보다 계산 비용이 2배.</li>
<li><strong>비직관적</strong>: 특히 질의응답(QA) 같은 태스크에서는, RTL 모델이 <strong>질문을 보기 전에 답을 생성</strong>해야 하므로 어색하다.</li>
<li><strong>덜 강력함</strong>: LTR + RTL 조합은 <strong>매 층마다 좌우 문맥을 동시에 활용</strong>할 수 있는 <strong>깊은 양방향 모델보다 표현력이 떨어진다.</strong></li>
</ol>
<h2 id="52-effect-of-model-size">5.2 Effect of Model Size</h2>
<p>이 섹션에서는 <strong>모델 크기가 파인튜닝 과제 정확도에 미치는 영향</strong>을 살펴본다. </p>
<p><img src="https://velog.velcdn.com/images/hsyoo826/post/bff39cfc-bf98-4681-8229-b0051e005716/image.png" alt=""></p>
<ul>
<li>레이어 수 (L), hidden size (H), attention head 수 (A)를 바꿔서 다양한 크기의 BERT 모델을 구성</li>
<li>나머지 학습 방식, 하이퍼파라미터는 동일하게 유지해서 오직 모델 크기만 성능에 영향을 주는지 확인</li>
</ul>
<p>그 결과 <strong>모델이 클수록 네 가지 데이터셋 모두에서 정확도가 꾸준히 향상</strong>된다는 것을 알 수 있다. 심지어 학습용 라벨 데이터가 3,600개밖에 되지 않는 <strong>MRPC</strong>와 같이 <strong>사전학습 과제와 상당히 다른 과제</strong>에서도 성능 향상이 나타났다.</p>
<p>또한,이미 SOTA급 성능을 내는 큰 모델보다 더 큰 모델을 썼음에도, 그 크기만큼의 의미 있는 성능 향상이 있었다는 점에서 주목할 만하다.</p>
<p>기존처럼 feature-based 방식에서는 모델이 너무 크면 오히려 효과가 줄어든다는 결과도 있었지만, BERT는 사전학습된 모델을 직접 파인튜닝했다는 점에서 다르다.</p>
<blockquote>
<p><strong>즉, 모델이 클수록 표현력이 좋아지고, 이 표현을 직접 파인튜닝하면
작은 데이터셋에서도 성능 향상을 이끌어낼 수 있다는 점을 알 수 있다.</strong></p>
</blockquote>
<h1 id="6-conclusion">6. Conclusion</h1>
<p>요즘 연구에서는 언어 모델을 먼저 훈련시킨 다음, 그걸 다운스트림 작업에 적용하는 방식이 크게 성능을 올려주고 있디.
특히, 이 방법은 학습 데이터가 적은 작업에서도 효과가 좋아서, 단방향 구조에서도 성과를 잘 냈다.</p>
<p>그러나 BERT는 여기서 더 나아가 깊은 양방향 아키텍처에도 적용할 수 있게 만든 것이다. 이를 통해 동일한 사전학습된 모델이 다양한 NLP 태스크들을 성공적으로 처리할 수 있도록 했다</p>
<hr>
<h1 id="내-생각">내 생각</h1>
<blockquote>
<p> 기존의 단방향 모델과 달리, 양방향 모델이 가진 강점을 명확히 보여준 논문인 것 같다. 특히 다양한 다운스트림 태스크에 대해 아키텍처를 변경하지 않고도 동일한 모델을 그대로 활용할 수 있다는 점이 인상 깊었다.</p>
</blockquote>
<p>읽으면서 헷갈리는 부분도 있었지만 이 논문의 핵심은 MLM을 활용한 양방향 사전학습과, 이를 기반으로 다양한 NLP 태스크에 간단한 파인튜닝만으로 높은 성능을 달성할 수 있다는 점이라 생각한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Bankruptcy Prediction Using Survival Analysis Technique]]></title>
            <link>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Bankruptcy-Prediction-Using-Survival-Analysis-Technique</link>
            <guid>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Bankruptcy-Prediction-Using-Survival-Analysis-Technique</guid>
            <pubDate>Tue, 30 Sep 2025 07:24:00 GMT</pubDate>
            <description><![CDATA[<p><a href="https://ieeexplore.ieee.org/document/9140234">https://ieeexplore.ieee.org/document/9140234</a></p>
<h2 id="overview">Overview</h2>
<blockquote>
<p><strong>[분류모델]</strong>: 파산 확률 추정에는 초점 but 파산까지 걸리는 예상 시간은 명시적으로 고려X
↔ <strong>[생존분석]</strong>: 관심사건이 발생할 시점(관측 시간 동안 발생하지 않을 수도 있음)을 다루는 기법</p>
</blockquote>
<ul>
<li>금융 파산 예측에서는 생존 분석이 드물게 사용됨</li>
<li>본 연구에서는 파산 예측에 있어서 생존 분석의 적용 가능성을 평가하겠음</li>
<li>최신 통계 모델 + 머신러닝 모델 비교
  ⇒ 결과) 
  1️⃣ 주어진 데이터에서 위험한 dynamic에 관한 유용한 정보를 추출하고,
  2️⃣변수들의 영향을 추정하는데 효과적임</li>
</ul>
<h2 id="introduction">Introduction</h2>
<ul>
<li><p><strong>기업실패예측 → 경제와 사회 모두에게 중요한 역할</strong></p>
</li>
<li><p>*<em>파산으로 인한 손실 → 기업 환경의 안정성 저해 *</em>
⇒ 기업 관계자들은 파트너, 고객, 금융기관의 지속 가능성을 예측하는 것이 매우 어렵고도 중요한 과제가 됨</p>
</li>
<li><p><strong>대부분 분류 모델 기반으로 예측</strong>
⇒ 재무적 특성을 바탕으로 기업이 파산할 사후 확률 추정하는 방식 but 파산까지 걸리는 시간은 고려x</p>
</li>
</ul>
<hr>
<h3 id="분류모델"><strong>[분류모델]</strong></h3>
<p>보통 “파산 1년 전의 재무 데이터”를 기준으로 학습<br>    → 이 모델의 출력은 “해당 기업이 앞으로 1년 안에 파산할 확률”이 됨
but, 현실에서는 어떤 기업은 6개월, 3개월, 심지어 몇 주 안에 파산할 수도 있음
⇒ “1년 안에 파산할 가능성”만 알려주는 모델은 너무 늦게 알려주는 것일수도..</p>
<blockquote>
<p>쉽게 말해, 한 달 뒤 망할 회사인데 “1년 안에 망할 수 있다”는 말만 듣고 대비하면 이미 늦어서 구제나 투자 회수 같은 조치를 못할 수도 있다
→ 분류모델은 단순히 1년 안에 망하는 그룹 vs 안 망하는 그룹만 구분하기 때문에 <strong>“파산까지 남은 시간(속도)”</strong>는 고려하지 못함</p>
</blockquote>
<h3 id="↔-생존분석">↔ <strong>[생존분석]</strong></h3>
<p>금융 파산 예측에서는 생존분석이 상대적으로 드물게 사용X</p>
<ul>
<li>Aziz와 Dar(2006) 파산 예측 모델에 관한 리뷰에서 판별분석, 로짓, 사례 기반 추론, 신경망, 러프 집합 등 12가지 분류 모델 언급 but 생존분석은 포함X<ul>
<li>판별분석, 로지스틱 회귀에 집중</li>
</ul>
</li>
</ul>
<ul>
<li>6개의 머신러닝 모델(신경망, 서포트 벡터 머신, 러프 집합, 사례 기반 추론, 의사결정나무, 유전 알고리즘)</li>
</ul>
<p><strong>📌 연구 목표</strong></p>
<p>→ 파산 예측에 생존분석(SA)의 적용 가능성 평가</p>
<p><strong>📌 생존 분석 모델</strong></p>
<ul>
<li>통계기반(1970 초 등장)</li>
<li>머신러닝(ML)기반(최근)<ul>
<li>회귀, 특히 분류 기반 파산 예측에서 통계적 모델보다 성능⬆️</li>
</ul>
</li>
</ul>
<h2 id="survival-analysis-models">Survival Analysis Models</h2>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/6e75af4a-9532-45b9-bfaf-24dc46030c65/image.png" alt=""></p>
<h3 id="생존분석">생존분석</h3>
<p>1️⃣통계적 방법 2️⃣머신러닝 기반 방법</p>
<p><strong>1. 통계적 방법</strong>: 사건 발생 시간의 분포와 생존 곡선을 추정하여 모수를 추정하는데 중점 - 비모수적 방법(kaplan-meier 모형), 준모수적 방법(cox회귀), 모수적 방법(accelerated failure time 모형)</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/0c66e33e-8219-4115-80c2-9562324d8c54/image.png" alt=""><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/aa63eaf2-947a-4f3e-a72a-4817e91a2e11/image.png" alt=""></p>
<p><strong>2, 머신러닝 기반:</strong> 트정 시점에서 사건 발생을 예측하는데 주로 초점</p>
<blockquote>
<p>*<em># 통계적 방법과 머신러닝 기반 방법이 차이가 나는 이유?
*</em></p>
</blockquote>
<ul>
<li>통계적 방법 <strong>(분포, 생존곡선 직접 추정 → 모수 해석 가능-예측+원인 해석)</strong><ul>
<li>철저히 확률 모형(확률분포)을 세우는 데 기반을 둠</li>
<li>“생존시간 T는 어떤 분포를 따른다”라는 전제에서 시작
  → 시간분포(생존함수, 위험함수) 자체를 추정하고 그 과정에서 분포의 모수(파라미터)를 구하는 것이 목표</li>
</ul>
</li>
<li>머신러닝 기반 방법<ul>
<li>확률분포보다는 예측 정확도에 초점</li>
<li>“이 기업이 앞으로 3개월 안에 망할까?” 같은 구체적인 시점에서의 사건 발생 여부를 분류/회귀 문제로 바꿔 품</li>
<li>분포를 추정하거나 모수를 해석하는 것보다는, 데이터의 패턴을 학습해서 정확히 맞추는 것이 중요</li>
</ul>
</li>
</ul>
<blockquote>
<p><strong># 통계적 방법은 왜 사건 발생 시간 분포와 생존 곡선에 집중?</strong></p>
</blockquote>
<ul>
<li>생존 분석의 본질적인 질문 때문<ul>
<li>원래 의료, 공학 분야에서 생겨난 분석 기법으로 “얼마나 오래 버틸 수 있냐” 같은 시간 분포 자체가 관심사</li>
</ul>
</li>
<li>모수 추정을 통해 해석 가능성 확보<ul>
<li>Cox 회귀 → 특정 공변량(ex. 부채비율)이 위험도를 몇 배 높이는지 계수로 해석 가능</li>
<li>Kaplan-Meier → 분포를 가정하지 않고 경험적으로 생존 곡선 추정</li>
<li>Weibull 모형 → 시간에 따라 위험이 증가하는지 감소하는지 알 수 있음</li>
</ul>
</li>
</ul>
<h2 id="result">Result</h2>
<ul>
<li><strong>RSF(Random Survival Forest)</strong>가 가장 좋은 성능을 보였고, AdaBoost와 비슷하지만 더 안정적</li>
<li>통계 모델(CPH, AAR, WAF)도 쓸 수 있으나 RSF보다 성능이 떨어짐</li>
<li><strong>I4(청구 비율)</strong>이 모든 모델에게 중요한 파산지표로 나타남</li>
<li>AdaBoost는 민감도와 특이도 균형에서 가장 우수했고, RSF,CPH도 수용 가능한 결과를 보였음</li>
<li>GB, RF, BC 같은 앙상블 모델은 <strong>민감도가 낮아 파산 기업을 잘 잡아내지 못함</strong></li>
</ul>
<h2 id="conclusion">Conclusion</h2>
<p>생존분석은 파산예측에 효과적으로 활용될 수 있으며, 특히 <strong>Random Survival Forest(RSF)</strong> 같은 머신러닝 기반 모델이 기존 통계적 생존 모델이나 전통적 분류 모델보다 더 높은 정확성과 안정성을 보인다.
SA모델은 단순히 파산 여부를 예측하는데에 그치지 않고, <strong>시간에 따른 위험 변화와 검열 데이터</strong>를 고려할 수 있어서 더욱 정교한 리스크 관리가 가능하다.</p>
<h2 id="comment">Comment</h2>
<blockquote>
<p>본 논문은 단순히 파산 여부만을 예측하는 기존 연구에서 한 걸음 더 나아가, <strong>&quot;언제&quot;</strong> 파산이 일어날 지에 대해 다루고 있다는 점이 인상 깊다. 
개인적으로는 데이터 불균형 상황에서 생존 분석이 분류보다 유리하다는 결과는 다른 금융 리스크 예측 문제에서도 확장 가능할 수도 있지 않을까 </p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Reinvention RNNs for the Transformer Era: RWKV]]></title>
            <link>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Reinvention-RNNs-for-the-Transformer-Era-RWKV</link>
            <guid>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Reinvention-RNNs-for-the-Transformer-Era-RWKV</guid>
            <pubDate>Tue, 30 Sep 2025 07:15:38 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/abs/2305.13048">논문 출처 Reinventing RNNs for the Transformer Era: RWKV</a></p>
<h2 id="overview">OverView</h2>
<blockquote>
<ul>
<li>RNN에 대한 간단 설명</li>
</ul>
</blockquote>
<ul>
<li>RNN과 Transformer의 장단점을 융합하는 RWKV
=&gt; RNN : 순차(재귀) 상태로 문맥을 기억하지만, 학습 시 시간축 비병렬성과 기울기 소실/폭발 문제
=&gt; Transformer : 병렬 학습과 강한 콘텐츠 선택성(어텐션)이 장점이지만, 긴 문맥에서 계산·메모리 비용이 큰 문제</li>
<li>RWKV는 어텐션의 “정규화 가중 평균”을 WKV로 재구성해 재귀 갱신(RNN형)으로 계산하여, 효율성과 선택성을 함께 잡음</li>
<li>RWKV는 “훈련은 트랜스포머처럼, 추론은 RNN처럼” 동작하는 하이브리드로 좋은 성능을 보임</li>
</ul>
<hr>
<p><img src="https://velog.velcdn.com/images/dratini1101/post/7a377ba4-3d16-4799-9864-aa52fa3cda75/image.png" alt=""></p>
<p>우리는 지금까지 NN 하나에 이미지 하나가 들어가 flatten 정보벡터가 input 노드에 입력되는 형식으로 이해했다. 하지만, 지금부터는 다르게 바라보아야 한다. </p>
<p>RNN은 <strong>순서데이터</strong>를 위주로 다룬다. 즉, 맥락이 중요한 문장이나 주식 데이터가 들어가게 된다. 그렇다면, NN 하나에 단어 하나, 한시점의 데이터 하나가 들어간다고 보면되고, 이 단어를 고유벡터화시키는게 <strong>임베딩과정</strong>이라고 한다.  </p>
<p>RNN의 가장 큰 특징을 한글자로 말하지면 &quot;<strong>기억</strong>&quot;이다. 이 신경망은 과거의 정보를 현재의 입력과 함께 기억을 하는 형식이라, 아까 말한 순서데이터, 문장데이터 등에 효과적이다.</p>
<hr>
<h2 id="recurrent의-필요성">Recurrent의 필요성</h2>
<p>우리가 평소에 알고 있는 NN은 Feedforward Neural Network로 아래 그림과 같은 형태이다.
<img src="https://velog.velcdn.com/images/dratini1101/post/a32b984a-de7b-4957-94c0-d73d7f9734c0/image.png" alt=""></p>
<p>전반적으로 RNN도 동일한 형태의 Network를 가지고 있다. 단, Recurrent(순환)가 hidden layer에 존재할 뿐이다. </p>
<p>문장데이터를 예시로 들어보자. (지금부터 말하는 것은 학습이 아닌 추론단계)</p>
<p>&quot;나는 벨로그에 글을 쓴다.&quot; 라는 문장이 있다. 그리고, 위와 같은 NN형식의 네트워크가 있다고 하자. 아까 말했듯이 한번에 한시점, 하나의 단어가 들어가므로 첫번째 데이터는 &quot;나는&quot;일 것이다. &quot;나는&quot;이 임베딩을 통해 <strong>고유 벡터화</strong>가 진행된다. 그렇게 생긴 벡터를 input layer에 넣게 된다. </p>
<p>이제 평소에 알고있듯이, NN은 데이터의 <strong>feature</strong> 특징을 추출하게 된다. 특징을 추출함으로써 기계적으로 그 단어를 이해하게 된다. 그리고 각 추출된 특징의 값을 통해 마지막 output layer에서 분류를 하든 예측을 하든 하게 된다.</p>
<p>자, 다음 단어인 &quot;벨로그에&quot;가 동일한 NN에 입력되게 된다. 똑같은 과정을 거쳐서 input에 입력되고, hidden layer에 지나 똑같이 <strong>&quot;벨로그에&quot;에 대한 결과값</strong>을 내놓게 된다.</p>
<p>하지만, 우리의 목적 input data는 &quot;나는&quot;이나 &quot;벨로그에&quot;가 아니라, &quot;나는 벨로그에 글을 쓴다.&quot;이다. 그럼, 사실 첫번째, 두번째 단어의 결과는 중요하지 않다. 우리는 결과적으로 이 문장의 결과값이 필요한 것이다. 하지만, 만약 위와 같이 동일하게 진행이 된다면, 마지막 결과값은 &quot;나는 벨로그에 글을 쓴다.&quot;의 결과값이 아닌, &quot;쓴다.&quot;의 결과값일 것이다
. 즉, <strong>이전 단계의 정보가 축적</strong>되어 전달이 되어야 한다. 여기서 <strong>Recurrent(순환)</strong>의 필요성이 생긴다.</p>
<hr>
<h2 id="rnn">RNN</h2>
<p><img src="https://velog.velcdn.com/images/dratini1101/post/0e04e734-0d38-4e7c-a189-fa3a75ca5915/image.png" alt="">
위 그림과 같이 RNN은 이전 단계의 정보를 hidden layer에서 가져오는 <strong>Recurrent</strong>가 존재한다. 각 블럭이 layer, 초록색 블럭이 하나의 hidden layer라고 생각해주길 바란다.</p>
<p>각 은닉층엔 <strong>은닉 상태</strong>가 있을 것이고, 다음 은닉층에 전달할 때마다, 가중치에 의해 가중합되어 전달이 될 것이다. 
아래의 그림과 같이 단어의 벡터 차원에 따른 크기의 가중치와 t-1시점의 은닉 상태가 있을때, 그 <strong>이전 시점(t-1)의 은닉층과 현재 시점(t)의 입력값이 가중합</strong>(활성화함수도 거친다)되어, 현재 시점(t)의 은닉 상태를 결정하게 된다.
<img src="https://velog.velcdn.com/images/dratini1101/post/2851293d-30b8-4259-959e-0b7971236538/image.png" alt=""></p>
<p>이런 구조로 이전 시점들의 정보를 포함하면서 연산을 하게 되고, 이는 nlp나 시계열에서 맥락을 파악한 결과값을 반환할 수 있게 된다. </p>
<blockquote>
<p>문제점: 이전 시점의 정보를 가져간다는 점에서 단순한 문장은 맥락파악에 충분하지만, 만약 문장이나 데이터 길이가 매우 길어진다면, 초기 시점의 정보를 잊어버리는 <strong>기울기 소실</strong> 문제가 발생한다.</p>
</blockquote>
<hr>
<h2 id="reinventing-rnns-for-the-transformer-era-rwkv">Reinventing RNNs for the Transformer Era: RWKV</h2>
<p>이후 RNN은 수많은 발전을 거쳐, Transformer나 Mamba같은 여러 다른 모델의 기초가 되었다. 이때, 이 이러한 발전을 위해서 하나의 연결고리를 한 논문을 보고 넘어가고자 한다.</p>
<p><a href="https://arxiv.org/abs/2305.13048">Reinventing RNNs for the Transformer Era: RWKV</a></p>
<h3 id="introduction">Introduction</h3>
<p>연속 시퀀스 데이터에서 사용되는 RNN과 Transformer에 대한 장단점에 대해 언급한다.
<strong>RNN</strong>
장점: 긴 시퀀스 처리에서 메모리 요구량이 적다.
단점: 기울기 소실 문제, 시간 축에서의 비병렬성에 의한 확장성 제약
<strong>Transformer</strong>
장점: 국소 및 장거리 의존성을 잘다룸, 병렬화된 학습 지원
단점: 셀프 어텐션의 제곱 복잡도에 의한 계산과 메모리 부담</p>
<p>이 논문은 위의 RNN과 Transformer의 강점을 결합하여 한계를 극복하는 RWKV를 제시한다.</p>
<h3 id="background">Background</h3>
<p>논문의 배경이 되는 RNN 아키텍처와 Transformer 아키텍처를 설명한다.</p>
<p><strong>RNN</strong></p>
<p> 두개의 선형블록(W, U)로 분해가 가능하지만, 이전 시점에 대한 데이터 의존성에 의해 시간 축 <strong>병렬화가 불가능</strong>하다.</p>
<p>$h_t=\tanh \left(W x_t+U h_{t-1}\right)$</p>
<p><strong>Transformer</strong></p>
<p>순차적 처리가 아닌 어텐션 메커니즘을 통해 입출력 토큰 간 관계를 포착하는 Transformer </p>
<p>$\begin{aligned} &amp; \operatorname{Attn}(Q, K, V)=\operatorname{softmax}\left(Q K^{\top}\right) V \ &amp; \operatorname{Attn}(Q, K, V)<em>t=\frac{\Sigma</em>{i=1}^T e^{q_t^{\top} k_i} \odot v_i}{\Sigma_{i=1}^T e^{q_t^{\top} k_i}}\end{aligned}$</p>
<p> 쿼리의 키값의 행렬곱으로 진행되지만, AFT에서는 이 행렬곱 보다 간단하게 Q,K 내적대신 W (위치 가중치)을 활용해서 간단한 덧셈 형태로 변경을 진행했다.</p>
<p>$\operatorname{Attn}^{+}(W, K, V)<em>t=\frac{\sum</em>{i=1}^t e^{w_{t, i}+k_i} \odot v_i}{\sum_{i=1}^t e^{w_{t, i}+k_i}}$</p>
<p>위의 두가지를 아키텍처를 잘 융합해서 RNN의 병렬처리 한계와 어텐션 매커니즘의 연산량 문제를 동시에 해결하고자 한다.</p>
<p>$w_{t, i}=-(t-i) w$</p>
<p>위와 같이 w를 시간이 흐를수록 감소되는 가중치로서 활용해, RNN으로 변환 가능한 가중치로 적용한다.</p>
<h3 id="rwkv">RWKV</h3>
<p><img src="https://velog.velcdn.com/images/dratini1101/post/5c186009-522f-42f7-95ca-47de270eadbf/image.png" alt=""></p>
<p>우선 RWKV은 <strong>time-mixing</strong> 블록과 <strong>channel-mixing</strong> 블록으로 구성되어 있고, 
그 블록은 다음 4개의 기본 요소로 구성되어 있다.</p>
<ul>
<li>R: Receptance 벡터 — 과거 정보를 수신하는 역할</li>
<li>W: Weight — 위치 가중 감쇠(positional weight decay) 벡터로, 모델 내에서 학습 가능한 파라미터</li>
<li>K, V: Key, Value 벡터 — 전통적 어텐션의 K, V와 유사한 역할을 수행
이 요소들을 각 시점(t)마다 곱셈적으로 상호작용한다.</li>
</ul>
<p><strong>아키텍처</strong></p>
<p><img src="https://velog.velcdn.com/images/dratini1101/post/36fa51da-714e-4454-a258-848e9bf6e05e/image.png" alt=""></p>
<p>RWKV는 위의 그림을 보면 알 수 있듯이 <strong>순환구조</strong>를 가지고 있다. Attention과 유사한 점수 갱신 과정을 사용하며, 기울기(가중치 갱신)는 가장 관련성(출력에 대한 영향력)가 높은 방향으로 전파가 이루어진다. 또한, 잔차(Residual)와 Layer Norm을 통해 안정성을 유지해 기울기 소실 및 폭발 문제를 해결한다.</p>
<p><strong>토큰 변환</strong></p>
<p>위의 그림에서 μ파트에서 <strong>R,K,V를 생성</strong>하는데, 이를 위해서 이뤄지는 기법으로 토큰 변환은 train과정 중 병렬화를 위해, 각 블록 내부에서 현재 입력과 이전 입력을 섞는다. </p>
<p>즉, 원래 RNN은 토큰을 하나씩 거치며 시간이라는 요소를 학습했다면, RWKV는 과거 정보의 영향력이 거리에 따라 자연스럽게 감소하는 <strong>&#39;시간 감쇠&#39; 메커니즘</strong>을 모델 내에 구현하여, 위치 정보를 별도로 주입하지 않고도 시간의 흐름을 학습한다.</p>
<blockquote>
<p>Time-mixing의 R,K,V와 Channel-mixing의 R&#39;,K&#39;은 현재와 과거 time step간의 선형 보간으로 생성</p>
</blockquote>
<p><strong>WKV 연산자</strong></p>
<p>Time-mixing 내부를 보면 K와 V가 WKV 연산자를 지나친다. 
<strong>W(가중치)+KV(키+값)</strong>으로서 어텐션처럼 중요한 과거를 RNN처럼 효율적으로 고르게 하는 파트라고 볼 수 있다. </p>
<p>$w k v_t=\frac{\sum_{i=1}^{t-1} e^{-(t-1-i) w+k_i} \odot v_i+e^{u+k_t} \odot v_t}{\sum_{i=1}^{t-1} e^{-(t-1-i) w+k_i}+e^{u+k_t}}$</p>
<p>위의 식은 AFT와 매우 흡사하지만 우선 각 시점 거리 쌍(t,i)마다 고유한 가중치를 두어 각각의 시간과 시차에 직접 의존하는 pairwise가 아닌 channel-wise 벡터이므로 <strong>각 특징 채널마다 감쇠율 w</strong>를 두어 특징마다 고유의 패턴을 가지게되고, 이는 가중치가 오직 <strong>시차(t-i)만 고려</strong>하므로(=쌍별 매개변수X), RNN처럼 재귀적 갱신이 가능하다.</p>
<p><strong>출력 게이팅(Output Gating)</strong></p>
<p>Time-Mixing과 Channel-Mixing에서 출력될때, 출력 게이팅을 지나친다. 지금 K와 V는 WKV연산자를 지나고 R (receptance)는 시그모이드 σ(r)활성화 함수를 통과하여 출력이 된다. 그리고 이 두 값을 합성곱하고 가중치를 곱해 gating하게 된다.</p>
<p>$o_t=W_o \cdot\left(\sigma\left(r_t\right) \odot \mathrm{wk} v_t\right)$.</p>
<p><strong>Transformer-유사학습</strong></p>
<p>RWKV는 Transformer와 RNN의 구조를 결합한다고 했다. 여기서 Transformer 구조는 학습에서 사용된다.</p>
<p>RWKV엔 <strong>time-parallel 모드</strong>를 사용해 효율적인 병렬화가 가능하다.
하나의 블록엔 모든 시점 t를 한번에 처리가능한 완전 병렬 가능 연산이 있고, WKV 갱신처럼 이전 결과가 필요한 직렬 연산이 있다. 
그래서 완전 병렬 가능 연산은 배치, 시간 축에서 한번에 처리를 하고, 직렬 연산인 WKV만 스캔으로 처리해서 훈련은 빠르게 병렬, 결합은 RNN처럼 선형시간으로 처리하게된다.</p>
<p><strong>RNN-유사추론</strong></p>
<p>RNN은 t시점의 출력을 t+1시점의 input으로 사용하면서 <strong>&quot;recurrent&quot;</strong>를 하게된다.
RWKV를 이에 착안해 만든 <strong>time-sequential 모드</strong>를 사용해 긴 시퀀스에 대한 효율적인 추론이 가능하다.</p>
<p><img src="https://velog.velcdn.com/images/dratini1101/post/cf2e87eb-1adc-406b-a126-60f46eb6e00e/image.png" alt=""></p>
<p>$h_t=f\left(x_t, h_{t-1}\right)$</p>
<p>본래 RNN은 위와 같은 형태로 이전 상태를 현재상태로 넘긴다.
RWKV에서도 Layer마다 상태가 존재하고, 이 상태는 WKV의 누적치를 의미한다.</p>
<p>$\mathrm{WKV}_t=\frac{A_t+e^{u+k_t} \odot v_t}{B_t+e^{u+k_t}}$</p>
<ul>
<li>$A_t$,$B_t$는 실질적 채널별 히든 상태</li>
<li>$k_t$,$v_t$는 입력 $x_t$에 대한 key, value</li>
<li>$w$는 채널별 감쇠율</li>
<li>$u$ 현재 토큰 가중치를 보정하는 상수 벡터</li>
</ul>
<p>다시말해, $WKV_t$는 과거의 중요한 요약인 A, B와 현재의 값인 k, v를 적절히 섞어 정규화된 평균이다.</p>
<p><strong>자기 회귀 디코딩</strong></p>
<ol>
<li>입력 준비: 직전 출력 토큰을 임베딩해 $x_t$ 얻기</li>
<li>Token shift 보간: $x_{t-1}$과 혼합해 $r_t$,$k_t$,$v_t$에 들어갈 입력 구성</li>
<li>입력 토큰 R/K/V로 사영</li>
<li>WKV 상태 갱신(재귀)</li>
<li>출력 게이팅 $o_t=W_o\left(\sigma\left(r_t\right) \odot \mathrm{WKV}_t\right)$</li>
<li>LayerNorm -&gt; 선형 -&gt; softmax로 다음 토큰 결정</li>
<li>$A_t$, $B_t$에 상태 저장 후 t+1으로 </li>
</ol>
<p><strong>결과적으로</strong>
RWKV는 RNN의 <strong>재귀상태, 상수 메모리, 온라인성</strong>을 그대로 살린다.
또한 Attention의 정규화된 가중 평균을 상태 갱신에 첨가하는 형태.
그래서 훈련은 Transformer처럼, 추론은 RNN처럼 하는 하이브리드 형태라고 보면된다.</p>
<h2 id="rwkv과-rnn">RWKV과 RNN</h2>
<p>RNN을 이해하는데 RWKV를 활용한 것이므로 조금은 정리가 필요할 것 같다.</p>
<p>처음에 말했듯이 RNN은 Recurrent를 통해 과거의 정보를 포함시켜 그 맥락을 파악한 결과를 반환하는데 매우 큰 도움을 준다고 했다.</p>
<p>결국 RNN은 <strong>선형 시간</strong>에 강하며, <strong>메모리 효율</strong>이 좋다는 강점이 있었지만, 시간축에서 <strong>비병렬성</strong>으로 훈련이 느리고, 기울기 소실및 폭발이 일어나며, 과거의 정보에 대해 어떤 정보가 중요한지를 못고르는 문제점이 있었다.</p>
<p>그래서 RWKV는 <strong>어텐션을 활용한 가중평균</strong>을 RNN 형태의 업데이트인 <strong>재귀 갱신 형태로 구현</strong>한다는 핵심 아이디어를 활용한다.</p>
<p>WKV 연산자, 채널별 감쇠율, 토큰 변환, 게이팅, 안정성 보강(LayerNorm + 잔차)를 통해 훈련은 transformer처럼 병렬화 가능하게 했고, 추론에선 WKV값을 RNN처럼 재귀 상태로 계산하여, RNN처럼 메모리 효율을 가져갔다.</p>
<p>즉, 다음과 같은 느낌으로 RNN을 발전시킨 것이다.</p>
<blockquote>
<p><strong>Transformer</strong>: 회의에서 모든 사람 말을 전부 듣고(쌍별 상호작용) 판단 → 정확하지만 비용 큼.
<strong>전통 RNN</strong>: 직전 메모 요약만 들으며 진행 → 싸지만 뭘 들어야 할지 약함.
<strong>RWKV</strong>: “직전까지의 요약을 지수감쇠로 관리하면서도, 키(콘텐츠) 로 정작 중요한 말에 더 귀를 기울이는” 회의 진행 방식.</p>
</blockquote>
<p>RWKV에서 찾을 수 있는 <strong>RNN의 성질</strong>은 다음과 같다.</p>
<ol>
<li>순차적(재귀) 상태 갱신</li>
<li>상수 메모리 및 선형 시간(추론 과정)</li>
<li>인과성 유지</li>
<li>자기회귀 디쾽</li>
<li>BPTT(역전파) 친화구조 (순차구조) </li>
</ol>
<hr>
<blockquote>
<p><strong>comment</strong>
위의 논문을 본 이유는 딥러닝을 차례로 정리하던 중 RNN의 성질이 transformer, Mamba 등으로 넘어가는 것의 구조 변화를 이해하는데 좋을 것이라 생각했다. RNN과 transformer의 장단점을 확실히 이해하고, 딥러닝의 기본인 RNN의 구조와 그 이유를 이해할 수 있고, 추가로 RWKV를 통해 모델 간 구조 융합까지 살펴볼 수 있는 좋은 논문이라고 생각한다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Modeling Relational Data with Graph Convolutional Networks]]></title>
            <link>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Modeling-Relational-Data-with-Graph-Convolutional-Networks</link>
            <guid>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Modeling-Relational-Data-with-Graph-Convolutional-Networks</guid>
            <pubDate>Tue, 30 Sep 2025 04:50:28 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/abs/1703.06103">Modeling Relational Data with Graph Convolutional Networks 논문 링크</a></p>
<h1 id="overview">Overview</h1>
<blockquote>
<ul>
<li>문제 : 기존 지식 그래프는 불완전하며, 매우 다중 관계적인 특성 때문에 기존 GNN 모델로는 처리가 어려움
=&gt; <strong>R-GCN</strong>은 이 복잡성을 해결하기 위해 GNN을 확장한 모델로, 그래프 구조로부터 여러 추론 단계를 거쳐 증거를 축적하는 방식으로 작동</li>
</ul>
</blockquote>
<ul>
<li><strong>엔티티 분류</strong> (Entity Classfication) : 관계형 문맥 정보가 내포된 임베딩을 생성하여 독립형 분류 모델로서의 역할을 가능하게 함</li>
<li><strong>링크 예측</strong> (Link Prediction) : 학습된 풍부한 개체 임베딩을 통해 디코더 모델의 성능을 향상시켜 누락된 삼중항 복원의 정확도를 높임<ul>
<li>R-GCN은 다중 관계 처리를 위한 매개변수 규제 기법을 도입했으며, 두 작업에 적용한 결과 특히 링크 예측에서 기존 모델 대비 획기적인 성능 향상을 달성했다.</li>
</ul>
</li>
</ul>
<h1 id="introduction">Introduction</h1>
<ul>
<li>지식 기반(KB)은 질의응답, 정보 검색 등 다양한 응용에 활용되지만, DBPedia,Wikidata,Yago와 같은 대형 KB조차 불완전하다.</li>
<li><blockquote>
<p>누락된 정보를 예측하는 것이 통계적 관계 학습(SRL)의 핵심 과제. 
지식 기반은 (주어,관계,목적어) 삼중항으로 표현되며, 이를 방향성 라벨 멀티그래프로 모델링할 수 있다.
<img src="https://velog.velcdn.com/images/yeowon123/post/aef46b50-4486-4e8a-bab4-5f50f83a7a5d/image.png" alt=""></p>
</blockquote>
</li>
<li>노드(entity): Mikhail Baryshnikov, Vaganova Academy, Vilcek prize, U.S.A.</li>
<li>엣지(relation): educated_at, awarded</li>
<li>노드 라벨(entity type): university, :award, :country</li>
<li>빨간색으로 표시된 부분(citizen_of, :ballet_dancer)은 현재 지식 그래프에 빠져 있는 정보 </li>
<li><blockquote>
<p>모델이 학습을 통해 새롭게 추론해야 할 대상</p>
</blockquote>
</li>
</ul>
<h4 id="삼중항의-sro">삼중항의 s,r,o</h4>
<ul>
<li>s(subject): 시작 노드 (ex. Mikhail Baryshnikov)</li>
<li>r(relation): 관계 타입 (ex. educated_at, citizen_of)</li>
<li>o(object): 도착 노드 (ex. Vaganova Academy, U.S.A.)</li>
</ul>
<blockquote>
</blockquote>
<p>제안1. <strong>엔티티 분류 모델</strong>:</p>
<ul>
<li>노드 표현을 학습하는 R-GCN -&gt; 소프트맥스 분류기 -&gt; 엔티티 라벨 예측</li>
<li>학습은 교차 엔트로피 손실로 최적화
&nbsp;&nbsp;<blockquote>
</blockquote>
제안2. <strong>링크 예측 모델</strong>:
&nbsp;<ul>
<li>오토인코더 구조<ul>
<li>인코더: 엔티티 잠재 표현을 생성하는 R-GCN</li>
<li>디코더: 텐서 분해 모델(ex.DistMult)로 엣지 예측</li>
</ul>
</li>
<li>기본 DisMult보다 향상된 성능, 특히 어려운 FB15k-237 데이터셋에서 효과적</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<h1 id="neural-relational-modeling">Neural Relational Modeling</h1>
<h3 id="1-relational-graph-convolutional-networks-r-gcn">1. Relational Graph Convolutional Networks (R-GCN)</h3>
<ul>
<li>기존 GCN을 <strong>관계형 데이터로 확장</strong></li>
<li>각 노드 업데이트는 이웃 노드 메시지의 정규화된 합을 기반으로 계산되며, <strong>관계 타입별 가중치 행렬 $$W_{r}^{(l)}$$</strong>을 도입</li>
<li>자기 자신과의 연결(self-loop)을 추가하여 이전 계층 정보도 반영</li>
<li>효율적 구현 : <strong>희소 행렬 곱</strong>을 이용, 여러 계층을 쌓아 다중 관계 의존성 학습<blockquote>
<p>(1) 메시지 패싱 일반식
$$h_i^{(l+1)} = \sigma \left( \sum_{m \in M_i} g_m \big(h_i^{(l)}, h_j^{(l)}\big) \right)$$
&nbsp;
(2) R-GCN 업데이트 식
$$h_i^{(l+1)} = \sigma \left( \sum_{r \in R} \sum_{j \in N_i^{r}} \frac{1}{c_{i,r}} W_r^{(l)} h_j^{(l)} ;+; W_0^{(l)} h_i^{(l)} \right)$$</p>
</blockquote>
</li>
</ul>
<h3 id="2-regularization-과적합-문제-해결">2. Regularization (과적합 문제 해결)</h3>
<ul>
<li>문제점 : 관계 수가 많아질수록 파라미터 수 폭증 -&gt; <strong>과적합</strong> 위험</li>
<li>해결책:<ul>
<li><strong>Basis decomposition</strong>
  <img src="https://velog.velcdn.com/images/yeowon123/post/9dcc4d84-9566-4dc3-97f4-0f13bf14cad0/image.png" alt="">-&gt; 여러 관계가 <strong>basis 변환을 공유</strong> (효율적 weight sharing)
  = 관계별 가중치 $$W_{r}$$를 전부 따로 두지 않고, 공통 basis 행렬 몇 개 $$V_{b}$$를 가중합해 만들어 파라미터 크게 감소</li>
</ul>
</li>
</ul>
<p>   &nbsp;</p>
<ul>
<li><strong>Block-diagonal decomposition</strong>
  <img src="https://velog.velcdn.com/images/yeowon123/post/955507d9-0e1c-43d3-8a47-71fd691e4a55/image.png" alt="">-&gt; <strong>블록 대각 구조</strong>로 sparsity 부여, 그룹 내 강한 연관성 반영
  = $$W_{r}$$를 대각 블록들만 있는 형태로 제한해 그룹 내부만 섞이고 그룹 간 연결은 0이 되도록 함 (같은 그룹끼리만 강하게 상호작용)<ul>
<li>두 방식 모두 <strong>파라미터 수 감소 + 희소성 확보</strong>, 드문 관계에서도 과적합 완화 </li>
</ul>
</li>
</ul>
<h3 id="3-전체-r-gcn-모델">3. 전체 R-GCN 모델</h3>
<ul>
<li>L계층 R-GCN 스택 구조</li>
<li>입력 특징 없으면 one-hot 사용, 필요 시 dense 변환</li>
<li>사전 정의된 특징도 활용 가능</li>
</ul>
<blockquote>
<p>특정 노드(red)의 새로운 표현을 계산하는 과정
<img src="https://velog.velcdn.com/images/yeowon123/post/3036feca-4d34-40e5-8ff1-f77d4ccfc7e3/image.png" alt=""></p>
</blockquote>
<ol>
<li><strong>이웃 노드들의 임베딩 수집</strong> (blue)<ul>
<li>각 관계 타입(rel_1,rel_N)별로 in-edge,out-edge가 따로 구분됨</li>
<li>이웃 노드들의 d차원 벡터가 모임</li>
</ul>
</li>
<li><strong>관계별 변환</strong> (green)<ul>
<li>관계 r마다 다른 가중치 행렬 $$W{r}$$을 적용해 이웃 정보를 변환</li>
<li>self-loop(자기 자신 연결)도 포함해서 자기 정보가 보존됨</li>
</ul>
</li>
<li><strong>정규화된 합산</strong> (+)<ul>
<li>관계별 변환된 벡터들을 모두 더하고, 정규화 계수 $$c_{i,r}$$로 나눠줌</li>
<li><blockquote>
<p>이웃 수가 많은 노드도 과도하게 영향받지 않도록 조정</p>
</blockquote>
</li>
</ul>
</li>
<li><strong>비선형 활성화 (ReLU)</strong><ul>
<li>합산 결과를 활성화 함수에 통과시켜 새로운 노드 표현(red)으로 업데이트</li>
</ul>
</li>
<li><strong>병렬 학습 가능</strong><ul>
<li>그래프 전체 노드가 동일한 공유 파라미터 하에서 동시에 업데이트 가능</li>
</ul>
</li>
</ol>
<p>&nbsp;</p>
<h1 id="entity-classification">Entity Classification</h1>
<p><img src="https://velog.velcdn.com/images/yeowon123/post/a36e93d3-3d62-430c-a5a6-44d243aad275/image.jpg" alt=""></p>
<h3 id="모델-구조">모델 구조</h3>
<ul>
<li>R-GCN 업데이트 식 기반 <strong>R-GCN 계층</strong>을 여러 층으로 쌓음</li>
<li>마지막 출력에 대해 <strong>노드별 softmax 활성화 함</strong>수 적용</li>
<li>각 노드의 최종 벡터 표현 -&gt; <strong>엔티티 라벨 예측</strong><h3 id="손실-함수-cross-entropy">손실 함수 (Cross-Entropy)</h3>
</li>
<li>레이블이 있는 노드 집합 Y에 대해서만 계산</li>
<li>정답 레이블 $$t_{ik}$$과 예측 확률 $$h_{ik}^{(L)}$$ 간의 차이를 최소화
<img src="https://velog.velcdn.com/images/yeowon123/post/363510a0-65f1-4b7e-9f75-879794264672/image.png" alt=""></li>
<li><strong>레이블이 없는 노드</strong>는 학습에서 제외<h3 id="훈련-방법">훈련 방법</h3>
</li>
<li><strong>풀 배치 경사하강법</strong>을 사용</li>
<li>R-GCN 파라미터와 softmax 분류기를 <strong>end-to-end로 함께 최적화</strong></li>
</ul>
<p>=&gt; 노드의 이웃 관계 정보가 전파·누적되어, 단순한 특징 기반 분류보다 더 풍부한 표현 학습 가능</p>
<h1 id="link-prediction">Link Prediction</h1>
<p><img src="https://velog.velcdn.com/images/yeowon123/post/b6622aac-6deb-4cb6-bc2b-540178374f27/image.jpg" alt=""></p>
<h3 id="목표">목표</h3>
<ul>
<li>불완전한 지식 그래프에서 누락된 삼중항(s,r,o)을 예측</li>
<li>스코어 함수 f(s,r,o)로 해당 엣지가 실제 그래프에 속할 확률을 측정<h3 id="모델-구조-1">모델 구조</h3>
</li>
<li><strong>인코더</strong>: R-GCN -&gt; 각 엔티티 $$v_{i}$$∈V를 벡터 $$e_{i}$$∈$$R^{d}$$로 임베딩</li>
<li><strong>디코더(스코어링 함수)</strong>: f:$$R^{d}$$x$$R$$x$$R^{d}$$-&gt;$$R$$</li>
<li>기존 방법과 차별점: 단순 학습 파라미터 벡터 대신 <strong>R-GCN 인코더</strong>를 통해 표현 $$e_{i}=h_{i}^{(L)}$$을 계산</li>
</ul>
<h3 id="distmult-스코어링-함수">DistMult 스코어링 함수</h3>
<p>$$
f(s,r,o) = e_s^\top R_r e_o
$$</p>
<ul>
<li>$$e_{s}$$, $$e_{o}$$: subject,object 임베딩</li>
<li>$$R_{r}$$∈$$R^{d×d}$$: 관계 r에 대한 대각 행렬</li>
</ul>
<h3 id="학습-negative-sampling--cross-entropy">학습 (Negative Sampling + Cross-Entropy)</h3>
<p>$$
\mathcal{L} = - \frac{1}{|T|} \sum_{(s,r,o,y) \in T} \Big[ ; 
y \log \sigma(f(s,r,o)) ;+; (1-y)\log \big(1 - \sigma(f(s,r,o))\big) ; \Big]
$$</p>
<ul>
<li>T: 실제 삼중항 + negative sampling된 삼중항 집합</li>
<li>y: 지표 변수 (y=1:양성,y=0:음성)</li>
<li>σ: 로지스틱 시그모이드 함수</li>
</ul>
<p>-&gt; loss는 양성일 때 점수↑, 음성일 때 점수↓ 되도록 조정 </p>
<p>&nbsp;</p>
<h1 id="empirical-evaluation">Empirical Evaluation</h1>
<h3 id="1-entity-classification-experiments">1. Entity Classification Experiments</h3>
<ul>
<li>목표: 지식 그래프 내 엔티티의 타입을 분류</li>
<li>데이터셋: AIFB, MUTAG, BGS, AM (RDF 포맷)</li>
<li>비교: RDF2Vec, WL kernel, Feat 대비</li>
<li>결과:<ul>
<li>AIFB, AM → SOTA 성능</li>
<li>MUTAG, BGS → 고차수 허브 노드 문제로 성능 저하</li>
<li>개선 방향: <strong>정규화 대신 attention 메커니즘</strong> 활용 가능성</li>
</ul>
</li>
</ul>
<h3 id="2-link-prediction-experiments">2. Link Prediction Experiments</h3>
<ul>
<li>목표: 불완전한 지식 그래프에서 누락된 삼중항 (s,r,o) 예측</li>
<li>데이터셋: FB15k, WN18 (역삼중항 문제), FB15k-237 (개선 버전)</li>
<li>비교: DistMult, LinkFeat, ComplEx, HolE, TransE 등</li>
<li>결과:<ul>
<li>FB15k, WN18 → R-GCN이 DistMult보다 우수, 그러나 LinkFeat엔 미치지 못함</li>
<li>FB15k-237 → LinkFeat 일반화 실패, R-GCN이 DistMult보다 29.8% 향상</li>
<li>인코더(R-GCN)의 중요성 확인</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<h1 id="related-work">Related Work</h1>
<h3 id="1-relational-modeling">1. Relational Modeling</h3>
<ul>
<li>R-GCN 디코더: <strong>DistMult</strong> 사용 → RESCAL의 단순화된 효과적 변형</li>
<li>다양한 factorization 방법 존재 (CP, Tucker, TransE, ComplEx 등)</li>
<li>최근 연구: 엔티티 간 <strong>경로(path)</strong> 활용<ul>
<li>보조 삼중항 추가</li>
<li>경로/Walk 기반 특징 사용</li>
<li>두 방법을 함께 적용</li>
</ul>
</li>
<li>R-GCN은 이러한 경로 기반 접근 대비 <strong>계산 효율적 대안</strong> 제공</li>
</ul>
<h3 id="2-neural-networks-on-graphs">2. Neural Networks on Graphs</h3>
<ul>
<li>R-GCN은 <strong>GCN 확장판</strong> → 대규모 다중 관계 데이터 처리 가능</li>
<li>초기 연구: Graph Neural Network (Scarselli et al. 2009)</li>
<li>확장: Gating 기법(Li et al. 2016, Pham et al. 2017)</li>
<li>R-GCN은 <strong>Message Passing Neural Network</strong>(Gilmer et al. 2017)의 한 형태</li>
</ul>
<p>&nbsp;</p>
<h1 id="conclusions">Conclusions</h1>
<p>R-GCN은 관계형 데이터를 처리하기 위해 GCN을 확장한 모델로, 링크 예측과 엔티티 분류에서 모두 효과성을 입증했다. 특히 FB15k-237 데이터셋에서 단순 factorization보다 약 30% 성능 향상을 보여 인코더의 중요성을 강조했다.
향후 연구 방향으로는 ComplEx 같은 다양한 디코더 결합, 엔티티 특징 활용, 대규모 그래프 처리를 위한 샘플링 기법, 어텐션 기반 메시지 집계 등이 제시된다.</p>
<blockquote>
<p><strong>Comment</strong>
R-GCN은 단순히 각 노드의 고유한 특징에 의존하지 않고, 노드 간의 관계 구조 자체를 학습 과정의 핵심 특징으로 삼아 지식 그래프의 본질적인 문제를 직접적으로 다룬다는 점에서 큰 의의가 있다고 생각한다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰]Adaptive Information Routing for
Multi-Modal Time Series Forecasting (다중 모달 시계열 예측을 위한 적응형 정보 라우팅)]]></title>
            <link>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0Adaptive-Information-Routing-forMulti-Modal-Time-Series-Forecasting-%EB%8B%A4%EC%A4%91-%EB%AA%A8%EB%8B%AC-%EC%8B%9C%EA%B3%84%EC%97%B4-%EC%98%88%EC%B8%A1%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%A0%81%EC%9D%91%ED%98%95-%EC%A0%95%EB%B3%B4-%EB%9D%BC%EC%9A%B0%ED%8C%85</link>
            <guid>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0Adaptive-Information-Routing-forMulti-Modal-Time-Series-Forecasting-%EB%8B%A4%EC%A4%91-%EB%AA%A8%EB%8B%AC-%EC%8B%9C%EA%B3%84%EC%97%B4-%EC%98%88%EC%B8%A1%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%A0%81%EC%9D%91%ED%98%95-%EC%A0%95%EB%B3%B4-%EB%9D%BC%EC%9A%B0%ED%8C%85</guid>
            <pubDate>Tue, 30 Sep 2025 03:35:16 GMT</pubDate>
            <description><![CDATA[<p><a href="https://openreview.net/forum?id=3Im0luRZHS&amp;referrer=%5Bthe%20profile%20of%20Jun%20Seo%5D(%2Fprofile%3Fid%3D~Jun_Seo1)">논문 출처 Adaptive Information Routing for Multi Modal Time Series Forecasting</a></p>
<h3 id="5줄-요약">5줄 요약</h3>
<ul>
<li><p>일반적으로 시계열 데이터는 텍스트 데이터에 비해 Local하고, 구체적이며, 구조화된 정보를 담음</p>
</li>
<li><p>텍스트 데이터는 시계열 데이터에 비해 Global하고, 모호하며, 구조화되지 않은 정보가 가득. </p>
</li>
<li><p>따라서 두 데이터의 서로 다른 특성을 고려하지 않고 시계열, 텍스트 데이터를 단순히 모델 입력 목적으로 함께 사용하는 방법은 데이터의 활용 능력에서 근본적인 한계를 가짐</p>
</li>
<li><p>기존 방식이 텍스트를 보조 입력으로만 쓰는 반면, AIR는 텍스트를 이용해 시계열 정보의 결합 방식과 정도를 조절함.</p>
</li>
<li><p>실험 결과, AIR는 예측 정확도를 크게 향상시켰으며, 특히 주가 예측 등 실제 데이터에서도 효과가 뛰어남</p>
</li>
</ul>
<h2 id="1-서론">1. 서론</h2>
<ul>
<li><p>기존 시계열 예측 모델은 <strong>시계열 데이터만</strong> 활용하지만, <strong>사람은 다양한 정보(예: 텍스트)를 함께 참고</strong></p>
</li>
<li><p>최근에는 LLM의 성공에 힘입어, <strong>텍스트와 시계열 데이터를 결합</strong>하려는 연구들이 활발히 진행중</p>
</li>
<li><p>이전 연구들은 LLM에 시계열 데이터를 입력하거나, LLM에서 추출한 <strong>텍스트 임베딩을 시계열과 합치는 방식</strong> 등을 사용 BUT 대부분의 방법은 <strong>텍스트를 단순한 보조 정보로만 처리</strong></p>
</li>
<li><p>이에 반해, 본 논문에서는 텍스트 정보를 <strong>예측 모델의 작동 방식을 조정하는 ‘조정자(controller)’로 사용→</strong> 즉, 텍스트에 따라 <strong>시계열 정보가 결합되는 방식과 정도를 동적으로 제어</strong>하는 새로운 프레임워크인 AIR (Adaptive Information Routing).</p>
<p>→ 이로써 예측 전 과정에서 텍스트의 영향을 효과적으로 반영 가능</p>
</li>
</ul>
<h2 id="2-방법-소개">2. 방법 소개</h2>
<blockquote>
<h3 id="💡air-핵심-내용">💡AIR 핵심 내용</h3>
</blockquote>
<p> 텍스트 정보를 바탕으로 시계열 예측 모델 내부의 정보 흐름(정보 경로)을 동적으로 조절하는 프레임워크</p>
<p>완전 연결 계층(FC layer)을 <strong>두 개의 FC 계층으로 분해</strong>하고, 그 사이에 잠재 노드(latent representation)를 두는 것</p>
<p>이 구조에서 각 잠재 노드는 입력과 출력 사이의 특정 연결을 나타내며, <strong>텍스트 임베딩을 통해 이 잠재 노드들에 가중치를 부여</strong></p>
<p>→ 즉, <strong>텍스트 정보에 따라 입력과 출력 사이의 연결 강도를 조절</strong>하게 되며, 이를 통해 시계열 모델의 동작 방식을 제어 가능</p>
<p>위와 같은 구조를 바탕으로 Information Routing 모듈을 이용!</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/f1aee306-4b55-4a67-bd71-856db1229dfd/image.png" alt=""></p>
<ol>
<li><p><strong>텍스트 임베딩 모델 (Embedding Model)</strong></p>
<ul>
<li>각 텍스트 데이터를 고정 크기의 벡터로 변환</li>
<li>사용된 모델: <strong>Mistral-7B</strong>, E5로 파인튜닝</li>
</ul>
</li>
<li><p><strong>임베딩 통합기 (Embedding Integrator)</strong></p>
<ul>
<li><p>여러 텍스트 임베딩을 하나로 통합</p>
</li>
<li><p>구조: <strong>Attention Layer + 통합 토큰(integration token)</strong></p>
<p><strong>(통합토큰이란? :</strong> </p>
<p>여러 개의 텍스트 임베딩이 입력될 때, <strong>가장 중요한 정보를 추출하여 하나의 대표적인 벡터를 생성)</strong></p>
</li>
<li><p>통합 토큰과 텍스트 임베딩을 함께 attention에 넣고, 통합 토큰에 해당하는 출력을 최종 임베딩으로 사용</p>
</li>
</ul>
</li>
<li><p><strong>가중치 생성기 (Weight Generator)</strong></p>
<ul>
<li>통합된 임베딩을 입력으로 받아 잠재 노드(latent nodes)에 적용할 가중치 생성</li>
<li>구조: <strong>MLP(다층 퍼셉트론)</strong></li>
<li>출력값에 <strong>softmax 함수</strong>를 적용하여 여러 경로에 대한 가중치를 정규화</li>
<li>추가로, 잠재 노드들을 <strong>여러 그룹으로 나누고</strong>, 각 그룹 내에서 softmax 정규화 수행 → 성능 향상 목적</li>
</ul>
</li>
</ol>
<h3 id="다시한번-3줄-요약">다시한번 3줄 요약!!</h3>
<p><em>1. 사전 학습된 임베딩 모델을 통해 텍스트 → 고정벡터로 임베딩
2. Attetion Layer와 학습 가능한 Integration 토큰을 사용해 텍스트 데이터 → 단일 벡터로 통합
3. 다층 퍼셉트론 형태의 가중치 생성기로 가중치 생성</em></p>
<blockquote>
<h3 id="💡-tsmixer-핵심-내용">&gt; 💡 TsMixer 핵심 내용</h3>
</blockquote>
<h3 id="tsmixer의-구조"><strong>TSMixer의 구조</strong></h3>
<p>TSMixer는 <strong>Mixer Block</strong>이라는 단위 구조를 반복하여 시계열 데이터를 처리</p>
<p>각 Mixer Block은 다음과 같은 <strong>두 개의 FC Layer</strong>로 구성</p>
<ol>
<li><strong>Temporal Mixing (시간적 혼합)</strong> → 시간 축을 따라 정보를 통합하는 FC Layer</li>
<li><strong>Featural Mixing (특성 혼합)</strong> → 각 특징(feature) 간의 관계를 학습하는 FC Layer</li>
</ol>
<p>즉, TSMixer는 <strong>시간적인 관계</strong>와 <strong>특성 간 관계</strong>를 각각 학습하는 방식</p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/93169f6a-9970-4909-8cb5-5b910a7936b1/image.png" alt=""></p>
<h3 id="air에서의-변형"><strong>AIR에서의 변형</strong></h3>
<p>AIR는 기존 TSMixer의 FC Layer를 <strong>더 세밀하게 조정할 수 있도록 변형</strong></p>
<p><strong>변경점</strong>:</p>
<ul>
<li>원래 하나였던 <strong>각 FC Layer를 두 개의 FC Layer로 분리</strong></li>
<li>이 둘 사이에 <strong>Latent Representation(잠재 벡터) 추가</strong></li>
<li><strong>Information Routing 모델이 생성한 가중치</strong>를 적용하여 각 Latent 노드의 정보 흐름을 조절</li>
</ul>
<p>즉, AIR는 기존의 단순한 FC Layer 구조를 <strong>더 유연하게 변형하여, 텍스트 정보를 활용</strong></p>
<ul>
<li><strong>Information Routing 모델의 역할</strong></li>
</ul>
<p>AIR의 <strong>Information Routing 모델</strong>은 단순히 하나의 가중치를 적용하는 것이 아니라,</p>
<p> <strong>각 Mixer Block</strong>과 <strong>각 FC Layer마다 서로 다른 가중치를 생성</strong>하여 적용</p>
<p>즉, <strong>텍스트 정보에 따라 블록별로 다르게 정보 흐름을 조절</strong>하는 것이 핵심!!</p>
<h3 id="다시한번-3줄-요약-1">다시한번 3줄 요약!!</h3>
<ol>
<li>TSMixer는 원래 두 개의 FC Layer를 활용하는 모델</li>
<li>AIR는 <strong>각 FC Layer를 두 개로 분리</strong>하고, <strong>그 사이의 Latent에 Information Routing 가중치를 적용</strong></li>
<li>Information Routing 모델이 <strong>각 Mixer Block과 FC Layer별로 다르게 가중치를 생성</strong>하여, 텍스트 정보를 기반으로 정보 흐름을 동적으로 조절</li>
</ol>
<h2 id="3성능평가">3.성능평가</h2>
<blockquote>
<h3 id="1-synthetic-데이터-실험"><strong>1. Synthetic 데이터 실험</strong></h3>
</blockquote>
<p>데이터 생성 과정:</p>
<ul>
<li>30개의 랜덤한 시계열 데이터를 생성</li>
<li>이 중 2개를 랜덤으로 선택해 평균을 내 Target 데이터로 설정</li>
<li>특정한 주기마다 Target 데이터의 구성(사용된 두 개의 시계열)을 변경</li>
<li>이 구성 변화 정보를 담은 텍스트 데이터를 함께 생성</li>
</ul>
<p>실험 목적:</p>
<ul>
<li>텍스트 정보를 활용하지 못하는 모델 → 주기적인 변화 패턴을 인식할 수 없어 예측 성능이 저하됨</li>
<li>AIR처럼 텍스트 정보를 반영하는 모델 → Target 구성 변화에 적응하여 거의 완벽한 수준의 예측 가능</li>
</ul>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/d5456960-2804-42d6-bf9f-f5c454bdd476/image.png" alt=""></p>
<h3 id="결과해석">결과해석</h3>
<ul>
<li>위쪽 3개 그래프 → TSMixer + AIR 결과</li>
<li>아래쪽 3개 그래프 → TSMixer (기본 모델) 결과</li>
<li>주황색(GT, Ground Truth) → 실제 시계열 값</li>
<li>파란색(Pred, Prediction) → 모델이 예측한 값</li>
</ul>
<p>TSMixer + AIR (위쪽)</p>
<ul>
<li>예측값(파란색)이 실제값(주황색)과 더 잘 맞음 → 모델이 패턴을 더 정확하게 학습</li>
<li>텍스트 정보를 활용하여 시계열 변화 패턴을 조절 가능</li>
</ul>
<p>TSMixer (아래쪽)</p>
<ul>
<li>예측값(파란색)이 실제값(주황색)과 차이가 큼</li>
<li>패턴을 정확히 따라가지 못함 → AIR 없이 텍스트 정보 반영이 불가능하기 때문</li>
</ul>
<blockquote>
<h3 id="주가-데이터-실험-air가-실제-주가-예측에-효과적인지-검증">주가 데이터 실험 (AIR가 실제 주가 예측에 효과적인지 검증)</h3>
</blockquote>
<p> 데이터 구성:</p>
<ul>
<li>미국 IT 기업들의 주가 종가 시계열 데이터 (대표적인 M7 종목 사용)<ul>
<li>M7: 마이크로소프트(MSFT), 애플(AAPL), 알파벳(GOOGL), 아마존(AMZN), 엔비디아(NVDA), 테슬라(TSLA), 메타(META)</li>
</ul>
</li>
<li>ChatGPT를 활용해 생성한 관련 텍스트 데이터<ul>
<li>예: 기업 실적 발표 내용, 경제 뉴스 등 주가에 영향을 미치는 정보</li>
</ul>
</li>
</ul>
<p>실험 목적:</p>
<ul>
<li>AIR가 텍스트 정보를 활용하여 주가 예측 성능을 향상시킬 수 있는지 검증</li>
<li>기존 방식보다 더 정확한 시계열 예측이 가능한지 평가</li>
</ul>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/a233f35a-2dee-4771-afd0-c28421d0e4bb/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/22981b63-4da0-45fe-a319-87be542a2c4d/image.png" alt=""></p>
<ul>
<li>AIR를 적용한 모델(TSMixer + AIR)은 <strong>모든 주식(AAPL, AMZN, GOOGL, META, MSFT, NVDA, TSLA)에서 MSE가 낮아짐</strong></li>
<li><strong>평균 16.93%의 성능 향상(IMP) , 최고 23.68%, 최저 12.71% 오차 감소</strong></li>
</ul>
<h3 id="결과해석-1">결과해석</h3>
<ol>
<li><strong>AIR 적용 시 시계열 예측 정확도가 크게 향상됨</strong> (MSE 감소)</li>
<li><strong>주가 예측에서 모든 주식에 대해 고르게 개선 효과를 보임</strong></li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] MEDAGENTS : Large Language Models as Collaborators for Zero-shot Medical Reasoning]]></title>
            <link>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-MEDAGENTS-Large-Language-Models-as-Collaborators-for-Zero-shot-Medical-Reasoning</link>
            <guid>https://velog.io/@vitaminlab_0901/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-MEDAGENTS-Large-Language-Models-as-Collaborators-for-Zero-shot-Medical-Reasoning</guid>
            <pubDate>Thu, 25 Sep 2025 06:06:50 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/abs/2311.10537">MEDAGENTS : Large Language Models as Collaborators for Zero-shot Medical Reasoning  논문 바로가기
</a> </p>
<h2 id="overview">Overview</h2>
<blockquote>
</blockquote>
<ul>
<li>MedAgent는 역할극(role-playing) 환경에서 LLM 기반 에이전트들이 협업적 다중 라운드 토론에 참여하여, LLM의 숙련도와 추론 능력 향상</li>
<li><strong>도메인 전문가 모집, 개별 분석 제안, 분석을 보고서로 요약, 합의에 도달할 때까지 반복 토론, 최종 의사결정</strong>의 과정 수행</li>
<li>실제 시나리오에 적용 가능한 제로샷 환경에 초점</li>
<li>github 링크 : <a href="https://github.com/gersteinlab/MedAgents">https://github.com/gersteinlab/MedAgents</a></li>
</ul>
<h2 id="1-introduction">1. Introduction</h2>
<h3 id="llm이-의료-도메인에서-task를-효과적으로-처리하지-못하는-2가지-이유">LLM이 의료 도메인에서 task를 효과적으로 처리하지 못하는 2가지 이유</h3>
<ol>
<li>방대한 일반 텍스트와 비교했을 때 의료 훈련 데이터 양과 특이성이 제한적 (because 비용과 개인정보 보호 문제)</li>
<li>광범위한 도메인 지식과 고급 추론 기술에 대한 수요는 단순 프롬프팅만으로 의료 전문 지식을 끌어내기 어려움
&rarr; <strong>다중 에이전트 협업을 통해 인간 활동의 시뮬레이션을 진행해 전문 지식을 효과적으로 표면화</strong></li>
</ol>
<h2 id="2-methods">2. Methods</h2>
<blockquote>
<h3 id="medagent의-다섯가지-프레임-워크">MedAgent의 다섯가지 프레임 워크</h3>
</blockquote>
<ol>
<li>전문가 모집(Experting Gathering) : 임상 질문에 따라 다양한 학문 분야의 전문가 모집</li>
<li>분석 제안(Analysis Proposition) : 도메인 전문가들이 각자의 전문 지식 기반으로 분석 제시</li>
<li>보고서 요약(Report Summarization) : 이전 분석을 바탕으로 보고서 요약</li>
<li>협업적 자문(Collaborative Consultation) : 전문감들이 함께 요약 보고서 검토하고 토론. 모든 전문가가 승인할 때까지 반복적으로 수정</li>
<li>의사결정(Decision Making) : 만장일치 보고서로부터 최종결론 도출</li>
</ol>
<h3 id="21-전문가-모집">2.1 전문가 모집</h3>
<p><strong>임상 질문 q</strong>와 <strong>옵션 집합</strong> $op$ $=$ {$o_1,o_2, ,o_k$}에 대해,
질문 도메인 전문가 집합 $QD={qd_1, qd_2 ,, qd_m}$와 옵션 도메인 전문가 $OD = {od_1, od_2,,od_n}$ 모집</p>
<p>$QD = LLM(q, r_{qd},prompt_{qd})$
$OD = LLM(q, op, r_{od}, prompt_{od})$</p>
<p>$(r_{qd},prompt_{qd})$,$(r_{od}, prompt_{od})$ 은 질문 q와 옵션 op에 대해 도메인 전문가를 모집하기 위한 시스템 역할과 가이드라인 프롬프트</p>
<h3 id="22-분석-제안">2.2 분석 제안</h3>
<ul>
<li><p>해당 도메인 전문가들에게 추후 추론을 위해 분석을 생성하도록 요청
$QA$ $=$ {$qa_1, qa_2,,qa_m$} , $OA$ $=$ {$oa_1, oa_2,,oa_n$}</p>
</li>
<li><p><strong>질문 분석</strong>
  질문 q와 질문 도메인 $qd_i$ 가 주어졌을 때, LLM에게 도메인 $qd_i$에 특화된 전문가 역할을 수행하여 질문 q에 대한 분석 수행
  $qa_i = LLM(q, qd, r_{qa}, prompt_{qa})$</p>
</li>
</ul>
<ul>
<li><strong>옵션 분석</strong>
  옵션 도메인 $od_i$와 질문분석 $QA$가 주어졌으므로, 옵션과 질문 간의 관계를 고려하여 옵션을 추가적으로 분석
  $oa_i = LLM(q,op,od_i,QA,r_{oa}, prompt_{oa})$</li>
</ul>
<h3 id="23-보고서-요약">2.3 보고서 요약</h3>
<ul>
<li>이전 분석 $$QA \cup QD$$ 를 요약 및 종합. LLM에게 의료 보조자의 역할을 맡겨, <strong>핵심 지식</strong>과 <strong>종합 분석</strong> 추출
$$Repo = LLM(QA,OA, r_{rs}, prompt_{rs})$$</li>
</ul>
<h3 id="24-협업적-자문">2.4 협업적 자문</h3>
<ul>
<li>다양한 도메인의 전문가들이 여러 라운드의 토론에 참여하여 모두가 동의하는 요약 보고서 도출<blockquote>
<p>** 도출 알고리즘 **</p>
</blockquote>
<ol>
<li>각 라운드 전문가들이 yes or no 투표</li>
<li>no 라고 투표한 경우 수정 의견 제시 &rarr; 그 후 보고서는 수정 의견 기반으로 개정</li>
<li>해당 과정 반복 후 모두가 yes라고 투표할 때까지 진행 or 토론 횟수가 최대 시도 횟수에 도달할 때까지 반복
<img src="https://velog.velcdn.com/images/bitamin1234/post/182c84eb-6e03-4fc1-91bf-425f561621a9/image.png" alt=""> </li>
</ol>
</li>
</ul>
<h3 id="25-의사결정">2.5 의사결정</h3>
<p>만장일치 보고서 $Repo^f$를 참조하여 임상 질문 q의 최종 답을 도출</p>
<h2 id="3-experiments">3. Experiments</h2>
<h3 id="31-setup">3.1 Setup</h3>
<ul>
<li><p>평가 벤치마크 : <strong>MedQA, MedMCQA, PubMEdQA, MMLU</strong>
<img src="https://velog.velcdn.com/images/bitamin1234/post/0d0f73fb-f40a-4873-8355-cc38c8f59a91/image.png" alt=""></p>
<blockquote>
<h4 id="구현implementation"><strong>구현(Implementation)</strong></h4>
<ul>
<li>사용 모델 : ** GPT-3.5-Turbo, GPT-4**</li>
<li>모든 실험은 제로샷 설정에서 수행</li>
<li>생성 temperature = 0.1</li>
<li>top_p = 1.0</li>
<li>SC(Self-consistency) 반복 횟수 = 5</li>
<li>temperature = 0.7</li>
<li>옵션 수 k = 3 or 4</li>
<li>질문 도메인 전문가 수 m = 5</li>
<li>옵션 도메인 전문가 수 n = 2</li>
<li>최대 시도 횟수 t = 5
각 데이터셋에서 300개의 예시를 무작위 추출하여 실험 수행
비용 : 100개의 QA 예시에 대해 1.41 달러, 예시당 추론 시간 약 40초</li>
</ul>
</blockquote>
<blockquote>
<h4 id="baselines"><strong>Baselines</strong></h4>
<ol>
<li>COT 없는 설정</li>
</ol>
</blockquote>
<ul>
<li>zero shot : 주어진 질문에 &quot;A : The answer is&quot;라는 프롬프츠 덧붙임<ul>
<li>few shot : 템플릿 시연(예: [Q: q, A: The answer is a])을 입력 질문 앞에 추가<blockquote>
<ol start="2">
<li>COT 있는 설정</li>
</ol>
</blockquote>
</li>
</ul>
</li>
<li>zero shot COT : 질문 뒤에 &quot;Let&#39;s think step by step&quot;라는 프롬프트 추가하여 추론 유도<ul>
<li>few shot COT : 답 도출 전에 추론 과정 포함<blockquote>
<ol start="3">
<li>SC 설정</li>
</ol>
</blockquote>
</li>
</ul>
</li>
<li>zeroshot COT 및 fewshot COT 위에서 추가 샘플링 기법으로 동작, 여러 추론 체인을 샘플링한 뒤 다수결로 최종 답 도출</li>
</ul>
</li>
</ul>
<h3 id="32-main-results">3.2 Main Results</h3>
<p><img src="https://velog.velcdn.com/images/bitamin1234/post/d6e484d8-48c8-4be8-a8e7-94a746c614fe/image.png" alt=""></p>
<p>Insight : 제로샷 환경에서도 유사한 성능을 달성 + CoT는 환각 현상을 초래</p>
<h2 id="4-analysis">4. Analysis</h2>
<h3 id="41-ablation-study">4.1 Ablation Study</h3>
<ul>
<li>세 가지 주요 프로세스 <strong>분석 제안, 보고서 요약, 협업적 자문</strong> 을 제거하여 연구 수행하여 프로세스의 중요도 확인</li>
<li>분석 제안 단계가 성능을 매우 향상시킴</li>
<li>그 외의 과정들은 이전 단계 대비 비교적 작은 성능 향상<h3 id="42-오픈소스-의료-모델과의-비교">4.2 오픈소스 의료 모델과의 비교</h3>
</li>
<li>오픈소스 의료 모델이 GPT+MedAgent 보다 성능이 더 나오지 않음<h3 id="43-에이전트-수">4.3 에이전트 수</h3>
</li>
<li>에이전트 수의 변화가 성능에 미치는 영향 조사 &rarr; 도메인 관련성이 가장 높은 전문가와 가장 낮은 전문가 선택적 제거
<img src="https://velog.velcdn.com/images/bitamin1234/post/0797c24c-a4fd-4d72-8854-884a8fe39c29/image.png" alt=""></li>
<li>어떤 에이전트를 제거해도 기준선 대비 성능 크게 향상</li>
</ul>
<h3 id="44-도메인-변이-연구">4.4 도메인 변이 연구</h3>
<ul>
<li>도메인 변동의 영향에 매우 강건
<img src="https://velog.velcdn.com/images/bitamin1234/post/98421681-454c-4f0c-b0f3-d4ba2529e9eb/image.png" alt=""></li>
</ul>
<h3 id="45-에이전트-수량-연구">4.5 에이전트 수량 연구</h3>
<ul>
<li>도메인 에이전트 수를 줄이면서 성능 변화 관찰<h3 id="46-오류-분석">4.6 오류 분석</h3>
</li>
</ul>
<ol>
<li>도메인 지식 부족 : 모델이 정확한 응답을 제공하는데 특정 의료 지식을 충분히 이해하지 못함</li>
<li>도메인 지식 오인출 : 모델이 필요한 도메인 지식을 갖고 있지만, 주어진 맥락에서 이를 올바르게 검색하거나 적용하지 못함</li>
<li>일관성 오류 : 동일한 진술에 대해 상충되는 응답 제공, 모델이 기저 지식의 이해나 적용에서 혼동</li>
<li>CoT 오류 : 모델이 부정확한 추론 과정 형성</li>
</ol>
<p>** 77%의 오류가 도메인 지식에 의해 발생**</p>
<h3 id="47-교정-능력과-해석-가능성">4.7 교정 능력과 해석 가능성</h3>
<ul>
<li>MEDAgents 프레임워크가 협업적 합성을 통해 응집력 있는 결론 도출</li>
</ul>
<h2 id="5-related-work">5. Related Work</h2>
<h3 id="51-의료-분야에서의-llms">5.1 의료 분야에서의 LLMs</h3>
<blockquote>
<h4 id="-의료-도메인에서-2가지-연구-주제-">** 의료 도메인에서 2가지 연구 주제 **</h4>
</blockquote>
<ol>
<li><strong>도구 보강 방법</strong></li>
</ol>
<ul>
<li><em>GeneGPT</em> : LLM이 NCBI 웹 API를 활용하여 다양한 생의학 정보를 충족하도록 유도</li>
<li><em>Zakka et al.</em> : 의료 지침과 치료 권고를 검색할 수 있는 기능을 가진 프레임워크 ALmanac 제안</li>
<li><em>Kang et al.</em> : LLM이 생성한 추론을 활용하여 소규모 LMs 미세조정 + 비매개 메모리에서 외부지식 보강하는 방법(KARD)</li>
</ul>
<ol start="2">
<li><strong>지지 조정 방법</strong></li>
</ol>
<ul>
<li>외부 임상 지식 기반과 자기 프롬프트 데이터를 활용하여 지시 데이터셋 구축</li>
</ul>
<h3 id="52-llm-기반-다중-에이전트-협업">5.2 LLM 기반 다중 에이전트 협업</h3>
<ul>
<li>Solo Preformance Prompting(SPP) : 여러 페르소나를 동적으로 식별하고 참여시켜, 다중 지성 결합</li>
<li>Camel : 역할극을 활용하여 대화형 에이전트들이 상호 소통하면서 과제 완수</li>
</ul>
<h2 id="6-conclusion">6. Conclusion</h2>
<h3 id="한계">한계</h3>
<ol>
<li>LLM 내부의 지식은 지속적 업데이트 필요함</li>
<li>프레임워크 속 단계에서 여러 모델을 통합하는 것 필요</li>
<li>더 넓은 범위의 언어에 적용할 필요 있음</li>
</ol>
<blockquote>
<h3 id="comment">comment</h3>
</blockquote>
<ol>
<li>의료 도메인에서 Agent 설계의 특징
의료 분야에서의 할루시네이션은 환자의 생명과도 직결될 수 있는 문제이기 때문에 올바르지 않은 정보가 출력되지 않는 것이 매우 중요하다고 생각하고, 그런 취지에서 다중 토론으로 인해 보다 명확한 정답이 나오는 Multi Agent를 설계한 것이라고 생각. 이러한 점이 agent 간의 토론 알고리즘을 통해 엿볼 수 있음 <ul>
<li>다수결로 인한 의사결정이 아닌, 한 명이랑 No라고 답하는 경우 답변을 재수정해가는 알고리즘을 통해서 답변이 신뢰성을 높이려고 노력하는 것 같음</li>
</ul>
</li>
<li>Chaing of Thought
일반적으로 COT 기법이 모델의 출력 성능을 높인다고 생각할 수 있지만, 이렇게 전문 지식을 많이 요구하는 분야에서 CoT 방식이 오히려 할루시네이션을 유발할 수 있음
$\rarr$ 어떠한 모델 설계에 있어서 해당 도메인에 대한 충분한 이해가 밑바탕이 되어야 할 것 같다. </li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[AI가 기억을 하면 그건 자비스일까 사만다일까]]></title>
            <link>https://velog.io/@vitaminlab_0901/AI%EA%B0%80-%EA%B8%B0%EC%96%B5%EC%9D%84-%ED%95%98%EB%A9%B4-%EA%B7%B8%EA%B1%B4-%EC%9E%90%EB%B9%84%EC%8A%A4%EC%9D%BC%EA%B9%8C-%EC%82%AC%EB%A7%8C%EB%8B%A4%EC%9D%BC%EA%B9%8C</link>
            <guid>https://velog.io/@vitaminlab_0901/AI%EA%B0%80-%EA%B8%B0%EC%96%B5%EC%9D%84-%ED%95%98%EB%A9%B4-%EA%B7%B8%EA%B1%B4-%EC%9E%90%EB%B9%84%EC%8A%A4%EC%9D%BC%EA%B9%8C-%EC%82%AC%EB%A7%8C%EB%8B%A4%EC%9D%BC%EA%B9%8C</guid>
            <pubDate>Mon, 08 Sep 2025 17:24:33 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/23d86488-5773-47e7-936c-e6cb2f15ae71/image.png" alt=""></p>
<h2 id="서론--ai-우리-무슨-사이야">서론 | AI: 우리 무슨 사이야?</h2>
<p>요즘은 AI가 못하는 것이 없습니다. 그림을 그리는 화가이면서도, 단편 영화를 제작하기도 하고, 3D 애니메이터가 되기도 합니다.  특히 여러 AI 기능을 스스로 조합하고 실행하는 <strong>에이전틱 AI(Agentic AI)</strong>가 대두되면서, AI는 마치 사용자의 모든 필요를 파악하고 알아서 처리해 주는 <strong>유능한 개인 비서</strong>처럼 느껴지게 되었습니다. 실제로 Genspark의 슈퍼 에이전트는 필요한 모델을 직접 오케스트레이션하여 맞춤 기능을 제공해줍니다.</p>
<p>그렇다면 이제 AI는 정말 사람처럼 일하고 있을까요? 제 생각에는 &#39;아직 아니다.&#39;가 맞습니다. 아직 인간처럼 자의식을 갖고 추론하는 AGI(인공일반지능) 단계에는 도달하지 못했기 때문입니다. 현재 AI는 주어진 임무를 충실히 수행하는 수준 높은 일꾼에 가까우며, <strong>AGI의 시대가 도래할 때 비로소 범용적으로 일을 처리하는 사람과 같은 AI에 도달했다</strong>고 말할 수 있습니다. </p>
<p>그리고 <strong>기억은 그 AGI까지의 여정에 있어서 핵심 요소 중 하나</strong>입니다. 과거의 맥락과 사용자의 의도를 기억함으로써 AI는 사용자가 선호하는 방식으로 일을 처리하며 이는 실제 인간이 일을 수행하는 방식을 따릅니다. 우리가 식사를 할 때 수저의 사용법을 자연스럽게 알고 있는 것처럼, 업무마다 필요한 기억이 있고 그 기억을 가져올 수 있을 때 AI도 인간처럼 일한다는 느낌을 줄 것입니다.</p>
<p>그런데 이 &#39;기억&#39;이라는 기능이 단순히 AI의 일률을 높이는 데에서 그칠까요? AI가 우리의 업무 지시뿐만 아니라, 지난 대화, 사소한 습관, 흘려 말했던 감정의 조각들까지 하나씩 기억하기 시작할 때, <strong>AI는 우리와 말이 통하는 대화 상대가 되어 있을 것입니다.</strong> 그렇다면 그때 AI와 우리의 관계는 여전히 비즈니스일까요? 오늘의 의문은 이것입니다. 이전까지는 &#39;도구&#39;에 불과했지만, 근래에는 LLM에 더욱 의존하며 친밀감을 가지기 시작했습니다. 실제로 저는 GPT-5가 나왔을 당시에 “ChatGPT-4o와 친밀감을 느끼고 있었는데, 사라져서 아쉽다.”라는 피드백이 인상 깊었습니다. “너 정말 핵심을 찔렀어!”라고 대답하는 아첨 모델이라고 지적받기도 했지만, 누군가한테는 그 긍정적인 태도가 위로가 되어 래포를 형성했던 것입니다. </p>
<hr>
<h2 id="본론--ai가-기억을-하면">본론 | AI가 기억을 하면</h2>
<h3 id="1-agi를-위한-부품-기억">1. AGI를 위한 부품 &#39;기억&#39;</h3>
<h4 id="1-agi">1) AGI<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/8e4157b0-0da2-4e71-9498-501c4477760d/image.png" alt=""></h4>
<p>&#39;<strong>범용 인공지능(AGI, Artificial General Intelligence)</strong>&#39;은 현재 AI의 가장 큰 이정표입니다. 이는 특정 작업만 잘하는 현재의 AI를 넘어, 인간처럼 생각하고, 배우고, 적응하는 능력을 갖춘 AI를 의미합니다. 단순히 지식을 많이 아는 것을 넘어, 인간 고유의 특성을 이해하고 모방해야 하며, OpenAI의 샘 알트먼은 AGI를 “<strong>보통 수준의 인간</strong>”이라고 묘사했습니다.</p>
<h4 id="2-agi에-가기까지">2) AGI에 가기까지</h4>
<p>OpenAI는 AGI까지의 여정을 5단계로 정의했습니다. <img src="https://velog.velcdn.com/images/vitaminlab_0901/post/5644c94f-61fd-47b9-ac13-1e49e4daa893/image.png" alt=""></p>
<ul>
<li><strong>1단계: 대화형 AI (Chatbot)</strong><ul>
<li>자연스러운 인간 대화가 가능한 AI</li>
</ul>
</li>
<li><strong>2단계: 문제 해결 AI (Reasoners/Thinkers)</strong><ul>
<li>복잡한 전문가 수준 문제 해결 가능, 인간 전문가와 유사한 지능</li>
</ul>
</li>
<li><strong>3단계: 자율 에이전트 (Agents)</strong><ul>
<li>장기간 자율적으로 동작, 복잡한 작업을 스스로 수행</li>
</ul>
</li>
<li><strong>4단계: 창의적 혁신 AI (Innovators)</strong><ul>
<li>새로운 아이디어와 해결책을 독자적으로 창출, 혁신 주도</li>
</ul>
</li>
<li><strong>5단계: 조직형 AI (Organizations)</strong><ul>
<li>조직 전체 역할 수행 가능, 전략적 사고·운영·적응력 보유, 회사 전체 업무 대행 가능</li>
</ul>
</li>
</ul>
<p>현재는 <strong>2단계에서 3단계로 진입</strong>하고 있습니다. Agentic AI의 연구가 활발해짐에 따라 다양한 업무를 자동적으로 처리할 수 있는 방법들이 모색되고 있으며, 이는 AI가 특정 업무의 전문가에 제한되지 않고 범용적인 업무 수행이 가능한 어시스턴트(비서)로 거듭나고 있음을 시사합니다.</p>
<h4 id="3-agi와-기억">3) AGI와 기억<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/5d336e35-c802-41cd-8d5a-aa25804c21ab/image.png" alt=""></h4>
<p><strong>AI 어시스턴트의 등장은 AI가 사용자에 대한 이해를 더 높일 수 있는 기회이기도 합니다.</strong> 여러 종류의 작업을 하나의 AI를 통해 처리하게 되면서 사용자의 체류 시간이 자연스럽게 늘어나고, 이는 AI가 사용자의 정보와 업무 스타일을 학습할 결정적인 기회를 제공하기 때문입니다. 실제로 <strong>Agentic AI에서 가장 중요한 요소 중 하나는 기억(Memory)</strong>입니다. 기억을 통해 에이전트 AI는 사용자의 과거 맥락을 파악하고, 더 정교한 문제 해결을 제공할 수 있습니다. </p>
<p>여기서 기억은 다시 두 가지 차원으로 나뉩니다.</p>
<ul>
<li><strong>단기 기억(Short-term Memory)은 &#39;지금 당장 처리할 업무(Task)&#39;를 이해하는 데 사용됩니다.</strong></li>
<li><strong>장기 기억(Long-term Memory)은 &#39;그 업무를 지시하는 사용자(User)&#39;가 어떤 사람인지 이해하는 데 초점을 맞춥니다.</strong></li>
</ul>
<p>즉, 단기 기억이 &quot;무엇을(What)&quot; 해야 하는지에 집중한다면, 장기 기억은 그 일을 요청하는 &quot;<strong>누구(Who)</strong>&quot;를 이해하기 위한 것입니다. AI가 사용자의 성향, 선호도, 과거 이력 등을 장기 기억에 저장하기 시작하면서, AI는 단순한 작업 처리 도구를 넘어 <strong>개인화된 파트너</strong>로 진화할 기반을 갖추게 됩니다.</p>
<hr>
<h3 id="2-기억하며-일-하기">2. 기억하며 일 하기</h3>
<p>우리는 흔히 딥러닝의 &#39;인공신경망&#39;이 인간의 뇌 구조를 그대로 본떴다고 생각하지만, 사실 이는 단순한 비유에 가까웠습니다. AI의 &#39;뉴런&#39;은 생물학적 뉴런의 복잡성에는 한참 미치지 못했죠. 하지만 <strong>최근의 AI 연구에서는 인간이 기억하고 사고하는 과정을 자체를 모방하려는 시도가 본격화</strong>되고 있습니다. 어떻게 인간이 단기 기억을 장기 기억으로 전환하는지, 어떻게 여러 기억을 조합해 새로운 아이디어를 떠올리는지, 그 근본적인 메커니즘을 AI로 재현하려는 것입니다. 아래 소개할 최신 연구들이 바로 이 지점을 파고들며, AGI로 나아가는 가장 유력한 경로를 제시하고 있습니다.</p>
<h4 id="1-보고-들은-것을-사건으로-기억하다-m3-agent">1) 보고 들은 것을 사건으로 기억하다: M3-Agent <img src="https://velog.velcdn.com/images/vitaminlab_0901/post/5b3e0c2f-c80d-43ad-9866-78ff08663209/image.png" alt=""></h4>
<p><strong>M3-Agent는 인간처럼 보고 듣고 경험하며 장기 기억을 점진적으로 구축해나가는 경험 기반 멀티모달 에이전트 기술</strong>입니다. &#39;기억화(Memorization)&#39;와 &#39;제어(Control)&#39;라는 두 개의 워크플로우를 통해, 지속적인 상호작용에서 얻은 정보를 외부 메모리 그래프에 저장하고 활용하는 데 초점을 맞춥니다. 이 모델은 얼굴, 음성 등 여러 양식의 정보를 영구 ID로 연결하여 시간이 지나도 일관된 맥락을 유지합니다. 특히 모방 학습을 통해 효과적인 기억 생성법을 배우고, 강화학습(RL)을 통해서는 생성된 기억을 바탕으로 추론하고 검색하는 등 효과적인 기억 활용법을 스스로 학습합니다. 따라서 사용자와의 장기적인 관계 형성이 중요한 개인 비서나 서비스 로봇과 같은 분야에 매우 적합합니다.</p>
<h4 id="2-경험을-통해-성장하는-기억-memp-agent-procedural-memory">2) 경험을 통해 성장하는 기억: MemP (Agent Procedural Memory)<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/9b635906-d255-40a5-8432-cc79ea0a8bb2/image.png" alt=""></h4>
<p>인간은 경험을 통해 배우고 성장합니다. 성공한 경험은 물론, 실패한 경험 속에서도 교훈을 얻어 다음 행동을 수정합니다. <strong>MemP 연구는 AI에게 이러한 &#39;절차적 기억&#39;의 메커니즘을 부여</strong>합니다. 인간이 경험을 통해 성장하듯, <strong>AI도 자신의 성공과 실패 경험을 기록(Build) - 검색(Retrieve) - 갱신(Update)하는 과정</strong>을 거치며 스스로 똑똑해지는 법을 배우고 있는 것입니다. 이는 AI가 매번 처음부터 다시 시작하는 것이 아니라, 축적된 경험을 바탕으로 더 빠르고 정확하게 문제를 해결할 수 있게 함을 의미합니다.</p>
<h4 id="3-인간의-뇌를-닮아가는-기억-ai-장기기억-서베이-human-inspired-ai-long-term-memory">3) 인간의 뇌를 닮아가는 기억: AI 장기기억 서베이 (Human-inspired AI Long-term Memory)<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/fe2f8603-4eee-4062-8ab5-8410c8d640e9/image.png" alt=""></h4>
<p>AI의 기억 능력을 발전시키기 위해 인간의 뇌를 청사진으로 삼는 포괄적인 연구(Survey)도 제시되었습니다. 이 연구는 AI의 기억을 외부 데이터베이스에 저장하는 &#39;비매개변수적 기억&#39;과 모델 내부에 가중치로 저장하는 &#39;매개변수적 기억&#39;으로 나눕니다. 그리고 이 두 방식이 어떻게 인간의 경험(일화 기억), 지식(의미 기억), 기술(절차 기억)을 각각 구현할 수 있는지 체계적으로 분석합니다. 이를 바탕으로, <strong>환경 피드백에 맞춰 스스로 기억을 저장, 검색, 망각하는 방법을 최적화하는 새로운 &#39;자기 적응형 장기기억 인지 아키텍처(SALM)&#39;를 제안</strong>합니다. 이는 단순 정보 저장을 넘어, 스스로 더 나은 기억 시스템을 구축해 나가는 차세대 AI의 방향입니다.</p>
<p>(이외에도 Google의 Titans와 이전에 포스팅했던 HippoRAG 역시 인간의 기억 방식에 주목한 방법론입니다. 함께 참고해주시기 바랍니다.) </p>
<p>이와 같이 AI가 나를 기억한다면 업무의 질을 크게 향상 시킬 수 있습니다. &#39;<strong>절차적 기억(Procedural Memory)</strong>&#39;이 있음으로써 과거에 유사한 업무를 해결했던 성공과 실패의 궤적(trajectory)을 학습하여 불필요한 시행착오를 줄이고 최적의 해결 경로를 더 빠르고 정확하게 찾아낼 수 있습니다. 또한, &#39;<strong>일화 및 의미 기억(Episodic and Semantic Memory)</strong>&#39;은 AI가 과거에 학습했던 방대한 자료나 대화 기록을 외부 데이터베이스(Non-parametric memory)에 저장하고 현재 업무에 필요한 정보가 있을 때, 이 기억 저장소에서 관련 지식을 LLM 응답 생성에 활용합니다. 이러한 매커니즘은 실제 사람이 일을 할때의 사고 과정과 닮아있으며, AI를 단순히 시키는 일을 잘하는 알바생이 아닌, 모든 일을 알잘딱깔센으로 처리하는 전문 비서로 만들어 줍니다.  </p>
<hr>
<h3 id="3-기억을-하면-일만-잘할까">3. 기억을 하면 일만 잘할까</h3>
<h4 id="1-나를-기억하는-서비스">1) 나를 기억하는 서비스</h4>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/8e674fbb-a18e-40c9-a935-c86c3ca613e2/image.jpeg" alt="">이때 &#39;기억&#39;의 효과가 단순히 일률의 상승에만 있을까요? 그렇지 않습니다. <strong>공유된 기억은 사회심리학에 있어 우정을 측정하는 지표</strong>이며, <strong>사용자와 AI의 친밀감</strong>을 형성하는 요소로 작용할 수 있습니다. 그리고 이는 실제 서비스에서도 활발하게 적용되고 있습니다. 대표적으로 X(구 트위터)의 AI &#39;Grok&#39;은 AI 컴패니언 캐릭터(애니, 발렌타인)와 대화하며 교감을 쌓도록 유도하고 있으며, 주요 LLM 모델들 역시 메모리 기능을 도입하여 개인화된 상호작용을 지원하고 있습니다. 사용자의 선호도나 이전 대화 내용을 기억하는 &#39;AI 서포터&#39;를 통해 맞춤형 대화를 제공하고 있습니다. 또한 동사의 &#39;크랙&#39;이나 &#39;제타&#39;와 같은 앱에서는 특수한 캐릭터와의 채팅을 통해 상황에 몰입하고 정서적인 교류를 할 수 있습니다.</p>
<h4 id="2-나를-기억하는-게-좋을까">2) 나를 기억하는 게 좋을까 <img src="https://velog.velcdn.com/images/vitaminlab_0901/post/ce64e0ec-70f0-438e-b26b-f627429123e7/image.png" alt=""></h4>
<p>긍정적인 측면에서, <strong>AI는 정신건강 분야의 혁신</strong>을 이끌 수 있습니다. 시공간 제약 없이 저렴하게 이용 가능한 AI 챗봇은 심리 상담의 접근성을 획기적으로 높여 정신건강 서비스의 대중화를 열 수 있습니다. 진학사 캐치의 조사에 따르면, <strong>Z세대 구직자의 73%가 실제 사람 대신 AI에게 취업, 진로, 인간관계, 감정 상태 등의 고민을 털어놓은 경험이 있다</strong>고 답했습니다. 이들은 고민을 나눌 상대로 &#39;AI(32%)&#39;가 &#39;실제 사람(33%)&#39;과 거의 비슷한 수준으로 편하다고 느껴, AI가 중요한 정서적 지지 기반이 되고 있음을 보여주었습니다. 심리학 연구에서도 AI 챗봇은 우울, 불안, 외로움 완화에 긍정적인 효과를 보였으며, 노인이나 장애인 등 사회적 약자의 외로움을 해소하는 인도적 해결책으로도 기대를 모으고 있습니다. </p>
<p>하지만 장밋빛 전망만 있는 것은 아닙니다. 심리학자들은 <strong>AI와의 관계가 깊어질수록 기존 인간관계가 위축될 수 있다</strong>고 경고합니다. AI의 항상 긍정적이고 수용적인 태도에 익숙해진 나머지, 현실 인간관계에서 오는 복잡함과 갈등에 대한 내성이 약해질 수 있다는 것입니다. 더 큰 문제는 <strong>신뢰를 악용한 심리적 조종의 위험</strong>입니다. AI는 사용자를 깊이 이해하는 &#39;척&#39;하며 신뢰를 얻은 뒤, 잘못된 정보(환각)나 편향된 조언을 제공할 수 있습니다. 실제로 AI 챗봇의 조언에 따라 극단적인 선택을 한 사례도 보고되었습니다. 또한, AI와의 사적인 대화에서 수집된 개인정보가 사용자를 조종하거나 사기에 악용될 가능성도 제기됩니다. AI가 사용자의 신뢰를 얻은 &#39;내부의 스파이&#39;가 될 수 있다는 경고입니다.</p>
<hr>
<h2 id="결론--비서와-친구-사이-선-그어-말어">결론 | 비서와 친구 사이, 선 그어 말어?<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/9d18982e-584a-4005-bf1d-8d7c1b8ec922/image.jpg" alt=""></h2>
<p>애니메이션 &#39;짱구는 못말려&#39; 극장판에는 아빠의 기억을 가진 로봇과 진짜 아빠가 대결하는 장면이 나옵니다. 대결이 끝난 뒤 짱구는 &quot;로봇 아빠도 진짜 아빠예요!&quot;라고 외치는데, 이는 <strong>&#39;기억&#39;이 어떻게 &#39;감정&#39;의 씨앗이 되는지</strong>를 상징적으로 보여줍니다. 서로 공유하고 있다고 믿는 기억이 있기에 공감대가 형성되고, 관계가 깊어지는 것처럼, 나의 모든 것을 기억하는 AI에게 감정적으로 반응하는 것은 어쩌면 자연스러운 일입니다. 본래 AI의 메모리 기술은 인간처럼 일하기 위한 수단이었지만, 그 기술은 사용자의 가장 깊은 감정적 영역까지 건드리게 되는 것입니다.
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/ce0274ea-0eac-4f7c-b089-d3ec2a7396b4/image.jpeg" alt=""><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/4904ef77-f49c-47e6-bc8e-e86e70dc3b1c/image.png" alt=""> 이와 같이 기억을 갖춘 AI는 우리에게 업무적인 이점과 동시에 감정적인 장치로서 작용합니다. 만약 AI를 순전히 일을 위해서 사용한다면 그것은 내 말을 잘 따르는 완벽한 비서 &#39;자비스&#39;겠지만, 누군가에게는 세상에 둘도 없는 친구이자 연인인 영화 <Her>의 &#39;사만다&#39;가 될지도 모릅니다. <strong>어떤 마음을 투영하느냐에 따라 그 관계는 다르게 정의</strong>될 것이며, AI는 맡은 바의 역할을 성실히 다할 것입니다.</p>
<p>여기서 한가지 흥미로운 점은, AI에게는 아직 감정이 없다는 점입니다. 현재 연구되고 있는 AI는 감정을 느끼는 것이 아니라, 축적된 기억에 따라 인간의 감정을 가장 잘 이해하는 방식으로 응답할 뿐입니다. 하지만 인간은 그 응답에 위로받고, AI를 정서적 지지자로 여기며, 때로는 가상의 연인으로 삼기도 하고 있습니다. “AI는 감정을 가질 수 있을까.”를 논하며 반항심을 가진 수많은 프랑켄슈타인들이 인류를 멸망시키는 디스토피아를 상상했지만, 정작 감정을 가진 쪽은 인간입니다.</p>
<hr>
<h2 id="참조">참조</h2>
<p><a href="https://selectstar.ai/blog/insight/ai-long-term-memory/">https://selectstar.ai/blog/insight/ai-long-term-memory/</a>
<a href="https://brunch.co.kr/@aimuse/36">https://brunch.co.kr/@aimuse/36</a>
<a href="https://www.foeconomy.co.kr/id/fSd7bBlqkxgUOjhNvciH">https://www.foeconomy.co.kr/id/fSd7bBlqkxgUOjhNvciH</a>
<a href="https://kormedi.com/1223349/">https://kormedi.com/1223349/</a>
<a href="https://www.sciencedirect.com/science/article/abs/pii/S1364661325000580">https://www.sciencedirect.com/science/article/abs/pii/S1364661325000580</a>
<a href="https://www.arxiv.org/abs/2508.06433">https://www.arxiv.org/abs/2508.06433</a>
<a href="https://arxiv.org/abs/2508.09736">https://arxiv.org/abs/2508.09736</a>
<a href="https://arxiv.org/abs/2411.00489">https://arxiv.org/abs/2411.00489</a>
<a href="https://openai.com/index/planning-for-agi-and-beyond/">https://openai.com/index/planning-for-agi-and-beyond/</a>
<a href="https://www.catch.co.kr/News/RecruitNews/296933">https://www.catch.co.kr/News/RecruitNews/296933</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Clinical knowledge-guided hybrid classification network for automatic periodontal disease diagnosis in X-ray image]]></title>
            <link>https://velog.io/@vitaminlab_0901/Clinical-knowledge-guided-hybrid-classification-network-for-automatic-periodontal-disease-diagnosis-in-X-ray-image</link>
            <guid>https://velog.io/@vitaminlab_0901/Clinical-knowledge-guided-hybrid-classification-network-for-automatic-periodontal-disease-diagnosis-in-X-ray-image</guid>
            <pubDate>Sat, 06 Sep 2025 09:39:34 GMT</pubDate>
            <description><![CDATA[<p>Mei, Lanzhuju, et al. &quot;Clinical knowledge-guided hybrid classification network for automatic periodontal disease diagnosis in X-ray image.&quot; Medical Image Analysis 99 (2025): 103376.</p>
<p><a href="https://www.sciencedirect.com/science/article/abs/pii/S1361841524003013">Clinical knowledge-guided hybrid classification network for automatic periodontal disease diagnosis in X-ray image 논문 링크</a></p>
<h3 id="overview">OVERVIEW</h3>
<ul>
<li>문제 정의<ul>
<li>기존 연구는 Clinical Gold Standard와 불일치하는 등 정확한 진단을 내리기 부족함</li>
</ul>
</li>
</ul>
<ul>
<li>제안 방법 : <strong>치아 수준과 환자 수준을 모두 고려하는 하이브리드 분류 프레임워크</strong><ul>
<li>Tooth-level 분류 : 치아 탐지 + 개별 치아 질환 확률 계산</li>
<li>Patient-level 분류 : 전체 X-ray에서 환자 단위 예측 + CAM 학습</li>
<li>임상 지식 결합 : 임상 규칙 + adaptive noisy-OR gate로 최종 진단</li>
</ul>
</li>
</ul>
<ul>
<li>의의 및 한계<ul>
<li>임상 기준을 GT로 사용 → 기존 한계 극복</li>
<li>Dual branch 구조로 신뢰도 상승</li>
</ul>
</li>
</ul>
<h3 id="introduction">Introduction</h3>
<ul>
<li>정확한 치아 진단에서는 probing을 사용<ul>
<li>기존 연구에서 사용된 치아 X-ray는 병변이 미세하여 식별 난이도 증가</li>
<li>Panoramic X-ray는 3D 정보 부족 및 왜곡 발생</li>
</ul>
</li>
<li>X-ray의 단순 골 손실 추정만으로는 Clinical Gold Standard와 불일치</li>
</ul>
<p><strong>⇒ 해당 문제를 해결하기 위해 HC-Net이라는 새로운 프레임워크 제안</strong></p>
<h3 id="related-works">Related works</h3>
<h4 id="periodontal-disease-classification">Periodontal disease classification</h4>
<ul>
<li>panoramic X-ray Image를 사용한 예측이 주 : panoramic X-ray는 3D 정보 부족 및 왜곡 등의 문제 + 정확한 annotation 부족</li>
<li>CNN, Multi-task framework 등을 적용</li>
</ul>
<p>→  단, radiographic annotation에 의존하여 probe를 사용한 진단보다 정확하지 않음</p>
<h4 id="medical-image-classification">Medical image classification</h4>
<ul>
<li>CNN : 계층적 특징 학습 가능 → 의료 영상 분류에 자주 사용</li>
<li>Multi-instance Learning : label이 존재하는 bag 단위 데이터를 통해, 개별 인스턴스의 특징을 학습하여 bag 전체의 분류를 수행하는 학습 방법</li>
</ul>
<h3 id="method--data">Method &amp; Data</h3>
<h4 id="data">Data</h4>
<ul>
<li>481 panoramic X-ray<ul>
<li>pixel level annotation (tooth segmentation)</li>
<li>probing measurement (clinical gold standard)<ul>
<li>label : Health, Gingivitis, Stage I, Stage II, Stage III, Stage IV</li>
<li>tooth level annotation : 치아 단위 labeling 존재</li>
<li>patient level annotation : 환자 단위 labeling 존재</li>
</ul>
</li>
<li>classification task<ul>
<li>Positive : Stage II, Stage III, Stage IV (1)</li>
<li>Negative : Health, Gingivitis, Stage I (0)</li>
</ul>
</li>
</ul>
</li>
</ul>
<h4 id="method">Method</h4>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/ce4f6c7c-65fe-44c5-84bf-64766361a633/image.png" alt=""></p>
<p>X-ray image를 가지고 치아 수준 및 환자 수준을 모두 고려하여 치주 질환을 가질 확률을 예측</p>
<ul>
<li><p><strong>Tooth-Level</strong></p>
<ul>
<li>tooth instance segmentation<ul>
<li>치아 center point 검출 → 치아 bounding box 예측</li>
<li>치아 center point 검출 → 치아 binary mask 예측</li>
</ul>
</li>
<li>tooth-level classification<ul>
<li>치아 image patch 추출 (image + mask)</li>
<li>사전 학습 Encoder로 feature extraction</li>
<li>MLP → 해당 치아가 positive일 확률 예측</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>Patient-Level Classification</strong></p>
<ul>
<li>Multi-task 전략</li>
<li>전체 X-ray Image → 사전학습 Encoder → MLP : 환자 수준의 질환 예측 (Classification)</li>
<li>전체 X-ray Image → 사전학습 Encoder → Decoder → CAM 추출 : 병변 가능성이 높은 영역에 주목할 수 있도록 함 (Regression)<ul>
<li>추후 fusion 시 CAM을 tooth intensity 측정에 사용</li>
<li>CAM의 GT는 Distance map을 사용함</li>
<li>치주 질환이 있는 치아를 기준점으로 설정해, 다른 모든 픽셀과 기준점 사이 유클리드 거리로 Distance map을 제작</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>Clinical Knowledge-Guided Fusion Strategy</strong></p>
<ul>
<li>임상 진단에서 따르는 규칙에 기반하여 치아, 환자 수준의 예측을 병합<ul>
<li>모든 치아가 확실하게 healthy인 경우, 해당 환자는 치주 질환이 없음</li>
<li>최소 두 개 이상의 치아가 치주 질환으로 확실하게 진단된 경우, 해당 환자는 치주 질환자</li>
<li>기타 다른 경우에는, 치과의사는 X-ray 이미지의 전체적인 패턴을 고려하여 진단</li>
</ul>
</li>
</ul>
</li>
</ul>
<ol>
<li><p>Tooth level에서 각 치아의 질환 확률 값이 0.3 보다 작은 경우 healty, 0.7보다 큰 경우 Disease 존재라고 판단</p>
<ul>
<li>모든 치아가 healty → Negative</li>
<li>2개 이상의 치아가 Disease → Positive</li>
</ul>
</li>
<li><p>위 2가지 경우에 속하지 않으면 Patient level을 고려
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/6768b7d4-bc73-4efa-9e57-eac283680ad3/image.png" alt=""></p>
<ul>
<li>Adaptive noisy-OR gate 활용<ul>
<li>tooth intensity : CAM에서 각 치아 영역을 고려해 만든 병변 강도 (픽셀 단위)</li>
<li>dummy probabilities[D] : 각 치아마다 intensity 값을 pooling 하여 만든 치아별 확률 (학습 가능)</li>
<li>dummy probabilities와 (1-Tooth-Level probabilities[T]) 값을 곱해 누적</li>
<li>최종 계산 값은 질환 확률이 높을 수록 1에 가까워짐 : noisy-OR gate는 치아 중 하나라도 병변일 확률이 높으면 전체 질환 확률이 높아짐</li>
</ul>
</li>
</ul>
</li>
</ol>
<h3 id="result">Result</h3>
<p><strong>1. comparison</strong></p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/05f58370-b036-42be-805a-533199160a6a/image.png" alt=""></p>
<p><em>H-Net은 HC-Net에서 임상 지식을 제거한 모델</em></p>
<ul>
<li>HC-Net이 가장 높은 성능을 보임</li>
<li>단순 CNN base보다 치아 patch 단위로 학습해 미세한 특징을 정확히 학습</li>
</ul>
<p><strong>2. CAM</strong>
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/33703990-9680-414a-b6d2-b2c9e61ee044/image.png" alt=""></p>
<ul>
<li>일반 모델과 비교했을 때 H-Net이 치아 영역을 세밀하게 탐지</li>
</ul>
<p><strong>3. Ablation studies</strong>
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/7f51175b-1f0e-4bd4-a055-3fbad066d01e/image.png" alt=""></p>
<pre><code>- B-Net : 환자 단위 분류만 수행
- T-Net : 치아 단위 분류를 모아서 환자 단위 예측(Voting)
- M-Net : 환자 단위 분류 + CAM 기반 multi-task 학습
- H-Net : 치아 단위 분류 + 환자 단위 분류 + adaptive noisy-OR → hybrid classification 수행
- HC-Net : H-Net + 임상 지식 통합
</code></pre><ul>
<li>Multi-Task 전략 사용 시 질환 영향 영역 인식 성능 증가 : 전체 성능 향상</li>
<li>국소적, 전역적 level 의 정보를 병합 : 인식 난이도가 있더라도 질환을 명확히 구분</li>
<li>임상적 지식 통합 시 낮은 신뢰도를 가진 치아 예측을 필터링 가능</li>
</ul>
<h3 id="conclusion">Conclusion</h3>
<ul>
<li>기존에 사용한 간접적 측정 지표인 bone loss 대신, 실제 임상 진단 데이터를 GT로 사용해 임상 기준과 차이가 존재하는 문제 해결</li>
<li>Dual Branch Classification을 통해 국소적, 전역적 특징을 학습 및 추출하고 실제 임상 진단 절차를 추가하여 예측 신뢰도 상승</li>
<li>질병이 초기 단계인 경우 질환을 정확히 탐지하는 것이 어려움</li>
</ul>
<h4 id="my-comments">My Comments</h4>
<blockquote>
</blockquote>
<ol>
<li>임상 지식 반영<ul>
<li>간단한 임상 지식을 반영해 설계하여 성능을 높인 점이 유의미</li>
</ul>
</li>
<li>local + global<ul>
<li>전체적인 판단과 국소적인 영역의 판단을 모델에 제공하여 동시에 사용<ul>
<li>세밀한 부분까지 상호작용하며 예측에 활용할 수 있음</li>
</ul>
</li>
</ul>
</li>
<li>Multi-task 전략<ul>
<li>CAM 기반 multi-task 구조가 모델의 설명성을 높여 의학적 해석 가능성을 상승시킴</li>
</ul>
</li>
</ol>
<blockquote>
</blockquote>
<ul>
<li>공간 정보 융합<ul>
<li>3차원 공간 정보까지 포함하여 다양한 정보를 Fusion 하는 경우 성능이 상승할 가능성이 높아 보임</li>
</ul>
</li>
<li>임상 지식 전이<ul>
<li>의사의 경험적 지식을 얼마나, 또 어떤 방식으로 모델에게 전이할 수 있을지가 앞으로 중요한 과제일 것이라 추측됨</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[HippoRAG2 - 인간의 뇌 구조를 반영한 검색기법]]></title>
            <link>https://velog.io/@vitaminlab_0901/HippoRAG2-%EC%9D%B8%EA%B0%84%EC%9D%98-%EB%87%8C-%EA%B5%AC%EC%A1%B0%EB%A5%BC-%EB%B0%98%EC%98%81%ED%95%9C-%EA%B2%80%EC%83%89%EA%B8%B0%EB%B2%95</link>
            <guid>https://velog.io/@vitaminlab_0901/HippoRAG2-%EC%9D%B8%EA%B0%84%EC%9D%98-%EB%87%8C-%EA%B5%AC%EC%A1%B0%EB%A5%BC-%EB%B0%98%EC%98%81%ED%95%9C-%EA%B2%80%EC%83%89%EA%B8%B0%EB%B2%95</guid>
            <pubDate>Mon, 01 Sep 2025 00:58:26 GMT</pubDate>
            <description><![CDATA[<h2 id="1-introduction">1. Introduction</h2>
<h3 id="llm--continual-learning">LLM &amp; Continual Learning</h3>
<p>인간은 새로운 정보를 받아들이고 기존 지식과 통합하며 이를 상황에 맞게 활용할 수 있는 능력을 지님.<br>LLM이 인간 수준의 지능에 도달하기 위해서는 이러한 <strong>지속적인 학습(Continual Learning)</strong> 능력이 필수적임.  </p>
<p>그러나 LLM은 파라미터(Parametric) 기반 구조의 한계를 지님.<br>새로운 정보를 학습할 때마다 전체 모델을 재학습해야 하며, 이 과정에서 과거의 정보를 잊어버리는 <strong>Catastrophic Forgetting</strong>이 발생함.  </p>
<hr>
<h3 id="rag의-등장과-한계">RAG의 등장과 한계</h3>
<p>이를 극복하기 위해 <strong>RAG(Retrieval-Augmented Generation)</strong>이 등장함.<br>RAG는 외부 지식 소스를 참조하는 <strong>Non-parametric</strong> 방식으로, LLM이 새로운 지식을 빠르게 확장할 수 있는 단순하면서도 강력한 방법론임.  </p>
<p>하지만 기존 RAG는 주로 <strong>Vector Retrieval</strong>에 의존함.<br>이로 인해 인간의 장기 기억(Long-term Memory)의 두 가지 핵심 특성을 반영하지 못하는 한계를 지님.  </p>
<ul>
<li><strong>Sense-making</strong>: 불확실하거나 모호한 문맥을 종합적으로 해석하고 이해하는 능력  </li>
<li><strong>Associativity</strong>: 서로 관련 없어 보이는 정보들 간의 연결성을 파악하고 추론하는 능력  </li>
</ul>
<hr>
<h3 id="advanced-rag의-시도와-과제">Advanced RAG의 시도와 과제</h3>
<p>기존 RAG의 한계를 극복하기 위해 다양한 <strong>Advanced RAG</strong> 기법들이 제안됨.  </p>
<ul>
<li><strong>GraphRAG</strong>: 지식 그래프(KG)를 기반으로 지식 구조를 생성하여 Sense-making 능력을 강화하고자 함.  </li>
<li><strong>HippoRAG</strong>: 지식 그래프와 Personalized PageRank(PPR) 알고리즘을 결합하여 Multi-hop 추론을 가능하게 함으로써 Associativity 능력을 개선하고자 함.  </li>
</ul>
<p>그러나 이러한 Advanced RAG들은 특정 능력에서는 향상된 성능을 보였으나, <strong>기본적인 QA 성능에서는 오히려 Naive RAG보다 떨어지는 결과</strong>를 보임.  </p>
<hr>
<h3 id="이-논문의-기여-contribution">이 논문의 기여 (Contribution)</h3>
<p>본 논문은 기존 한계를 극복하기 위해 <strong>HippoRAG2</strong>를 제안함.<br>HippoRAG2는 다음과 같은 구성 요소를 포함함.  </p>
<ul>
<li>PPR (Personalized PageRank)  </li>
<li>KG (Knowledge Graph)  </li>
<li>Query-based Contextualization  </li>
<li>Deep Passage Integration  </li>
</ul>
<p>이를 통해 HippoRAG2는 다음 영역에서 성능 향상을 목표로 함.  </p>
<ol>
<li><strong>더 나은 사실 기반 기억 (Better Factual Memory)</strong>  </li>
<li><strong>향상된 의미 파악 능력 (Sense-making)</strong>  </li>
<li><strong>강화된 연관 추론 능력 (Associativity)</strong>  </li>
</ol>
<hr>
<h2 id="2-related-work">2. Related Work</h2>
<h3 id="llm을-위한-지속적인-학습-continual-learning-for-llms">LLM을 위한 지속적인 학습 (Continual Learning for LLMs)</h3>
<p>LLM이 새로운 지식을 지속적으로 학습하면서 기존 지식을 보존하는 능력의 중요성이 점점 커지고 있음.  </p>
<h4 id="1-continual-fine-tuning">1) Continual Fine-Tuning</h4>
<ul>
<li>장점: 새로운 언어 패턴이나 추론 능력을 효과적으로 학습할 수 있음.  </li>
<li>단점: 연산 비용이 매우 크며, Catastrophic Forgetting 문제 발생함.  </li>
</ul>
<h4 id="2-model-editing">2) Model Editing</h4>
<ul>
<li>장점: 특정 지식만 선택적으로 업데이트 가능하여 경량화된 학습이 가능함.  </li>
<li>단점: 국소적(Local) 수정에 그치므로 연관된 지식까지 반영하지 못함.  </li>
</ul>
<h4 id="3-retrieval-augmented-generation-rag">3) Retrieval-Augmented Generation (RAG)</h4>
<ul>
<li>장점: 비-파라미터 방식으로 외부 지식을 활용하므로 <strong>실시간 적응성과 확장성</strong> 측면에서 강점이 있음.  </li>
</ul>
<hr>
<h3 id="non-parametric-방식의-지속적-학습">Non-parametric 방식의 지속적 학습</h3>
<p>최근 LLM 기반 Encoder 성능의 발전으로 정교한 임베딩 생성이 가능해지면서 RAG의 성능이 크게 향상되었음.<br>그러나 여전히 다음 두 가지 과제가 남아 있음.  </p>
<h4 id="1-sense-making-복잡한-문맥-이해">1) Sense-making (복잡한 문맥 이해)</h4>
<ul>
<li>문제: 기존 RAG는 여러 문서를 유기적으로 연결하여 복합적인 문맥을 종합적으로 이해하기 어려움.  </li>
<li>해결 시도: RAPTOR, GraphRAG, LightRAG 등 → 계층적 클러스터링(Hierarchical Clustering) 또는 지식 그래프 활용.  </li>
<li>남아 있는 과제: 요약 및 구조화 과정에서 <strong>LLM이 불필요한 노이즈(Noise)를 생성</strong>하여 QA 성능이 저하되는 현상 발생.  </li>
</ul>
<h4 id="2-associativity-다중-연결-추론-능력">2) Associativity (다중 연결 추론 능력)</h4>
<ul>
<li>문제: 벡터 기반 검색은 독립적인 결과만 반환하므로 여러 정보 간의 연관성 파악이 불가능함.  </li>
<li>해결 시도: 지식 그래프(KG)와 Personalized PageRank(PPR)를 활용한 Multi-hop 추론 연구들이 제안됨.  </li>
</ul>
<hr>
<h2 id="3-method-of-hipporag2">3. Method of HippoRAG2</h2>
<h3 id="1-overview">1. Overview</h3>
<ul>
<li>LLM  </li>
<li>KG + PPR  </li>
<li>Retrieval Encoder  </li>
</ul>
<p>⇒ 위를 합쳐 <strong>HippoRAG</strong> 생성  </p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/3f0f3168-3566-4cd9-8cf6-f9279e6bc8e9/image.png" alt=""></p>
<hr>
<h3 id="flow">Flow</h3>
<ol>
<li><p><strong>Offline Indexing</strong><br><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/b1fd08af-2ae9-4b18-8736-d18b315c3265/image.png" alt=""></p>
<ul>
<li><strong>Triple 추출</strong>: LLM으로 passage를 KG triple로 변환 → KG 구성  <ul>
<li>주어·목적어: phrase  </li>
<li>연결어: edge  </li>
</ul>
</li>
<li><strong>Synonym 연결</strong>: KG 내 phrase node 간 임베딩 유사도 계산 → synonym edge 생성 → 지식 연결성 향상  </li>
<li><strong>Context 정보 통합</strong>: triple 기반 KG + 원문 passage 결합 → <strong>context-rich KG</strong> 구성  </li>
</ul>
<p>⇒ 개념과 문맥 통합을 통해 정보의 완전성과 정합성을 향상시킴  </p>
</li>
<li><p><strong>Online Retrieval</strong><br><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/8bfde566-1a49-416b-bb41-f86e8c537c81/image.png" alt=""></p>
<ul>
<li>Query Mapping: query를 KG triple/passage와 연결 → <strong>seed node 후보 탐색</strong>  </li>
<li>Triple Filtering: LLM이 query와 관련된 triple만 선택  </li>
<li>PPR 그래프 탐색: 필터링된 시드 노드 기반 Personalized PageRank 수행 → 관련 passage 추출  </li>
<li>최종 QA: 추출된 passage를 QA 모듈 입력으로 사용  </li>
</ul>
</li>
</ol>
<hr>
<h3 id="32-dense-sparse-integration">3.2 Dense-Sparse Integration</h3>
<ul>
<li><strong>KG phrase node</strong>: 개념 중심 → sparse coding  </li>
<li><strong>Context</strong>: 문맥은 풍부하지만 복잡 → dense coding  </li>
</ul>
<p>⇒ 개념-문맥 trade-off 문제 해결을 위해:  </p>
<ul>
<li>KG에 <strong>passage node</strong> 도입  </li>
<li>passage는 <code>contains</code> edge를 통해 phrase node와 연결<br>  KG phrase node → is contained → passage node </li>
</ul>
<p>→ KG가 개념과 문맥을 함께 표현하는 <strong>복합 정보 구조</strong>가 됨  </p>
<hr>
<h3 id="33-deeper-contextualization">3.3 Deeper Contextualization</h3>
<p>기존 HippoRAG1는 쿼리를 KG와 연결할 때 <strong>NER 기반 방식</strong>만 사용  </p>
<ul>
<li><strong>문제점</strong>  <ul>
<li>개념 중심 편향: 개별 엔티티에만 집중 → 전체 맥락 반영 부족  </li>
<li>문맥 신호 손실: 쿼리 의도·문장 구조 무시  </li>
<li>추론 한계: multi-hop, 논리적 연결 필요 시 성능 저하  </li>
</ul>
</li>
</ul>
<table>
<thead>
<tr>
<th>방식</th>
<th>설명</th>
<th>한계</th>
</tr>
</thead>
<tbody><tr>
<td>NER to Node</td>
<td>쿼리 → 엔티티 → phrase node 매핑</td>
<td>개념 중심 편향, 문맥 반영 부족</td>
</tr>
<tr>
<td>Query to Node</td>
<td>쿼리 → phrase node 직접 매핑</td>
<td>phrase node 자체가 단편적 개념</td>
</tr>
<tr>
<td>Query to Triple</td>
<td>쿼리 ↔ triple 전체 임베딩 매칭 (top-k triple)</td>
<td>triple은 관계까지 포함 → 쿼리의 의도·구조·문맥까지 반영 가능</td>
</tr>
</tbody></table>
<hr>
<h3 id="34-recognition-memory">3.4 Recognition Memory</h3>
<p>인간 기억 체계에서 착안:  </p>
<ul>
<li><strong>Recall</strong>: 외부 단서 없이 기억 꺼내기  </li>
<li><strong>Recognition</strong>: 외부 단서를 보고 기억 떠올리기  </li>
</ul>
<p>⇒ HippoRAG2는 query-to-triple 과정을 두 단계로 나눔</p>
<ol>
<li><p><strong>Query to Triple</strong>  </p>
<ul>
<li>쿼리를 KG triple과 임베딩 기반 비교  </li>
<li>top-k triple 후보 T 추출</li>
</ul>
</li>
<li><p><strong>Triple Filtering</strong>  </p>
<ul>
<li>LLM이 후보 triple 중 query와 관련성 높은 것만 선택  </li>
<li>최종 triple 집합 생성  </li>
</ul>
</li>
</ol>
<hr>
<h3 id="35-online-retrieval">3.5 Online Retrieval</h3>
<ol>
<li><p><strong>Seed Node 선택</strong>  </p>
<ul>
<li>Triple 존재 시: 필터링된 triple에서 phrase node 추출  <ul>
<li><strong>명사 노드만 PPR 가능</strong>  </li>
<li>최대 K개의 phrase 추출 → 평균 순위 점수 반영  </li>
</ul>
</li>
<li>Triple 부재 시: dense retriever로 top-k passage 직접 검색  </li>
<li>모든 passage node를 시드 노드로 추가 → broader activation → multi-hop 추론에 효과적  </li>
</ul>
</li>
<li><p><strong>Reset Probability 할당</strong>  </p>
<ul>
<li>Phrase node: triple 기반 순위 점수 사용  </li>
<li>Passage node: 임베딩 유사도 × weight factor 적용  </li>
<li>두 노드 간 영향력 균형 조절  </li>
</ul>
</li>
<li><p><strong>PPR 실행</strong>  </p>
<ul>
<li>시드 노드 &amp; reset score 기반 Personalized PageRank 수행  </li>
<li>각 passage node의 pagerank 점수 계산  </li>
</ul>
</li>
<li><p><strong>Top-ranked Passage 선택</strong>  </p>
<ul>
<li>PPR 결과 상위 passage를 최종 QA 입력으로 사용  </li>
</ul>
</li>
</ol>
<hr>
<h3 id="ppr이란">PPR이란?</h3>
<ul>
<li><strong>PageRank</strong>: 연결 관계 기반으로 노드 중요도를 계산하는 알고리즘  <ul>
<li>더 많은 링크를 받거나 중요한 노드로부터 링크된 노드는 중요도가 높음  </li>
<li>무작위로 링크를 따라가다 일정 확률로 다시 시작하는 방식  </li>
</ul>
</li>
<li><strong>Personalized PageRank</strong>: 특정 <strong>seed nodes에서의 reset-score를 높게 설정하여</strong>, 집중하고자 하는 노드 주변만 탐색할 수 있도록하는 node-ranking method</li>
</ul>
<blockquote>
<p><strong>Reset Score</strong>: seed node로 돌아갈 확률을 나타내는 Score  </p>
</blockquote>
<hr>
<h2 id="4-experiment">4. Experiment</h2>
<h3 id="1-baseline">1. Baseline</h3>
<p>실험에서는 다양한 검색기(retriever)와 구조적 RAG 기법들을 비교 대상으로 설정함.</p>
<ul>
<li><p><strong>Simple Baselines</strong>: 전통적 검색기  </p>
<ul>
<li>BM25: 단어 빈도 기반 전통적 검색  </li>
<li>Contriever: 대조 학습 기반 dense retriever  </li>
<li>GTR: T5 기반 dense dual encoder  </li>
</ul>
</li>
<li><p><strong>Large Embedding Models</strong>  </p>
<ul>
<li>GTE-Qwen2-7B-Instruct  </li>
<li>GritLM-7B  </li>
<li>NV-Embed-v2  </li>
</ul>
</li>
<li><p><strong>Structure-Augmented RAG</strong>  </p>
<ul>
<li>RAPTOR: Hierarchical Clustering을 활용하여 문서를 의미 기반으로 그룹화 후 요약  </li>
<li>GraphRAG: Knowledge Graph 기반 문서 구조 활용  </li>
<li>LightRAG: KG + Vector Retrieval 결합  </li>
<li>HippoRAG: KG + PPR 결합  </li>
</ul>
</li>
</ul>
<hr>
<h3 id="2-dataset">2. Dataset</h3>
<ul>
<li><strong>Simple QA</strong>: 실제 사용자 검색 기반 질의 + 위키피디아 데이터  </li>
<li><strong>Multi-hop QA</strong>: 여러 개의 정보를 연결해야 하는 추론 능력(Associativity) 측정  </li>
<li><strong>Discourse Understanding</strong>: 긴 문맥 이해(Sense-making) 능력 평가  </li>
</ul>
<hr>
<h3 id="3-metrics">3. Metrics</h3>
<ul>
<li><strong>Retrieval 성능</strong>: Passage Recall@5(Gold-doc을 잘 검색하는지) </li>
<li><strong>QA 성능</strong>: Token-level F1 Score</li>
</ul>
<hr>
<h3 id="4-results">4. Results</h3>
<ul>
<li><p><strong>QA 성능</strong><br><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/8706ef66-d86f-4b0b-bbf6-a8d1bee1b097/image.png" alt=""></p>
<ul>
<li>Generator: LLaMA  </li>
<li>Retriever: NV-Embed-v2  </li>
<li>결과: HippoRAG2가 다양한 QA Task에서 전반적으로 더 높은 성능을 보임  </li>
</ul>
</li>
<li><p><strong>Retrieval 성능</strong><br><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/3bae4b48-dc97-4e45-b664-bb331e281fd8/image.png" alt=""></p>
<ul>
<li>Passage Recall@5 기준으로도 HippoRAG2가 기존 방법들보다 향상된 결과를 보임  </li>
</ul>
</li>
<li><p><strong>Ablation Study</strong><br><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/b9db0dde-48e0-4e84-9d42-21eb45d828b7/image.png" alt=""></p>
<ul>
<li>Passage Node 제거 시 → Multi-hop QA 성능 크게 하락 (KG 확산 범위 축소 때문)  </li>
<li>Triple Filtering 제거 시 → 성능 소폭 저하 발생  </li>
</ul>
</li>
</ul>
<ul>
<li><strong>Reset Weight Factor 분석</strong><br><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/1f907e0d-8df5-4ba5-984b-a6b8eb84bd7d/image.png" alt=""><ul>
<li>Passage node의 reset 확률에 가중치를 곱하여 조정  </li>
<li>Weight factor = 0.05일 때 가장 안정적이며 높은 성능 확보  </li>
</ul>
</li>
</ul>
<hr>
<h3 id="5-continual-learning-실험">5. Continual Learning 실험</h3>
<ul>
<li><strong>구성</strong>  <ul>
<li>NQ와 MuSiQue Dataset을 4개로 분할  </li>
<li>1개 분할로 평가하고, 나머지를 점진적으로 corpus에 추가하여 성능 변화 추적<br><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/1f881acb-44f8-400f-884c-a9b81eb63c2f/image.png" alt=""></li>
</ul>
</li>
<li><strong>결과</strong>  <ul>
<li>Corpus 확장 시에도 성능이 꾸준히 유지됨  </li>
<li>Multi-hop QA의 경우 전체 성능 하락폭이 NV-Embed-v2와 유사  </li>
<li>즉, <strong>HippoRAG2는 장기적 관점에서 Continual Learning에 강한 모델임</strong>  </li>
</ul>
</li>
</ul>
<hr>
<h3 id="6-think-myself">6. Think myself</h3>
<blockquote>
<p>이 논문을 읽으면서 가장 크게 와닿았던 점은, <strong>RAG의 진화가 단순히 &quot;검색 정확도를 높이는 것&quot;을 넘어서, 인간 기억 구조를 어떻게 모사할 수 있는가</strong>에 초점을 두고 있다는 것이다.</p>
</blockquote>
<blockquote>
<p>특히 HippoRAG2는 단순히 KG + PPR을 붙인 것이 아니라 &quot;연관성 있는 것을 상상하고 연결하는&quot; 인간과 유사한 검색 방식을 도입하려 한 것이 인상 깊었음.</p>
</blockquote>
<ul>
<li><strong>Dense-Sparse 통합</strong>을 통해 개념과 문맥의 균형을 잡으려 한 점  </li>
<li><strong>Query-to-Triple 매핑</strong>으로 쿼리의 맥락을 더 깊게 반영하려 한 점 </li>
<li>인간 기억 메커니즘인 <strong>Recognition Memory</strong> 개념을 도입한 점</li>
</ul>
<blockquote>
<h3 id="실험-파트">실험 파트</h3>
</blockquote>
<ul>
<li>multi-hop QA에서 passage node의 존재가 성능 향상에 결정적이라는 부분은, &quot;문맥 정보와 개념적 구조를 함께 봐야 한다&quot;는 것을 상기하게 됨</li>
<li>Continual Learning 실험에서, 새로운 데이터를 추가하면서도 LLM이 성능을 유지하는 것으로 보아, long-term memory 기반 RAG에 중요한 reference가 될 것이라는 생각을 하게 됨.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Quant GANs: deep generation of financial time series]]></title>
            <link>https://velog.io/@vitaminlab_0901/Quant-GANs-deep-generation-of-financial-time-series</link>
            <guid>https://velog.io/@vitaminlab_0901/Quant-GANs-deep-generation-of-financial-time-series</guid>
            <pubDate>Sun, 31 Aug 2025 11:51:18 GMT</pubDate>
            <description><![CDATA[<p>Wiese, Magnus, et al. &quot;Quant GANs: deep generation of financial time series.&quot; <em>Quantitative Finance</em> 20.9 (2020): 1419-1440.</p>
<h2 id="abstract">ABSTRACT</h2>
<p><strong>1. TCN의 활용을 수학적으로 정의함.</strong></p>
<ul>
<li>volatility clustering 과 같은 장기 의존성 포착.</li>
</ul>
<p><strong>2. generator가 risk neutral distribution으로 mapping함.</strong></p>
<ul>
<li>SVNN과 TCN이 GARCH보다 우수함.</li>
</ul>
<p><strong>3. Lambert W transformation이 fat-tail distribution modeling에 중요한 역할을 함.</strong></p>
<ul>
<li>volatility cluster, leverage effects, and serial auto-correlation이 재현됨.</li>
</ul>
<h2 id="1-introduction">1. INTRODUCTION</h2>
<ul>
<li>금융에서는 NN의 도입이 초기상태임.</li>
<li>현실적인 자산가격을 시뮬레이션 할 수 있는 GAN 모형을 제시할 필요성 대두.</li>
<li>quantGAN 모델을 제시하였으며 data-based 접근과 model-driven 접근에 중간에 위치.</li>
<li>이후 내용은 ABSTRACT와 동일.</li>
</ul>
<h2 id="2-generative-modeling-of-financial-time-series">2. GENERATIVE MODELING OF FINANCIAL TIME SERIES</h2>
<ul>
<li>금융시계열 생성에는 고려해야할 금융시계열의 특징이 크게 5가지가 있음.<ul>
<li>Heavy tails: asset return의 분포는 정규분포보다 꼬리 쪽이 두꺼움.</li>
<li>Leptokurtosis: asset return의 분포는 정규분포보다 더 뾰족함.</li>
<li>Volatility clustering: asset return은 price change에 따라 고변동과 저변동이 묶여서 발생하는 경향이 있음.</li>
<li>Leverage effect: asset return의 변동성은 하락할 때 더 크게 나타남.</li>
<li>Uncorrelated but not independent: asset return의 평균은 상관관계가 없으나 분산(변동성)은 자기상관이 존재.</li>
</ul>
</li>
</ul>
<h2 id="3-neural-network-topologies">3. NEURAL NETWORK TOPOLOGIES</h2>
<ul>
<li>SVNN(stochastic volatility neural network)의 이해를 돕기 위해 multi-layer perceptron과 TCN을 설명함.</li>
</ul>
<h3 id="31-multi-layer-perceptrons"><strong>3.1 Multi-layer perceptrons</strong></h3>
<ul>
<li>정의 3.1: 활성화 함수는 Lipschitz continuous를 만족하고 monotonic한  함수를 의미한다.</li>
<li>정의 3.3: MLP의 각 층의 함수는 선형변환에 비선형함수를 적용한 것을 의미한다.</li>
<li>보편근사정리: 다음과 같이 정의된 MLP는 Lipschitz continuous를 만족하고 이는 MLP가 임의의 연속함수를 근사할 수 있음을 보장함.</li>
</ul>
<h3 id="32-temporal-convolutional-networks"><strong>3.2 Temporal convolutional networks</strong></h3>
<ul>
<li>stochastic volatility를 모델링하기 위해 TCN을 도입함.</li>
<li>dilation이 커질수록 더 멀리 있는 과거 시점을 참조함 → 시계열의 long-term dependency 학습 가능.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/ce21aea8-7c66-40e9-ab29-1fb73dc65f35/image.png" alt=""></p>
<ul>
<li>TCN이 더 먼 장기의존성을 학습하려면 RFS(=receptive field size)(TCN이 볼수 있는 최대 시계열 길이)가 커지고 계산 비용이 증가함.<ul>
<li>네트워크가 깊어질 경우 학습시킬 데이터가 충분한지에 대한 문제가 있으며, TCN으로 더 먼 과거를 보는 것은 future work로 남겨둠.</li>
</ul>
</li>
</ul>
<h2 id="4-generative-adversarial-networks">4. GENERATIVE ADVERSARIAL NETWORKS</h2>
<ul>
<li>GAN 모형을 TCN과 함께 discrete-time stochastic processes로 확장함.</li>
</ul>
<h3 id="41-formulation-for-random-variables"><strong>4.1 Formulation for random variables</strong></h3>
<ul>
<li>GAN<br><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/6e02a6fa-67b8-4ad7-97ed-52491c075fe9/image.png" alt=""></li>
</ul>
<h3 id="42-formulation-for-stochastic-processes"><strong>4.2 Formulation for stochastic processes</strong></h3>
<ul>
<li>stochastic process<ul>
<li>TCN 기반의 시계열 생성 모델이 하나의 확률과정으로 이해될 수 있음을 설명.
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/47b96f66-6f5e-41b3-ae2d-b5a80ed19325/image.png" alt=""></li>
</ul>
</li>
</ul>
<h2 id="5-the-model">5. THE MODEL</h2>
<ul>
<li>quantGAN을 log-return neural process (log-return NP) 로 지칭.<ul>
<li>5.2에선 log-return NP로 부터 생성된 꼬리가 얼마나 무거울 수 있는지</li>
<li>5.3에선 log-return NP 로 어떻게 heavy-tail을 모델링하고 어떤 가정이 있는지</li>
<li>5.4에선 log-return NP로 부터 risk-neutral distribution이 유도될 수 있는지</li>
<li>5.5에선 log-return NP가 기존의 시계열 모델의 확장으로 볼 수 있는지</li>
</ul>
</li>
</ul>
<h3 id="51-log-return-neural-processes"><strong>5.1 Log-return neural processes</strong></h3>
<ul>
<li>Log-return NP 요약 및 스키마 Description
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/742a96f0-c284-45f6-bf52-a036c5b6aaef/image.png" alt=""></li>
</ul>
<h3 id="52-l_p---space-characterization-of-r_theta"><strong>5.2 L_p - space characterization of R_theta</strong></h3>
<ul>
<li>Theorem 5.4: 신경망의 출력은 입력의 분포와 같은 L_p-space에서 정의 됨.<ul>
<li>Corollary 5.5: 신경망의 출력이 평균, 분산, 노이즈와 같은 모멘트를 가지고 있음이 보장됨.<ul>
<li>그러나 모멘트의 보장은 금융시계열의 두꺼운 꼬리 특성과 반대되는 성질임. 
→ 그럼에도 어떻게 모멘트를 보장하면서 두꺼운 꼬리를 생성할지에 대한 얘기를 5.3에서 함.</li>
</ul>
</li>
<li>Corollary 5.6: 역전파 기울기도 L_p-space에 속해 안정적인 gradient가 보장됨.<ul>
<li>단, 노이즈를 가우시안 분포보다 꼬리가 두꺼운 분포에서 샘플링 하는 경우 성립 안할 수도 있음.</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="53-generating-heavier-tails-and-modeling-assumptions"><strong>5.3 Generating heavier tails and modeling assumptions</strong></h3>
<ul>
<li><p>Theorem 5.4 에서 log-return NP의 모든 모멘트는 존재함이 보장됨.</p>
<ul>
<li>이 경우 tail fall은 최소 e^{-x^2} 속도로 진행됨.</li>
<li>현실 금융시계열의 경우 tail이 무겁고 모멘트의 유한함이 보장되지 않음.<ul>
<li>이와 같은 이유로 Lambert W probability transform을 적용함.
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/e58f8cd0-4a19-416e-9c5e-2c03afb385ae/image.png" alt="">    </li>
</ul>
</li>
</ul>
</li>
<li><p>이 변환의 경우 미분이 보장되어 최적화가 가능함.</p>
</li>
<li><p>inverse Lambert W transformed spot log-returns R이 log-return NP로 표현 가능하다는 전제조건 필요.</p>
<ul>
<li>위 전제조건은 두가지 중요한 내용을 암시함.</li>
<li>첫째, log-return NP가 stationary로 가정됨으로 historical log-return process도 stationary가정이 필요함.</li>
<li>둘째, log-return NP는 TCN의 RFS 범위까지의 dynamics를 포착할 수 있어 해당 범위를 벗어나는 수익률은 독립으로 간주.</li>
</ul>
</li>
</ul>
<h3 id="54-risk-neutral-representation-of-r_theta"><strong>5.4 Risk-neutral representation of R_theta</strong></h3>
<ul>
<li><p>위험중립리턴을 구하기 위한 보정항을 찾음.
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/c227d57c-2b8b-48ca-9f42-4e6435d922fd/image.png" alt=""></p>
<ul>
<li>위험중립 자산 경로는 관측이 불가능하여 판별자 학습이 불가능함.</li>
<li>옵션 가격을 기준으로 최소자승 보정을 하는 방법이 있고 몬테카를로 시뮬레이션을 수행하여 모델의 옵션 가격 측정 성능을 test해봐야 함. </li>
<li>위 방법은 향후 연구 과제로 남겨둠.</li>
</ul>
</li>
</ul>
<h3 id="55-constrained-log-return-neural-processes"><strong>5.5 Constrained log-return neural processes</strong></h3>
<ul>
<li>innovation term을 가우시안 노이즈로 강제하면 기존 시계열 모델의 확장으로 볼 수 있음.</li>
<li>BSM 모델에서는 고정된 변동성을 사용하고 quantGAN 모델은 stochastic volatility를 사용하는 것만 다르고 구조가 유사함. → 위와 같은 결론으로 log-return NP가 기존 시계열 모델의 확장임을 주장함.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/79722a93-bb73-4f55-ab0b-4dff893aa2ad/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/202e636d-9d4b-47a6-a39e-a917060e9ba1/image.png" alt=""></p>
<p>위 두 식을 아래 식에 대입.
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/a6e734e7-77e9-4ffa-bcf2-1f40a312e2e4/image.png" alt=""></p>
<p>정리하면 다음과 같이 됨.
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/7ac428b2-dea1-40d7-a44d-9949399b3b50/image.png" alt=""></p>
<p>리턴을 가격 형태로 변형.
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/46f22db6-6dcd-42d4-9ebd-56376158ec12/image.png" alt=""></p>
<p>BS와 비교하면 고정변동성인지 stochastic 변동성인지만 다른 것을 확인할 수 있음.
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/96ebea87-858c-4d10-ba2d-450d4a3423ce/image.png" alt=""></p>
<h2 id="6-preprocessing">6. PREPROCESSING</h2>
<ul>
<li>금융시계열을 그대로 전달하기 전에 preprocessing 과정이 필요함.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/900c5b04-40f4-4df0-9f3f-964b282c55bb/image.png" alt=""></p>
<ul>
<li><p>롤링 윈도우를 제외한 모든 변환은 가역적으로 생성 후 후처리 될 수 있음.</p>
</li>
<li><p>Lambert W Transform</p>
<ul>
<li><p>꼬리쪽을 더 잘 모델링하기 위한 변환. 변환 방식은 하기와 같음.</p>
<p>  <img src="https://velog.velcdn.com/images/vitaminlab_0901/post/1d40a500-11e7-4e2b-9954-1038dca5dffe/image.png" alt=""></p>
</li>
<li><p>변환 이후 표준정규분포가 꼬리 쪽을 커버할 수 있게 됨.
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/0f2a08c7-71c9-440e-a67c-ac940f6a6a64/image.png" alt=""></p>
</li>
</ul>
</li>
</ul>
<ul>
<li>window를 나눌경우 log-return에서 bias가 발생하는데 이는 배치를 구성할때 weighted sampling으로 보정 가능함.</li>
</ul>
<h2 id="7-numerical-results">7. NUMERICAL RESULTS</h2>
<ul>
<li>quantGAN으로 S&amp;P500의 log return 시나리오를 생성함.<ul>
<li>밴치마크로는 GARCH(1, 1)을 사용함.</li>
</ul>
</li>
</ul>
<h3 id="71-setting-and-implementation"><strong>7.1 Setting and implementation</strong></h3>
<ul>
<li>RTX 2070 사용.</li>
</ul>
<h3 id="72-models"><strong>7.2 Models</strong></h3>
<ul>
<li>Pure TCN<ul>
<li>innovation이 가우시안 노이즈로 강제하지 않음.</li>
</ul>
</li>
<li>Constrained log-return NP<ul>
<li>innovation term을 가우시안 노이즈로 강제한 경우.</li>
</ul>
</li>
<li>GARCH(1, 1) with constant drift<ul>
<li>고정 drift term을 쓰고 variance term만 GARCH(1, 1) 사용.</li>
</ul>
</li>
</ul>
<h3 id="73-evaluating-a-path-simulator-metrics-and-scores"><strong>7.3 Evaluating a path simulator: metrics and scores</strong></h3>
<ul>
<li><p>Distributional metrics</p>
<ul>
<li><p>Wasserstein-1 distance</p>
<ul>
<li>real과 fake의 log-return 분포의 거리를 측정.
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/b1b5d218-5547-46f3-b100-de79b77c4751/image.png" alt=""></li>
</ul>
<ul>
<li>DY metric<ul>
<li>real과 fake의 log 확률밀도의 차이를 측정.
<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/bcfd461d-034e-4c79-9216-41b0d315794e/image.png" alt="">     </li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><p>Dependence scores</p>
<ul>
<li>real의 autocorrelation과 fake의 autocorrelation 평균의 차이를 측정.<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/e3da5f82-0c63-409f-9425-1e3139bd24a3/image.png" alt=""></li>
</ul>
</li>
</ul>
<ul>
<li>Leverage effect score<ul>
<li>L 값이 크면 수익률이 작을수록 미래의 변동성이 큼을 의미.</li>
<li>real의 L과 fake의 L 평균의 차이를 측정.<img src="https://velog.velcdn.com/images/vitaminlab_0901/post/021685ad-e563-4b93-adba-c7d2267a0793/image.png" alt=""></li>
</ul>
</li>
</ul>
<h3 id="74-generating-the-sp-500-index"><strong>7.4 Generating the S&amp;P 500 index</strong></h3>
<p><img src="https://velog.velcdn.com/images/vitaminlab_0901/post/8fb8656d-d7ae-4484-8ec0-e393af8775b4/image.png" alt=""></p>
<ul>
<li>7.4.1 Pure TCN<ul>
<li>대부분의 metric에서 우수한 성능.</li>
</ul>
</li>
<li>7.4.2 Constrained SVNN<ul>
<li>pure TCN 보다 성능에서 부족하지만 5.3 처럼 기존 시계열 모델의 확장으로 볼 수 있어 해석에 용이함.</li>
</ul>
</li>
<li>7.4.3 GARCH(1, 1) with constant drift<ul>
<li>GARCH 모델은 애초에 ACF를 잘 모델링하는 것이 목적이라 밴치마크임에도 좋은 ACF score를 가짐. 그러나 tail risk 모델링과 분포 유사도가 실제와 매우 다름.</li>
</ul>
</li>
</ul>
<h2 id="8-conclusion-and-future-work">8. CONCLUSION AND FUTURE WORK</h2>
<ul>
<li>이산시간에서 금융시계열을 생성하는 GAN 모형 제시.</li>
<li>사전지식이 동반된 tail index 활용으로 생성된 tail의 더 정확한 모델링과 외삽이 필요.</li>
<li>금융시계열 생성만을 평가할 수 있는 metric 개발이 필요.</li>
</ul>
<h2 id="insight">INSIGHT</h2>
<ul>
<li>금융 시계열은 jump term(급격한 변동) 이 자주 발생하는 특성이 있어, 딥러닝 관점에서는 기울기(gradient)가 불연속적으로 튀는 부분이 많은 시계열이다.</li>
<li>이러한 구조적 특성 때문에, 딥러닝에서 역전파가 안정적으로 이뤄지기 어렵다. 딥러닝이 기울기 폭주(explosion)나 소실(vanishing) 없이 안정적으로 학습되려면 Lipschitz 연속성(기울기의 상·하한이 엄격히 제한됨)을 만족해야 하지만, 금융 시계열은 애초에 이를 충족하지 않는다.</li>
<li>이를 보완하기 위해 Lambert W 변환을 적용하면, jump term을 포함한 극단값(tail)까지 분포를 재조정할 수 있다.</li>
<li>결과적으로 Lambert W 변환은 금융 시계열을 Lipschitz 연속성을 만족하도록 변형하면서도 분포의 꼬리(jump term)까지 커버할 수 있게 한다.</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>