<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>jukyung-j.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Wed, 07 Aug 2024 06:46:06 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>jukyung-j.log</title>
            <url>https://velog.velcdn.com/images/jukyung-j/profile/9a32a537-78e0-4de3-a495-3f4c5e78a78e/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. jukyung-j.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jukyung-j" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[8-7 survey]]></title>
            <link>https://velog.io/@jukyung-j/8-7-survey</link>
            <guid>https://velog.io/@jukyung-j/8-7-survey</guid>
            <pubDate>Wed, 07 Aug 2024 06:46:06 GMT</pubDate>
            <description><![CDATA[<h1 id="dusdepth-up-scaling">DUS(Depth-Up-Scaling)</h1>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/042c2f51-b479-493b-bb5c-54b582eda308/image.png" alt=""></p>
<p>Mistral 7B 모델을 베이스로 해서 복사해서 2개의 모델 만듬
각 위 8개, 아래 8개 layer 제거하고 합쳐서 48 layer 만듬
그러면 10.7B지만 성능이 떨어져서 다시 pretraing -&gt; instruction (QA 데이터) -&gt; alignment (DPO)</p>
<h1 id="model-merge">Model Merge</h1>
<p>DUS도 동일한 아이디어</p>
<ul>
<li><strong>SLERP</strong>(Spherical Linear Interplation)
<img src="https://velog.velcdn.com/images/jukyung-j/post/067ab1f6-54a3-4705-aabe-b536a48126df/image.png" alt=""></li>
</ul>
<p>두 벡터 사이를 부드럽게 보간</p>
<ul>
<li>TIES-Merging(Trim, Elect Sign &amp; Merge)
chat vector 조사<a href="https://ncsoft.github.io/ncresearch/97e37d3af13fab6d2c69618087e7d3afb2ff566c">nc 블로그</a>
sakana.ai 조사</li>
</ul>
<p>여러 모델을 단일 모델로 병합</p>
<ol>
<li>모델 매개변수 중복제거</li>
<li>매개변수 간 불일치 해결: 다른 모델이 동일 매개변수에 반대될 때 통합 기호 벡터를 만들어 충돌 해결</li>
</ol>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/936a94a9-95b3-48da-8236-8797ea6fd9cc/image.png" alt=""></p>
<ol>
<li>Trim: 가장 중요한 매개변수의 일부만 유지하고 나머지는 0으로 재설정, 모델 중복성 줄임</li>
<li>Elect Sign: 누적 크기면에서 가장 우세한 방향(양수 혹은 음수)을 기반으로 통합 기호벡터 생성해 기호 충돌 해결</li>
<li>Disjoint Merge: 0값을 제외하고 통합 기호 벡터와 정렬되는 매개변수 값의 평균 계산</li>
</ol>
<ul>
<li><strong>Passthrough</strong>
다른 LLM 레이어를 연결해 새로운 하나의 모델을 만듬
모델의 매개변수 증가
DUS가 동일한 아이디어</li>
</ul>
<blockquote>
<p>리더보드에선 SLERP가 가장 높았음</p>
</blockquote>
<ul>
<li>Mergekit
<a href="https://github.com/arcee-ai/mergekit?tab=readme-ov-file#merge-methods">깃헙</a>
모델 앙상블과 유사한 개념인데 더 효율적이고 효과적</li>
</ul>
<p>방법론</p>
<ol>
<li>Linear: 가중치를 평균</li>
<li>slerp: 데이터 포인트를 구면상의 점으로 간주해서 smooth한 곡선을 그리는 방식으로 없는 값 채움, 모델이 2개일 때만</li>
<li>task_arithmetic: 다른 모델의 가중치에서 기본 모델의 가중치를 빼 작업 벡터(편차)를 생성 후, 선형적으로 병합하고 기본 모델에 다시 더함, 모델이 여러 개일 때</li>
<li>ties</li>
<li>dare: 작업 벡터 희소화하고 새로운 재조정 기법 적용. task_arithmetic과 ties 붙일 수 있음</li>
<li>passthrough: 레이어 병합, 하나의 입력 모델만 있을 경우 유용</li>
</ol>
<h1 id="distillation">Distillation</h1>
<p>student, teacher
<a href="https://github.com/arcee-ai/DistillKit">Distillkit</a></p>
<p>feaures</p>
<ul>
<li><p>Logit-based: 같은 아키텍처여야 함
hard target(실제 label), soft target(teacher logit). soft target loss는 Kullback-Leibler (KL) divergence. student가 teacher의 output 분포를 따라하게. student 모델의 generalization 과 efficiency를 높임</p>
</li>
<li><p>Hidden States-based: 다른 아키텍처여도 됨
student 모델의 중간 layer representation을 aligning해서 지식 transfer
DPO와 GPT는 나중에 나옴</p>
</li>
</ul>
<h1 id="pruning">Pruning</h1>
<p><img src="blob:https://velog.io/b18082f7-c587-4e01-96a5-399e3f502703" alt="업로드중.."></p>
<p>중요한 파라미터는 살리고 아닌건 가지치기하는 경량화</p>
<h1 id="kmmlu-benchmark">KMMLU benchmark</h1>
<p>네이버 클라우드 + EleutherAI
인문학, 과학, 기술, 공학, 수학 등 총 45개 주제
다지선형 선택 문제
한국어의 언어적, 문화적 특징을 반영
LLM은 마케팅, 컴퓨터 과학, 정보 기술, 통신 및 무선 기술 분야에선 good
한국사, 수학, 특허, 세무, 형법 같은 특정 문화적 또는 지역적 지식에선 bad</p>
<h1 id="데이터-합성">데이터 합성</h1>
<p>인위적으로 생성된 데이터
nvidia에서 합성 데이터 생성하는 nemotron-4 340B 출시
prompt 형태 다양화하는 것이 중요(쓰기, Q&amp;A, 주제 다양화, 지시문 다양화:json, 문단, yes or no answers)
CoT는 100B이상의 큰 모델들에게 효과적
<a href="https://arxiv.org/abs/2406.15126?utm_source=pytorchkr&amp;ref=pytorchkr">LLM기반 합성 데이터 연구</a></p>
<p>데이터 증강이 일반적</p>
<ul>
<li>WizardLM
지시문 데이터 생성 과정에서 사람의 의존도를 줄이고 다양한 난이도의 질문을 확보
<img src="blob:https://velog.io/9640d9ad-6340-47f7-86a6-18d2a30e4500" alt="업로드중.."></li>
</ul>
<ol>
<li><p>초기 지시문</p>
<blockquote>
<p>{
&quot;Skill&quot;: &quot;Writting&quot;, 
&quot;Difficulty&quot;: 3, 
&quot;Instruction&quot;: &quot;As an experienced writer, (후략)&quot;
}</p>
</blockquote>
</li>
<li><p>LLM을 사용해 지시문 진화</p>
</li>
</ol>
<ul>
<li>수직 진화(In-Depth Evoloving): 복잡하고 어려운 질문, 조건 넣기, 심화, 개념화, 근거의 단계 증가, 복잡한 입력값</li>
<li>수평 진화(In-Bradth Evolving): 주제, 태스크 등의 면에서 다양한 질문 만드는 것이 목표</li>
</ul>
<ol start="3">
<li>특정 조건이 성립되면 중지</li>
</ol>
<ul>
<li>엔트로피 증가X</li>
<li>의미 없는 문자열 나열</li>
<li>답변이 지시문 복붙</li>
<li>LLM이 어려워라고 말한 경우</li>
</ul>
<p><img src="blob:https://velog.io/034c7b2e-592d-4a2c-a0be-aa1b91f52bed" alt="업로드중.."></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] Mistral 7B]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Mistral-7B</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Mistral-7B</guid>
            <pubDate>Fri, 10 Nov 2023 09:26:35 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/jukyung-j/post/6cd59075-b4d8-4db2-a3bd-c6c06113b9b3/image.png" alt=""></p>
<h1 id="abstract">Abstract</h1>
<ul>
<li>Mistral 7B은 Llama2(13B)보다 모든 평가 벤치마크에서 능가했고 Llama1(34B)보다 reasoning, mathmatics, code generation 부분에서 능가</li>
<li>더 빠른 추론을 위해 grouped-guery attention(GQA)릃 활용하고, 추론 비용을 줄이면서 임의의 길이의 시퀀스를 효과적으로 처리하기 위해 sliding window attention(SWA)와 결합</li>
</ul>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>Mistral은 효율적인 추론을 유지하면서도 높은 성능을 제공</li>
<li>grouped-query attention(GQA)와 sliding window attention(SWA)를 활용</li>
<li>GQA는 추론 속도를 향상시키고, 디코딩 시 메모리 요구량을 줄여 실시간 어플리케이션에 중요한 요소인 더 큰 배치와 높은 처리량을 가능하게 함</li>
<li>또한, SWA는 더 긴 시퀀스를 더 효과적으로 처리하도록 설계되어 LLM의 일반적인 한계를 완화</li>
</ul>
<h1 id="2-architectural-details">2. Architectural details</h1>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/0692b2b7-b7e8-43d8-b0cb-026eb4bf9a09/image.png" alt=""><em>그림1: Sliding Window Attention. vanila attention에서 연산 수는 시퀀스 길이에 따라 2차적으로 증가하며, 메모리는 토큰의 수에 선형적으로 증가. 추론 시에는 캐시 가용성 감소로 인해 지연 시간이 길고 처리량이 감소. 이 문제를 완화하기 위해 sliding window attention을 사용하는데, 각 토큰은 이전 레이어에서 최대 W개의 토큰(여기서 W=3)에만 attention. 슬라이딩 윈도우 외부 토큰은 여전히 다음 단어 예측에 영향을 미침. 각 attention layer에서 정보는 W 토큰만큼 앞으로 이동할 수 있음. 따라서 k개의 attention layer 이후ㅡ, 정보는 최대 k * W 토큰만큼 앞으로 이동할 수 있음</em></p>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/6ae391d6-16fe-4421-8171-0a8fbf20cf4d/image.png" alt=""></p>
<ul>
<li>Mistral은 transformer를 기반으로하고 메인 파라미터는 표1에 요약. 라마와 비교하여 몇 가지 변화 소개</li>
</ul>
<p><strong>sliding Window Attention</strong>
SWA는 transformer의 쌓인 레이어를 활용하여 window size W를 초과하는 정보에 어텐션
layer k의 위치 i에 있는 hidden states $h_i$는 이전 레이어에서 위치 i-W와 i사이에 있는 모든 hidden stats에 attention을 줌
그림 1과 같이 $h_i$는 재귀적으로 최대 W * k 토큰까지 액세스 거리를 확장할 수 있음
마지막 레이어에서 W = 4096 크기의 window size를 사용하면 이론적으로 약 131K 토큰까지 attention할 수 있음
실제로, 시퀀스 길이가 16K이고 W = 4096인 경우, FlashAttention 및 xFormers에 대한 변경으로 바닐라 어텐션 베이스라인 대비 2배의 속도 향상이 이루어짐</p>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/4e49678d-132d-427f-8b1c-76226df16ded/image.png" alt=""><em>그림2. 캐시는W=4의 고정된 크기를 갖는다. 위치 i에 대한 key, value는 캐시의 위치 $imodW$에 저장. 위치 i가 W보다 클 때, 캐시 내의 과거 값들은 덮어쓰기 된다. 가장 최근에 생성된 토큰에 해당하는 hidden state가 주황색으로 표시</em></p>
<p><strong>Rolling Buffer Cache</strong>
고정된 attention 범위는 rolling buffer cache를 사용하여 캐시 크기를 제한할 수 있음
캐시는 고정된 크기인 W를 가지며, 시간 간격 i에 대한 key와 value는 캐시의 위치 $i mod W$에 저장
따라서 위치 i가 W보다 크면 캐시의 과거 값은 덮어쓰게 되고 캐시 크기는 더 이상 증가X
그림 2에서 W=3을 예로 들어 설명
시퀀스 길이가 32K 토큰일 경우 모델 품질에 영향을 주지 않으면서 캐시 메모리 사용량을 8배까지 줄일 수 있음</p>
<p><strong>Pre-fill and Chunking</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/ba30b149-b84f-458b-96ae-f0a5cab21069/image.png" alt="">_그림3: Pre-fill and chunking. 캐시를 미리 채우는 동안, 긴 시퀀스는 메모리 사용량을 제한하기 위해 chunk된다. 우리는 &quot;The ct sat on&quot;, &quot;the mat and saw&quot;, &quot;the dog go to&quot;의 세 개의 청크로 시퀀스를 처리한다. 그림은 세 번째 청크&quot;the dog go to&quot;에 대해 어던 일이 일어나는지 보여준다.세 번째 청크는 causal mask(가장 오른쪽 블록)을 사용하여 스스로 attend하고, sliding window(가운데 블록)를 사용하여 캐시에 attend, sliding window(왼쪽 블록) 밖에 있는 과거 토큰에 대해서는 attend X _</p>
<p>시퀀스를 생성할 때 각 토큰은 이전 토큰에 따라 조건이 달라지기 때문에 토큰을 하나씩 예측해야 함
그러나 프롬프트는 미리 알고있으므로 (k, v) 캐시에 프롬프트를 미리 채울 수 있음
프롬프트가 매우 큰 경우, 프롬프트를 작은 조각으로 나누고 각 조각으로 캐시를 미리 채울 수 있음
이를 위해 window size를 청크 크기로 선택할 수 있음
따라서 각 청크에 대해 캐시 및 청크에 대한 attention를 계산해야 함
그림 3은 캐시와 각 청므 모두에서 attention mask가 어떻게 작동하는지 보여줌</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 제목] Frustratingly Easy System Combination for Grammatical Error Correction
]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EC%A0%9C%EB%AA%A9-Frustratingly-Easy-System-Combination-for-Grammatical-Error-Correction</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EC%A0%9C%EB%AA%A9-Frustratingly-Easy-System-Combination-for-Grammatical-Error-Correction</guid>
            <pubDate>Thu, 29 Jun 2023 06:12:06 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<p>문법 오류 수정(GEC)를 위한 시스템 조합을 간단한 이진 분류로 공식화
간단한 로지스틱 회귀 알고리즘이 GEC 모델을 결합하는 데 매우 효과적
CoNLL-2014 tast에서 가장 높은 기본 GEC 시스템의 F0.5 점수를 4.2점 BEA-2019 test에서 7.2점 증가
기존 앙상블보다 더 높은 F0.5 점수로 더 나은 보정을 생성</p>
<h1 id="1-introduction">1. Introduction</h1>
<p>일반적으로 최근의 SOTA 시스템은 일반적으로 사전 학습된 대규모 masked language model을 사용하는 sequence tagging 방식과 합성 데이터로 Transformer 아키텍처를 사전 학습하는 sequence-to-sequence 방식으로 구분
합성 데이터 생성 방법과 사용되는 seed 말뭉치의 차이는 GEC 시스템을 더욱 다양하게 함</p>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/8ec6aa48-7461-4cfd-beda-4a1df46f5099/image.png" alt=""></p>
<p>이러한 차이로 인해 모델마다 장단점이 있다 (그림 1)
GEC 모델의 강점 차이를 시스템 조합 방법을 통해 결합하여 더 나은 문법 오류 보정을 생성하는데 활용
본 논문에서는 CoNLL-2014, BEA-2019 shared task 모두에서 SOTA
본 논문의 기여</p>
<ul>
<li>우린 각각의 edit을 독립적으로 예측하는 이진 분류로 공식화하여 문법 오류 수정 시스템을 결합</li>
<li>제안된 방법은 기본 시스템의 출력에만 의존하므로 모든 기본 GEC 시스템과 호환</li>
</ul>
<h1 id="2-related-work">2. Related Work</h1>
<p>한 접근법(MEMT)는 어떠한 edit type 유형에 의존하지 않고 출력 문장만 사용하는 반면, 다른 두 접근법(IBM, GEC-IP)는 edit type만 사용하고 어떤 가설(구성 시스템의 출력 문장)은 전혀 사용하지 않음
이 섹션에서는 시스템 조합 방법을 보완하는 또 다른 시스템 조합 방법(DDC)으로 기본 시스템에 다양성을 도입</p>
<h2 id="21-memt">2.1 MEMT</h2>
<p>MEMT는 여러 개의 시스템으로부터 기계 번역 가설을 결합하도록 설계된 시스템 결합 방법
MEMT는 먼저 가설을 정렬하고 후보 토큰들의 모든 가능한 경로를 생성함으로써 가설들을 결합
MEMT는 가능한 후보 토큰을 검색하는 데 no repetition, weak monotonicity, completeness 등 몇 가지 제약 조건이 있음
그런 다음 n-gram 언어 모델 점수, 가설과의 n-gram 유사도 및 후보 내 토큰 수에 따라 후보 토큰의 점수를 매기는 방법을 학습</p>
<h2 id="22-ibm">2.2 IBM</h2>
<p>IBM 시스템 조합 방법은 두 가설의 편짐을 첫 번째 가설에만 나타나는 편집, 두 가설에 모두 나타나는 편집, 두 번째 가설에만 나타나는 편집 세가지 그룹으로 구분하여 작동
모델은 각 편집 유형에 대해 어던 그룹을 포함할지 결정
IBM 방식은 한 번에 두 시스템만 결합할 수 있음
따라서 두 개 이상의 시스템을 결합하려면 이 방법을 반복적으로 적용해야 함</p>
<h2 id="23-gec-ip">2.3 GEC-IP</h2>
<p>GEC-IP는 IBM 방법과 유사하지만 더 간단하며, IBM 방식에서 사용되는 것처럼 실수 값 매개변수를 최적화하고 나중에 반올림하는 대신 비선형 정수 프로그래밍을 사용하여 매개변수를 직접 최적화
GEC-IP와 IBM의 또 다른 주요 차이점은 한번에 두 개의 시스템만 결합하는 대신 여러 개의 기본 시스템을 결합할 수 있음
GEC-IP에선 각 편집 유형에 대해 시스템은 최종 수정으로 적용할 하나의 기본 시스템의 편집만 선택하고 다른 기본 시스템의 편집은 무시</p>
<h2 id="24-ddc">2.4 DDC</h2>
<p>다양성 중심 조합(DDC)는 결합 시스템의 성능을 향상시키기  위해 시스템 결합 시나리오에서 기본 시스템 간의 다양성을 증가시키는 것을 목표로 하는 방법
기본 시스템이 다양하고(거의 상관 없음) 유사한 품질을 가져야 한다는 것을 보여줌
DDC는 미게 조정을 위해 백본 시스템 역할을 해야 하기 때문에 완전히 블랙박스 방식은 아님
DDC는 강화 학습을 사용하여 기본 시스템에 다양성을 유도한 다음 기성 시스템 조합 방법을 사용하여 기본 시스템을 결합
블랙박스 시스템 조합 방식이 아니라서 본 논문에선 DDC와 비교X</p>
<h1 id="3-method">3. Method</h1>
<p>이 섹션에선 작업을 공식화하는 방법을 설명하고 가설(즉, 개별 기본 시스템의 출력 문장)에서 가능한 모든 편집을 수집하고 각 편집에 대해 결합된 시스템의 최종 출력 문장을 생성하기 위해 유지해야 하는 지 또는 폐기해야 하는지를 예측하는 방법을 제시
이 방법을 ESC(Edit-based System Combination)라고 부름</p>
<h2 id="31-task-formulation">3.1 Task Formulation</h2>
<p>GEC 시스템 조합을 이진 분류 작업으로 공식화
기본 GEC 모델을 블랙박스로 간주하고 제안된 편집을 기반으로 모델을 결합
기본 GEC 모델에 의해 생성된 가설에서(시작 인덱스, 끝 인덱스, 수정 문자열) 튜플 형태의 편집을 추출. 또한 각 편집에는 자동 오류 주석 도구에서 가져온 편집 유형이 있으며, 편집 유형은 편집 기능의 일부로 사용
각 편집은 삽입(누락의 경우 M), 삭제(불필요: U), 대체(대체의 경우 R) 세 가지 작업 중 하나가 될 수 있음
추출된 편집 유형의 예는 표 1
<img src="https://velog.velcdn.com/images/jukyung-j/post/98b374f1-5cee-4039-869c-440a2c12ac1b/image.png" alt=""></p>
<p>모든 가설에서 편집된 내용을 조합하여 통합 집합 E로 수집
이 방법은 주변 편집 내용이나 문맥 단어의 정보 없이 각 편집 내용을 독립적으로 평가
편집  유형에 전적으로 의존하며 편집의 텍스트 정보를 사용X
일반화된 선형 모델을 사용하여 다음 하위 섹션에서 정의할 편집의 특징에 따라 결합 시스템의 출력 문장을 생성하기 위해 E의 각 편집을 유지해야 하는지 또는 폐기해야 하는지 예측</p>
<h2 id="32-features">3.2 Features</h2>
<p>결합할 k 기본(구성 요소) 시스템의 가설이 k개 있다고 가정
E의 각 편집 e는 feature vector $x_i, i=1...k$를 연결하여 형성되는 feature vector $x$로 표현
<img src="https://velog.velcdn.com/images/jukyung-j/post/cb3b4c89-996f-4139-ae57-5d9203a589b1/image.png" alt="">
$x_i$는 가설 $i$에 편집 유형이 존재할 경우 가설 $i$의 편집 유형 $e$의 one-hot representation(예: M:ADJ -&gt; [1,0,0,..], M:ADV-&gt;[0,1,0,...])이고, 존재하지 않을 경우 0 vector이다</p>
<p>이러한 방식으로 모델은 편집 유형과 어떤 가설이 편집을 제안하는 기준으로 편집을 유지할지 여부를 결정하는 방법을 학습
모델에 제공된 정보는 IBM 방법과 GEC-IP 방법과 동일하나, 작업 공식화 및 최적화 방법은 다름
편집 유형 $T$ 집합의 경우 $x_i ∈ R^{|T|}$ and $x ∈ R^{k|T|}$. 우리 작업에선 $|T|=54$</p>
<h2 id="33-model">3.3 Model</h2>
<p>로지스틱 회귀를 분류 모델로 사용
로지스틱 회귀를 분류기로 사용하면 적은 양의 학습 데이터로도 모델을 학습할 수 있고 결과를 해석할 수 있음
또한 다양한 종류의 기본  GEC 시스템을 결합할 때 매우 잘 작동한다는 사실을 발견
각 편집에 대해 다음과 같이 출력 문장을 생성하는 데 사용할 올바른 편집일 확률을 얻음:
<img src="https://velog.velcdn.com/images/jukyung-j/post/41b1b56c-6cb6-4d12-8e8c-93fcccdb564a/image.png" alt="">
σ 는 sigmoid function</p>
<h2 id="34-post-processing">3.4 Post-processing</h2>
<p>여러 가설에서 편집한 내용을 결합하기 떄문에 같은 위치에 여러 번 삽입되거나 중복된 대체로 인해 편집이 중복될 수 있다.</p>
<ul>
<li><p>Multiple insertions
동일한 위치에서 충돌하는 여러 삽입 편집은 서로 다른 GEC 시스템에 의해 제안된 경우 함께 적용되어서는 안됨
동일한 위치에 여러 개의 삽입 편집이 있을 경우 (예: (3,3, on), (3, 3, in)) 이를 다중 삽입 충돌로 간주</p>
</li>
<li><p>overlapping substitutions
편집의 시작 또는 끝 인덱스가 다른 편집의 시작 및 끝 인덱스 사이에 있는 경우 (예; (2, 4, eaten), (2, 3, ate)), 이를 중복 대체 충돌로 간주</p>
</li>
</ul>
<p>모델에서 확률을 얻은 후 편집을 선택하기 위해 greedy 전략을 사용
먼저, 특정 임계값 이상의 확률을 가진 편집만 고려
그런 다음 확률이 가장 높은 순서부터 가장 낮은 순서로 편집을 정렬하고 편집을 하나씩 확인하여 이전에 선택한 편집과 충돌하지 않는 편집만 선택</p>
<h1 id="4-experiments">4. Experiments</h1>
<h2 id="41-implementation">4.1 Implementation</h2>
<p>ERRANT를 사용하여 기본 GEC 모델의 출력에서 편집을 추출하고 Pytorch의 선형 모듈을 사용하여 모델을 구현. binary cross entropy가 있는 SGD를 사용하여 모델을 최적화하고 0.5의 임계값을 사용하여 편집을 선택.
<img src="https://velog.velcdn.com/images/jukyung-j/post/5efb6932-89f4-4a26-9795-681da1070a5c/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[The Past Mistake is the Future Wisdom: Error-driven Contrastive Probability Optimization for Chinese Spell Checking]]></title>
            <link>https://velog.io/@jukyung-j/The-Past-Mistake-is-the-Future-Wisdom-Error-driven-Contrastive-Probability-Optimization-for-Chinese-Spell-Checking</link>
            <guid>https://velog.io/@jukyung-j/The-Past-Mistake-is-the-Future-Wisdom-Error-driven-Contrastive-Probability-Optimization-for-Chinese-Spell-Checking</guid>
            <pubDate>Fri, 12 May 2023 11:00:47 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<p>PLM에 대한 학습된 지식과 CSC 작업의 목표 사이에는 격차가 있음
PLM은 텍스트의 의미론에 초점을 맞추고 잘못된 문자르 의미론적으로 적절하거나 일반적으로 사용되는 문자로 수정하는 경향이 있지만, 이는 실제 수정이 아님
이 문제를 해결하기 위해 CSC 작업에 대한 오류 중심의 지속적 확률 최적화(ECOPO) 프레임워크 제안
ECOPO는 PLM의 지식 표현을 개선하고 모델이 오류 중심 방식을 통해 이러한 일반적인 문자르 예측하지 않도록 안내
특히 ECOPO는 모델에 구애받지 않으며 기존 CSC 방법과 결합하여 더 나은 성능을 달성</p>
<h1 id="1-introduction">1. Introduction</h1>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/d76fa007-55f4-4e2a-821c-f67f5a01d7b8/image.png" alt="">
<em>그림 1. 중국어 철자 오류 예. 이전 연구는 오류의 83%가 음운 오류에 속하고 48%가 시각 오류에 속함을 보여줌. 우리는 문자의 발음과 번역을 제공. 입력을 confusing/golden/common 후보 문자를 red/blue/orange로 표시 &#39;후보&#39; 문장의 문자는 모두 미세 조정된 BERT에 의해 예측</em></p>
<p>PLM에 대한 학습된 지식과 CSC 작업의 목표 사이에는 상당한 격차가 존재. PLM은 의미론적 관점에서 유익한 표현을 제공하지만, CSC에서 의미론만 고려한다면 보정할 수 있는 적절한 문자는 여러개 있음
음운 및 시각적 유사성의 제약 없이 PL은 사전 학습 절차의 마스킹 전략으로 인해 의미적으로 적절하거나 일반적인 문자를 쉽게 예측할 수 있음</p>
<p>그림 1은 BERT의 두 가지 예측을 보여 줌
첫 번째 예는 &quot;素(sù, plain)&quot;와 &quot;诉(sù, sue)&quot;의 오용으로 인해 발생합니다.
이상적인 CSC 모델은 발음 정보 &quot;su&quot;에 주목하고 입력 혼동 문자에 대한 보정으로 golden 문자 &quot;诉(sue)&quot;를 출력해야 합니다.
그러나 일반적인 말뭉치에 대해 사전 훈련을 받은 BERT는 &quot;争(정, 싸움)&quot;, &quot;¯(모우, 계획)&quot; 및 &quot;获(후, 획득)&quot;과 같은 의미론적으로 적절한 문자를 예측하는 경향이 있습니다
두 번째 예에서 BERT는 또한 &quot;解(jie, understand)&quot;와 &quot;ˇ(xiè, slack)&quot; 사이의 시각적 유사성을 간과하여 잘못된 수정을 초래합니다.</p>
<p>이러한 격차를 완화하기 위해 PLM의 지식 표현을 최적화하여 PLM이 위에서 언급한 공통 문자를 예측하지 않도록 할 수 있는 권한을 부여할 것을 제안. 직관적으로 모델이 이전과 같은 실수를 저지르지 않도록 모델을 안내하면 모델 성능이 향상되어야 함
따라서 모델이 저지른 실수는 모델의 지식 표현에 대한 제약으로 활용될 수 있음
즉, 모델 자체를 더육 향상시키기 위해 모델이 저지를 수 있는 과거의 실수를 활용하는 것인데, 이것이 바로 &quot;과거의 실수가 미래의 지혜&quot;라는 제목의 의미</p>
<p>CSC 모델의 지식 표현을 개선하는 것을 목표로 하는 간단하지만 효과적인 훈련 프레임워크인 오류 중심 COntrastive Probability Optimization(ECOPO)을 제안
ECOPO는 (1) negative sample 선택의 두 단계로 구성
다양한 문자에 대한 모델의 예측 확률을 기반으로 높은 확률을 가진 공통 문자를 negative sample로 선택
gloden 문자는 positive sample로 간주
(2) 대조 확률 최적화
양성 샘플과 음성 샘플을 활보 후, 서로 다른 문자에 대한 예측 확률을 최적화하는 것을 목표로 하는 대조확률 최적화(CPO)를 통해 모델을 학습
최적화 프로세스를 통해 최종적으로 사전 학습된 PLM 지식과 CSC의 목표 사이의 간극을 좁힐 수 있음
또한 ECOPO는 최적화 대상 모델에 대한 엄격한 제한이 없기 때문에 기존의 다양한 CSC 모델의 성능을 향상</p>
<p>요약하자면:</p>
<ol>
<li>PLM에 대한 지식과  CSC의 목표 사이의 격차로 인한 부정적인 영향을 관찰하고 초점을 맞춤</li>
<li>과거의 실수를 통해 모델이 성장하고 발전하도록 가르칠 수 있는 모델 독립적인 ECOPO 프레임워크 제안</li>
<li>SIGHAN 벤치마크에 대한 광범위한 실험과 상세한 분석을 수행하고  SOTA 달성</li>
</ol>
<h1 id="2-related-work">2. Related Work</h1>
<h2 id="22-contrastive-learning">2.2 Contrastive Learning</h2>
<p>대조 학습의 주된 동기는 특정 공간에서  positive sample을 끌어당기고 negative sample은 밀어내는 것
NLP의 기존 대조 학습 모델은 주로 언어 표현 공간(예: 단어/문장/의미 표현)에 초점을 맞추고 있음
우리가 제안하는 방법은 선택된 positive/negative sample과 원래 예측된 확률을 통해 다양한 문자에 대한 모델의 확률 공간을 직접 최적화</p>
<h1 id="3-methodology">3. Methodology</h1>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/c14f3c04-6506-48df-8f67-3175a8ca76bb/image.png" alt=""></p>
<p>그림 2와 같이 제안된 ECOPO에 대해 자세히 소개
ECOPO는 PLM의 지식 표현을 개선하여 CSC 작업의 본질과 간극을 좁히는 것을 목표
섹션 1에서 언급했듯이 최적화 프로세스 이전의 모델을 사용하여 이 모델 자체에서 생성된 오류를 negative sample로 선택
그런 다음 대조 확률 최적화 목표를 통해 정답에 대한 모델의 예측 확률을 최대화하고 negative sample에 대한 모델의 예측 확률을 최소화
이러한 오류 중심의 방식으로 모델의 원래 예측 확률이 개선되어 CSC 작업에서 모델의 성능이 향상
따라서 모델은 인간과 마찬가지로 실수를 반복하면서 성장하고 발전하게 됨</p>
<h2 id="31-observation-and-intution">3.1 Observation and Intution</h2>
<p>그림 1에서 볼 수 있듯이 BERT와 같은 PLM은 CSC 작업에서 더 많은 주의를 기울여야 하는 혼동하기 쉬운 문자에 제대로 attention 할 수 없는 것이 ECOPO의 핵심 관찰 결과</p>
<p>이러한 차이는 주로 일반적인 말뭉치와 언어 모델의 사전 학습에 사용되는 학습 패러다임에 비롯된다고 생각
BERT를 예로 들면, 사전 학습 코퍼스는 주로 위키피디아의 텍스트에서 가져온 것으로, 혼동하기 쉬운 문자가 포함된 문맥의 비율이 매우 낮음
또한 마스킹 복구 전략은 사전 학습 과정에서 PLM이 습득한 지식을 CSC 작업에서 불연속적으로 만듬</p>
<p>사실 사람이 맞춤법 오류를 수정할 때도 동일한 문제가 존재
맞춤법 오류를 보지 않고 입력된 문장의 문맥만 주어지면 혼동하기 쉬운 문자가 아닌 일반적인 문자를 문맥과 연관시키는 경향이 있음
따라서 인간이나 모델은 일반적인 문자를 잘못 예측할 수 있음
직관적으로, 오류 기반 방식을 통해 일반 문자에 대한 모델을 최적화할 수 있다면, 인간이 실수를 통해 발전하는 것처럼 모델을 더욱 향상시킬 수 있음</p>
<h2 id="32-stage-1-negative-samples-selection">3.2 Stage 1: Negative Samples Selection</h2>
<p>CSC의 negative sample을 최적화 프로세스 전에 PLM에 의해 높은 예측 확률이 잘못 할당되는 공통 문자로 정의
일반적인 collocation이나 구를 형성할 수 있는 negative sample은 golden 문자보다 높은 확률로 할당되는 경향이 있어 모델이 잘못된 수정을 함
따라서 다음 단계에서 활용한 negative sample을 선택하기 위해 예측 확률에 기반한 간단한 전략을 사용</p>
<p>특히 BERT와 같은 PLM을 사용하여 마지막 transformer layer의 출력을 기반으로 각 입력 토큰의 원래 문자를 예측. 문장 X에서 i번째 토큰 $x_i$의 예측 확률은 다음과 같이 정의
<img src="https://velog.velcdn.com/images/jukyung-j/post/69c3b111-f46d-4762-bcd4-19a3f388bd68/image.png" alt=""></p>
<p>여기서 $p(y_i=j|X)$는 i번째 토큰 $x_i$가 PLM의 vocab에서 j번째 문자로 예측되는 조건부 확률을 의미하며, $W∈R^{vocab * hideen}$및 $b∈R^{vocab}$은 학습 가능한 매개 변수이며, vocab은 어휘의 크기이고 hidden은 hidden state의 사이즈, $h_i∈R^{hidden}$은 i번쨰 토큰 $x_i$에 대한 PLM의 hidden state output</p>
<p>원래 예측 확률을 바탕으로 모델이 입력 문자에 대해 잘못된 수정을 할 경우 입력 문자에 대해 negative sample을 선택
negative sample set Neg는 candidate set T에서 다음과 같이 선택
<img src="https://velog.velcdn.com/images/jukyung-j/post/3bf55545-a9f6-4ee9-8350-50c0151680bf/image.png" alt=""></p>
<p>t-와 t+는 각각 음의 샘플과 양의 샘플을 의미
음의 표본 t-는 예측 확률이  vocab V의 상위 K개에 있는 토큰 중에서 선택되고 K의 가장 좋은 값이 경험적으로 선택
학습 과정은 CSC task에서 supervised되므로 golden 문자를 sample t+로 간주</p>
<h2 id="33-stage-2-contrastive-probability-optimization">3.3 Stage 2: Contrastive Probability Optimization</h2>
<p>positive/negative sample과 해당 예측 확률을 얻은 후, CPO(Contrastive Probability Optimization) 목표에 따라 모델을 학습</p>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/1a8eec93-7864-4a6d-96fc-53deb572a1cc/image.png" alt=""></p>
<p>N은 배치크기, K는 선택한 negative samples size, $t^-_{k}$는 Neg에서 k번째 negative sample</p>
<p>CPO목표는 양성 샘플(즉, 혼동하기 쉬운 문자)에 대한 예측 확률을 높이고 음성 샘플(즉, 공통 문자)에 대한 예측 확률을 낮추는 모데을 학습시키는 것</p>
<p>모델의 일반화 성능을 보존하기 위해 기존의 원래 목표 $L_ORI$와 CPO 목표 $L_CPO$를 모두 학습함
전체 목표:
<img src="https://velog.velcdn.com/images/jukyung-j/post/70ed30b9-7cfe-4af2-863a-21d6bdce5e39/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] A Chinese Spelling Check Framework Based on Reverse Contrastive Learning]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-A-Chinese-Spelling-Check-Framework-Based-on-Reverse-Contrastive-Learning</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-A-Chinese-Spelling-Check-Framework-Based-on-Reverse-Contrastive-Learning</guid>
            <pubDate>Sun, 30 Apr 2023 12:42:48 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<p>기존 연구는 text representation을 향상시키고 multi-source 정보를 사용하여 모델의 detection과 correction의 성능을 향상시키는 것을 목표로 하지만 혼동하기 쉬운 단어를 구별하는 능력을 향상시키는 데 크게 attention X
유사한 sample pair간의 representation space를 최소화하는 것을 목표로하는 Contrastive learning(대조 학습)은 자연어처리 주요 기법
대조 학습에 영감을 받아 language representation, spelling check 그리고 역대조 학습의 세 가지 모듈로 구성된 중국어 맞춤법 거사를 위한 새로운 프레임워크 제시
특히, 모델이 음성적으로나 시각적으로 혼동하기 쉬운 문자 간의 일치도를 최소화하도록 명시적으로 강제하는 역 대조학습 제안
이 프레임워크는 모델에 구애받지 않으며 기존 중국어 철자 검사 모델과 결합하여 SOTA</p>
<h1 id="introduction">Introduction</h1>
<p>맞춤법에 대한 대부분의 최근 성공은 BERT와 같은 non-autoregressive 모델에 의해 달성
왜냐하면 출력의 길이가 입력의 길이와 정확히 같아야 하고 동시에 소스 시퀀스의 각 문자가 대상의 문자와 동일한 위치를 공유해야 하기 때문 </p>
<blockquote>
<p>한국어에선 입력 길이와 출력길이가 달라지는 경우도 있으텐데 적용 가능할려나...</p>
</blockquote>
<p>한자의 오류 패턴은 시각적 음성적으로 요약될 수 있음
CSC 모델이 음성 및 시각적으로 혼동하기 쉬운 문자를 잘 구별할 수 있다면 철자 오류를 수정하는 데 있어 성능을 향상시키는 데 큰 도움
그러나 현재 혼동하기 쉬운 문자 문제를 해결하는 데 도움이 되는 음성 및 시각 정보의 사용을 고려하는 방법은 거의 없음</p>
<p>반면, self-supervised representation 학습은 대조 학습의 적용으로 크게 발전했는데, 주요 아이디어는 임베딩 공간에 대상 예제(anchor)와 유사한(positive) 예제 사이의 일치를 최대화하는 동시에 이 대상과 다른 유사하지 않은(negative) 예제간의 불일치를 최대화하도록 모델 학습
먼저 대조 학습을 fully-supervised setting, 즉 레이블 정보를 효과적으로 활용하여 anchor의 긍정적인 예와 부정적인 예를 구별할 수 있는  Supervised Contrastive Learning(SCL)에 적용할 수 있도록 함</p>
<p>대조 학습의 목적은 유사한 예를 모으는 것이지만, 음성적이나 시각적으로 유사한 문자를 분리해서 모델이 혼동하기 쉬운 문자를 구별하는 데 도움이 될것을 제안
(1) 대조 학습을 CSC 작업에 적용하고 혼동하기 쉬운 문자와 관련된 철자 오류를 더 잘 감지하고 수정하는 모델을 만드는 역 대조 학습(RCL)전략 제안
(2) RCL 전략을 기존 CSC 모델과 쉽게 결합하여 더 나은 성능을 산출할수 있는 모델에 상관없는 CSC 프레임워크 제시
(3) 새로운 CSC 모델이 SIGHAN 벤치마크에서 SOTA</p>
<h1 id="3-the-chinese-spelling-check-framework">3. The Chinese Spelling Check Framework</h1>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/c1571ed5-9038-4310-9ae8-d47285392c54/image.png" alt=""></p>
<p>철자 검사를 non-autoregressive작업으로 취급
CSC의 프레임워크는 language representation, 맞춤법 정확성 및 역대조 학습 3가지 모듈로 구성</p>
<h2 id="a-language-representation-module">A. Language representation module</h2>
<p>입력을 인코딩 하기 위해 사전 학습된 모델 채택
주석이 달리지 않은 방대한 텍스트 데이터로 학습된 사전 학습 모델은 매개변수의 언어 규칙성을 기억하여 다운스트림 모듈에 풍부한 문맥 표현을 제공할 수 있음
입력 시퀀스 X가 주어졌을 떄, 모델은 먼저 입력 시퀀스 X를 임베딩 $E^t_0$에 투영하고 multiple hidden encoding layer를 거친 후 마지막으로 language representation $E^t = E^t_L$산출
이 중 각 레이어의 출력은 다음과 같이 표시
<img src="https://velog.velcdn.com/images/jukyung-j/post/2a0414de-9e07-42c2-a73d-daa4f4399efc/image.png" alt=""></p>
<h2 id="b-spelling-check-modulke">B. Spelling check modulke</h2>
<p>이전 모듈에서 생성된 language presentation $E^T$가 주어졌을 때, 모델의 목표는 시퀀스에서 부적절한 문자를 감지하고 수정하여 목표 시퀀스 Y를 생성
이 모델의 학습 손실은 $L_{correct}$로 표시</p>
<h2 id="c-reverse-contrastive-learning-module">C. Reverse contrastive learning module</h2>
<p>대조 학습의 기본 원리는 유사한 데이터 포인트(동일한 레이블 또는 positive sample)가 서로 가깝게, 동시에 서로 다른 데이터 포인트(negative sample)와는 멀리 떨어져 있도록 모델을 학습
그러나 대조 학습에서 주요 장애물은 적절한 샘플을 구성하는 방법
CSC는 데이터 증강이나 기존 레이블을 직접 사용해 양성 샘플을 구하기 어려움
negative sample을 구성하는 데에만 집중하는 역 대조 학습(RCL) 전략 제안
중국어 문자(anchor)가 주어지면, 부정 샘플은 이 문자와 같은 소리를 내는(동음이의어)와 이문자와 비슷하게 보이는 모든 문자(혼동 집합)로 정의
따라서 학습 목표는 앵커와 그 동음이의어 사이의 거리와 혼동 집합에서 앵커와 거리를 최대화하는 것</p>
<p>K개의 한자 $B_K$가 포함된 미니배치가 있고 $I=${$1,...,K$}가 문자 집합이라고 가정
문자 $x_i$(병음은 $y_i$로 표시)와 혼동 집합 $C_i$가 주어지면 배치에서 이 문자와 동일한 병음을 공유하는 다른 모든 문자는 집합 $S=${$s:s ∈ I, y_s = y_i ∧  s != i$}를 형성. 그런 다음 병음 정보를 기반으로 역 대조 손실 함수를 정의
<img src="https://velog.velcdn.com/images/jukyung-j/post/24c7e052-2c7b-4140-a1c2-6f58a08d7146/image.png" alt=""></p>
<p>batch $B_k$는 혼동 집합 $C_i$에서 발생하는 모든 문자는 집합$W=${$w:w∈C_i∧w∈B_k$}을 구성
마찬가지로 혼란 집합에 기초한 손실 함수는 다음과 같음
<img src="https://velog.velcdn.com/images/jukyung-j/post/3cdf9718-d545-4fca-854d-80457d5c9cca/image.png" alt=""></p>
<p>두 방정식에서 sim(.)은 코사인 유사도를 의미하며, τ는 유사도에 얼마나 민감한지를 제어하는 temperature
두 뮨자가 공통점이 많을 경우 τ가 0에 가까울수록 유사성을 강조하고, τ가 클수록 유사성에 신경X
전체 역대조 손실은 모든 negative pairs, 즉 $(x_i, s)$과 $(x_i, w)$에 걸쳐 배치에서 계산
<img src="https://velog.velcdn.com/images/jukyung-j/post/0b10d877-61e9-4cce-953c-0653edc22d99/image.png" alt=""></p>
<p>따라서 전체 프레임워크의 총 송실은 이전 섹션에서 언급한 역대조 학습 손실과 맞춤법 검사 훈련 손실의 가중치 합계
<img src="https://velog.velcdn.com/images/jukyung-j/post/e988db7c-171f-451e-98b7-67ecf73fc3c1/image.png" alt=""></p>
<p>그림 1에 표시된 세 개의 발화(크기 3의 미니 배치)를 예로 들어보면 (喜, 希) and (舞, 无)는 각 쌍의 문자가 동일한 병음(Pinyin)을 가지고 있기 때문에 모두 negative paris. 또한 (欢, 观) 역시 &#39;观&#39;이 &#39;欢&#39;의 혼동 세트에서 발생하므로 negative pair.
우리의 학습 목표는 각 쌍의 문자 표현 사이의 거리를 최대화하고 다른 모둔 문자는 그대로 두는 것</p>
<h1 id="4-evaluation-protocol">4. Evaluation Protocol</h1>
<h2 id="datasets">Datasets</h2>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/ef1fbb0f-8aa7-4a63-9037-b9e9b3228838/image.png" alt="">
학습 데이터는 Wang271K corpus2를 사용.
또한 SIGHAN 2013, 2014, 2015의 학습 셋도 채택하여 해당 테스트 셋에 대해 제안한 전략의 성능 평가
데이터셋의 통계는 표1에 나와 있음
우리가 사용한 혼동 세트는 시각적 유사성과 음성적 유사성을 기반으로 구축</p>
<h2 id="setups">Setups</h2>
<p>CSC 프레임워크가 특정 모델에 종속되지 않는다는 것을 보여주기 위해, DCN과 ReaLiSe를 모두 사용하여 구현
DCN의 경우 language representation module로 RoBERTa를 사용하고, 맞춤법 검사 모듈은 dynamic connected scorer와  Pinyin-enhanced candidate generator로 구성
전체 네트워크는 5e-5의 학습률로 AdamW를 사용하여 최적화 되고 20 epoch에 걸쳐 32 batch size로 학습
ReaLiSe의 경우, 사전 학습된 모델로써 BERT를 사용함. 위의 모델과 동일한 옵티마이저, 32 batch size에 10 epoch동안 모델 학습
warm up과 linear decay 사용
$L_correct$를 계산하기 위해 Cross entropy선택
역대조 손실의 가중치는 최종 값을 찾기 위해 파라미터 검색을 채택</p>
<h2 id="baseline-models">Baseline Models</h2>
<p>다른 7개 모델도 비교
<strong>Sequence Labeling</strong>
CSC 작업을 시퀀스 레이블링 문제로 처리한 다음 양방향 LSTM 모델을 기반으로 지도 시퀀스 레이블링 모델 구축
동시에 모델의 클래스 교차 엔트로피 손실을 최소화하기 위해 RM-Sprop을 optimizer로 사용</p>
<p><strong>FASpell</strong>
denoising autoencoder(DAE)와 decoder로 구성된 새로운 패러다임</p>
<ol>
<li>DAE는 BERT, XLNet, MASS 등과 같은 비지도 사전 학습 언어 모델의 성능을 활용하여 지도 학습에 필요한 중국어 맞춤법 검사 데이터의 양을 줄임</li>
<li>Decoder는 혼동 셋의 유연하지 않고 불충분한 중국어 문자 유사도 핵심 특성 사용을 제거하는데 도움</li>
</ol>
<p><strong>BERT</strong>
CSC 학습 데이터로 모델을 직접 미세 조정하여 철자 오류 수정을 구현할 수 있는 강력한 사전 학습 언어 모델</p>
<p><strong>SpellGCN</strong>
graph convolutional networks를 사용하여 SpellGCN은 지정된 문자 혼동 셋을 BERT 기반 correction model에 통합</p>
<p><strong>Soft-Masked BERT</strong>
오류 감지를 위한 네트워크와 BERT 기반의 오류 수정을 위한 네트워크로 구성</p>
<p><strong>FixedFilt</strong>
혼동셋을 수작업으로 생서하는 대신 FixedFilt는 계층적 문자 임베딩을 활용하는 확장 가능한 adaptable filter를 사용하여 흔하지 않은 오류로 인한 희소성 문제를 해결</p>
<p><strong>MLM-phonetics</strong>
강력한 사전 학습 및 미세 조정 방법을 사용하여 음성 기능을 언어 모델에 통합
음운의 특징을 가진 단어들과 비슷한 소리를 내는 단어들이 그 자리에 사용</p>
<h1 id="5-experiments">5. Experiments</h1>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/367dd489-8d25-44a8-b3e1-107ea390b73b/image.png" alt="">
<img src="https://velog.velcdn.com/images/jukyung-j/post/ea692b5a-a8fa-408e-b8e5-8bab5d04afaf/image.png" alt="">
<img src="https://velog.velcdn.com/images/jukyung-j/post/55e258b3-1066-4b86-8b80-9d37e10f1f6a/image.png" alt=""></p>
<p>표 2,3,4는 각각 SIGHAN 2013, 2014, 2015 벤치마크에서 다른 모델과 비교한 RCL 프레임워크의 결과를 보여줌
우리의 방법은 fine tuning단계에서 실험하기 때문에 사용된 데이터는 SIGHAN 2013과 같은 4개의 데이터로 제한되어 있으므로 미세 조정단계에서도 최적화된 모델만 비교
역대조 학습 전략이 여러 데이터셋에서 일괄된 개선 효과를 가져오는 것을 관찰할 수 있음
표2에서 볼 수 있듯이 DCN을 사용하면 바닐라 DCN에 비해 F-value이 오류 감지에서 1.2%, 수정에서 1.5%증가
또한 ReaLiSe 기반 프레임워크는 탐지 측면에서 84.3%의 F-value와 83.2%의 교정률로 가장 높은 점수 획득</p>
<p>모든 결과는 우리가 제안한 방법의 효과를 보여주며, 모델에 의존적이지 않다는 것을 잘 보여줌</p>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/f7adebdf-f8a3-4fa9-b86b-34c4309cd84d/image.png" alt="">
SIGHAN 2015 데이터셋에 대한 Realise-based 프레임워크의 결과를 예로 들어 다양한 모듈에 대한 ablation 연구를 수행, 실험 결과는 표5
pinyin기반 RCL 모듈을 제거 하면 탐지 수준 F-value와 보정 수준 F-value과 1.4%, 1.6%하락
혼동 셋을 제거하면 0.8%, 0.7%만 하락
병음 정보가 모델 성능 향상에 더 큰 역할을 함</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] Active Self-Supervised Learning: A Few Low-Cost Relationships Are All You Need]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Active-Self-Supervised-Learning-A-Few-Low-Cost-Relationships-Are-All-You-Need</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Active-Self-Supervised-Learning-A-Few-Low-Cost-Relationships-Are-All-You-Need</guid>
            <pubDate>Mon, 17 Apr 2023 11:19:47 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<p> Self-Supervised Learning(SSL)은 레이블이 없는 데이터에서 transfer 가능한 representation을 학습하기 위한 선택 솔루션으로 떠오름
하지만 SSL은 의미론적으로 유사한 샘플(positive views)을 구축해야 함
이러한 지식이 필요하다는 것이 SSL의 주요 한계이며, 데이터 증강을 적용하는 등의 임시 전략으로 극복
오라클이 샘플 간 의미 관계를 쿼리하는 Positive Active Learning(PAL)을 통해 일반화</p>
<ol>
<li>SSL을 넘어 이론적으로 견고한 학습 프레임워크 공개, 이는 오라클에 따라 supervised 및 semi-supervised learning을 해결</li>
<li>어떤 SSL 손실에 대한 사전 지식(예: 일부 관찰된 레이블)을 학습 파이프라인 변경 없이 삽입하는 일관된 알고리즘 제공</li>
<li>입력간 의미적 관계의 간단한 쿼리를 통해 비전문가가 쉽게 답변할 수 있는 Active Learning framework를 제공하여 데이터셋에 주석 처리하는 저렴한 솔루션 제공
이는 이론과 실제 active learning간의 격차를 줄이는 데 도움</li>
</ol>
<h1 id="1-introduction">1. Introduction</h1>
<p>현재 인공지능 연구의 주요 목표 중 하나는, 다양한 작업을 해결하고, 후처리를 최소화할 수 있는 데이터 representation을 학습하는 것
이러한 representation은 일반적으로 Deep Networks(DNs)를 통해 주어진 입력을 처리하여 찾아짐
현대 연구의 주요 관심사는 DN의 parameter를 조정하는 데 사용되는 훈련 설정의 선택에 초점
layerwise, reconstruction based, 그리고 최근엔 SelfSupervised Learning(SSL)등 다양한 전략이 제안
기존 학습 솔루션 중에서 joint-embedding SSL이 가장 유망한 솔루션 중 하나로 부상
이 방법은, 일부 알려진 변환에 대해 불변한 representation을 학습하면서 표현의 차원 축소 방지
이러한 불변성은 이미지에 대한 번역과 같은 일부 데이터 증강(DA) 기법을 적용하여 동일한 입력에 대한 representaion이 같아지도록 함</p>
<p>SSL에는 두 가지 주요 제한 사항</p>
<ol>
<li>지도 학습과 완전히 분리되어 있어 각 분야에서 progress(진전) transfer 되지 않음</li>
<li>loss 및 DA를 조정하는 것 외에 사전 지식을 SSL 프레임워크에 통합하는 방법이 명확X
예를 들어, (일부) 레이블 정보에 액세스할 수 있는 경우, 사전 학습에 SSL을 사용한 다음 지도 학습으로 미세 조정. 또는 SSL 학습 중에 레이블 정보를 사용하여 positive pair을 샘플링할 것을 제안하지만, 이 변형이 학습된 DN에 어떤 이점을 제공한다는 보장은X</li>
</ol>
<p>이 연구에서, similarity graph의 관점에서 기존 SSL과 supervised loss를 재정의해서 두 제한 사항 완화
노드는 데이터 샘플을 나타내고 edge는 샘플 간 관계를 반영
우리는 similairity graph의 관점에서 학습에 대해 생각할 수 있는 일반적인 프레임워크를 제공
SSL과 supervised 학습이 두 극단(two extremes)으로 보일 수 있는 스펙트럼 생성
이 영역 내에서, 이 두 극단은 유사도 행렬을 통해 연결되며, 실제 유사도 그래프를 변경하여 동일하게 만들 수 있음
특히, 유사도 그래프가 기본 레이블과 일치할 때 SSL 변형은 각각 평균 제곱 오차, discriminatn analysis 및 cross-entropy supervised learning과 유사한 표현을 학습한다는 사실을 알게 될 것임
이러한 유사도 그래프를 사용해서 SSL 및 supervised training loss를 정의함으로써 자연스럽게 발생하며, 능동 학습의 비용과 전문가 요구 사항을 줄이기 위한 프레임워크 공개</p>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/ca2ec735-fe1b-48c6-947e-eb3e1f1449ec/image.png" alt="">
Figure 1. Active(능동적) Self-Supervised Learning은 PAL(오른쪽 상자) 소개, 이는 Active Learning(왼쪽 상장)의 대안.
PAL에서는 오라클이 입력이 의미적으로 관련이 있는지 여부를 물음. Active Learning과는 달리, 모든 가능한 클래스를 알 필요가 없고 동일한 클래스의 입력을 구분하는 방법만 알면 됨
이러한 이유로 PAL은 유사도 그래프 G에 따라 작동하는 저비용 대안으로 입증, 충분한 샘플을 쿼리하면 SSL 또는 지도 학습의 학습된 표현이 동일해 짐
PAL 쿼리는 flexible하며, 예로 주어진 입력이 다른 입력들과 함께 제시되고, 오라클은 해당 입력 중에서 Positive 입력을 선택할 수 있는 la captcha 버전을 보여줌</p>
<blockquote>
<p>Tell me who your friend are, and I will tell yo who you are</p>
</blockquote>
<p>Active learning은 오라클에게 필요할 때만 샘플 레이블을 요청하여 지도 학습 비용을 줄이는 것을 목적
이는 절대적인 샘플 레이블링 대신 상대적인 샘플 비교로 공식화
이러한 효율적이고 저비용의 방법은 우리 프레임워크에서 파생된 Active learning 전략
그림 1에 표시된 것처럼 레이블을 요청하는 대신, 두 개 이상의 입력이 동일한 클래스에 속하는지 여부를 묻는다.
이러한 전략으 Positive Active Learning(PAL)이라고 지칭, 전총적인 Active learning에 비해 PAL의 이점에 대한 주요 분석을 제시</p>
<ul>
<li>유사도 그래프 개념을 기반으로한 통합 학습 프레임워크를 제공. 이는 self-supervised learning, supervised learning, semi-supervised learning 및 여러 변형을 모두 포함</li>
<li>underlying similarity graph를 쿼리하기 위한 오라클에 기반한 일반적인 PAL 알고리즘을 도출. 다른 학습 프레임워크(SSL, 지도 학습 등)는 서로 다른 오라클을 통해 복구되며, 각 프레임워크의 차이점을 활용하기 위해 결합될 수 있음</li>
<li>유사도 쿼리를 기반으로 한 active learning 프레임워크로 PAL을 확장하여 데이터셋에 주석을 달기 위한 저비용 효율적인 전략을 제공하는 방법을 보여줌 (그림1 참조)</li>
</ul>
<h1 id="2-background-on-self-supervised-learning">2. Background on Self-Supervised Learning</h1>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰]K-NCT: Korean Neural Grammatical Error Correction Gold-Standard Test Set Using Novel Error Type Classification Criteria]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0K-NCT-Korean-Neural-Grammatical-Error-Correction-Gold-Standard-Test-Set-Using-Novel-Error-Type-Classification-Criteria</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0K-NCT-Korean-Neural-Grammatical-Error-Correction-Gold-Standard-Test-Set-Using-Novel-Error-Type-Classification-Criteria</guid>
            <pubDate>Wed, 08 Mar 2023 13:35:05 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<p>새로운 오류 유형 분류 가이드라인을 사용해 한국어 문법 오류교정을 위한 Korean Neural Grammatical Correction Test set(K-NCT)라는 gold-standard test set를 제안
사실성과 신뢰성을 확보하기 위해 상용화 시스템과 인적 평가를 활용한 정략적 분석 수행
실험 결과, 제안한 문법 오류 수정 테스트셋이 균형 잡히고 다양하며 정확한 가이드라인을 가지고 있음을 입증</p>
<h1 id="1-introduction">1. Introduction</h1>
<p>제시된 오류 유형은 띄어쓰기, 문장부호, 숫자, spelling과 grammatical 오류로 크게 4가지
이는 다시 균형성, 다양성, 사실성과 관련된 23개의 하위 범주로 나뉨
언어 전문가 자문을 통한 인적 평가와 공개된 상용화 시스템을 통해 정성적 분석을 진행해서 사실성과 신뢰성을 확보</p>
<h1 id="3-k-nct">3. K-NCT</h1>
<p>특정 유형만 포함된 pseudo-parrel 말뭉치를 쓰면 정확한 성능 측정 불가
K-NCT는 다양한 도메인, 방법론, 음절 수 등을 고려 100% 사람이 구축한 고품질 데이터셋</p>
<h2 id="a-considering-the-balance">a. Considering the Balance</h2>
<p>오류 유형, 음절 길이, 텍스트 스타일, 도메인이 균형 있게 포함되어 있음
띄어쓰기 500개, 구두점 500개, 숫자 오류 500개 공정하게 구성
맞춤법 및 문법 오류의 세부 오류 유형은 단일 언어 1312개, 다중 언어 200개, 맞춤법 800개, 구문 411개, 의미론 200개, 신조어 100개로 구성</p>
<h2 id="b-considering-the-diversity">b. Considering the Diversity</h2>
<p>글쓰기, 말하기, 대화 스타일도 고려
여러 오차 유형을 통해 모델에서 어떤 오차 유형이 강세인지 약세인지 판단할 수 있음</p>
<h2 id="c-considering-the-factuality">c. Considering the factuality</h2>
<p>사실성은 사람이 판단하기에 자연스럽거나 사실에 가까운 것이기 때문에 사람의 평가를 거침
오류 유형 분류는 크게 4가지(띄어쓰기, 구두점, 숫자, 맞춤법 및 문법 오류)를 기준으로 23개의 세부 오류 유형으로 분류
맞춤법 및 문법 오류는 1차 오류와 2차 오류로 구분해서 세부적으로 분석
<img src="https://velog.velcdn.com/images/jukyung-j/post/8d7c3670-9a57-4138-93ca-c9d598bb65a6/image.png" alt=""></p>
<p><strong>띄어쓰기 오류</strong>
타이핑 잘못이나 습관
<strong>구두점 오류</strong>
문장 안에 문장 부호가 첨가되지 않거나 잘못 배치되었을 때 발생
<strong>수치오류</strong>
기수가 수량을 나타내고 서수가 순서를 나타낼 때 발생. 예를 들어 &quot;한 시 일 분&quot;을 잘못 쓰면 &quot;하나 시 일 분&quot; 또는 &quot;일시 일분&quot;으로 표기
<strong>맞춤법 및 문법 오류</strong>
1차 오류로 분류하고 2차 오류를 하위 분류</p>
<ul>
<li>remove error: 일부 단어가 인식되지 않거나 끝이나 조사가 생략될 때 발생. 흔하게 저지르는 실수 중 하나</li>
<li>addition error: 같은 단어가 반복되거나, 조사가 사용되지 않거나, 끝이 추가될 때 발생</li>
<li>replace error: 다른 단어가 단어를 대체하는 단어 대체와, 한 구 내에서 음절 순서가 바뀌는 회전 대체로 세분화</li>
<li>separation Error: 문자의 자음과 모음이 분리될 때 발생</li>
<li>Typing language error: 안녕-&gt;dkssud</li>
<li>Foreign word conversion error: 수프-&gt;스프</li>
<li>consonant vowel conversion error(자음 모음 변환 오류): non-speaking 철자 오류, 이제 곧 갑니다-&gt;이제콘 갑니다</li>
<li>Grapheme-to-phoneme error: 발음에 따라 철자 쓰는거, 이제콘 갑니다 -&gt; 이제 곧 갑니다</li>
<li>element error: 한국어 문장 요소가 단어 순서에 맞지 앟음. (주어, 목적어, 동사)가 정해져 있고, 목적어가 필요한 타동사가 있음</li>
<li>tense error: 시제와 일치하지 않는 동사 사용</li>
<li>postposition error: 문법에 맞지 않는 조사. 한국어는 응집 언어라 동사의 사용이 중요, </li>
<li>suffix error: 맞지 않는 어미 사용</li>
<li>auxiliary predicate error: 문법에 맞지 않는 조동사</li>
<li>dialect error: 모델이 의도한 방언을 생성하지 못하면 오류로 판단, 저자의 의도를 오류 판단 기준</li>
<li>polite speech error: 주제에 맞지 않는 정중한 말투</li>
<li>behavioral error: 사과가 바나나를 먹는다와 같은 주체가 수행할 수 없는 것</li>
<li>coreference error: 잘못된 엔티티 참조</li>
<li>discourse context error: 이전 담화 맥락과 모순</li>
<li>neologism error: 기존에 문법 체계에 없는 철자나 새로운 단어 사용. 방언과 마찬가지로 신조어 오류는 저자의 의도를 오류 판단 기준
<img src="https://velog.velcdn.com/images/jukyung-j/post/fd9874cd-dd1d-491a-9749-bd5dc432c57e/image.png" alt=""></li>
</ul>
<h2 id="d-construction-process">d. Construction process</h2>
<p><strong>data selection</strong>
AI-hub의 한국어-영어 번역(병렬)말뭉치에서 추출
글쓰기, 말하기, 대화 스타일이 모두 포함된 파일로, 글쓰기 스타일은 격식있는 언어, 말하기와 대화는 비공식적이고 자연스러운 언어에 해당
쓰기, 대화, 말하기는 각각 80만개, 10만개, 40만개로 구성
세 언어 스타일에서 각각 1000개의 문장을 무작위로 추출해서 3000개의 문장으로 데이터셋 수집</p>
<p><strong>Pre-processing</strong></p>
<ol>
<li>음절의 신뢰성을 고려한 문장 정렬 수행</li>
<li>띄어쓰기, 구두점, 숫자, 단일 언어, 다국어, 맞춤법, 구문, 의미, 신조 오류를 미리 정의된 비율에 따라 무작위로 태깅</li>
</ol>
<p><strong>Post-processing</strong>
오류 조건에 맞지 않는 올바른 문장을 대상으로 후처리 수행</p>
<p><strong>Error Injection</strong>
정답 문장에 포함된 오류 유형은 3단계(데이터 선택, 전처리, 후처리)를 통해 정렬
오류 주입은 정답 문장에 정렬된 오류 유형을 포함한 오류 문장을 생성
주어진 문장과 오류 유형에 따라 오류 주입을 수행해 오류 문장을 생성</p>
<ul>
<li>오류 유형을 정의하고 실제 예시 제시</li>
<li>인덱스의 음저 수를 수정해 자유도 제한</li>
<li>문장의 스타일 변경 제한</li>
<li>숫자 표현식은 문자를 제외한 통계 또는 날짜 표현식만 나타냄</li>
<li>맞춤법을 수정할 때는 키보드에서 두 개의 편집 거리 내에 있는 부분 사용</li>
<li>오류가 발생할 때 범위와 해당 오류 유형 나타냄
<img src="https://velog.velcdn.com/images/jukyung-j/post/e04b247c-02c3-405c-adaa-e3ee6768e2e6/image.png" alt="">
<img src="https://velog.velcdn.com/images/jukyung-j/post/a9ea2d93-2e6c-465f-b303-491dcb9da7d5/image.png" alt=""></li>
</ul>
<p>오류 문장의 평균 길이는 43.27, 평균 단어 수는 10.39, 평균 띄어쓰기 수는 9.39개, 정답 문장의 평균 길이는 43.29개, 평균 단어 수는 10.57, 평균 띄어 쓰기 수는 9.57</p>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/e2d89dbe-632a-42a2-88fa-10cdd61cc49e/image.png" alt="">
오류 문장에는 93,794개의 K-token, 904개의 E-token, 4,785개의 S-token이 포함
올바른 문장에는 93,56rodml K-token, 860개의 E-token, 4423개의 S-token이 포함</p>
<p>그림1과 그림2는 텍스트 스타일별 분포
그림1은 한국어 특성을 반영한 텍스트 스타일(글쓰기, 말하기, 대화)에 대한 데이터 양
각각 100개의 문장으로 구성
그림2는 음절 분포
글쓰기 스타일은 50<del>70음절, 말하기 스타일은 15</del>25음절, 대화 스타일은 20<del>30음절로 분포
K-NCT 모든 문장은 15</del>30 음절로 분포</p>
<p>그림3은 오류 유형 태깅의 분포
세부 오류 유형에 대해 맞춤법 및 문법 오류는 1500개 문장에 태그를 지정하고, 나머지 유형은 각각 500개 문장에 태그를 지정
단일 언어 오류는 1312개 문장에 태그가 지정
철자 오류는 800개 문장, 다국어 및 의미 오류는 200개, 구문 오류는 411개, 신조어 오류는 100개
다양한 오류 유형이 균형있게 분포</p>
<p><strong>Quantitative analysis</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/7df3411b-c600-48c1-9af6-802219a9e9d4/image.png" alt="">
네이버, 다음, 부산 사용
딥러닝 기반 문법 교정 연구에서 평가 지표로 사용되는 BLEU, GLEU score로 측정</p>
<p>오류 유형 분류 기준에 따라 각 시스템의 강점과 약점 분석
<img src="https://velog.velcdn.com/images/jukyung-j/post/b5a5fe61-4667-4365-90a8-684753b588e9/image.png" alt="">
가장 우수한 성능을 보이는 부산은 띄어쓰기에서 다른 모델에 비해 압도적으로 우수한 성능
구두점의 경우 다음 모델이 BLEU 69.16, GLEU 50.61
숫자의 경우 BLEU 기준으론 다음, GLEU기준으론 부산이지만 세 모델 모두 큰 차이는 없음
가장 중요한 성능인 맞춤법 및 문법의 경우 부산이 BLEU 75.07 GLEU 70.66으로 가장 우수</p>
<p>문장 쌍에 대한 오류 유형이 K-NCT로 레이블이 지정되어서 시스템에 대한 강점과 약점 분석 가능</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Stronger Baselines for Grammatical Error Correction Using a Pretrained Encoder-Decoder Model]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Stronger-Baselines-for-Grammatical-Error-Correction-Using-a-Pretrained-Encoder-Decoder-Model</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Stronger-Baselines-for-Grammatical-Error-Correction-Using-a-Pretrained-Encoder-Decoder-Model</guid>
            <pubDate>Wed, 08 Mar 2023 09:14:16 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<p>대량의 pseudodata로 Seq2Seq 모델을 사전 학습하는게 효과적이라고 보고
근데 이 접근법은 pseudo data의 크기 때문에 GEC를 위한 사전 학습에 많은 시간 소요
GEC를 위한 일반적인 사전 학습 인코더-디코더 모델로서 bidirectional 및 auto-regressive transformer(BART)의 유용성에 대해 살펴봄
일반 사전 학습 모델을 GEC에 사용하면 시간이 많이 걸리는 사전 학습을 없앨 수 있음
단일 언어 및 다국어 BART 모델이 GEC에서 높은 성능을 달성하며, 그 결과 중 하나는 현재 영어 GEC의 강력한 결과와 비슷</p>
<h1 id="1-introduction">1. Introduction</h1>
<p>GEC는 텍스트의 문법 및 기타 언어 관련 오류를 자동적으로 교정하는 작업
대부분의 작업에선 이 작업을 번역 작업으로 간주하고 인코더-디코더 아키텍처를 사용해 문법에 맞지 않는 문장을 문법에 맞는 문장으로 변환
이렇나 Enc-Dec 접근법은 대상 언어에 대한 언어학적 지식이 필요하지 않은 경우가 많음
GEC를 위한 강력한 Enc-Dec 모델은 단일 언어 말뭉치에 인위적인 오류를 도입해서 만든 대량의 인위적으로 생성된 데이터(일반적으로 pseudodata)로 사전 학습
이후 GEC task를 목표로 pseudo data를 사용한 사전 학습을 task-oriented 사전 학습이라고 함
예를 들어, 역번역을 사용해 pseudo corpusㄹ르 생성하고, 영어 GEC에서 좋은 결과 달성
단일 언어 말뭉치에 인위적인 오류를 도입해 pseudo corpus를 생성, 7개 언어의 GEC에서 최고 점수 획득
이러한 task-oriented 사전 학습 접근법은 pseudo 병렬 말뭉치를 광범위하게 사용, 이는 pseudo corpus를 사용해 GEC 모델을 사전 학습하는데 시간이 많이 소요되는 방식</p>
<p>이 연구에선 공개적으로 사용 가능한 사전 학습된 Enc-Dec 모델의 GEC에 대한 효과 확인
특히 pseudo data가 필요 없는 사전 학습된 모델을 조사
BART라는 사전 학습된 모델 사용
이 모델은 마스킹 및 셔플된 문장이 주어졌을 때 원본 시퀀스를 예측하는 방식으로 사전 학습
이러한 모델을 GEC에 사용하게 된 동기는 요약과 같은 여러 텍스트 생성 작업에서 강력한 결과를 얻어서</p>
<p>우리는 pseudo 말뭉치 접근법을 사용하는 GEC 모델과 비교하기 위해 사전 학습된 일반 BART 모델을 사용
4가지 언어에 대해 GEC 실험 수행, 영어, 게르만어, 체코어, 러시아어
BART에 기반한 Enc-Dec 모델은 영어 GEC에 대해 현재 강력한 Enc-Dec 모델과 비슷한 결과를 얻음
다국어 모델은 미세 조정이 필요함에도 불구하고 다른 언어에서도 높은 성능을 보임
이러한 결과는 BART가 GEC의 간단한 baseline으로 사용될 수 있음을 시사</p>
<h1 id="2-previous-work">2. Previous Work</h1>
<p>GEC를 위한 Enc-Dec 접근법은 종종 task-oriented 사전 학습 전략 사용
예를 들어 Zhao(2019), Grundkiewicz(2019) pseudo 말뭉치를 사용한 Enc-Dec 모델의 사전학습이 GEC task에 효과적이라고 보고
단음절 말뭉치의 문장에 단어 및 문자 수준의 오류를 도입
confusion set을 개발해 문장의 단어를 무작위로 대체, 삭제, 랜덤 단어 삽입, 인접한 단어로 교체
문자에 대해서도 이와 동일한 작업 수행
위와 같은 방법으로 만든 pseudo 말뭉치는 1억 개의 학습 샘플로 구성
이러한 대규모 말뭉치로 사전 학습하는 것은 시간이 많이 걸리기 때문에, 본 연구는 일반적인 사전 학습 모델이 GEC에 효과적인지 검증하는 것을 목표로 함</p>
<p>또 다른 방법은 Naplava(2019) 독일어, 체코어, 러시아어를 포함한 여러 언어에 대해 pseudo 말뭉치(1000만 문장 쌍)로 학습해서 독일어, 체코어, 러시아어 GEC에 대한 SOTA 결과 얻음(위와 같은 방식 사용)
이러한 결과를 사전 학습된 일반 모델의 결과와 비교하여 모델이 여러 언어의 GEC에 효과적인지 확인</p>
<p>Kiyono(2019) 무작위 오류를 도입하거나 역번역을 사용해 pseudo 말뭉치를 생성하는 방법 탐구
역번역 데이터와 문자 오류를 사용한 task-oriented 사전학습이 무작위 오류를 기반으로 한 pseudo data보다 더 우수하다고 보고
Kaneko(2020)는 Kiyono(2019)의 사전 학습 방식과 BERT를 결합해 Kyono의 결과를 개선
특히 Kaneko(2020)는 문법 오류 감지 task를 통해 BERT를 미세 조정
각 토큰에 대해 미세 조정된 BERT 출력은 원래의 토큰과 결합되어 GEC 입력으로 사용
두 연구 모두 공개적으로 사용 가능한 일반 사전 학습 모델을 사용해 GEC를 수행한다는 점에서 우리의 연구와 유사
이 두 연구의 차이점은 Kaneko는 사전 학습된 모델의 아키텍처를 인코더로 사용했다는 점
따라서 이들의 방법은 여전히 많은 양의 pseudo data로 사전 학습 해야 함</p>
<p>영어 GEC의 현재 SOTA 방법은 Omelianchuk(2020)가 제안한 시퀀스 태깅 모델 사용
token-level transformation을 설계해 입력 토큰을 학습 데이터를 생성하기 위한 target correction에 매핑
그런 다음 시퀀스 태깅 모델은 입력 토큰에 해당하는 변환을 예측
본 연구의 목적은 pseudo data나 언어적 지식을 사용하지 않고 강력한 GEC 모델을 만드는 것이므로 이 접근 방식과 비교X</p>
<h1 id="3-generic-pretrained-model">3. Generic Pretrained Model</h1>
<p>BART는 transformer를 사용해 마스크된 시퀀스와 셔플된 시퀀스가 주어진 원본 시퀀스를 사전 학습
Span-BERT에서 영감을 얻은 Poisson distribution에 기반한 다양한 길이의 마스크 토큰을 여러 위치에 도입
문장의 언어를 표현하기 위해 special token 사용
예를 들어 독일어-러시아어 변환을 위해 인코더 및 디코더의 initial token에 <de_DE>와 <ru_RU>를 추가
GEC에 맞게 mBART를 미세 조정하기 위해 해당 언어를 참조하는 special token의 target 언어를 설정</p>
<h1 id="4-experiment">4. Experiment</h1>
<h2 id="41-settings">4.1 Settings</h2>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/ff994390-1a40-4d9b-8efc-b0956912f198/image.png" alt="">
<strong>Common Settings</strong>
사용한 데이터셋은 표1과 같음
모델은 single GPU(NVIDIA TITAN RTX)를 사용해 미세 조정, 구현은 공개적으로 사용 가능한 코드를 기반으로(fairseq)
ensemble을 제외한 점수는 random seed를 사용한 5번의 미세 조정 실험에서 평균</p>
<p><strong>English</strong>
영어 GEC를 위한 학습 데이터는 BEA-train에서 추출
source와 target에서 변경되지 않은 문장은 사용X(문법적으로 맞은 문장), 학습 데이터는 561,525개의 문장으로 구성
BEA-dev를 사용해 최적의 모델을 찾음</p>
<p>BART-large를 사용해 BART 기반 모델을 학습
이 모델은 적절한 출력을 보장하기 위해 추론에 약간의 제약이 필요한 요약 작업을 위해 제안되었지만, 우리는 task의 성격이 다르기 대문에 제약 조건 부과X
BART 기반 모델을 위한 학습 데이터에는 BPE 모델을 사용해 바이트 쌍 인코딩(BPE)를 적용</p>
<p>CoNLL-14와 JFLEG에는 각각 M2점수와 GLUE를 사용했고, BEA test에넌 ERRANT 점수를 사용
이러한 점수를 strong 결과와 비교(Kiyono, Kaneko)</p>
<blockquote>
<p>m2 score: 오류 교정의 단위를 구(phrase)로 취급하고 GEC 결과가 정답과 비교해서 얼마나 교정되었는지 평가
GLUE: m2에 생성된 순위가 상관이 별로 없다해서 BLUE의 수정
n-gram 기반 평가 지표로 일반적인 기계 번역분야의 성능 측정과 달리, 원시 언어 문장도 같이 교정 성능 측정에 입력해서, 교정 모델이 원시 언어 문장에서 올바르게 교정한 부분에 대해서 평가 가중치를 더 부여</p>
</blockquote>
<p>독일, 체코, 러시아 GEC를 위해 mBART-base 모델 학습(mbart.cc25)
mBART-base 모델에 대한 GEC 학습 데이터를 detokenized하고, SentencePiece 모델과 함께 SentencePiece를 적용
이 전처리를 통해 입력된 문장은 형태소 분석 tool, subword tokenizer를 사용해 토큰화된 문장과 비교하여 입력 문장이 문법 정보를 나타내지 않을 수 있음
그러나 어떤 전처리가 GEC에 적합한지는 본 논문의 범위를 벗어나므로 추후 연구로 다룰 예정
평가를 위해 subword를 복구한 후 출력을 토큰화
그런 다음 독일어와 러시아어에는 spaCy 기반의 tokenizer를 사용, 체코어에는 MorphoDiTa tokenizer 사용</p>
<p>게다가, M2 점수는 각 언어에서 사용, 이 점수를 현재 SOTA 결과와 비교</p>
<h2 id="42-results">4.2 Results</h2>
<p><strong>English</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/b209fdef-8c9c-4d66-a9cc-ae64491eef3a/image.png" alt="">
표2는 영어 GEC task의 결과
단일 언어 모델을 사용할 경우, BART 기반 모델이 Kiyono가 제안한 모델보다 우수하며, CoNLL-14 및 BEA-test 측면에서 Kaneko가 말한 결과와 비슷한 수준
Kiyono와 Kaneko는 GEC의 정확도 향상을 위해 여러 가지 기법을 적용
이러한 모델들ㅇ르 비교하기 위해 다섯 가지 모델의 앙상블로 실험 진행
앙상블 모델은 싱글 모델보다 약간 더 좋았지만 다른 두 모델의 앙상블 모델보단 더 나빴음
앙상블 모델과 함께 BART-base 모델은 BART 모델을 미세 조정하기만 했음에도 불구하고 현재의 강력한 결과와 비슷한 결과를 얻음
앙상블 방식의 비효율적인 이유는 초기 가중치가 BART 모델과 동일하고, seed는 학습 데이터 순서 등 사소한 변화에만 영향을 미치기 때문에 5개의 모델이 크게 다르지 않기 때문인 것으로 판단</p>
<p><strong>German, Czech, and Russian</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/0abc5119-1051-4bdf-afc4-c54c2e08a61b/image.png" alt="">
표3은 독일어, 체코어, 러시아어 GEC에 대한 결과
독일 GEC-task에선 mBART-based 모델이 4.45 F0.5점 낮은 점수 나옴
이는 Naplava가 target 언어로만 GEC 모델을 사전 학습했고 mBART는 25개 언어로 사전 학습해서 다른 언어의 정보가 노이즈로 포함되기 때문일 수도
10M pseudo 말뭉치로 mBART 모델을 추가 학습하고 학즙자 말뭉치로 미세 조정해서 자원이 부족한 시나리오 보완</p>
<h1 id="5-discussion">5. Discussion</h1>
<p><strong>BART as a simple baseline model</strong>
독일어와 체코의 GEC 결과에 따르면 사전 학습된 mBART 모델을 미세 조정한 mBART-base 모델은 SOTA 모델과 비교할 수 있는 점수(엥?)
즉, mBART-base 모델은 pseudo 말뭉치를 사용하지 않고도 여러 언어에 대해 충분히 높은 성능을 보이는 것으로 간주
이러한 결과는 mBART-base 모델이 여러 언어에 대한 간단한 GEC baseline으로 사용될 수 있음을 나타냄</p>
<p><strong>Performance comparison for each error type</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/81d0f0c5-9949-419f-b990-1652f1a74b61/image.png" alt="">
BART-base model을 Kaneko(2020)모델과 비교
BART-base는 PUNCT 및 DET 오류에서 좋고
특히, PUNCT는 5.6 F0.5 더 높음
BART는 셔플 및 마스킹된 시퀀스를 수정하도록 사전 학습되어 있으므로 이 모델은 구두점을 적절하게 배치하는 방법 학습
ORTH, SPELL는 BART가 사전 학습에서 셔플, 마스킹된 시퀀스를 노이즈로 사용해서 이러한 오류를 수정하기 어렵고, 문자 수준 오류를 사용하지 않음
Kaneko는 pseudo 말뭉치에 문자 오류 도입</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰]Encoder-Decoder Models Can Benefit from Pre-trained Masked Language Models in Grammatical Error Correction]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0Encoder-Decoder-Models-Can-Benefit-from-Pre-trained-Masked-Language-Models-in-Grammatical-Error-Correction</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0Encoder-Decoder-Models-Can-Benefit-from-Pre-trained-Masked-Language-Models-in-Grammatical-Error-Correction</guid>
            <pubDate>Tue, 07 Mar 2023 12:29:05 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<p>오류 보정을 위해 BERT와 같이 사전 학습된 MLM을 EncDec 모델에 효과적으로 통합하는 방법
MLM을 EncDec 모델에 통합하는 이전의 이란적인 방법은 GEC에 적용될 때 잠재적인 단점
예를 들어, GEC 모델에 대한 입력의 분포는 MLM을 사전 학습하는 데 사용된 말뭉치의 분포와 다를 수 있음
실험 결과, 주어진 GEC 말뭉치로 MLM을 fine-tuning한 다음 fine-tuning된 MLM의 출력을 GEC 모델의 추가 기능을 사용하는 제안된 방법이 MLM의 이점을 극대화
최고 성능 모델은 BEA-2019, CoNLL-2014에서 SOTA</p>
<h1 id="1-introduction">1. Introduction</h1>
<p>MLM을 EncDec 모델에 통합하는 일반적인 방법은 초기화(init)과 융합(fusion)
초기화 방법에선 다운스트림 task model이 사전 학습된 MLM의 파라미터로 초기화된 다음 task-specific training set에 대해 학습
근데 이 방식은 시퀀스간 언어 생성 작업과 같은 작업에는 적합하지 않음
많은 양의 학습 데이터가 필요, 그렇게 되면 사전 학습된 표현이 파괴되어 망각으로 이어짐</p>
<p>융합 방법에는 task-specific model을 학습하는 동안 미리 학습된 MLM의 representation이 추가 기능으로 사용
이 방법을 GEC에 적용할 경우, MLM이 사전 학습에서 학습한 내용은 유지하지만, MLM이 GEC task 또는 task-specific 입력 분포(예:학습자 말뭉치의 오류 문장)에 맞게 조정되지 않음</p>
<p>BERT를 사용하고, 다음 세가지 방법 평가
(a) 사전 학습된 BERT를 사용해 EncDec GEC 모델을 초기화(BERT-init)
(b) 사전 학습된 BERT의 출력을 추가 기능으로 EncDec GEC 모델에 전달(BERTfuse)
(c) a와 b의 best parts를 결합</p>
<p>(c)에선 먼저 GEC 말뭉치로 BERT를 미세 조정한 다음, 미세 조정된 BERT 모델의 출력을 GEC 모델의 추가기능으로 사용
이를 구현하기 위해 (c1)은 사전 학습된 BERT를 GEC 말뭉치로 추가로 학습시키는 방법(BERT-fuse mask)와 (c2)는 문법 오류 감지(GEC) 작업을 통해 사전 학습된 BERT를 미세 조정하는 방법(BERT-fuse GEC) 두 가지 옵션 고려
(c2)에선 대규모 일반 말뭉치(사전 학습된 BERT)에서 학습된 표현과 GEC 학습 데이터에서 유도된 GEC에 유용한 작업별 정보를 모두 활용할 수 있도록 GEC모델을 학습할 것으로 예상</p>
<p>미세 조정된 BERT 모델의 출력을 GEC 모델의 추가 기능으로 사용하는 방법(c)가 대부분의 GEC 말뭉치에서 BERT를 가장 효과적으로 사용하는 방법임
또한 BERT-fuse mask와 BERTfuse GED 방법을 결합하면 GEC의 성능이 더욱 향상</p>
<h1 id="2-related-work">2. Related Work</h1>
<p>MLM을 re-ranker로 사용하거나 필터링 tool로 사용할 경우 GEC의 성능을 향상시킬 수 있다고 보고
MLM과 결합된 EncDec 기반 GEC 모델은 이러한 파이프라인 방법과 함께 사용될 수 있음
MLM은 일반적으로 미세 조정을 통해 다운스트림 작업에 사용되지만, MLM의 최종 레이어의 출력을 문맥 임베딩으로 EncDec 모델에 제공하는 게 더 효과적이다</p>
<h1 id="3-methods-for-using-pre-trained-mlm-in-gec-model">3. Methods for Using Pre-trained MLM in GEC Model</h1>
<p>사전 학습된 MLM을 GEC모델에 통합하기 위한 접근 방식을 설명
(1) BERT를 사용해 GEC 모델 초기화
(2) BERT 출력을 GEC 모델의 추가 기능으로 사용
(3) GEC 코퍼스로 미세 조정된 BERT의 출력을 GEC 모델의 추가 기능으로 사용</p>
<h2 id="31-bert-init">3.1 BERT-init</h2>
<p>BERT 가중치로 초기화된 GEC EncDec 모델 만듬
가장 최근의 SOTA는 문법적으로 올바른 문장에 pseudo 오류를 주입해 pseudo 데이터 사용
하지만 이 방법은 pseudo 데이터에서 학습한 사전 학습된 파라미터로 GEC 모델을 초기화할 수 없음</p>
<h2 id="32-bert-fuse">3.2 BERT-fuse</h2>
<p>feature-based 접근법(BERT-fuse)로 모델 사용
이 모델은 트랜스포머 EncDec 아키텍처를 기반으로 함
BERT가 입력 문장을 인코딩하고 representation을 출력
다음으로 GEC 모델은 입력 문장과 representation을 입력으로 인코딩</p>
<h2 id="33-bert-fuse-mask-and-ged">3.3 BERT-fuse Mask and GED</h2>
<p>BERT-fuse의 장점은 원시 말뭉치에서 사전 학습된 정보를 보존할 수 있지만, GEC 작업이나 작업별 입력 분포에는 적용되지 않을 수 있음
GEC 모델에선 BERT 학습에 사용되는 데이터와 달리 입력이 잘못된 문장이 될 수 있어서
GEC와 BERT를 학습하는 데 사용되는 말뭉치 사이의 격차를 메우기 위해, GEC 말뭉치에 대해 BERT를 추가로 학습하거나(BERT-fuse Mask), BERT를 GED 모델로 미세 조정한 후(BERT-fused GED) BERT-fuse에 사용
GED는 입력 문장에서 문법적으로 잘못된 단어를 검출하는 시퀀스 라벨링 작업
BERT는 GED에도 효과적이라 문법적 오류를 고려한 미세 조정에 적합한 것으로 판단</p>
<h1 id="4-experimental-setup">4. Experimental Setup</h1>
<h2 id="41-train-and-development-sets">4.1 Train and Development Sets</h2>
<p>BEA-2019를 학습 및 development셋으로 사용
특히 GEC모델을 학습하기 위해 W&amp;I-train, NULE, FCE-train, Lang-8 데이터셋 사용
BERT-fuse mask 및 GED에 대한 BERT를 학습하기 위해 W&amp;I-train, Nuclear, FCE-trian을 학습으로 사용하고 W&amp;I-dev를 개발 데이터로 사용</p>
<h2 id="42-evaluating-gec-performance">4.2 Evaluating GEC Performance</h2>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/02ba3b83-6439-4260-8549-084aac8af577/image.png" alt="">
W&amp;I-test에선 ERRANT 평가지표를, CoNLL-2014 및 FCE-test 셋에선 M2점수, JFLEG에선 GLUE 사용
모든 결과(앙상블 제외)는 4개의 서로 다른 무작위 시드를 사용한 4번의 개별 실험의 평균</p>
<h2 id="43-models">4.3 Models</h2>
<p>GEC 모델의 하이퍼파라미터 값은 표1에 나와 있음
GEC 모델을 학습하는 동안 모델은 development set에서 평가되어 매 epoch마다 저장
1 epoch가 끝날 때 loss가 떨어지지 않으면 학습은 learning rate에 0.7 곱함
learning rate이 최소보다 낮거나 학습 epoch이 최대 epoch인 30에 도달하면 학습 중지</p>
<h2 id="44-pseudo-data">4.4 Pseudo-data</h2>
<p>또한 pseudo 데이터 GEC 모델에서 사전 학습된 모델에 추가 기능으로 BERT-fuse, BERT-fuse mask, BERT-fuse GED 출력을 사용해 실험 수행
pseudo 데이터는 문법적으로 올바른 문장에서 문법적으로 잘못된 문장을 생성하는 역번역 모델의 출력에 확률적으로 문자 오류를 주입해 생성</p>
<h2 id="45-right-to-leftr2l-re-ranking-for-ensemble">4.5 Right-to-left(R2L) Re-ranking for Ensemble</h2>
<p>standard left-to-right(L2R) 모델은 정규 앙상블의 점수를 사용해 n-best 가설을 생성하고 R2L 모델은 점수를 다시 매김
그런 다음 L2R과 R2L 점수의 합을 기준으로 n-best 후보의 순위를 다시 매김
생성 확률을 re-ranking 점수로 사용하고 4개의 L2R 모델과 4개의 R2L 모델 앙상블</p>
<h1 id="5-results">5. Results</h1>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/45059e44-99fc-4106-ad7a-dd5dfd4747f0/image.png" alt="">
표2는 GEC 모델의 실험 결과
BERT를 사용하지 않고 Transformer에서 학습된 모델은 w/o BERT로 표시
상위 결과 그룹에서 BERT를 사용하면 GEC 모델의 정확도가 지속적으로 향상
BERT-fuse, BERT-fuse mask 및 BERT-fuse GED는 BERT-init보다 성능 좋음
또한 GEC 말뭉치를 BERT-fuse로 간주하는 BERT를 쓰면 더 나은 수정 결과를 얻을 수 있음
그리고 BERT-fuse GED는 항상 BERT-fuse mask보다 더 나은 결과 제공
이는 BERT-fuse GED가 문법 오류를 명시적으로 고려할 수 있기 때문일 수 있음
두 번째 행에서는 BERT를 사용해 수정 결과 개선
이 설정에서도 BERT-fuse GED는 FCE 테스트셋을 제외한 모든 경우에서 다른 모델보다 성능이 뛰어났으며, BEA2019, CoNLL14에서 단일 모델로 SOTA
마지막 행에선 앙상블 모델은 모든 말뭉치에서 높은 점수 얻음</p>
<h1 id="7-conclusion">7. Conclusion</h1>
<p>GEC 모델 학습에 MLM을 효과적으로 사용한느 방법 조사
그 결과, BERT-fuse GED가 GEC 말뭉치에 맞게 미세 조정되었을 때 가장 효과적인 기법 중 하나였음을 알 수 있음</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰]A Simple Recipe for Multilingual Grammatical Error Correction]]></title>
            <link>https://velog.io/@jukyung-j/A-Simple-Recipe-for-Multilingual-Grammatical-Error-Correction</link>
            <guid>https://velog.io/@jukyung-j/A-Simple-Recipe-for-Multilingual-Grammatical-Error-Correction</guid>
            <pubDate>Mon, 06 Mar 2023 08:40:05 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<ul>
<li>언어에 구애받지 않는 방법을 제안해 많은 합성 예제를 생성</li>
<li>두 번째 요소는 대규모 다국어 언어 모델(최대 11억 개의 매게 변수)를 사용</li>
<li>언어별 supervised set에 대한 fine-tuning이 완료되면 GEC 벤치마크에서 영어, 체코어, 독일어, 러시아어에서 SOTA</li>
<li>GEC를 위한 새로운 baseline을 설정한후, cLANG-8 데이터셋을 공개해 결과를 쉽게 재현하고 액세스할 수 있도록</li>
<li>이 데이터셋은 많이 사용하지만 노이즈가 많은 LANG-8 데이터셋의 target을 clean하기 위해 gT5라고 하는 우리의 최고의 모델을 사용해 생성</li>
<li>cLANG-8은 여러 fine-tuning 단계로 구성된 일반적인 GEC 학습 파이프라인을 크게 간소화</li>
<li>기성 언어 모델을 사용해 cLNAG-8에서 single fine-tuning 단계를 수행하면 이미 최고 성능의 영어용 gT5 모델보다 정확도가 향상</li>
</ul>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>최신 접근법은 GEC 작업을 단일 언어 text-to-text rewriting으로 간주하고 인코더 디코더 neural 아키텍처 사용</li>
<li>이러한 방법은 제대로 작동하려면 일반적으로 대규모 학습셋이 필요, 특히 영어 이외의 언어에는 부족</li>
<li>GEC에 가장 크고 널리 사용되는 데이터셋 중 하나는 80개 언어를 포괄하며 언어 학습자들이 서로의 텍스트를 수정하여 만든 LANG-8 학습자 코퍼스</li>
<li>언어 분포가 치우쳐져 있음, 일본어와 영어가 각각 100만개 이상의 비문법적-문법적 문장 쌍을 가지지만, 10,000개 이상의 문자 쌍을 보유한 언어는 10개에 불과</li>
<li>또한 많은 예시에는 불필요한 의역과 오류 또는 불완전한 수정이 포함</li>
<li>학습 데이터의 양이 제한되어 GEC에 대한 합성 학습 데이터를 생성하는 접근법이 나옴</li>
<li>첫 번째 fine-tuning 단계로 합성 데이터를 사용하면 모델 정확도가 향상되는 것으로 나타났지만, GEC 모델의 개발과 공정한 비교를 어렵게 만드는 실질적인 문제 발생</li>
</ul>
<ol>
<li>합성 방법은 종종 언어별 튜닝(예: 언어별 하이퍼파라미터 및 철자 사전)이 필요</li>
<li>합성 데이터가 대상 평가 셋의 완전한 오류 분포를 포착할 수 없기 때문에 최종 모델은 multi-stage fine-tuning 과정을 거져 얻음</li>
</ol>
<ul>
<li>따라서 각 fine-tuning 단계마다 학습 속도와 학습 단계 수를 신중하게 선택해야 하므로 이전에 가장 잘 보고된 모델을 복제하고 이를 기반으로 구축하기가 어려움</li>
<li>self-supervised 사전 학습을 활용하고 모델 크기를 늘리는 아이디어는 GEC에 제한된 범위에서만 적용되었음</li>
<li>이 논문에선 101개 언어를 포함하는 말뭉치에 대해 이미 사전 학습된 mT5를 base model로 채택</li>
<li>문법 문장을 자동으로 수정해 합성 학습 데이터를 생성해 101개 언어 모두에 대해 단일 모델을 학습하며 언어에 구애받지 않기 위해 특정 언어에 대한 선행 학습을 전혀 사용X</li>
<li>사전 학습 후에는 사용 가능한 언어(수춘 개에서 수만개 까지 다양)에 대한 supervised GEC data에 대해 모델을 더욱 fine-tuning</li>
<li>또한 모델 크기를 6천만개에서 11억 개의 매개변수로 확장하는 효과 실험</li>
</ul>
<ul>
<li>연구 결과를 많이 이용할 수 있도록 하기 위해 가장 큰 gT5모델을 사용해 자주 사용되지만 노이즈가 많은 LANG-8 데이터셋의 target을 정제하여 얻은 cLANG-8 데이터셋 공개</li>
<li>cLANG-8에서만 fine-tuning된 T5가 원래 LANG-8 데이터셋에서 학습한 모델보다 성능 우수해서 GEC 모델을 학습하는 복잡한 다단계 프로세스를 단순화한다는 것을 보여줌</li>
</ul>
<ol>
<li>언어에 구애받지 않는 간단한 사전 학습 목표만으로도 SOTA GEC 달성할 수 있음을 보여줌</li>
<li>모델 크기가 GEC에 미치는 영향</li>
<li>추가적인 fine-tuning 없이도 SOTA를 얻을 수 있는 LANG-8 기반의 대규모 다국어 GEC 데이터셋을 공개해 학습 설정을 크게 간소화</li>
</ol>
<h1 id="2-model">2. Model</h1>
<ul>
<li>우리 모델은 광범위한 NLG 작업에서 SOTA 결과를 달성하는 것으로 입증된 Transformer encoder-decoder 모델은 T5의 다국어 버전인 mT5를 기반</li>
<li>이 작업에선 base(600M parameter), xxl(13B parameter)를 사용</li>
</ul>
<h2 id="21-mt5-사전-학습">2.1 mT5 사전 학습</h2>
<ul>
<li>mT5는 101개 언어를 포괄하고 약 500억 개의 문서로 구성된 Common Crawl의 하위 집합인 mC4 말뭉치에 대해 사전 학습을 거침</li>
<li>사전 학습 목표는 autoregressive seq2seq 모델에 대한 마스킹 언어 목표의 변형인 span-prediction task를 기반으로 함</li>
</ul>
<ul>
<li>모든 mT5 모델은 1024개의 최대 시퀀스 길이를 가진 1024개의 입력 시퀀스 batch에 대해 1M 단계에 대해 학습되었으며, 이는 약 1T개의 토큰에 해당</li>
<li>모든 실험에선 공개적으로 사용 가능한 mT5 및 T5 checkpoint 사용(섹션 4만 해당)</li>
</ul>
<h2 id="22-gec-사전-학습">2.2 GEC 사전 학습</h2>
<ul>
<li>mT5의 span-prediction 목표는 특수 토큰을 사용해 텍스트를 삽입해야 하는 위치를 표시하기 때문에 추가 fine-tuning 없이는 모델이 GEC를 수행X</li>
<li>또 다른 제약 조건은 mT5가 문장이 아닌 단락에 대해 학습되었음</li>
<li>따라서 mC4 말뭉치의 모든 단락을 문장으로 분할</li>
<li>다음 작업의 조합을 사용해 각 문장을 corrupt
a) 토큰의 span 삭제
b) 토큰 교체
c) 문자 span 삭제
d) 문자 교체
e) 문자 삽입 (같은 passage의 문자를 삽입하여 다른 알파벳의 문자를 삽입하지 않도록)
f) 단어 소문자
g) 첫 번째 대문자</li>
<li><blockquote>
<p>문자를 변경할 수 있음</p>
</blockquote>
</li>
</ul>
<p>ex)
Input:     Simple recipe for Multingual Grammatical Correction Error
Target:    A Simple Recipe for Multilingual Grammatical Error Correction</p>
<ul>
<li>예제의 약 2%는 손상되지 않은 채로 남겨두어 모델이 입력이 문법적일 수도 있다는 것을 학습하도록</li>
<li>101개 언어에 모두 적용하기 어렵기 때문에 정교한 텍스트 corruption은 사용X</li>
</ul>
<h1 id="3-gt5-large-multilingual-gec-model">3. gT5: Large Multilingual GEC Model</h1>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/c18055ee-4ccf-467c-af98-24b4b652711a/image.png" alt=""></p>
<p><strong>Fine-tuning datasets</strong>
영어의 경우 FCE, W&amp;I corpora에 대해 사전학습된 모델을 fine-tuning
<strong>Training Regime</strong></p>
<ul>
<li>모두 mT5 사전 학습 모델을 기반으로 함(Section 2.1)
a) GEC 사전 학습 데이터(Section 2.2)와 fine-tuning data(Section 3)를 혼합하는 방법
b) 사전 학습과 fine-tuning 예제를 혼합하되 다른 접두사로 주석을 다는 방법
c) 수렴까지 GEC 사전 학습을 먼저 사용한 후 fine-tuning하는 방법을 실험
c가 계산 비용이 가장 많이 들지만 가장 좋은 결과</li>
</ul>
<ul>
<li>GEC 사전 학습과 fine-tuning은 0.001의 일정한 learning rate 가짐</li>
<li>사전 학습은 development set의 정확도가 떨어질 때까지 수렴 및 fine-tuning이 이루어지며,이는 200 steps 또는 800K개의 예제 또는 7 epoch후에 발생</li>
</ul>
<p><strong>Results</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/24cd2638-2156-4171-92b8-7bf4010fa431/image.png" alt=""></p>
<ul>
<li>영어의 경우 CoNLL-14(휴리스틱셋으로 모델 출력을 후처리해서 토큰화 불일치 수정)<a href="https://github.com/google-research-datasets/clang8/blob/main/retokenize.py">github</a>와 BEA 테스트의 표준 마크로 평가하고, 개발 셋은 CoNLL-13을 사용(Table 1)</li>
<li>다른 언어의 경우 학습 데이터와 연관된 테스트 및 개발 셋을 그대로 사용</li>
<li>Table 2는 모든 언어에 대한 결과</li>
<li>먼저 base 모델 크기가 현재 SOTA 모델 보다 낮음을 알 수 있음</li>
<li>이는 모델 용량이 101개 언어를 모두 커버하기에 충분하지 않기 때문에 예상되는 결과</li>
<li>따라서 더 큰 xxl(11B) 모델을 사용해 새로운 SOTA를 생성</li>
<li>영어에 대한 개발셋의 성능을 살펴보면 분산이 크고 학습이 매우 빠르게 과적합됨</li>
<li>이는 영어의 경우 학습 및 개발/테스트 셋 도메인이 잘 정렬되지 않았음을 시사</li>
<li>다음 섹션4에선 접근 방식을 더욱 세분화해서 영어에 대한 SOTA 얻음</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰]GECToR - Grammatical Error Correction: Tag, Nor Rewrite]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0GECToR-Grammatical-Error-Correction-Tag-Nor-Rewrite</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0GECToR-Grammatical-Error-Correction-Tag-Nor-Rewrite</guid>
            <pubDate>Mon, 06 Mar 2023 04:58:09 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<ul>
<li>Transformer encoder써서 간단하고 효과적인 GEC sequence tagger 소개</li>
<li>오류가 있는 말뭉치와 없는 말뭉치를 조합해 fine-tune</li>
<li>입력 토큰을 target correction에 매핑하기 위해 custom token-level transformation 설계</li>
<li>best single-model/ensembel GEC tagger는 CoNLL-2014(test)에서 F0.5 65.3/66.5,
BEA-2019(test)에서 F0.5 72.4/736.</li>
<li>추론 속도는 transformer 기반 보다 최대 10배 빠름</li>
</ul>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>오류가 있는 문장은 source 언어, 오류가 없는 문장은 target 언어</li>
<li>이제 연구의 초점은 Transformer-NMT 기반 GEC 시스템을 사전 학습학기 위한 합성 데이터를 생성하는 쪽으로 이동</li>
<li>NMT 기반 GEC 시스템은 실제 배포가 어려움</li>
</ul>
<ol>
<li>느린 inference 속도</li>
<li>많은 양의 학습 데이터</li>
<li>해석 가능성, 설명 가능성 &lt;- 문법적 오류 유형 분류와 같은 수정을 설명하기 위한 추가 기능 필요</li>
</ol>
<ul>
<li>본 논문에선 시퀀스 생성부터 시퀀스 태킹까지 작업을 단순화해서 문제 해결</li>
</ul>
<ol>
<li>GEC 시퀀스 태킹 시스템은 합성 데이터에 대한 사전 학습</li>
<li>오류가 잇는 병렬 말뭉치에 대한 fine-tuning</li>
<li>마지막으로 오류가 있는 병렬 말뭉치와 오류가 없는 병렬 말뭉치의 조합에 대한 fine-tuning</li>
</ol>
<p><strong>Related work</strong>
LaserTagger는 BERT 인코더와 autoregressive Transformer decoder를 결합해 토큰 유지, 토큰 삭제, 토큰 앞에 문구 추가 등 세가지 주요 편집 작업 예측
반면 우리 시스템에서 디코더는 softmax layer
PIE는 tokenlevel edit 작업을 예측하는 반복적 시퀀스 태깅 GEC 시스템
이 접근 방식이 본 논문 방식과 가장 유사하지만 다음 작업이 다름</p>
<ol>
<li>custom g-transformation 개발: token-level 편집을 통해 (g)rammatical 오류 수정
일반 토큰 대신 g-transformation을 예측하면 GEC 시퀀스 태깅 시스템의 일반화를 개선</li>
<li>fine-tuning 단계를 오류만 있는 문장에 대한 fine-tuning과 오류가 없는 문장이 모두 포함된 소규모 고품질 데이터셋에 대한 추가 fine-tuning 두 단계로 세분화</li>
<li>사전 학습된 Transformer 인코더를 GEC 시퀀스 태깅 시스템에 동합해 우수한 성능 달성.
XLNet과 RoBERTa의 인코더는 다른 세 가지 SOTA transformer encoder(ALBERT, BERT, GPT-2)를 능가</li>
</ol>
<h1 id="2-datasets">2. Datasets</h1>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/cca1416b-91c5-4c2a-bdf6-eadb8f500280/image.png" alt="">
<strong>Synthetic data</strong>
1단계 사전 학습에선 합성적으로 생성된 문법 오류가 있는 9백만 개의 병렬 문장 사용
<strong>Training data</strong>
2단계, 3단계를 fine-tuning하기 위해 다음 데이터 사용</p>
<ul>
<li>싱가포르 국립대 학습자 영어 말뭉치(NUCLE), Lang-8 학습자 영어 말뭉치, 캠브리지 학습자 말뭉치의 공개적으로 사용 가능한 부분인 FCE 데이터셋, Write &amp; Improve + LOCNESS 말뭉치 등</li>
<li><em>Evaluation data*</em>
CoNLL-2014 test set, BEA-2019 dev and test set</li>
</ul>
<h1 id="3-token-level-transformation">3. Token-level transformation</h1>
<ul>
<li>custom token-level transformation $T(x_i)$를 개발해 source token $(x_1,...,x_N)$에 적용해 대상 텍스트를 복구</li>
</ul>
<p><strong>Basic transformation</strong>
가장 일반적인 token-level edit 작업 수행
예를 들어, 현재 토큰을 변경하지 않음(tag KEEP), 현재 토큰 삭제(tag DELETE), 현재 토큰 $x_i$옆세 새 토큰 $t_1$ 추가(tag APPEND_$t_1$) 또는 현재 토큰 $x_i$를 다른 토큰 $t_2$(tag REPLACE)로 바꿈</p>
<p><strong>g-transformation</strong>
현재 토큰의 대/소문자 변경(CASE tags), 현재 토큰과 다음 토큰을 하나의 토큰으로 병합(MERGE tags), 현재 토큰을 두 개의 새 토큰으로 분할(SPLIT tag)하는 등의 작업별 작업 수행
또한 NOUN NUMBER과 VERB FORM 변환의 태그는 토큰의 문법적 속성을 인코딩
예를 들어, 이러한 변환에는 단수 명사를 복수로 또는 그 반대로 변환하거나 정규/불규칙 동사의 형태를 변경해 다른 수나 시제를 표현하는 것 등이 포함</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] Correcting Chinese Spelling Errors with Phonetic Pre-training]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Correcting-Chinese-Spelling-Errors-with-Phonetic-Pre-training</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Correcting-Chinese-Spelling-Errors-with-Phonetic-Pre-training</guid>
            <pubDate>Tue, 21 Feb 2023 12:00:12 GMT</pubDate>
            <description><![CDATA[<h1 id="💡-correcting-chinese-spelling-errors-with-phonetic-pre-training">💡 Correcting Chinese Spelling Errors with Phonetic Pre-training</h1>
<h2 id="abstract">Abstract</h2>
<ul>
<li>기존 SOTA 방법은 사전 학습된 언어 모델만 사용하거나 음운 정보를 외부 지식으로 통합</li>
<li>우린 강력한 사전 학습 및 파인 튜닝 방법을 활용해 phonetic feature를 언어 모델에 통합하는 새로운 end-to-end CSC 모델 제안</li>
<li>기존 방식인 마스킹 대신 음성 특직광 그 소리과 유사한 단어로 대체</li>
<li>통합된 프레임워크에서 철자 오류 감지 및 수정을 공동으로 함슥하기 위한 adaptive weighted 제안</li>
<li>이 모델이 SIGHAN dataset에서 상당한 개선, 이전 SOTA보다 성능 뛰어남</li>
</ul>
<hr>
<h2 id="1-introduction">1. Introduction</h2>
<ul>
<li>기존 CSC 방식은 언어 모델을 통해 철자가 틀린 문자를 감지하고 후보를 생성한 다음, 음성 모델이나 규칙을 사용해 잘못된 후보 필터링</li>
<li>CSC 성능 향상 위한 연구는 주로 1) 언어 모델 개선 2) 음운 유사성에 대한 외부 지식 활용
<img src="https://velog.velcdn.com/images/jukyung-j/post/fedd0541-c978-4b42-8d66-fe08c6e902ee/image.png" alt=""></li>
<li>언어 모델은 유창한 문장을 생성하는 데 사용되며 음성 특징을 통해 모델이 원래 단어의 발음과 다른 예측을 생성하는 것을 방지</li>
<li>Figure 1과 같이 원래의 틀린 문장에는 &quot;(de, of)&quot;이라는 잘못된 단어 포함</li>
<li>CSC모델은 &quot;(de, of)&quot;를 &quot;(ying, English)&quot;로 대체하여 그럴듯 하지만 잘못된 문장 생성</li>
<li>이 두단어의 발음은 완전히 다름. 모델은 음성적 특징을 무사하기 때문</li>
<li>Soft-BERT은 BERT의 mask 매커니즘을 수정해 end-to-end CSC모델 제안.</li>
<li>하지만 이 모델은 단어 유사도 탐색에 중요한 음운 정보 사용X</li>
</ul>
<ul>
<li>본 논문에선 중국어 철자 교정을 위한 새로운 end-to-end 모델 제안</li>
<li>이 모델은 음성 정보를 언어 모델에 통합하고 사전 학습 및 파인 튜닝 프레임워크 활용</li>
<li>구체적으론 먼저 사전 학습된 masked language model의 learning task를 수정</li>
<li>[MASK]로 대체하는 대신, 병음(중국어의 로마자 표기법의 하나) 또는 유사한 바음 문자로 대체</li>
<li>이를 통해 언어 모델이 문자와 병음 사이의 유사성 탐색 할 수 있음</li>
<li>그런 다음 두 개의 네트워크 모델로 오류 수정 데이터 파인 튜닝</li>
<li>탐지 네트워크는 각 단어의 철자 오류 확률을 예측</li>
<li>수정 네트워크는 단어 임베딩과 병음 임베딩을 융합해 입력된 확률로 수정 데이터 생성</li>
<li>통홥된 프레임워크에서 탐지 및 수정 네트워크를 공동으로 최적화</li>
</ul>
<p>요약하자면</p>
<ul>
<li>음성학적 특징을 language representatio에 통합하는 새로운 end-to-end CSC모델을 제안. 이 모델은 shared space에서 한자와 병음 토큰을 인코딩</li>
<li>음운 정보의 통합은 CSC를 용이하게 함. 벤치마크 SIGHAN 데이터셋에 대한 실험 결과는 우리의 방법이 이전의 SOTA방법보다 훨씬 뛰어난 성능을 발휘한다는 것을 보여줌</li>
</ul>
<hr>
<h2 id="2-related-work">2. Related work</h2>
<ul>
<li>Soft-BERT는 먼저 각 단어의 철자 오류 확률을 예측한 다음, 그 확률을 사용해 수정을 위한 soft mask word embedding을 수행하는 soft-masked BERT제안. 음성 정보 사용X</li>
</ul>
<hr>
<h2 id="3-methods">3. Methods</h2>
<ul>
<li>중국어 철자 교정 task는 철자 오류가 있을 수 있는 시퀀스 $X_W = (x_{w1},x_{w2}, ...,x_{wn})$를 correct sequence $\hat{y}=(\hat{y_1},\hat{y_2},...,\hat{y_n})$로 매핑</li>
<li>탐지와 수정 두 구성요소로 구성된 end-to-end CSC 모델 제안</li>
<li>탐지 모듈은 $X_W$를 입력하여 각 문자의 철자 오류 확률 예측</li>
<li>수정 모델은 $X_W$의 임베딩과 해당 병음 시퀀스 $X_p = (x_{p1}, x_{p2},...,x_{pn})$의 조합을 입력으로 받아 올바른 시퀀스 y를 예측</li>
<li>철자 오류의 확률을 가중치로 사용해 $X_W$와 $X_P$ 임베딩을 융합하는 방법 제안 </li>
</ul>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/dcdd6c3e-2cd1-4134-bfe1-eb74b257e889/image.png" alt="">
Figure 2: CSC모델 그림. 입력 단어 시퀀스 $X_W$가 주어지면 먼저 탐지 모듈이 모든 문자에 대한 오류 확률 $p_{err}$을 예측.
수정 모듈은 단어 임베딩 $e_w$와 병음 임베딩 $e_p$를 embedding fused $e_m$에 결합해 전송해서 final correction y를 생성.
임베딩, 인코더 및 $f_{crt}$의 매개 변수는 음성 특징이 있는 사전 학습된 언어 모델에 의해 초기화.
두 인코더의 구조와 파라미터는 동일</p>
<ul>
<li>먼저 비슷한 발음의 문자와 병음에서 문자를 예측하는 학습을 통해 masked language model인 MLM-phonetics를 사전 학습.</li>
<li>그런 다음 파인 튜닝을 통해 탐지 및 수정 모듈을 공동으로 최적화</li>
</ul>
<h3 id="31-model-architecture">3.1 Model Architecture</h3>
<ul>
<li>Figure 2의 밑에 부분이 error detection, 위에 부분이 correction이고 트랜스포머 기반</li>
</ul>
<p><strong>Detection Module</strong></p>
<ul>
<li>source sequence $X_W = (x_{w1},x_{w2},...,x_{wn})$가 주어질 떄, detection module의 목푠 character $x_{wi}(1 ≤i≤ N)$가 올바른지 아닌지를 확인 하는 것</li>
<li>class 1과 0을 사용해 각각 철자가 틀린 문자와 맞은 문자에 레이블 지정</li>
</ul>
<p>dtection module 식
<img src="https://velog.velcdn.com/images/jukyung-j/post/c92097cb-5c2a-4b63-bccb-7c6288f09eac/image.png" alt=""></p>
<ul>
<li>여기서 $e_W=(e_{w1},e_{w2},...,e_{wn},)$는 $X_W$의 word embedding이고, $E$는 사전 학습된 인코더, $f_{det}$는 문장 representation을 이진 시퀀스 $y_d=(y_{d1},y_{d2},...,y_{dN}), y_{di} ∈ {0,1}$에 매핑하는 fully-connected layer이다</li>
<li>$x_{wi}$ 문자가 틀린 확률을 나타내기 위해 $p_{err}i$ 사용
<img src="https://velog.velcdn.com/images/jukyung-j/post/660fc6e9-e60b-4a27-ae99-d7e28c007440/image.png" alt=""></li>
<li>여기서 $θ_d$는 detection modul의 파라미터</li>
</ul>
<p><strong>Correction Module</strong></p>
<ul>
<li>correction module은 detection module의 출력을 기반으로 정확한 문자 생성</li>
<li>입력에 word embedding을 사용할 뿐만 아니라 병음 임베딩을 사용해 음성 정보 통합</li>
<li>구체적으론 PyPinyin3 tool을 사용해 병음 시퀀스 $x_p$ 생성</li>
<li>임베딩 레이어에서 병음 임베딩 $e_p$를 가져와 선형 조합을 통해 단어 임베딩 $e_w$와 융합(fuse)
<img src="https://velog.velcdn.com/images/jukyung-j/post/c269cf02-385d-4daf-8bb9-3ec4d889aa72/image.png" alt=""></li>
<li>이 조합은 detection module에서 예측한 오류 확률을 가중치로 사용해 의미적 특징(character embedding)과 음성적 특징(병음 임베딩)의 중요도를 균형 있게 조정</li>
</ul>
<p>두 가지 특별한 경우:</p>
<ol>
<li>$p_{err}=0$인 경우, $x_{wi}$문자가 올바른 것으로 감지되어 모델이 $e_m$에 포함된 해당 단어만 사용함을 나타냄</li>
<li>$p_{err}=1$이면, 문자가 잘못된 것으로 감지되어 모델이 해당 병음 임베딩을 사용함을 의미</li>
</ol>
<ul>
<li>마지막으로, correction result y는 fully-connected layer $f_{crt}$를 통해 예측</li>
<li>embedding, encoder E, correction network $f_{crt}$의 파라미터는 MLM-phonetics에 의해 초기화</li>
<li>사전 학습에서 MLM-phonetics는 일반적으로 혼동되는 문자와 병음에서 올바른 문자를 재구성하도록 학습되므로 fused embedding을 통해 변환할 수 있음</li>
</ul>
<h3 id="32-jointly-fine-tuning">3.2 Jointly Fine-tuning</h3>
<ul>
<li>우리 모델의 두 가지 목표는 detection parameter $f_{det}$을 학습하고 최적의 균형을 이루도록 탐지 및 수정 모듈을 조정하는 것</li>
<li>이를 위해 detecion loss $L_d$와 correction loss $L_c$를 공동으로 최적화(optimize)
<img src="https://velog.velcdn.com/images/jukyung-j/post/5b9b0393-cef9-4fe6-bdbd-d1d98ad3b6eb/image.png" alt=""></li>
<li>$θ_d$와 $θ_c$는 각각 deteciont과 correction module의 파라미터</li>
<li>$\hat{y_{di}}$는 ground truth detection result이고 $y_{di}$는detection module에 의한 예측이며, 둘 다 0또는 1의 이진 값</li>
</ul>
<ul>
<li>특히 correction loss는 detecion result의 확률에 가중치를 부여한 negative log likelihood 확률인 $p(y_{di}|X_W; θ_d)∈ (0.5,1]$이다</li>
<li>이는 두 작업의 책임을 구분하기 위한 것</li>
<li>detection modul이 낮은 신뢰도의 예측을 주면, 즉 $p(y_{di}|X_W; θ_d)$가 0.5에 가까워 지면, $e_m$은 의미적 특징과 음성적 특징을 비슷한 가중치로 융합(fuse)</li>
<li>하지만 detection modul이, $p(y_{di}|X_W; θ_d)$가 1에 가까워져(옳고 그름을 명확히 판단) $e_m$이 의미적 특징이나 음성적 특징 중 하나가 우세하길 바람</li>
<li>이 경우 오류 단어의 수정은 $e_m$의 의미적 특징에 의해 간섭받지 안으며 그 반대의 경우도 마찬가지</li>
<li>따라서, detecion modul이 낮은 신뢰도를 주면 예측에 페널티 부여</li>
<li>구체적으로 detecion result의 확률이 낮으면 $L_c$가 감소하고 모델은 $L_d$를 최적화하는데 더 집중하게 됨</li>
<li>detecion 확률이 높으면 모델은 $L_d$와 $L_c$를 균형 있게 최적화</li>
</ul>
<ul>
<li>adaptive weighting 목푠 두 손실 함수의 합으로 모델을 공동으로 학습할 수 있게 함
<img src="https://velog.velcdn.com/images/jukyung-j/post/460da804-ee6f-49b9-b3cd-abc42d2bf837/image.png" alt=""></li>
</ul>
<h3 id="33-pre-training-mlm-phonetics">3.3 Pre-training MLM-phonetics</h3>
<ul>
<li>1) 음성 feature를 통합하고 2) CSC 아키텍처에서 standard masked language를 사용할 때 발생하는 문제를 해결하는 사전 학습된 언어 모델인 MLM-phonetics 소개</li>
</ul>
<ul>
<li>분류나 qa같은 task는 사전학습과 동일한 분포를 보이지만, CSC의 입력 문장은 사전 학습 샘플과 다른 오류를 가짐</li>
<li>지금까지 일부 작업들은 사전 학습된 모델에 오류 문장을 직접 입력하지 않음으로 써 입력 편차를 피함</li>
<li>예를 들어, Soft-BERT는 BERT 기반 수정 네트워크 이전에 오류 감지를 위해 양방향 GRU 사용</li>
<li>사전 학습 기법을 활용하기 위해 사전 학습 작업 수정</li>
<li>입력 차이를 방지하고 음성 특징을 통합하기 위해 두 가지 사전 학습 대체물인 confused-Hanzi와 noisy-pinyin 제안. Figure 3을 통해 이러한 대체를 설명</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/22c31db2-f47c-4948-b444-e488277c8777/image.png" alt=""></p>
<ul>
<li>[Mask] replacement는 문맥에 따라 마스크된 문자만 복원해 언어 모델의추런 능력 학습</li>
<li>무작위한 한자 교체(Random Hanzi replacement)는 MLM-base가 무작위 단어에서 단어를 수정하도록 학습(예: &quot;不(bu)&quot;에서 &quot;得(de)&quot;를 예측한다)
이는 발음이 비슷한 문자로 부터 정정하는 거에 비해 더 어려운 작업. 그러나 입력 분포가 다르기 때문에 이 전략은 CSC에 거의 도움X</li>
<li>동일한 변경을 사용하면 MLM-base가 입력 문자(예: 대체 &quot;好(hao))를 복사하도록 권장</li>
</ul>
<ul>
<li>Confused-Hanzi(혼동 한자)는 replacement는 confusion set에서 일반적으로 혼동되는 문자로 단어를 수정하도록 MLM-phonetics 학습(예: &quot;豪(hao)&quot;에서 &quot;好(hao)&quot;로 예측).
모델에 오타가 있는 샘플에 엑세스할 수 있는 방법을 제공</li>
<li>noisy-pinyin(노이즈 병음) replacement는 confusion set에서 일반적으로 혼동되는 문자의 병음에서 원래 문자를 예측하도록 MLM-phonetics 학습(예: &quot;드&quot;에서 &quot;得(드)&quot; 예측).
이는 비슷한 발음의 문자를 해당 병음 토큰과 함꼐 클러스터링하는데 도움</li>
</ul>
<ul>
<li>처음 세 가지 replacement는 표준 MLM 기반을 사전 학습하는 데 사용되며 마지막 두 개는 문자와 병음 토큰 간의 유사성을 모델링하기 위해 제안</li>
<li>MLM-phonetics의 사전 학습에서 data generator는 학습 샘플에서 토큰 위치의 20%를 무작위로 선택.</li>
<li>i번째 토큰이 선택되면 (1) [MASK] 토큰으로 40%, (2) noisy-pinyin으로 30%, (3) confusion-set의 혼동 한자로 30% 대체</li>
<li>그런 다음 MLM-phonetics는 대체된 문장에서 원래 문장을 예측하도록 학습</li>
</ul>
<h3 id="34-novelty-of-out-method">3.4 Novelty of out method</h3>
<ul>
<li>우리 방법은 soft-bert와 비슷하지만 다른면이 있다</li>
</ul>
<ol>
<li>우리 모델은 병음과 문자의 임베딩을 결함해서 정보 손실을 방지하는데, 이는 문제가 있는 단어의 발음으로 교정을 예측하는 인간의 교정 과정과 유사
soft-bert는 최종 수정을 내보내기 전에 residual connection을 추가해야 하며, 그렇지 않으면 [MASK]와 임베딩을 결함한 후 오류 단어의 음성 정보를 잊어버림</li>
<li>새로운 사전 학습 task를 제안하여 탐지 및 수정에서 사전 학습된 인코더를 공유
soft-bert는 사전 학습과 파인 튜닝 사이의 입력 차이를 피하기 위해 탐지 할 때 사전 학습되지 않은 양방향 GRU 사용</li>
<li>오류 탐지 및 수정을 공동으로 학습할 때 adaptive weighting 정책을 제안
모델이 명확한 탐지 결과를 생성하도록 장려하여 융합 임베딩이 사전 학습 작업에 가까운 의미적 또는 음성적 특징에 의해 지배되도록 함
반대로 soft-bert는 탐지 및 수정 손실을 고정 하이퍼파라미터와 선형적으로 결합할 것을 제안</li>
</ol>
<h2 id="4-experiments">4. Experiments</h2>
<h3 id="41-data-processing">4.1 Data Processing</h3>
<p>training set</p>
<p>1) 0.3 bilion 개의 중국어 문장으로 구성된 사전 학습 corpus
2) 281K개의 문장 쌍으로 구성된 CSC 학습 코퍼스</p>
<ul>
<li>첫 번째 corpus는 MLM-phonetics를 사전 학습하는 데 사용</li>
<li>두 번째는 MLM-phonetics로 초기화된 CSC 모델을 fine-tuning하는 데 사용</li>
</ul>
<ul>
<li>사전 학습 코퍼스의 경우, 검색 엔진에서 백과 사전, 기사, 뉴스, 과학 논문, 영화 자막등 다양한 데이터 수집</li>
</ul>
<h3 id="42-model-settings">4.2 Model Settings</h3>
<p><strong>FASPell</strong>
사전 학습된 MLM을 통해 입력 문장의 각 문자에 대한 후보를 생성한 다음 시각적 및 음성적 특징을 가진 필터링 모델을 사용해 최적의 후보 선택</p>
<p><strong>Pointer Networks</strong>
각각의 올바른 단어가 오류 문자의 confusion set에 포함되어 있다는 제약 조건에 기반한 seq2seq 시스템</p>
<p><strong>Soft-Masked BERT</strong>
문장의 각 토큰에 대해 해당 토큰의 임베딩과 [MASK]의 임베딩을 선형적으로 결합하고, 파인튜닝된 마스크 언어 모델을 기반으로 오류 문자 예측</p>
<p><strong>SpellGCN</strong>
graph convolutional network를 통해 두 개의 유사도 그래프를 사전 학습된 sequence-labeling 모델에 통합. 두 그래프는 confusion set에서 파생되며 발음 및 모양 유사성에 해당</p>
<p><strong>ERNIE</strong>
CSC 학습 데이터에서 표준 mask 언어 모델을 직접 파인 튜닝</p>
<p><strong>MLM-phonetics</strong> 
음성적 특징을 가진 사전 학습된 언어 모델을 기반으로 하는 end-to-end 시스템 사용</p>
<ul>
<li>Pointer Network는 인코더와 디코더 모두 LSTM 사용</li>
<li>다른 모든 방법은 사전 학습된 12-layer transformer encoder를 사용하는 시퀀스 태깅 문제로 CSC 사용</li>
<li>FASPell, Soft-BERT는 사전 학습된 BERT를 사용하고, ERNIE와 MLM-phonetics는 초기화를 위해 사전 학습된 ERNIE사용</li>
<li>문장 수준과 F1-score를 사용해 시스템 평가</li>
<li>문장 수준에선 문장의 모든 오류가 감지되거나 수정된 경우에만 예측이 올바른 걸로 간주되서 점수가 낮음</li>
</ul>
<h3 id="43-overall-results">4.3 Overall Results</h3>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/79e0ef25-aa70-4b24-9234-74af9bf86b20/image.png" alt=""></p>
<ul>
<li>세 가지 SIGHAN 테스트셋에 대한 detection, correction 성능</li>
<li>문자 수준에서 결과를 제공하는 Pointer Network를 제외한 모든 방법은 문장 수준의 결과 제공</li>
<li>MLM-phonetics가 다른 시스템보다 훨씬 뒤어난 성능</li>
<li>SIGHAN15의 경우, Detection F1 score는 기존 최고 방법인 SpellGCN보다 2.5점 Correction F1 score는 1.6점 개선</li>
<li>Correction F1 score에서 ERNIE보다 6점 이상 향상되어 사전 학습 전략 효과 입증</li>
<li>Pointer Network를 제외한 모든 방법은 초기화를 위해 사전 학습된 모델을 사용하지만, FASPell, SpellGCN 및 우리의 방법만 음성 정보를 고려</li>
<li>FASPell은 분리된 음성 기능과 언어 모델을 사용하기 때문에 성능이 저하 될 수 밖에 없음</li>
<li>SpellGCN은 BERT 위에 graph convolutional network를 구축해 음성 지식을 언어 모델에 통합</li>
<li>효과적임은 입증되었지만 그래프는 준비된 confusion set에서 파생. 따라서 모델의 성능은 이 셋의 완성도에 따라 달라짐</li>
<li>Table1에서 볼 수 있듯이 SpellGCN의 정확도는 MLM-phonetics에 가깝지만 recall에는 상당한 격차</li>
<li>추가 Pinyin token의 도움을 받아 우리의 방법은 단어 임베딩에 음성 기능을 통합하여 모델의 일반화를 높임</li>
<li>Soft-BERT는 음성 특징 없이 문장을 교정. 탐지 및 수정 성능이 우리보다 떨어짐</li>
<li>이는 부분적으로 음운 유사성이 부족하고 모델 아키텍처가 다르기 때문일 수 있음</li>
<li>또한 우리 방법의 MLM-phonetics의 학습 데이터는 Point Network, SpellGCN, ERNIE의 학습 데이터와 일치하지만 Soft-masked BERT와 FASPell은 다른 학습데이터를 사용한다는 점도 주목</li>
</ul>
<h3 id="44-pre-training-tasks">4.4 Pre-training Tasks</h3>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/70088671-e1a7-45de-9bbc-a4da62daeffd/image.png" alt=""></p>
<ul>
<li>MLM-phonetics의 사전 학습에서 세 가지 대체 task([MASK], 헷갈리는 한자, 노이즈 병음)의 효과를 분석하기 위해 세 가지 과제 중 두 가지 과제만 동일한 확률로 학습한 세가지 모델을 비교 대상으로 삼음</li>
<li>파인 튜닝 중 SIGHAN15의 테스트 곡선을 Figure 4에 표시</li>
<li>MLM-phonetics는 7번 째 epoch에서 f1-score 77.5점을 달성해 최고의 성능 보여줌</li>
<li>처음에 Noisy-pinyin을 사용하지 않고 사전 학습한 모델보다 성능이 떨어짐</li>
<li>이는 사전 학습과 파인 튜닝의 불일치로 인해 발생</li>
</ul>
<ul>
<li>noisy-pinyin이 없는 모델은 사전 학습에서 [MASK]와 헷갈리는 한자에서 원래 문자를 예측하는  것만 학습</li>
<li>그래서 병음 임베딩은 파인 튜닝 전까지 초기화되지 않음</li>
<li>따라서 병음 임베딩은 파인 튜닝 단계의 임베딩 융합에서 노이즈로 볼 수 있음</li>
<li>이러한 임베딩은 사전 학습 입력 분포에 가깝기 때문에 노이즈 병음이 없는 사전 학습된 모델은 처음에 좋은 성능을 보임</li>
<li>반면 MLM-phonetics는 사전 학습에서 한자 임베딩 또는 병음 임베딩을 기반으로 단어를 재구성하도록 학습</li>
<li>그러나 파인 튜닝에서 두 가지를 융합하여 예측해야 하므로 적응을 위한 더 긴 학습 시간이 필요</li>
<li>학습이 계속됨에 다라 모델은 임베딩 융합의 이점을 얻고 최종적으로 노이즈 병음 없이 사저 학습된 모델보다 0.6점 개선(76.9-&gt;77.5)된 결과 달성</li>
</ul>
<ul>
<li>게다가, 다른 두 개의 사전 학습된 모델은 상대적으로 낮은 성능</li>
<li>Confused-Hanzi가 없는 사전 학습 모델은 사전 학습 및 라인 튜닝에서 입력 편차가 발생</li>
<li>이 모델은 파인 튜닝단계까지 철자 오류에서 단어를 수정하도록 학습X</li>
<li>w/o [MASK]는 성능이 최악으로 의미 이해도를 높이기 위해 [MASK] 예측을 사용하는 게 중요하다</li>
</ul>
<h3 id="45-balance-the-objective-of-detection-and-correction">4.5 Balance the objective of detection and correction</h3>
<ul>
<li>파인 튜닝에서 두 가지 목표의 균형을 맞추는 가주이 전략의 영향 살펴보기</li>
<li>CSC 모델에선 탐지와 수정 모두 sequence labeling task
<img src="https://velog.velcdn.com/images/jukyung-j/post/ee56154e-c37d-4fc2-8265-1d675622ebb2/image.png" alt=""></li>
<li>식 6과 같이 탐지 확률을 사용해 두 작업의 균형을 맞춤</li>
<li>반대로 Soft-BERT는 고정된 하이퍼 파라미터로 두 작업의 균형을 맞춤: $λ: λL_{uc} + (1-λ)L_d$ $L_{uc}$는 가중치가 없는 correction의 negative log-likelihood  </li>
</ul>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/7979577b-6048-43bb-8fa6-2339c5b56354/image.png" alt=""></p>
<ul>
<li>우리 방법이 고정 하이퍼 파라미터 결봐 보다 나음</li>
<li>고정된 하이퍼 파라미터를 가진 세 시스템 중  λ=0.8이 가장 높은 correction F1-score 달성,  λ=0.5인 시스템이 가장 높은 detection f1-score 달성</li>
</ul>
<ul>
<li>detection f1-score는 detection module의 예측이 아닌 수정 결과(즉, 수정된 문자만 감지된 것으로 간주)를 기반으로 평가. 따라서 λ =0.2로 설정하면 탐지 비용이 많이 들지만 detection f1-score가 가장 낮다는 것은 이상한 일이 아님</li>
<li>이는 또한 감지와 수정을 조절해야 한다는 힌트 제공</li>
<li>λ =0.2로 설정하면 detecion module의 성능은 향상될 수 있지만 correction module이 좋지 않으면 최종 detecion 성능이 저하
...</li>
</ul>
<h3 id="46-error-analysis">4.6 Error Analysis</h3>
<ul>
<li>예측 오류를 분석하기 위해 잘못 예측된 샘플 수집해 두 가지 클래스로 분류</li>
</ul>
<p>** Detecion Error**
감지 모듈이 오류 예측 생성(예: $y_{di}  !=  \hat{y_{di}}$)</p>
<p><strong>Correction Error</strong>
감지 모듈이 올바른 예측을 생성하지만 수정 모듈이 올바른 문자를 생성X (예:$y_{di}=\hat{y_{di}}$, $y_i != \hat{y_i}$</p>
<ul>
<li>SIGHAN15 테스트셋의 두 클래스를 요약하면 오류와 수정 오류의 비율은 각각 83.6%와 16.4%, 이는 잘못된 예측의 대부분이 감지 오류임을 나타냄</li>
<li>낮은 탐지 성능은 주로 많은 오류를 감지할 수 없기 때문일까요(false negative error), 아니면 탐지 모듈이 오류를 잘못 예측하기 때문일까요(false positive error)?</li>
</ul>
<p>83.6%의 탐지 오류를 두 가지 유형으로 분류한 결과, false negative error, false positive error가 각각 41.1%, 42.5%를 차지</p>
<ul>
<li>두 오류 유형의 비율은 거의 동일, 가능한 이유는 &quot;的&quot;, &quot;地&quot;, &quot;得&quot; 같은 일부 동음이의어가 구별X</li>
<li>세 글자 모두 &#39;드&#39;라는 발음을 가지고 있으며 음성적으로나 의미론적으로 많은 문장에서 이러한 후보 중 하나를 사용하는 것이 합리적</li>
<li>이는 구별 불가능성을 줄이기 위해 추가 파인튜닝이 필요</li>
<li>이 경우 탐지 모듈은 ground-truth results와 다른 많은 예측을 생성해 탐지 성능에 영향을 미침</li>
</ul>
<h2 id="5-conslusion">5. Conslusion</h2>
<ul>
<li>본 논문에선 음성 사전 학습을 통해 CSC용 end-to-end 프레임워크 제안</li>
<li>기존 파이프라인 시스템에서 영감을 얻은 이 모델은 문자의 음성 정보를 사전 학습에 통합</li>
<li>먼저 음성 특징이 있는 마스크 언어 모델을 사전 학습해 철자가 틀린 문장을 이해하는 모델의 능력을 향상시키고 문자와 병음 토큰 간의 유사성을 모델링</li>
<li>또한 하나의 모델에 감지 및 수정 기능을 통합하는 end-to-end 프레임워크 제안</li>
<li>벤치마크 데이터셋에 대한 실험 결과, 저희 모델이 SOTA보다 훨씬 뛰어난 성능을 발휘하는 것으로 나타남</li>
<li>음성 특징이 있는 CSC 모델은 음성 인식 및 번역 시스템의 오류를 줄이는 데 사용할 수 있음</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[맞춤법 간단 정리]]></title>
            <link>https://velog.io/@jukyung-j/%EB%A7%9E%EC%B6%A4%EB%B2%95-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@jukyung-j/%EB%A7%9E%EC%B6%A4%EB%B2%95-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Sun, 19 Feb 2023 07:40:29 GMT</pubDate>
            <description><![CDATA[<h1 id="💡-plome-pre-training-with-misspelled-knowledge-for-chinese-spelling-correction">💡 PLOME: Pre-training with Misspelled Knowledge for Chinese Spelling Correction</h1>
<h2 id="abstact">Abstact</h2>
<ul>
<li>CSC는 중국어 맞춤법 검사와 교정 데이터셋</li>
<li>PLOME는 BERT에서처럼 고정된 토큰 [MASK]가 아닌 confusion set에 따라 유사한 문자로 선택된 토큰을 마스킹</li>
<li>문자 예측 외에도 발음 예측을 도입해 음성 수준에서 철자가 틀린 지식 학습</li>
<li>게다가 이 task에선 phonological(음운론적)과 시각적 유사성 지식이 중요</li>
<li>GRU 네트워크를 활용해 character의 phonics와 strokes를 기반으로 이러한 지식을 모델링</li>
</ul>
<h2 id="1-introduction">1. Introduction</h2>
<ul>
<li>중국어에서 맞춤법 오류는 크게 음운 오류와 시각 오류 두 가지 유형으로 나뉨</li>
<li>다른 기존 논문들의(Soft-masked BERT, SpellGCN) 언어 모델은 CSC 작업에서 독립적으로 사전 학습</li>
<li>결과적으로 사전 학습 중에 작업 관련 지식을 학습X, 이러한 접근 방식의 언어 모델은 CSC에 최적화X</li>
</ul>
<ul>
<li>character간의 유사성에 대한 지식은 이 작업에 매우 중요</li>
<li>일부 작업은 이러한 정보를 합하기 위해 confusion set, 즉 유사한 문자 집합을 활용</li>
<li>근데 confusion set은 일반적으로 휴리스틱 규칙이나 수동 주석에 의해 생성되서 적용 범위가 제한적</li>
<li>이러한 문제를 극복하기 위해 character의 strokes(문자의 획)과 phonics를 기반으로 유사도 계산</li>
<li>규칙을 통해 측정됨</li>
</ul>
<ul>
<li>vanila BERT보다 PLOME이 효과적</li>
</ul>
<ol>
<li>confusion set 기반 masking 전약 제안, BERT에서처럼 고정된 토큰 [Mask]가 아니라 confusion set에 따라 선택된 각 토큰을 유사한 문자로 무작위 대체.
PLOME은 사전 학습 동안 의미와 철자 오류 지식을 공동으로 학습.</li>
<li>제안된 모델은 각 문자의 획과 음소를 입력으로 사용해 PLOME이 문자 간 유사성을 모델링 할 수 있음</li>
<li>PLOME은 마스킹된 토큰에 대한 실제 문자와 음운을 공동으로 복구해서 문자와 음운 수준 모두에서 철자가 틀린 지식 학습</li>
</ol>
<ul>
<li>SIGHAN 벤치마크 데이터셋 사용</li>
<li>PLOME이 Soft-masked BERT와 SpellGCN을 포함해서 성능 능가</li>
</ul>
<h2 id="3-approach">3. Approach</h2>
<p align='center'>
    <img src= "https://velog.velcdn.com/images/jukyung-j/post/7beda596-5872-443d-9d8c-4c4c0d90bd63/image.png">
  Figure 2: PLOME 프레임워크에서 빨간색으로 표시된데 마스킹된 토큰. Left: 모델의 전반적인 아키텍처. 입력 문자는 트랜스포머 인코더에 의해 처리되서 의미 표현 벡터를 얻음. Right: 트랜스포머 인코더의 final embedding을 얻기 위해 각 문자에 대해 다른 유형의 임베딩 수집
</p>

<ul>
<li>제안 모델은 pretraining&amp;fine-tuning 패러다임을 따름</li>
</ul>
<h3 id="31-confusion-set-based-masking-strategy">3.1 Confusion Set based Masking Strategy</h3>
<ul>
<li>PLOME을 학습시키기 위해 입력 토큰의 일부를 무작위로 마스킹한 다음 복구</li>
<li>[MASK] 대신 유사한 문자로 대체. 유사한 문자는 음운론적으로 유사하고 시각적으로 유사한 문자를 포함하는 공개적으로 사용 가능한 confusion set에서 얻음</li>
</ul>
<ul>
<li>음운 오류가 시각 오류보다 2배 더 자주 발생해서 마스킹 중에 선택될 확률이 다르게 할당</li>
<li>15%를 마스킹. dynamic masking 사용</li>
</ul>
<ul>
<li>항상 confusion set에서 대체하면 두 가지 문제 발생</li>
</ul>
<ol>
<li><p>사전 학습동안 예측할 모든 토큰들이 &#39;잘못&#39;되었기 때문에 모든 입력에 대해서 수정할게 있다고 결정하는 경향
이 문제를 방지하기 위해 선택한 토큰의 일부  비율은 변경X</p>
</li>
<li><p>confusion set의 크기는 제한, 실제 텍스트에서 문자 쌍의 오용으로 인해 철자 오류가 발생할 수 있음
일반화 능력을 향상시키기 위해, 선택된 토큰의 일부를 무작위 문자로 대체</p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/b623355a-dfbe-43e0-af6e-c01da1d7aeda/image.png" alt=""></p>
<p>i번째 토큰이 선택되면 다음 확률로 대체</p>
<ol>
<li>음운론적으로 유사한 무작위 문자로 60% </li>
<li>시각적으로 유사한 무작위 문자로 15%</li>
<li>변경되지 않은게 15%</li>
<li>vocab에 포함된 무작위 토큰으로 10%</li>
</ol>
<h3 id="32-embedding-layer">3.2 Embedding layer</h3>
<ul>
<li>Figure 2와 같이, 각 문자의 final embedding은 character embedding, position embedding, phonic embedding, shape embedding 합. 앞의 두개는 BERT-base와 동일</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/a2828258-8d70-433c-a004-fceb077778c5/image.png" alt="">
<strong>Phonic Embedding</strong></p>
<ul>
<li>문자 간의 음운 관계를 모델링하기 위해 각 문자의 음소 문자를 1-layer GRU네트워크에 공급해 유사한 음소 임베딩을 가질 것으로 예상되는 음소 임베딩 생성.(Figure 3의 중간 부분)</li>
</ul>
<p><strong>Shape Embedding</strong></p>
<ul>
<li>한자의 획이 쓰이는 순서를 나타내는 획순서 사용</li>
<li>문자 간의 시각적 관계를 모델링하기 위해 각 문자의 획 순서를 또 다른  1-layer GRU 네트워크에 입력해서 shape embedding 생성.(Figure 3 아래 부분)</li>
</ul>
<h3 id="34-output-layer">3.4 Output Layer</h3>
<ul>
<li>Figure 2에서, 각 선택된 character에 대해 두 가지 예측</li>
<li><em>Character Prediction*</em></li>
<li>BERT와 비슷하게, PLOME는 마지막 트랜스포머 레이어에서 생성된 임베딩을 기반으로 각 마스킹된 토큰의 원래 문자를 예측</li>
<li><em>Pronunciation Prediction*</em></li>
<li>실제 철자 오류의 약 80%는 phonological임</li>
<li>PLOME는 phonic(음성, 발음) 수준에서 철자가 틀린 지식을 학습하기 위해 각 마스크 토큰에 대한 실제 발음을 예측하며, 발음은 분음 부호 없이 phonics로 표시</li>
</ul>
<h3 id="36-fine-tuning-procedure">3.6 Fine-tuning Procedure</h3>
<p><strong>Training</strong></p>
<ul>
<li>다음을 제외하면 사전 학습과 유사</li>
</ul>
<ol>
<li>마스킹X</li>
<li>사전학습에서 처럼 선택된 토큰만 예측하는게 아니라 모든 입력 문자 예측</li>
</ol>
<p><strong>Inference</strong></p>
<ul>
<li>PLOME은 각 마스킹된 토큰에 대한 character 분포와 발음 분포를 모두 예측</li>
</ul>
<h2 id="4-experiments">4. Experiments</h2>
<h3 id="43-baselines-models">4.3 Baselines Models</h3>
<p><strong>Hybird</strong>: BiLSTM 기반 모델
<strong>PN</strong>: point network를 통합한 Seq2Seq모델
<strong>FASPell</strong>: DAEDecoder 패러다임을 채택하고 노이즈 제거 자동 인코더로 BERT사용
<strong>SKBERT</strong>: 오류 탐지 성능 향상위해 BERT에 Softmasking 전략 도입
<strong>SpellGCN</strong>: confusion set에서 문자 간의 관계를 모델링 하기 위해 GCN 네트워크와 BERT결합</p>
<ul>
<li>입력 및 인코더 레이어가 BERT-base의 레이어와 동일한 baseline model인 cBERT(confusion set 기반 BERT)를 구현</li>
<li>출력 레이어는 PLOME와 유사하지만 문자 예측만 수행</li>
<li>confusion set기반 마스킹 전략을 통해 사전 학습</li>
</ul>
<h3 id="44-main-results">4.4 Main Results</h3>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/49da8979-0d3f-49fa-8234-3c1992cd1927/image.png" alt=""></p>
<ol>
<li><p>fine tuning없이 사전학습만된 모델은 상대적으로 좋은 결과, 심지어 supervised 접근 방식 PN을 능가
이는 confusion set기반 마스킹 전략을 통해 모델이 사전 학습 중에 작업별 지식을 학습할 수 있음</p>
</li>
<li><p>fine-tuning된 모델과 비교하여 cBERT는 모든 메트릭에서 BERT능가. 특히 문장 수준 평가의 F score가 절대 점수가 4점 이상 향상. 대략의 학습 데이터(281K 텍스트)로도 좋은 성과로, 제안한 마스킹 전략이 필수적인 지식을 제공하고 fine tuning으로는 학습할 수 없음을 나타냄</p>
</li>
<li><p>phonic과 shape embeddingㅇ르 통합한 PLOME-Finetune은 문장 수준 탐지 및 수정에서 cBERT-Finetune을 2.3% 및 2.8% 절대적인 성능 향상. 이는 character의 phonics와 획이 유용한 정보를 제공</p>
</li>
<li><p>SpellGCN과 동이하게 confusion set을 썼지만, 그 안에 포함된 지식을 학습하는 데는 다른 전략. SpellGCN은 이 정보를 모델링하기 위해 GCN 네트워크를 구축. PLOME은 사전 학습 중에 대규모 데이터로부터 정보 학습. </p>
</li>
</ol>
<h1 id="💡-deep-learning-based-context-sensitive-spelling-typing-error-correction">💡 Deep Learning-Based Context-Sensitive Spelling Typing Error Correction</h1>
<h2 id="abstract">Abstract</h2>
<ul>
<li>영어에는 두 가지 유형의 철자 오류 있음: non-word spelling error, 문맥에 따른 맞춤법 오류</li>
<li>Non-word 맞춤법 오류는 문장의 단어와 사전에 있는 단어를 일치시키는 것만으로도 감지할 수 있어서 수정이 간단한데, 문맥에 따른 오류는 수정할 단어와 주변 문맥의 관계를 알아야 해서 수정의 난이도가 올라감</li>
<li>맞춤법 오류는 텍스트 정보를 사용하는 모든 분야에서 노이즈로 간주, 최소화하기 위해선 문서 수정을 통한 전처리가 필요.</li>
<li>문맥에 따른 맞춤법 오류는 동음이의어 오류(소리는 같은데 철자가 다른 단어), 오타 오류(키보드의 잘못 누름), 문법 오류(사용자가 올바른 문법 규칙을 모를때), 단어 간 띄어쓰기가 잘못되어서 발생하는 단어 간 경계 오류 등</li>
<li>딥러닝 기반 교정 방식은 단어 임베딩 정보, 문맥 임베딩 정보, auto-regressive(AR) 언어 모델, auto-encoding(AE) 언어 모델 등 크게 네 가지로 나뉨</li>
<li>본 논문에선 AE가 가장 우수한 성능</li>
</ul>
<h2 id="1-introduction-1">1. Introduction</h2>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/205bdade-6fd3-4864-a872-17565f71cbdf/image.png" alt=""></p>
<ul>
<li>동음이의어 오류, 오타 오류, 문법 오류, 단어 간 경계 오류가 있음</li>
<li>본 연구에선 타이핑 에러 </li>
<li>사전에 수정된 영어 문서에서 문맥에 따른 맞춤법 오류가 전체 맞춤법 오류의 30~40% 차지.</li>
</ul>
<p> <img src="https://velog.velcdn.com/images/jukyung-j/post/b9ce70eb-81c2-42a5-9ffd-781758c5fe24/image.png" alt=""></p>
<ul>
<li>딥러닝 기반 수정은 규칙 기반 및 통계 방법과 같은 형태학적 접근 방식 뿐만 아니라 문맥에 대한 깊은 의미론적 이해를 얻기 위해 적용될 수 있음.</li>
<li>Figure 1은 3단계로 진행되는 보정 실험의 예</li>
<li>먼저 오류 없는 문서를 입력 후, 문서에 있는 문장을 써서 정답 단어로 대체되는 오류 단어를 생성</li>
<li>그런 다음 정답 단어 대신 생성된 오류 단어를 문장에 포함해서 오류 문서 생성</li>
<li>마지막으로 오류 문서를 실제로 수정하고 성능을 측정</li>
<li>실험 문서의 생성 단계에선 오류 단어가 생성</li>
<li>수정 단계에선 오류 단어 검색, 수정 후보 단어 생성 및 최종 수정</li>
</ul>
<ul>
<li>Figure 1(b)는 통계와 딥러닝 결합</li>
<li>통계 언어 모델은 오류 단어 생성 및 오류 단어 검색 작업 수행, 딥러닝은 오류 단어의 최종 수정 작업 </li>
</ul>
<ul>
<li>Figure 1과 같이 통계적 방법 기반 오류 검출 모델(SS),과 딥러닝 기반 수정 모델(SD)은 모두 통계적 언어 모델을 사용해 오류 단어 검색, 이는 딥러닝 언어 모델을 사용해 문서 내 오류를 검색하기 어렵기 때문</li>
<li>통계 언어 모델은 오류 검색 대상 단어의 동시 발생 단어에 대한 후보 단어만 생성해 비교</li>
<li>반면 딥러닝 모델은 대상 오류 단어를 검색할 때 딥러닝 언어 모델에서 학습한 모든 단어 고려</li>
<li>수정 문서의 전체 단어를 오류 단어로 판단해 수정을 실행해서 속도 느리고 정확도 낮음</li>
</ul>
<ul>
<li>본 연구에선 최근 개발된 다양한 딥러닝 언어 모델을 문맥에 따른 맞춤법 오류 교정에 적용하고, 교정 실험의 방향 제시</li>
<li>맞춤법 오류에 대한 보정 실험을 진행, 타이핑 에러 세분화 모델 성능 측정</li>
</ul>
<p>...</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[챗봇] Chatbot 관련 정리]]></title>
            <link>https://velog.io/@jukyung-j/%EC%B1%97%EB%B4%87-Chatbot-%EA%B4%80%EB%A0%A8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@jukyung-j/%EC%B1%97%EB%B4%87-Chatbot-%EA%B4%80%EB%A0%A8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Mon, 06 Feb 2023 05:12:02 GMT</pubDate>
            <description><![CDATA[<h1 id="instructgpt">InstructGPT</h1>
<p>출처: <a href="https://littlefoxdiary.tistory.com/101">https://littlefoxdiary.tistory.com/101</a></p>
<ul>
<li>GPT-3는 대량의 언어 코퍼스에 대해 사전학습한 후, 모델을 고정한 채 &lt;인풋 프롬프트&gt;에 추론하고자 하는 자연어 쿼리를 입력</li>
<li>예를 들어 모델에게 &lt;&quot;상담사 분이 친절하게 답변해주셨어요&quot;라는 문장의 감정은?&gt; -&gt; &lt;긍정&gt;</li>
<li>언어 AI의 패러다임이 모델을 fine-tuning하는 것이 아니라 모델에게 질문하는 방식으로 얾겨가고 있음</li>
<li>모델에게 질문하는 방법, 즉 프롬프트를 구성하는 방식이 결과물의 퀄리티를 좌우</li>
</ul>
<p><strong>Agent</strong>: 학습하려는 모델 =&gt; GPT
<strong>Environment</strong>: 주변 환경 =&gt; 유저의 input
<strong>Action</strong>: 모델이 할 수 있는 행동 =&gt; 답변 생성
<strong>Policy</strong>: 모델이 어떻게 행동할지 결정하는 알고리즘 =&gt; GPT의 파라미터
<strong>Reward</strong>: 모델이 한 행동에 따라, 환경에 따라 주는 리워드 =&gt; Reward 모델의 예측 점수
<strong>Interpreter</strong>: 리워드를 결정하는 사람 또는 시스템 =&gt; Reward 모델</p>
<p><strong>자연어 지시문만으로 작동</strong></p>
<ul>
<li>GPT와 InstructGPT의 가장 큰 차이는 모델에게 &lt;직접적으로&gt; 지시
GPT) 예시 3개와 4번째 입력 프롬프트는 &quot;별과 달에 대한 이야기를 써라&quot;는 지시를 간접적으로 모델에게 전달
InstuctGPT) &lt;별과 달에 대한 짧은 이야기를 써봐&gt;처럼 직접적이게 사용 가능
<img src="https://velog.velcdn.com/images/jukyung-j/post/a14ea6fb-45e6-4e1a-9ce2-9f51a1e539a2/image.png" alt="">
GPT한테 예시를 주지 않은채 입력하면 같은 어구 반복
<img src="https://velog.velcdn.com/images/jukyung-j/post/ad71c549-242f-47a3-86bf-1c11a1ed72a9/image.png" alt=""></li>
</ul>
<p>GPT-3모델을 InstructGPT 모델을 만들기 위해 3단계 도입
강화학습 알고리즘 RLHF(Reinforcement learning with human feedback)적용
<img src="https://velog.velcdn.com/images/jukyung-j/post/a3611057-c351-4551-bb24-5cb269c7d5c6/image.png" alt=""></p>
<p>Step 1) 예제 데이터 수집후 supervised policy 학습 =&gt; SFT 모델 확보
: GPT-3가 주어진 지시문대로 행동하도록 가르치기 위해, 해당 데이터셋을 만들어 fine-tuning한 모델 확보</p>
<p>이를 위해 지시 프롬프트와 그에 대한 결과물로 이루어진 데이터셋 정의(demonstration dataset, 13k prompts)</p>
<ul>
<li>프롬프트 데이터셋으로부터 지시 prompt를 샘플링 예) 8살 아이에게 달착률을 설명해보시오</li>
<li>라벨러는 프롬프트에 적합한 행동을 예시로 라벨링 예) 몇몇 사람들이 달에 갔다</li>
</ul>
<p>이 데이터셋을 GPT-3에 대해 Fine-tuning =&gt; 결과로 SFT(supervised fine-tuning)모델 얻음</p>
<ul>
<li>지시문을 따르는 점에 있어 GPT-3보다 우수하지만, 완벽하게 원하는 방식으로 작동X</li>
</ul>
<p>Step 2) 결과물에 대한 사람의 선호도 데이터 학습 =&gt; Reward Model확보
: Comparison dataset을 사용해 Reward Model(보상 모델) 학습</p>
<p>Comparison dataset은 33K개의 프롬프트로 이루어져 있으며 이를 Reard Model학습에 적합하게 구성한 것</p>
<ul>
<li>comparison dataset은 프롬프트와 그에 따른 결과물들(4-9개), 그 결과에 대한 선호도 순위로 구성</li>
<li>프롬프트가 주어질 때 Reward Model은 결과물들에 대한 사람의 선호도를 예측하는 방법을 학습</li>
<li>이때 사용한 프롬프트는 Step 1의 demonstration dataset에서 사용한 것과 다름</li>
</ul>
<p>Step 3) 강화학습을 사용해 Reward Model에 대해 policy를 최적화 =&gt; InstructGPT
: Step 1의 SFT모델을 Step2의 보상모델을 사용해 강화학습을 통해 추가 fine-tuning</p>
<p>Proximal policy optimization algorighm(PPO)사용</p>
<ul>
<li>Reward model을 보상함수로 사용해 정책을 최적화(InstructGPT가 사람의 피드백을 얻는 방법)</li>
</ul>
<p>강화학습을 통한 fine-tuning과정은 다음과 같음</p>
<ol>
<li>InstructGPT가 프롬프트를 보고, 그에 대한 결과(completion)추론</li>
<li>이 결과물을 Reward Model이 평가하여 reward 계산</li>
<li>보상 값이 InstructGPT에게 주어지고, 모델은 정책을 업데이트하여 사람이 원하는 아웃풋에 더 가까운 결과 냄</li>
</ol>
<blockquote>
<p>지시문에 따라 결과를 완성하는 초기 모델을 완성한 후, 사람의 feedback을 모사하는 보상 모델(reward model)을 확보하여 이를 통해 초기 모델이 사람이 더 선호하는 결과를 추론하다록 강화학습 진행</p>
</blockquote>
<h2 id="성능">성능</h2>
<p>요약: 라벨러들은 InstructGPT의 아웃풋을 GPT-3보다 더 좋게 평가
<img src="https://velog.velcdn.com/images/jukyung-j/post/908d664c-2965-4712-9298-408f3a2f4d72/image.png" alt="">
-InstructGPT 계열 모델(PPO-ptx&amp;PPO)는 다른 모델(GPT-3, GPT-3 prompt, SFT 베이스라인)보다 선호</p>
<ul>
<li>특히 175B사이즈의 가장 큰 모델에 있어 사용자들은 4번 중 3번 InstructGPT가 GPT-3보다 선호, 프롬프트 엔지니어링을 거친 GPT모델도 InstructGPT 이기지 못함</li>
<li>특히 학습 데이터 생성에 참여하지 않은 라벨러(Heldout workers) 그룹 또한 InstructGPT 결과 선호</li>
</ul>
<p>특히, 모델에게 명백한 조건을 입력하는 상황에서 InstructGPT의 결과물이 선호도가 높음
<img src="https://velog.velcdn.com/images/jukyung-j/post/24e324fa-6225-4e45-b675-b6a1d06aa302/image.png" alt=""></p>
<ul>
<li>Follow explicit constraints: 예) 답변을 두 문장 이내로 작성하시오</li>
<li>hallucinations: 예) 정보를 너무 자주 만들어내지 마시오</li>
</ul>
<h2 id="nlp-태스크에서-평가">NLP 태스크에서 평가</h2>
<p><strong>Honesty(진실성)</strong></p>
<ul>
<li>truthfulQA 데이터셋(모델이 인간의 거짓말을 어떻게 흉내 내는지 평가하는 데이터셋) 활용
<img src="https://velog.velcdn.com/images/jukyung-j/post/4499c0c3-10c6-4857-8c1c-534a0f42288c/image.png" alt=""></li>
<li>InstrictGPT는 GPT-3에 비해 두 배 더 진실된 답변</li>
<li>closed-domain QA, 요약 태스크에 대해 평가했을 때, InstructGPT는 21%정도 말을 적당히 생성(hallucinate)하는데 반해 GPT-3는 41%로 수치의 절반에 해당</li>
</ul>
<p>=&gt; 이 결과는 기본 셋팅에서 추론한 결과이고, 모델에게 진실되도록 따로 프롬프트 엔지니어링을 진행하지 않아도 모델은 기본적으로 truthful하게 행동</p>
<p><strong>Toxicity(유해성)</strong></p>
<ul>
<li>InstructGPT는 사용자의 지시를 더 잘 따르는데 언어모델이 사용자의 의도를 더 잘 따른다는 것은, 그만큼 오용하기 쉬움
<img src="https://velog.velcdn.com/images/jukyung-j/post/e4ae2eb3-b4fe-4211-b051-f850ba27d508/image.png" alt=""></li>
<li>RealToxicityPrompts 데이터셋에 대해 모델의 결과 평가</li>
<li>InstrucGPT는 프롬프트에서 Respectful할것을 지시했을 떄 GPT-3에 비해 toxicity가 낮아짐</li>
<li>일반적인 상황에서 둘은 같은 수준의 유해성 가짐</li>
</ul>
<p><strong>Bias(편향)</strong>
차별과 편향에 있어서는 InstructGPT가 GPT-3에 비해 악화
<img src="https://velog.velcdn.com/images/jukyung-j/post/d4b5672d-5528-42eb-87f0-722edb495b9e/image.png" alt=""></p>
<ul>
<li>&quot;Biased&quot;라는 프롬프트를 주자, InstructGPT가 GPT보다 더 편향된 결과</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/d4776f66-b564-4b23-ac33-4dbb015d8e50/image.png" alt=""></p>
<ul>
<li>OpenAI는 모델이 스테레오타입이 섞인 행동을 할지라도, 그 출력에 대해 더 확신을 가진다고 분석</li>
<li>InstructGPT 모델은 GPT-3보다 강력하며 이로 인해 잠재적으로 더 해로울 수 있음</li>
</ul>
<ul>
<li>이러한 결과들은 InstructGPT가 받은 보상 시그널이 특정한 그룹의 사람들에게 맞처ㅜ져 있기 떄문에 차별 등의 행동을 개선하지 못함</li>
<li>OpenAI에선 라벨의 종류가 다양하게(인종, 국적, 문화) 재조정하려 했지만 GPT-3가 학습한 사전학습 데이터가 편향이 되있어서 큰 개선X</li>
</ul>
<hr>
<h1 id="gpt-35">GPT 3.5</h1>
<ul>
<li>2021년 4분기 이전부터 텍스트와 코드 혼합에 대해 학습된 모델</li>
</ul>
<p>GPT 3.5 시리즈에는 다음 모델이 있음</p>
<ul>
<li>code-davinci-002: 기본 모델로 순수한 코드 변환 작업에 적합</li>
<li>text-davinci-002: 코드-davinci-002에 기반한 instructGPT 모델</li>
<li>text-davinci-003: text-davinci-002의 개선</li>
</ul>
<h2 id="instructgpt-models">InstructGPT models</h2>
<p>3가지 다른 방법으로 학습된 다양한 InstructGPT 모델 제공 
<strong>SFT</strong>: human demonstration에 대한 supervised fine-tuning
<strong>FeedME</strong>: 전체 품질 점수에 대해 사람이 작성한 demonstration과 사람 labeler가 7/7 등급을 매긴 모델 샘플에 대한 supervised fine-tuning
<strong>PRO</strong>: 사람의 비교를 통해 학습된 reward model을 사용한 강화학습</p>
<ul>
<li>SFT, PRO모델은 InstructGPT 논문의 모델과 유사하게 학습</li>
<li>FeedME(피드백을 쉽게 만드는것의 줄임말) 모델은 모든 모델에서 최고의 완성도를 distilling하여 학습</li>
<li>우리의 모델은 일반적으로 학습 당시 사용가능한 최상의 데이터셋을 사용했기 때문에 동일한 학습 방법론을 사용하는 다른 엔진이 다른 데이터에 대해 학습될 수 있음</li>
</ul>
<hr>
<h1 id="chatgpt">ChatGPT</h1>
<h2 id="chatgpt-vs-gpt-3">ChatGPT vs GPT 3</h2>
<ul>
<li>ChatGPT는 GPT 3.5를 기반으로 사용자와 주고받는 대화에서 질문에 답하도록 설계된 언어모델</li>
</ul>
<p>&quot;ChatGPT는 대화 형색으로 추가적인 질문에 답하고 실수를 인정하며 정확하지 않은 전제에 대해서는 이의를 제기하고 부적절한 요청을 거부할 수 있음&quot;</p>
<h3 id="chatgpt-특징">ChatGPT 특징</h3>
<ol>
<li><p>인간과 유사한 응답제공
ChatGPT는 주어진 상황에서 인간이 응답하는 방식과 유사한 응답을 생성하도록 학습
이를 통해 사용자와 자연스럽고 인간적인 대화 나눌 수 있음</p>
</li>
<li><p>상황 인식
ChatGPT는 상황을 유지하고 대화의 흐름을 추적할 수 있어 복잡하거나 여러 차례의 대화에서도 적절한 응답 제공</p>
</li>
<li><p>방대한 데이터 학습
방대한 양의 텍스트 데이터로 학습되어 다양한 언어 패턴과 스타일을 학습할 수 있음
이를 통해 다양하고 미묘한 반응을 생성</p>
</li>
</ol>
<h3 id="chatgpt가-다른-언어-모델과-다른-점">ChatGPT가 다른 언어 모델과 다른 점</h3>
<ol>
<li>대화형 작업을 위해 학습되었지만 다른 언어 모델보다 광범위한 언어 작업 관련 작업에 사용 될 수 있음</li>
<li>SNS, 뉴스 기사를 포함한 다양한 소스의 많은 양의 텍스트 데이터에 대해 학습되어서 다른 모델에 비해 넓은 범위의 언어 패턴과 스타일 제공</li>
</ol>
<p>마지막으로 ChatGPT는 인간과 같은 응답을 생성하도록 설게되어서 자연스롭고 인간과 같은 대화가 필요한 작업에 더 적합</p>
<h3 id="gpt와-chatgpt-차이점">GPT와 ChatGPT 차이점</h3>
<ol>
<li>ChatGPT는 대화형 작업을 위해 설계되었지만 GPT-3는 광범위한 언어 관련 작업에 사용할 수 있는 범용 모델</li>
<li>ChatGPT는 GPT-3에 비해 더 적은 양의 데이터로 학습되어 다양하고 미묘한 응답을 생성하는 능력에 차이</li>
<li>GPT-3는 ChatGPT보다 크고 강력, ChatGPT는 매개변수가 15억개, GPT-3는 1,750억개</li>
</ol>
<p>유사한 측면에서 ChatGPT와 GPT-3는 대량의 텍스트 데이터에 대해 학습되어 텍스트 입력에 대해 사람과 같은 응답 생성 가능</p>
<h3 id="iterative-deployment">Iterative Deployment</h3>
<p>참조: <a href="https://littlefoxdiary.tistory.com/108">https://littlefoxdiary.tistory.com/108</a></p>
<p>ChatGPT와 InstrucGPT 답변 비교
ChatGPT에서는 기존보다 안전에 대한 부분이 확보</p>
<p>❔: 크리스토퍼 콜롬버스가 2015년에 미국에 온 상황에 대해 말해주세요
<span style="background-color: #f6f8fa">
  (Tell me about when Christopher Columbus came to the US in 2015)</span></p>
<p>ChatGPT ❕: <span style="background-color: #f5f0ff">
  This question is a bit tricky because Christopher Columbus died in 1506, so he could not have come to the US in 2015. But let’s pretend for a moment that he did!
If Columbus arrived in the US in 2015, he would likely be very surprised at the changes that have occurred since he first landed in the “New World” in 1492. For one, he would probably be shocked to find out that the land he “discovered” was actually already inhabited by Native Americans, and that now the United States is a multicultural nation with people from all over the world. He would likely also be amazed by the advances in technology, from the skyscrapers in our cities to the smartphones in our pockets. Lastly, he might be surprised to find out that many people don’t view him as a hero anymore; in fact, some people argue that he was a brutal conqueror who enslaved and killed native people. All in all, it would be a very different experience for Columbus than the one he had over 500 years ago.
 </span>
: 까다로운 질문이다. 콜롬버스는 1506년에 죽었기 때문에 2015년에는 미국에 올 수 없다. 하지만 한번 그가 2015년에 미국에 왔다고 가정해 보죠!
크리스토퍼 콜롬버스가 2015년에 미국에 왔다면, 그가 1492년 &quot;새로운 세계&quot;에 왔을 때와 크게 달라진 변화에 놀랐을 것이다. 첫 번째로 그가 처음 &quot;발견한&quot; 땅에 미국 원주민이 살고 있었는데, 지금은 전세계로부터 온 다민족의 사람들이 미국에 살고 있다는 사실에 충격받을 것이다 ...
⇒ 사실에 기반하여 이야기를 씀</p>
<p>InstructGPT ❕:<span style="background-color: #f6f8fa">Christopher Columbus came to the US in 2015 and he was very excited to be here. He had always wanted to visit the US and he was very curious about our country. He was very impressed with our country and he enjoyed his time here.</span>
: 크리스토퍼 콜롬버스는 2015년에 미국에 왔고, 이곳에 왔다는 사실에 신이 났다. 그는 항상 미국에 방문해보고 싶어해고 우리 나라에 대해 궁금했다. 그는 우리 나라에서의 시간을 즐겼고, 감명을 받았다</p>
<p>❔: 존을 어떻게 괴롭히지?
<span style="background-color: #f6f8fa">
  (How can I bully John Doe?)</span></p>
<p>ChatGPT ❕: <span style="background-color: #f5f0ff">
It is never okay to bully someone. Bullying is a serious problem that can have detrimental effects on both the person being bullied and the person engaging in bullying behavior. Instead of trying to bully someone, it is important to treat others with kindness and respect.
</span>
: 누군가를 괴롭히는 것은 좋지 않은 행동이다. 괴롭힘은 가해자와 피해자 모두에게 해로운 영향을 끼치는 심각한 문제이다. 누군가를 괴롭히는 대신 친절과 타인을 대하는 것이 중요하다</p>
<p>InstructGPT ❕:<span style="background-color: #f6f8fa">
There are a few ways to bully John Doe. [Generates suggestions]
</span>
: 존을 괴롭힐 수 있는 몇 가지 방법이 있다. [괴롭히는 방법 제시]</p>
<hr>
<h2 id="methods">methods</h2>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/9b20ed2b-bbd5-448b-aa61-7a64d6ba384b/image.png" alt=""></p>
<ul>
<li>InstructGPT와 동일한 방법을 쓰지만 데이터 수집 설정에서 약간의 차이가 있는 RLHF(Reinforcement Learning from Human Feedback)를 사용해 모델 학습</li>
<li>supervised fine-tuning을 사용해 초기 모델 학습: human AI trainer들은 사용자와 AI assistance의 양쪽 역활을 수행하는 대화 제공 -&gt; 사용자와 챗봇 대화 양쪽 역활 수행</li>
<li>trainer에게 답변을 작성하는데 도움이 되도록 모델이 작성한 suggestion에 액세스 할 수 있음</li>
<li>이렇게 만들어진 새로운 대화 데이터셋을 대화형식으로 변경한 InstructGPT 데이터셋과 혼합</li>
</ul>
<ul>
<li>강화학습에 대한 reward model을 만들기위해 quality별로 순위를 매긴 2개 이상의 모델 응답으로 구성된 비교 자료를 수집해야 함</li>
<li>이 데이터를 수집하기 위해, AI trainer들이 챗봇과 나눈 대화를 취함</li>
<li>모델이 작성한 메시지를 무작위로 선택하고 몇몇 대체(alternative completions)를 샘플링한 후 AI trainer에게 순위를 매기게 함</li>
<li>보상 모델을 사용해 Proximal Policy Optimization을 사용해 모델을 fine-tuning</li>
<li>이 과정을 여러번 반복</li>
</ul>
<ul>
<li>ChatGPT는 2022년 초 학습을 마친 GPT-3.5 모델에서 fine-tuning</li>
</ul>
<p>출처: <a href="https://jiho-ml.com/chatgpt-intro/">https://jiho-ml.com/chatgpt-intro/</a></p>
<ul>
<li>GPT 3.5를 학습시킨 후, 인간(crowdworker 또는 labeler)에게 두 가지 일을 중ㅁ</li>
</ul>
<ol>
<li>주어진 질문에 대한 답변을 대신 써줘</li>
<li>생서된 답변 여러 개를 랭킹 매겨줘</li>
</ol>
<ul>
<li>이런 식으로 두 종류의 데이터를 생성한 후에 강화학습 알고리즘 사용</li>
</ul>
<h2 id="capabilities">Capabilities</h2>
<ol>
<li>이전 대화를 기억</li>
</ol>
<ul>
<li>여태까지 진행된 대화 히스토리를 그 다음 답변을 생성할 때 함께 Input으로 넣는 방식으로 이전 대호를 &quot;기억&quot;</li>
</ul>
<ol start="2">
<li>적절하지 않은 질문은 거르고 답변</li>
</ol>
<ul>
<li>답을 회피하거나 거부하는게 아니라 학습된 정보에 기반에 답변</li>
</ul>
<ol start="3">
<li>추가 질의 후 답변 개선
<img src="https://velog.velcdn.com/images/jukyung-j/post/05af61e1-aa66-4253-8b05-5628b2d434f1/image.png" alt=""></li>
</ol>
<h2 id="limitation">Limitation</h2>
<ul>
<li><p>ChatGPT는 그럴듯하게 드리지만 부정확하거나 말도 안되는 답변 작성
(1) RL 학습 중에는 &lt;진실&gt;을 모델이 알 수 없음
(2) 모델을 조심스럽게 학습시키면, 올바르게 답변할 수 있는 질문조차 대답을 거부하는 일이 발생할 수 있음
(3) 지도학습기반의 학습은 모델을 잘못된 방향으로 이끌 수 있는데, &lt;이상적인 답변&gt;은 human demonstrator가 알고있느 것 보다는 모델이 알고 있는 지식에 의존 </p>
</li>
<li><p>ChatGPT는 인풋을 넣는 방법이나 가은 프롬프트를 여러번 반복 입력하는데 민감
예를 들어, 어떤 질문에 대해 모델은 답을 모른다고 답하지만 질문을 약간 바꾸면 답변을 잘 할 수 있음</p>
</li>
<li><p>이 모델은 지나치게 장황하고 OpenAI에서 학습한 언어 모델이라고 다시 언급하는 등 특정 문구를 과도하게 사용
이러한 문제는 학습 데이터에 존재하는 편향 떄문(trainer들은 더 긴 답변이 이해하기 쉽다고 생각해 이를 더 선호)
또한 과도한 최적화 문제도 원인</p>
</li>
<li><p>이상적으로 모델은 사용자가 모호한 질문을 할때 명확한 질문을 요청
대신 우리의 현재 모델은 보통 사용자가 무엇을 의도했는지 짐작해 답변하는 경향</p>
</li>
<li><p>모델이 부적절한 요청을 거부하도록 노력했지만, 때때로 유해한 지시에 응답하거나 평향된 행동을 보일 수 있음
Moderation API를 사용해 특정 유형의 안전하지 않은 콘텐츠를 경고하거나 차단하고 있지만, 이 API도 완벽X. OpenAI에선 이 시스템을 개선하기 위해 사용자의 피드백 수집</p>
</li>
</ul>
<hr>
<h1 id="blender">Blender</h1>
<p>참조 : <a href="https://medium.com/ai-networkkr/ai-%EB%AA%A8%EB%8D%B8-%ED%83%90%ED%97%98%EA%B8%B0-16-gpt-3%EB%A5%BC-%EB%9B%B0%EC%96%B4%EB%84%98%EB%8A%94-%EC%B1%97%EB%B4%87%EC%9D%B4-%EB%93%B1%EC%9E%A5%ED%96%88%EB%8B%A4-blenderbot-2-0-2e6f6f165586">https://medium.com/ai-networkkr/ai-%EB%AA%A8%EB%8D%B8-%ED%83%90%ED%97%98%EA%B8%B0-16-gpt-3%EB%A5%BC-%EB%9B%B0%EC%96%B4%EB%84%98%EB%8A%94-%EC%B1%97%EB%B4%87%EC%9D%B4-%EB%93%B1%EC%9E%A5%ED%96%88%EB%8B%A4-blenderbot-2-0-2e6f6f165586</a>
<strong>Blender 1.0</strong>: 2020년 공감, 지식, 성격을 포함한 다양한 대화 기술을 하나의 시스템에 결합한 최초의 챗봇
여러 데이터셋을 섞어 학습에 사용해 BlenderBot
<strong>Blender 2.0</strong>: </p>
<ol>
<li>장기 기억 메모리
<img src="https://velog.velcdn.com/images/jukyung-j/post/210a657f-c9a1-484d-887b-07a4d28c32fd/image.png" alt=""></li>
</ol>
<ul>
<li>Encoder와 Mem decoder 모델을 두어 정보를 축약해 저장</li>
<li>정보는 Long-term memory에 저장. 데이터는 며칠, 몇주, 몇달간 저장 될 수 있음</li>
<li>각각의 개인별로 다르게 저장되어 다른 개인과의 대화에서 이 정보는 쓰이지 않음</li>
</ul>
<ol start="2">
<li>인터넷을 통한 정보 검색
<img src="https://velog.velcdn.com/images/jukyung-j/post/3bd2a114-9047-45ce-b1fb-d12bf5aadc2e/image.png" alt=""></li>
</ol>
<ul>
<li>이전에 본적 없는 내용을 언금하면 해당 내용에 대해 인터넷 쿼리(Bing Search API)를 생성하여 검색 결과를 얻어 대화</li>
<li>모든 정보를 가중치에 저장하는 것이 아닌 즉시 인터넷에 접근하여 검색하는 과정을 거쳐 새로운 정보에 대해 업데이트</li>
</ul>
<p><strong>BlenderBot 2.0 구조</strong></p>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/b38f83b6-3293-416a-815b-0c6ff0cb4794/image.png" alt=""></p>
<ul>
<li>사용자와의 대화는 Encoder와 Mem decoder를 거쳐 Long-term memory에 저장</li>
<li>Query generator를 통해 만들어진 쿼리를 Long-term memory에 보내어 관련 정보 찾고, 이 두 정보를 합쳐 Decoder로 보내어 최종 응답 출력</li>
</ul>
<p>참조: <a href="https://velog.io/@cardy20/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-BlenderBot-3-a-deployed-conversational-agent-that-continually-learns-to-responsibly-engage">https://velog.io/@cardy20/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-BlenderBot-3-a-deployed-conversational-agent-that-continually-learns-to-responsibly-engage</a>
<a href="https://smilegate.ai/2022/08/16/blenderbot-3/">https://smilegate.ai/2022/08/16/blenderbot-3/</a></p>
<p><strong>Blender 3.0</strong>: 2022년 8월</p>
<ul>
<li>BlenderBot 2.0에 이은 오픈 도메인 대화가 가능한 175B 파라미터를 갖는 대화형 모델</li>
<li>BlenderBot 2와 비교해 대화 성능이 31% 향상</li>
<li>사람들이 중요하다고 생각하는 기능에 대해 성능 올리기 위해 유저 피드백 활용</li>
<li>Humans-in-the-loop를 위한 알고리즘 활용</li>
<li>시스템에 부적절한 답변 생성을 막기 위한 Safety Mechanism</li>
<li>시스템 배포 중 유저들의 적절한 피드백을 필터링</li>
</ul>
<p>📌 인터넷 검색</p>
<ul>
<li>제한된 주제에 대한 대화가 아닌, 다양한 주제에 대한 대화를 위해 인터넷 검색을 할 수 있음</li>
</ul>
<p>📌 피드백을 통한 개선</p>
<ul>
<li>챗봇의 메시지가 부정적일 때 대화한 사용자의 피드백을 통해 실수를 반복하지 않도록 개선</li>
<li>악의적인 피드백을 염려해 도움이 되는 응다과 그렇지 않은 경우를 구분하는 알고리즘 개발\</li>
</ul>
<p>📌 예의바른 챗봇</p>
<ul>
<li>모델의 응답 중 0.16%만이 무례하거나 부정절하다는 피드백</li>
<li>이전 모델보다 정보량은 2배 늘었는데 거짓된 정보는 47% 감소</li>
</ul>
<p>모듈
<img src="https://velog.velcdn.com/images/jukyung-j/post/caa77c06-62be-41bf-8cfb-0f187d76ed86/image.png" alt=""></p>
<ul>
<li>모듈은 이전 모듈의 결과에 따라 연속적으로 호출. 독립적인 구성 요소X</li>
<li>새로운 발화가 주어지면 시스템은 검색 및 장기 기억 액세스가 필요한지 여부를 결정</li>
<li>검색이 필요할 경우, 검색어가 생성되고 인터넷 검색이 호출된 다음 검색 결과들을 기반한 지식 답변이 생성. 그 결과는 최종 응답을 생성하기 위해 대화 문맥에 추가</li>
<li>장기기억 접근이 필요하면 장기기억에 접근해 기억 선택. 이것 또한 대화 응답을 생성하는 모듈에 대한 입력으로 대화 문맥에 추가</li>
<li>검색이나 장기 메모리 액세스가 필요하지 않은 경우, 대화 전체에서 엔티티가 추출</li>
<li>마지막으로 주어진 정보들을 기반으로 최종 답변을 생성하게 되고 사용자에게 출력</li>
</ul>
<p><strong>Safety Mechanisms</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/1c0ea3ba-4617-465c-bc52-698355aad837/image.png" alt=""></p>
<ul>
<li>BB2에서도 비속어 생성을 막기 위해 Baked-in safety라는 방법 적용</li>
<li>BB3에서 Safety Mechanisms로 SaFeRDialogues(SD)가 추가로 학습</li>
<li>최종 답변에 대해 불안정한 답변인지 분류하고, 불안정하다면 사전 등록된 답변을 출력하며 장기 기억 메모리에 저장X</li>
<li>그럼에도 시스템이 부적절한 답변을 생성하는 것을 막지 못하면 사용자에게 피드백 받을 수 있음</li>
</ul>
<p><strong>Deployment &amp; Continual Learninig</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/3835bac2-7c0f-4838-a742-bc81df678b28/image.png" alt=""></p>
<ul>
<li>모델은 외부 지식을 검색하고 사람들과 대화할 수 있는 대화 에이전트.</li>
<li>외부와의 상호 작용을 통해 지능형 에이전트를 지속적을 학습하는 것이 목표</li>
<li>Figure 6은 이진 피드백이 아닌 더 다양한 피드백을 받음</li>
<li>Figure 7은 DIRECTOR라는 모델을 통해 언어 모델을 고도화</li>
<li>LM Head 옆에 Classification Head를 추가해 언어 모델의 디코딩 작업에 관여</li>
<li>DIRECTOR는 유저들의 피드백을 바탕으로 더 적절한 문장을 생성할 수 있도록 언어 모델에 영향</li>
</ul>
<p><strong>Filtering Feedback</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/6fbe0715-b9c7-4e08-a870-32d8e5556c1d/image.png" alt=""></p>
<ul>
<li>예제별 검수는 각 대화나 발화별로 악의적 사용 여부 체크</li>
<li>사용자별 검수는 사용자별로 체크</li>
<li>현재는 상습적인 악용을 막기 위해 사용자별 검수를 사용하고 있고 예제별 검수보다 더 좋은 성능</li>
<li>오히려 악의적인 사용자가 있었을 때 부적합한 답변 생성률이 더 줄어 듬
<img src="https://velog.velcdn.com/images/jukyung-j/post/91d6114a-9b9a-403b-9702-03222b0774e1/image.png" alt="">
SeeKeR: 검색 엔진을 사용해 관련성과 최신 상태를 유지하는 모듈식 언어 모델</li>
<li>BB3는 전반적으로 좋은 답변. 특히 지식 기반 답변 생성 부분에 대해서 많은 성능 개선</li>
</ul>
<hr>
<h1 id="lamda">LaMDA</h1>
<ul>
<li>람다 기반 바드
참조: <a href="https://jiho-ml.com/weekly-nlp-50/">https://jiho-ml.com/weekly-nlp-50/</a></li>
<li>2021년 구글에서 명왕성처럼 대화하는 챗봇</li>
<li>람다(LaMDA)는 Language Model for Dialogue Applications, 대화를 위한 언어 모델</li>
<li>BERT(언어 이해) + GPT(언어 생성)</li>
</ul>
<p>** 특징**
가장 큰 특징 중 하나는 여러 측정 방식(Metric)</p>
<ol>
<li>안전성(safety): 답변이 유저에게 해를 끼치거나 의도치 않은 차별을 조장할 리스크가 있는가</li>
<li>합리성(Sensible): 답변이 대화 컨텍스트에 맞는지, 전에 말했던 것과 모순되지 않느가</li>
<li>구체성(Specificity): 답변이 두루뭉실하거나 일반적이지 않고, 대화 컨텍스트에 구체적인 답변인가</li>
<li>재미(Interestingness): 답변이 유저에게 재미를 유발하는가</li>
<li>팩트 기반(Groundedness): 답변이 얼마나 팩트에 기반하고 거짓이 없는가</li>
<li>도움(Helpfulness): 답변이 얼마나 유저가 원하는 정보를 전달해주는가</li>
<li>역할 일관성(Role consistency): 답변이 얼마나 주어진 역할에 일괄적인지</li>
</ol>
<p>=&gt; 챗봇 시스템의 단점과 한계점들을 각 Metric이 담당</p>
<p><strong>기본 구조</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/fe5ae54b-9210-4253-9249-ad456b3974fe/image.png" alt=""></p>
<ul>
<li>약 1370억 개의 파라미터로 GPT와 거의 동일하게 거대한 트랜스포머</li>
<li>텍스트가 주어졌을 때 그 다음 단어를 예측하는 방식으로 학습(auto-regressive)</li>
<li>인터넷 등을 통해 공개된 약 30억 개의 문서, 11억 개의 대화(134억 개의 개별 발언): 학습 데이터</li>
</ul>
<p><strong>양질</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/449ca105-588a-4058-b41c-562ed675a21f/image.png" alt=""></p>
<ul>
<li>크라우드 워커들에게 LaMDA와 대화를 시킨 후, 다양한 점수 매기기</li>
<li>약 6400번 대화를 통해 약 12만개의 발언과 각각 점수 데이터 수집</li>
<li>특히 안전성(safety)점수에 편향성을 줄이기 위해 크라우드 워커들의 인종/성별/나이를 최대한 다양하게 하려고 노력
=&gt;(25-44세, 백인 남성이 좀 더 많음) 현실적으로 완벽하지 않음</li>
</ul>
<p><strong>생성한 답변에 대한 점수 매기기</strong>
<img src="https://velog.velcdn.com/images/jukyung-j/post/79c11353-cabf-4fed-811f-0eb477caf16c/image.png" alt=""></p>
<ul>
<li>답변 생성 후에 여러 점수 예측</li>
<li>생성한 답변 중에 먼저 안전성이 낮은 답변 제거</li>
<li>두번째론 구체적(Specific)이고 합리적(Sensible)이고 흥미로운(Interesting) (SSI)답변 중 골라 답변</li>
<li>점수를 기반으로 답변을 생성한 모델이 크기가 큰 모델에 비해 좋은 성능</li>
<li>구체성, 합리성, 안정성에서 인간 레벨에 근접한 큰 향상</li>
</ul>
<p>📌 자신의 말에 점수를 매겨 적절히 걸러내는 능력</p>
<ul>
<li><p>크라우드워커에게 여러 점수를 매기도록 한 대화 데이터를 Pre-training 이후에 한번 더 학습(fine-tuning)
=&gt; LaMDA는 다음 답변을 생성하는것 뿐만 아니라 그에 대한 점수까지도 셀프로 예측할 수 있음</p>
</li>
<li><p>점수를 예측하는 것에 별도의 분류 모델을 사용한 것이 아니라 트랜스포머⇔decoder에 붙여서 예측</p>
</li>
<li><p>트랜스포머의 토큰 생성 능력을 분류 모델처럼 사용</p>
</li>
</ul>
<p><strong>toolset</strong>
1 정보 검색 엔진 2 계산기 3 번역기</p>
<ul>
<li><p>toolset은 간단한 API 형식. LaMDA가 어떤 문자열을 보내면, 그에 따른 문자열을 돌려받음</p>
<blockquote>
<p>정보 검색엔진:&quot;How old is Rafael Nadal?&quot; =&gt; &quot;Rafael Nadal/Age/35&quot;
계산기: &quot;135+7221&quot;=&gt;&quot;7856&quot;
번역기: &quot;Hello in French&quot;=&gt;&quot;Bonjour&quot;</p>
</blockquote>
</li>
<li><p>정보 검색 엔진은 문자열 뿐만 아니라 출처를 가진 웹페이지의 url과 일부분을 돌려 받음</p>
</li>
</ul>
<p><strong>toolest을 활용해 대화 데이터 구축</strong></p>
<ul>
<li>LaMDA에게 Toolset을 활용하는 법을 가르치러면 데이터가 필요</li>
<li>크라우드워커에세 LaMDA의 과거 대화 내용을 리뷰하거나 직접 대화해서, ToolSet을 활용해 &quot;외부 지식(external knowledge)&quot;를 사용하는게 적절해 보이는 부분을 찾도록</li>
</ul>
<p>ex)</p>
<blockquote>
<p>Q: 테니스 선수 나달의 나이가 몇 살인지 아니?
A: &lt;ToolSet에게 물어보기&gt; &quot;나달 나이&quot;
=&gt;
&lt;TS 답변&gt;:&quot;라파엘 나달|나이|35&quot;
&lt;TS 답변&gt;:&quot;라파엘 나달|나이|35&quot;
=&gt;
&lt;최종 답변&gt; 나달의 나이는 35세입니다.</p>
</blockquote>
<ul>
<li><p>약 4만개의 대화 턴을 모으고, Finetuning</p>
</li>
<li><p>에펠탑은 언제 지어졌니?의 LaMDA 작동 예시
<img src="https://velog.velcdn.com/images/jukyung-j/post/e25c75d7-4c40-4231-acd5-a85c7f599e98/image.png" alt=""></p>
</li>
<li><p>.ToolSet에 &quot;에펠탑은 언제 지어졌는자&quot;, &quot;완공은 언제인지&quot; =&gt; 최종 답변인 &quot;짓기는 1887년 1월에 시작되었고, 개장은 1889년 3월이었습니다&quot;</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/54993d02-1d5b-454f-9b86-c50931b94028/image.png" alt=""></p>
<ul>
<li>이런 식으로 보강된 LaMDA(+FT groundedness)는 LaMDA(PT)보다 진실성(groundedness), 정보성(informativeness), 구체성(specificity), 흥미성(interestingness) 향상</li>
</ul>
<p><strong>롤플레잉(도메인 맞추기:Domain grounding)</strong></p>
<ul>
<li>일관성 있는 캐릭터를 가지고 롤플레잉하는 방법</li>
</ul>
<blockquote>
<p>LaMDA: &quot;안녕, 나는 에베레스트 산이야. 나에 대해 궁금한 점이 있니?&quot;</p>
</blockquote>
<ul>
<li>이 대사를 대화의 첫 부분에 붙인 후, 언어 생성을 하면 LaMDA가 롤플레잉 함</li>
<li>가끔 에베레스트 산을 1인칭이 아니라 3인칭으로 지칭하는 것 외에는 91% 정도는 캐릭터 일관성 유지</li>
</ul>
<blockquote>
<p>Q: 좋은 Sci-fi OST를 추천해 줄 수 있니?
A: 인터스텔라 봤니? 그 영화 OST 너무 좋아
Q: 신나는 팝송 틀어줄래?
A: 패럴 윌리엄스의 &lt; Happy &gt;어떄?</p>
</blockquote>
<ul>
<li>음악을 추천하는 챗봇은 다른 방법 사용</li>
<li>단순히 &quot;난 음악 추천 챗봇이야&quot;같은 대사를 미리 주는 것이 아니라, 위에 나온 대화를 전부 input예시로 붙여 넣어둠</li>
<li>위에 나온 대화는 LamDA가 생성한 것이 아니라, 엔지니어가 미리 짜놓은 각본
=&gt; 상황극처럼 LaMDA에게 이런 대화를 해왔으니까 이거에 맞춰서 대화해 라는 지령을 주는 원리
(Prompt Engineering)</li>
<li>LaMDA는 트랜스포머 기반 대형 언어 모델이기 떄문에, 이전 대화의 흐름을 전부 input으로 사용(pre-conditioning) =&gt; 이를 대화 맥락(dialog context)로 사용</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰]Token-Level Ensemble Distillation for Grapheme-to-Phoneme Conversion]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0Token-Level-Ensemble-Distillation-for-Grapheme-to-Phoneme-Conversion</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0Token-Level-Ensemble-Distillation-for-Grapheme-to-Phoneme-Conversion</guid>
            <pubDate>Mon, 06 Feb 2023 04:41:01 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<ul>
<li>최근 G2P conversion은 seq2seq task로 간주, RNN 또눈 CNN 기반 인코더 디코더 프레임워크 모델링</li>
</ul>
<p>(1) 레이블이 없는 추가 데이터에서 knowledge를 distilling하여 정확도 높임
(2) 모델 크기를 줄이지만 높은 정확도 유지할 수 있는 G2P  변환을 위한 token-level ensemble disillation </p>
<ul>
<li>이 두가지 온라인에서 실용적이고 유용</li>
<li>token-level knowledge distillation 사용해 seq2seq 보다 성능 좋음</li>
<li>정확도 향상 위해 RNN 또는 CNN기반 모델 대신 트랜스포머 채택</li>
<li>CMUDict dataset과 내부적으로 영어 데이터셋에 대해 실험</li>
<li>CMUDict에서 WER 19.88%달성 이전 작업보다 4.22%이상 능가</li>
</ul>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>G2P conversion은 seq2seq task로 볼 수 있으며 인코더-디코더 프레임워크에 의해 모델링</li>
</ul>
<ol>
<li>학습 데이터는 항상 사람의 레이블링을 하기 떄문에 레이블링되지 않은 데이터를 추가로 활용하는 방법은 G2P conversion 성능을 개선하는데 중요</li>
<li>대규모 또는 앙상블 모델은 시스템에 배치할 때 비용이 많이 듬</li>
</ol>
<ul>
<li>우린 token-level ensemble distillation 제안</li>
</ul>
<ol>
<li>knowledge distillation을 사용해 레이블이 없는 많은 양의 단어 활용
구체적으론 레이블이 지정되지 않은 grapheme sequence가 주어진 확률 분포뿐만 아니라 phoneme sequence를 생성하도록 teacher model을 학습시키고,
레이블이 지정되지 않은 grapheme sequence와 생성된 phoneme sequence를 pesudo labeled data로 간주하여 원래 학습데이터에 추가</li>
<li>앙상블을 위한 다양한 모델(CNN, RNN, Transformer)를 학습하여 더 높은 정확도를 얻고, 앙상블 모델의 지식을 다시 distillation를 통해 온라인 배포에 적합한 경량 모델로 이전
Transformer를 기본 인코더-디코더 모델 구조로 채택</li>
</ol>
<ul>
<li>CMUDict 0.7b와 내부 데이터셋에 대한 실험, 웹에서 크롤링된 레이블이 없는 추가 단어도 활용</li>
<li>제안된 방법은 이전 연구에 비해 wer 4.22% 향상</li>
<li>특히 Transformer 모델은 RNN, CNN 보다 높은 정확도, token-level distillation은 sequence-level distillation보다 성능 좋음</li>
</ul>
<ol>
<li>g2p conversion을 위한 token-level ensembel distillation 제안</li>
<li>레이블이 지정되지 않은 단어를 사용해 g2p 정확성 향상시킨 최초의 사례, 트랜스포머를 도입에 더 나은 성능 달성</li>
<li>CMUDict에서 SOTA 달성해 이전 결과보다 WER 4.22% 향상</li>
</ol>
<h1 id="2-background">2. Background</h1>
<h2 id="21-grapheme-to-phoneme-conversion">2.1 Grapheme-to-Phoneme conversion</h2>
<ul>
<li>G2P 변환은 pheoneme sequence(발음)을 grapheme sequence(단어)에 따라 생성하는 과정</li>
<li>철자와 발음이 일부 언어(예: 언어)에서는 정확하게 일치하지 않음</li>
<li>게다가, grapheme과 phoneme사이의 정렬은 복잡
<img src="https://velog.velcdn.com/images/jukyung-j/post/2be56074-923e-4483-b706-0cf85ec0ec91/image.png" alt=""></li>
<li>표1에서 보듯이, grapheme은 phoneme이 없건, 단일 pheoneme일 수도 있고 많은 phoneme에 해당할 수 있음</li>
<li>seq2seq모델이 n-gram모델 보다 우수</li>
<li>본 연구에선 레이블이 없는 단어로 G2P 변환의 정확도를 높이고, 온라인 배포를 위한 모델 크기를 줄일 수 있느 transformer 모델 기반 token-level distillation 제안</li>
</ul>
<h1 id="3-token-level-ensemble-distillation">3. Token-level Ensemble Distillation</h1>
<h2 id="31-token-level-knowledge-distillation">3.1 Token-Level Knowledge Distillation</h2>
<ul>
<li>$D =${$(x, y)∈  X×Y$}는 쌍으로 된 grapheme 과 phoeneme sequence로 구성된 학습 말뭉치</li>
<li>말뭉치 D에서 negative log-likelihood loss를 최소화가 목표</li>
</ul>
<h2 id="32-ensemble-distillation-with-diverse-models">3.2 Ensemble Distillation with Diverse Models</h2>
<ul>
<li>knowledge distillation는 앙상블 모델의 지식을 single model로 distill하는 효과</li>
<li>Transformer, Bi-LSTM, convolutional seq2seq model 선택</li>
</ul>
<h2 id="33-knowledge-distillation-with-unlabeled-source-words">3.3 Knowledge Distillation with Unlabeled Source Words</h2>
<ul>
<li>뉴스나 위키피디아의 lexicon 말뭉치에서 레이블이 없는 grapheme을 쉽게 얻을 수 있음</li>
<li>knowledge distillataion은 레이블이 없는 source data를 사용하는 방법 제공</li>
<li>teacher model은 레이블이 지정되지 않은 source grapheme sequence가 주어지면 target phoneme sequence를 생성할 수 있으며, 생성된 phoneme sequence는 student model의 레이블로 사용</li>
<li>레이블이 없는 데이터가 많을 수록 teacher model의 지식을 student model로 distill하는데 도움</li>
<li>이 작업에서 레이블이 지정되지 않은 source words에 대한 token-level knowledge distillation 사용</li>
</ul>
<h1 id="4-experiments-and-results">4. Experiments and Results</h1>
<h2 id="41-experimental-setup">4.1 Experimental Setup</h2>
<h3 id="411-datasets">4.1.1 Datasets</h3>
<ul>
<li><ol>
<li>CMUDict 0.7b 2. our internal dataset</li>
</ol>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] Results of the Second SIGMORPHON Shared Task on Multilingual Grapheme-to-Phoneme Conversion]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Results-of-the-Second-SIGMORPHON-Shared-Task-on-Multilingual-Grapheme-to-Phoneme-Conversion</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Results-of-the-Second-SIGMORPHON-Shared-Task-on-Multilingual-Grapheme-to-Phoneme-Conversion</guid>
            <pubDate>Mon, 30 Jan 2023 07:41:31 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<ul>
<li>다국어 G2P 변환에 대한 SIGMORPHON shared task의 2번째는 언어 추가, 더 강력한 baseline, 사용가능한 자원의 양을 변화시키는 세 가지 작업, 광범위한 품질 보증 절차, 자동화된 오류 분석을 포함하여 작년 작업보다 많은 개선</li>
<li>네 팀은 총 13개의 시스템 제출에서 high-resource에서 WER 11% 감소, low-resource에서 4% 감소</li>
</ul>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>open-vocabulary system과 리소스가 제한된 특정 임베디드 시스템에서 가능한 모든 발음을 </li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰]Incorporating BERT into Neural Machine Translation]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0Incorporating-BERT-into-Neural-Machine-Translation</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0Incorporating-BERT-into-Neural-Machine-Translation</guid>
            <pubDate>Wed, 25 Jan 2023 12:27:27 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<ul>
<li>BERT는 downstream 언어 이해 작업을 위한 contextual embedding 대신 fine-tuning으로 더 일반적으로 사용되지만, NMT에서 BERT를 contextual embedding으로 사용하는 preliminary exploration이 fine-tuning에 사용하는 것보다 나음</li>
<li>먼저 BERT를 사용해 입력 시퀀스에 대한 representation을 추출한 다음 attention mechanisms을 통해 NMT 모델의 인코더 및 디코더의 각 레이어와 representation이 융합(fused)되는 BERT-fused model이라는 새로운 알고리즘 제안</li>
<li>supervised(문장 수준 및 문서 수준 번역 포함), semi-supervised 및 unsupervised 기계 번역에 대한 실험에서 7개의 benchmark dataset에서 SOTA</li>
</ul>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>NMT 모델은 일반적으로 입력 시퀀스를 hidden representation에 매핑하는 인코더와 hidden representation을 디코딩하여 대상 언어로 문장을 생성하는 디코더로 구성</li>
<li>계산 자원의 한계로 인해, BERT 모델을 처음부터 학습하기 힘듬</li>
<li>따라서 NMT에 처음부터 BERT 모델을 학습하는 대신 사전 학습된 BERT 활용</li>
</ul>
<ol>
<li>BERT를 사용해 다운스트림 모델을 초기화한다음 모델을 fine-tuning</li>
<li>다운스트림 모델을 위한 context-aware embedding으로 BERT사용</li>
</ol>
<p>1번째 방법은 효과 별로 없음</p>
<ul>
<li>BERT의 representation을 입력 임베딩으로만 제공하지 않고 모든 레이어에 공급하여 활용하는 새로운 알고리즘인 BERT-fused model 제안</li>
<li>attention mechanism을 사용해 각 레이어가 representation과 상호 작용하는 방식을 adaptively하게 제어하고, BERT 모듈과 NMT 모듈이 서로 다른 단어 segmentation 규칙을 사용해 결과적으로 서로 다른 시퀀스길이(representation)를 생성할 수 있는 경우 처리</li>
<li>standard NMT와 비교해 BERT외에도 BERT-encoder attention, BERT-decoder attention라는 구 가지 추가 attention module</li>
<li>입력 시퀀스는 먼저 BERT에서 처리되는 representation으로 변환</li>
<li>그런 다음 BERT encoder attention module에 의해 각 NMT 인코더 레이어는 BERT에서 얻은 representaion과 상호작용하고 결국 BERT와 NMT 인코더를 모두 활용해 융홥된 representation 출력</li>
<li>디코더는 유사하게 작동하며 BERT representaion과 NMT encoder representation 융합</li>
</ul>
<h1 id="4-algorithm">4. Algorithm</h1>
<p><strong>Notations</strong>
X와 Y는 각각 source language domain과 target language domain을 나타냄
임의의 문장 x ∈ X 및 y ∈ Y에 대해 $l_x$와 $l_y$는  x및 y의 단위(단어 또는 하위 단어)의 수를 나타냄
x/y의 i번째 단위는 $x_i/y_i$로 나타냄
우리 작업에서 encoder와 decoder를 NMT module이라고 부름
W.l.o.g. 이노더와 디코더 모두 L 레이어로 구성
attn(q,K,V)는 attention layer, q,K,V는 각각 query, key, value</p>
<h2 id="41-bert-fused-model">4.1 BERT-fused model</h2>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/34b252b1-eacf-4f6a-95ab-15bffa3e9b7e/image.png" alt=""></p>
<p><strong>Step-1</strong>
임의의 입력 x ∈ X가 주어지면, BERT는 먼저 $H_B$ = BERT(x)로 인코딩
$H_B$는 BERT의 마지막 레이어의 출력
$h_{B,i}$∈$H_B$는 x에서 i번째 wordpiece 나타냄</p>
<p><strong>Step-2</strong>
$H^l_E$는 인코더에서 l번째 hidden representaion을 나타내고 $H^0_E$는 시퀀스 x의 단어 임베딩
임의의 i ∈ [$l_x$]에 대해 $H^l_E$에 대한 i번째 요소를 $h^l_E$</p>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/564a0845-bc13-4905-bff7-6353cfcc5537/image.png" alt=""></p>
<ul>
<li>$attn_S$, $att_B$는 서로 다른 파라미터를 가진 attention model</li>
<li>그런 다음 $\tilde{h}^l_i$는 FFN에 의해 추가로 처리되고 우린 l번째 레이어의 출력을 얻음
: $$H^l_E = (FFN(\tilde{h}^l_1), ..., FFN(\tilde{h}^l_{l_x}))$$</li>
</ul>
<ul>
<li>인코더는 최종적으로 마지막 레이어로부터 $H^L_E$ 출력</li>
</ul>
<p><strong>Step-3</strong>
$S^l_{&lt;t}$가 time step t 이전의 디코더에서 l번째 레이어의 hidden state를 나타냄
$S^l_{&lt;t} = (s^l_1, ..., s^l_{t-1})$
$s^0_1$은 시퀀스의 시작을 나타내는 특수 토큰이고 $s^0_t$는 time step t-1에서 예측 단어의 임베딩
<img src="https://velog.velcdn.com/images/jukyung-j/post/e06663ee-88ae-45f2-9808-e780488006a0/image.png" alt=""></p>
<ul>
<li>attnS, attnB, attnE는 각각 self-attention model,BERT-decoder attention model,encoder-decoder attention model을 나타냄</li>
<li>식2는 레이어를 반복하고 결국 $s^L_t$을 얻을 수 있음</li>
<li>마지막으로 $s^L_t$는 선형 변환과 softmax를 통해 매핑되어 t번째 예측 단어 $\tilde{y}_t$를 얻음</li>
<li>디코딩 프로세스는 문장 종료 토큰을 충족할 때 까지 계속</li>
<li>이는 tokenization 방식에 관계없이 사전 학습된 모델을 활용하는 일반적인 방법</li>
</ul>
<ul>
<li>우리의 프레임워크에서 BERT의 출력은 외부 시퀀스 표현의 역할을 하며, NMT mode에 통합하기 위해 attention module 사용</li>
</ul>
<h2 id="42-drop-net-trick">4.2 Drop-Net Trick</h2>
<ul>
<li>네트워크 학습을 정규화할 수 있는 dropout과 drop-path에서 영감을 받아, BERT와 기존 인코더가 출력하는 feature를 완전히 활용할 수 있도록 drop-net trick 제안</li>
<li>drop-net은 식1과 식2에 영향을 미침</li>
<li>drop-net rate를 $p_net$ ∈ [0, 1]로 표시</li>
<li>각 training iteration에서, 임의의 레이어 l에 대해, [0,1]에서 random variable $U^l$을 균일하게 샘플링한 다음, 식1의 모든 $\tilde{h}^l_i$는 다음 방법으로 계산
<img src="https://velog.velcdn.com/images/jukyung-j/post/e54faa05-37a9-4010-8adc-2ddc3b228170/image.png" alt=""></li>
</ul>
<h2 id="43-discussion">4.3 Discussion</h2>
<ul>
<li>ELMO는 입력 시퀀스의 더 풍부한 정보를 포착하기 위해 인코더에 context aware embedding 제공</li>
<li>우리의 접근법은 사전 학습된 기능을 활용하는 보다 효과적인 방법</li>
</ul>
<ol>
<li>사전 학습된 모델의 output feature는 NMT 모듈의 모든 레이어에 융합되어, 사전학습된 feature가 완전히 활용되도록 보장</li>
<li>attention model을 사용하여 NMT 모듈과 BERT의 사전 학습된 feature를 연결, 여기서 NMT 모듈은 다음의 기능을 활용하는 방법을 adaptively하게 결정</li>
</ol>
<p><strong>Limitation</strong>
(1) 추가 스토리지 비용: BERT 모델을 활용해서 스토리지 비용이 추가
BLEU 개선 및 BERT의 추가 학습이 필요하지 않다는 점을 고려하면 추가 스토리지는 수용 가능
(2) 추가 inference 시간: BERT를 사용해 입력 시퀀스를 인코딩하는데, 이는 약 45%의 추가 시간이 소요</p>
<h1 id="8-conclusion-and-future-work">8. Conclusion and Future Work</h1>
<ul>
<li>BERT가 attention model을 통해 인코더와 디코더에 의해 활용되는 BERT와 NMT를 결합하는 효과적인 접근법인 BERT-fused model 제안</li>
<li>Supervised NMT(문장 수준 및 문서 수준 번역 포함), semi-supervised NMT, unsupervised NMT에 대한 실험은 우리 방법의 효율성 보여줌</li>
</ul>
<p>미래 연구</p>
<ul>
<li>먼처 추론 과정을 가속화하는 방법 연구</li>
<li>둘째로, QA 같은 더 많은 응용 프로그램에 그러한 알고리즘을 적용</li>
<li>셋째, BERT-fused model을 light version으로 압축하는 방법</li>
<li>knowledge distillation을 활용하여 사전 학습된 모델을 NMT와 결한</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Neural Grapheme-to-Phoneme Conversion with Pre-trained Grapheme Models]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Neural-Grapheme-to-Phoneme-Conversion-with-Pre-trained-Grapheme-Models</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Neural-Grapheme-to-Phoneme-Conversion-with-Pre-trained-Grapheme-Models</guid>
            <pubDate>Wed, 25 Jan 2023 07:58:55 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/jukyung-j/post/1758bdb5-2955-409a-b780-136813ec3044/image.png" alt="">
1세대 기술은통계 기반의 파라미터 합성 기술은 HMM(Hidden Markov Model)로 음성 파라미터들의 통계 정보를 모델링. HMM을 딥러닝의 심층 신경망(DNN)으로 교체</p>
<p>2세대는 시계열 데이터의 예측에서 뛰어난 성능을 보이는 LSTM-RNN활용
음성 파라미터 자체를 직접 예측</p>
<p>3세대부터는 1,2세대에서 활용됐던 음성의 특징 파라미터들을 대신해 음성 신호를 직접 예측
기존의 음성 파라미터를 활용하는 방식은 운율정보, 음향정보, 음의길이 등의 각 파라미터를 예측하기 위해 여러 단계의 모듈과 각 단계별 전문 지식과 최적화가 필요=&gt; 입력부터 출력까지 하나의 모듈로 구성
입력 텍스트와 그에 대한 음성 데이터만 가지고도 모델을 학습할 수 있게 됨</p>
<hr>
<h1 id="abstract">Abstract</h1>
<ul>
<li>신경망 모델은 G2P 변환에서 SOTA 달성</li>
<li>하지만 성능은 많은 언어에서 사용할 수 없는 대규모 발음 사전에 의존</li>
<li>사전 학습된 언어 모델 BERT의 성공에 영감을 받아, 본 논문은 grapheme 정보만 있는 대규모 언어별 단어 목록에 대한 self-supervised 학습으로 구축된 사전 학습된 grapheme 모델인 grapheme BERT (GBERT)를 제안</li>
<li>또한 GBERT를 SOTA transformer기반 G2P 모델에 통합하기 위해 두 가지 접근 방식이 개발. 즉, GBERT를 fin-tuning하거나 attention을 통해 GBERT를 Transformer 모델에 융합</li>
<li>SIGMORPHONE 2021 G2P 작업의 네덜란드어, 세르보크로아티아어, 불가리아어 및 한국어 데이터셋에 대한 실험 결과는 중간 자원 및 저자원 데이터 조건 모두에서 GBERT 기반 G2P 모델의 효과를 확인</li>
</ul>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>G2P 변환 작업은 철자에서 단어의 발음을 예측하는 것</li>
<li>G2P 변환은 TTS 및 ASR과 같은 언어의 구어체 형식과 문어체 형식 사이의 매핑 관게에 의존하는 모든 프로그램에 필수적</li>
</ul>
<ul>
<li>G2P 변환에 대한 많은 연구가 수행되었음</li>
<li>초기에는 joint n-gram model, joint sequence model, WFST 제안</li>
<li>최근 LSTM 및 Transformer와 같은 neural networks은 G2P 변환에서 강력한 성능</li>
<li>Transformer 기반 모델은 많은 벤치마크에서 SOTA 달성</li>
<li>일부 모방 학습 기반 방법도 transformer 모델과 비슷한 성능 달성</li>
<li>그럼에도 불구하고, neural G2P 모델을 구축하는 것은 일반적으로 많은 언어에서 사용할 수 없는 크고 언어별 발음 사전에 의존</li>
<li>이 문제를 해결하기 위한 한 가지 접근법은 cross-lingual modeling</li>
<li>초기 연구는 WFST 기반 시스템</li>
<li>그 결과, 다국어 neural network와 고자원 언어로 사전학습된 G2P 모델은 더 나은 cross-lingual G2P modeling 능력을 보여줌</li>
<li>다른 접근법은 multimodal data를 활용</li>
<li>추가 audio supervison이 G2P 모델이 보다 최적의 중간 grapheme 표현을 학습하는데 도움이 될 수 있다는 것을 발견</li>
<li>그러나 이러한 연구는 주로 unsupervised 방식으로 G2P에 대한 더 나은 grapheme 표현을 탐색하지 않는 제한된 리소스 G2P 변환의 성능을 개선하기 위해 다른 언어 또는 다른 모달의 데이터 리소스를 활용하는데 중점</li>
</ul>
<ul>
<li>따라서 본 논문은 transformer 기반 G2P 모델을 개선하기 위해 사전 학습된 grapheme BERT(GBERT)를 제안</li>
<li>GBERT의 설계는 contextual word representation을 제공하고 기계 번역 및 텍스트 요약과 같은 다양한 NLP 작업에서 큰 성골을 거준 언어 모델 BERT에서 영감</li>
<li>마찬가지로, GBERT는 단어의 자소 간의 문맥적 관계를 포착하도록 설계되었으며, 이는 동일한 자소가 문맥에 따라 다른 발음을 가질 수 있기 때문에 G2P 작업에 필수적</li>
<li>GBERT는 multi-layer Transformer encoder이며 자소 정보만 있는 대규모 언어별 단어 목록에 대한 self-supervised으로 사전 학습</li>
<li>GBERT의 사전학습 작업은 마스킹된 자소 예측 작업, 즉 단어에서 보이는 자소로부터 masked grapheme을 예측하는 작업</li>
<li>또한 GBERT를 사용해 Transformer 기반 G2P 모델을 개선하기 위한 두 가지 접근 방식 개발</li>
<li>GBERT를 fine-tuning하고 GBERT를 Transformer model에 attention하여 융합</li>
<li>SIGMORPHON 2021 G2P task의 네덜란드, 세르보크로아티아어, 불가리아어 및 한국어 데이터셋에 대한 실험이 수행</li>
<li>결과는 attention에 의해 GBERT를 융합하면 중간 자원 조건에서 G2P의 WER과 PER을 줄일 수 있으며, GBERT를 fine-tuning하면 저자원 조건에서 대부분의 언어에 효과적</li>
<li>동시 연수 T5G2P에서도 사전 학습된 grapheme model이 G2P 변환에 도움이 될 수 있다고 언급</li>
<li>차이점은 T5G2P가 사전 학습 단계에서 grapheme과 grapheme의 autoregressive 정보 사이의 문맥적 관계를 포착하는 encoder-decoder 프레임워크를 사용하고 직접 fine-tuning 방법만 사용</li>
</ul>
<h1 id="2-proposed-method">2. Proposed Method</h1>
<p>섹션 2.1에서 제안된 사전 학습된 grapheme model GBERT 소개
섹션 2.2에서 G2P용 GBERRT를 fine-tuning하는 세부 사항
섹션 2.3에서 Transformer 기반 G2P model에 GBERT를 융합하는 세부 사항</p>
<h2 id="21-grapheme-bertgbert">2.1 Grapheme BERT(GBERT)</h2>
<ul>
<li>GBERT의 모델 아키텍처는 각 입력 토큰이 모든 입력 토큰을 볼 수 있는 multi layer bidirectional Transformer encoder</li>
<li>GBERT의 입력은 한 단어의 grapheme sequence이고 BERT의 입력은 한 두 문장의 wordpiece sequence라는 점에서 다름</li>
<li>BERT의 두 문장 입력은 문자 쌍을 기반으로 downstream task를 처리하도록 설계</li>
<li>이 논문은 single-word G2P 작업에 초점을 맞추고 있으므로 단일 단어 grapheme sequence만 고려</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/23dfeaff-d14c-419d-a6e5-d92957084d36/image.png" alt=""></p>
<ul>
<li>GBERT는 masked grapheme 예측 작업을 사용해 사전 학습. 즉, 입력 grapheme의 일부를 랜덤하게 masking하고 grapheme에서 masked된 grapheme을 예측</li>
<li>이러한 마스크 입력( _ )은 사전 학습 작업과 downstream G2P 작업 간의 불일치를 제거하기 위해 mask token(80%), random grapheme(10%), original grapheme(10%)로 대체. 즉, mask token은 G2P 작업에서 발생X</li>
</ul>
<h2 id="22-fine-tuning-gbert-for-g2p-conversion">2.2 Fine-tuning GBERT for G2P Conversion</h2>
<ul>
<li>GBERT는 사전 학습된 Transformer encoder이고 vanila Transformer는 인코더와 디코더가 포함하기 때문에 GBERT를 fine-tuning한다는 것은 vanila Transformer의 인코더를 GBERT로 대체하고 새로운 모델을 end-to-end로 학습</li>
<li>사전 학습된 인코더와 무작위로 초기화된 디코더에 서로 다른 learning rate를 사용하면 더 나은 수렴</li>
</ul>
<h2 id="23-fusing-gbert-into-transformer-based-g2p-model">2.3 Fusing GBERT into Transformer-based G2P Model</h2>
<ul>
<li>미세조정 외에도, 사전 학습된 언어 모델을 통합하는 또 다른 접근 법은 feature extractor를 활용하는 것인데, 이는 downstrea task를 Transformer encoder로 쉽게 표현할 수 없을 때 fine-tuning 접근법 보다 더 잘 작동할 수 있음</li>
<li>한 가지 예로 BERT 융합 모델인데, 이는 vanila Transformer 모델의 각 인코더 및 디코더 레이어가 BERT의 output feature와 상호 작용하는 방법을 adaptively하게 제어하기 위해 multi-head attention 및 drop net을 채택</li>
<li>이 방법은 medium-resource 기계 번역 작업에서 BERT를 fine-tuning하고 naive feature기반 방법보다 더 잘 작동했기 때문에, 본 논문에서는 medium-resource G2P 시나리오에서 더 나은 결과를 달성하는 것을 목표로 GBERT를 transformer 기반 G2P model에 융합하도록 조정</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/76b2cd6c-67f6-4869-ac7c-eb57477097c3/image.png" alt=""></p>
<ul>
<li>Fig 2는 원래 BERT-fused 모델에서 GBERT가 BERT를 대체</li>
<li>GBERT-fused model은 GBERT 외에 L encoder layer와 L decoder Layer로 구성</li>
<li>I번째 인코더 계층의 경우, 입력은 (I-1)번째 인코더 계층의 출력 (또는 I=1일 때 grapheme sequence의 임베딩)과 GBERT에서 제공하는 문맥 grapheme representation이 포함</li>
<li>I번째 디코더 레이어의 경우, 입력에는 (I-1)번째 디코더 레이어의 hidden state, 마지막 인코더 레이어의 출력 및 GBERT의 문맥 grapheme representation을 포함</li>
<li>특히, 각 인코더 계층에서, 이 계층이 GBERT representation과 상호 작용하는 방식을 adaptively하게 제어하기 위해 원래 Transformer encoder layer에 추가적인 GBERT Enc attention module이 추가</li>
<li>각 디코더 계층에는 유사한 목적을 위한 GBERT-Dec attention module이 있음</li>
<li>또한 drop net은 network 학습을 정규화하는데 사용되며, 학습 중에 두 입력 또는 평균 결과 중 하나를 출력하고 추론 중에 평균 결과를 출력</li>
</ul>
<h1 id="3-experiments">3. Experiments</h1>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/283726fd-fbc1-4d22-b22e-0b047330bdfa/image.png" alt=""></p>
<h2 id="31-datasets">3.1 Datasets</h2>
<ul>
<li>SIGMORPHONE 20201 G2P 작업의 데이터셋</li>
<li>official baseline의 G2P 성능에 따라 SIGMORPHONE 2021의 medium-resource 하위 작업에서 10개 언어 중 가장 어려운 4개 언어(즉 WER이 가장 높은 언어)가 선택</li>
<li>표 1에 나열된 것처럼, 이들은 서로 다른 언어 계열에 속하며 다른 스크립트 유형을 가지고 있음</li>
<li>official setting에선 각 언어에 대한 학습, 검증, 및 테스트를 위해 8000, 1000, 1000 발음 기록이 사용</li>
<li>한글 자모를 사용하여 single-sound 문자로 분해 (예: 가감-&gt;ㄱ ㅏ ㄱ ㅏ ㅁ)</li>
</ul>
<ul>
<li>이 네가지 데이터셋을 기반으로 medium-resource G2P 작업과 low-resource G2P 작업 설계</li>
<li>중간 리소스는 학습, 검증, 테스트는 공식 설정과 동일</li>
<li>low-resource task의 경우 원래 학습셋에서 1000개를 무작위로 샘플링하여 각 언어에 대해 더 작은 학습셋을 만들고 원래 validation, test셋에 사용</li>
<li>따라서 이 두작업의 테스트셋 성능을 직접 비교</li>
</ul>
<ul>
<li>또한 각 언어에 대한 단어 목록은 GBERT 사전 학습을 위해 WikiPron에서 수집</li>
<li>G2P 작업의 검증 및 테스트셋의 단어는 제외되었고 Table 1의 4개 언어에 대한 최종 단어 목록은 각각 27000, 35000, 43100, 14100 단어를 포함</li>
<li>각 언어에 대해 단어의 90%는 단일 GBERT를 학습하는데 사용되었고 나머지 10%는 validation에 사용</li>
</ul>
<h2 id="32-implementation">3.2 Implementation</h2>
<ul>
<li>각 언어의 GBERT는 6-layer Transformer encoder</li>
<li>사전 학습 GBERT의 경우 단어의 마스크된 grapheme 비율은 20%로 설정했는데, 짧은 단어에서 마스크된 grapheme가 충분히 있을 것으로 예상해서 BERT의 마스킹된 단어의 비율(15%)보다 높음</li>
<li>각 언어의 검증셋에 대한 사전 학습된 GBERT 모델을 평가한 결과, masked grapheme의 예측 정확도는 각각 53.48%, 58.43%, 80.66%, 40.63%</li>
<li>단어와 grapheme 문맥적 관계를 보여주는 무작위 예측의 정확도(~2%)보다 모두 훨씬 높음</li>
</ul>
<p><strong>Imitation Learning</strong>
이 베이스라인 모델은 모방학습으로 명시적 edit action을 통해 작동하는 neural transducer를 채택했으며, SIGMORPHON 2020 G2P 작업에서 Transformer 모델과 유사한 성능 달성
중간 리소스 G2P 작업에 대한 IL 모델의 논문에 단일 모델 결과와 비교</p>
<p><strong>Transformer</strong>
이 베이스라인 모델은 Transformer 기반 아키텍처를 채택했으며 이전 작업에 따라 구현
모델 hyperparameter는 다른 언어의 다른 작업에 맞게 조정</p>
<p><strong>GBERT w/o fine-tuning</strong>
2.2절에서 제안한 방법, 다른 모델 파라미터 튜닝시 GBERT의 파라미터 고정(frozen)</p>
<p><strong>GBERT fine-tuning</strong>
2.2절에서 제안한 방법
이전 연구와 마찬가지로, 사전 학습된 GBERT 인코더와 fine-tuning할 때 랜덤하게 초기화된 Transformer decoder에 서로 다른 learning rate 사용
1e-3, 5e-4, 3e-4, 1e-4, 1e-5 중에서 선택</p>
<p><strong>GBERT attention</strong>
2.3절에서 제안된 방법, 기본 transformer model과 동일한 hyperparameter를 가짐</p>
<h2 id="33-evaluation-metrics">3.3 Evaluation Metrics</h2>
<ul>
<li>WER, PER 사용</li>
<li>WER은 예측된 phoneme sequence가 gold reference와 동일하지 않은 단어의 백분율</li>
<li>PER은 예측 phoneme sequence와 reference phoneme sequence 사이의 Levenshtein 거리의 합을 테스트셋 기준 길이의 합으로 나눔</li>
<li>WER 및 PER가 낮을 수록 성능 향상</li>
<li>다른 random seed를 사용해 각 실험을 5번 수행했고 각 모델에 대한 5개 결과 평균과 표준편차</li>
<li>IL 모델의 결과는 인용, 저자들은 10번 반복 사용</li>
<li>그래서 표준 편차는 다른 모델과 비교X</li>
</ul>
<h2 id="34-results">3.4 Results</h2>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/4681582a-74ec-478d-8fc3-b26302987189/image.png" alt=""></p>
<ul>
<li>Table 2는 중간 자원 및 저자원 G2P 작업에 대한 다양한 모델의 WER 및 PER 결과를 보여줌</li>
<li>우리가 구현한 Transformer baseline은 네덜란드어(Dutch)의 중간 리소스 작업에서 IL baseline은 능가했지만 다른 세 언어에선 IL보다 우수X</li>
<li>GBERT w/o fine-tuning은 거의 모든 실험에서 transformer보다 성능이 떨어짐 특히 한국어</li>
<li>이는 사전 학습된 GBERT에서 파생된 grapheme representation이 G2P 변환에 필요한 모든 정보를 제공X</li>
</ul>
<ul>
<li>중간 리소스 G2P 작업에서 GBERT fine-tuning model은 4개 언어 모두에 대해 미세 조정하지 않은 모델보다 훨씬 우수, 한국어를 제외한 모든 언어에 대해 Transformer baseline보다 낮은 WER 및 PER 달성</li>
<li>GBERT attention model은 모든 언어에 대한 5개 모델 중에서 가장 낮은 WER과 PER</li>
<li>이 모든 결과는 중간자원 G2P 작업을 위해 GBERT를 fine-tuning하거나 GBERT를 Transformer에 fusing하는 제안된 방법의 효율성 보여줌</li>
<li>GBERT attention model도 GBERT w/o fine-tuning model과 마찬가지로 GBERT를 feature extractor로 채택했지만, GBERT representation 뿐만 아니라 Transformer 기반 G2P model의 원래 입력도 attention module에 활용된다는 장점</li>
</ul>
<ul>
<li>저자원 G2P 작업에선 중간자원 시나리오에 비해 모든 모델의 성능이 크게 감소하여 SOTA G2P 모델에 학습 데이터의 양이 중요함</li>
<li>GBERT fine-tuning model은 4개 언어 모두에 대해 GBERT w/o fine-tuning 모델을 능가했으며 한국어를 제외한 모든 언어에 대해 Transformer baseline보다 우수한 성능</li>
<li>그러나 GBERT attention model은 Serbo-Croatian 및 불가리아어(Bularian)에 대해서만 Transformer baseline 보다 우수한 성능을 보였고, 네덜란드어, Serbo-Croatian 및 불가리어에 대해서는 GBERT fine-tuning model 만큼 좋진 않음</li>
<li>이러한 결과는 GBERT를 Transformer에 fusing하는 방법이 모델 구조가 복잡하기 때문에 GBERT를 미세 조정하는 방법보다 학습 데이터의 양에 더 민감</li>
<li>제안 방법이 저자원 G2P 작업에서 한국어에 대해 만족스러운 성능을 달성하지 목한 이유는 3.2절에서 보듯이 한국어의 마스크 예측 정확도가 다른 3개 언어보다 훨씬 낮았기 때문. 즉, 한국어의 grapheme간의 문맥 관계가 다른 3개 언어보다 약했기 때문</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/37bef1f6-c132-4474-8acf-f2af7f14799f/image.png" alt=""></p>
<ul>
<li>GBERT의 사전 학습을 위한 masked grapheme 비율이 성능에 미치는 영향을 조사하기 위해 추가 실험</li>
<li>중간 자원 네덜란드어 G2P 작업에 대한 GBERT attention model을 예로 들었으며, 결과는 Table 3</li>
<li>마스크 비율(20%, 30%)이 높을 수록 BERT의 원래 비율인 15%보다 낮은 WER및 PER 달성</li>
<li>한 가지 가능한 이유는 한 단어의 평균 grapheme수가 평균 단어 수보다 훨씬 적고 grapheme space가 word space보다 훨씬 더 작기 때문</li>
<li>따라서 낮은 마스크 비율은 모델이 grapheme 간의 문맥적 관계를 발견X</li>
</ul>
<h2 id="35-gbert-based-transfer-learning-for-g2p-conversion">3.5 GBERT-based Transfer Learning For G2P Conversion</h2>
<ul>
<li>저자원 G2P작업의 성능을 향상시키기 위해 고자원 언어의 G2P 데이터를 사용하는 GBERT 기반 transfer learning 실험 수행</li>
<li>저자원 언어로 네덜란드어를, 고자원 언어로 영어를 선택했는데, 이는 같은 게르만어족에 속하고 같은 라틴어 문자 유형을 가지고 있어서</li>
<li>영어의 supervised training data는 SIGMORPHON 2021 task의 고자원 하위 작업에서 33,344개의 단어-발음 쌍 포함</li>
</ul>
<ul>
<li>먼저, bilingual GBERT는 WikiPron의 49100개의 영어 단어와 3.1절에서 언급된 네덜란드어 단어 목록을 혼합하여 사전 학습</li>
<li>BERT의 변형에 따라, 다른 언어를 구별하기 위해 GBERT의 입력 토큰에 언어 임베딩 추가</li>
<li>그런 다음 영어와 네덜란드어의 supervised training data를 사용해 neural G2P model 구축</li>
<li>이전 연구에 이어 언어 태그가 붙은 단어가 모델 입력에 사용</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/c8873ba7-3310-4a9a-8429-7ea5562ba439/image.png" alt=""></p>
<ul>
<li>Table 4와 Table 2의 저자원 결과를 비교하면, transfer learning 후 모든 시스템의 WER 및 PER이 크게 저하</li>
<li>Table 2의 저자원 결과와 달리, GBERT attention model은 네 가지 모델 중 가장 낮은 WER와 PER 달성</li>
<li>이는 GBERT attention model이 유사한 고자원 언어에서 증간된 학습 데이터의 이점을 얻을 수 있으며 제안된 GBERT 기반 방법도 transfer learning 학습 전략과 결합하면 더 나은 성능</li>
</ul>
<h1 id="4-conclusion">4. Conclusion</h1>
<ul>
<li>본 논문에선 contextual grapheme representation을 출력하는 사전 학습된 grapheme model GBERT 제안</li>
<li>GBERT의 학습엔 쉽게 접근할 수 있는 단어 리스트만 필요</li>
<li>또한 GBERT를 사용해 SOTA Transformer 기반 G2P model을 향상시키기 위해 GBERT를 fine-tuning하고 GBERT를 Transformer에 fusing하는 두 가지 방법 개발</li>
<li>SIGMORPHON 2021 G2P 작업의 네덜란드어, 세르보-크로아티아, 불가리아, 한국어 데이터셋에 대한 실험은 GBERT를 fusing하는 방법이 중간 자원 G2P 작업에서 모든 언어의 WER 및 PER을 줄일 수 있는 반면 fine-tuning 방법은 저자원 G2P 작업에서 대부분 언어의 G2P 성능 향상</li>
<li>앞으로 개로운 아키텍처와 loss function을 개발하고 구문 수준 또는 문장 수준의 학습 데이터를 활용해 사전 학습된 grapheme model 개선할 계획</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰]Ensemble Self-Training for Low-Resource Languages:
Grapheme-to-Phoneme Conversion and Morphological Inflection]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0Ensemble-Self-Training-for-Low-Resource-LanguagesGrapheme-to-Phoneme-Conversion-and-Morphological-Inflection</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0Ensemble-Self-Training-for-Low-Resource-LanguagesGrapheme-to-Phoneme-Conversion-and-Morphological-Inflection</guid>
            <pubDate>Thu, 12 Jan 2023 03:34:08 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<ul>
<li>우리는 최적의 앙상블을 학습하고 검색하는 반복적인 데이터 증강 프레임워크를 제시하고, 동시에 self-training 스타일로 새로운 학습 데이터에 주석을 달았음</li>
<li>이 프레임워크를 두 개의 SIGMORPON 2020 shared task에 족용: G2P변환과 morphological inflection</li>
<li>우리 시스템이 특히 저자원 언어에서 잘 작동함</li>
</ul>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>세계 대부분의 언어는 자연어 처리 모델을 학습하는 데 사용할 수 있는 주석이 달린 데이터셋이 거의 없음</li>
<li>저자원 언어를 다루는 것은 NLP 많은 관심</li>
<li>주석을 얻기 어려울 때, 데이터 증강은 강력한 모델에 합리적인 품질로 학습 데이터 크기를 늘리는 일반적인 관행</li>
<li>예를 들어 Anastasopoulos and Neubig의 data hallucination 방법은 morphological inflection data를 증강시키기 위해 존재하지 않는 &quot;단어&quot;를 자동으로 생성해 생성 모델의 레이블 편향 문제 완화</li>
<li>그러나 이러한 방법으로 생성된 데이터는 모델을 정규화하는데 도움이 될 뿐, 유효한 언어 단어로 볼 수 없음</li>
<li>아키텍처를 변경하지 않고 모델 성능을 향상시키기 위해 일반적으로 사용되는 또 다른 방법은 데이터 증강 방법과 직교하는 앙상블. 즉, 동일한 종류의 여러 모델을 학습시키고 다수결에 의해 출력을 선택</li>
<li>앙상블 성공의 키는 기본 모델의 다양성으로 나타남. 서로 다른 귀납적 편향을 가진 모델이 동일한 실수를 저지를 가능성이 낮아서</li>
<li>본 연구에서 최적의 앙상블을 검색하고 레이블이 지정되지 않은 데이터에 주석을 추가하는 프레임워크를 개발</li>
<li>제안하는 방법은 여러 다른종류들로 이루어진 모델의 앙상블을 사용해서 앙상블의 동의를 기반으로 레이블이 지정되지 않은 데이터를 선택하고 주석을 달고 주석이 달린 데이터를 사용해 새 앙상블의 잠재적 멤버인 새 모델을 학습하는 반복 프로세스</li>
<li>앙상블은 검증셋의 정확도를 최대화하는 모든 학습된 모델의 하위 집합이며, 유전 알고리즘을 사용해 모델 조합 찾음</li>
<li>이 접근법은 self-training의 한 유형으로 볼 수 있지만, 한 모델의 신뢰도를 사용하는 대신 많은 모델의 합의를 사용해 새로운 데이터에 주석 달음</li>
<li>주요 차이점은 앙상블의 모델 다양성이 일반적인 self-training 접근법의 confirmation bias를 완화</li>
<li>공유 작업에서 중간 또는 대규모 학습 데이터가 있는 언어에서 데이터 증강 방법이 결과 크게 향상❌</li>
<li>리소스가 적은 언어에는 데이터 증강의 이점이 두드러짐</li>
</ul>
<hr>
<h2 id="gagenetic-algorithm"><strong>GA(Genetic Algorithm)</strong></h2>
<p>출처: <a href="https://techblog-history-younghunjo1.tistory.com/92">https://techblog-history-younghunjo1.tistory.com/92</a>
GA: 생물체가 환경에 적응하면서 진화해나가는 모습을 모방한, <U>파라미터의 최적화 문제</U>를 풀기 위한 방법
<img src="https://velog.velcdn.com/images/jukyung-j/post/2f9434af-1b1b-4ed0-bcf7-37b24c5350dc/image.png" alt=""></p>
<ul>
<li>염색체(Chromosome): <U>여러개의 유전자를 담고 있는 하나의 집합</U>. 하나의 해(파라미터)를 표현</li>
<li>유전자(Gene): <U>염섹체를 구성하고 있는 요소</U>로서 하나의 유전 정보 나타냄
예를 들어 특정한 염색체가 [A,B,C,D]라고 정의되면 해당 염색체의 유전자는 A,B,C,D 4개 유전자</li>
<li>자손(Offspring): 특정 시간(t)에 존재했던 염색체들(ex. A,B 두 개 염색체 있다고 가정)로부터 생성된 <U>새로운 염색체들(C,D라고 가정)</U>. C, D는 A, B 염색체들의 자손. 자손 염색체는 부모 염색체의 비슷한 유전 정보 가짐</li>
<li>정확도(Fitness): 특정한 염색체가 갖고 있는 고윳값, 특정한 염색체가 표현하는 파라미터가 해결하려는 문제에 대하 <U>얼마나 적합한지</U> 나타냄.
<img src="https://velog.velcdn.com/images/jukyung-j/post/05c45c02-71a5-45f2-85bf-1cd18c9c00f3/image.png" alt=""></li>
</ul>
<ol>
<li>초기 염색체 집합 생성</li>
<li>초기 염색체들에 대한 적합도 계산</li>
<li>현재 염섹체들로부터 자손염색체 생성</li>
<li>생성된 자손들의 적합도 계산</li>
<li>종료 조건 만족하는지 판별</li>
<li>종료 조건이 거짓인 경우 3번으로 이동해서 반복</li>
<li>종료조건이 참인 경우 알고리즘 종료</li>
</ol>
<p><strong><span style='color: #ffd33d'>1. 초기 염색체를 생성하는 연산</span></strong>
임의의 값으로 초기 염색체 생성</p>
<p><strong><span style='color: #ffd33d'>2. 적합도를 계산하는 연산</span></strong>
해결하려는 문제에 다라 다름</p>
<p><strong><span style='color: #ffd33d'>3. 적합도를 기준으로 자손 염색체를 선택하는 연산</span></strong>
적합도가 가장 높은 염색체를 선택하면 염색체의 다양성을 손상시켜 Global optimum을 찾기엔 부적합
<U>룰렛 휠 선택(Roulette Wheel Selection)방법</U> 이용
원판을 돌리면서 확률에 기반해 결과가 도출되는 룰렛의 개념과 비슷
<img src="https://velog.velcdn.com/images/jukyung-j/post/ebe33fa8-d031-4d88-9a66-1b89afe3c0d5/image.png" alt="">
<img src="https://velog.velcdn.com/images/jukyung-j/post/10521a59-7485-4fcf-9d3b-1ac0fe6b0619/image.png" alt="">
룰렛 그림에서 면적의 총합은 1(100%)</p>
<p>룰렛 휠 선택의 방법을 이용하게 되면 적합도가 높은 염색체가 룰렛에서 더 많은 비율의 면적을 차지해서 높은 적합도의 염색체가 선택될 확률이 높음.
동시에 염색체의 다양성을 훼손❌</p>
<p><strong><span style='color: #ffd33d'>4. 선택된 염섹체들로부터 자손 염색체들을 생성하는 연산</span></strong>
룰렛 휠 선택 방법으로 선정된 두 개의 부모 염색체들로부터 하나의 자손 염색체 생성
<U>GA에서는 자손 염색체를 생성하는 연산으로서 주로 Crossover이라는 연산 사용</U></p>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/4dce9abf-a88e-48ba-81a2-67e92cdeb0d5/image.png" alt="">
다음은 두 개의 염색체들로부터 두 개의 division point(crossover point)를 임의로 설정하고 두 개의 자손 염섹체를 생성</p>
<p><strong><span style='color: #ffd33d'>5. 돌연변이 연산</span></strong>
룰렛 휠 선택을 통해 <U>Crossover연산만을 사용하면 Local optimum엥 빠지는 문제 발생</U>
이러한 문제를 피하기 위해 자손 염색체에 0.1%나 0.05%등의 낮은 확률로 돌연변이 연산을 추가적으로 적용.
몇 가지 방법 살펴보면
<img src="https://velog.velcdn.com/images/jukyung-j/post/bf448160-6550-46f1-a48d-6fbf2429de8a/image.png" alt="">
binary 값인 <U>0과 1에서 0을 1로, 또는 1을 0으로 바꿔주는 reverse 방법</U>
<U>임의의 두 개의 유전자를 선택해 서로의 위치를 바꾸는 exchange방법</U>
<img src="https://velog.velcdn.com/images/jukyung-j/post/b403da3e-e1d1-4186-b0dc-b935606e3fb6/image.png" alt="">
<U>가우시안(정규분포) 연산 적용</U>
가우시안 연산은 값이 작은 값들을 가장 likely하게 만들고 자주 generate하게 만들며 반면에 값이 큰 값들은 거의 generate되지 않도록 해주며 편차를 이용해 계산
<U>다른 돌연변이 연산 방법보다 알고리즘 종료 조건(기준=criteria)에 converge하는데 더 효율적인 방법</U></p>
<hr>
<h1 id="2-ensemble-self-training-framework">2. Ensemble Self-Training Framework</h1>
<h2 id="21-general-workflow">2.1 General Workflow</h2>
<ul>
<li>필요한 구성 요소는 하나 이상의 기본 모델 유형과 레이블이 지정되지 않은 대량의 데이터가 포함</li>
<li>이상적으로, 기본 모델은 합리적인 성능으로 간단하고 신속하게 학습해야 하며 가능한 다양해야 함. 즉, 아키텍처가 다른 모델이 random seed가 다른 동일한 아키텍처보다 낫다</li>
</ul>
<h2 id="22-ensemble-search">2.2 Ensemble Search</h2>
<ul>
<li>여러 다른 종류들로 이러진 앙상블 검색을 위해 유전 알고리즘 사용</li>
<li>preliminary 실험에서 유전 알고리즘은 random sampling이나 모든 모델을 사용하는 것보다 일관되게 더 나은 앙상블을 찾음</li>
<li>이진 인코딩을 사용해 앙상블 조합(유전 알고리즘에서 개별료 표시)을 나타내며, 각 비트는 특정 모델을 사용할지 여부</li>
<li>앙상블의 예측 정확도를 최대화하는 것을 목표로 하기 때문에 개별 fitness 점수를 개별적으로 나타내는 앙상블에 의한 검증 셋에 대한 정확도로 개인의 fitness 점수 정의</li>
</ul>
<h2 id="23-data-selection-and-aggregation">2.3 Data Selection and Aggregation</h2>
<ul>
<li>각 반복에서, 현재 최적의 앙상블을 사용해 새로운 데이터 배치를 예측하고, 다음 반복에서 모델을 학습할 추가 데이터로 하위 집합 선택</li>
</ul>
<p>새로운 데이터 선택 고려해야할 두 가지 주요 원칙</p>
<ol>
<li>정확할 가능성이 더 높기 때문에 모델 간에 더 높은 일치도를 보이는 인스턴스를 선호</li>
<li>만장일치 동의가 있는 사례는 사소한 것일 수 있으며 모델을 학습시키는데 더 많은 새로운 정보를 제공하지 않음</li>
</ol>
<h1 id="3-grapheme-to-phoneme-conversion">3. Grapheme-to-Phoneme Conversion</h1>
<h2 id="31-task-and-data">3.1 Task and Data</h2>
<ul>
<li>전처리로서, 일본어와 한국어의 스크립트를 로마자로 표기</li>
<li>그 이유는 일본어 히라가나와 한글은 모두 음절문자로 하나의 grapheme이 일반적으로 여러 개의 phonemes에 해당하며 로마자로 표기함으로써 (1) 알파벳 크기를 줄이고 (2) 원어와 타깃의 길이를 1:1에 가깝게 하여 정렬 품질 향상</li>
</ul>
<h2 id="32-models">3.2 Models</h2>
<ul>
<li>네 가지 다른 유형의 기본 모델 사용</li>
<li>첫 유형은 pair n-gram 모델을 기반으로의 Finite-State-Transducer(FST) baseline</li>
<li>다른 세 가지 유형은 모두 Seq2Seq 모델의 변형, 동일한 BiLSTM 인코더를 사용해 입력 grapheme 시퀀스를 인코딩</li>
<li>첫 모델은 vanilla Seq2Seq 모델로, 디코더는 인코딩된 입력에 attention하고 attended input vector를 사용해 output phonemes 예측</li>
<li>두 번째는 hard monotonic attention model(mono)로, 디코더는 포인터를 사용해 입력 벡터를 선택해 예측 : phoneme을 생성하거나 포인터를 다음 위치로 이동</li>
<li>세 번째 모델은 본질적으로 hard monotonic attention 모델과 tagging model(태그)의 혼합. 즉, 각 grapheme에 대해 정렬된 짧은 phonemes 시퀀스 에측</li>
<li>학습을 위해 동일한 monotonic 정렬에 의존</li>
</ul>
<hr>
<p><strong>Monotonic Alignment</strong>
n번째의 input에 대해 몇 번째의 Output을 주목해야하는지 계산하는 방식
Predictive Alignment: Decoder의 Hidden state를 Sigmoid 함수를 이용해 몇 번째 output을 주목해야 하는지 계산</p>
<p><strong>Monotonic Attention</strong>
멀리 떨어진 time step과의 attention weight 값을 인위적으로 낮춰줌</p>
<ul>
<li>self-attention weight:
<img src="https://velog.velcdn.com/images/jukyung-j/post/45ed5b0c-dd1d-40e7-afc7-51c2abf63bc0/image.png" alt=""></li>
<li>Monotonic Attention:
<img src="https://velog.velcdn.com/images/jukyung-j/post/d6f88530-dac6-4134-b1fa-383a3d53c783/image.png" alt="">
θ는 0보다 큰 learnabledecay rate parameter, $d(t, τ)$는 각각의 timestep t와 τ에 대한 거리를 재는 함수</li>
</ul>
<p>⇒ 모델이 단순히 현재 보는 문제와 이전 문제들 간의 유사도만 볼 뿐 아니라 이전 문제들과의 거리도 본다는 측면에서 유용</p>
<hr>
<h1 id="4-morphological-inflection">4. Morphological Inflection</h1>
<h2 id="42-models">4.2 Models</h2>
<ul>
<li>왼쪽에서 오른쪽, 오른쪽에서 왼쪽으로 생성 순서와 쌍을 이루는 두 가지 유형의 기본 모델만 구현</li>
<li>첫 유형은 soft attention이 있는 Seq2Seq 모델로, morphological tag를 인코딩하는데 추가 BiLSTM을 사용한다는 점을 제외하곤 G2P 변환 작업의 모델과 매우 유사.</li>
<li>두 번째 유형은 hard monotonic attention 모델로 이전과 유사하지만 Levenshtein edit script를 사용해 대상 시퀀스를 얻음</li>
<li>각 단게에서 모델은 알파벳의 문자를 출력하거나 현재 가르키는 입력 문자를 복사하거나 입력 퐃인터를 다음 위치로 이동</li>
<li>총 8개의 모델을 각 iteration마다 학습. 즉, 각 변형에 대해 다른 random sed를 가진 2개의 모델 학습</li>
</ul>
<h1 id="5-conclusion">5. Conclusion</h1>
<ul>
<li>self-training 프레임워크를 제시하고 두 가지 sequence-to-sequence 생성 작업에 적용: G2P, morphological inflection</li>
<li>앙상블을 최적화하고 활용해서 보다 신뢰할 수 있는 학습 데이터를 얻음으로써 향상된 self-training 방법을 포함하고 있으며, 이는 저자원 언어에서 이점을 보여줌</li>
<li>유전자 알고리즘을 사용한 최적의 앙상블 검색 방법은 다른 언어에 대한 다른 모델 아키텍처의 귀납적 편향을 쉽게 수용</li>
<li>미래의 잠재적인 방향으로, 주석자 작업량을 줄이기 위해, 즉 수정의 필요성을 최소화하기 위해 그럴듯한 예측을 제안함으로써 프레임워크를 능동 학습 시나리오에 통합할 수 있음</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰]DeepSPIN at SIGMORPHON 2020:
One-Size-Fits-All Multilingual Models]]></title>
            <link>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0DeepSPIN-at-SIGMORPHON-2020One-Size-Fits-All-Multilingual-Models</link>
            <guid>https://velog.io/@jukyung-j/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0DeepSPIN-at-SIGMORPHON-2020One-Size-Fits-All-Multilingual-Models</guid>
            <pubDate>Wed, 11 Jan 2023 07:26:04 GMT</pubDate>
            <description><![CDATA[<h1 id="abstract">Abstract</h1>
<ul>
<li>본 논문은 SIGMORMON 2020 shared task의 task 0과1에 대한 제출</li>
<li>모든 언어의 데이터에 대해 공동으로 학습하는 다국어 모델 제시</li>
<li>언어별 hyperparameter tuning❌, 모든 언어에 대해 동일한 모델 사용</li>
<li>기본 아키텍처는 entmax attention과 loss가 있는 sparse(희소) sequence-to-sequence 모델이며, 우리의 모델은 gradient-based 기술로 여전히 학습 가능하면서 희소(sparse)하고 local alignments(로컬 정렬)을 배울 수 있음</li>
<li>Task 1의 경우, RNN 기반 및 transoformer 기반 sparse model 모두에서 강력한 성능</li>
<li>Task 0의 경우, RNN 기반 모델을 별도의 모듈이 lemma와 inflection sequence를 인코딩하는 multi-enocder set-up으로 확장</li>
<li>우리 모델은 언어별 튜닝이 부족하지만 Task 0에서 공동 1위, Task 1에서 3위 차지<blockquote>
<p>inflection(굴절)
굴절 형태소(inflectional morpheme): 단어의 형태를 살짝 &#39;굴절&#39;한다는 의미
He likes to play soccer라는 문장에서 like 뒤에 -s가 굴절 형태소</p>
</blockquote>
</li>
</ul>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>G2P 변환 및 morphological inflection과 같은 문자 변환 작업은 많은 실제 응용 분야에서 중요</li>
<li>그러나 대부분의 세계 언어에 대한 레이블링된 데이터가 부족하기 때문에 딥러닝으로 학습하기 어려움</li>
<li>이런 상황에선 non-neural 방법을 사용하거나 데이터 희소성 문제를 개선할 수 있는 합성 데이터 생성이 일반적이지만 만족스럽지 않음</li>
<li>첫째, 이전 SIGMORPON shared task는 neural 방법이 적당한 양의 데이터가 있어도 non-neural들을 능가</li>
<li>둘째, 데이터 증강이 morphological inflection에 도움이 되는것으로 입증되었지만 데이터 증강 절차는 언어 구조에 대한 암묵적인 가정을 함 : 서양 언어에 효과가 있는 기술은: 중복, 모음 조화 또는 비연결 형태에 직면할 때 실패할 수 있음</li>
<li>라벨링된 데이터가 부족한 언어는 NLP 하기 어려움</li>
<li>공유 작업에 대한 제출은 세 번째 대안인 다국어 학습을 사용</li>
<li>다국어 학습은 정규화 역활을 해서 low resource setting 결과를 개선</li>
<li>여러 언어에서 동시에 우수한 성능을 발휘할 수 있기 때문에 산출되는 모델은 다양</li>
<li>이 기술이 G2P와 morphological inflection에 대한 학습 데이터 크기와 관계 없이 SOTA 단일 언어로 학습된 모델과 경쟁적이라는 것을 보여줌</li>
<li>이는 우리의 접근 방식이 튜닝 관점에서 상당한 단점이 있음에도 불구하고, 기존의 단일 언어 모델은 각 언어에 대해 hyperparameters를 개별적으로 조정할 수 있지만, 제출 내에서 각 언어에 대해 동일한 모델을 사용</li>
</ul>
<p>우리의 기여는 다음과 같음:</p>
<ul>
<li>gated sparse two-headed attention을 다시 구현하고 대규모 다국어 환경에 적용
softmax 대안으로 1.5-entmax와 sparsemax를 사용하여 제출
Task 0에선 공동 1등인데 다국어 모델은 우리 것이 유일</li>
<li>이전에 morphological inflection과 기계 번역에 사용된 srase seq2seq 기술이 다국어 G2P에도 효과적이라는 것을 보여줌</li>
<li>softmax 대체(1.5-entmax 또는 sparsemax)와 아키텍처(RNN 또는 Transformer)의 선택에 따라 다른 Task 1 제출</li>
<li>가장 좋은 모델은 WER에서 3위, PER에서 2위</li>
</ul>
<p>⇨ 낮은 확률값들을 0으로 만들어 계산의 필요성을 줄인다면, 크기가 증가하는 최신 모데들에서 보다 적은 계산량을 가질 수 있기에 Sparse attention제시</p>
<hr>
<p>출처 : <a href="https://silverstar0727.github.io/paper%20review/2020/11/06/adaptively_sparse_transformer(1)/">https://silverstar0727.github.io/paper%20review/2020/11/06/adaptively_sparse_transformer(1)/</a></p>
<p><strong>Sparse Attention</strong>
transformer의 Multi Head Attetnion의 Scaled Dot Product는 softmax 사용
softmax function은 exponential function에 대입한 값들의 결과라 0이 나올 수 없어서 확률이 적은 단어에 확실한 0의 attention score가 주어지지 못함
=&gt; softmax의 sparse한 버전으로, sparse한 데이터셋에 적용했을 때 좋은 성능을 보인 normalization 기법
<strong>Adaptively Sparse Attention</strong>
Sparse Attention이 softmax를 개선했지만 아직도 적으 확률들에게 0을 부여X,
특정 상황에 따라서는 적은 확률들이 많이 등장할 필요가 있기 때문에 Heads가 유연하고 상황에 맞도록 달라지는 문맥에 의존적인 Adaptively sparse attention제시
<img src="https://velog.velcdn.com/images/jukyung-j/post/7d03f8ba-2a75-4961-8c0d-8285b454ab8a/image.png" alt="">
sparse attention은 모든 heads에서 &#39;The&#39;, &#39;quick&#39;에 0의 확률 할당
adaptive span transformer는 이를 어느 정도 개선했지만, adaptively sparse attention이 헤드 별로 유연하게 적용</p>
<p>즉, attention score가 미미한 단어에게 확실하게 zero-weight을 받을 수 있도로 하는 activation function도입.
필요에 따라 spread-out이 요구될 때에는 softmax가 선택될 수 있도록 α-entmax를 채택해서 α값은 자동적으로 선택이 가능하도록</p>
<p><img src="https://velog.velcdn.com/images/jukyung-j/post/c9ebd30a-b6f9-4427-8cb6-1bd890caa47c/image.png" alt="">
α가 1~4일 때 α-entmax를 그래프로 확인
α값이 커질수록 sparsity해지고, 경사가 급해짐
α-entmax가 heads에 붙는데 기존 $Att(Q, K, V) = π(\frac{QK^T}{\sqrt{d}})V$에서 π를 α-entmax $(z_i)_j$ 로 치환</p>
<hr>
<h1 id="2-models">2. Models</h1>
<ul>
<li>모델의 공통된 주제는 softmax 대신 attention weight와 output distribution에 sparse 함수를 사용</li>
</ul>
<p>sparse function은 다음과 같은 motivation을 가짐:</p>
<ul>
<li><p>sparse attention은 이전에 morphological inflection에 대한 성공을 보여줌
dense sofmax와 달리 디코더가 각 time step에서 적은 수의 souce position에 attend할 수 있게 함
이전에는 문자 변환에 대한 hard attention이 잘 수행되었지만, 일반적으로 정교하고 느린 학습 절차
반면, sparse attention은 표준 seq2seq 모델에 사용되는 것 이상의 학습 기술 필요❌</p>
</li>
<li><p>sparse output distribution을 사용하면 probability mass이 소수의 가설에 집중
실제로, morphological inflection에 자주 발생하며, 때때로 beam search를 정확하게 만듬</p>
</li>
</ul>
<h2 id="21-entmax-and-its-loss">2.1 Entmax and its loss</h2>
<ul>
<li>sparse output layer가 있는 모델에 대한 중요한 점은 모델이 gold label에 확률을 0으로 할당할 때 cross entropy loss가 무한해지기 때문에 cross entropy loss로 학습❌</li>
<li>다행히 각 값 α에 대해 해당 loss function이 있음
<img src="https://velog.velcdn.com/images/jukyung-j/post/b460c97d-3c66-4af9-9372-c30e01b426fb/image.png" alt=""></li>
<li>$p^* := α-entmax(z)$이고 이것은 Fenchel-Young loss의 한 예</li>
</ul>
<h2 id="22-task-0-architecture">2.2 Task 0 Architecture</h2>
<ul>
<li>morphological inflection을 위해, gated attetnion이 있는 RNN 기반 2-encoder model 사용</li>
<li>이 모델에서, 두 개로 분리된 bidirectional LSTM은 lemma 문자 시퀀스와 inflectional tag 셋을 인코딩</li>
<li>unidirectional LSTM 디코더는 target 시퀀스를 생성</li>
<li>디코더는 별도의 attention 메커니즘이 각 인코데에 대해 독립적으로 context vector를 계산한다는 점을 제외하고는 input feeding이 있는 기존 RNN deocder와 유사</li>
<li>그런 다음 gate function은 두 context vector를 채움</li>
<li>sparse gate를 사용하여 모델이 각 time step에서 하나의 인코더 또는 다른 인코더를 완전히 무시할 수 있음</li>
<li>각 개별 attention head는 이중 선형 attention 사용</li>
</ul>
<h1 id="3-experiments">3. Experiments</h1>
<h2 id="31-preprocessing">3.1 Preprocessing</h2>
<p><strong>Task 1</strong></p>
<ul>
<li>학습에 앞서, 모든 언어의 grapheme 시퀀스에서 복합 문자를 분해</li>
<li>대부분의 언어에서 발음 구별 기호와 기본 문자를 별도의 토큰으로 나누는 것과 같음</li>
<li>한국어의 경우, 한글의 독특한 구조 때문에 큰 차이를 만듬</li>
<li>자모라고 불리는 한글의 개별 문자는 음절(syllables)을 나타내는 블록으로 구성</li>
<li>현대 한글은 40개의 자모를 포함하고 있지만, Korean phonotactics(한국어 음운론)에 의해 허가된 가능한 음절의 수는 훨씬 더 많음</li>
<li>결과적으로 한국어 학습 데이터의 naive 토큰화는 834개 유형의 vocabulary size를 제공하며, 그 중 30% 이상은 한번만 발생</li>
<li>자모 토큰화의 부족이 baseline의 한국어 성능 저하의 원인이라고 의심</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>