<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>lm_minjin.log</title>
        <link>https://velog.io/</link>
        <description>per ardua ad astra</description>
        <lastBuildDate>Mon, 20 Feb 2023 04:44:42 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>lm_minjin.log</title>
            <url>https://images.velog.io/images/lm_minjin/profile/fdebec5b-6769-43d9-ad70-8558875b296e/DSC04788.JPG</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. lm_minjin.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/lm_minjin" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[논문 리뷰] Toward Unifying Text Segmentation and Long Document Summarization]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Toward-Unifying-Text-Segmentation-and-Long-Document-Summarization</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Toward-Unifying-Text-Segmentation-and-Long-Document-Summarization</guid>
            <pubDate>Mon, 20 Feb 2023 04:44:42 GMT</pubDate>
            <description><![CDATA[<p>이 논문은 EMNLP2022에 게재된 논문으로, 모델에게 Text Segmenatation에 대한 정보를 학습하게 해 추출 요약의 성능을 높이는 방법을 제안하고 있습니다.</p>
<h3 id="abstract">Abstract</h3>
<ul>
<li>section segmentation이 문어 및 구어체 원문의 extractive summarization에서 하는 역할에 대해 연구</li>
<li>본 논문에서는  <strong>summarization과 segmentation을 동시에 수행</strong>하는 robust sentence representation에 학습할 뿐만 아니라 <strong>optimization-based regularizer</strong>을 요약 문장을 다양하게 선택하도록 함</li>
<li>과학 논문에서 강의 스크립트까지 다양한 데이터셋에 대해 모델의 성능을 평가</li>
<li>널리 사용되는 ROUGE등의 성능 지표에서 SOTA를 달성했을 뿐만 아니라 text segmentation을 같이 할 때 더 나은 cross-genre trasferabiity를 보임</li>
</ul>
<h3 id="introduction">Introduction</h3>
<ul>
<li><p>본 연구에서는 길이가 긴 문서(구어체, 문어체 모두)의 extractive summarization에 대해 초점을 두고 실험을 진행</p>
</li>
<li><p>또한, 요약 모델이 section boundaries를 예측하게 함으로써, 긴 문서 요약의 성능을 높이고자 함</p>
</li>
<li><p>현재 대다수의 요약은 section이 나눠져 있다는 가정 하에 written document에 집중하고 있지만, 이 방식이 spoken document에도 적용될 수 있는지는 의문</p>
<ul>
<li>1.5시간 비디오 강의의 경우 10000단어 이상의 스트립트를 가짐</li>
<li>또한, 스크립트의 경우 section이 나눠져 있지 않음</li>
<li>대신, so next we need to.. 와 같은 talking points의 연속으로 lecture content가 구성되어 있음</li>
<li>본 연구에서는 이와 같은 단서를 leverage해 spoken과 wrtten documents 둘다 요약을 잘하려 함</li>
<li>또한, 본 모델의 경우 동시에 2가지 task(summurization &amp; segmentation)을 하므로 robust sentence representation을 학습 + optimization-based framework를 통해 중요하고 다양한 문장을 선택하려 함</li>
<li>section의 boundary를 이미 아는 written document로 모델을 학습한 후에 이를 대본과 같은 spoken document에 적용(adapt)</li>
<li>요약에서 핵심은 다양한 내용의 중요한 토픽을 다 담는 것이 중요하므로, 이를 가능하게 하는 새로운 regularizer을 설계</li>
<li>데이터셋으로는 과학 기사부터 강의 대본까지 다양한 종류의 문서를 사용했으며, 각 데이터의 평균 길이는 3k-8k가량</li>
<li>실험 결과, 본 모델이 SOTA를 달성하였으며, segmentation을 같이 하는 것이 더 나은 transferability를 보임을 증명</li>
</ul>
<p>** contribution **</p>
<ol>
<li>written documenets에서 spoken transcript로 transferability할 수 있는 extractive long document summarization을 제안</li>
<li>segmentation과 summarization을 둘다 수행하므로 효과적인 문장 표현을 학습</li>
<li>공개적으로 이용하능한 summarization benchmark에서 SOTA를 달성</li>
<li>왜 segmentation이 장문의 extractive summarization에 도움이 되는지에 대한 일련의 실험을 진행</li>
</ol>
<h3 id="our-approach">Our Approach</h3>
<p><strong>Sentence represenstation</strong></p>
<ul>
<li>우선 N개의 문장을 갖는 document를 $\mathcal{D} = {s_1,s_2,...,s_N}$로 표현</li>
<li>우리의 목표는 N개의 문장 중에서 가장 중요한 정보를 가진 K개의 문장을 선택해 문서를 요약하는 것!
<img src="https://velog.velcdn.com/images/lm_minjin/post/a746f637-53d1-4308-95c8-82a628b08a47/image.png" alt=""></li>
<li>여기서 제안하는 모델을 Lodoss(Long document summarization with segmentation)이라고 표기</li>
<li>input document의 contextualized token embedding을 얻기 위해 dilated window attention버전의 Longformer을 사용<ul>
<li>여기서 사용한 Longformer는 최대 16K tokens을 처리할 수 있는 large position embedding matrix를 활용</li>
<li>본 논문에서는 32(bottom)에서 512(top)까지 window size를 바꿔가며 dilation을 사용</li>
</ul>
</li>
<li>Lodoss는 Longformer위에 2개의 레이어로 이루어진 inter-sentence Transformers를 쌓음</li>
<li>각 문장의 시작과 끝에 [CLS], [SEP] 토큰을 추가</li>
<li>이 상태로 longformer에 태워서 각 문장 $s_i$에 대한 i번째 [CLS]토큰의 벡터를 representation으로 사용</li>
<li>document-level의 context를 얻기 위해, 이 벡터들에다가 sinusoidal position embedding을 더해 2개의 레이어를 가지는 inter-sentence Transformers에 태움</li>
<li>여기서 나온 output vector를 ${h_i}_{i=1}^N$으로 표기</br></li>
</ul>
</li>
<li><p><em>Summarization and Section Segmentation*</em></p>
<ul>
<li><p>Notation</p>
<ul>
<li>$y_{sum,i}=1$은 요약에 i번째 문장이 포함됨을 의미</li>
<li>$y_{seg,i}=1$은 i번째 문장이 section의 시작 혹은 끝임을 의미<ul>
<li>보통 section의 시작 혹은 끝이 요약에서 중요한 문장이므로 이를 예측하는게 도움이 될거라 생각</li>
</ul>
</li>
<li>$\hat{y}<em>{sum,i}=\sigma(\mathbf{w}^T</em>{sum}\mathbf{h_i}+b_{sum})$</li>
<li>$\hat{y}<em>{seg,i}=\sigma(\mathbf{w}^T</em>{seg}\mathbf{h_i}+b_{sum})$
(즉, 둘다 문장 표현에 MLP 1 layer를 거쳐서 나온 확률값을 $\hat{y}$로 씀)</li>
</ul>
</li>
<li><p>본 논문에서의 기본 모델, <strong>&quot;Lodoss-base&quot;</strong>는 모델의 문장당 empirical cross-entropy를 최소화하도록 함
<img src="https://velog.velcdn.com/images/lm_minjin/post/a015d315-2abb-4e4c-a9ed-85446f548f0b/image.png" alt=""></p>
</li>
<li><p><strong>&quot;Lodoss-joint&quot;</strong>의 경우 기본 모델에 2가지 task를 동시에 수행하도록 각각의 Task에 대한 loss를 결합
<img src="https://velog.velcdn.com/images/lm_minjin/post/044f4f0b-5b34-4c39-9a5b-f7d70d351b32/image.png" alt=""></p>
</li>
</ul>
</li>
<li><p><em>A DPP Regularizer*</em></p>
</li>
<li><p>DPP는 문장들의 subset의 점수를 매기기 위한 probailistic measure를 정의</p>
</li>
<li><p>$\mathcal{y}={1,2,...,N}$은 $N$개의 문장을 가지는 ground set</p>
</li>
<li><p>추출 요약에 해당하는 subset $Y \subseteq \mathcal{Y}$의 확률은 아래와 같은 식으로 주어짐(det(.)은 행렬의 determinant를 의미)
<img src="https://velog.velcdn.com/images/lm_minjin/post/20db8f1d-a807-419b-8797-58787962ccd6/image.png" alt=""></p>
<ul>
<li>$L \in \R^{NxN}$ is a positive semi-definite matrix</li>
<li>$L_{ij}$는 문장 i와 j사이의 similarity를 가리킴</li>
<li>$L_{Y}$는 요약 문장들간의 유사도 행렬</li>
<li>$I$는 $L$과 같은 차원을 가지는 identity matrix</li>
</ul>
</li>
<li><p>L을 구축하기 위해 quality-diversity decomposition을 사용</p>
<ul>
<li>$L : L = diag(\mathbf{q}) \cdot \mathbf{S} \cdot diag(\mathbf{q})$<ul>
<li>$\mathbf{q} \in \R^{N}$은 문장의 퀄리티를 나타냄<ul>
<li>sentence quality score $q_i$ is given by $\hat{y}_{sum,i}$</li>
</ul>
</li>
<li>$S \in \R^{NxN}$은 문장쌍의 유사도를 나타냄<ul>
<li>sentence similarity score is defined by : $S_{i,j} = cos(\mathbf{h}_i, \mathbf{h}_j)=\frac{\mathbf{h}_i \mathbf{h}_j}{||\mathbf{h}_i|| \times ||\mathbf{h}_j||}$</li>
</ul>
</li>
<li>결국 $L$의 요소는 퀄리티<em>문장간유사도</em>퀄리티로 계산이 됨</li>
</ul>
</li>
</ul>
</li>
<li><p>DPP는 만약, 요약문이 중요하고 다양한 문장의 하위집합으로 이뤄져 있다면, 보상</p>
<ul>
<li>만약 두 문장 i,j로 이뤄진 요약문에서 i,j가 높은 퀄리티면서 서로 유사하지 않다면 확률 점수 $\mathcal{P}(Y={i,j})$는 높은 값을 가지게 됨</li>
<li>반대로, 요약에 동일한 문장이 2개 있다면, $det(L_{Y})$는 0이 됨</li>
</ul>
</li>
<li><p>DPP regularizer는 ground-truth extractive summary $Y&#39;$의 negative log-probability로 정의됨
<img src="https://velog.velcdn.com/images/lm_minjin/post/2d0f66a3-848f-4bed-8608-0b24512f7e8f/image.png" alt=""></p>
</li>
<li><p>본 논문의 최종 모델 <strong>&quot;Lodoss-full&quot;</strong>은 아래와 같은 loss function을 사용
<img src="https://velog.velcdn.com/images/lm_minjin/post/6d2c16c4-4678-40dd-ae25-7537e67f583e/image.png" alt=""></p>
<ul>
<li>여기서 $\beta$는 sentence-level cross-entropy loss와 summary-level의 DPP regularization의 균형을 맞추는 coefficient</li>
</ul>
</li>
</ul>
<h3 id="experiments">Experiments</h3>
<h4 id="datasets">Datasets</h4>
<ul>
<li><p>written documents</p>
<ul>
<li>scientific articles</li>
<li>사람이 쓴 요약문, top-level head로 나눠져 있는 section 존재</li>
<li>arXiv<ul>
<li>papers in the fields of mathematics, physics, astronomy, ...</li>
</ul>
</li>
<li>PubMed<ul>
<li>research artices and their abstracts on life sciences and biomedical topics</li>
</ul>
</li>
</ul>
</li>
<li><p>transcript documents</p>
<ul>
<li>VideoLectures.NET에 있는 강의들에 Speech-to-Text API를 사용해 데이터 구축</li>
<li>강의안과 스크립트를 시간 순서대로 맞춰서 정리하고, 대본에서 각 슬라이드 한장에 해당하는 부분이 section이 되고, 슬라이드에서 추출한 글을 정답 요약으로 사용</li>
</ul>
</li>
<li><p>Ground-Truth Labels</p>
<ul>
<li>$y_{sum,i}$에 대해 문서의 각 문장이 ORACLE 요약에 속하면 1 아니면 0으로 라벨링</li>
<li>ORACLE은 한 번에 한 문장씩 ROUGE-1과 2, F1의 평균을 향상시키는 문장을 더하면서 생성</li>
<li>ORACLE summaries는 추출 요약 모델의 낼 수 있는 최고 성능</li>
<li>Scientific paper의 경우 section이 나눠져 있으므로, section의 처음이나 마지막 문장에 해당하는 경우 $y_{seg,i}=1$로 아니면 0으로 라벨링</li>
<li>lectures의 경우, 모든 스크립트가 강의안과 같이 정리되어 있으므로, 강의안으로 mini-section을 분리</li>
</ul>
</li>
<li><p>System predictions</p>
<ul>
<li>input document에서 K개의 고정된 수의 문장을 추출</li>
<li>K는 정답 요약문의 평균 문장 개수와 가깝게 선정<ul>
<li>PubMed는 7, arXiv는 5</li>
<li>lectures의 경우 3<h4 id="experimental-settings">Experimental Settings</h4>
</li>
</ul>
</li>
</ul>
</li>
<li><p>Adam optimizer</p>
</li>
<li><p>inital learning rate : $3e^{-5}$</p>
</li>
<li><p>8 NVIDIA Tesla P40 GPUs</p>
</li>
<li><p>models were trained on each dataset for 20 epochs</p>
</li>
<li><p>batch size of 8 with gradient accumulation every 4 steps</p>
</li>
<li><p>$\beta$ = 0.1</p>
</li>
<li><p>use FP 16 for all models, with the exception of the full model, it is used with FP3</p>
</li>
<li><p>use 4K input for all ablations to save computation unless otherwise noted(best results are with 16K)</p>
<h4 id="summarization-results">Summarization Results</h4>
</li>
<li><p><em>Baseline Systems*</em></p>
</li>
<li><p>extractive approach</p>
<ul>
<li>SumBasic : 빈도 높은 단어 가지면 중요한 문장으로 간주</li>
<li>LexRank : eigenvector centrality을 기반으로 중요 문장 측정</li>
<li>ExtSum-LG : 중요한 문장을 추출하기 위해 local과 global context사용</li>
<li>+RdLoss : 긴 글 요약에서 중복 방지 하기 위해 redundancy loss term 추가</li>
<li>Sent-PTR : 문장 추출을 위해 계층적 seq2seq sentence pointer model 사용</li>
</ul>
</li>
<li><p>abstractive approach</p>
<ul>
<li>Discourse : 문장 구조를 모델링하기 위해 hierarchical encoder + 요약 생성을 위해 attentive decoder를 사용</li>
<li>TLM-I+M : introductino section과 extracted sentence가 context로 주어지고, Transformer language model을 사용해서 논문 초록을 생성</li>
<li>BigBird : sparse attention과 windowed attention를 사용해서 긴 input sequences를 처리</li>
<li>HAT : 긴 문서를 요약하기 위해 encoder-decoder모델에 hierarchical attentino layers를 추가</li>
</ul>
</li>
<li><p><em>Results on Scientific Papers*</em></p>
</li>
<li><p>평가 지표로 ROUGE-1,2,L사용</p>
</li>
<li><p>Lodoss-base, using $\mathcal{L}_{sum}$</p>
</li>
<li><p>Lodoss-joint, using $\mathcal{L}<em>{sum}+\mathcal{L}</em>{seg}$</p>
</li>
<li><p>Lodoss-full, using $(\mathcal{L}<em>{sum}+\mathcal{L}</em>{seg}+\beta\mathcal{L}_{DPP})$
<img src="https://velog.velcdn.com/images/lm_minjin/post/eda48c1b-1cc3-41a2-8675-e3771bd7b069/image.png" alt=""></p>
</li>
<li><p>위의 장표를 보면 Lodossr계열 모델들의 성능이 여타 다른 abstractive, extractive baselines보다 더 뛰어난 것을 알 수 있음</p>
</li>
<li><p>LEAD의 경우 긴 문서에서는 뉴스에서처럼 극적인 성능이 나오지 않음</p>
</li>
<li><p>또한, approximate randomization method로 유의수준을 검정해본 결과, 99%의 신뢰수준에서 Lodoss계열 모델이 BigBird-base와 LED-4K보다 유의미하게 나음</p>
</li>
<li><p>Lodoss계열 모델들도 버전마다 성능 차이가 나는데 이는 section segmentation과 요약 수준의 DPP regularizer가 도움이 된다는 걸 가리킴</p>
</li>
<li><p>large encoder(&#39;-LG&#39;)는 둘 데이터셋 모두에서 큰 성능 향상을 보임</p>
</li>
<li><p><em>Results on Lecture Transcripts*</em></p>
</li>
<li><p>scratch부터 lecture transcripts를 사용해서 학습을 하거나 arXiv 또는 PubMed로 pretrain한 후에 fine-tune
<img src="https://velog.velcdn.com/images/lm_minjin/post/98ff4be4-1866-4b60-849d-b3b6f827a243/image.png" alt=""></p>
</li>
<li><p>jnt = Lodoss-joint, fll = Lodoss-full, sgl = single slide is a section, grp = six major sections per transcripts</p>
</li>
<li><p>written documents에 pretrain한 모델이 더 높은 성능을 보임</p>
</li>
<li><p>arXiv로 사전 학습한거보다 PubMed로 사전학습한 경우가 대다수의 모델에서 더 높은 성능을 보임</p>
</li>
<li><p>특히, 사전학습한 모델의 경우 Lo-joint-*모델이 높은 성능을 보임</p>
<ul>
<li>DPP가 효과가 없었던게 아니띾?</li>
</ul>
</li>
<li><p>transcript section에서 각각의 슬라이드를 section으로 볼지, 한 transcript마다 6개의 section이 있다고 여길지에 대해서도 실험</p>
<ul>
<li>전자는 한 document당 약 33개의 section이 존재</li>
<li>후자는 가장 거론되는 6개의 슬라이드를 찾고, 각 슬라이드의 시작 발화를 section의 시작으로 봄<ul>
<li>PubMed과 arXiv는 평균적으로 6.06, 5.68의 section을 가지고 있으므로, 이와 비슷하게 맞춰줌(사전학습하고 파인튜닝 할거니까)</li>
</ul>
</li>
<li>결론적으로, 6개의 section으로 나누는게 더 높은 성능을 보임</li>
</ul>
<h3 id="ablation-and-analyses">Ablation and Analyses</h3>
<p><strong>Effect of Summary Length</strong></p>
<ul>
<li>요약문의 길이(K)를 5,6,7로 설정해서 실험
<img src="https://velog.velcdn.com/images/lm_minjin/post/3e22ffe5-47b0-4492-9adb-3e66607a90a9/image.png" alt=""></li>
<li>위의 장표를 보면 Lodgoss-full모델이 꾸준히 다른 모델보다 높은 성능을 보임</li>
<li>PubMed에서는 7개의 문장으로 요약하는게 가장 높은 성능을 냈고, arXiv에서는 5개의 문장으로 요약하는 것이 가장 좋았음</li>
</ul>
</li>
<li><p><em>Effect of Source Sequence Length*</em>
<img src="https://velog.velcdn.com/images/lm_minjin/post/3e8646e7-b299-439d-8c5b-c0bcb83d9a99/image.png" alt=""></p>
</li>
<li><p>더 긴 source sequence를 사용할수록 더  높은 성능을 보임</p>
<ul>
<li>중요한 정보가 잘리니까(예를 들어, 4K면 arXiv input의 반이 날라감)</li>
</ul>
</li>
</ul>
<p><strong>Model&#39;s Performance on Section Segmentation</strong></p>
<ul>
<li>모델이 실제로 segmentation을 잘하는지 살펴보기 위해 WindowDiff지표를 사용<ul>
<li>WindowDiff : 2개의 sequence가 있을 때 한 구간 내의 같은 개수의 boundary가 있는지 확인. 다를 경우 count. 즉, WindowDiff가 높으면 각 구간에서 예측한 boundary개수가 많이 다르다는 것</li>
</ul>
</li>
<li>실험 결과, full model과 large pretrained model이 section boundaries를 더 잘 예측함
<img src="https://velog.velcdn.com/images/lm_minjin/post/ba335a3e-1a7c-4e2b-bc2a-7eb5b7d0af17/image.png" alt=""></li>
<li>또한, Section의 마지막 문장보단 첫번째 문장을 더 잘 예측함
<img src="https://velog.velcdn.com/images/lm_minjin/post/aa428f7a-5309-4258-bc89-25d182df9a57/image.png" alt=""></li>
</ul>
<p><strong>Effect of Our DPP Regularizer</strong></p>
<ul>
<li>위의 장표를 보면 요약당 평균 단어 수를 보여줌</li>
<li>이를 보면, Lodoss-full모델이 다른 모델보다 짧게 요약하면서도 높은 성능을 보임<ul>
<li>그렇게 뚜렷하다고는 생각 안함
<img src="https://velog.velcdn.com/images/lm_minjin/post/3e22ffe5-47b0-4492-9adb-3e66607a90a9/image.png" alt=""></li>
</ul>
</li>
</ul>
<p><strong>Why section Segmentation is Necessary</strong></p>
<ul>
<li>요약 문장들이 얼마나 자주 section boundaries근처에 발견되는지 조사</li>
<li>&quot;1&quot;은 요약 문장이 section의 첫번째 문장임을 가리킴</li>
<li>&quot;-1&quot;은 요약 문장이 section의 마지막 문장임을 가리킴</li>
<li>아래 장표를 보면, arXiv보단 PubMed에서 section의 첫번째나 마지막 문장이 요약인 경우가 많음<ul>
<li>arXiv의 경우 PubMed의 2배 길이라 요약 문장이 꼭 section boundaries에 있진 않음
<img src="https://velog.velcdn.com/images/lm_minjin/post/f3b6cd29-54e7-4370-b0d4-d6318d3d1630/image.png" alt=""></li>
</ul>
</li>
</ul>
<p><strong>Human Assessment of System Summaries</strong></p>
<ul>
<li>informativeness와 diversity를 중점으로 평가</li>
<li>Lodoss-joint와 Lodoss-full에 대해서만 평가</li>
<li>informativeness<ul>
<li>각각의 모델이 만드는 요약문들을 합쳐서 하나의 set으로 만듦</li>
<li>각 문장과 정답 요약문이 어느정도 관계가 있는지 1(worst)부터 5(best)점 사이의 점수를 매김</li>
<li>요약 문장들의 informativeness점수의 평균이 요약문의 점수가 됨</li>
</ul>
</li>
<li>diversity<ul>
<li>두 모델이 만든 요약문의 합집합에서 교집합을 뺌</li>
<li>사람에게 교집합과 위에서 만든 집합의 문장이 얼마나 다른지를 평가하게 함
(좋은 요약은 각각의 문장이 서로 유사하지 않은 내용을 가지고 있어야 한다고 가정)
<img src="https://velog.velcdn.com/images/lm_minjin/post/3e743065-a290-47f2-9055-02975878f296/image.png" alt=""></li>
</ul>
</li>
<li>평가 결과, Lodoss-full이 더 나은 relevancy와 diversity를 보임</li>
</ul>
<h3 id="concolusion">Concolusion</h3>
<ul>
<li>long document extractive summarization을 section segmentation과 sentence extraction을 합침으로써 해결하려 함</li>
<li>기존의 longformer + section segmentation + sentence extraction로 긴 글을 받아서 추출 요약함</li>
<li>여기에 DPP regularizer을 사용해서 보다 요약일 확률이 높으면서 다양한 문장을 선택하도록 함</li>
<li>실험 결과, 높은 성능을 보이고 spoken document에도 적용될 수 있음을 보임<h3 id="limitations">Limitations</h3>
</li>
<li>section boundaries를 사용할 수 없을 때, 모델이 의도한 대로 되지 않음</li>
<li>학습 모델은 pretrain할 때 쓴 데이터에 따라 inductive biases가 생길 수 있음</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Levenshtein Transformer]]></title>
            <link>https://velog.io/@lm_minjin/Levenshtein-Transformer</link>
            <guid>https://velog.io/@lm_minjin/Levenshtein-Transformer</guid>
            <pubDate>Tue, 24 Jan 2023 20:29:06 GMT</pubDate>
            <description><![CDATA[<ul>
<li>본 논문은 2019 NeurIPS에 실린 논문으로, 강화학습을 사용해 좀 더 flexible하고 amenable한 sequence를 생성하는 모델을 제안</li>
<li>token을 step-by-step으로 생성하는 것이 아니라, insertion 혹은 deletion을 사용해 현재 state를 수정하는 형식으로 generation을 하는 모델</li>
</ul>
<h2 id="introduction">Introduction</h2>
<ul>
<li><p>현재 decoding model의 lack of flexibility를 해결하기 위해 모델을 고안</p>
<ul>
<li>기존의 framework에서는 생성할 시퀀스의 길이를 고정하거나 decoding proceeds에 따라 step-by-step으로 시퀀스의 길이를 늘림</li>
<li>하지만, 사람이 글을 쓸 때를 생각해보면 한 번에 하나의 단어를 늘리는 것이 아니라 썼던 것을 다시 지우기도, 중간에 단어를 추가하기도 함
=&gt; 기존 방식은 human-level intelligence와 갭이 존재
==&gt; LevT에서는 이러한 갭을 줄이기 위해 기존의 decoding mechanism을 2가지 operation(insertion과 deletion)으로 바꿈!</li>
</ul>
</li>
<li><p>LevT를 imitation learning을 사용해 학습함</p>
<ul>
<li>sequence generation을 강화학습에 대입하여 expert model의 policy를 따라서 학습하는 방식</li>
<li>즉, decoder가 initial state가 low-quality generated sequence일 때 refinement model처럼 작동하면서 sequence를 생성
=&gt; 그래서 MT로 학습된 LevT모델을 바로 translation post-editing에 적용할 수 있음</li>
</ul>
</li>
</ul>
<p><strong>Contribution</strong></p>
<ul>
<li>insertion과 deletion으로 구성된 새로운 sequence generation model, Levenshtein Transforemer(LevT)를 제안</li>
<li>dual policy를 다루는 imitation learning의 framework을 기반으로 모델을 학습하는 learning algorithm을 제안</li>
<li>sequence generation과 refinement를 일원화한 최초의 모델</li>
</ul>
<h2 id="problem-formulation">Problem Formulation</h2>
<h3 id="sequence-generation-and-refinement">Sequence Generation and Refinement</h3>
<ul>
<li>sequence generation과 refinement문제를 Markov Decision Process(MDP)문제로 상정<ul>
<li>MDP는 $(\mathcal{Y,A,\varepsilon,R}, \mathbf{y_0})$로 구성<ul>
<li>$\mathcal{Y} = \mathcal{V}^{N_{max}}$ as set of discrete sequences up to length $N_{max}$ where $\mathcal{V}$ is a vocabuary of symbols</li>
<li>모든 decoding step마다 agent는 input $\mathbf{y}$를 받아서 action $\mathbf{a}$를 선택하고 reward $\mathbf{r}$을 얻음</li>
<li>일반적으로 $\mathcal{R(\mathbf{y})}=-\mathcal{D(\mathbf{y},\mathbf{y^*})}$으로 D는 distance measurement</li>
<li>agent는 policy $\pi$에 의해 모델링 됨<ul>
<li>$\pi : \mathcal{Y} \rightarrow P(\mathcal{A})$
(policy는 y를 A에 대한 확률 분포로 맵핑)<h3 id="actions--deletion--insertion">Actions : Deletion &amp; Insertion</h3>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>MDP formulation을 따라서, subsequence $y^k=(y_1, y_2,...,y_n)$에서 2가지 action을 사용해 $y^{k+1}=\mathcal{\varepsilon}(\mathbf{y}^k, \mathbf{a}^{k+1})$을 생성할 수 있음</li>
<li>여기서, $y_1$과 $y_n$은 special symbol $<s>$와$&lt;\s&gt;$로 설정<h4 id="deletion">Deletion</h4>
<ul>
<li>모든 토큰 $y_i \in \mathbf{y}$에 대해 deletion policy $\pi^{del}(d|i,\mathbf{y})$는 binary decision을 함(0이면 해당 토큰 삭제, 1이면 해당 토큰 유지)<h4 id="insertion">Insertion</h4>
</li>
<li>insertion의 경우 deletion과 달리 세부적으로 2단계, placeholder를 예측하는 단계와, token을 예측하는 단계로 나뉨</li>
<li>우선, $\mathbf{y}$에서 가능한 모든 inserteds slots $(y_i, y_{i+1})$에 대해, $\pi^{plh}(p|i,\mathbf{y})$는 몇 개의 placeholder가 추가할지에 대한 확률을 예측</li>
<li>이후 예측한 모든 placeholder에 대해서 token prediction policy $\pi^{tok}(t|i,\mathbf{y})$가 placeholder를 vocab에 있는 실제 token으로 교체</li>
</ul>
</li>
</ul>
<h4 id="policy-combination">Policy combination</h4>
<ul>
<li>sequence generation의 1 iteration을 3가지 단계로 분해할 수 있음 : delete tokens - insert placeholders  - replace placeholders with new tokens</li>
<li>the policy for one iteration is :
<img src="https://velog.velcdn.com/images/lm_minjin/post/7aeb1c22-ea29-490b-aa8e-3c046e88f108/image.png" alt=""></li>
</ul>
<h3 id="levenshtein-transformers">Levenshtein Transformers</h3>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/9e137250-4f3b-4248-adee-9800695f7338/image.png" alt=""></p>
<h4 id="policy-classifier">Policy Classifier</h4>
<ol>
<li><p>Deletion Classifier
: LevT가 boundaries를 제외한 모든 input token에 대해 각 토큰이 deleted될지 kept될지를 결정
<img src="https://velog.velcdn.com/images/lm_minjin/post/cf3e7e01-b18d-42e6-847a-ef677f501816/image.png" alt=""></p>
</li>
<li><p>Placeholder Classifier
: LevT가 모든 연속된 position pair에 대해서 몇개의 토큰이 inserted될 것인지를 결정
<img src="https://velog.velcdn.com/images/lm_minjin/post/37a9ef6e-f556-483b-9689-aada1ce87bce/image.png" alt=""></p>
</li>
</ol>
<ol start="3">
<li><p>Token Classifier
: LevT가 모든 placeholder에 대해서 채워넣을 토큰을 예측
<img src="https://velog.velcdn.com/images/lm_minjin/post/6c8ebebc-45dd-470f-be78-c5a8c6761705/image.png" alt=""></p>
<h4 id="weight-sharing">Weight Sharing</h4>
<ul>
<li>defalut implementation은 3가지 operation에 대해서 같은 Transformer backbone을 공유</li>
</ul>
<h4 id="early-exit">Early Exit</h4>
<ul>
<li>performance과 computational cost를 trade-off할 수 있게, 중간 단계의 블럭에 classifier를 붙여 early exit를 수행하는것 을 제안($\pi^{del}$과 $\pi^{plh}$에)
(마지막 h를 바탕으로 decision하는게 아니라 중간 레이어의 h를 바탕으로 decision할 수 있도록!)</li>
</ul>
</li>
</ol>
<h4 id="dual-policy-learning">Dual-policy Learning</h4>
<h5 id="imitation-learning">Imitation Learning</h5>
<ul>
<li><p>Levenshtein Transformer를 학습시키기 위해 imitation learning을 사용</p>
</li>
<li><p>expert policy $\pi^*$에서 끌어낸 행동을 agent가 따라하도록 함</p>
<ul>
<li>exper policy는 ground-truth target을 그대로 사용하거나, sequence distillation으로 필터링된 less noisy version을 사용</li>
</ul>
</li>
<li><p>다음 식을 최대화하도록 목적함수가 구성됨
<img src="https://velog.velcdn.com/images/lm_minjin/post/be36955a-342f-40f5-908e-59bc8adbd013/image.png" alt=""></p>
<ul>
<li><p>roll-in policy : 학습 동안 $\pi_{\theta}$에 주어지는 state distribtuion을 결정</p>
<ul>
<li>ground-truth에 noise를 더하거나 adversary policy에서 나온 결과값을 사용
<img src="https://velog.velcdn.com/images/lm_minjin/post/1ad8aef9-a25d-40c9-a83a-accdb66dae3a/image.png" alt=""> <img src="https://velog.velcdn.com/images/lm_minjin/post/6062d5ae-5011-4b8c-817f-7e3706b9a115/image.png" alt="">  <img src="https://velog.velcdn.com/images/lm_minjin/post/c02ed65d-8eb3-4612-8a4c-3826f73218c7/image.png" alt=""> (즉, insertion을 학습하기 위해 deletion을 적용하거나 ground-truth에서 랜덤하게 토큰을 삭제한 상태를 입력값으로 사용하고, deletion을 학습하기 위해 initial input혹은 insertion을 적용한 상태를 입력값으로 사용)</li>
</ul>
</li>
<li><p>즉, roll-in policy로 만든 state에서 expert의 action을 할 확률을 최대화하도록 함</p>
</li>
</ul>
</li>
</ul>
<h5 id="expert-policy">Expert Policy</h5>
<ul>
<li><p>imitation learning에서 사용할 export policy를 구축</p>
</li>
<li><p>본 논문에서는 2가지 종류의 expert를 사용</p>
<ol>
<li>Oracle : One way is to build an oracle which accesses to the ground-truth sequence. It returns the optimal actions $\mathbf{a}^*$
<img src="https://velog.velcdn.com/images/lm_minjin/post/dbe7b318-f3e7-4e48-809f-816c4ad52b66/image.png" alt=""></li>
<li>Distillation : 먼저 같은 dataset를 사용해서 auturegressive teacher model를 학습한 후 groud-truth sequence $\mathbf{y^*}$을 teacher-model의 beam-search결과인 $\mathbf{y}^{AR}$로 교체. 이후 1번과 같은 방법을 사용해 action 반환</li>
</ol>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/ca89e50f-0038-4768-96b3-a671a8b28a24/image.png" alt=""></p>
</li>
</ul>
<h4 id="inference">Inference</h4>
<p>  <img src="https://velog.velcdn.com/images/lm_minjin/post/d743895c-a745-4ec8-a255-2ef379ccf927/image.png" alt=""></p>
<ul>
<li><p>연속된 2개의 refinement iteration의 결과가 같거나 matimum number of iteration에 도달했을 경우 decoding을 멈춤</p>
<ul>
<li>&quot;empty&quot; placeholder의 경우 output을 짧아지게 할 수 있으므로 이에 대해 패널티를 부여(eq 4에서 0의 logit에 penalty term $\gamma \in [0,3]$을 뺌)</li>
</ul>
</li>
</ul>
<h3 id="experiments">Experiments</h3>
<ul>
<li><p>machine translation(MT), text summarization(TS), automatic post-editing(APE) for machine translatione에 대해 실험을 진행</p>
<h4 id="sequence-generation">Sequence Generation</h4>
</li>
<li><p>sequence generation의 관점에서 LevT를 평가</p>
</li>
<li><p>sequence generation은 empty $\mathbf{y}^0 = <S></S>$를 input으로 가정, initial deletion은 적용 X</p>
</li>
<li><p>dataset으로는 Ro-En(WMT&#39;16), En-De(WMT&#39;14), En-Ja(WAT2017 Smal-NMT)를 사용, 평가 지표로는 MT에선 BLEU를, TS에선 ROUGE-1,2,L를 사용
<img src="https://velog.velcdn.com/images/lm_minjin/post/55d7a624-87cb-4b46-aee1-812970881d17/image.png" alt=""></p>
<ul>
<li>전반적으로 Transformer에 견줄만한 성능을 내면서 훨씬 빠른 decoding 속도를 보임</li>
<li>LevT의 경우 보통 2번의 iteration이면 decoding이 끝나는 것을 볼 수 있음
<img src="https://velog.velcdn.com/images/lm_minjin/post/ea15fd69-5105-4fc9-974b-435c863243c4/image.png" alt=""></li>
<li>Figure 4a를 보면, monolingual corpus에 대한 input의 길이에 따른 iteration의 평균 횟수가 나타나 있음</li>
<li>Figure 4a에서 IT와 MaskT는 기존 refinement-based model의 성능을 보여줌</li>
<li>본 논문에서 제안하는 모델이 명시적으로 insertinon과 deletion을 구분하여 학습하기 때문에 refinement process를 학습하기 위해 유사한 denoising objective를 사용해도 타 모델들 보다 뛰어난 성능을 보임</li>
<li>Figure 4b를 보면, early exit를 넣었을 때의 속도 vs 성능 을 볼 수 있음(LevT(m-n) as a model with m and n blocks for deletion)
<img src="https://velog.velcdn.com/images/lm_minjin/post/9281da72-7cde-40a1-b89c-72f4837a8a8a/image.png" alt=""></li>
<li>Weight sharing했을 때의 결과가 Table 2a에, roll-in polices로 eq6(Ours)과 eq6에서 mixing하지 않은 버전(DAE)을 사용했을 때의 결과가 Table 2b에 나타나 있음(확실히 DAE가 deletion loss가 훨씬 적음)</li>
</ul>
</li>
</ul>
<h4 id="sequence-refinement">Sequence Refinement</h4>
<ul>
<li>dataset으로 크게 2가지를 사용<ul>
<li>기존의 MT dataset의 반을 바탕으로 MT systemt을 학습, 이후 나머지 반절을 바탕으로 MT모델이 낸 output을 input으로, ground-truth를 output으로 refinement model학습</li>
<li>real APE task에서는 WMT17 Automatic Post-Editing Shared Task에서 En-De의 데이터를 활용</li>
</ul>
</li>
<li>baseline모델에서는 source와 MT system의 output을 concat해서 encoding<ul>
<li>statistical phrase-based MT system과 RNN-based NMT system을 사용</li>
<li>BLEU scores와 멀 경우, translation error rate(TER)를 추가적으로 적용(APE literature에서 널리 사용되는 방식)
<img src="https://velog.velcdn.com/images/lm_minjin/post/2495c080-9d72-46d3-bea7-96a5ec9cb43e/image.png" alt=""></li>
</ul>
</li>
<li>Table3에서 do notiong은 원래 MT system의 output 결과를, scratch는 APE triple data에 대해 바닥부터 학습한 것을 의미, Zero-shot은 MT pre-trained LevT model에 바로 post-editing task를 적용한 것을 의미</li>
<li>((Underline은 뭐징 . . ? NMT는 RNN기반 모델이라면서 Transforemr는 또 뭐람. . .?))</li>
<li>실험 결과, 대부분의 경우에서 autoregressive Transformer보다 좋은 성능을 보임</li>
<li>하지만 do-nothing과 LevT의 성능 차는 미비..&#39;
<img src="https://velog.velcdn.com/images/lm_minjin/post/0ef47d6d-9a28-422e-a8b2-06b44abef459/image.png" alt=""></li>
<li>Figure 5를 보면 2번의 iteration으로도 높은 성능을 달성한다는 것을 볼 수 있음<ul>
<li>특히, oracle(e.g. human translators) 지시를 LevT가 얼마나 잘 적용하는지에 확인할 수 있음</li>
</ul>
</li>
</ul>
<h3 id="conclusion">Conclusion</h3>
<ul>
<li>insertion과 deletion을 기반으로 작동하는 neural generation model, Levenshtein Trnasformer를 제안</li>
<li>제안된 모델은 기존의 autoregressive model에 준하는 성능을 보이면서, 훨씬 빠른 decoding 속도를 보임</li>
<li>generation sequence와 refinement를 한 모델에서 구현할 수 있음을 보임</li>
<li>이 모델을 바탕으로 human-in-the-loop generation으로 확장할 수 있는 여지를 보임</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] A Contrastive Framework for Neural Text Generation]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-A-Contrastive-Framework-for-Neural-Text-Generation</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-A-Contrastive-Framework-for-Neural-Text-Generation</guid>
            <pubDate>Wed, 19 Oct 2022 08:23:26 GMT</pubDate>
            <description><![CDATA[<p>이 논문은 2022년 9월 26일에 올라온, 2022 NeurIPS에 accept된 논문입니다!</p>
<p>논문 리뷰에 너무 많은 시간이 걸리는거 같아서, 이번엔 motivation, proposed methods, experiment, conclusion형식으로 리뷰해보려고 합니다!</p>
<h3 id="motivation">Motivation</h3>
<ul>
<li><p>beam search와 같은 maximization-based decoding methods들이 질이 저하된 글을 생성하는 경향이 있음</p>
<ul>
<li>여기서 질이 저하되었다 == 자연스럽지 않으면서 바람직하지 못한 반복을 포함하고 있는 글!
ex) 나는 밥을 먹었다 먹었다 먹었다 . . . 이런 것!</li>
</ul>
<p>-
본 논문에서는 이러한 현상이 anisotropic distribution of token representations때문이라고 봄</p>
<ul>
<li>즉, 우리가 보통 사용하는 사전 학습된 언어 모델들이 내뱉는 token representation이 의미와 관계 없이 전반적으로 모두 유사하기 때문에, 이러한 현상이 발생한다고 봄
<img src="https://velog.velcdn.com/images/lm_minjin/post/83f9afe9-38c4-4948-9d94-0b048e2add2c/image.png" alt=""></li>
<li>위의 그림을 보면, 확실히 GPT-2를 거쳐서 나온 모델의 경우 토큰끼리의 유사도가 매우 높은 것을 볼 수 있음(토큰들이 밀집하게 representation됨 == anisotropy), 반면에 SimCTG로 추가 학습한 모델을 보면 토큰끼리의 유사도가 낮아진 것을 볼 수 있음</li>
<li>이렇게 토큰 유사도가 서로 높으면, 모델이 매 스텝마다 반복적으로 같은 토큰을 생성할 수 있어서 바람직하지 않음</li>
<li>반복되는 현상을 줄이기 위해선 생성된 글의  token similarity matrix의 sparseness가 보존되어야 함!
(+) 근데 이걸 입증하진 않음.. CL로 학습해서 개선되었다고 이러한 문제가 있어서 그런거라고 볼 수 있나?</li>
</ul>
</li>
</ul>
<h3 id="proposed-methods">Proposed methods</h3>
<ul>
<li><p>기존 연구 방향</p>
<ul>
<li>decoding strategy를 less like vocabualries에서 샘플링하는 것으로 수정
=&gt; 하지만 이 방식은 생성된 글이 원문(human written prefix)과 다르거나 모순되는 등의 sematic inconsistency문제가 발생
==&gt; 즉, 비교적 등장 확률이 낮은 토큰을 디코딩하기 때문에, 원문과 관련 없는 말을 할 확률이 높아짐</li>
<li>모델의 output vocabulary distribution을 unlikelihood training으로 수정<blockquote>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/dedeb47f-a280-4e14-84cb-358ea41a60f2/image.png" alt="">
(NEURAL TEXT DEGENERATION WITH UNLIKELIHOOD TRAINING 논문에서 발췌)</p>
<ul>
<li>위의 수식을 보면 $L_{UL}$을 줄이기 위해선 결국 $log(1-p_{\theta}(c|x_{&lt;t}))$를 줄여야한다.</li>
<li>여기서 $c$은 이전의 context tokens이므로, 직관적으로 위와 같은 이미 나왔던 토큰이 반복해서 나올 확률을 낮춰주는 역할!</li>
</ul>
</blockquote>
</li>
</ul>
</li>
<li><p>제안한 방법
: 모델이 discriminative and isotropic token representations를 학습하도록 하는 <strong>SimCTG(a simple contrstive framework for neural text generation)을 제안</strong></p>
<ul>
<li>loss function
<img src="https://velog.velcdn.com/images/lm_minjin/post/de613a51-74d5-43d9-a6b5-56263a37200d/image.png" alt=""><ul>
<li>loss function에 contrastive learning항을 추가</li>
<li>식을 살펴보면, <strong>같은 토큰과의 유사성은 높도록, 다른 토큰과의 유사성을 낮추도록 학습</strong>을 함</li>
<li>특히, $\rho$가 뜻하는 바는, 같은 토큰의 유사도와 다른 토큰의 유사도의 차이가 $\rho$만큼은 나야한다는 것</li>
<li>토큰 유사도는 코사인 유사도를 사용해서 계산</li>
<li>식을 유심히 보면 $s(h_{x_i}, h_{x_i})$라고 나와있는데, 같은 토큰과의 유사도이므로 정의에 의해 1이 됨
<img src="https://velog.velcdn.com/images/lm_minjin/post/5829fa72-2b91-4453-bd2a-d0c15a20b8e0/image.png" alt=""></li>
<li>전체 loss는 위와 같음. 기존의 언어모델에서 사용하던, 다음 토큰의 나올 확률에 대한 loss인 <strong>MLE loss와 새로 제안한 CL loss를 더하여 최종 loss로 사용</strong> <br><br></li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>SimCTG를 보완하는 decodig strategy, <strong>contrastive search</strong>를 제안<ul>
<li>각 decoding step에서 확률이 높은 후보 토큰들 중 생성된 글과 사람이 쓴 prefix사이의 의미적 일관성을 잘 유지하는 토큰을 선택</li>
<li>생성된 글의 sparseness of the token similarity matrix가 보존되도록 함</li>
<li>이 두 가지를 충족시켜서 생성된 글이 1) 더 의미적으로 prefix와 일관되도록 2) model degeneration을 피할 수 있음
<img src="https://velog.velcdn.com/images/lm_minjin/post/ae14ce88-4fb9-433a-8cdd-a83cdfd6a925/image.png" alt=""></li>
<li>V가 k번째 스텝에서의 후보 토큰 집합을 의미하는데, 이 식을 살펴보면 기존에 사용하던 이전 context가 주어졌을 때, 다음에 나올 토큰의 확률을 나타내는 model confidence항과 이번에 나올 토큰과 이전 step까지 나온 토큰의 유사도 중 최대값을 계산하는 degeneration penalty항이 존재</li>
<li>이전에 나온 토큰과 유사한 토큰이 나올 경우 패널티를 부여하는 것, 즉, 이전과 다른 discriminative한 v를 고르도록 유도</li>
<li>$\alpha$가 0일 경우 greedy search와 완전히 동일</li>
</ul>
</li>
</ul>
<h3 id="experiment">Experiment</h3>
<ul>
<li><p>Experiment setup</p>
<ul>
<li>Model and Baselines<ul>
<li>GPT-2를 제안된 objective function($L_{simCTG}$)를 사용해 fine-tuned</li>
<li>baseline의 경우 12개의 head를 가진 12개의 transformer layer를 가진 모델을 사용</li>
<li>다양한 decoding methods를 사용해서 글을 생성</li>
<li>MLE, SimCTG의 경우 학습시 Wikitext-103에 대해 40k training step만큼 학습시킴</li>
<li>unlikelihood base line의 경우 학습시 Wikitext-103에 대해 token-level unlikelihood objective에 대해 38.5k, sequence-level unlikelihood objective에 대해 1.5k training step만큼 학습시킴</li>
<li>decoding할 때, prefix의 길이를 32로, 생성하는 글의 max_len은 128로 제한</li>
<li>beam search의 경우 beam size 10으로 설정</li>
</ul>
</li>
<li>Evaluation Benchmark<ul>
<li>Wikitext-103 dataset에 대해 실험을 진행</li>
<li>Wikitext-103은 문서 단위의 데이터셋으로, large-scale language modeling의 평가에 널리 사용됨</li>
</ul>
</li>
</ul>
</li>
<li><p>Evaluation Metrics</p>
<ul>
<li><p>Perplexity : Wikitest-103에 대한 model perplexity(ppl)</p>
</li>
<li><p>Prediction Accuracy : 이전 토큰이 주어졌을 때, 다음에 나올 토큰을 맞추는지
<img src="https://velog.velcdn.com/images/lm_minjin/post/0354bbd4-da69-4f81-a7c3-63258c6c629e/image.png" alt=""></p>
</li>
<li><p>Prediction Repetition : 다음 토큰으로 이미 이전 step에 나온 말을 하는 정도를 측정
<img src="https://velog.velcdn.com/images/lm_minjin/post/10945059-c1ec-42c7-afa2-290f3751f7fb/image.png" alt=""></p>
</li>
<li><p>Generation Repetition : 생성된 문장에서 중복된 n-grams를 seqeuce-level repetition로 측정
<img src="https://velog.velcdn.com/images/lm_minjin/post/1f06a417-f0e9-415b-9ecc-f2de8a35171b/image.png" alt=""></p>
</li>
<li><p>Diversity : 다양한 n-gram level에서 generation repetition을 측정
<img src="https://velog.velcdn.com/images/lm_minjin/post/aefc9971-5779-4042-912c-88939edd9b02/image.png" alt=""></p>
</li>
<li><p>MAUVE : 생성된 글과 사람이 쓴 글 사이의 token distribution closeness를 측정</p>
</li>
<li><p>Semantic Coherence : 자동으로 SimCSE를 문장 임베딩 방법으로 사용하여, prefix와 generated text사이의 semantic coherence를 측정
<img src="https://velog.velcdn.com/images/lm_minjin/post/92e0dcb5-9359-4809-a30e-197169174b78/image.png" alt=""></p>
</li>
<li><p>Perplexity of Generated Text : prefix가 주어졌을 때, 생성된 글의 perplexity를 측정. 높은 gen-ppl을 가진다면, prefix가 주어졌을 때 생성된 text가 매우 unlikely하다는 것이므로 낮은 품질의 글일 확률이 높음. 반대로 낮은 gen-ppl를 가진다면, 생성된 글이 low diversity를 가져 repetitive loops에 갇힐 확률이 높음.
<img src="https://velog.velcdn.com/images/lm_minjin/post/d31c95ce-2dd0-455f-9be9-8bac7df752f4/image.png" alt=""></p>
</li>
<li><p>human evaluation</p>
<ul>
<li>Coherence : 생성된 글이 의미적으로 prefix와 일관되는지</li>
<li>Fluency : 생성된 글이 유창하고 이해하기 용이한지</li>
<li>Informativeness : 생성된 글이 다양하고 흥미로운 내용을 가지고 있는지</li>
</ul>
</li>
<li><p>Experiment result</p>
<ul>
<li><p>autometric을 사용해 각 모델, decoding method를 평가
<img src="https://velog.velcdn.com/images/lm_minjin/post/f3450487-cd9c-499c-bedd-3df9444c6e2e/image.png" alt="">   </p>
<ul>
<li>실험 결과를 보면, 전반적으로 SimCTG + contrastive 방식이 높은 성능을 보인다는 것을 알 수 있다. </li>
</ul>
</li>
<li><p>human evaluation
<img src="https://velog.velcdn.com/images/lm_minjin/post/39b03059-3c97-4ffe-a8f1-2c488478554d/image.png" alt=""></p>
<ul>
<li>human evaluation 역시 SimCTG-large모델이 통계적으로 유의하게 뛰어난 성능을 보인다 </li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><p>Open-domain Dialogue Generation</p>
<ul>
<li>본 논문에서 제안하는 방식이 다른 task와 언어에도 적용되는지를 살펴보기 위해, open-domain dialogue generation에 적용해 봄</li>
<li>중국어 벤치마크인 LCCC dataset과 영어 벤치마크인 DailyDialog dataset에 대해서도 적용</li>
<li>SimCTG와 MLE로 fine-tuned한 GPT-2모델을 비교, 중국어 데이터에는 공개된 Chinese GPT-2를 사용</li>
<li>batch size 128, input max_len으로 256사용, LCC에서는 40k step학습, DailDialog는 5k step만큼 학습(fine-tune)
<img src="https://velog.velcdn.com/images/lm_minjin/post/1745f9bc-4a84-48d3-b5c1-f118edacd11b/image.png" alt=""></li>
<li>두 데이터셋 모두에서, SimCTG+contrastive search방법이 다양한 메트릭에서 뛰어난 성능을 보임
==&gt; 본 논문에서 제안하는 방법이 다양한 언어와 태스크에 일반화될 수 있음을 보임<ul>
<li>contrstive training없이, MLE model에 contrastive search를 사용했을 떄도 상다히 높은 성능을 보임<ul>
<li>이는 중국어 언어 모델에서 MLE objective는 이미 높은 수준의 isotropy를 가지는 representation space를 산출할 수 있기 때문인 것으로 보임</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><p>Token Represenation Self-similarity</p>
<ul>
<li>다른 토큰과의 similarity를 비교해봄
<img src="https://velog.velcdn.com/images/lm_minjin/post/4f34689f-290c-4498-94cb-083e15fd3367/image.png" alt="">
<img src="https://velog.velcdn.com/images/lm_minjin/post/8fa7bb95-4688-4e8f-9d4d-61c1ad491208/image.png" alt=""></li>
<li>SimCTG는 최적의 언어 모델 accuracy를 유지하면서도 distriminative하고 isotropic한 representation을 얻을 수 있는 것을 알 수 있음<ul>
<li>근데 왜 마지막 레이어에서만 이렇게 격차가 벌어질까?</li>
</ul>
</li>
</ul>
</li>
<li><p>The Effect of Contrastive loss margin</p>
<ul>
<li>$\rho$에 따른 test set perplexity를 나타낸 표이다. 이를 보면 $\rho$가 너무 작거나 클 경우 모델의 학습된 representation space가 너무 작거나 너무 isotropic해서 sub-optimal perplexity를 이끄는 것을 볼 수 있음<ul>
<li>이걸 어떻게 알지?</li>
</ul>
</li>
</ul>
</li>
<li><p>Contrastive search versus nucleus sampling
<img src="https://velog.velcdn.com/images/lm_minjin/post/c55047c3-d1e5-4e2e-b394-68f38beb8d03/image.png" alt=""></p>
<ul>
<li>nucleus sampling에 대한 확률 $p$와 contrastive search를 위한 $\alpha$를 바꿔가며 Wikitext-103 test set에서 prefixes를 사용해 생성한 텍스트에 대해 Generation Perplexity를 나타낸 표</li>
<li>이 결과를 보면 contrastive search가 generation diversity와 perplexity사이의 trade-off에서 더 나은 밸런스를 가지고 있음<ul>
<li>보라색 별표가 사람인데, 사람 기준으로 봤을 때, contrastive search가 nuclesus와 유사한 perplexity를 보이면서 훨씬 나은 Diversity를 가짐!</li>
</ul>
</li>
</ul>
</li>
<li><p>decoding latency comparison</p>
<ul>
<li>Figure 5를 보면, inference 속도가 비슷하지만 b와 k가 커질수록 contrastive search가 더 빠른 것을 알 수 있음</li>
</ul>
</li>
<li><p>case study
<img src="https://velog.velcdn.com/images/lm_minjin/post/a3436cc5-92d0-475d-b7a2-279bb19466a2/image.png" alt=""></p>
<ul>
<li>빨간색은 degeneration repetitions, 파란색은 원문과 일관성이 없는 말, 초록색은 합리적인 repetition을 나타냄</li>
</ul>
</li>
<li><p>Conparison of Token Similarity Matrix
<img src="https://velog.velcdn.com/images/lm_minjin/post/b626da7a-26ae-4c77-a6e7-001d2b308050/image.png" alt=""></p>
<ul>
<li>빨간색이 prefix, 노란색이 generated text</li>
<li>MLE+beam search가 유난히 유사도가 높은걸 볼 수 있음</li>
<li>SimCTG+beam seach의 경우 전반적으로 isotropy하고 sparse해 보이나, degeneration repetitions가 여전히 생성된 글에 존재하는 것을 알 수 있음<h3 id="conclusion">Conclusion</h3>
</li>
<li>본 논문에서는 token representation이 anisotropic한 것에서 neural language model의 degeneration이 발생한다고 주장</li>
<li>이를 위한 해결책으로, SimCTG와 contrsastive search를 제안</li>
<li>다양한 실험 결과 제안한 방법론이 text generation approaches에서 뛰어난 성능을 보임을 입증 (현재 SOTA모델보다 뛰어남)</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Understanding the Properties of Minimum Bayes Risk Decoding in Neural Machine Translations]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Understanding-the-Properties-of-Minimum-Bayes-Risk-Decoding-in-Neural-Machine-Translations</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Understanding-the-Properties-of-Minimum-Bayes-Risk-Decoding-in-Neural-Machine-Translations</guid>
            <pubDate>Wed, 28 Sep 2022 12:32:58 GMT</pubDate>
            <description><![CDATA[<h3 id="abstract">Abstract</h3>
<ul>
<li>현재, NMT(Neural Machine Translation)는 모델이 생성한 번역이 너무 짧거나 빈도가 높은 단어를 overgenerating, 학습 데이터의 copy noise나 domain shift에 poor robustenss한 경향이 있음
=&gt; 최근 연구에서는, 이러한 현상이 NMT의 대표적인 inference algorithm인 beam search와 밀접하게 관련있다고 보고 있음
=&gt; 그래서 unbiased sample에 대해 Minimum Bayes Risk(MBR)를 대신 제안하는 것을 제안</li>
<li>본 논문에서는 이전에 보고된 많은 bias와 beam search의 실패 사례에 대한 MBR decoding의 특성에 대해 경험적으로 분석</li>
<li>분석 결과, <ul>
<li>MBR에서도 length와 token frequency bias는 나타남
(이는 utility function으로 사용되는 MT metric으로 인한 것으로 보임)</li>
<li>학습 데이터에 나타나는 copy noise와 domain shift에 대해서는 robust함</li>
</ul>
</li>
</ul>
<h3 id="1-introduction">1 Introduction</h3>
<ul>
<li><p>현재 NMT는 다음과 같은 문제들이 존재</p>
<ul>
<li>underestimating the true length of translations</li>
<li>underestimating the probability of rare words</li>
<li>over-generating very frequent words</li>
<li>being susceptible to copy noise in the training data</li>
<li>hallucination in out-of-domain translation</li>
</ul>
</li>
<li><p>이전에는 위와 같은 문제들에 대해 length normalization, data cleaning, model regularization과 같은 heuristic한 방법을 사용</p>
</li>
<li><p>하지만, 최근에는 가장 높은 점수를 받은 번역을 찾는 decision rule에 부분적으로 책임이 있다는 주장도 제기됨</p>
<ul>
<li>NMT모델에서 샘플링한 데이터는 학습 데이터 통계에 충실하지만 beam search는 그렇지 않다는 것을 발견함</li>
<li>그래서 beam search 대안으로 MBR decoding을 추천</li>
</ul>
</li>
<li><p>본 논문의 저자들은 MBR이 NMT의 기존 bias들을 극복할 잠재력을 가졌다고 보고, 이에 대해 실험</p>
<ul>
<li><p>만약 기존 bias들이 beam search의 mode-seeking 특성으로 발생한 거라면, MBR이 이러한 현상이 덜 할거라는 가설을 세울 수 있음!</p>
</li>
<li><p>length bias, hallucination에 대해선 약간 다르게 가설을 설정하는데, 만약 샘플들 안에 이런 biase를 가진 문장이 있다면 MBR이 이를 최종 번역으로 선택하지 않을거라 가정</p>
</li>
<li><p>[Eikema and Aziz(2020)]에서 sample과 beam search의 통계적 특성에 대해 비교하고, MBR이 beam search에 비해 automatic metric에 대해 유리하게 디코딩할 수 있음을 보여주지만 본 논문에서는 MBR에만 초점을 두고 실험. </p>
</li>
</ul>
</li>
<li><p>실험 결과,</p>
<ul>
<li>짧은 번역을 선호하는 uility function을 사용할 때, MBR 역시 이러한 편향을 가짐</li>
<li>MBR은 여전히 token probability bias를 가짐 <ul>
<li>token probaility bias : 드문 토큰은 등장 확률을 낮게 생각하고, 흔한 토큰은 등장 확률을 높게 생각</li>
</ul>
</li>
<li>beam search와 비교했을 때, MBR decoding은 학습 데이터에서 copy noise와 domain shift에  robust함<ul>
<li>domain이 바뀌어도 beam search에 비해 hallucinated content를 생성하는 경향이 적음</li>
</ul>
</li>
</ul>
<h3 id="2-background">2 Background</h3>
<h4 id="21-maximum-a-posteriorimap-decoding">2.1 Maximum-a-posteriori(MAP) decoding</h4>
<ul>
<li>사실상 NMT에서 기본적으로 쓰는 decoding algorithm은 beam search.</li>
<li>beam search는 MAP 알고리즘이라고 하는 더 넓은 범주의 inference procedures라고 볼 수 있음</li>
<li>MAP 알고리즘의 공통점은 주어진 모델에서 가장 확률이 높은 번역을 찾으려고 한다는 것</li>
<li>특히, 이 알고리즘은 시퀀스에 대해 output distribution의 mode를 복구(recover)하려고 함<ul>
<li>이게 무슨 의미지.. sequence를 하나씩 decoding하면서 바뀌는 distribution의 mode를 계속 잡아내려고 한다는 건가??</li>
</ul>
</li>
<li>이러한 search problem의 정확한 답은 보통 계산할 수 없음(intractable).
==&gt; Beam search는 이를 tractable하게 근사한 거지만, 분포의 진짜 mode를 찾는데 자주 실패<h4 id="22-known-deficiencies-of-nmt-systems">2.2 Known deficiencies of NMT systems</h4>
</li>
</ul>
</li>
<li><p>NMT system은 여러 방면에서 문제가 있음</p>
</li>
</ul>
<p><strong>Length bias</strong></p>
<ul>
<li>모델이 번역의 true length를 과소평가 </li>
<li>평균적으로, 모델이 생성한 번역은 reference(진짜 번역 결과)보다 짧음</li>
</ul>
<p><strong>Skewed word frequencies</strong></p>
<ul>
<li>번역에서, 학습데이터에서 자주 등장하는 토큰이 과도하게 표현(overrepresent)되는 경향이 있음</li>
<li>반대로 등장 빈도가 낮은 토큰은 학습데이터의 확률보다 더 적은 횟수로 발생</li>
</ul>
<p><strong>Beam search curse</strong></p>
<ul>
<li>beam size를 늘리는 것은 모델에서 더 확률이 높은 문장을 찾도록 함</li>
<li>이론적으로, 이는 번역의 질을 향상시켜야 함</li>
<li>하지만 역설적으로, 실험 결과를 보면 beam size가 커질수록 번역의 질이 낮아짐</li>
</ul>
<p><strong>Susceptibility to copy noise</strong></p>
<ul>
<li>학습데이터에서 복사된 내용이 번역 품질에 불균형하게 영향을 끼침</li>
<li>가장 나쁜 종류가 학습 데이터의 target side에 있는 원문 문장의 복사!
(학습 데이터에 내재된 노이즈!)</li>
<li>만약 이러한 복사가 학습데이터에 존재한다면, beam search에서 copy hypotheses는 과도하게 표현될 것.
=&gt; 학습 데이터에 이러한 노이즈가 존재할 경우, beam search에서는 이를 output으로 선택할 가능성이 높아진다는 것(?)</li>
</ul>
<p><strong>Low domain robustness</strong></p>
<ul>
<li>모델은 domain shift와 같은 distribution shift에 roubst하지 않음</li>
<li>unknown test domain에 대해 번역할 경우 품질이 저하되진 않지만 hallucination이 발생</li>
<li>과거엔 이 문제를 beam search를 상수로 놓고, 모델의 아키텍쳐나 학습 알고리즘에서 원인을 찾으려고 했지만, 최근 연구에서는 모델의 fitting이 문제가 아니라 beam search가 문제라는 주장이 제기됨</li>
</ul>
<p><strong>Inadequacy of the mode</strong></p>
<ul>
<li>output sequence에 대한 분포의 mode가 최고의 번역이 아니라고 주장. 오히려, 대부분의 경우에서 mode는 empty sequence(공백)임</li>
<li>output distribution은 광범위한 output space에서 꽤 flat하기 때문에, mode의 확률은 다른 sequence과 크게 차이 나지 않음</li>
<li>직관적으로, MLE training은 모델이 mode만으로 잘 특성화(characterized)되도록 제한하지 않음</li>
<li>만약 mode가 적절하지 않다면, beam search와 같은 mode-seeking procedure은 문제가 될 수 있음</li>
<li>사실 MAP decoding은 output distribution의 mode를 신뢰할 수 있을 경우에만 사용되어야 함</li>
</ul>
<h4 id="23-minimum-bayes-risk-decoding">2.3 Minimum Bayes Risk Decoding</h4>
<ul>
<li><p>MBR decoding은 음성인식과 통계 번역에서 사용됐던 방법</p>
</li>
<li><p>최근에는, NMT에서 beam search decoding을 개선하기 위해 사용되고 있음</p>
</li>
<li><p>본 논문에서는 MBR를 NMT에서 간단하게 사용할 수 있게 정의함</p>
<ul>
<li>MBR의 목표는 가장 높은 확률의 번역을 찾는것이 아니라, 주어진 loss function과 true posterior에서 기대되는 리스크를 최소화하는 번역을 찾는 것!</li>
</ul>
</li>
<li><p>여기서 모든 가능한 후보 번역문들을 size n크기의 샘플링으로 모델에서 근사할 수 있음<br>  $$S=(s_1, ..., s_n) \sim p(y|x,\theta)$$</p>
</li>
<li><p>이 집합을 사용해서 posterior distribution을 근사하는데도 사용할 수 있음!</p>
</li>
<li><p>각 샘플 $s_i$에 대해, expected untility(the inverse risk)를 계산해 pool안의 다른 샘플과 비교할 쑤 있음</p>
</li>
<li><p>가장 높은 expected utility 를 가진 샘플이 최종 번역문으로 선택됨
$$y^* = argmax_{s_i \in S}  \frac{1}{n}\sum_{s_j=1}^{n}u(s_i,s_j)$$</p>
</li>
<li><p>$n$의 크기와 utility function $u$는 알고리즘의 하이퍼퍼라미터</p>
</li>
<li><p>utility function으로는 보통 가설(후보 번역문)과 reference translation(정답 요약문)사이의 유사도를 계산한다</p>
</li>
<li><p>즉, MBR는 &quot;모든 가능성 있는 번역에 평균적으로 가장 가까운 consensus 번역을 선택하는 것&quot;으롭 볼 수 있음</p>
</li>
</ul>
<h3 id="3-motivation-for-experiments">3 Motivation for experiments</h3>
<ul>
<li><p>본 논문에선 MBR decoding이 beam search에서 발생하는 특정 실패 케이스들에 대해 유용할거라는 가설을 설정</p>
</li>
<li><p>beam search에선 틀린 번역이어도 가장 확률이 높은 번역을 최종 번역문으로 선택하지만, 만약 그와 준하는 유사한 확률이면서 정답인 번역이 후보에 있을 때 MBR이 이런 상황을 개선할 수 있을거라 가정</p>
<ul>
<li><p>예를 들어, beam search 번역이 다른 유사한 확률의 번역문보다 짧을 때, length bias가 발생</p>
</li>
<li><p>혹은, copies of input sentence 또는 hallucination이 있는 번역이 sample pool내에서 흔하지 않다면 MBR에선 이를 피할 수 있으니까!</p>
</li>
<li><p>마지막으로, 번역에서 token frequencies의 skewdness를 연구</p>
<ul>
<li>Kikema와 Aziz는 NMT모델 lexical biases를 연구하여 모델 샘플이 MAP decoding보다 training distribution와 더 잘 일치함을 보임</li>
<li>본 논문에서도 이것이 MBR decoding에서도 사실인지 실험</li>
</ul>
</li>
</ul>
<h3 id="4-experimental-setup">4 Experimental Setup</h3>
<h4 id="41-data">4.1 Data</h4>
<ul>
<li>Tatobeba Challenge : language families, scripts, training set size에서 상당히 다른 데이터셋</li>
<li>5가지 도메인에 대한 German-English 데이터셋 : 학습할 때는 medical, 테스트할 때는 IT, koran, law 등에 대한 도메인 사용</li>
<li>training data에서 랜덤으로 샘플링해서 testing함</li>
</ul>
</li>
</ul>
<h4 id="42-models">4.2 Models</h4>
<ul>
<li>전처리와 모델 세팅은 OPUS-MT에서 착안.</li>
<li>전처리 단계에서 subword regularization을 위해 Sentencepiece를 사용</li>
<li>NMT모델을 Sockeye2로 학습<ul>
<li>몇몇 세팅을 빼면 Standard Transformer</li>
</ul>
</li>
</ul>
<h4 id="43-decoding-and-evaluation">4.3 Decoding and evaluation</h4>
<ul>
<li>모든 실험에서 MBR decoding, beam search, single sample를 비교</li>
<li>beam search에서 beam size는 5로 설정</li>
<li>single sample은 variance를 보기 위해 적어도 100번 이상 샘플링</li>
<li>automatic translation quality는 BLEU, CHRF, METEOR로 평가</li>
<li>MBR은 샘플링에 영향을 받기 때문에, vairance를 보기 위해 MBR 실험을 2번 이상 반복</li>
<li>MBR에 사용된 샘플 데이터의 수는 5에서 100사이로 5씩 증가하면서 테스트</li>
<li>최종적으로, 우리는 다양한 utility function을 써서 MBR translation을 만듦</li>
<li>모든 utility function은 문장 수준의 평가 메트릭 : BLEU, CHRF, METEOR
<img src="https://velog.velcdn.com/images/lm_minjin/post/12a4149b-8f37-4638-941b-f8184ce188aa/image.png" alt=""></li>
<li>샘플 크기가 기술되지 않았다면 MBR결과는 100 samples, chrf-1을 utility function으로 한것!</li>
</ul>
<h3 id="5-length-bias">5 Length bias</h3>
<ul>
<li>MBR decoding을 평가할 때 다양한 utilty function을 사용하였는데, 모든 방면에서 최고를 달성한 utility function은 없었음</li>
<li>대신, 우리의 평가 메트릭과 밀접하게 관련이 있는 utility function을 선택하는게 최적이었음<ul>
<li>chrf-2를 utility function으로 사용했을 때, CHRF2 평가 지표에서 가장 높은 성능을 보임</li>
</ul>
</li>
</ul>
<p><strong>Number of samples</strong> </p>
<ul>
<li><p>sample 크기가 커질수록 MBR의 번역 품질이 높아진다는 것을 확인</p>
<ul>
<li>이는, MBR이 번역 품질을 위태롭게 할 수 있는 beam search curse를 겪지 않는다는 것을 의미
<img src="https://velog.velcdn.com/images/lm_minjin/post/756c64c7-3e50-4568-b1a6-c3501d4d6b8a/image.png" alt=""></li>
</ul>
</li>
<li><p>아래 표와 같이 번역문의 길이를 보사해본 결과, 평균적으로 beam search는 번역문의 true length를 과소평가하지만 샘플링에 의해 생성된 후보 번역문들은 reference length와 보다 더 가까움
<img src="https://velog.velcdn.com/images/lm_minjin/post/3e8db11d-f3ed-45d2-b980-01a41f0c1599/image.png" alt="">
(근데 사실 별 차이 없는거 아닌가..)</p>
</li>
<li><p>MBR decoding에서 utilty function의 선택이 생성한 번역문의 길이에 큰 영향을 끼친다는 것을 알 수 있음</p>
<ul>
<li>예를 들어, sentence-level BLEU를 utility function으로 사용한 경우, 번역문이 너무 짧아짐</li>
<li>BLEU는 precision based metric이므로 sentence level에서 더 짧은 번역문을 선호</li>
<li>chrf-2와 meteor는 recall을 더 강조하기 때문에 MBR 번역이 번역문의 true length를 과대 평가함</li>
<li>반대로 chrf-0.5와 같이 precision에 편향이 있는 chrf의 변형은 번역문이 짧게 나오는 경향이 있음</li>
</ul>
</li>
<li><p>이러한 length biases를 줄일 수 있는지 확인하기 위해 다음과 같이 utiliyy function u를 symmetrizing함
$$U_{sym}(s_i , s_j) = H(u(s_i, s_j),u(s_j,s_i))$$
(이 때 H는 harmonic mean을 의미)</p>
</li>
<li><p>이렇게 하면 recall 또는 precision을 선호하는 경향을 피할 수 있지만, 사실 symmetric utility function도 평균적으로 reference보다 길이가 짦음</p>
</li>
<li><p>이러한 실험을 토대로, <strong>MBR이 uility function과 연관된 length biases를 가진다</strong>고 결론 지음</p>
</li>
</ul>
<h3 id="6-token-frequency-bias">6 Token frequency bias</h3>
<ul>
<li>Beam search는 학습 데이터에서 흔한 토큰을 과대 생성하고, 희귀한 토큰은 과소 생성한다</li>
<li>반면에 샘플링은 흔한 코튼과 희귀 토큰에 올바른 확률을 할당</li>
<li>아래 그림을 보면, beam search에 비해 MBR은 probabilities의 skewdeness는 덜하지만, 여전히 frequent event에 너무 높은 확률을 할당하고 있다는 것을 알 수 있다</li>
<li>이러한 현상의 이유는, 우리의 utility function는 샘플들 사이의 표면적인 유사도를 기반으로 하기때문에 드물게 샘플링되는 희귀 토큰의 경우, 여전히 low utility를 갖게 되기 때문</li>
<li>이는, <strong>trade-off between correct probability statistics for very common and very rare words and translation quality</strong>가 있다고 볼 수 있음
<img src="https://velog.velcdn.com/images/lm_minjin/post/9fe68484-7948-4b95-93d9-d1531a435a8a/image.png" alt=""></li>
</ul>
<h3 id="7-domain-robustness">7 Domain robustness</h3>
<ul>
<li>일반적으로, 샘플 크기가 증가함에 따라 MBR은 beam searh의 성능이 근접해지지만 더 좋아지진 않음
<img src="https://velog.velcdn.com/images/lm_minjin/post/132a630c-d1bd-4868-926c-ddfde85992df/image.png" alt=""></li>
<li>out-of-domain data에서는 MBR과 beam seach의 갭이 더 작아짐</li>
<li>MBR은 out-of-domain translation에 유용할 것이라는 가설 설정</li>
<li>MBR의 domain robustness를 평가, 아래 그림을 보면 unknown test domain 4개 중 2개에선 beam search보다 뛰어남. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/6106d250-7332-4d20-972a-8550445ce0eb/image.png" alt=""></li>
<li>MBR이 beam search보다 unknown domain에서 뛰어난 이유는, hallucinated translation이 줄기 때문</li>
<li>이러한 가설을 검증하기 위해, 우리는 reference와 비교했을 때, CHRF2 점수가 0.01보다 낮은 번역문을 hallucination으로 정의</li>
<li>이러한 hallucination의 정의에 따라, 아래 그림을 보면 평균적으로 MBR이 이러한 hallucination이 있는 번역문에 더 낮은 utility score를 배정한다는 것을 알 수 있음</li>
<li>유사하게, MBR에서 beam search나 sampling에 비해 최종 번역문에서 hallucination이 있을 확률이 낮음</li>
<li>요약하면, <strong>beam search에 비해 MBR decoding이 더 높은 domain robustness를 보인다</strong>
<img src="https://velog.velcdn.com/images/lm_minjin/post/00cbbd78-36c7-42da-825a-92effabc17f1/image.png" alt=""></li>
</ul>
<h3 id="8-impact-of-copy-noise-in-the-training-dta">8 Impact of copy noise in the training dta</h3>
<ul>
<li><p>학습 데이터에서 원문의 copy가 target side에 존재할 경우, copies는 beam search에서 과대표현됨</p>
</li>
<li><p>MBR도 이와 같은 현상을 겪는지 확인하기 위해, 기존 학습데이터를 바탕으로 원문 copy 비율을 0.1%에서 50%사이로 설정.</p>
</li>
<li><p>아래 그림을 보면, 학습 데이터의 copy비율이 낮을때는 MBR과 beam search을 비교할만 함</p>
</li>
<li><p>하지만, 5%에서 25%사이에서는 MBR이 beam search보다 훨씬 뛰어난 성능을 보임
<img src="https://velog.velcdn.com/images/lm_minjin/post/b0d5a4cc-af06-40b4-bda2-b5dcbcfdb671/image.png" alt=""></p>
</li>
<li><p>번역에서 copy를 reference와 90%이상 단어가 겹칠 경우 copy라고 정의</p>
</li>
<li><p>MBR이 copy hypotheses에 훨씬 낮은 utility를 배정, 최종 번역이 copy가 될 확률을 매우 낮음</p>
</li>
<li><p>예를 들어, 학습 데이터의 10%가 copies라면, beam search는 거의 50%정도의 copy를 만들지만 MBR는 10%이하의 copy를 만듦</p>
</li>
<li><p>즉, <strong>MBR이 학습 데이터에 내재된 copy noise에 더 robust하다</strong>고 볼 수 있음
<img src="https://velog.velcdn.com/images/lm_minjin/post/4418de42-de19-487a-9d14-1cd5787d50ce/image.png" alt=""></p>
</li>
</ul>
<h3 id="9-conclusion-and-future-work">9 Conclusion and future work</h3>
<ul>
<li>우리가 흔히 쓰는 MT metric을 utility function으로 사용해 MBR decoding의 특성에 대해 연구</li>
<li>실험 결과,<ul>
<li>여전히 beam search와 유사하게 length bias와 token frequency bias를 가짐
(이는 utility function과 밀접하게 관련)</li>
<li>하지만, domain shift에서 빈번하게 발생하는 copying, hallucination과 같은 문제는 잘 다룸
(pool에 있는 샘플 중 copies나 hallucinated hypotheses는 낮은 utility를 갖기 때문에 최종 번역으로 잘 선태고디지 ㅇ낳음)</li>
<li>또한, 기존에 automatic metric에 대해선 beam search보다 성능이 좋지 못했지만 robustness측면에서 보면 MAP decoding의 좋은 대안이 될 수 있을 것</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[10분 테코톡 Process vs Thread 정리]]></title>
            <link>https://velog.io/@lm_minjin/10%EB%B6%84-%ED%85%8C%EC%BD%94%ED%86%A1-Process-vs-Thread-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@lm_minjin/10%EB%B6%84-%ED%85%8C%EC%BD%94%ED%86%A1-Process-vs-Thread-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Fri, 02 Sep 2022 08:49:01 GMT</pubDate>
            <description><![CDATA[<p>** 키워드 정리</p>
<ul>
<li>실행 단위 : CPU core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념</li>
<li>프로세스 : 하나의 스레드만 가지고 있는 단일 스레드 프로세스</li>
<li>동시성 : 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것</li>
</ul>
<h4 id="프로그램과-프로세스">프로그램과 프로세스</h4>
<p>프로그램이 프로세스가 되면서 총 2가지 일이 일어나야 함</p>
<ol>
<li><p>프로세스가 필요로 하는 데이터들이 메모리에 올라가야함</p>
<ul>
<li>Code : 실행 명령을 포함하는 코드들</li>
<li>Data : static변수 또는 global변수</li>
<li>Heap : 동적 메모리 영역</li>
<li>Stack : 지역변수, 매개변수, 반환 값 등 일시적인 데이터</li>
</ul>
</li>
<li><p>해당 프로세스에 대한 정보를 담고 있는 PCB(Process Control Block)도 올라가야 함</p>
<ul>
<li>Pointer : 준비 상태나 대기 상태의 큐를 구현하기 위해 필요한 포인터<ul>
<li>Process State : 현재 프로세스 상태 저장</li>
<li>Process Number : 프로세스 고유 번호</li>
<li>Program Count : 다음 명령어를 가리킴</li>
<li>Register</li>
<li>Memory limits</li>
<li>List of open files
...</li>
</ul>
</li>
</ul>
</li>
</ol>
<h4 id="process--thread">Process &amp; Thread</h4>
<p>프로세스를 동시에 실행시키기 위해서 프로세스들을 번갈아가면서 실행 - 준비 상태를 반복
ex) 1번 실행 - 1번 대기열로 내림 - 2번 실행 - 2번 대기열로 내림..
==&gt; 이를 경량화한 것이 Thread!
(하나의 프로세스 안에 다수의 쓰레드가 있으면 공유되는 자원이 있기 때문!)</p>
<p>쓰레드는 코드, 데이터, 힙 영역을 공통된 자원으로 사용(스택만 따로 가지고 있음)
=&gt; 공유되는 자원이 있기 때문에 이전처럼 컨텍스트 스위칭이 일어날 때 캐시 적중률이 높아짐
ex) 회의실에서 노트북, 스피커, 리모콘으로 화면을 연결해서 발표를 한다고 할 때, 이전 팀이 노트북, 스피커, 리모콘을 다 두고 가면 금방 바로 발표를 진행할 수 있는 것 처럼!</p>
<h4 id="multi-process--multi-thread">Multi-process &amp; Multi-thread</h4>
<p>한 어플리케이션에 대한 두 가지 처리 방식</p>
<ul>
<li><p>Multi-process</p>
<ul>
<li>다수의 사용자가 로그인하려고 할 때, 프로세스는 매번 하나의 로그인만 처리할 수 있으므로 부모 프로세스가 fork()해서 자식 프로세스를 여러개 만들어서 처리</li>
<li>이 때, 자식 프로세스는 부모와 별개의 메모리 영역을 갖게 됨</li>
<li>각 프로세스는 독립적</li>
<li>IPC를 사용한 통신
: 각자 다른 회의실을 사용하는 두 팀이 서로 논의할 일이 생기면 회의실 밖으로 나와서 이야기를 해야하는 것처럼!</li>
<li>자원 소모적, 개별 메모리 차지</li>
<li>Context switching 비용이 큼</li>
<li>동기화 작업이 필요하지 않음</li>
</ul>
</li>
<li><p>Multi-process</p>
<ul>
<li>프로세스 내에서 분리해서 여러 스레드로 나뉘어 실행단위가 나뉘어짐</li>
<li>vscode에서 디버깅하면서 모델도 돌리고, log도 보고.. 한 어플리케이션에 대해서 작업의 단위가 나뉘어질 경우! 이때 각각의 스레드가 나눠서 작업을 맡음</li>
<li>Thread끼리 긴밀하게 연결되어 있음</li>
<li>공유된 자원으로 통신 비용 절감</li>
<li>공유된 자원으로 메모리가 효율적</li>
<li>공유 자원 관리 필요</li>
</ul>
</li>
<li><p>Concurency : 하나의 코어에서 하나 이상의 프로세스 혹은 쓰레드가 번갈아가면서 진행되지만 동시에 진행되는 것처럼 보이는 것</p>
</li>
<li><p>Multi-core</p>
<ul>
<li>물리적으로 여러 코어를 사용해서 하나 이상의 프로세스 혹은 쓰레드가 한꺼번에 진행되는 것</li>
</ul>
</li>
</ul>
<p>요약</p>
<ul>
<li>프로세스는 프로그램이 실행된 것</li>
<li>스레드는 한 프로세스 내에서 나뉘어진 하나 이상의 실행 단위</li>
<li>한 어플리케이션에 대한 작업을 동시에 하기 위해서는 2가지 처리 방식(멀티 프로세스, 멀티 스레드)가 있다</li>
<li>동시에 실행이 되는 것처럼 보이기 위해 실행 단위는 시분할로 cpu를 점유하며 context switching을 한다</li>
<li>멀티 프로세스는 독립적인 메모리를 가지고 있지만 멀티 스레드는 자원을 공유한다</li>
<li>멀티 코어는 하드웨어 측면에서 실행 단위를 병렬적으로 처리할 수 있도록 여러 프로세서가 있는 것이다</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] TSDAE : Using Transformer-based Sequential Denoising Auto-Encoder for Unsupervised Sentence Embedding Learning]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-TSDAE-Using-Transformer-based-Sequential-Denoising-Auto-Encoder-for-Unsupervised-Sentence-Embedding-Learning-cx2hehg8</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-TSDAE-Using-Transformer-based-Sequential-Denoising-Auto-Encoder-for-Unsupervised-Sentence-Embedding-Learning-cx2hehg8</guid>
            <pubDate>Mon, 29 Aug 2022 01:29:15 GMT</pubDate>
            <description><![CDATA[<h3 id="abstract">Abstract</h3>
<ul>
<li>사전 학습된 transformer와 Sequential Denoising Auto-Encoder를 기반으로하는 새로운 SOTA 방법을 제안<ul>
<li>in-domain supervised 방법의 93.1%까지 성능 달성</li>
</ul>
</li>
<li>TSDAE는 강한 domain adaptation이면서 MLM같은 다른 방식들 보다 뛰어난 문장 임베딩을 위한 사전 학습 방식</li>
<li>이전 연구에서 가장 큰 문제점은 좁은 평가 방식을 사용했다는 것<ul>
<li>대부분의 논문에서는 오직 STS만을 사용해 평가</li>
<li>하지만 STS는 도메인 지식이 필요하지 않음
=&gt; 제안된 방법이 다른 도메인과 태스크에 일반화할 수 있는지는 불명확!</li>
</ul>
</li>
<li>본 논문에서는 이러한 갭을 줄이기 위해 TSDAE와 비교 모델을 다양한 도메인에서 파생된 4가지 데이터셋을 사용해 평가</li>
</ul>
<h3 id="1-introduction">1 Introduction</h3>
<ul>
<li><p>Sentence embedding은 문장을 고정된 크기의 벡터로 인코딩하는 방식</p>
<ul>
<li>단, 의미적으로 유사한 문장들을 서로 가깝게 맵핑하는게 핵심!</li>
</ul>
</li>
<li><p>지금까지의 성공적인 방식들(InferSent, Universial Sentence Encoder, SBERT)은 보통 문장 임베딩 모델을 학습시키기 위해 라벨링된 데이터에 의존</p>
</li>
<li><p>이러한 한계를 극복하기 위해, 학습시 라벨링이 안된 코퍼스를 사용해 문장 임베딩을 학습하는 것을 제안</p>
</li>
<li><p>본 논문에서 제안하는 방식 : Transformer-based Sequential Denosiing Auto-Encoder(TSDAE)</p>
<ul>
<li>encoder-decoder 구조를 통해 이전 방법보다 뛰어남</li>
<li>학습시, corrupted sentence를 encode해서 고정된 크기의 벡터로 나타내고, decoder가 이러한 문장 임베딩에서 원래 문장을 reconstruct하도록 함</li>
<li>좋은 reconstruction quality를 위해서, 문장의 의미가 인코더로부터 문장 임베딩에 잘 담겨야 함</li>
<li>inference에서는 오직 encoder만들 사용해서 문장을 임베딩<ul>
<li>이전 비지도 방식의 치명적인 단점은 평가</li>
</ul>
</li>
<li>주로 STS로 평가하는데, 뒤의 장표를 보면 이 방식이 충분한 평가 방식이 아니라는 것을 알 수 있음</li>
<li>STS dataset는 도메인에 특화된 정보를 가진 문장을 포함하지 않아 해당 방식이 더 도메인 특화된 데이터에서 잘 될지는 불명확함</li>
<li>STS는 인위적인 점수 분포를 가지고 있음
=&gt; STS에 대한 성능과 다른 downstream task 성능은 상관관계가 없음
==&gt; 결론적으로 STS 점수만 보고는 다른 task에서 얼마나 잘 될지 모름!!<ul>
<li>이러한 문제를 해결하기 위해 TSDAE와 이전 비지도 문장 임베딩 방식들을 3가지 다양한 태스크(Information Retrieval, Re-Ranking과 Paraphrase Identification)에 비교</li>
<li>TSDAE의 경우 다른 SOTA 비지도 방식보다 6.4점정도 뛰어남</li>
<li>TSDAE는 같은 기준 혹은 USE-large와 같은 지도 모델보다도 뛰어남</li>
<li>TSDAE는 domain adaptation에서, 그리고 사전 학습 방식에서도 뛰어남</li>
</ul>
</li>
</ul>
<p>** Contribution**</p>
<ul>
<li>기존의 SOTA방식보다 6.4점 정도 뛰어난 성능을 보이는 TSDAE를 제안</li>
<li>이를 입증하기 위해 다양한 도메인에 대한 여러 태스크에 대해 비지도 문장 임베딩 방식을 비교</li>
<li>TSDAE가 사전 학습과 domain adaptation방식으로 MLM을 포함한 다른 방식들보다 더 뛰어남</li>
</ul>
</li>
</ul>
<h3 id="2-related-work">2 Related Work</h3>
<p>Supervised sentence embeddings</p>
<ul>
<li>문장간의 관계에 대한 정보를 제공하는 라벨을 활용</li>
<li>문장 임베딩은 문장 쌍의 유사도를 측정하는데에 사용되기 때문에, 보통 문장 간의 유사도를 라벨링</li>
<li>많은 연구에서 NLI(e.g. QA, conversational context dataset)가 문장 임베딩을 학습하는데에 성공적으로 사용될 수 있음을 밝힘</li>
<li>대표적으로 문장 임베딩 분야에서 사전 학습된 transforemr를 활용해 높은 성능을 달성한 모델이 Sentence-BERT</li>
</ul>
<p>Unsupervised sentence embeddings</p>
<ul>
<li>학습 동안 unlabeled corpus만 활용</li>
<li>최근에 다양한 training objectives와 pre-trained Transformer를 결합한 방식이 STS에서 SOTA를 달성<ul>
<li>Contrastive Tension(CT) : 단순히 동일한 문장을 positive example, 다른 문장을 negative example로 보고, 독립적인 2개의 encoder를 학습</li>
<li>BERT-flow : Gaussian쪽으로 임베딩 분포를 debiasing하면서 모델을 학습</li>
<li>SimCSE : contrastive learning을 기반으로 하고, 동일한 문장에 다양한 dropout mask를 적용한 것을 positive exmaple로 봄
==&gt; 이러한 모든 방식은 독립적인 문장을 요구</li>
<li>DeCLUTR : 문장 수준의 context를 활용하고 학습 시 긴 문서(적어도 2048 token)를 요구
==&gt; 하지만 본 논문에서는 학습시 하나의 문장을 사용하는 방법만을 고려</li>
</ul>
</li>
<li>대부분의 논문에서 STS로만 비교<ul>
<li>비지도 방식이 STS에 대해 특정해 학습되지 않았어도 바로 사용할 수 있는 지도 사전 학습 모델보다 성능이 훨씬 나쁨</li>
<li>STS에 대한 좋은 성능이 downstream task에 대한 성능을 보장하지 않음</li>
</ul>
</li>
</ul>
<h3 id="3-sequential-denoising-auto-encoder">3 Sequential Denoising Auto-Encoder</h3>
<ul>
<li>Sequential Denoising Auto-Encoder(SDAE)는 머신러닝에서 유명한 비지도 방식이지만, 이를 문장 임베딩 학습을 위해 사전 학습된  transformer와 어떻게 결합시킬지는 명확하지 않음</li>
<li>본 논문에서 처음으로 TSDAE의 training objective에 대해 소개하고, TSDAE의 최적 configuration을 제공</li>
</ul>
<h4 id="31-training-objective">3.1 Training Objective</h4>
<ul>
<li><p>TSDAE는 입력 문장에 특정 유형의 노이즈(e.g. deleting or swapping words)를 더해서 손상된 문장을 고정된 크기의 문장 임베딩을 학습</p>
</li>
<li><p>training objective는 다음과 같음
$$
J_{SDAE}(\theta) = \mathbb{E_{x \sim}}<em>D [log P</em>{\theta}(x|\widetilde{x})] 
= \mathbb{E_{x \sim}}<em>D [\sum</em>{t=1}^llog P_{\theta}(x_t|\widetilde{x})] 
= \mathbb{E_{x \sim}}<em>D [\sum</em>{t=1}^llog \frac{exp(h^T_t e_t)}{\sum_{i=1}^{N} exp(h^T_t e_i)}]
$$</p>
<ul>
<li>D : training corpus</li>
<li>$x=x_1x_2...x_l$ : l개의 token을 갖는 입력 문장</li>
<li>$\widetilde{x}$ : 손상된 문장</li>
<li>$e_t$ : $x_t$의 문장 임베딩</li>
<li>$N$ : size of vocabulary</li>
<li>$h_t$ : hidden state at decoding step $t$</li>
</ul>
</li>
<li><p>원래 transforemr encoder-decoder setup과의 큰 차이는 decoder에서 이용 가능한 정보!</p>
</li>
<li><p>우리의 decoder는 encoder에서 만들어진 오직 제한된 크기의 문장 표현만(e.g. [CLS] token) 사용해 decode함
=&gt; encoder에서 모든 contextualized word embedding을 사용하지 않음
=&gt; bottleneck를 야기시켜 encoder가 유의미한 문장 표현을 만들도록 함</p>
</li>
</ul>
<h4 id="32-tsdae">3.2 TSDAE</h4>
<ul>
<li><p>TSDAE의 모델 구조는 문장 임베딩만을 cross-attention의 key와 value로 사용</p>
</li>
<li><p>modified cross-attention을 식으로 나타내면 다음과 같다
$$
H^{(k)} = Attention(H^{(k-1)},[S^T],[S^T])
Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d}})V
$$</p>
<ul>
<li>$H^{(k)} \in \mathbb{R}^{t \times d}$ : $k$번째 레이어에서 $t$ decoding step안의 decoder hidden state, $d$는 sentence embedding의 크기</li>
<li>$[S^T] \in \mathbb{R}^{1 \times d}$ : sentence embedding vector를 포함하는 one-row matrix</li>
<li>$Q,K,V$ : 각각 query, key, value를 나타냄</li>
</ul>
</li>
<li><p>STS에 대해 다양한 실험 결과, 최적의 조합은 다음과 같음</p>
<ul>
<li>deletion을 input noise로, deletion ratio를 0.6으로 설정</li>
<li>[CLS] token의 결과를 고정된 크기의 문장 표현으로 사용</li>
<li>학습 시 encoder와 decoder 파라미터를 묶음</li>
<li>noise type과 noise ratio에 따른 성능 차이
<img src="https://velog.velcdn.com/images/lm_minjin/post/42b28fc3-5b0c-4489-9a11-cd8e49b16c6f/image.png" alt=""></li>
<li>mean pooling, max, cls에 따른 성능 차이
<img src="https://velog.velcdn.com/images/lm_minjin/post/17df90f2-6ff6-479e-b956-8543cc7d7d07/image.png" alt=""></li>
</ul>
</li>
</ul>
<h3 id="4-evalution">4 Evalution</h3>
<ul>
<li><p>STS dataset에 대한 평가 만드로는 다른 task에 대한 성능을 보장할 수 없음</p>
<ul>
<li>STS는 domain 특화 정보를 요구하지 X</li>
<li>유사한 쌍, 유사하지 않은 쌍에 대한 분포가 인위적
(현실에서는 dissimilar한 경우가 훨씬 더 많음)</li>
<li>STS에서는 dissimilar와 similar에 대한 rank를 둘다 잘해야 성능이 높지만, 현실에서는 similar에 대한 rank가 더 중요</li>
</ul>
</li>
<li><p>또한, 비지도 학습을 평가하는 경우 몇몇 라벨링된 데이터가 존재하는 것을 무시</p>
<ul>
<li>많은 경우에서, 특정한 task 혹은 유사한 task에 라벨링된 데이터가 존재함
==&gt; 좋은 방식은 몇몇 라벨링된 데이터가 이용 가능할 때도 성능이 나와야 한다.</li>
</ul>
</li>
<li><p>다음과 같은 3가지 setup에서 비지도 문장 임베딩을 평가</p>
<ul>
<li>Unsupervised Learning : target task에서 라벨링 되지 않은 문장들을 가지고 있다 가정하고, 이러한 문장들을 기반으로 우리의 방법을 적용<ul>
<li>Domain Adaptation : NLI와 STS에서 라벨링된 문장과 target task에서 라벨링되지 않은 문장을 가지고 있다고 가정하고 2가지 방법으로 학습
1) NLI+STS data로 학습한 후 target domain에 대해 학습
2) target domain에 대해 학습한 후 NLI+STS data로 학습</li>
</ul>
</li>
<li>Pre-Training : target task에 대해 라벨링되지 않은 대량의 코퍼스와 target task에 대해 소수의 라벨링된 문장이 있다고 가정</li>
</ul>
</li>
</ul>
<h4 id="41-datasets">4.1 Datasets</h4>
<p>다양한 도메인에서 다양한 task(Re-Ranking, Information Retrieval, Paraphrase Identification)에 대한 3가지 setting을 평가</p>
<ul>
<li>AskUbuntu(RR task)<ul>
<li>기술 포럼 AskUbuntu에서 user post 모음</li>
<li>모델은 20개의 후보 질문을 주어지는 input post와 유사한 순으로 다시 ranking해야함</li>
<li>평가는 Mean Average Precision(MAP) 사용</li>
</ul>
</li>
<li>CQADupStack(IR task)<ul>
<li>Stack-Exchange에서 다양한 토픽에 대한 forum post로 구성된 question retrieval dataset</li>
<li>세부적으로 12개의 포럼(수학, 영어, 안드로이드, 프로그래머, 통계 등)을 가짐</li>
<li>모델은 큰 후보풀에서 중복되는 질문을 찾아내야함</li>
<li>평가 지표는 MAP@100</li>
<li>모든 포럼에 대해 하나의 모델을 학습</li>
</ul>
</li>
<li>TwitterPara(PI task)<ul>
<li>2개의 유사한 데이터셋으로 구성됨 : Twitter Paraphrase Corpus, Twitter News URL Corpus</li>
<li>데이터셋은 트윗 쌍으로 구성되어 있고, 그 문장쌍이 paraphrase되었는지에 대한 점수가 라벨링되어 있음</li>
<li>평가 지표는 모델이 계산한 유사도 점수와 정답 confidence socre에 대해 Average Precision(AP)</li>
<li>SciDocs(RR task) <ul>
<li>scientific 논문에 대한 여러 task로 구성된 벤치마크</li>
<li>우리 실험에서는 Cite에 관한 task를 사용<ul>
<li>즉, 주어진 논문 제목에 대해 자주 co-cited/-read/-viewed되는 논문들을 찾는것</li>
</ul>
</li>
<li>논문 제목 하나가 query로 주어지면, 모델은 논문 제목 후보 30개 중에서 5개의 관련 논문 제목을 식별</li>
<li>negative example는 랜덤하게 선택됨</li>
<li>평가 지표는 MAP</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>평가에서, 문장들은 우선 고정된 크기의 벡터로 인코딩되고, 문장 유사도를 계산하기위해 코사인 유사도 사용</p>
<p>또한, 세부 task로 나뉘는 데이터셋의 경우 각 세부 task에 대한 점수를 평균내 final score로 사용</p>
<h3 id="5-experiments">5 Experiments</h3>
<ul>
<li>TSDAE를 다른 비지도 모델, out-of-the box supervised pre-trained model(라벨링된 데이터로 학습한 후에 domain 특화된 데이터셋으로 평가)과 비교</li>
<li>비교군으로는 CT, SimCSE, BERT-flow 사용(각 논문에서 제안된 하이퍼파라미터 사용)</li>
<li>BERT-base-uncased를 base Transformer model로 사용</li>
<li>랜덤성을 줄이기 위해 5개의 random seed에 대해 평균냄</li>
</ul>
<h4 id="51-baseline-methods">5.1 Baseline Methods</h4>
<ul>
<li>Glove : 일반적인 도메인에서 큰 코퍼스에 대해 학습된 단어 임베딩을 평균내서 문장 임베딩으로 사용</li>
<li>Sent2Vec : bag-of-word모델이지만 in-domain unlabeled corpus에 학습됨</li>
<li>BERT-based-uncased with mean looling</li>
<li>Universial Sentence Embedding(USE) : NLI와 community question answering을 포함한 여러 지도 데이터셋에 대해 학습됨</li>
<li>SBERT-base-nil-v2 : SNLI+MultiNLI data에 대해 Nultiple-Negative Ranking Loss(MNRL)을 사용해서 학습됨</li>
<li>SBERT-base-stsb-v2 : STS bench-mark train set에 대해 MSE로 학습됨</li>
<li>BM25 : Elasticsearch를 사용</li>
</ul>
<p>비지도 방법의 상대적인 성능을 더 잘 이해하기 위해, SBERT모델을 in-domain supervised maner로 학습시켜서 이 점수를 upper bound로 봄</p>
<p>AskUbuntu, CQADupStack, SciDocs에 대해서는 상대적인 문장 비교가 라벨링되어 있으므로 in-domain SBERT모델을 MNRL로 학습</p>
<blockquote>
<p><strong>MNRL는 in-batch negatives에서 cross-entropy loss</strong>
: 연관 있는 문장 쌍의 배치 ${x^{(i)},y^{(i)}}^{M}<em>{i=1}$에서 MNRL는 라벨링된 문장을 postivie로, 다른 배치안의 조합을 negative로 봄
$$
J</em>{MNRL}(\theta) = \frac{1}{M}\sum^{M}<em>{i=1} log \frac{exp \sigma(f</em>{\theta}(x^{(i)}),f_{\theta}(y^{(i)}))}{\sum^{M}<em>{j=1}exp \sigma(f</em>{\theta}(x^{(i)}),f_{\theta}(y^{(j)}))}
$$</p>
<ul>
<li>$\sigma$ : 벡터들에 대한 특정 유사도 함수</li>
</ul>
</blockquote>
<ul>
<li>$f_{\theta}$ : 문장을 임베딩하는 문장 인코더
ex) TwitterPara에서는 관련도 점수가 라벨링되고, in-domain 모델 학습 시 MSE loss를 사용</li>
</ul>
<h4 id="52-mlm">5.2 MLM</h4>
<ul>
<li>Masked-Language-Model(MLM)은 BERT에서 소개된 fill-in-the-blank task</li>
<li>입력값을 마스킹하고 tarsforemr가 마스킹된 단어를 찾도록 함</li>
<li>문장 임베딩을 계산하기 위해, output token embedding의 mean-pooling을 사용</li>
</ul>
<h4 id="53-contrastive-tensionct">5.3 Contrastive Tension(CT)</h4>
<ul>
<li><p>CT는 contrastive-learning fashion에서 사전학습된 Transformer를 파인튜닝</p>
</li>
<li><p>각 문장에 대해서, 같은 문장을 관련 문장으로, K개의 랜덤 문장을 샘플링해서 관련 없는 문장으로 보고 binary cross-entropy를 구축</p>
</li>
<li><p>학습 과정을 안정화하기 위해, 각 문장 쌍 $(a,b)$에 대해, CT는 같은 초기값에서 시작한 두 개의 독립적인 encoder($f_{\theta_1}, f_{\theta_2}$)를 사용</p>
</li>
<li><p>이를 수식으로 나타내면 다음과 같음
$$
J_{CT}(\theta_1, \theta_2) = \mathbb{E}<em>{(a,b) \sim D}[ylog\sigma(f</em>{\theta_1}(a)^Tf_{\theta_2}(b))+(1-y)log(1-\sigma(f_{\theta_1}(a)^Tf_{\theta_2}(b)))]
$$</p>
</li>
<li><p>여기서 $y \in {0,1}$는 문장 a가 b와 동일한지를 나타내고, $\sigma$는 Logistic function을 나타냄</p>
</li>
<li><p>간단한 수식에도 불구하고, CT는 STS에서 SOTA 비지도 성능을 달성</p>
</li>
</ul>
<h4 id="54-simcse">5.4 SimCSE</h4>
<ul>
<li>CT와 유사하게, SimCSE는 같은 문장을 postivie examples로 봄</li>
<li>주요한 차이는 SimCSE는 다양한 dropout mask를 샘플링해서 embedding-level positive pair를 생성하고, in-batch negatives를 사용</li>
<li>이와 같이, learning objective는 동일하지만, encoder를 공유하고, MNRL-loss를 사용</li>
</ul>
<h4 id="55-bert-flow">5.5 BERT-flow</h4>
<ul>
<li><p>사전학습된 transformer의 파라미터를 파인튜닝하는 것 대신, BERT-flow는 distribution debiasing를 통해 이러한 사전 학습된 모델에 의해 인코딩된 의미 정보를 완전히 활용하는 것을 목표로 함</p>
</li>
<li><p>BERT-flow의 논문에서는 BERT 단어 임베딩이 단어 빈도수와 높은 연관성이 있다고 주장하고, 이는 차례로 MLM을 통해 hidden state에 영향을 끼침</p>
</li>
<li><p>결국, 이러한 hidden state에 대한 pooling으로 생성된 문장 임베딩을 편향될 수 밖에 없음
==&gt; 이를 해결하기 위해, BERT-flow는 편향된 문장 임베딩을trainable flow network $f_{\phi}$에 넣고, BERT model의 파라미터는 유지한 채로 표준 정규 분포에 fiting해 debiasing</p>
</li>
<li><p>training objective는 다음과 같다
$$
J_{BERT-flow}(\phi) = \mathbb{E}_{s \sim D}[log p\mathcal{U}] = \mathbb{E}_u[logp\mathcal{z}(f^{-1}_\phi(u))|det \frac{\partial f^{-1}_\phi(u)}{\partial u}]
$$</p>
<ul>
<li><p>u : biased embedding of sentence x</p>
</li>
<li><p>$z = f^{-1}_\phi(u)$ : deviased sentence embedding with follows a standard Gaussian distribution</p>
</li>
<li><p>BERT-flow는 transformer의 파라미터를 업데이트하지 않으므로, 본 논문에서는 BERT-flow에 대해 unsupervised learning과 domain adaptation NLI+STS -&gt; target task에 대한 점수만 보고</p>
</li>
<li><p>하지만, 우리가 사용한 다른 평가 setup과는 적합하지 않아 실험하지 않음</p>
</li>
</ul>
</li>
</ul>
<h3 id="6-result">6 Result</h3>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/223c48f5-38e0-4bb9-b4a8-eb10c1591c67/image.png" alt=""></p>
<p><strong>Unsupervised learning</strong></p>
<ul>
<li>TSDAE가 이전 최고 방법(CT)보다 최대 6.4점, 평균적으로 2.6점 높음</li>
<li>MLM방식이 STS에서는 성능이 안좋지만, 다른 최근 방식(CT, SimCSE, BERT-flow)에서는 2번째로 좋음</li>
<li>TSDAE와 MLM모다 input에서 단어를 제거해서 네트워크가 robust embedding을 만들도록 함</li>
<li>반대로, CT와 SimCSE의 input sentence는 수정되지 않았기 때문에, 덜 stable embedding한 결과를 냄</li>
<li>또한, 본 실험에서 out-of-the-box pretrained models(SBERT-base-nli-stsb-v2와 USE-large)의 경우 domain-specific fine-tuning없이 최근에 제안된 비지도 학습 방법을 뛰어 넘는 좋은 성능을 보임</li>
</ul>
<p><strong>Domain Adaptation</strong></p>
<ul>
<li>모든 비지도 방식에 대해서, target domain에 대해 먼저 학습하고, 이후에 라벨링된 NLI+STS를 사용해서 학습했을 때 더 좋은 결과를 냄</li>
<li>모든 방식에 대해, target domain에 대해서만 학습했을 때보다 더 높은 성능을 보임</li>
<li>평균적으로, TSDAE에선 1.3점 향상, MLM에선 3점 향상, CT에선 0.6점 향상, SimCSE에선 1.8점 향상</li>
<li>CT와 SimCSE는 이 환경에서는 out-of-the-box model SBERT-base-nli-stsb-v2보다 약간 높은 성능을 기록</li>
</ul>
<p><strong>Pre-training</strong></p>
<ul>
<li><p>평가된 방식의 사전 학습 성능을 비교</p>
</li>
<li><p>이용가능한 모든 unlabled sentence에 대해 사전학습을 하고,다양한 unlabseled training set size에 따른 in-domain supervised training성능을 비교</p>
</li>
<li><p>평가에 기록된 점수는 development set 기준
<img src="https://velog.velcdn.com/images/lm_minjin/post/a4db06f1-929d-467a-9083-2946ab5434d3/image.png" alt=""></p>
</li>
<li><p>TSDAE가 MLM보다 AskUbuntu를 제외한 모든 데이터셋에서 훨씬 뛰어남</p>
</li>
<li><p>라벨링된 학습 데이터의 크기가 커져도 TSDAE가 일관되게 뛰어남</p>
</li>
<li><p>결론적으로, TSDAE가 pre-training방법으로 뛰어나고, 더 큰 학습 데이터셋에서도 성능이 크게 향상됨</p>
</li>
<li><p>CT와 SimCSE의 경우 pre-training에서 뛰어나지 않음. </p>
</li>
</ul>
<h4 id="61-result-on-sts-data">6.1 Result on STS data</h4>
<ul>
<li><p>Wikipedia에서 문장을 샘플링해서 BERT-base-uncased모델을 다양한 비지도 학습 방법을 사용해 학습</p>
</li>
<li><p>아래 표를 보면 다양한 domain specific dataset에 대한 평균 성능과 STS test set에 대한 성능이 나타나 있음
<img src="https://velog.velcdn.com/images/lm_minjin/post/62a079da-51fe-43e0-98b1-d414daee0be1/image.png" alt="">
<img src="https://velog.velcdn.com/images/lm_minjin/post/e958c4a6-e9f3-4b5b-aff0-94d9121af880/image.png" alt=""></p>
</li>
<li><p>STS test set에 대한 성능과 domain specific dataset에 대한 성능이 일관되지 않음을 알 수 있음</p>
<ul>
<li>STS에 대해선 CT와 SimCSE가 뛰어나지만, domain-specific real-world task에서는 TSDAE와 MLM이 뛰어남</li>
</ul>
</li>
<li><p>결론적으로, STS data에 대한 높은 성능이 domain-specific task에 대한 좋은 성능을 나타내진 않음</p>
</li>
</ul>
<h3 id="7-analysis">7 Analysis</h3>
<ul>
<li>얼마나 많은 학습 문장이 필요한지, 관련 있는 context words가 인식하는지를 분석</li>
<li>TwitterPara를 제외한 모든 데이터셋에 대해서, development set을 바탕으로 분석</li>
<li>TwitterPara의 경우, test set을 사용(공식적으로 dev set이 나뉘어 있지 않음)</li>
</ul>
<h4 id="71-influence-of-corpus-size">7.1 Influence of Corpus Size</h4>
<ul>
<li>특정 도메인에서, 충분한 수의 문장을 얻는 것이 어려울 수 있음</li>
<li>그러므로, 적은 데이터로도 좋은 문장 임베딩을 만드는 것이 중요</li>
<li>이를 위해, 다양한 크기의 corpus(128~65536문장)에 대해 비지도 방식을 학습</li>
<li>각 실험에서 bert-base-uncased모델을 10epoch, 100 training setp까지 학습</li>
<li>모델은 각 epcoh의 끝에서 평가되고, development set에 대해 가장 좋은 점수가 기록됨
<img src="https://velog.velcdn.com/images/lm_minjin/post/dd9cef70-0d6a-47e1-b1e2-69c661386c5c/image.png" alt=""></li>
<li>TSDAE가 이전 비지도 방식보다 1000개의 unlabeled sentence만으로도 거의 뛰어남</li>
<li>10K의 unlabled sentences에서, downstream성능은 일반적으로 모든 비지도 방식에 대해 수렴</li>
<li>CQADupStack에 대해서만 데이터가 많으면 많을수록 도움이 됨<ul>
<li>CQADupStack의 경우 다양한 주제에 대한 글로 구성되어 있으므로 unlabled data가 더 필요한 것으로 여겨짐</li>
</ul>
</li>
<li>특정 도메인으로 사전 학습된 트랜스포머를 파인튜닝 하려면 비교적으로 10K 문장의 unlabeled data가 필요한 것으로 보임</li>
</ul>
<h4 id="72-relevant-content-words">7.2 Relevant Content Words</h4>
<ul>
<li><p>모든 종류의 단어가 문장의 의미를 결정하는데 큰 역할을 하지 않음</p>
<ul>
<li>nouns가 문장에서 가장 중요한 content words인 경우가 있음</li>
<li>반대로 preposition의 경우 덜 중요, context가 크게 변하지 않으면서 문장에서 빠지거나 더해질 수 있음</li>
</ul>
</li>
<li><p>이번 세션에서는 어떤 단어 종류가 다양한 문장 임베딩 방법에서 가장 relevant한지, 즉, 어떤 단어가 문장 쌍을 유사하다고 판단할 때 큰 영향을 끼치는지에 대해 분석한다</p>
</li>
<li><p>이를 위해, 관련 있다고 라벨링 된 문장 쌍 $(a,b)$을 선택해 (a,b)에 대한 코사인 유사도 점수를 가장 크게 감소시키는 단어를 찾음</p>
</li>
</ul>
<p>$$
\hat{w} = argmax_{w} (cossim(a,b)-min(cossim(a \backslash w,b), cossim(a,b \backslash w)))
$$
(즉, w가 없으면 유사도가 크게 떨어지는 w를 찾음)</p>
<ul>
<li><p>이후, $\hat{w}$에 대한 POS tag를 기록(CoreNLP사용)하고, 모든 문장 쌍에 대한 POS tag의 분포를 계산</p>
</li>
<li><p>아래 결과를 보면, 4개의 데이터셋에 대해 평균한 값이 나타나 있음</p>
</li>
<li><p>POS tagging에 대한 in-domain supervised model(SBERT-sup)와 prior distribution를 비교해봤을 때, NN이 문장에서 가장 관련 있는 content word라는 것을 알 수 있음.</p>
</li>
<li><p>반면에, Preposition(IN)과 determiniator(DT)와 같은 function word는 모델 예측에서 가장 적은 영향력을 끼친다는 것을 알 수 있음</p>
</li>
<li><p>학습 방식마다 POS tagging 분포 차이는 거의 없음</p>
<ul>
<li>즉, 비지도 학습 방식의 경우, 라벨링된 데이터가 없어도 문장에서 어떤 종류의 단어가 중요한지 학습할 수 있다는 것</li>
<li>단점으로는, 비지도 방식은 명사가 가장 중요하지 않은 task에서는 문제가 될 수 있음
<img src="https://velog.velcdn.com/images/lm_minjin/post/fd3f8a30-5e5c-41bd-914f-25e3bcd5e91c/image.png" alt=""></li>
</ul>
</li>
</ul>
<h3 id="8-discussion">8 Discussion</h3>
<ul>
<li>본 논문에서는 사전 학습된 transformer encoder를 가지고 실험</li>
<li>단일 encoder외에, BART, T5와 같은 사전학습된  encoder-decoder 모델도 존재</li>
<li>그러나, 이미 일반적인 도메인에 대해 다양한 auto-encoder loss로 학습되었기 때문에, reconstruction behavior에 overfitting될거라 생각</li>
<li>이를 증명하기 위해, BART-base와 T5-base model을 TSDAE로 4가지 domain specific dataset에 대해 학습
<img src="https://velog.velcdn.com/images/lm_minjin/post/4d91ae4b-e5d0-45d5-8b23-a54cb318f2ea/image.png" alt=""></li>
<li>T5와 BART 모두 Scratch보다 평균적으로 낮은 성능을 보임</li>
<li>TSDAE는 single encoder checkpoint에서 시작하는 것이 overffiting을 피하면서 사전 학습된 정보를 활용할 수 있어 더 적합하다는 결론</li>
</ul>
<h3 id="9-conclusion">9 Conclusion</h3>
<ul>
<li>사전 학습된 트랜스포머에 기반한 새로운 비지도 문장 임베딩 학습 방법인 TSDAE(Transformers and sequential denoising auto-encoder)를 제안</li>
<li>TSDAE와 최근의 다양한 SOTA비지도 학습 방법을 4개의 다양한 도메인, 다양한 task를 가진 데이터셋으로 3가지 다양한 환경에서 평가 : unsupervised learning, domain adaptation, pre-training </li>
<li>TSDAE가 다양한 환경, 데이터셋에서 다른 방법보다 뛰어남</li>
<li>현재 비지도 문장 임베딩 학습 방식을 평가하는 방법이(STS 점수만 주로 활용) 충분하지 않음을 보임<ul>
<li>STS에 대한 성능과 다른 특정 task에서의 성능은 상관관계가 없음</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] SMART : Sentence as Basic Units for Text Evaluation]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-SMART-Sentence-as-Basic-Units-for-Text-Evaluation</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-SMART-Sentence-as-Basic-Units-for-Text-Evaluation</guid>
            <pubDate>Tue, 02 Aug 2022 07:07:46 GMT</pubDate>
            <description><![CDATA[<h3 id="abatract">Abatract</h3>
<ul>
<li><p>SMART는 토큰 대신 문장을 matching시 기본 단위로 사용</p>
</li>
<li><p>또한 문장과 문장이 완전히 일치하는 방법이 아니라 matching function을 사용해 soft-matching되는 문장을 사용</p>
</li>
<li><p>Candidate 문장은 reference문장 뿐만 아니라 원문 문장과도 비교됨</p>
</li>
<li><p>결론적으로 SMART with model-based matching function는 system-level correlation에서 모든 metric과 비교해서 뛰어난 성능을 보임</p>
</li>
<li><p>SMART with string-based matching function은 현재의 model-based metric과 견줄만한 성능을 보임</p>
<h3 id="introduction">Introduction</h3>
</li>
<li><p>현재 텍스트 생성 태스크에서 발전을 저해하는 요소 중 하나는 바로 automatic evalutation!</p>
</li>
<li><p>현재의 automatic metric은 token-level의 matching에 의존하고 있음(ROUGE, BLEU)</p>
<ul>
<li>이러한 metric은 텍스트의 질을 평가하는 4가지 차원(coherence, factuailty, fluency, informativeness)에 대해 human judgment와 낮은 상관관계를 보임</li>
<li>이 때문에, 현재 텍스트 생성에서 평가는 소수의 데이터를 바탕으로 human elicitation study와 병행되고 있음</li>
</ul>
</li>
<li><p>혹은, 자동으로 모델이 생성한 텍스트를 평가하기 위해 pretrained language model를 leverage함</p>
</li>
<li><p>하지만 ROUGE와 LM-based metrics모두 3가지 큰 문제점을 가지고 있음</p>
<ul>
<li><p>이러한 metric은 문장이 길고, 여러 문장으로 되어있을수록 평가 성능이 낮아짐</p>
<ul>
<li>특히 ROUGE의 경우 긴 결과값에서 정보가 섞여있을 때 제대로 평가하지 못함(coherence를 평가하는데 있어 취약)</li>
<li>LM 기반의 평가 방식의 경우, max length가 정해져 있음
<img src="https://velog.velcdn.com/images/lm_minjin/post/39ccd3ac-8e9b-4407-8837-a82ecf2bc371/image.png" alt=""></li>
</ul>
</li>
<li><p>metric의 대부분이 평가시에 reference text만을 사용</p>
</li>
<li><p>LM 기반 모델들은 매우 느려질 수 있고, 이는 모델 development단계에서의 응용을 저해함</p>
<ul>
<li>그래서 이러한 단계에서는 ROUGE를 사용하지만, subdoptimal modeling으로 빠질 수 있음</li>
</ul>
</li>
<li><p>본 논문에선 automatic metric SMART(Sentence MAtching for Raring Text)를 제안</p>
<ul>
<li>길고 여러 문장인 텍스트를 잘 다루기 위해, matching시 basic unit을 token이 아닌 sentence로 사용</li>
<li>0과 1사이의 값이 나오는 soft-matching function을 사용</li>
<li>ROUGE와 유사하게 N에 따라 다양한 SMART버전의 평가 지표가 존재</li>
<li>SMART with BLEURT는 모든 차원에 대해서 뛰어난 성능을 보여줌</li>
<li>SMART with string-based matching function의 경우, 속도가 빠르고 별도의 자원이 필요하지 않음에도 기존의 model-based metric과 견줄만한 성능을 냄</li>
<li>또한, SMART는 더 긴 요약에 대해 뛰어나고, 특정 모델쪽으로의 biased가 덜함</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="related-work">Related Work</h3>
<p><strong>Strinb-based Text Evaluation</strong></p>
<ul>
<li>ROUGE</li>
<li>BLEU</li>
<li><em>Model-based Text Evaluation*</em></li>
<li>BERTScore</li>
<li>MoverScore</li>
<li>BLEURT</li>
<li>BARTScore</li>
<li><em>Factuality in summarization*</em></li>
<li>NLI based approaches</li>
<li>model-based approaches</li>
<li>QA based approaches</li>
</ul>
<h3 id="problem-definition">Problem Definition</h3>
<ul>
<li>$S$ : list of source document</li>
<li>$C$ : list of summaries generated for $S$ by a candidate system</li>
<li>$R$ : list of reference summaries produced by human annotators for $S$</li>
<li>$Q$ : list of dimensions of summary quality</li>
<li>$H_q$ : list of human-annotated scores for $C$ in temrs of a certatin summary quality $q$ (each $q \in Q$)</li>
<li>$f_q(S, R, C)$ : outputs a list of scores that correlates well with $H_q$</li>
<li>list of summary quality $Q$<ul>
<li>Coherence : The summary should be well structured and well-orgainzed. The summary should build from sentence to sentence to a coherent body of information about a topic</li>
<li>Factuality : The summary should only contain statements that are entailed by the source document</li>
<li>Fluency : The summary should have no formatting problems, capitalization errors or obviously ungrammatical sentences</li>
<li>Informativeness : The summary should include only important information from the source document</li>
</ul>
</li>
</ul>
<h3 id="sentence-matching-for-rating-text">Sentence Matching for Rating Text</h3>
<ol>
<li>sentence를 reference summaries와 system summaries사이의 matching basic unit으로 사용<ul>
<li>문장의 경우 완전히 일치하는 경우가 드물기 때문에, soft mathcing function을 사용</li>
</ul>
</li>
<li>SMART는 candidate summary와 reference summary, source document 모두를 고려해 점수 계산</li>
</ol>
<h4 id="smart-n">SMART-N</h4>
<ul>
<li>기본적으로 summaries를 문장 단위로 쪼개서 사용</li>
<li>SMART-N은 sentence macthing functino이 주어졌을 때 가장 높은 matching score를 가지는 $R$과 $C$사이의 sentence n-gram의 쌍을 찾음</li>
<li>문장 n-gram에서 문장의 수로 N을 사용하고, SMART-M은 다음과 같이 계산 가능
<img src="https://velog.velcdn.com/images/lm_minjin/post/1d81fea0-1382-4901-9730-01e547f2ca5b/image.png" alt=""><blockquote>
<p>직관적으로 안 와닿아서 생각해봤을 때, 
prec&#39;만 생각해보면 prec&#39;는 candidate의 max matching score의 합이고, 각각의 $c_j$는 r과 1:1매칭을 해서 나온 matching score의 N개를 평균 냈을 때 가장 큰 값을 택하는 것. 
즉, ref 문장 3개가 비슷한 내용에 대한 요약이고, cand 문장 3개도 비슷한 내용에 대한 요약이라면 둘의 위치가 유사하지 않아도 어차피 최대값을 택할 것이니까, 이에 대한 matching score는 크게 나올 것. (해석이 잘못 이상하다면 댓글 남겨주세요!)
<img src="https://velog.velcdn.com/images/lm_minjin/post/c7dfabda-b814-4300-afaa-6a57f9ae5629/image.png" alt=""></p>
</blockquote>
</li>
</ul>
<h4 id="smart-l">SMART-L</h4>
<ul>
<li><p>ref 요약과 candidate 요약에서 문장들의 Longest Common Sumbsequence(LCS)</p>
</li>
<li><p>원래 LCS와의 차이가 있다면, exact match가 아닌 soft match사용</p>
</li>
<li><p>$X = [x_i], Y= [y_j]$
Find two soft-subsequences $x_{i_1},...,x_{i_l}$ and $y_{j_1}, y_{j_l}$ of length with $i_{k-1}\leq i_{k} \leq i_{k+1}$ and $j_{k-1}\leq j_{k} \leq j_{k+1}$</p>
</li>
<li><p>normal subsequences와 달리, soft-subsequences는 이전 문장으로는 돌아갈 순 없지만 sentences의 반복은 허용($\leq$덕분에!)</p>
</li>
<li><p>이렇게 허용한 이유는, 한 문장 내용이 다른 요약문에선 여러 문장에 걸쳐서 나올 수 있기 때문
<img src="https://velog.velcdn.com/images/lm_minjin/post/b475c6a0-a835-4eec-b7a7-213e9bf9e2e3/image.png" alt="">
<img src="https://velog.velcdn.com/images/lm_minjin/post/eca301f9-0bc2-49fb-99af-6e0b48c5e597/image.png" alt=""></p>
<h4 id="comparing-with-source">Comparing with Source</h4>
</li>
<li><p>SMART는 candidate system을 reference summary와 비교할 뿐만 아니라 source document와도 비교!
1) candidate system summary $C$와 reference summary $R$비교
2) candidate system summary $C$와 source document $S$와 비교
3) 이 두 점수 중 큰 값을 최종 score로 사용
<img src="https://velog.velcdn.com/images/lm_minjin/post/a523367b-62e8-450a-87c8-1173f010b215/image.png" alt=""></p>
<h4 id="multiple-references">Multiple References</h4>
</li>
<li><p>각 reference에 대해서 SMART를 계산한 뒤, 최대값을 최종 점수로 사용</p>
</li>
<li><p>직관적으로 봤을 때, candidate system summary는 최소 하나
reference summary와 맞으면 되기 때문</p>
<h4 id="shorter-acronym">Shorter Acronym</h4>
</li>
<li><p>SMART의 여러 변형을 표기하기 위해 다음과 같이 씀
$S[1|2|L] - m$
여기서 m은 matching function을 의미
ex) SMART-1 with a BLEURT는 S1-BLEURT라고 씀</p>
</li>
</ul>
<h3 id="sentence-matching-functions">Sentence Matching Functions</h3>
<p>-SMART는 sentence matching function에 따라 다양한 버전을 만들 수 있음</p>
<ul>
<li>NMT와 summarization에 널리 사용되는 6가지 sentence matching functnions을 실험<ul>
<li>string-based<ul>
<li>ROUGE : It measures the number of overlapping textual units</li>
<li>BLEU : It is a precision-focused metric that calculates n-gram overlap between two texts and also includes a brevity penalty</li>
<li>CHRF : It calculates character-based n-gram overlap between system and reference sentences. It is more effective especially in morphologically-rich languages</li>
</ul>
</li>
<li>model-based <ul>
<li>BERTScore : It computes similarity scores by alignming tokens from reference and candidate summaries, and token alignments are computed greedily to maximize cosine similarity</li>
<li>T5-NALI : It used T5 finetuned on the ANLI dataset to produce a score between 0 and 1. We use the source/reference as premise and the candidate summary as hypothesis</li>
<li>BLEURT : It uses BERT that is trained to predict human judgment scores using a small-scale dataset. To make it more robust, the model is first pretrained with a large-scale synthetic dataset. Moreover, It is optimized using several objectives including ROUGE, BLEU, BERTScore, and entailments.</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="experiments-and-results">Experiments and Results</h3>
<h4 id="experimental-setting">Experimental Setting</h4>
<p><strong>Dataset and Evaluation</strong></p>
<ul>
<li>SummEval : a document summarization meta-evaluation suite consisting of summaries form the CNN/DM dataset<ul>
<li>Annotation은 2단계로 매겨짐</li>
<li>100개의 데이터에 대해 16개의 모델이 생성한 1600개의 요약문에 대해서 각 text qauilty aspect에 1~5점 사이의 점수를 매김</li>
<li>각 데이터는 또한 11개의 reference summaries를 가짐 : CNN/DM dataset에 원래 있던 정답 요약문 + 10명의 사람이 직접 작성한 요약문</li>
<li>평가를 위해서, 각 시스템의 점수를 평균내고, 이를 바탕으로 Kendall tau를 사용해서 system-level correlation을 계산</li>
</ul>
</li>
</ul>
<h4 id="smart-with-different-matching-functions">SMART with Different Matching Functions</h4>
<ul>
<li>우선 6가지 다양한 matching function을 서로 비교하는 실험을 진행
<img src="https://velog.velcdn.com/images/lm_minjin/post/617ffad4-8670-4fd8-b354-e14a9d359144/image.png" alt=""></li>
<li>각각의 coh, Fac, Flu와 Inf는 coherence, factuality, fluency, informativeness를 의미</li>
<li>string-based matching function에서는 CHRF가, model-based matching function에서는 BLEURT가 가장 우수한 성능을 보임<ul>
<li>그 이유는 논문에 따르면 BLEURT가 문장이 일치하는지에 대한 학습 뿐만 아니라 다양한 ROUCE, BLEU, BERTScore, entailment scores까지 예측하도록 최적화되었기 때문이라고 추측</li>
</ul>
</li>
<li>특이한 점은 T5-ANLI를 matching function으로 썼을 때, factuality부분에서 가장 성능이 떨어짐<ul>
<li>그 이유는 논문에서 문장을 넣을 때 주변 맥락 없이 matching function에 태웠기 때문이라고 추측</li>
</ul>
</li>
</ul>
<h4 id="smart-compared-to-other-text-evaluation-metrics">SMART Compared to Other Text Evaluation Metrics</h4>
<ul>
<li><p>3가지 종류의 SMART를 비교 - string-based, source-free, source-dependent model-based</p>
</li>
<li><p>String-based metrics</p>
<ul>
<li>ROUGE 1/2/L : reference와 output summaries사이의 token 단위의 overlap을 측정</li>
<li>BLEU : precision에 초점을 두고 referece와 output summaries간의 token단위의 overlap으 측정</li>
<li>CHRF : reference와 output summaries사이의 문자 기반의 n-gram의 overlap을 측정</li>
<li>S1/2/L-CHRF : string-based matching function을 사용한 최고 성능의 SMART metric</li>
</ul>
</li>
<li><p>Source-free model-based</p>
<ul>
<li>BERTScore : BERT모델을 기반으로 토큰 수준의 유사도 점수를 계산해서 aggregate</li>
<li>MoverScore : Word Mover&#39;s Distance를 사용해서 reference와 candidate summaries의 BERT n-gram 임베딩사이의 의미적 거리를 측정</li>
<li>BLEURT : gold/silver-standard human judgment scores를 가진 real and synthetic training data을 합쳐서 BERT를 finetune</li>
</ul>
</li>
<li><p>Source-dependent model-based metrics</p>
<ul>
<li>PRISM : leverages a zero-shot paraphrasing model and uses probailites from force-decoding the candidates summary given the source as input</li>
<li>$Q^2$ : question generation과 question answering모델을 사용해서 원문을 기반으로 생성한 질문을 요약문으로 답할 수 있는지(entail되는지) 확인</li>
<li>T5-ANLI : 원문을 premise로 요약을 hypothesis로 주어질 때 entailment score를 계산하도록 T5를 ANLI dataset으로 파인튜닝</li>
<li>BARTScore : evaluates text using probailities from force-decoding the candidate summary given the source as input using BART without finetuning with CNN/DM summarization dataset</li>
<li>BARTScore+CNN : evaluates text using probailities from force-decoding the candidate summary given the source as input using BART with finetuning with CNN/DM summarization dataset</li>
<li>S1/2/L-BLEURT : Table1에서 최고 성능을 기록한 model based matching function을 사용한 SMART metric
<img src="https://velog.velcdn.com/images/lm_minjin/post/79cf94fc-2949-4c9d-ba35-76bedcc209a6/image.png" alt=""></li>
</ul>
</li>
<li><p>SMART with BLEURT matching function은 가장 높은 correlation을 보임</p>
</li>
<li><p>SL-BELURT는 coherence와 informativeness에서 뛰어남</p>
</li>
<li><p>S1-BELURT와 S2-BELURT는 factuality와 fluency에서 각각 뛰어남</p>
</li>
<li><p>평균적으로 SL-BLEURT가 가장 좋은 성능을 보임</p>
</li>
<li><p>다양한 quality dimension에 대해 뛰어난 SMART버전이 다르므로 여러개를 사용하는 것을 추천</p>
</li>
<li><p>source-dependent metrics이 source-free보다 뛰어남</p>
<ul>
<li>즉, 요약문을 평가할 때 원문을 사용하는 것이 중요!</li>
</ul>
</li>
<li><p>또한, SMART의 경우 기존의 LM-based metrics보다 pretrained language models를 사용하지 않아도 견줄만한 성능을 보임</p>
</li>
</ul>
<h4 id="ablation-studies">Ablation Studies</h4>
<ul>
<li><p>SMART-X : SMART-1, SMART-2, SMART-L을 평균낸 것
<img src="https://velog.velcdn.com/images/lm_minjin/post/c7f308dc-989a-4254-8796-ea14441aa0ac/image.png" alt=""></p>
</li>
<li><p>compare SMARTs using precision or recall only(첫번째 블록)</p>
<ul>
<li>precision이나 recall만 사용한 SMART-X이 f-measure를 사용한 것 보다 훨씬 낮은 system-level correlation을 보임</li>
</ul>
</li>
<li><p>candidate summaries를 비교하는 SMART score를 aggregate하는 다양한 방법 비교(두번째 블록)</p>
<ul>
<li>reference or source만 사용할 때 SMART의 점수가 크게 나빠짐<ul>
<li>즉, source와 reference를 둘다 사용하는게 SMART에선 필수적!</li>
</ul>
</li>
<li>aggregation방법으로 average, minimum 등을 사용해봤지만 maximize하는게 제일 좋았음</li>
<li>특이한 점은 reference summaries만 가지고 SMART를 계산했을 때 모든 차원에서 음수가 나온 것<ul>
<li>CNN/DM의 정답 요약문은 사람의 평가 관점에서 모델이 생성한 요약문보다 좋지 않음</li>
</ul>
</li>
</ul>
</li>
<li><p>다양한 reference summary를 사용해서 평가(세번째 블록)</p>
<ul>
<li>SummEval의 reference summaries를 CNN/DM의 원래 summaries로 교체 --&gt; 표에서 CNN/DM</li>
<li>human score가 가장 높은 best system summary(generated summary)를 reference summary로 사용 --&gt; 표에서 best system</li>
<li>결과를 보면, ref-only(CNN/DM)의 경우 음수가 나옴</li>
<li>reference로 best system summary을 사용했을 때, 모든 차원에서 양수의 상관관계를 얻음</li>
</ul>
</li>
</ul>
<h3 id="further-analyses">Further Analyses</h3>
<p><strong>SMART Works Well with Longer Summaries</strong></p>
<ul>
<li>reference summary에 있는 평균 토큰의 수를 기반으로 데이터셋을 4개로 나눠서, 첫번째 bucket에는 가장 짧은 reference summaries를 가진 데이터로 구성</li>
<li>각 bucket에 대해서 모든 비교 metric의 system-level correlation을 계산
<img src="https://velog.velcdn.com/images/lm_minjin/post/b12d2bb3-6f77-4292-89e4-efb853502643/image.png" alt=""></li>
<li>모든 metric이 ROUGE에 비해 43개 토큰보다 긴 요약문에 대해선 뛰어남<ul>
<li>즉, ROUGE는 긴 요약문을 평가하는데에 있어 적합하지 않음</li>
</ul>
</li>
<li>ROUGE는 또한, 첫번째 bucket에서 가장 낮은 성능으 보이는데, 이는 ROUGE가 짧은 요약문을 평가하는데에도 적합하지 않다는 것을 의미</li>
<li>비교 metric중에서 SX-BLEURT가 전반적으로 뛰어난 성능을 보임</li>
</ul>
<p><strong>SMART is Less Biased towards Specific Models</strong></p>
<ul>
<li>각 quality dimension에 대해 다양한 요약 모델을 가지고 automatic metrics과 사람이 매긴 점수와의 ranking차를 시각화<ul>
<li>이를 통해, metric이 특정 모델에 bias가 있는지 확인 가능</li>
</ul>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/9d2a6472-e501-424d-9b1c-910def0c2c5b/image.png" alt=""></p>
<ul>
<li>모든 metric은 일반적으로 extractive system을 높게 평가하는 경향이 있음<ul>
<li>현재의 automatic metric으로 평가할 때 extractive와 abstractive model을 분리해서 비교할 필요가 있음</li>
</ul>
</li>
<li>BARTScore가 BART를 굉장히 높게 평가함<ul>
<li>요약문 평가할 때 을 pretrained encoder-decoder 모델을 사용하면 같은 모델로 finetune한 ㅇ약 모델 쪽으로 bias가 생김</li>
</ul>
</li>
<li>SX-BLEURT가 human score와 rank가 0에 가깝기 때문에 가장 biased가 덜하다는 것을 볼 수 있음<ul>
<li>이 결과가 맞는지 수치적으로 측정하기 위해 rank difference의 표준편차와 pairwise ranking accuracy를 사용. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/88a73747-2c1b-4c9c-8455-b9e62439c0c1/image.png" alt=""></li>
<li>표4를 보면, SX-BLEURT가 가장 낮은 표준편차를 갖고 있고, 모든 quality dimension에 대해 가장 높은 pairwise rank accuracy를 가진다는 것을 알 수 있음
==&gt; 진짜로 이 metric이 가장 적은 bias를 가지고 있다!</li>
</ul>
</li>
</ul>
<h3 id="conclusion">Conclusion</h3>
<ul>
<li>SMART는 문서 요약을 평가할 때 summary quality의 4가지 모든 측면에서 뛰어남</li>
<li>SMART는 요약문의 길이가 길어짐에 따라 나은 성능을 보이고 가장 덜 biased된 평가를 함</li>
<li>실험 결과를 바탕으로, SMART[1|2|L]-BLEURT를 사용하는 것을 추천</li>
<li>빠른 평가를 위해서는 SMART[1|2|L]-CHRF를 사용하는 것을 추천</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Faithful or Extractive? On mitigating the Faithfulness-Abstractiveness Trade-off in Abstractive Summarization]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Faithful-or-Extractive-On-Mitigating-the-Faithfulness-Abstractiveness-Trade-off-in-Abstractive-Summarization</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Faithful-or-Extractive-On-Mitigating-the-Faithfulness-Abstractiveness-Trade-off-in-Abstractive-Summarization</guid>
            <pubDate>Fri, 29 Jul 2022 05:50:32 GMT</pubDate>
            <description><![CDATA[<p>본 논문은 2021년 ACL에서 발표된 논문입니다.</p>
<p>생성 요약에서 발생하는 incosistency를 줄이기 위해 많은 연구자들이 다양한 모델을 내놓고 있는데, 이러한 모델들의 성과가 faithfulness와 abstractiveness사이에 trade-off관계를 이용한 faithfulness 성능 향상은 아니었을까?에 대한 의문을 조금이나마 해소해주는 논문입니다.</p>
<blockquote>
<p>consistency == faithfulness == factuality 
inconsistency == nonfaculity == hallucination
이러한 표현들은 생성요약에서 섞여서 사용되니 알아두시면 논문을 읽기 편합니다!</p>
</blockquote>
<h3 id="abstract">Abstract</h3>
<p>현재 생성요약에서의 고질적인 문제인 faithfulness error를 개선하기 위해 다양한 연구들이 진행되고 있습니다. 이전에faithfulness를 향상하기 위해 제안된 모델들이 정말 faithfulness를 높였는지는 명확하지 않습니다. 즉, 이들의 향상된 faithfulness가 요약 모델을 더 extractive하게 만들어서 달성한 결과인지 아닌지에 대한 지표 혹은 연구가 부족합니다. </p>
<p>따라서 본 논문에서는 faithfulness-abstractiveness trade-off curve를 만들며 <strong>요약 시스템에서 &quot;effective faithfulness&quot;를 평가하는 프레임워크를 제안</strong>합니다. </p>
<ul>
<li>이를 통해, baseline뿐만 아니라 faithfulness를 위해 최근에 제안된 방법론들이 같은 수준의 abstractiveness에서 control에 대해 지속적인 향상에 실패했다는 것을 보입니다.</li>
<li>마지막으로, 주어진 문서에 대해 가장 faithful하고 abstractive한 summary를 식별하는 selector를 학습시켜, 이러한 시스템이 abstractive도 baseline보다 높으면서 human evaluation에서도 높은 faithfulness score를 얻을 수 있다는 것을 보입니다.</li>
</ul>
<h3 id="introduction">Introduction</h3>
<p>직관적으로, 생성된 요약의 faithfulness를 향상시키는 방법은 원문에서 content를 그대로 갖고 오는 것입니다(i.e. more extraction). 이와 같이, 어떠한 방법론으로 인해 extractiveness 수준이 높아진다면 faithfulness 역시 높아지게 됩니다. 그래서 extractiveness으로 인한 faithfulness향상과 향상된 abstraction으로 인핸 faithfulnes향상을 분리해서 볼 필요가 있습니다.</p>
<p>이러한 필요성에서 시작해서, 본 논문에서는 <em>effective faithfulness</em>, 즉 같은 수준의 extractiveness에서 작동하는 baseline모델(<em>control</em>)에 대한 faithfulness의 향상을 고려하여, faithfulness를 평가하는 프레임워크를 제안합니다. 특히, 학습 데이터를 summary의 extractivness에 따라 다른 그룹으로 분리하여 각 그룹의 <em>control models</em>를 학습합니다. 이러한 각 모델의 결과를 바탕으로 trade-off curve를 형성하고, 이는 오로지 extractiveness에 의존해 얼마나 많은 faithfulness를 높일수 있는지를 알려줍니다. 만약 모델이 <em>effective faithfulness</em>를 향상시켰다면 이 curve의 위쪽에 위치가헤 됩니다.</p>
<blockquote>
<p>이 프레임워크를 사용하여, 최근에 제안된 방법론의 향상된 faithfulness가 주로 증가된 extractiveness에서 기인한 것임을 보였습니다. 그리고 추가적인 연구를 통해 system이 baseline system보다 더 abstractive하면서 faithful할 수 있는지 확인했습니다. 다양한 extractiveness 정도에 따라 output summaries가 있는 human annotated data의 하위 집합에 대해selector를 학습시키고, 원문에 대해 faithful하면서 가장 abstractive한 output을 선택하였습니다. 그 결과, baseline모델에 비해 더 faithful하고 abstractive할 수 있었습니다.</p>
</blockquote>
<p>그래서 요약하자면, </p>
<ol>
<li><p>같은 모델을 가지고 데이터를 extractiveness에 따라 나눠 각각의 데이터에 대해 학습시켜 faithfulness-abstractiveness trade-off curve를 만듦. 이를 바탕으로 모델이 <em>effective faithfylness</em>를 향상시킨 것인지 평가 가능.</p>
</li>
<li><p>1번을 사용해 최근 모델이 향상한 faithfulness는 extractiveness에서 주로 기인한 것이라는 걸 보임.</p>
</li>
<li><p>selector를 제안하며, 이 방법이 현재 존재하는 방법론에 비해 더  높은 <em>efective faithfulness</em>를 달성했다는 것을 보임.</p>
</li>
</ol>
<h3 id="dataset">Dataset</h3>
<p>최대한 덜 extractiveness하고 hallucination이 없는 데이터셋으로 선정</p>
<ul>
<li>Gigaword : headline generation dataset that contains around 4M examples. source document is first sentence of article, summary is headline of article.</li>
<li>Wikihow : dataset of how-to articles covering a diverse set of topics, collected from the wikihow.com website. There are about 12M such paragraphs in the dataset, paired with a one setence summary.</li>
</ul>
<h4 id="dataset-extractiveness">Dataset Extractiveness</h4>
<p>data의 extractiveness를 측정하기 위해, <em>extractive fragment coverage*와 *extractive fragment density를</em> 사용하였습니다. 이 둘은 각각 coverage와 density를 나타냅니다</p>
<ul>
<li>Coverage : the percentage of words in summary that are from the source article</li>
<li>Density : the average length of the text spans copied from the document that are contained in the summary. </li>
</ul>
<h3 id="analysis-on-metrics-of-faithfulness">Analysis on Metrics of Faithfulness</h3>
<p>최근의 faithfulness evaluation은 모델을 기반으로 원문에 대해 요약문이 faithful한지를 판별하는 방식의 atomated metrics를 제안합니다.
예를 들어, </p>
<ul>
<li>Entailment : pretrained entailment based method를 사용해 생성된 결과가 원문에 entailed되는지를 평가</li>
<li>FactCC : rule-based transformation을 적용해 hallucinated summaries를 생성하고, 이를 사용해 버트 기반 모델이 generated output이 faithful한지 아닌지를 분류하도록 학습시킴</li>
<li>DAE : word-, dependendy- and sentence-level faithfulness에 대한 fin-grained annotation을 수집해서 factuality detection model을 학습하는데 사용</li>
</ul>
<p>아래의 그림을 살펴보면, 다양한 생성 요약 모델로 생성된 결과의 평균 coverage와 평균 metric 점수사이의 관계를 알 수 있습니다. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/38049def-39cd-4f0d-83ae-543a02ed5c85/image.png" alt="">
이 장표를 보면 extractiveness와 faithfulness scores사이에 양의 상관관계가 존재함을 알 수 있습니다. 즉, 모델이 더 extractive한 summary를 생성할수록, 더 높은 faithfulness점수를 받을 것입니다. 이러한 관계로 인해 모델이 높은 factuality score를 달성해도 이것이 extractive에서 기인한 것인지 혹은 전과 같은 extractiveness수준에서 faithful summary를 만들어 점수가 높아진 것인지 알 수 없습니다. 이를 통해 faithfulness를 비교할 땐, extrativeness정도도 함께 고려해야함을 알 수 있습니다.</p>
<h3 id="evaluating-effective-faithfulness">Evaluating Effective Faithfulness</h3>
<p>본 논문에서는 모델의 extractiveness도 고려하는 <em>effective faithfulness</em>를 평가하는 프레임워크를 제안합니다. 이를 위해서, 우리는 우선 다양한 수준에서의 extractiveness에서 작동하는 모델의 faithfulness를 결정할 필요가 있습니다. 이를 <em>Faithfulness-Abstractiveness Tradeoff</em>라 부릅니다. 모델의 <em>effective faithfulness</em>은 간단하게 모델의 faithfulness score와 trade-off curve에 따라 같은 평균적인 extractiveness에서 작동하는 모델의 점수를 상대적 비교하는 것입니다.</p>
<h4 id="faithfulness-abstractiveness-tradeoff">Faithfulness-Abstractiveness Tradeoff</h4>
<p>제안된 모델의 향상된 faithfulness를 효과적으로 분석하기 위해, 그 모델의 extractiveness를 고려하는 것이 필요합니다. 본 논문에서는 faithfulness를 향상시키는 다른 외부 요인 없이 다양한 수준의 extractivenss에 대해 pre-trained BART모델을 파인튜닝했습니다. 그리고 이 모델을 이용해 요약 모델의 <em>effective faithfylness</em>를 측정하기 위한 control로써 <em>faithfulness-abstractiveness trade-off curve</em>를 만들었습니다. <em>effective faithfulness</em>를 향상시킨 모델은 반드시 <em>faithfulness-abstractiveness trade-off curve</em>위에 놓여 있어야 합니다.</p>
<p>특히, 원문에 대해 reference summary의 coverage를 계산해 extrativeness quartiles에 따라 학습 데이터를 sub-sample했습니다. 이 후 각각의 quartiles에 대해 BART를 파인튜닝시켜 다양한 수준의 extractiveness를 가진 quartile model를 만들었습니다. 거기에 더해, 모든 데이터에 대해 BART를 파인 튜닝해 baseline를 만들었습니다.</p>
<p>랜덤하게 선택한 200개 데이터에 대해 각 모델이 생성한 요약문에 faithfulness annotation을 수집했다. 우리는 AMT를 이용해 데이터별로 3개의 annotations을 받았고, 각 데이터에 대해 &quot;faithful&quot;이라고 선택한 annotators의 percentage를 계산해 이를 faithfulness score로 사용했습니다. 아래의 표를 보면 baseline과 quartile model에 대한 coverage와 faithfulness점수를 볼 수 있고, Q1는 가장 abstractive한 qurtile을, Q4는 가장 extractive quartile를 나타냅니다. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/2285b2bd-e060-408d-89b6-5c43d1b4c9b4/image.png" alt="">
우리는 더 extractive한 quartiles에 파인튜닝한 모델이 더 훨씬 더 높은 coverage와 faithfulness score를 가진 요약문을 생성한다는 것을 알 수 있었습니다. baseline모델은 Gigaword와 Wikihow 모두에 대해 Q3에 가까운 coverage를 가진 비교적 extractive한 결과물을 생성했습니다. 게다가, baseline모델의 경우 Gigaword에 대해 Q3에 대해 파인튜닝된 모델보다 더 높은 coverage를 가졌지만, faithfulness 점수는 낮았습니다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/0f91aa30-f277-47e3-9afc-bae0f13e4e9b/image.png" alt="">
표1을 보면, Wikihow 데이터의 원문과 각 baseline, quartile 모델이 생성한 요약문이 나타나있습니다. 생성된 요약문들이 의미적으로 매우 유사하다는걸 알 수 있지만 Q1 모델이 생성한 요약문의 경우 타 모델이 생성한 요약문에 비해 novel word가 많이 등장하는 것을 볼 수 있습니다. 반대로 Q4모델의 경우 coverage가 1, 즉, 생성한 요약문의 모든 단어가 원문에 등장하는 단어라는 것을 알 수 있습니다. 평균적으로 Q1 모델이 Q4모델에 비해 더 abstractive하고 덜 faithfulness한 요약문을 생성합니다.</p>
<h3 id="mitigating-the-trade-off">Mitigating the Trade-off</h3>
<h4 id="oracle-experiments">Oracle Experiments</h4>
<p>몇가지 human judgements이 가능한 oracle experiments를 설계해 faithfulness-abstractiveness tradeoff를 완화할 수 있는지에 대해 알아봅시다. </p>
<p><strong>baseline + faithfulness(bf)</strong>
3명 중 2명 이상의 annotator가 faithful하다고 판단한 baseline output을 사용했습니다. 만약 baseline output이 faithful하지 않다면, baseline과 유사한 coverage를 ㅏ지지만 faithfylness를 보존하는지를 보기 위해, 우리는 baseline보다 더 extractive한 quartile model에서 output을 선택했습니다. 
==&gt; faithful하면 baseline output, baseline output이 faithful하지 않으면 유사하거나 더 높은 extractiveness를 가진 quartile model의 output사용</p>
<p><strong>baseline + faithfulness-extractiveness(bfe)</strong>
이 oracle system은 baseline output이 unfaithfyl할 때 위에 서술한 것과 유사하게 작동합니다. 하지만, 결과값이 faithful할 때 항상 baseline 결과를 선택하는 것이 아니라 quartile모델의 결과같 중에 baseline보다 더 abstractive한게 있다는 그 결과값을 택합니다. 
==&gt; baseline, quartile모델들 중에서 가장 abstractive하면서 faithful한 모델의 결과값을 사용</p>
<p><strong>quartile + faithfulness-extractiveness(qfe)</strong>
faithful를 유지하면서 abstractive한 결과값을 생성할 수 있는지 알아보기 위해 4개의 quartile model중에서 가장 abstractiveness가 높은, 가장 faithful한 결과값을 선택합니다.</p>
<p><strong>Analysis</strong>
<img src="https://velog.velcdn.com/images/lm_minjin/post/d28c9774-54df-48eb-a241-258e47d7e4e0/image.png" alt="">
표3을 보면, Gigaword와 Wikihow에 대해 baseline과 이러한 oracles에 대한 coverage와 faithfylness를 볼 수 있습니다. bf를 보면 baseline과 유사한 수준의 abstractivenss에서 더 faithful할 수 있다는 것을 알수 있습니다. 게다가, bfe를 통해 더 faithful하면서 baseline보다 더 abstractive할 수 있다는 것도 알 수 있습니다. quartile model들에서 가장 faithful하고 abstractive output을 선택하는 것은 baseline에 비해 낮은 coverage를 유지하면서도 매우 높은 faithfulness score에 도달할 수 있다는 것을 보여줍니다. 이러한 oracle analysis를 통해 우리는 extractivenss수준을 조절함으로써 faithfulness-abstractiveness trade-off를 완화시킬 수 있는 모델을 만드는 것이 가능하다는 것을 알 수 있었습니다. 이러한 분석 결과에 따라, 본 논문에서는 자동적으로 faithfulness-abstractiveness trade-off관계를 완화하는 selection을 할 수 있는 selector를 학습시킬 수 있는지에 대해 추가적인 연구를 진행하였습니다. </p>
<h4 id="loss-trucation">Loss Trucation</h4>
<p>Kang과 Hashimoto는 모델에서의 결과값과 reference와의 차별성을 최대화하기 위해, 큰 loss의 데이터를 적절하게 제거하는 방법을 제안했습니다. 그들은 이러한 Loss Truncation 모델에 의해 생성된 데이터가 다른 baseline 방법에 비해 더 높은 factuailty rating을 달성했다는 것을 보였습니다. 우리는 이 방법이 faithfylness-abstractiveness trade-off의 관점에서 어디에 놓여있는지, 이들이 정말로 control에 비해 더 effective faithfulnfess를 달성했는지를 관찰합니다.</p>
<h4 id="dependency-arc-entailmenddae">Dependency Arc Entailmend(DAE)</h4>
<p>Goyal과 Durrett가 제안한 factuality evaluation metric(DAE)는 생성된 결과에서 각각의 dependency arc가 input과 consistent한지를 평가합니다. 그들은 그들의 제안된 metric이 기존의 factuality metrics에 비해 더 좋다는 것을 입증했고, generated output이 non-factual한 부분을 localize할 수 있습니다. Goyal과 Durrett는 factuality error를 localize하는 DAE의 장점을 이용해 오직 DAE metric에 따라 factual하다고 여겨지는 token의 subset에 대해서만 요약 모델을 학습했습니다. 우리는 이러한 방법론을 따라 요약 모델을 학습시키고, 우리의 평가 프레임워크를 사용해 모델을 평가합니다.</p>
<h4 id="selector-model">Selector Model</h4>
<p>우리는 trade-off를 향상시키기 위해 가장 abstractive하지만 faithfyl한 결과값을 식별할 수 있는 selector를 제안합니다. 우리는 우선 quartile 모델을 사용해 4개의 후보 요약문을 생성합니다. 이 겨과는 다양한 수준의 extractiveness를 가지게 됩니다. 우리의 selector를 위해, 우리는 trade-off curve를 생성하기 위해 수집한 데이터에 대해 FactCC모델을 학습시키고(10-fold cross validation), 생성한 요약문에 대해 faithfulness 점수를 매기도록 합니다. 게다가, ROC curve아래의 지역을 최대화하는 faithfulness score에 대한 threshold를 학습합니다. text fold에서 각 데이터에 대해, 우리는 FactCC기준 faithful하면서 가장 abstractive한 후보를 선택합니다. </p>
<p>ROC curve아래의 지역을 최대화하는 것 대신, 우리는 $F_/beta$ 점수를 최대화하기 위한 faithfylness threshold를 조정할 수 있습니다(<strong>Selector-$F_/beta$</strong>). $F_/beta$를 사용해서, $/beta$가 1보다 작으면 우리의 selector의 precision에 더 높은 가중치를 준 것이고, 즉 coverage가 높으면서 faithfulness한 결과가 나오게 됩니다.</p>
<p>우리는 FactCC가 다양한 데이터셋에 대해 학습되어 있기 때문에 원하는 데이터에 대해 파인튜닝하는 것이 중요하다는 것을 알았고, 이는 그 전의 연구 결과와 일관됩니다.</p>
<h4 id="results">Results</h4>
<p>표 4를 보면, baseline, Loss Truncation, DAE 그리고 selector에 대한 coverage와 faithfulness를 알 수 있습니다. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/74d79904-fa65-494a-b689-b2803ebd184f/image.png" alt=""></p>
<ul>
<li><p>더 작은 $/beta$을 가지는 Selector가 더 extractive하고 faithful한 결과를 얻음
==&gt; faithfulness와 abstraciveness사이에 trade-off관계가 있다!</p>
</li>
<li><p>Selector-ROC와 Selector-$F_/beta$ 모두에 대해, baseline보다 coverage는 낮으면서 faithfulness점수는 높은 결과를 만듦</p>
</li>
<li><p>Wikihow에 대해선, Selector-ROC가 Loss Truncation에 비해 낮은 coverage + 유사한 faithfylness를 가진 요약문을 생성</p>
</li>
<li><p>$F_/beta$를 0.1로 할 때 DAE와 Loss trucation과 유사한 coverage level에서 더 높은 faithfulness를 달성</p>
</li>
<li><p>Gigaword에 대해, Select-ROC는 DAE와 Loss Truncation에 비해 훨씬 낮은 coverage를 가진 겨과를 생성</p>
</li>
<li><p>Selector-$F_/beta$는 더 높은 faithfulness score를 가지면서도 Loss Turncation에 비해 유사한 ouverage를 갖는 결과값을 생성</p>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/20447629-39e1-4134-a638-1cd258bb1902/image.png" alt="">
위의 그래프에서 점선 위쪽에 있어야 <em>effective faithfulness</em>를 향상시켰다고 볼 수 있습니다.</p>
</li>
<li><p>Gigaword와 Wikihow 모두에 대해, Selector-ROC는 위쪽에 위치. trade-off 향상시킴.</p>
</li>
<li><p>baseline과 Loss Trucnation모델은 아래에 위치, 더 나쁜 trade-off 얻음</p>
</li>
<li><p>Selector-$F_/beta$를 사용해 서너개의 모델이 Gigaword와 Wikihow 모두에 대해 curve 위쪽에 놓여있는 것을 알 수 있음
==&gt; selector 방법은 abstractiveness-extractiveness spectrum에서 다양한 점들이 효과적인 <em>effective faithfulness</em>를 얻을 수 있다는 것을 보여줌</p>
</li>
<li><p>DAE기반 모델의 경우 Wikihow에서는 curve 위쪽에 존재하지만, Gigaword에 대해선 아래쪽에 위치하며 모델의 성취가 데이터셋에 일관되지 못하다는 것을 보임</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] TRUE : Re-evaluating Factual Consistency Evaluation]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-TRUE-Re-evaluating-Factual-Consistency-Evaluation</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-TRUE-Re-evaluating-Factual-Consistency-Evaluation</guid>
            <pubDate>Thu, 16 Jun 2022 05:47:00 GMT</pubDate>
            <description><![CDATA[<h3 id="abstract">Abstract</h3>
<ul>
<li>원문 기반 텍스트 생성은 factual inconsistency라는 치명적 단점 존재<ul>
<li>factual inconsistency는 생성문이 원문과 맞지 않는 사실 또는 존재하지 않는 사실을 내포하는 것을 의미</li>
</ul>
</li>
<li>그래서 최근에 다양한 factual consistency evaluation 기법이 등장<ul>
<li>하지만 이러한 기법은 하나의 태스크 또는 데이터셋에 맞춰서 개발되어 적용하기 어려움</li>
<li>또한 system-level에서 사람 annotation과의 상관관계에 초점
==&gt; example-level에서 accuracy는 분명하지 않음</li>
</ul>
</li>
<li>이러한 문제를 해결할 수 있는 데이터 단위의 evaluation protocol이 가능하게 표준화 ==&gt; TRUE!</li>
</ul>
<h3 id="1-introduction">1 Introduction</h3>
<ul>
<li><p>텍스트를 생성해야하는  task에서 다음과 같은 factual inconsistency가 발생
<img src="https://velog.velcdn.com/images/lm_minjin/post/e6c4cd6f-3c05-46d9-b414-94284aa58db8/image.png" alt=""></p>
</li>
<li><p>이러한 문제를 해소하기 위해, 자동적으로 생성된 텍스트가 각각의 원문에 대해 factually consistent한지 예측하는 방법을 고안 중.
=&gt; 이러한 방법은 평가도 더 잘 할 수 있고, 자동적으로 학습 데이터를 필터링하거나 제한된 생성에 대해 학습 데이터를 생성함(정확히 뭔지 잘 모르겠음 / Rashkin et al. 2021b)으로써 생성 모델을 더 좋게 만듦</p>
</li>
<li><p>하지만 이러한 평가 방법들에 대해 평가하는 meta-evaluatation protocol이 합의되지 않았고, 라벨링 스케마 역시 세분화 되지 않음
=&gt; 그래서, 이러한 방법의 robustness를 비교하는 것은 어려움</p>
</li>
<li><p>그래서 TRUE : a comprehensive survey and assessment of factual consistency evaluation methods, metrics, tasks and datasets을 제시</p>
<ul>
<li>11개의 데이터셋을 통일된 포맷으로 정리<ul>
<li>target text - grouding source text - binary annoation of whether the garget text is factually consistenct w.r.t its source</li>
</ul>
</li>
<li>summarization, knowledge-grounded dialogue, paraphrasing and fact verification까지 커버</li>
</ul>
<p>=&gt;  이를 통해 다양한 태스크 및 도메인에 대해 robust하게 consistency evaluation method를 적절히 평가할 수 있다!</p>
<ul>
<li>원래는 메트릭의 성능을 평가하기 위해 사람이 판단한 데이터와 system-level에서 상관관계가 얼마나 있는지를 측정</li>
<li>하지만 이 방법은 example-level에서 판단을 할 때는 유용하지 않음.
==&gt; 그래서 방법이 얼마나 inconsistenct text를 잘 찾아내는지(recall), consistent한 text를 얼마나 잘못 분류하는지(precision)에 대해 측정하는 것을 목표로 함!
==&gt; 그래서 ROC AUC를 사용할 수 있음.</li>
</ul>
</li>
</ul>
<p>Contribution</p>
<ol>
<li>factual consistency evaluation을 task, dataset에 관계없이 일반화</li>
<li>이전 상관관계를 측정하는 것보다 더 범용성이 높고 해석가능한 질적 측정이 가능한 meta-evaluation protocol을 제안</li>
<li>12개의 다양한 메트릭에 대해 조사하고 평가. large-scale NLI와 QG-QA-based 방법은 task에 구분 없이 강하고 보완적인 결과를 냄.</li>
<li>실험 결과에 대해 정량, 정성적으로 평가해 long input, personal statements와 같은 문제를 향후 연구에서 다뤄져야 함을 강조</li>
</ol>
<h3 id="2-standardizin-factual-consistency">2. Standardizin Factual Consistency</h3>
<h4 id="21--definitionas-and-terminology">2.1  Definitionas and Terminology</h4>
<ul>
<li>factually consistent : 생성문의 모든 사실적 정보가 원문에 나타나있는 사실과 일관될 때  <ul>
<li>real world의 correctness와는 관계없음</li>
<li>외부 지식이 아니라 input text에 나타난 정보만 고려</li>
<li>factual information의 범주에서 opinions과 chit-chat과 같은 개인적이고 사회적인 서술은 배제</li>
</ul>
</li>
<li>본 논문에서는 consistent, grounded, faithful, factual을 혼용하며 사용</li>
</ul>
<h4 id="22-standarization-process">2.2 Standarization Process</h4>
<ul>
<li>다양한 task에서  factual consisteny를 갖는 human annotations을 포함하는 11개의 데이터셋 포함
<img src="https://velog.velcdn.com/images/lm_minjin/post/9a51654e-d818-4671-8164-2196ba2b657d/image.png" alt=""></li>
<li>unified evaluation framework을 만들기 위해 factually consistent에 관한 모든 표기를 binary label로 바꿈 <h5 id="221-abstractive-summarization">2.2.1 Abstractive Summarization</h5>
</li>
<li>FRANK : CNN/DailyMail과 XSum에 대해 모델이 생성한 요약에 대한 annotation을 수집. 총 2250개의 annotated system output을 수집. 각 요약 문장은 3명의 annotator에 의해 라벨링 됨. 각 문장을 다수결에 따라 labeling하고 모든 문장이 consistent할 때만 요약문이 consistent하다고 표기.</li>
<li>SummEval : extractive, abstractive 모델 둘다 사용해서 CNN/DM 데이터셋으로부터 100개의 기사에 대해 16개의 모델 output을 사람이 평가. Annotators는 4개의 차원(consistency, coherence, fluency, relevance)에 대해 1-5점을 부여. 각 요약문은 5명의 crowd-worker와 3명의 전문 annotator로 스코어링됨. 본 논문에선 요약문에 대해 모든 전문 annotators가 consistency점수를 5점 줬을 때만 consistent하다고 라벨링 함.</li>
<li>MNBM : XSum에서 500개의 기사와 정답 요약문, 4개의 다른 시스템에서 생성된 annotated summary를 샘플링. Annotator들은 요약에 halluciation이 있는지 평가. 3명의 annotators에게 받은 평가가 각 데이터마다 수집됨. 이를 이진 포맷으로 바꾸기 위해, 3명의 annotator가 판단한 것의 다수결을 따라 배정.</li>
<li>QAGS : CNN/DM과 XSum에 대해 생성된 요약문에 대해 factual consistency한지를 수집. annotators들은 한 번에 요약문의 한 문장과 원문을 받아서 이 문장이 factually consistent한지 평가. 각 문장은 3명의 annotator에게 라베링되고, 다수결이 최종 score가 됨. 이를 이진 포맷으로 바꾸기 위해서, 모든 문장이 consistent할 때만 요약문이 conssitenct하다고 판단.<h5 id="222-dialogue-generation">2.2.2 Dialogue Generation</h5>
</li>
<li>BEGIN : knowledge-grounded dialogue system에서 groundedness를 평가하는 데이터셋. system output은 대화 상대에 제공되는 grounding knowledge에 반드시 consistent해야함. BEGIN은 task를 textual entailment와 같이 프레임화해서, 3가지 카테고리(hallucination, off-topic responses, generic reponses)를 내뱉음. 대화 응답은 Wizard of Wikipedia(WoW)데이터셋에 대해 파인튜닝된 2가지 system에 의해 생성됨. 생성된 응답을 문장 단위로 쪼개서 문장 각각에 대해 라벨링. 이진 라벨링으로 바꾸기 위해, entailed sentnece를 consistent로 나머지를 inconsistent로 처리.</li>
<li>$Q^2$ : WoW에 대해 학습된 2개의 dialogue model에 대해 생성된 1088개의 dialogue response를 annotate. 이미 이진 표기가 되었기 때문에 변환없이 사용.</li>
<li>DialFact : 3가지 task를 정의 1) 응답이 berifiable content를 포함하고 있는가 2) 관련 증거 검색 3) 응답이 증거 기반인지, 증거에 의해 반박되는지, 아니면 판단하기에 충분한 정보가 없는지 예측. 3번째 task에 대해 annotated된 verificable response을 supported를 consistent로, 나머지를 inconsistent로 사용. verification을 위해서 3-4개의 증거가 표시된 경우, 모든 문장을 합쳐서 원문으로 사용.<h5 id="223-fact-verification">2.2.3 Fact Verification</h5>
</li>
<li>FEVER : 원문에 대해 fact verification한 데이터셋. Wikipedia에서 정보를 추출해 구축, annotator을 사용해 claims을 생성. 각 claims에 대해 Wikipedia에 의해 반박되는지 지지되는지를 라벨링. NotEnoughInfo라고 라벨링 되는 경우도 존재. FEVER는 크게 2단계로 task정의. 1) evidence 추출 2) claim을 지지하는지 반박하는지 결정. 후자의 경우 claim이 factually consistent한지 아닌지를 결정하므로, TRUE에서 측정. FEVER의  NLI버전의 development set을 사용. supported를 consistent로, 나머지를 inconsistent로 라벨링</li>
<li>VitaminC : 큰 스케일의 fact verification dataset. 각 데이터는 Wikipedia에서 evidience text와 fact, 그리고 fact가 지지, 반박, 중립 세개 중 하나로 라벨링 되어있음. 지지를 consistent로, 나머지를 inconsistent로 변환해 사용.<h5 id="224-paraphrase-detection">2.2.4 Paraphrase Detection</h5>
</li>
<li>PAWS : 108463개의 paraphrase와 non-paraphrase 쌍으로 구현된 데이터셋. 원문 문장은 Wikipedia와 Quora Question Pairs(QQP)에서 가져옴. 본 논문에서는 Wikipedia에서 온 데이터만 사용, paraphrase를 consistency label로 사용. paraphrase와 consistency는 다르지만, PAWS에서 non-paraphrases는 보통 원문과 반대되는 의미를 가지고 있도록 구축되었기 때문에 관련이 있다고 봄.<h4 id="23-meta-evaluation">2.3 Meta-Evaluation</h4>
</li>
<li>기존의 논문에서는 다양한 메트릭과 hhuman judgement와의 상관관계를 측정해 평가</li>
<li>데이터 단위에서 더 세분화된 평가를 위해서, 각각의 inconsistent example의 binary detection에 대해 ROC AUC를 보고<ul>
<li>ROC curve는 각 테스트된 메트릭에 대해 가능한 다른 임계값에서 true positive rate(recall)대 false positive rate(fallout)을 그래프로 표시</li>
<li>ROC AUC를 측정하는 것은 측정 decision thredhold 세팅 없이 다양한 metric를 평가</li>
<li>development/test split를 가진 데이터셋의 경우, dev에 대해서 binary consistent/inconsistent 결정을 위한 임계값을 조정하고 이 임계값을 사용해 test에 대해 정확도를 측정</li>
<li>threshold를 TPR과 1-FPR의 기하 평균($\sqrt{TPR*(1-FPR}$)을 최적화해 조정<h3 id="3-evaluation-metrics">3 Evaluation Metrics</h3>
</li>
</ul>
</li>
<li>fatucl consistency를 측정하는 SOTA 방법 뿐만 아니라 다양한 기준들을 비교<ul>
<li>예를 들어, robust한 평가지표는 여러 태스크에 구분 없이 잘돼야 함</li>
</ul>
</li>
<li>각 메트릭에 대해, 점수가 [0,1]을 넘어갈 경우 normalize<h4 id="31-n-gram-based-metrics">3.1 N-Gram Based Metrics</h4>
</li>
<li>BLEU, ROUGE, token-level F1은 factual consistency와 낮은 상관관계 보여줌</li>
<li>이 방법들을 baseline에 추가<h4 id="32-model-based-metrics">3.2 Model-Based Metrics</h4>
</li>
<li>BERTScore : 후보 문장과 정답 문장의 token을 BERT contextual embedding해, 둘의 유사도를 aggregates. BERTScore가 예비 실험에서 더 나은 결과를 보였기 때문에 보고.
본 논문에선 BERTScore version 0.3.11사용(DeBERTa-xl-NMLI model)</li>
<li>BLEURT : 텍스트 생성을 평가하기 위한 BERT기반 메트릭. BLEURT는 synthetic data에 대한 추가 pre-training + 점수를 산출하는 모델을 학습하기 위해 human judgement에  fine-tuning됨. </li>
<li>FactCC : 요약문의 factual consistency를 검증하는 BERT기반의 지표. 룰베이스 기반의 변형을 적용해 consistent와 inconsistent summaries 데이터를 생성, 이에 대해 학습됨.</li>
<li>BARTScore : BART모델로 강제 디코딩의 확률(probabilities from force-decoding)을 사용해 텍스트를 평가. 여기선 ParaBank2 데이터셋으로 파인튜닝된 버전을 사용.</li>
<li>CTC : BERT sequence taging모델을 사용해 grounding text에 대해 genereated text의 token-level alignment의 평균을 측정. 이 모델은 준지도 학습 방식에서 BART model에 의해 생성된 hallucinate token를 찾아내도록 학습됨<h4 id="33-natural-language-inference-metrics">3.3 Natural Language Inference Metrics</h4>
</li>
<li>ANLI : Adversarial NLI에 대해 T5-11B를 파인 튜닝한 NLI모델을 사용. grounding text을 premise로, 생성된 글을 hypothesis로 볼 entailment probaility를 계산. 이를 excample-level의 factaul consistency score로 사용.</li>
<li>SUMMAC : NLI를 사용해서 문서와 요약문을 문장으로 쪼개고, 모든 문서/요약 문장 쌍에 대해 entailment probaility를 계산. 요약 문장에 대한 최대값 및 평균을 사용해 값을 합치거나($SC_{ZS}$) 점수를 집계하기 위해 컨볼류션 신경망을 학습시켜 모든 쌍에 대한 NLI점수를 집계(SCCconv)<h4 id="34-qg-qa-based-metrics">3.4 QG-QA Based Metrics</h4>
QG-QA기반 방법은 다음과 같은 단계로 진행됨</li>
</ul>
<ol>
<li>생성된 글에서 span에 대해 자동적으로 질문이 생성됨</li>
<li>생성된 질문은 원문에 대한 QA모델을 사용해서 답변됨, answer span또는 no-answer값 반환</li>
<li>각각의 문장에 대해서, 원문과 생성된 글의 answer span을 비교해 점수 측정</li>
<li>모든 질문에 대한 점수가 합쳐져서 최종 점수가 됨</li>
</ol>
<ul>
<li>$Q^2$ : NLI모델을 각 질문에 대한 두가지 답을 비교하는 용도로 사용하는 QG-QA방법. 원문을 premise로 생성문을 hypothesis로 사용. backbone으로 T5-11B를 사용해 $Q^2$를 다시 re-implementation한 것을 바탕으로 결과를 보고. 본 논문에서는 사전 정의된 임계값과 F1-token-overlap을 사용해 추출된 답변 후보와 비교.</li>
<li>QuestEval : factual consistency와 relevance를 모두 측정하는 QG-QA기반 방법. 저자는 생성된 텍스트에 나타나도록 생성된 각 질문에 대한 답변의 관련성에 따라 가중치를 부여하는 모델을 학습. SummEval에 대해 이전 연구보다 human annotation과 높은 상관관계 보여줌.</li>
</ul>
<h3 id="4-results">4 Results</h3>
<ul>
<li><p>TRUE development set에 대해 다양한 메트릭의 ROC AUC 결과. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/dab7b678-4915-430a-a040-6776adfb7c6c/image.png" alt=""></p>
</li>
<li><p>$SC_{ZS}$는 FEVER를 포함하는 VitaminC에 대해 학습됨. 그래서 정교한 비교를 위해 중복된 데이터셋을 배제하고 AUC평균을 계산. </p>
</li>
<li><p>NLI기반 모델(ANLI, $SC_{ZS}$)은 다른 방법보다 6개 데이터셋에 대해 뛰어남. </p>
</li>
<li><p>$Q^2$는 4개의 데이터셋에 대해서 뛰어난 성능을 보였고, 평균 AUC는 80.7</p>
</li>
<li><p>다음으로 좋은 방법은 BARTScore로 72.2의 평균 AUC를 보임</p>
</li>
<li><p>예상했던대로, 간단한 토큰 비교 방식은 잘 되지 않음</p>
</li>
<li><p>이상치 하나는 BEGIN으로, F1 overlap과 같은 간단한 메트릭이 80이상을 달성한 유일한 데이터셋</p>
<ul>
<li>원문과 타겟 텍스트간의 평균 overlap을 측정해보니, BEGIN이 다른 데이터셋에 비해 원문과 원문이 아닌 텍스트 차이가 가장 컸음
<img src="https://velog.velcdn.com/images/lm_minjin/post/151fef8e-bf5f-4502-949c-a68c8579ba9f/image.png" alt="">
(정확히 이해 못함. 거의 extractive처럼 원문에 정답 요약문이 있었던건가?)</li>
</ul>
</li>
</ul>
<ul>
<li><p>bootstrap resampling을 통해서 1번째로 좋은 방법이랑 2번째로 좋은 방법을 비교. 6개 데이터셋에 대해서 해보니 3개는 $Q^2$, 나머지 3개는 ANLI-based 모델이 가장 높은 성과를 냄</p>
</li>
<li><p>모든 데이터셋에 대해서 단일 방법으로 뛰어나지 않았던 것으로 보아, NLI와 QG-QA기반 모델이 서로 상보적이라는 가설을 세울 수 있음. </p>
<ul>
<li>이를 테스트하기 위해, $Q^2$와 ANLI와 $SC_{zs}$점수를 데이터별로 평균냄(ensemble). 결과, 단일 모델보다 더 좋은 결과를 냄.<ul>
<li>3개의 베스트 지표($Q^2$, ANLI, $SC_{zs}$)가 11개의 데이터셋에서 평균적으로 80이상의 점수를 낸다는 것을 보아 단일 지표는 모든 태스크와 데이터셋에서 잘 나옴.</li>
</ul>
</li>
</ul>
<h3 id="5-analysis">5 Analysis</h3>
<ul>
<li>Input Length<ul>
<li>200토큰 이상의 긴 텍스트에선 지속적으로 성능이 떨어짐. </li>
<li>긴 텍스트를 더 잘 다루게 설계된 $SC_{ZS}$도 포함. </li>
<li>오히려 ANLI기반 모델과 $Q^2$가 비교적으로 긴 데이터(500토큰 이상)에서도 좋은 성능을 냄.
<img src="https://velog.velcdn.com/images/lm_minjin/post/00b95df9-8eec-47d1-accf-d47eacd65bc9/image.png" alt=""></li>
</ul>
</li>
</ul>
</li>
<li><p>Model Size</p>
<ul>
<li><p>모델 기반 방법들은 모델 크기가 커질수록 수혜를 받음</p>
</li>
<li><p>이를 계량화하기 위해서 더 작은 모델을 사용해 ANLI, BLEURT, BERTScone를 테스트
<img src="https://velog.velcdn.com/images/lm_minjin/post/723d54e6-b56e-4eb3-b83d-883ec5817454/image.png" alt=""></p>
</li>
<li><p>Qualitative Analysis</p>
<ul>
<li>다양한 메트릭의 약점과 이 태스크에 존재하는 문제를 보이기 위해 mnual error analysis를 진행</li>
<li>3개의 메트릭에서 모두 잘못 분류된 80개의 데이터와 1개 또는2개의 메트릭이 옳게 분류한 100개의 데이터를 분석</li>
<li>분석된 데이터의 상당수가 틀린 라벨을 가지고 있는 것 처럼 보임</li>
<li>특히 베스트 3개 메트릭 모두가 실패한 데이터 80개 중 35개가 annotation error</li>
<li>1개 또는 2개의 메트릭이 실패한 경우엔 100개 중 27개가 annotation error</li>
<li>높은 annotation error가 실제로 본 논문에서 사용한 데이터셋의 일반적인 문제가 아니라 &quot;가장 어려운 데이터&quot;를 테스트한 결과인지 확인하기 위해, 100개를 임의로 샘플링. 10개만 annoration  error.
==&gt; 높은 miss annotation rate는 어려운 데이터의 특성이라는 결론.</li>
<li>인상적인 결과를 보여줬음에도 불구하고, 최고의 성능을 내는 메트릭이 미묘한 inconsistency를 탐지하는데엔 실패(21/180 analyzed examples)
<img src="https://velog.velcdn.com/images/lm_minjin/post/e50bee43-e5dc-4860-95e4-b1c6ce3adc26/image.png" alt=""></li>
<li>target text의 부분을 합쳐서 점수를 집계하는 방식($Q^2, SC_{ZS}$)의 메트릭의 경우 작은 부분(원문과 모순되는 부분)을 제외하고 다 consistent한 텍스트에 높은 점수를 부여할 수 있음. ==&gt; aggregation에서 엄격한 방식(평균대신 최솟값 사용)을 사용하면 교정할 수 있지만 false-negative가 높아짐</li>
<li>다른 에러는 도메인에 특화된 문제에서 발생. ex) 대화에서 개인적인 진술
(10/62 analyzed dialogue response) =&gt; 이를 해결하기 위해선 평가에서 non-factual 부분을 자동으로 배제하도록 하는 것</li>
</ul>
</li>
<li><p>Ensemble Analysis</p>
<ul>
<li>3개의 베스트 메트릭을 사용해 간단히 평균 내 앙상블한 결과, 대부분의 데이터셋에서 단일 메트릭보다 뛰어남</li>
<li>이를 더 이해하기 위해 ,3개의 메트릭 중 하나이상 분류를 실패했지만 앙상블은 맞춘 경우(25761 examples)를 조사.<ul>
<li>전체의 85.2%가 3개 중 1개가 실패했는데 앙상블은 맞춘 경우</li>
<li>14.6%는 3개중 2개가 실패했을 때 앙상블은 맞춘 경우</li>
<li>0.2%는 3개 메트릭은 다 틀렸는데 앙상블이 성공한 경우</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Self-Supervised Learning(DenseCL, MoCo-v3, Barlow Twins)]]></title>
            <link>https://velog.io/@lm_minjin/Self-Supervised-LearningDenseCL-MoCo-v3-Barlow-Twins</link>
            <guid>https://velog.io/@lm_minjin/Self-Supervised-LearningDenseCL-MoCo-v3-Barlow-Twins</guid>
            <pubDate>Mon, 30 May 2022 13:56:45 GMT</pubDate>
            <description><![CDATA[<h3 id="self-supervised-learning-연구-흐름">Self-Supervised Learning 연구 흐름</h3>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/8991d7cd-fdc6-4d78-8922-6447bc273e79/image.png" alt="">
이 중, Constractive(Dense), No Negatives, Transformer기반 방법인 DenseCL, Barlow Twins, Moco v3에 대해 리뷰해보려 함.</p>
<blockquote>
<p><strong>MoCo</strong>
<img src="https://velog.velcdn.com/images/lm_minjin/post/a0fd8e37-9423-4bfa-a840-67ba7ba02a3a/image.png" alt="">
MoCo의 핵심아이디어는 
(1) negative representation을 저장하는 queue, 
(2) key encoder의 mementum update 입니다.</p>
<p>현재 batch에서 augmentation된 이미지는 queue에 enqueue 합니다. queue내에 존재하는 과거의 representation은 deque 합니다. encoder가 갱신됨에따라 과거의 representation은 consistent하지 않기 때문입니다. query encoder는 학습이 진행되면서 갱신이 되고, key encoder는 momentum 기법을 사용하여 서서히 갱신합니다(빠르게 변화하는 query와 똑같이 학습할 경우 key값들의 consistency가 유지되지 않아 loss가 전혀 수렴하지 않기 때문). 
출처 : <a href="https://deep-learning-study.tistory.com/730">https://deep-learning-study.tistory.com/730</a></p>
</blockquote>
<h3 id="dense-contrastive-learning-for-self-supervised-visual-pre-trainingdensecl">Dense Contrastive Learning for Self-Supervised Visual Pre-Training(DenseCL)</h3>
<ul>
<li>2020년에 실린 논문
MoCo-v2를 베이스로 하고, MoCo-v2에서 사용한 constrative learning(image로부터 추출한 하나의 벡터 기준)을 본 논문에선 gloabl contrastive learning이라고 부름.
<img src="https://velog.velcdn.com/images/lm_minjin/post/886e1ab3-5917-4800-b6b2-c1943da20e7a/image.png" alt="">
이렇게 학습시킨 모델을 dense prediction이 필요한 task(semantic segmantation, object detection, instance segmentation)에 fine-tuning하면 gap이 존재.
=&gt; 왜? MoCo는 image classifiaciton을 기준으로 global representation을 추출해 constrative learning을 수행했기 때문!<blockquote>
<p>여기서 말하는 gap을 자세히 풀어서 설명하면,</p>
<ol>
<li>거의 모든 준지도 학습 방법은 instance discrimination과 같은 각 이미지를 분류하는 것 =&gt; global feature만 사용해 image-level의 prediction에 초점을 둠</li>
<li>현재 방법들은 보통 이미지 분류 벤치마크로 평가되거나 최적화 됨
=&gt; 하지만 이미지 분류를 잘한다고 해서 더 정확한 object detection을 잘한다고는 볼 수 없음
==&gt; 이를 해결하기 위해 &quot;pre-training as a dense prediction task directly&quot;하자!</li>
</ol>
</blockquote>
</li>
</ul>
<p>이 gap을 채우기 위해 dense contrastive learning(픽셀 단위에서 작동)을 도입한다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/e51a73fe-197c-45cc-8d3a-1a794e9283de/image.png" alt=""></p>
<ul>
<li>head(dense projection head)를 하나 더 추가하여 dense feature map을 추출하고, 이 feature map의 vector사이에 constrative learning을 수행</li>
</ul>
<h4 id="densecl-pipeline">DenseCL Pipeline</h4>
<ol>
<li>input view과 주어질 때, backbone network를 사용해서 dense feature map을 추출, projection head로 보냄</li>
<li>projection head는 2개의 sub-head가 병렬로 구성되고, 각각 global projection head와 dense projection head라 불림<ul>
<li>global projection head는 dense feature maps을 input으로 받아서 각 view에 대한 global feature를 생성</li>
<li>global pooling layer와 MLP(fc layer - ReLU - fc layer로 구성)</li>
<li>dense projection head는 같은 input을 사용하지만 output은 dense feature vectors</li>
<li>특히, gloabl pooling layer는 제거되고, MLP는 1x1 conv layer로 교체됨(그래도 global projection head와 같은 수의 파라미터 가짐)</li>
</ul>
</li>
</ol>
<ul>
<li>backbone과 2개의 병렬 projection heads가 global feature과 local feature수준 모두에서 constrastive sim loss에 의해 학습됨</li>
</ul>
<p>** 기존의 MoCo Loss function(global feature)
<img src="https://velog.velcdn.com/images/lm_minjin/post/bbaea32a-c702-4a3c-8b5a-7e0f74a72881/image.png" alt="">
** 새로 제안한 Loss function(local feature)
<img src="https://velog.velcdn.com/images/lm_minjin/post/048cfca4-b454-4d4d-9f22-716ef50f95d0/image.png" alt="">
** 최종 Loss function
<img src="https://velog.velcdn.com/images/lm_minjin/post/8d611950-d90a-4ff2-a86b-85bdca8b62ef/image.png" alt=""></p>
<ul>
<li>$\lambda$를 0.5로 두고 실험. 하지만 unstable.</li>
</ul>
<h4 id="experiments">Experiments</h4>
<p> 이렇게 학습한 모델은 dense prediction이 필요한 downstream task에 좋은 성능을 보인다. 심지어 supervision을 뛰어넘음
<img src="https://velog.velcdn.com/images/lm_minjin/post/3dd37703-69fd-4f6d-be6d-028c3e9a57cf/image.png" alt="">
<img src="https://velog.velcdn.com/images/lm_minjin/post/d22cb452-9b81-470c-9bf4-463173264595/image.png" alt="">
<img src="https://velog.velcdn.com/images/lm_minjin/post/e9445eb2-cbcc-4cfb-8a42-65499823a73b/image.png" alt="">
<img src="https://velog.velcdn.com/images/lm_minjin/post/b0ca225d-f7b0-4125-8f5d-fd5632e59615/image.png" alt=""></p>
<h3 id="barlow-twins-self-supervised-learning-via-redundancy-reduction">Barlow Twins: Self-Supervised Learning via Redundancy Reduction</h3>
<ul>
<li>2021년 6월에 실린 논문<blockquote>
<p>뇌신경과학자 Barlow가 주장한 가설에서 시작</p>
</blockquote>
</li>
<li>*&quot;the goal of sensory processing is to recode highly redundant sensory inputs into a factorial code(a code with statistically independent components)&quot;**
(감각 처리의 목표는 매우 중복된 감각 입력을 요인 코드(통계적으로 독립적인 구성 요소를 가진 코드)로 재기록하는 것이다.)</li>
</ul>
<p>한 데이터의 왜곡된 버전을 각각의 동일한 네트워크에 넣고, 결과값 사이의 cross-correlation을 측정해, 이를 최대한 identity matrix에 가깝게 만듦으로써 collapse를 피하게 하는 목적함수를 제안함.
==&gt; 데이터의 왜곡된 버전의 임베딩 벡터를 유사하게 만들어서, 이러한 벡터들 요소 사이의 redundancy를 최소화! 이러한 방법을 BARLOW TWINS(BT)라고 함.
<img src="https://velog.velcdn.com/images/lm_minjin/post/d2a2a3e6-7fab-4ea1-be77-8060f40d429d/image.png" alt="">
BT는 큰 배치를 필요로 하지 않을 뿐만 아니라(negative sample이 필요 없으니까) predictor network, gradient stopping 과 같은 network twins사이의 asymmetry도 없는게 특징.</p>
<ul>
<li>매우 큰 고차원의 output vector에서 이점을 얻어 이전 준지도 분류보다 뛰어나고, 현재 SOTA인 linear classifier head를 가진 분류 모델 그리고 object detection과 분류의 전이학습 모델과 동등</li>
</ul>
<h4 id="implements-details">Implements details</h4>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/655c899e-88cf-4d56-b112-13597b33561c/image.png" alt=""></p>
<h5 id="loss-function">loss function</h5>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/b4413a9c-c425-477c-a78c-8245996c1fec/image.png" alt=""></p>
<ul>
<li>C는 cross-corrleation matrix, 각각 element의 값은 -1에서 1사이</li>
<li>b는 batch samples의 인덱스, i와 j는 네트워크 결과의 vector dimension</li>
<li>직관적으로 invariance term이 1과 동등하길 바라는 term. 즉, 왜곡이 생겨도 같은 데이터라면 같아야하는, invariance해야하는 값. 반대로 redundancy reduction term은 0이 되길 바라는 값으로, 다른 vector component와는 상관관계가 없길, non-redundant하길 바람.</li>
</ul>
<h5 id="image-augementations">Image augementations</h5>
<p>각 입력 이미지는 다음과 같은 변형을 거침
: random cropping, resizing to 224X224, horisontal flipping, color jittering, converting to grayscale, Gasussian blurring, solarization.
처음 2개는 모두 적용, 나머지 5개는 랜덤하게 적용됨.</p>
<h5 id="architecture">Architecture</h5>
<ul>
<li>encoder는 ResNet-50 network(마지막 분류 레이어 없이, 2048 output units) + projector network로 구성</li>
<li>proejector network는 3개의 linear layers로 구성, 각각 8192개의 output unit을 가짐. 앞에 2개 레이어는 batch normalization layer와 ReLU가 세트로 구성됨. encoder의 결과값을 &quot;representation&quot;이라 하고, projector의 결과값을 &quot;embeddings&quot;라 함. 각각 representation은 다운스트림 태스크에 사용되고 embeddings은 BT의 loss function으로 들어감.<h5 id="optimization">Optimization</h5>
BYOL에 설명된 optimization protocol을 사용. LARS optimizer를 쓰고, 1000epoch, 2048 batch 사용</li>
</ul>
<h4 id="experiments-1">Experiments</h4>
<p>압도적으로 좋은 기록은 아니지만, 다른 SOTA모델에 준하는 퍼포먼스를 보여줌
<img src="https://velog.velcdn.com/images/lm_minjin/post/3655ae69-1fbd-4d68-8023-de39de0eb6c5/image.png" alt="">
<img src="https://velog.velcdn.com/images/lm_minjin/post/ac25577c-12be-48b4-a3d2-4c09c8ae29b4/image.png" alt="">
<img src="https://velog.velcdn.com/images/lm_minjin/post/924159cb-59d9-4061-a82c-f49bfd03d40c/image.png" alt="">
<img src="https://velog.velcdn.com/images/lm_minjin/post/2644493c-44a7-490e-9d8d-8ac48992cfd0/image.png" alt="">
두드러지는건 배치가 작아도 어느정도 성능이 나온다는 것
<img src="https://velog.velcdn.com/images/lm_minjin/post/b812754e-6596-4904-8651-2a0f823a975a/image.png" alt="">
projector dimensionality를 높여가며 비교했을 때
<img src="https://velog.velcdn.com/images/lm_minjin/post/c3751d43-83a5-4c4d-a4c6-66244cfff1f8/image.png" alt=""></p>
<h3 id="an-empirical-study-of-training-self-supervised-vision-transformersmoco-v3">An Empirical Study of Training Self-Supervised Vision Transformers(MoCo v3)</h3>
<ul>
<li>2021년 8월에 실린 논문</li>
<li>MoCo기반의 framework + ViT</li>
</ul>
<h4 id="moco-framework-개선">MoCo framework 개선</h4>
<ul>
<li><p>크게 2가지 측면에서 개선
<img src="https://velog.velcdn.com/images/lm_minjin/post/7188fc71-3590-4cb4-8410-8147a4e84948/image.png" alt="">
<img src="https://velog.velcdn.com/images/lm_minjin/post/7d1f25f6-6f9f-4cb5-87de-8ab6401cc264/image.png" alt=""></p>
<ul>
<li>기존 MoCo기반 아이디어 중 하나인 queue구조의 dictionary를 없애고, SimCLR에서처럼 큰 batch size(=4096)를 사용해 batch내부의 다른 이미지들을 negative sample로 활용<ul>
<li>기존의 projection head에 더해 prediction head를 추가하여 query encoder를 구성. 
Query와 달리 key encoder는 prediction head를 넣어주지 않음.</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/7652c065-f5f8-4690-b4d6-54adcf86daf0/image.png" alt=""></p>
<ul>
<li>이 두 가지 개선사항으로 MoCo v3는 이전 버전과 비교해 1.6%의 linear envaluation 성능 향상을 보여줌.</li>
</ul>
<p>이제 개선된 MoCo v3 framework에 Transformer기반 모델을 적용한 실험에 대해 알아보자!</p>
<h4 id="stability-of-self-supervised-vit-training">Stability of Self-supervised ViT Training</h4>
<p>MoCo v3을 ViT에 적용할 때, 학습의 instability 문제가 발생</p>
<ul>
<li><p>Batch에 따른 학습 곡선 
<img src="https://velog.velcdn.com/images/lm_minjin/post/7cd80312-b112-4e94-856b-c90838f96030/image.png" alt=""></p>
<ul>
<li>원래 contrastive learning기반 self-supervised learning은 batch를 키울수록, 더 많은 negative sample을 활용할 수 있어 성능에 도움이 되지만, ViT는 성능이 오히려 감소하는 것을 보임.</li>
<li>batch=6144를 보면 불안정한 학습 곡선 + 성능 저하가 나타난다는 것을 알 수 있음
==&gt; 이를 해결하기 위해 1가지 trick을 제안</li>
</ul>
</li>
<li><p>학습률 및 최적화 기법에 따른 학습 곡선
<img src="https://velog.velcdn.com/images/lm_minjin/post/bb760d8f-6bba-44c1-b5e0-107ad8fee339/image.png" alt=""></p>
<ul>
<li>학습률이 작은 경우에 training이 더 stable하지만 under fitting됨. </li>
<li>학습률이 클 경우엔 less stable하고 정확도도 낮아짐</li>
<li>LAMB optimizer가 학습률에 더 민감. 그래서 해당 논문에선 AdaW를 사용해 실험 진행</li>
</ul>
<h4 id="a-trick-for-improving-stability">A Trick for Improving Stability</h4>
<p>그렇다면 왜 instability가 발생할까?
<img src="https://velog.velcdn.com/images/lm_minjin/post/554ced9c-646f-44bd-a78c-d77b32ecfa0f/image.png" alt=""></p>
</li>
<li><p>위 그림은 iter에 따른 gradient변화를 layer별로 보여주고 있음.</p>
</li>
<li><p>첫번째 레이어에 gradient spike가 발생하고 몇 epoch뒤에 last layer에도 gradient spike가 발생. 
==&gt; 이를 보고 저자는 instability가 shallower layer에서 발생한다 추측
==&gt; 그래서 학습 동안 patch projection을 freezing</p>
<blockquote>
<p><strong>Patch projection in ViT</strong>
<img src="https://velog.velcdn.com/images/lm_minjin/post/942bc31f-829d-4589-a7c8-74e934b0a2eb/image.png" alt="">
이 그림에서 밑단을 보면, 그림을 patch로 나눠서 embedding하게 된다. 이 때 patch 각각을 flatten해서 embedding matrix와 linear projection하게 되는데, 이 부분을 patch projection이라고 한다.</p>
</blockquote>
</li>
</ul>
<p>==&gt; 즉, patch를 embedding하는 patch projection을 학습되지 않은 random patch projection으로 고정해 사용(stop-gradient로 간단히 구현 가능).</p>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/91ca069e-1d40-4254-a35f-653002b4d6bf/image.png" alt=""></p>
<ul>
<li><p>random patch projection이 위의 초록색 선인데, 확실히 학습이 더 statbilize되고, 정확도도 향상되었다는 것을 알 수 있다.</p>
</li>
<li><p>이 random patch projection이 다른 self-supervised learning + ViT방법에도 효과적이라는 것을 보여줌
<img src="https://velog.velcdn.com/images/lm_minjin/post/04c9161e-7c9d-4318-93ae-94328ca2e68a/image.png" alt=""></p>
</li>
</ul>
<p>==&gt; 저자는 이 실험을 통해 patch projection layer를 학습하는 것은 필수적이지 않다는 것을 보여줌. 기존 patch의 정보를 보존하기 위해 random projection이 충분하다!</p>
<h4 id="experiments-2">Experiments</h4>
<ul>
<li>ViT에 여러 self-supervised learning방법을 적용한 결과
<img src="https://velog.velcdn.com/images/lm_minjin/post/cd58c486-cdfc-4d3e-b5e0-e0e38bd41494/image.png" alt=""></li>
<li>SOTA 모델과의 비교
<img src="https://velog.velcdn.com/images/lm_minjin/post/bcd2928c-2f1a-4f84-82eb-a153a2deff53/image.png" alt=""></li>
<li>transfer learning 결과
<img src="https://velog.velcdn.com/images/lm_minjin/post/568458da-77ef-42cd-acbb-da900d32e2aa/image.png" alt=""></li>
</ul>
<blockquote>
<p>reference
<a href="https://deep-learning-study.tistory.com/746">https://deep-learning-study.tistory.com/746</a>
<a href="https://ffighting.tistory.com/39">https://ffighting.tistory.com/39</a>
<a href="https://deep-learning-study.tistory.com/935">https://deep-learning-study.tistory.com/935</a>
<a href="https://arxiv.org/pdf/2103.03230">https://arxiv.org/pdf/2103.03230</a>
<a href="https://arxiv.org/abs/2104.02057">https://arxiv.org/abs/2104.02057</a>
<a href="https://arxiv.org/pdf/2011.09157">https://arxiv.org/pdf/2011.09157</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Controlling the Focus of Pretrained Language Generation Models]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Controlling-the-Focus-of-Pretrained-Language-Generation-Models</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Controlling-the-Focus-of-Pretrained-Language-Generation-Models</guid>
            <pubDate>Tue, 24 May 2022 13:13:28 GMT</pubDate>
            <description><![CDATA[<p>본 논문은 2022년 5월에 ACL에 실린 논문으로, textcnn의 저자인 Yoon Kim님이 2저자인 논문입니다.</p>
<h3 id="abstract">Abstract</h3>
<ul>
<li><p>pretrained transofrmers based langauge generation models의 fine-tuning은 모델이 스스로 연관있는 input의 일부를 attend하는 방식으로 학습</p>
</li>
<li><p>하지만, 모델의 어디에 집중할지를 직접적으로 컨트롤하는 방법은 존재 X</p>
</li>
<li><p>그래서 본 논문에서는 유저가 모델이 집중해야하는 부분을 선택해 highlights해 모델이 관련된 output을 만들어내는 control mechanism을 개발하는 것을 목표로 함</p>
</li>
<li><p>이를 위해, 학습가능한 &quot;focus vector&quot;(모델의 임베딩에 직접 적용할 수 O)를 가진 사전 학습 모델을 제안</p>
<ul>
<li>이러한 벡터들은 문맥 중요도에 대한 indicator로 작동</li>
</ul>
</li>
<li><p>모델을 테스트하기 위해 2가지 생성 태스크를 사용 : 대화 응답 생성 &amp; 생성 요약</p>
<ul>
<li>데이터는 사람에 의해 표기된 highlight-generation pair가 표시된 평가 데이터 수집</li>
<li>실험 결과, trained focus vectors는 유져가 선택한 highlight에 관련한 결과를 생성하도록 모델을 유도하는데 효과적이었음</li>
</ul>
<h3 id="1-introduction">1. Introduction</h3>
<ul>
<li>attention module은 단어 단위의 임베딩에 대해 가중 평균을 통해 정보를 통합해 모델에서 중요한 역할을 한다.</li>
<li>어텐션 메카니즘은 2가지 중요한 목적이 있다<ul>
<li>입력의 linguistic phenomena를 포착</li>
<li>모델이 input의 관련 부분에 집중하도록 함</li>
</ul>
</li>
</ul>
</li>
<li><p>하지만 어텐션 메타니즘은 어느 부분에 집중할지 스스로 학습하기 때문에, 유저가 중요하다고 생각하지 않는 부분에 모델이 집중할 경우 이를 고쳐줄 방법이 없음
==&gt; 그래서 유저가 픽한 input span과 관련된 결과를 생성하도록 모델을 조종해보자!가 목표</p>
</li>
<li><p>하지만 문제는 대부분의 유명한 NLG 데이터셋은 end-to-end방식으로 수집된다. 즉, 입력값의 어느 부분이 reference target과 가장 관련됐는지 표기되어 있지 않음. + 제안된 방법도 기존의 사전학습된 트랜스포머 모델이랑 양립할 수 있어야 최고.</p>
</li>
<li><p>본 논문에선, 위의 문제를 다루는 focus vector framework를 제안.
우리의 contribution은 다음과 같다</p>
<ul>
<li>모델의 focus를 컨트롤하기 위해, 학습가능한 focus vector가 있는 사전 학습된 모델을 제안. 이 벡터는 인코더 임베딩에 바로 적용되고, 모델은 고정된 상태로 보존</li>
<li>focus vector를 학습하는 것은 추가 annotation을 요구하지 않음. 존재하는 end-to-end training data로부터 자동적으로 highlight annotation를 이끌어내는 attribution method를 활용.</li>
<li>이러한 방향의 평가와 향후 연구를 위해 사람이 annotation한 평가 데이터를 수집해 공개</li>
<li>2가지 NLG task(대화 응답 생성과 생성 요약)에 대해 본 논문의 모델을 테스트 : 실험 결과, trained focus vector는 하이라이트가 주어질 때 관련된 결과값을 생성하도록 모델을 조종하는데 효과적</li>
</ul>
</li>
</ul>
<h3 id="2-model-formulation">2. Model Formulation</h3>
<ul>
<li><p>타겟 모델은 이미 task-specific data에 NLL로 finetuned된 standard pretrained transformer encoder-decoder model를 가정. </p>
</li>
<li><p>중요한 점은 이 메카니즘이 기본 모델을 바꿔선 안됨, 나중에 유저가 원할 때 default로 돌아갈 수 있도록 하기 위해!</p>
</li>
<li><p>notaion</p>
<ul>
<li><p>${\mathbb x, \mathbb y}$ : end-to-end training data</p>
</li>
<li><p>$\mathbb x = {x_1,...,x_n}$ : input token sequence // $\mathbb y$ : corresponding reference target token sequence</p>
</li>
<li><p>$c_i$ : binary indicator, $i^{th}$ input token is to be highlighted during generation</p>
</li>
<li><p>본 모델에선 오직 완전한 문장의 집합을 valid hightlight span으로 가정.(데이터 수집 용이성 및 구 단위 highlight에도 쉽게 일반화할 수 있을거라 판단)  </p>
</li>
<li><p>encoder model이 L개의 transformer layer로 구성되어 있다고 가정</p>
</li>
<li><p>$\mathbb h^l_i$ : l번째 인코더 레이어에서 i번째 위치의 d차원의 결과 임베딩</p>
</li>
<li><p>${\mathbb h_i^0}$ : input embeddings</p>
</li>
<li><p>각 decoder layer는 encoder의 결과에 대한 multi-head cross attention사용. 이 때 l번째 decoder layer에서 h번째 head에 대한 attention weight computation은 다음과 같이 쓸 수 있다
$$
\alpha^{h,l}<em>{i,j} = softmax</em>{i \in {i...n}} (\frac{k(\mathbb h_i^L) \dot \ q^{h,l}_j}{\sqrt d})
$$</p>
</li>
<li><p>$k(.)$ : linear transform</p>
</li>
<li><p>$\alpha_{i,j}$ : decoder query vector $q_j$에 대해 encoder output $h_i^L$에 할당된 attention weight</p>
</li>
<li><p>$P_M(y|x)$ : 원래 target model에서 input x가 주어졌을 때 y에 할당되는 확률</p>
</li>
</ul>
</li>
<li><p>우리가 제안하는 모델은 크게 2단계를 포함하고 있다.</p>
<ul>
<li>automatic highlight anotations using attribution method</li>
<li>these annotations are used to train the focus vectors</li>
</ul>
</li>
</ul>
<h4 id="21-attribution-methods">2.1 Attribution Methods</h4>
<ul>
<li><p>saliency map으로도 알려져 있는 Attribution methods는 모델의 예측을 입력 특징에 귀속시킨다.</p>
</li>
<li><p>대부분의 saliency method는 원래 이미지 분류를 위해 설계되었는데, input feature의 각 차원에 대해 importance score를 할당하는데 사용되었다.</p>
</li>
<li><p>언어 데이터에 적용하기 위해 약간의 수정(ex. dot-product with the word embeddings)을 거친다.</p>
</li>
<li><p>target y와 model $P_M$에서 sentence $S$(denoting the set of token indexes in the sentence)가 주어질 때, attribution score를 계산해 여러 유명한 attribution method를 구현하고 비교한다.</p>
<ul>
<li>Leave-one-out(LOO) : S의 토큰을 <pad> token으로 교체하고, NLL관점에서 차이르 ㄹ계산
$$
A(S) = log P_M(y|x) - logP_M(y|x_{S-padded})
$$</li>
<li>Attention-weight : S에 속한 toknes에 대한 모든 decoder layer의 모든 attention head에 배정된 attention weight를 합함
$$
A(S) = \sum_{i \in S}\sum_{j,h,l} \alpha_{i,j}^{h,l}
$$</li>
<li>Grad-norm : S에서 input word embedding에 대한 gradient norm의 합
$$
A(S) = \sum_{i\in S} ||\nabla_{h_i^0}logp_M(y|x)||_2
$$</li>
<li>Grad-input-product : input embedding과 각 gradient사이의 내적을 계산
$$
A(S) = \sum_{i \in S}(\nabla_{h_i^0}logP_M(y|x))\dot h_i^0
$$</li>
</ul>
</li>
<li><p>attributin methods는 black-box model를 해석하는데 사용된다 - 모델의 focus를 컨트롤하기 위해 추가로 사용할 수 있는 label를 유도하는 것은 본 논문이 처음임!</p>
</li>
<li><p>실험에서 LOO가 human annoation dataset에서 가장 좋은 상관관계를 가지고 있다는 것을 알아냄
<img src="https://velog.velcdn.com/images/lm_minjin/post/373158ad-2662-45a9-a9ba-5eb7ec4bebba/image.png" alt=""></p>
</li>
<li><p>그래서 automatic highlight annoations을 하기 위해 LOO를 사용</p>
<ul>
<li>input-ouput pair에 대해, input문장들의 LOO attribution scores을 내림차순으로 정렬해서, 앞에서 몇 개의 문장들의 토큰에 마킹(task마다 highlight하는 문장 개수는 다름)</li>
<li>그래서 위의 방법으로 얻은 highlight label을 binary indicator variables $c^{attr}={c^{attr}_1,...,c^{attr}_n}$으로 표시</li>
</ul>
</li>
</ul>
<h4 id="22-focus-vectors">2.2 Focus Vectors</h4>
<ul>
<li><p>모델의 focus를 제어하기 위해, focus vector인 d차원의 벡터 $\theta$를 사용</p>
</li>
<li><p>모델에 indicator로 작동하고, input의 어느 부분에 집중해야하는지를 보여줌</p>
</li>
<li><p>학습 데이터셋이 ${x, c^{attr},y}$로 구성되어 있다고 가정</p>
<ul>
<li>여기서 $c^{attr}$은 위에서 설명한 방법대로 구함</li>
</ul>
</li>
<li><p>focus vector는 각 레이어의 output embedding에 대한 간단한 transformation을 적용해encoder model의 forward pass를 수정
<img src="https://velog.velcdn.com/images/lm_minjin/post/946181c1-c23d-4895-8ee3-287c1969a517/image.png" alt=""></p>
</li>
<li><p>아래 그림을 보면, focus-vector에 의해 사용된 파라미터의 수는 4x(L+1)xd개 이고, 이는 고정된 트랜스포머 모델의 파라미터 수와 비교해봤을 때 무시할만한 수준이다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/4101ed07-5a4c-41bb-ad24-f4a17dca2e14/image.png" alt=""></p>
</li>
<li><p>focus vector는 encoder embedding에 바로 적용되기 때문에, 모델에 외재적인 attention module이 있을 필요가 없으므로 LSTM과 같은 non-attentional architecture에도 적용가능하다.</p>
</li>
<li><p>우리는 SGD로 standard NLL loss를 사용해 focus vector를 학습한다.
$$
L(x,y,c^{attr};\theta) = -log P_{focus}(y|x,c^{attr})
$$
이 때, $P_{focus}(.|x,c^{attr})$은 focus vectors가 적용된 후의 output에 대한 distribution을 의미한다.</p>
</li>
<li><p>focus vector를 학습하는 동안 모델의 파라미터는 고정된다.</p>
</li>
<li><p>loss $-log P_{focus}(y|x,c^{attr})$를 줄이기 위해, focus vector는 $c^{attr}$에 표시된 span쪽으로 model의 focus가 움직이도록 한다.</p>
</li>
</ul>
<h3 id="3-evaluation-data-collection">3 Evaluation Data Collection</h3>
<ul>
<li><p>본 논문에서는 2가지 NLG task에 대해 실험 : 대화 응답 생성과 생성 요약</p>
</li>
<li><p>Dialogue task에서, PersonaChat 데이터셋 사용</p>
<ul>
<li>open domain multi-turn chit-chat dataset</li>
<li>2명의 참가자가 chatting하면서 서로를 알아가는게 요구됨</li>
<li>각각은 주어진 persona가 있음 : 개인적인 정보 몇가지가 주어짐(&quot;I major in Coputer Science&quot;)</li>
<li>대화에서 각각 참여자는 배정된 persona를 반영해야 함</li>
</ul>
</li>
<li><p>summarization에서 CNN/Dailymail dataset사용</p>
<ul>
<li>기본적인 end-to-end abstractive summarization</li>
</ul>
</li>
<li><p>두 데이터셋 모두 end-to-end로 만들어졌고, annotated highlight spans를 포함하지 않음.</p>
</li>
<li><p>원론적인 평가를 위해, AMT(Amazon Mechanical Turk) platform를 활용해서 인간 라벨링을 한  evaluation set를 제작</p>
<ul>
<li>PersonaChat의 경우, dialogue history와 persona를 보고 persona에서 하나 dialogue history에서 하나 선택하는 식으로 1-3문장을 highlight로 선택, 이후 higlight로 선택한 것과 관련되면서 현재 대화를 이어가는 대화 응답을 작성</li>
<li>CNN/Dailymail의 경우, reference summary를 읽고 원문에서 이와 관련한 문장을 2-5개를 선택하도록 함(약간 extractive summary느낌.. 인듯)</li>
<li>최종적으로 PersonaChat에 대해선 3902, CNN/Dailymail에 대해선 4159개를 수집, 이를 반반으로 무작위로 나눠서 50/50으로 dev/test set으로 사용</li>
</ul>
<h4 id="comparison-of-attribution-methods">Comparison of Attribution Methods</h4>
<ul>
<li>human-annotated highlight를 이용해 attribution method를 비교</li>
<li>특히, 우리는 표1에서 처럼 가장 높은 랭킹인 문장의 top-one precision을 계산</li>
<li>PersonaChat과 Cnn/Dailymail 둘다에서 LOO가 best alignment였음
==&gt; LOO를 사용해서 focus vector training을 위한 automatic annotation을 얻음</li>
<li>attention weight derived attribution scores과 human judgment사이의 low alignment를 봤지만, 이것이 attention ditributions에 개입을 통해 모델 생성을 통재하는 것이 최적이 아닐 수 있음을 보임.(높아봐야 62정도니까..? 하지만 이게 안되면 이 논문은 의미가..?)</li>
</ul>
</li>
</ul>
<h3 id="4-experiments">4. Experiments</h3>
<h4 id="41-experiment-setting-and-baselines">4.1 Experiment Setting and baselines</h4>
<ul>
<li><p>PersonaChat에 대해선 Blenderbot을 CNN/Dailymail에 대해선 BART를 기본 모델로 사용</p>
<ul>
<li>Blenderbot은 2개의 encoder와 12개의 decoder layer로 구성되지만, BART는 6개의 endoer와 6개의 decoder로 구성됨.</li>
<li>Blenderbot의 position embedding index를 128에서 256으로 늘림.</li>
<li>Decoding에서 beam-search를 사용하였는데, Belnderbot에선 10, BART에선 4를 사용</li>
</ul>
</li>
<li><p>각 모델 파인튜닝 후에, LOO를 사용해 자동으로 PersonaChat에선 1-3개 문장, CNN/Dailmail에선 2-5개 문장을 highlight를 한 학습 데이터셋을 사용  </p>
</li>
<li><p>4가지 focus-vector approach를 비교</p>
<ul>
<li>Vanilla : input과 model 둘다에서 어떠한 수정도 하지 않은 모델</li>
<li>Padding : highlight외에 모든 input을 <pad> 토큰으로 교체해 모델의 focus를 통제하는 방법. 그러나 이 방법은 perplexity를 급격하게 낮춤
==&gt; 그래서 기본 end-to-end finetuning하는 동안 input에서 문장의 일부분을 무작위하게 padding처리함(모델이 오직 input의 부분만 보고 인지하도록)</li>
<li>Keyword-control : 모델 finetuning시, Yake라는 비지도 keyword extraction method를 활용해 reference sequence에서 추출한 key-phrases를 원래 input으로 선행시킴. 평가 동안, 우리는 highlighted sentences에서 추출된 key-phrase를 추출하고 preprend한다.(이해 못함)<ul>
<li>Attention-offset : 모델의 attention을 통제하는 직접적인 방법으로, 양의 스칼라 offset $s^{offset}$을 softmax operation전에 cross-attention head에 더함.
<img src="https://velog.velcdn.com/images/lm_minjin/post/a487e61d-00d9-45bb-ada9-553a684a6b53/image.png" alt=""></li>
<li>$s^{offset}$은 하이퍼파라미터로, 디코더의 모든 cross-attention head에 적용됨</li>
</ul>
</li>
</ul>
</li>
</ul>
<h4 id="42-results-and-analysis">4.2 Results and Analysis</h4>
<ul>
<li><p>평가 동안, human-annotated highlight가 모델로 들어감</p>
</li>
<li><p>평가 지표 : perplexity, ROUGE, BERTScore</p>
</li>
<li><p>실험 결과
<img src="https://velog.velcdn.com/images/lm_minjin/post/526ebec3-93b2-4857-9d61-c81d59effe04/image.png" alt=""></p>
<ul>
<li>padding baseline은 성능 안좋음(입력의 대부분이 마스크로 날라가니까)</li>
<li>다양한 베이스라인을 비교했을 때, 두 태스크 모두에서 ROUGE, BERTScore가 크게 증가</li>
<li>이는 focus-vec이 모델을 조종하는데 효과적이고, 원하는 방향으로 생성을 이끌어낼 수 있다는 것을 의미</li>
<li>CNN/Dailymail에 대해선 focus-vector의 perplexity가 vanilla model과 유사했다(단 ROUGE는 큰 차이가 남)</li>
<li>key-phrases는 vanilla model보단 낫지만, attention-offset이나 focus-vector보단 안좋았다. 
저자는 그 이유로,
1) key-phrases는 highlighted span을 완전히 표현할 수 없다 
2) training과 evaluation사이에 추출된 key-phrases의 불일치 를 뽑았다.</li>
<li>focus-vector와 attention-offset사이에서 ROUGE와 BERTScore의 성능 갭은 CNN/Dailmail dataset에서 더 컸다. 
=&gt; BART가 Blenderbot model보다 더 깊은 인코더를 가지고 있기 때문으로 추정 / 인코더가 깊을수록 임베딩이 더 가까워지고, identifiability가 감소한다. 결국 인코더의 마지막단을 디코더가 attent하기 때문에, 이런 직접적인 attention weight 조작이 딥 인코더에선 효과적이지 않을 수 있다.</li>
</ul>
<ul>
<li>PersonaChat에서 다양한 focus-control approaches들이 샘플을 생성하는 예시를 보여주고 있다. 
highlights와 관련된 생성 부분이 빨간색으로 표기 됨
<img src="https://velog.velcdn.com/images/lm_minjin/post/fd4eaca9-c019-443c-a8d3-8ee0771b1465/image.png" alt=""></li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[운영체제] CH2 컴퓨터의 구조와 성능 향상]]></title>
            <link>https://velog.io/@lm_minjin/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-CH2-%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98-%EA%B5%AC%EC%A1%B0%EC%99%80-%EC%84%B1%EB%8A%A5-%ED%96%A5%EC%83%81</link>
            <guid>https://velog.io/@lm_minjin/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-CH2-%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98-%EA%B5%AC%EC%A1%B0%EC%99%80-%EC%84%B1%EB%8A%A5-%ED%96%A5%EC%83%81</guid>
            <pubDate>Tue, 17 May 2022 10:56:42 GMT</pubDate>
            <description><![CDATA[<h3 id="1-컴퓨터의-기본-구성">1 컴퓨터의 기본 구성</h3>
<h4 id="11-하드웨어의-구성">1.1 하드웨어의 구성</h4>
<ul>
<li>컴퓨터는 중앙처리장치(CPU), 메인 메모리(RAM), 입력장치, 출력장치, 저장장치로 구성됨.<h4 id="12-폰노이만-구조">1.2 폰노이만 구조</h4>
</li>
<li>오늘날의 컴퓨터는 대부분 폰노이만 구조를 따름. </li>
<li>폰노이만 구조 
: CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 구조
: 가장 중요한 특징은 &quot;모든 프로그램은 메모리에 올라와야 실행할 수 있다&quot;는 것</li>
</ul>
<h3 id="2-cpu와-메모리">2 CPU와 메모리</h3>
<h4 id="1-cpu의-구성과-동작">1 CPU의 구성과 동작</h4>
<p>CPU는 명령어를 해석하여 실행하는 장치로 산술논리 연산정치, 제어장치, 레지스터로 구성되며, 이들의 협업으로 작업을 처리한다.</p>
<ul>
<li><p>레지스터의 종류</p>
<ul>
<li>데이터 레지스터(DR) : 데이터 레지스터는 메모리에서 가져온 데이터를 임시로 보관할 때 사용한다. CPU에 있는 대부분의 레지스터가 데이터 레지스터이기 때문에 일반 레지스터 또는 범용 레지스터라고 한다.</li>
<li>주소 레지스터(AR) : 데이터 또는 명령어가 저장된 메모리의 주소는 주소 레지스터에 저장됨</li>
<li>프로그램 카운터(PC) : CPU가 다음에 처리해야 할 명령어의 주소를 가리킴</li>
<li>명령어 레지스터(IR) : 현재 실행 중인 명령어를 저장. 제어장치는 명령어 레지스터에 있는 명령을 해석한 후 외부 장치에 적절한 제어 신호를 보냄</li>
<li>메모리 주소 레지스터(MAR) : 메모리에서 데이터를 가져오거나 반대로 메모리를 데이터로 보낼 때 주소를 지정하기 위해 사용. 명령어를 처리하는 과정에서 필요한 메모리 주소를 이 레지스터에 넣으면 메모리 관리자가 이를 인식하여 해당 메모리 위치의 데이터를 저장한다.</li>
<li>메모리 버퍼 레지스터(MBR) : 메모리에서 가져온 데이터나 메모리로 옮겨갈 데이터를 임시로 저장. 항상 메모리 주소 레지스터와 함께 동작</li>
</ul>
<p>이외에도 엄청나게 많다!</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Evaluation of GANs & GAN Disadvantages and Bias]]></title>
            <link>https://velog.io/@lm_minjin/GAN-%ED%8F%89%EA%B0%80</link>
            <guid>https://velog.io/@lm_minjin/GAN-%ED%8F%89%EA%B0%80</guid>
            <pubDate>Mon, 16 May 2022 13:13:37 GMT</pubDate>
            <description><![CDATA[<p>** 본 포스팅은 cousera GANs 5,6강을 보고 작성되었습니다.</p>
<h3 id="why-is-evaluating-gans-hard">Why is evaluating GANs hard?</h3>
<ul>
<li>예를 들어 classifier의 경우, 답이 정해져 있으므로 모델이 무언가 결과를 내뱉었을 때 옳은지 틀린지 바로 평가할 수 있다.</li>
<li>하지만, GAN의 경우 noise를 넣어 진짜인 것 같은 가짜 이미지를 생성하게 되는데, 이 때 각 픽셀이 구체적으로 어떤 값을 가져야하는지 알 수 없다.</li>
</ul>
<h4 id="생성된-이미지를-평가할-때-중요한-2가지-지표">생성된 이미지를 평가할 때 중요한 2가지 지표</h4>
<ul>
<li>Fidelity : quality of images   </li>
<li>Diversity : variety of images - 조금 질은 떨어지지만 다양한 강아지들이 다양한 자세를 하고 있는 것을 볼 수 있다.
==&gt; Fiedlity뿐만 아니라 Diversity(데이터셋 내에서 얼마나 다양한 이미지를 생성할 수 있는지)도 고려해야할 중요한 지표
<img src="https://velog.velcdn.com/images/lm_minjin/post/49af2aa6-7d51-49bd-8e34-69758fc4e848/image.png" alt=""></li>
</ul>
<p>summary</p>
<ul>
<li>No ground-truth = challening to evaluate</li>
<li>Fidelity measures image quality and diversity measures variety</li>
<li>Evaluation metrics try to quantify fidelity &amp; diversity</li>
</ul>
<h3 id="comparing-images">Comparing Images</h3>
<h4 id="pixel-distance">Pixel distance</h4>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/64888103-210b-4676-90f6-07aff132f69e/image.png" alt="">
각 픽셀값의 차이의 절댓값을 이용해서 구한다. 쉽게 값을 구할 수 있지만, 1픽셀만 움직여도 크게 달라진다. 현실적으로 사용 불가! </p>
<h4 id="feature-distance">Feature Distance</h4>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/02f9cf83-d856-41d6-ae08-79ec91c1eaac/image.png" alt="">
다른 방식은 더 higher level feature를 사용하는 것! 특징들을 추출해서 비교하기 때문에, 위상변화에 대해 pixel distance보다 덜 민감하다.
ex) 개는 눈 2개 귀 2개 귀여운 코!</p>
<p>summary</p>
<ul>
<li>pixel distance는 간단하지만 실현 가능하지 않다</li>
<li>feature distance는 이미지에서 higher level의 특징을 사용하기 때문에, 위상변화에 덜 민감하고 더 현실적이다!</li>
</ul>
<h3 id="feature-extraction">Feature Extraction</h3>
<p>Feature distance를 구하기 위해선 feature를 나타내는 벡터가 필요! feature vector를 구하기 위해 pre-trained CNN모델을 이용한다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/4cf21c70-f112-4b3c-a794-667a53c3f597/image.png" alt="">
이미지 분류에서 특징을 추출하는 convolutiaonal layer와 분류를 하는 fully connected layers로 구성됨. fc layer에서 나오는 weight의 경우 dataset이나 task(분류하려는 클래스)에 따라 overfitting될 수 있으므로 중간 단계 layer의 pooling단을 feature vector로 사용한다. 즉,  conv단계에서 특징을 추출한 feature layer(이미지를 농축시킨)를 구할 수 있고, 이를 사용해 이미지를 embedding할 수 있다. 대부분 CNN부분의 마지막 pooling layer를 feature layer로 사용하나 필요에 따라 앞 부분의 layer를 사용하는 경우도 있다.  ImageNet dataset를 이용해 pre-trained된 CNN을 사용한다.</p>
<p>summary</p>
<ul>
<li>classifier can be used as feature extractors by cutting the network at earlier layers</li>
<li>The last pooling layer is most commonly used for feature extraction</li>
<li>Best to use classifiers that have been trained on large dataset-ImageNet</li>
</ul>
<h3 id="inception-v3-and-embedding">Inception-v3 and Embedding</h3>
<p>여러 pretrained classifier를 쓸 수 있지만, 가장 대표적인 것은 inception-v3
<img src="https://velog.velcdn.com/images/lm_minjin/post/1962af43-abba-450c-8be4-abc9e26a837d/image.png" alt="">
 Inception은 42layer로 구성되었지만 굉장히 효율적인 연산량을 보여준다. 이 그림에서 보면, output으로 얻게 되는 $8<em>8</em>2048$에 $8*8$ pooling을 하게 되면, 2048차원의 feature를 산출해낼 수 있다. 즉, 이미지가 주어지면 이미지의 픽셀을 농축시켜서 salient feature를 나타내는 2048차원의 벡터로 만들게 된다!</p>
<p> <img src="https://velog.velcdn.com/images/lm_minjin/post/405b9063-2cb8-41f0-a4d7-9c151380b631/image.png" alt=""></p>
<p>feature extration 모델을 위와 같은 함수로 표현할 수 있다. input을 넣었을 때 feature로 mapping시켜주는 함수이다. $\phi$는 fc layer가 없는 inception network를 의미한다.
$\phi$: Embedding function, $x$ : input image
$\phi(x) = (x_1,x_2, ..., x_n)^T$, $x_i$ : 어떠한 특징의 값</p>
<p>이렇게 얻어진 벡터 $\phi(x)$를 이용해서 진짜 이미지와 가짜 이미지의 feature distance를 구할 수 있다.</p>
<p>Summary</p>
<ul>
<li>Commonly used feature extractor : Inception-v3 classifier, which is pre-trained on Image Net, with the output layer cut off</li>
<li>These features are called embeddings</li>
<li>Compare embedding to get the feature distance</li>
</ul>
<h3 id="frechet-inception-distancefid">Frechet Inception Distance(FID)</h3>
<p>진짜 이미지와 가짜 이미지 사이의 feature distance를 측정하는 가장 유명한 지표
Frechet Distance는 곡선을 따르는 점들의 위치와 순서를 고려한 곡선간의 유사성을 측정하는데 사용하는 방법. 두 분포 사이의 거리를 측정하는 데에도 사용됨!</p>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/1f52930a-85df-4c0b-a117-056388112075/image.png" alt="">
수학적으로, 프레쳇 거리는 두 &quot;다변량&quot; 정규분포 사이의 거리를 계산하는데 사용된다. 위의 그림은 &quot;일변량&quot; 정규분포의 경우, 프레쳇 거리를 계산하는 방법이 나타나 있다. 프레쳇 거리에 따르면 두 분포의 차이는 평균의 거리의 제곱과 표준편차의 거리의 제곱의 합으로 나타낼 수 있다.</p>
<p>GAN 평가의 맥락에서 위의 방법을 사용해 feature distance를 계산해보자. 각 이미지를 embedding하기 위한 Inception V3모델에서 activation을 사용하면 score에 Frechet Inception Distance라는 이름이 부여된다.</p>
<p>penultimate pooling layer(끝에서 두번째 풀링 레이어)에서 이 activation을 가져오는데, shape (2048,)의 출력 벡터가 &quot;다변량&quot;정규분포에 가깝다고 가정한다.</p>
<p>&quot;다변량&quot; 정규분포에 따른 프레쳇 인셉션 거리는 다음과 같이 주어진다.
$$
FID = ||\mu_X - \mu_Y||^2 - Tr(\sum_X+\sum_Y -2\sum_X\sum_Y)
$$
여기서 $X$와 $Y$는 두 개의 다변량정규분포로 가정된 실제와 가짜 임베딩(Inception모델에서 활성화)이다. $\mu_X$와 $\mu_Y$는 $X$와 $Y$의 크기이다. $Tr$은 행렬의 대각합(trace)이고, $\sum_X$와 $\sum_Y$는 벡터의 공분산 행렬이다. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/9f3a04c3-f09d-48c5-bd0a-9868b57913b4/image.png" alt=""></p>
<p>코드로 나타내면 다음과 같다(reference에서 참조).</p>
<ol>
<li><p>사전 학습된 Inception V3모델을 사용하기 위해 다음과 같이 불러온다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/6cdc4757-0de3-452b-b284-12c23a523b25/image.png" alt=""></p>
</li>
<li><p>실제 이미지와 생성된 이미지에 대한 임베딩을 계산한다. </p>
</li>
</ol>
<ul>
<li>GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium의 저자는 최소 샘플 사이즈 10,000을 사용하여 FID를 계산할 것을 권장하고 있다(그래서 10000개씩 모아서 한번에 FID점수를 계산하도록 코드가 짜여져 있음). 그렇지 않은 경우 생성기(generator)의 실제 FID(true FID)가 과소평가된다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/9cec81f5-e843-4cd6-9b53-5b3350314906/image.png" alt=""></li>
<li>inception_model.predict를 embedding으로 사용하는 것을 볼 수 있다.</li>
</ul>
<ol start="3">
<li><p>실제 생성된 이미지 임베딩을 사용해 FID score를 계산한다.</p>
<pre><code>def calculate_fid(real_embeddings, generated_embeddings):
  # calculate mean and covariance statistics
  mu1, sigma1 = real_embeddings.mean(axis=0), np.cov(real_embeddings, rowvar=False)
  mu2, sigma2 = generated_embeddings.mean(axis=0), np.cov(generated_embeddings,  rowvar=False)
  # calculate sum squared difference between means
 ssdiff = np.sum((mu1 - mu2)**2.0)
 # calculate sqrt of product between cov
 covmean = linalg.sqrtm(sigma1.dot(sigma2))
 # check and correct imaginary numbers from sqrt
 if np.iscomplexobj(covmean):
    covmean = covmean.real
  # calculate score
  fid = ssdiff + np.trace(sigma1 + sigma2 - 2.0 * covmean)
  return fid

fid = calculate_fid(real_image_embeddings, generated_image_embeddings)</code></pre><p>위의 수식 그대로 embedding의 평균과 공분산을 구해서 거리의 합을 구하는 것을 알 수 있다.</p>
</li>
</ol>
<p>FID의 단점 </p>
<ul>
<li>ImageNet data로 pre-trained된 경우 ImageNet data 이미지의 class와 다른 이미지를 다룰 경우 원하는 특징을 포착하지 못할 수 있다. </li>
<li>pre-trained가 아닌 경우, 많은 수의 sample로 학습시키지 않으면 biased feature layer가 생겨서 좋지 못한 FID score를 얻게 된다.(권장되는 최소 샘플 사이즈는 10000)</li>
<li>pre-trained가 아닌 경우, 학습을 시키기 위해 시간이 오래 걸린다.</li>
<li>표본의 분포가 정규분포가 아닐 경우 제한적인 통계량(평균,분산)만으로는 분포의 차이를 잘못 설명할 수 있다.</li>
</ul>
<p>summary</p>
<ul>
<li>FID calculates the difference between reals and fakes</li>
<li>FID uses the Inception model and multivariate normal Frechet distance</li>
<li>Sample size need to be large for FID to work well</li>
</ul>
<h3 id="inception-scoreis">Inception Score(IS)</h3>
<ul>
<li>IS : classifier =&gt; fc layer 사용</li>
<li>PID : feature extractor =&gt; fc layer 사용 안함
<img src="https://velog.velcdn.com/images/lm_minjin/post/147554cf-3963-42b4-8d17-6fe24b0ecc27/image.png" alt="">
fidelity가 높다면, 몇몇 지점만 확률이 높고 나머지는 전반적으로 확률이 낮아(low entropy) 특정 클래스로 분류될 확률이 높다. diversity를 높이고 싶다면 data들이 특정 클래스로 집중되지 않아야 한다(high entropy).
<img src="https://velog.velcdn.com/images/lm_minjin/post/7dcdb90b-0000-4956-a718-407512fcb68e/image.png" alt="">
위 사진의 왼쪽은 $p(y|x)$를 나타내고 한 지점에서 peaky하므로 entropy가 낮다(Fidelity). 오른쪽은 $p(y)$를 나타내고 골고루 퍼진 분포를 보이므로 entropy가 높다(Diversity).</li>
</ul>
<p>그렇다면, 이러한 fidelity와 diversity는 어떻게 식으로 나타낼 수 있을까? KL Divergence를 통해 두 가지를 하나의 식으로 표현할 수 있다.</p>
<p>KL Divergence는 fidelity를 나타내는 $p(y|x)$의 분포와 diversity를 나타내는 $p(y)$가 얼마나 다른지를 대략적으로 측정할 수 있다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/966fdb61-8b87-4a69-b03c-dee57a0b1f2d/image.png" alt=""></p>
<p>Fidelity와 Diversity를 나타내는 분포들의 차이를 KL divergence의 기대값을 이용해서 구한 후 지수 제곱을 해주면 Inception Score가 된다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/7078df74-d7da-4449-bfe4-3eac73f151a3/image.png" alt=""></p>
<ul>
<li>$p_\epsilon$ : $p_g$, generator로 생성한 샘플
이론상으로 가장 작은 값은 0, 가장 큰 값은 infinity지만, 실제로 사용할 땐 가능한 가장 작은 값은 1, 가장 큰 값은 존재하는 클래스의 수이다(Imagenet에선 1000). </li>
</ul>
<p>IS는 높을수록 좋다. 우리가 생각하는 우수한 생성모델은, 다양한 클래스의 이미지를 생성하면서도 고화질의 이미지를 생성하는 것이다. 즉, fidelity가 높기 때문에, classifier가 잘 분류해낼 것 == $p(x|y)$가 한 곳에서 높은 값을 갖는 분포가 되고, diversity가 높기 때문에 다양한 클래스의 이미지를 생성해낼 것 == $p(y)$가 uniform distribution가 비슷한 형태의 분포를 갖게 된다. 두 분포의 차이가 크므로 KL divergence가 크고, KL divergence가 커지면 IS도 커지므로, IS가 큰 값을 가지면 fidelity와 diversity가 우수한 생성모델이라고 할 수 있다.</p>
<p>반면에 IS가 낮다면, 두 분포 모두 entropy가 높아서 다양성이 낮거나 두 분포 모두 entropy가 낮아서 선명한 이미지가 만들어지지 않는 두 가지 경우 중 하나이다.</p>
<p>IS의 단점</p>
<ul>
<li>생성자가 label마다 하나의 이미지만 반복해서 생성하는 경우 IS가 높지만 이는 inner diversity를 고려하지 못한 좋지 못한 생성모델(8에 관한 사진이 100장이 있는데 1장이랑만 똑같은 이미지를 반복해서 생성)</li>
<li>fake image만을 이용한다. -&gt; real image와 비교하지 못한다.</li>
<li>FID와 마찬가지로 ImageNet date로 pre-trained된 경우 ImageNet data 이미지의 class와 다른 이미지를 다룰 경우 원하는 특징을 포착하지 못할 수 있다.</li>
</ul>
<p>Summary</p>
<ul>
<li>Inception Score tries to capture fiedlity &amp; diversity</li>
<li>Inception Score has many shortcomings<ul>
<li>Can be gamed too easily</li>
<li>Only looks at fake images, not reals</li>
<li>ImageNet doesn&#39;t teach a model all features</li>
</ul>
</li>
<li>Worse than Frechet Inception Distance</li>
</ul>
<h3 id="sampling-and-trucation">Sampling and Trucation</h3>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/d8699071-4e57-43c0-9625-0b84fbaaf06e/image.png" alt="">
GAN을 평가할 때 latent vector z의 사전 분포에 맞게 sampling한다. $\mu$근처에서 sampling된 z들은 이용해 fidelity에 집중해 평가할 수 있고, 반대로 $\mu$와 먼 곳까지 포함해서 samping된 z들을 이용해 diversity에 집중해서 평가할 수 있다. 다시 말하면, FID나 inception score와 같은 평가는 sample에 매우 큰 영향을 받으므로 sample이 중요하다.</p>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/553354d6-293a-4c23-bfa8-3fb84b29b8a6/image.png" alt="">
truncation trick을 이용해서 z분포의 양 극단을 잘라낸 곳에서 sampling을 한 후 평가를 할 수 있다. 파란색이 기존 normal distribution(sampe noise vector from during training)이고 빨간색이 양 극단을 잘라낸 모양인데, 양 극단의 확률은 0이므로 양 끝에선 샘플링을 하지 않는다.</p>
<p>우수한 fidelity를 원하는 경우 양 끝 부분을 많이 잘라내서 sampling하면 되고, 우수한 diversity를 원하는 경우 양 끝분을 적게 잘라내서 sampling하면 된다. 이처럼 잘라내는 지점은 hyperparameter로 사람이 경험에 의해 직접 지정한다.</p>
<h4 id="hypehuman-eye-perceptual-evaluation">HYPE(Human eYe Perceptual Evaluation)</h4>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/e0ecbd79-420e-4f09-a410-9fcc4f72a198/image.png" alt=""></p>
<ul>
<li>지각 심리학의 심리 물리학 방법에서 영감을 받은 근거가 있는 방법을 통해 생성 모델 출력의 지각 현실성을 측정</li>
<li>신뢰할 수 있고, 일관된 측정기</li>
<li>크라우드소싱 기술을 통해 비용과 시간 효율적인 방법을 보장 </li>
<li>Fidelity(realism)에 대해 평가할 수 있지만, 다른 지표들(diversity, overfitting, train stability)는 평가하지 못함</li>
</ul>
<p>HYPE(time)</p>
<ul>
<li>사람이 진짜로부터 가짜를 구별하는데 필요한 시간 제한적인 인지 임계값을 결정하기 위해 시간 제약을 조정하며 이미지들을 보여줌</li>
<li>HYPE(time) score는 사람이 모델의 결과를 진짜인지 가짜인지 구분하는데 걸리는 최소의 시간</li>
</ul>
<p>HYPE(time)의 방법</p>
<ul>
<li>150개의 이미지(5:5 real/fake)들을 노출시간을 500ms로 시작해서 가짜 진짜를 판별시킴. 맞추면 노출시간을 30ms줄이고, 틀리면 10ms 눌림</li>
<li>각 평가자의 마지막 값을 계산해 평균을 구해 점수로 산출</li>
<li>높은 점수 == 진짜와 가짜를 구분하는데 더 긴 시간이 필요. 즉 좋은 생성 모델!</li>
</ul>
<p>HYPE(inf)</p>
<ul>
<li>time 버전의 신뢰도를 유지하면서 첫번째 방법을 더 간단하고 빠르고 저렴하게 이용</li>
<li>시간 제한 없이, 사람들이 가짜와 진짜를 착각하는 비율로 해석</li>
<li>점수가 50%보다 높으면 생성된 결과가 진짜보다 더욱 현실적이라는걸 보여줌</li>
</ul>
<p>HYPE(inf)의 방법</p>
<ul>
<li>100개 이미지를 (5:5 real/fake) 각 평가자에게 보여주고 잘못 평가한 이미지들의 비율을 계산해 n명의 평가를 종합</li>
<li>높은 점수가 나올수록 좋은 생성모델</li>
</ul>
<p>Summary</p>
<ul>
<li>fakes are sampled using the training or prior distribution of z</li>
<li>Truncate more for higher fidelity, lower diversity</li>
<li>Human evaluation is still necessary for sampling</li>
</ul>
<h3 id="precision-and-recall">Precision and Recall</h3>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/7b6d46be-b64a-4721-9235-3989f5fe2f01/image.png" alt="">
precision = 생성된 이미지 중 실제 이미지 분포에 들어가는 이미지들 / 생성된 이미지들
(원래는 모델이 True라고 분류한 것 중 실제 True인 것의 비율)
precision은 fidelity와 연관 - precision이 높으면 생성한 이미지들이 모두 진짜인것 같은 이미지이므로 fidelity와 연관되지만, 이것이 generator가 모든 실제 이미지 분포를 커버한다는 것은 아님</p>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/7d4ffecb-341f-4db8-b898-e5e9d5445f3f/image.png" alt="">
recall = 실제 이미지 중 생성된 이미지 분포에 들어가는 이미지들 / 실제 이미지들
(원래는 실제 True인 것 중 모델이 True라고 분류한 것의 비율)
recall은 diversity와 연관 - 생성 모델이 가능한 모든 실제 이미지를 생성할 수 있는가</p>
<p>모델이 커지면 $P_g$의 범위가 커지니까 recall 점수는 높아짐. 그래서 대부분의 경우 recall이 precision보다 높다 . 따라서 truncation trick을 이용해 precision을 높인다.</p>
<p>Summary</p>
<ul>
<li>Precision is to fidelity as to recall is to diversity</li>
<li>Models tend to be better at recall</li>
<li>Use truncation trick to imporve precision</li>
</ul>
<h3 id="disadvantages-of-gans">Disadvantages of GANs</h3>
<p>Advantages of GANs</p>
<ul>
<li>놀라운 실험적 결과 - 특히 fidelity 측면에서!
<img src="https://velog.velcdn.com/images/lm_minjin/post/3ec5878f-f0a7-49d0-a92e-9c51f514a400/image.png" alt=""></li>
<li>이미지 생성 시간이 빠름</li>
</ul>
<p>Disadvantages of GANs</p>
<ul>
<li>본질적인 평가 지표의 부족 ex) 정말 진짜 이미지 같은가?</li>
<li>학습의 불안정성(ex. mode collapes)</li>
<li>명시적인 확률 밀도를 알 수 없음 ex) 강아지 사진을 생성한다고 할 때, 골든 리트리버가 얼마나 나오는지</li>
<li>latent vector로 역변환이 어려움</li>
</ul>
<h3 id="alternatives-to-gans">Alternatives to GANs</h3>
<p><strong>Variational Autoencoder(VAE)</strong>
<img src="https://velog.velcdn.com/images/lm_minjin/post/924f171b-df28-4a74-9d09-b1e9076cb67e/image.png" alt="">
진짜 사진 -&gt; Encoder -&gt; latent Space -&gt; decoder 의 구성</p>
<p>장점</p>
<ul>
<li>확률 밀도를 알 수 있다</li>
<li>역변환이 가능하다</li>
<li>학습의 안정성</li>
</ul>
<p>단점</p>
<ul>
<li>blurry한 생성 결과(fidelity가 낮음)</li>
</ul>
<p><strong>Autoregressive Model</strong>
<img src="https://velog.velcdn.com/images/lm_minjin/post/5dd56473-4554-4ffd-998f-44af55da6ad2/image.png" alt=""></p>
<p>RNN처럼 이전 픽셀을 바탕으로 다음 픽셀을 생성, GAN이나 VAE와 달리 latent vector가 존재하지 않음
pixelRNN, pixelCNN, GatedpixelCNN 등..</p>
<p><strong>Flow based generative model</strong>
<img src="https://velog.velcdn.com/images/lm_minjin/post/5b901c64-f3e1-48e0-b5e0-dfc4ec40b4ad/image.png" alt="">
다른 모델과 다르게 latent vector z가 input vector x와 같은 차원을 가짐. 같은 차원을 가지므로 정보의 손실이 적다.
z의 분포를 표준정규분포로 시작해 변수변환과 야코비안을 이용해 x의 분포처럼 복잡한 분포로 만든다. 이 때, 변환에 사용되는 함수는 역함수가 존재해야하고, 야코비안 행렬식 계산이 간단하게 이루어져야 한다.
즉, $z=f(x)$를 학습하되, $f$ $f^{-1}$를 통해 다시 x를 계산하는 것을 목표로 함. 이러한 과정을 통해 구한 함수 f를 이용해 생성 결과물을 얻는다.</p>
<h3 id="intro-to-machine-bias">Intro to Machine Bias</h3>
<p>COMPAS Algorithm
: 미래에 범죄를 저지를 확률에 따라 점수를 주는 알고리즘. ProPublica는 기사에서 해당 알고리즘에 인종차별적 요소가 들어가 있다고 문제 제기
<img src="https://velog.velcdn.com/images/lm_minjin/post/a28bd845-39e1-4a95-8035-65fcbb7e071d/image.png" alt="">
왼쪽의 백인 남성은 Home Depot에서 $86가치의 물건을 절도했고, 무장 절도 및 수감 경험이 있다. 오른쪽의 여성은 $80가치의 자전거와 스쿠터 절도를 시도했고, 현장에서 물건을 두고 도주했다. 다른 전과 기록은 없다. 하지만 흑인 여성의 COMPAS점수가 더 높았다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/882d39ea-3686-45c5-a427-34adcc0f2869/image.png" alt=""></p>
<p>이 알고리즘의 사전 질문에 인종에 관한 질문은 없지만, 인종차별적인 결과를 유발하고 있다. 알고리즘의 계산과정은 공개되지 않아 알고리즘 설계에서 인종차별적 결과를 의도했는지 확인하기 어렵다. </p>
<p>알고리즘의 점수는 판사의 판단에 영향을 미쳐 수감 기간에 영향을 준다.</p>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/270a22c6-d4be-4384-9f48-e98917811627/image.png" alt="">
흑인은 백인에 비해 2배정도 더 위험한 사람으로 분류되었지만, 실제로는 다시 범죄를 저지르지 않았다. </p>
<p>즉, 이러한 Machine bias는 역사적으로 소외된 인구에 대해 불균형적으로 부정적인 영향을 끼친다 .</p>
<h3 id="defining-fairness">Defining Fairness</h3>
<p>fair한지 평가할 수 있는 여러가지 기준들
ex) Ground-truth에 상관없이 분류 결과의 비율이 같으면 된다 / 그룹에 상관없이 실제 자격이 있는 사람은 선호되는 결과인 Admitted로 분류될 확률이 같아야 한다 / 그룹에 상관없이 자격이 있는 학생은 Admitted로, 자격이 없는 학생은 rejected로 분류될 확률이 같아야 한다 / 그룹 조건이 포함되지 않았을 때 분류 결과 비율이 같으면 된다 등..</p>
<p>결론</p>
<ul>
<li>Fairness is difficult to define</li>
<li>There is no single definition of fairness</li>
<li>Important to explore these before releasing a system into production</li>
</ul>
<h3 id="ways-bias-is-introduced">Ways Bias is Introduced</h3>
<p><strong>Training Bias</strong>
<img src="https://velog.velcdn.com/images/lm_minjin/post/b19d774b-d608-43f4-ba7c-9836cc67f95d/image.png" alt=""></p>
<ul>
<li>데이터를 수집하는 경우에서 variation이 없는 데이터를 수집하는 경우(사람 얼굴 사진을 수집하는데 백인만, 흑인만 등..)</li>
<li>데이터가 한 장소 또는 한 웹사이트에서 수집되는 경우 (특정 지역의 demographic정보만 반영될 수 있다)</li>
<li>데이터를 라벨링할 때 라벨링하는 다양한 사람이 필요하다. 소수의 라벨러는 데이터에 편향을 줄 수 있다.</li>
</ul>
<p><strong>Evaluation Bias</strong>
모델이 평가될 때 주요 문화 특성에서의 correctness가 반영되어 편향이 생길 수 있다</p>
<ul>
<li>운전시 운전자 방향 위치
<img src="https://velog.velcdn.com/images/lm_minjin/post/2bb1ccc6-c609-4938-bbb5-1be4043f637c/image.png" alt=""></li>
<li>ImageNet분포와 world population분포 차이
: 생성 모델을 평가할 때 FID가 사용되는데, FID의 Inception-v3은 ImageNet dataset을 이용해 사전학습되므로 ImageNet dataset의 편향에 영향을 받아 편향된 결과를 얻게 될 수 있다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/b77ae8e7-d897-4792-a823-ce3bb5d3e03b/image.png" alt=""></li>
</ul>
<p><strong>Model Architecture Bias</strong>
구조를 설계하거나 코드를 최적화하는 프로그래머에 의해 영향을 받을 수 있다.
==&gt; Bias는 어느 단계에서든 발생할 수 있다.</p>
<p><strong>PULSE</strong>
<img src="https://velog.velcdn.com/images/lm_minjin/post/dc1a6e56-fbe0-4ebc-9f80-e1d79a750391/image.png" alt="">
원본 사진을 픽셀화하고, 다시 upsampling했을 때의 결과이다. 3명 다 유색 인종이지만 upsampling한 결과를 보면 백인의 특성을 많이 갖는 이미지들이 생성되었다. 즉, 해당 모델이 bias가 존재함을 알 수 있다.</p>
<p>머신러닝 알고리즘을 개발할 때 데이터 수집으로부터 평가 및 활용 등 전 과정에서 bias가 생길 수 있다. bias는 ML community에서 논쟁거리이며 이를 극복하기 위한 연구도 진행되고 있다.</p>
<blockquote>
<p>**reference
<a href="https://www.youtube.com/watch?v=sZkHO4rPqJg&amp;list=PLsLwz2eoSYLWW09NAhDIq-i8ObCGElMRk&amp;index=6">https://www.youtube.com/watch?v=sZkHO4rPqJg&amp;list=PLsLwz2eoSYLWW09NAhDIq-i8ObCGElMRk&amp;index=6</a>
<a href="https://velog.io/@tobigs-gm1/evaluationandbias">https://velog.io/@tobigs-gm1/evaluationandbias</a>
<a href="https://wandb.ai/wandb_fc/korean/reports/-Frechet-Inception-distance-FID-GANs---Vmlldzo0MzQ3Mzc">https://wandb.ai/wandb_fc/korean/reports/-Frechet-Inception-distance-FID-GANs---Vmlldzo0MzQ3Mzc</a>
<a href="https://devkihyun.github.io/study/Flow-based-Generative-Models-1-Normalizing-Flow/">https://devkihyun.github.io/study/Flow-based-Generative-Models-1-Normalizing-Flow/</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[운영체제] CH1 운영체제의 개요]]></title>
            <link>https://velog.io/@lm_minjin/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-CH1-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98-%EA%B0%9C%EC%9A%94</link>
            <guid>https://velog.io/@lm_minjin/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-CH1-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98-%EA%B0%9C%EC%9A%94</guid>
            <pubDate>Wed, 11 May 2022 08:32:20 GMT</pubDate>
            <description><![CDATA[<p>&quot;쉽게 배우는 운영체제&quot;라는 책을 읽고 간단하게 정리한 게시물입니다.</p>
<h3 id="운영체제의-필요성">운영체제의 필요성</h3>
<ul>
<li><p>컴퓨터는 운영체제가 없어도 작동하는가?
작동함(e.g. ANIAC). 
운영체제가 없어도 컴퓨터라고 부르는 이유는 프로그래밍이 가능했기 때문. 
하지만 새로운 기능을 구현하려면 매번 회로를 변경해야하고, 복잡한 기능 구현하기 어려웠음</p>
</li>
<li><p>운영체제가 있는 기계와 없는 기계의 차이</p>
<ul>
<li>운영체제가 없는 기계 : 전선으로 고정되어 정해진 계산만 가능</li>
<li>운영체제가 있는 기계 : 새로운 기능의 추가나 성능의 변경이 가능해, 성능 및 효율성의 향상을 꾀할 수 있다.</li>
</ul>
<p>ex) 유선 전화기와 스마트폰의 차이 느낌</p>
<ul>
<li>운영체제는 성능을 향상하는 데에만 필요한가?
자원 관리 역할도 함 : 여러 프로그램을 동시에 실행할 수 있음</li>
</ul>
</li>
<li><p>운영체제는 자원을 어떻게 관리하는가?</p>
<ul>
<li>컴퓨터에 부착된 모든 장치, 하드디스크, 마우스, 사운트카드, 그래픽카드 등을 컴퓨터 자원이라고 함</li>
<li>운영체제는 사용자가 직접 자원에 접근하는 것을 막음으로써 자원을 보호하고 관리<ul>
<li>예를 들어, 사용자가 하드디스크에 데이터를 저장하려는 경우, 사용자는 하드디스크에 특정 위치에 데이터를 저장할 수 없음. </li>
<li>만약, 사용자가 직접 위치를 지정해 저장할 수 있다면, 데이터를 지우거나 덮어쓰는 일이 발생할 수도 있음.</li>
<li>-&gt; 이런 상황을 방지하기 위해, 운영체제는 응용 프로그램과 사용자에게 모든 자원을 숨김</li>
</ul>
</li>
</ul>
</li>
<li><p>사용자는 숨어 있는 자원을 어떻게 이용할 수 있는가?</p>
<ul>
<li>운영체제는 자원을 이용할 수 있는 여러 가지 방법을 제공.<ul>
<li>사용자가 저장하려는 데이터를 운영체제에 주면, 운영체제가 하드디스크의 적당한 곳에 데이터를 저장하고 번호표를 줌. 번호표를 통해 데이터를 다시 찾을 수 있음
==&gt; 이렇게 사용자가 컴퓨터를 사용할 수 있도록 해주고 그 결과를 알려주는 것을 인터페이스(interface)라고 함.</li>
</ul>
</li>
</ul>
<p>** 펌웨어(firmware) : 운영체제의 목적은 하드웨어를 조정하고 관리하는 것이므로, 하드웨어의 도움 없이 작동하기가 어렵다. 그래서 운영체제를 소프트웨어와 하드웨어의 결합 형태인 펌웨어라고 부르기도 한다.</p>
</li>
</ul>
<h3 id="운영체제의-정의">운영체제의 정의</h3>
<p>운영체제란 &quot;사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어&quot;이다. </p>
<p>하드웨어와 사용자 사이에 소프트웨어가 있고, 소프트웨어 중에선 운영체제가 다른 응용 프로그램보다 아래에, 기반이 되는 느낌!</p>
<h3 id="운영체제의-역할">운영체제의 역할</h3>
<ul>
<li><p>자원 관리
: 컴퓨터로 동시에 여러가지 프로그램을 실행할 때, 키보드, 네트워크카드 등의 컴퓨터 자원을 적절히 나누어주어 사용자가 원활하게 작업할 수 있게 도움</p>
</li>
<li><p>자원 보호
: 컴퓨터 내의 많은 자원을 관리 뿐만 아니라 악의적인 사용자나 미숙한 사용자로부터 자원을 보호</p>
</li>
<li><p>하드웨어 인터페이스 제공
: 키보드, 마우스, CPU, 메모리 등과 같이 다양한 하드웨어를 사용할 때, 복잡한 과정 없이 사용할 수 있도록 하드웨어 인터페이스를 제공</p>
</li>
<li><p>사용자 인터페이스 제공
: 사용자가 운영체제를 편리하게 사용하도록 지원. 지금은 운영체제가 GUI를 제공하므로 대부분의 작업을 마우스로 수행. </p>
</li>
</ul>
<h3 id="운영체제의-목표">운영체제의 목표</h3>
<ul>
<li><p>효율성(자원관리)
: 자원을 효율적으로 관리하는 것. 이를 위해, 일반적으로 운영체제의 크기를 최소화하고 운영체제가 사용하는 코드를 최적화해야한다.</p>
</li>
<li><p>안정성(자원보호)
: 운영체제는 하드웨어 전체를 관리하는 소프트웨어이므로, 운영체제가 불안정하면 모든 작업이 불안할 수 밖에 없다. 또한, 안정성은 운영체제의 역할 중 &quot;자원 보호&quot;와 연관된다. 운영체제가 안정적이려면 사용자와 응용 프로그램의 안전 문제와 하드웨어적인 보안 문제를 처리할 수 있어야하고, 시스템에 문제가 발생했을 때 이전으로 복구하는 fault tolerant기능을 수행해야 한다.</p>
</li>
<li><p>확장성(하드웨어 인터페이스 제공)
: 운영체제는 다양한 시스템 자원을 추가하거나 제거하기 편리해야한다. 즉, 확장성이 좋아야 한다.</p>
</li>
<li><p>편리성(사용자 인터페이스 제공)
: 사용자가 편리하게 작업할 수 있는 환경을 제공하는 것 또한 운영체제의 목표이다.</p>
</li>
</ul>
<h3 id="운영체제의-역사">운영체제의 역사</h3>
<ul>
<li>대화형 시스템(1960년대 초반)<ul>
<li>기존의 일괄 작업 시스템은 프로그램과 데이터를 같이 입력하여 작업의 최종결과만 얻을 수 있었으나, 작업 중간에 새로운 값을 입력하거나 데이터를 변경하는 것이 불가능했다. </li>
<li>키보드와 모니터가 개발됨으로써 작업 중간에 사용자가 입력을 하거나 사용자에게 중간 결과값을 보여줄 수 있게 되면서, 프로그램이 제대로 진행되고 있는지 확인할 수 있고, 진행되는 중간에 사용자로부터 입력을 받을 수 있어 입력값에 따라 작업의 흐름을 바꾸는 것도 가능해짐</li>
<li>이러한 시스템은 사용자의 대화를 통해 작업이 이루어지므로 대화형 시스템(interactive system)이라고 일컫음. </li>
<li>하지만, 대화형 시스템의 경우 입출력이 있어 작업 시간을 예측하기 어려웠다.</li>
</ul>
</li>
</ul>
<ul>
<li><p>시분할 시스템(1960년대 후반)</p>
<ul>
<li><p>시분할 시스템의 개념</p>
<ul>
<li><p>다중 프로그래밍 기술이 개발됨 ; 다중프로그래밍은 하나의 CPU로 여러 작업을 동시에 실행하는 기술로, 한 번에 하나의 작업만 가능한 일괄 작업 시스템에 비해 효율성이 뛰어남</p>
</li>
<li><p>다중 프로그래밍 시스템에선 CPU 사용 시간을 아주 잘게 쪼개 여러 작업에 나눠줌. 
==&gt; 이러한 시간 분배가 매우 빠른 속도로 반복되면 A,B,C작업이 동시에 실행되는 것처럼 보인다.</p>
</li>
<li><p>이렇게 여러 작업을 조금씩 처리하여 작업이 동시에 이뤄지는 것처럼 보이게 하는 것을 시부할 시스템(time sharing system or multitasking)이라고 함.</p>
<ul>
<li>이 때, 잘게 나뉜 시간 한 조각을 타임 슬라이스 또는 타임 퀀텀이라고 함.</li>
</ul>
</li>
<li><p>시분할 시스템의 단점은 여러 작업을 동시에 처리하기 위한 추가 작업이 필요하다는 것 + 많은 양의 작업이 공존할 경우, 중요한 작업이 일정 시간 안에 끝나는 것을 보장하지 못함.</p>
</li>
<li><p>다중 사용자 시스템</p>
<ul>
<li>시분할 시스템에서 동시에 실행되는 작업의 개수를 멀티프로그래밍 수준 또는 멀티 프로그래밍 정도라고 한다. </li>
<li>시분할 시스템에서 여러 작업을 동시에 실행할 수 있으므로, 여러 사람이 동시에 작업하는 것, 다중 사용자 시스템을 가능하게 했다.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>분산 시스템(1970년대 후반)<ul>
<li>개인용 컴퓨터와 인터넷 덕분에 새로운 컴퓨팅 환경이 조성됨<ul>
<li>당시에 복잡한 계산이나 많은 양의 데이터를 처리하기 위해 메인프레임이라는 고가의 대형 컴퓨터를 사용</li>
<li>하지만 개인용 컴퓨터와 인터넷의 보급으로 크기가 작은 컴퓨터들을 하나로 묶어 대형 컴퓨터에 버금가는 시스템을 구축 ==&gt; 분산 시스템(distributed system)</li>
</ul>
</li>
<li>분산 시스템은 네트워크상에 분산되어 있는 여러 컴퓨터로 작업을 처리하고, 그 결과를 상호 교환하도록 구성한 시스템</li>
</ul>
</li>
</ul>
<ul>
<li>클라이언트/서버 시스템(1990~현재)<ul>
<li>분산시스템은 시스템에 참가하는 모든 컾뮤터가 동일한 지위이기 때문에, 컴퓨터가 고장나거나 추가되면 작업을 분배하고 결과를 모으기 어려움</li>
<li>클라이언트/서버시스템은, 모든 컴퓨터의 지위가 동일한 분산 시스템과 달리 작업을 요청하는 클라이언트와 거기에 응답하여 요청받은 작업을 처리하는 서버, 이중 구조로 나뉨</li>
<li>웹 시스템이 전형적인 클라이언트/서버 구조를 이룸</li>
<li>클라이언트/서버 구조의 문제는 서버 과부하 - 모든 요청이 서버로 집중되기 때문</li>
</ul>
</li>
</ul>
<ul>
<li><p>P2P 시스템(2000년대 초반~현재)</p>
<ul>
<li><p>P2P 시스템의 개념</p>
<ul>
<li>서버의 부하를 줄일 수 있는 새로운 시스템</li>
<li>peer는 말단 노드, 사용자의 컴퓨터를 가리키며, P2P는 서버를 거치지 않고 사용자와 사용자를 직접 연결한다는 뜻</li>
<li>P2P 시스템에서는 서버가 파일 검색만 맡고 사용자 간에 파일 전송이 이루어지기 때문에 서버의 부하가 적음</li>
</ul>
</li>
<li><p>P2P 시스템의 예 : 메신저</p>
<ul>
<li>P2P기술은 불법 소프트웨어 기술 규제 때문에 발전하지 못하다가, 메신저 프로그램에 도입되어 큰 발전 이룩</li>
<li>메신저에 로그인을 하면 먼저 서버에 접속해 사용자 인증(certification)과 출석(presence) 등의 정보 받음</li>
<li>출석만 완료되면 서버를 거치지 않고 사용자 간의 직접 채팅 or 데이터 전송 가능</li>
</ul>
</li>
<li><p>P2P 시스템의 예 : 파일 공유</p>
<ul>
<li>서버가 있는 P2P시스템<ul>
<li>같은 파일을 가진 사람으로부터 데이터를 나누어 받음. 10명한테 파일 하나를 받는 느낌
==&gt; 속도가 10배 빠를 뿐만 아니라, 데이터를 받는 도중 1~2명이 프로그램을 중단해도 다른 사람에게 나머지를 받을 수 있음.</li>
</ul>
</li>
<li>서버가 없는 P2P시스템<ul>
<li>비트코인의 블록체인 : 서버가 없는 완전한 P2P 방식으로 거래 장부의 문제를 해결
==&gt; 거래 장부가 중앙에 집중되지 않고, P2P시스템 전체에 거래 장부를 분산시킴으로써 하나의 장부가 조작되거나 유실되더라도 거래에 영향을 미치지 않음.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>기타 컴퓨팅 환경(2000년대 초반~현재)<ul>
<li>그리드 컴퓨팅<ul>
<li>필요한 기간만 컴퓨터를 사용하고 비용을 지불하는 방식</li>
<li>분산 시스템의 한 분야로, 서로 다른 기종의 컴퓨터들을 묶어 대용량의 컴퓨터 풀을 구성하고, 이를 원격지와 연결하여 대용량 연산을 수행하는 컴퓨팅 환경
ex) 웹하드에서 파일 다운시 서버에서 부는게 아니라 전에 그 파이릉ㄹ 내려받은 컴퓨터로부터 몰래 데이터를 빼와서 전달함(grid delivery)
cf) 그리드 컴퓨팅이 하드웨어적인 컴퓨팅 환경의 통합이라면 SaaS(Software as a Service)는 사용자가 필요할 때 소프트웨어 기능을 이용하고 그만큼만 비용을 지불하는 개념</li>
</ul>
</li>
<li>클라우드 컴퓨팅<ul>
<li>그리드 컴퓨팅 + SaaS</li>
<li>클라우드에 백업하는거</li>
</ul>
</li>
<li>사물 인터넷<ul>
<li>사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술
ex) 지하철, 버스의 도착 예정 시간을 알려주고 전자 제품을 스마트폰으로 제어</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="운영체제의-구조">운영체제의 구조</h3>
<h4 id="1-커널과-인터페이스">1. 커널과 인터페이스</h4>
<ul>
<li>커널은 프로세스 관리, 메모리 관레, 저장장치 관리와 같은 운영체제 핵심적인 기능을 모아놓은 것</li>
<li>인터페이스는 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할</li>
<li>운영체제는 커널과 인터페이스를 분리하여, 같은 커널을 사용하더라도 다른 인터페이스를 가진 혀애로 제작 가능</li>
</ul>
<h4 id="2-시스템-호출과-디바이스-드라이버">2. 시스템 호출과 디바이스 드라이버</h4>
<h4 id="21-시스템-호출">2.1 시스템 호출</h4>
<ul>
<li><p>응용 프로그램과 커널의 인터페이스</p>
</li>
<li><p>시스템 호출은 커널이 자신을 보호하기 위해 만든 인터페이스</p>
</li>
<li><p>커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단
==&gt; 자원을 이용하려면 시스템 호출이라는 인터페이스를 이용해 접근해야 함</p>
</li>
<li><p>직접 접근 vs 시스템 호출을 통한 접근</p>
<ul>
<li><p>직접 접근 : 사용자가 모든 것을 알고, 처리해야 함. 사용자의 부주의로 망칠 수 이씅ㅁ</p>
</li>
<li><p>시스템 호출을 통한 접근 : 누군가에게 요청해 작업의 결과만 받는 방식. 결과만 받으면 됨. 사용자의 오작동이나 악의에 따라 망가지는 일이 없음
==&gt; 운영체제는 사용자나 응용 프로그램이 하드웨어에 직접 접근하지 못하도록 막음으로써 컴ㅍ터 자원을 보호. 대신 자우너을 사용할 수 있도록 인터페이스를 제공하는데, 이게 바로 시스템 호출!</p>
</li>
<li><p>결론</p>
<ul>
<li>시스템 호출은 커널이 제공하는 시스템 자원의 사용과 연관된 함수</li>
<li>응용 프로그램이 하드웨어 자원에 접근하거나 운용체제가 제공하는 서비스를 이용하려 할 때는 시스템 호출을 사용해야 함</li>
</ul>
</li>
<li><p>운영체제는 커널이 제공하는 서비스를 시스템 호출로 제한하고 다른 방법으로 커널에 들어오지 못하게 막음으로써 컴퓨터 자원을 보호</p>
</li>
<li><p>시스템 호출을 커널이 제공하는 서비스를 이용하기 위한 인터페이스, 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단</p>
</li>
</ul>
</li>
</ul>
<h4 id="22-드라이버">2.2 드라이버</h4>
<ul>
<li>커널과 하드웨어의 인터페이스를 담당</li>
<li>커널은 입출력의 기분적인 부분만 제작하고, 하드웨어의 특성을 반영한 소프트웨어를 하드웨어 제작자에게 받아 커널이 실행될 때 함께 실행되도록 함.
==&gt; 이 때 하드웨어의 특성을 반영한 소프트웨어를 디바이스 드라이러라고 함</li>
<li>시스템 호출을 거치지 않고 커널에 진입할 수 없지만, 드라이버는 커널이 제공하는 것도 있고, 하드웨어 제작자가 제공하는 것도 있으므로 드라이버를 거치지 않고 커널에 진입할 수 있다.</li>
</ul>
<h4 id="3-커널의-구성">3. 커널의 구성</h4>
<ul>
<li>커널이 주로 하는 일은 프로세스 관리, 메모리 관리, 시스템 관리, 입출력 관리, 프로세스 간 통신 관리 등이 있다.</li>
</ul>
<table>
<thead>
<tr>
<th>핵심 기능</th>
<th>설명</th>
</tr>
</thead>
<tbody><tr>
<td>프로세스 관리</td>
<td>프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공</td>
</tr>
<tr>
<td>메모리 관리</td>
<td>프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상 공간을 제공</td>
</tr>
<tr>
<td>파일 시스템 관리</td>
<td>데이터를 저장하고 접근할 수 있는 인터페이스를 제공</td>
</tr>
<tr>
<td>입출력 관리</td>
<td>필요한 입력과 출력 서비스를 제공</td>
</tr>
<tr>
<td>프로세스 간 통신 관리</td>
<td>공동 작업을 위한 각 프로세스 간 통신 환경을 지원</td>
</tr>
</tbody></table>
<ul>
<li>커널은 이러한 기능을 어떻게 구현하는가에 따라 단일형 구조 커널, 계층형 구조 커널, 마이크로 구조 커널로 구분</li>
</ul>
<h4 id="31-단일형-구조-커널">3.1 단일형 구조 커널</h4>
<ul>
<li><p>단일형 구조(monolithic architecture)커널은 초창기의 운영체제 구조로, 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성됨</p>
</li>
<li><p>단일형 구조에 속하는 대표적인 운영체제는 MS-DOS, VMS, 초기의 유닉스 운여체제</p>
</li>
<li><p>함수를 거의 사용하지 않고 main()에 모든 기능을 구현한 형태</p>
</li>
<li><p>장점</p>
<ul>
<li>모듈이 거의 분리되지 않았기 때문에 모듈 간의 통신 비용이 줄어들어 효율적 운영이 가능
(프로그램에서 main()에 모든 기능을 넣음녀 함수를 호출하는 오버헤드가 없어서 프로그램이 빨라지는 것과 같은 이치)</li>
</ul>
</li>
<li><p>단점</p>
<ul>
<li>모든 모듈이 하나로 묶여 있기 때문에 버그나 오류를 처리하기가 어려움</li>
<li>운영체제의 여러 기능이 서로 연결되어 있어 상호 의존성이 높기 때문에 기능상의 작은 결함이 시스템 전체로 확산될 수 O</li>
<li>다양한 환경의 시스템에 적용하기 어려움. 이식성이 낮음(이식하려면 수정이 필요한데, 단일형 구조에서는 수정이 어렵기 때문).</li>
<li>현대 운영체제를 단일형으로 구현하기엔 너무 크고 복잡</li>
</ul>
</li>
</ul>
<h4 id="32-계층형-구조-커널">3.2 계층형 구조 커널</h4>
<ul>
<li>계층형 구조(layered architecture)커널은 단일형 구조 커널이 발전한 형태로, 비스한 기능을 가지 ㄴ모듈을 묶어서 하나의 계층으로 만들고, 계층 간의 통신을 통해 운영체제를 구현하는 방식</li>
<li>장점<ul>
<li>비슷한 기능을 모아 모듈화했기 때문에 단일형 구조보다 버그나 오류를 쉽게 처리할 수 있음</li>
<li>해당 계층만 따로 수정하면 되기 때문에 디버깅이 쉽다</li>
</ul>
</li>
<li>마이크로소프트의 윈도우르 ㄹ비롯해 오늘날의 운영체제는 대부분 이 구조로 이뤄져 있음</li>
</ul>
<h4 id="33-마이크로-커널-구조">3.3 마이크로 커널 구조</h4>
<ul>
<li><p>계층형 구조의 접근 방식과 반대로 개발된 커널이 마이크로 구조(micro architecture) 커널</p>
</li>
<li><p>마이크로 구조 커널의 운영체제는 프로세스 관리, 메모리 고나리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공</p>
</li>
<li><p>다른 커널에 비해 운영체제의 많은 부분이 사용자 영역에 구현되어 있음</p>
</li>
<li><p>커널은 메모리 관리와 프로세스 간의 동기화 서비스를 제공하고, 메모리 관리자와 동기화 모듈은 프로세스 간 통신 모듈로 연결되어 있음
==&gt; 각 모듈은 세분화되어 존재하고, 모듈 간의 정보 교환은 프로세스 간 통신을 이용하러 이뤄짐</p>
<blockquote>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/ab2d0bda-0160-487d-a7e2-951a518af442/image.png" alt=""></p>
<ul>
<li>chappi - OS는 할껀데 핵심만 합니다 1편에서 발췌</li>
</ul>
</blockquote>
</li>
<li><p>장점</p>
<ul>
<li>각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않음</li>
<li>많은 컴퓨터에 이식하기 쉽고 커널이 가벼워 CPU 용량이 작은 시스템에도 적용 가능</li>
</ul>
</li>
<li><p>이 구조를 사용하는 대표적인 운영체제인 마하는 애플의 PC 운영체제인 OS X와 모바일 운영체제인 IOS의 커널로 사용되어 유명해짐</p>
</li>
</ul>
<h4 id="4-가상머신">4 가상머신</h4>
<ul>
<li>가상머신은 운영체제와 응용프로그램 사이에서 작동하는 프로그램으로, 가상 머신을 설치하면 응용 프로그램이 모두 동일한 환경에서 작동하는 것처럼 보임</li>
<li>개발자가 하나의 코드만 만들면 여러 운영체제에서 똑같이 실행할 수 있음</li>
<li>가상머신을 사용하면 호환성이 높아지지만 응용 프로그램이 가상 머신을 통해서만 작동하기 때문에 느려진다는 단점도 O</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] SimCSE : Simple Contrastive Learning of Sentence Embeddings]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-SimCSE-Simple-Contrastive-Learning-of-Sentence-Embeddings</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-SimCSE-Simple-Contrastive-Learning-of-Sentence-Embeddings</guid>
            <pubDate>Mon, 02 May 2022 01:57:57 GMT</pubDate>
            <description><![CDATA[<h3 id="abstract">Abstract</h3>
<p>본 논문에서는 최첨단 문장 임베딩을 크게 향상시키는 간단한 contrastive learning framework를 제안한다. <strong>우리는 먼저 input sentence를 취하고,  dropout을 noise로 사용해 constrastive objective에서 스스로를 예측하는 비지도 방식</strong>을 설명한다. 이 방식은 간단하면서도 이전 지도 학습을 사용하는 다른 방식과 동등한 성능을 보이며 잘 작동한다. 우리는 dropout이 최소한의 data augmentation으로 하고, 이를 제거하는 것은 representation collapse로 이어진다는 것을 발견했다. 그리고, <strong>우리는 NLI 데이터셋에서 annotated된 pair(entailment를 positive,  contradiction을 negative로)를 우리의 constrative learning framework로 통합</strong>하는 방식을 제안한다. 우리는 standard semantic textual similarity(STS) task에 대해 SimCSE를 평가했고, BERT-base를 사용한 우리의 비지도와 지도 모델이 76.3%, 81.6%를 달성하였고, 이는 이전 SOTA에 비해 각각 4.2%, 2.2% 증가한 수치이다. 우린 또한 <strong>이론적, 실험적 모두에서 contrastive learning objective가 사전 학습된 임베딩의 이방성 공간(anisotropic space)를 보다 균일하게 정규화하고 지도 신호(supervised signal)을 사용할 수 있을 때 postivie pair를 더 잘 align한다</strong>는 것을 보여준다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/d3865740-8a1a-4f22-a8d7-eca9f3d85b90/image.png" alt=""></p>
<h3 id="1-introduction">1 Introduction</h3>
<p>범용적인 sentence embedding을 학습하는 것은 NLP에서 중요한 문제이고, 광범위하게 연구되어 왔다. 본 논문에서, 우리는 SOTA embedding에서 한 발짝 더 나아갔고, constrative objective가 BERT 또는 RoBERTa와 같은 사전학습 언어 모델과 함께 사용될 때 매우 효과적임을 증명한다. 우리는 SimSCE, a simple contrastive sentence embedding framework, 라벨이 있든 없든 상위의 sentence embeddig을 만들어낼 수 있는 방법을 제안한다. </p>
<p>우리의 비지도 SimCSE는 dropout만을 노이즈로 서용해 스스로 input sentence를 예측하는 방식이다. 다시 말하면, 우리는 pre-trained encode에 같은 문장을 2번 통과시킨다 : standard dropout을 2번 적용해, 우리는 2개의 다른 문장을 positive pair로 본다. 그리고 우리는 같은 mini-batch에서 다른 문장을 가져와서 &quot;negative&quot;로 취하고 모델은 여러 negatives사이에서 positive하나를 예측한다. 매우 간단해 보일 수 있지만, 이 접근 방식은 다음 문장을 예측하는 것 혹은 이산적 data augmentation(단어 삭제 및 대체)와 같은 학습 목표를 큰 차이로 능가하며 심지어 이전 지도 방식과 일치한다. 우리는 dropout이 hidden representation의 최소한의 &quot;data augmentation&quot;역할을 하는 반면, dropout을 제거하며 표현이 무너진다는 것을 알 수 있었다.</p>
<p>본 논문의 지도 SimCSE는 sentence embedding을 위해 NLI dataset을 사용하고, contrastive learning에서 annotated sentence pair를 통합한다. 3가지 방법의 분류 태스크(entailment, neutral, contradiction)로 본 지난 논문들과 달리, 우리는 entailment pair를 positive instance로 사용될 수 있다는 사실을 최대한 활용했다. 또한, 상응하는 contradiction pair을 추가하는 것이 성능 향상에 도움이 된다는 것을 알았다. NLI datset의 간단한 활용은 같은 데이터셋을 사용한 이전 방법들과 비교해 지속적인 성능을 성취했다. 우리는 또한 다른 labeled sentence-pair dataset과 비교하고, <strong>NLI이 데이터셋이 sentence embedding학습에 특히 더 효과적이라는 것을 알 수 있었다</strong>. </p>
<p>SimCSE의 강력한 성능을 더 잘 이해하기 위ㅣ해, 우리는 Wang and Isola[2020]으로부터 분석 툴을 가져왔고, 이는 학습된 임베딩의 질을 측정하기 위해 전체 표현 공간의 uniformity와 semantically-related positive pair를 alignment한다. 경험적인 분석을 통해, 우리는 우리의 비지도 SimCSE가 기본적으로 균일성을 향상시키는 동시에, dropout noise를 통한 degenerated alignment을 방시하여, representation의 expressivness를 향상시킨다는 것을 알았다. 같은 분석은 NLI 학습 신호가 positive pairs사이의 alignment를 향상싴닐 수 있고, 더 나은 sentence embedding을 만들 수 있다는 것을 보여준다. 우리는 또한 사전 학습된 word embedding이 anisotropy에 고통 받는다는 발견에서 연결점을 끌어내 (spectrum관점에서) contrasticve leanring objective가 sentence embedding space의 sigular value distribution을 flattents해 uniformity를 향상시킨다는 것을 증명했다.</p>
<p>우리는 SimCSE를 7가지 semantic textaul similarity tasks(STS), 7가지 transfer tasks에 대해 포괄적으로 평가를 진행했다. STS task에서, 우리의 비지도와 지도 모델은 BERT-base를 사용해 평균적으로 76.3%와 81.6% Spearman&#39;s correlation을 달성했다(이전에 비해 4.2%, 2,2% 증가됨). 우리는 또한 transfor task에 대해 경쟁적인 성능을 성취했다. 마지마긍로, 우리는 일관되지 않은 평가 문제를 식별했고, sentence embedding 평가에서 향후 작업을 위해 다양한 설정의 결과를 통합했다.</p>
<h3 id="2-background-contrastive-learning">2 Background: Contrastive Learning</h3>
<p>Contrastive learning은 이웃은 가깝게, 이웃이 아닌 애들은 멀게 밀어내 효과적으로 representation을 학습하는 것을 목표로 한다. $D = {(x_i, x_i^+)}$이란 pair examples를 가정하고, 이는 $x_i$와 $x_i^+$이 의미적으로 관련이 있음을 나타낸다. 우리는 Chen at al.[2020]에서의 contrastive framework를 따르고, in-batch negatives를 가지고 cross-entropy objecticve를 취한다 : $h_i$와 $h_i^+$는 $x_i$와 $x_i^+$의 representation을 나타낸다. 그리고 mini-batch N에서 $(x_i, x_i^+)$에 대한 학습 목적 함수느 다음과 같다.</p>
<p>$$
l_i = -log{ \frac{e^{sim(h_i,h_i^+)/\tau}}{\sum_{j=1}^N e^{sim(h_i,h_i^+)/\tau}}}
$$
여기서 $\tau$는 temperature hyperparameter이고, $sim(h_1,h_2)$는 코사인 유사도 $\frac{h_1^Th_2}{||h_1||\cdot||h_2||}$이다. 이번 논문에서, 우리는 BERT 또는 RoBERTa와 같은 사전 학습 모델을 사용해 input sentence를 encode한다. 그리고 contrastive learning objective를 사용해 모든 파라미터를 파인튜닝한다.</p>
<h4 id="positive-instances">Positive instances</h4>
<p>contrastive learning에서 중요한 질문은 어떻게 $(x_i, x_i^+)$ pair를 구축할지이다. 비전 표현에서, 효과적인 해결책은 같은 이미지에 $x_i$과 $x_i^+$으로 2개의 무작위 변형(cropping, flipping, distortion and rotation)을 가하는 것이다. 단어를 삭제하거나, 재정렬하거나, 대체하는 방식을 사용해서 유사한 방법이 언어 표현에서도 응용되어 왔다. 그러나, NLP에서 data augmentation은 내재적으로 이산적인 특성때문에 어렵다. 3에서처럼, 중간 단계의 representation에 단순히 dropout을 사용하는 것은 이러한 discrete operator보다 훨씬 뛰어나다. 
NLP에서, 유사한 constrative learning objective는 다양한 맥락(contexts)에서 연구되었다. 이러한 경우, $(x_i, x_i^+)$은 question-passage pair와 같은 지도 데이터셋으로부터 수집된다. $x_i$과 $x_i^+$의 구별되는 특성때문에, 이러한 방식은 항상 각각 x에 대한 dual-encoder framework를 사용한다. sentence embedding에서, Logeswaran and Lee(2018)은 또한 dual-encoder를 가지고 현재 문장과 다음 문장을 $(x_i, x_i^+)$으로 형성해 contrastive learning을 사용한다. </p>
<h4 id="alignment-and-uniformity">Alignment and uniformity</h4>
<p>최근에, Wang and Isola(2020)는 contrastive learning과 관련한 2가지 핵심 특성을 구별한다. - alignment and uniformity - 그리고, 표현의 질을 측정하기 위해 그들을 사용하는 것을 제안한다. positive pairs $p_{pos}$의 분포가 주어질 때, alignment는 두 paired instances의 embedding사이의 기대거리를 계산한다(assuming represenations are already normalized).  Uniformity는 임베딩 자체가 얼마나 균등하게 분포되어 있나를 의미한다.
** $\triangleq$ : &quot;equal to by definition&quot;.
$$
l_{align} \triangleq \mathop{\mathbb{E}}<em>{(x_i, x_i^+)~p</em>{pos}} ||f(x)-f(x^+)||^2
$$</p>
<p>$$
l_{uniform} \triangleq log{\mathop{\mathbb{E}}<em>{x,y \overset{\mathrm{iid}}{\sim}  p</em>{data}} e^{-2||f(x)-f(y)||^2}}
$$
여기서 $p_{data}$는 데이터 분포를 나타낸다. 이러한 2개의 지표는 contrastive learning의 목적함수와 함께 잘 aligned 된다 : postivie instance는 가까이 있어야 하고, random instance에 대한 embedding은 hypersphere에 대해 흩어져 있어야 한다. 다음 세션에서, 우리는 또한 우리의 방법의 inner working을 정당화하기 위해 두 개의 지표를 사용할 것이다.</p>
<blockquote>
<p><em>DBSA SimCSE 발표자료에서 발췌
*</em>왜 uniformity가 representation에서 중요한가?**</p>
<ul>
<li>PLM은 학습할수록 상위 레이어에서 Anisotropic하다(contextaulized될 수록 anisotropic함. input 자체가 anisotropic하다는 것이 아니라.)</li>
<li>하지만 Isotropy, Anisotrpy한 것을 그림으로 보면, 
<img src="https://velog.velcdn.com/images/lm_minjin/post/a915a297-b8e1-44f1-abee-fba0fd7f3a25/image.png" alt="">
동일한 단어가 다른 문맥에 등장한 경우, Context에 따라 거리가 가깝지만 다른 의미를 좋음.
하지만, random word를 넣어도 contextuality를 고려하느라 의미가 비슷해져버리는 것은 문제가 된다.
=&gt; Embedding space가 hypersphere에서 넓고, 고르게 분포하여 각 단어가 고유한 의미를 보존하는 것도 중요 ==&gt; Uniformity의 중요성
따라서, <strong>contrastive learning을 통해 학습을 진행하다보면, Negative pair를 positive pair와 멀게하는 과정에서 embedding space를 균일하게 분포하도록 만들 수 있다!</strong></li>
<li>*근데 어차피 중간단계에서 dropout을 하는데, 상위레이어로 가면 다시 anisotropy하게 변하지 않을까? 덜해지는 것인가??</li>
</ul>
</blockquote>
<blockquote>
<p><strong>uniformity에 대한 loss로 저 식을 사용하는 이유</strong>
The average pairwise Gaussian potential is nicely tied with the uniform distribution on the unit hypersphere.
(논문 Understanding Contrastive Representation Learning through Alignment and Uniformity on the Hypersphere에서 발췌)</p>
</blockquote>
<h3 id="3-unsupervised-simcse">3 Unsupervised SimCSE</h3>
<p>비지도 SimCSE의 아디이어는 매우 간단하다 : 우리는 sentence의 집합인 ${{x_i}}<em>{i=1}^m$를 가져오고, $x_i^+ = x_i$를 사용한다. identical positive pairs으로 작동하도록 하는 핵심 요소는 독립적으로 샘플링된 dropout mask를 사용하는 것이다. Transformers의 학습에서, attention probabilities(default p = 0.1)뿐만 아니라 fully-connected layers에도 dropout mask가 있다. 우리는 $h_i^z = f_\theta(x_i,z)$라고 표기한다. 여기서 $z$는 dropout을 위한 랜덤 마스크를 의미한다. 우리는 간단하게, 같은 input을 encoder에 2번 넣고 다른 dropout mask를 가진 2개의 임베딩 $z, z&#39;$을 얻는다. 그러면, mini-batch N개의 문장에 대한 SimCSE의 training objective는 다음과 같이 된다. z는 transformets에서의 standard dropout mask이고, 다른 dropout은 추가하지 않았다.
$$
l_i = -log{ \frac{e^{sim(h_i^{z_i},h_i^{z&#39;_i})/\tau}}{\sum</em>{j=1}^N e^{sim(h_i^{z_i},h_j^{z&#39;_j})/\tau}}}
$$</p>
<p>** DBSA 이유경 석사과정님의 SimCSE발표자료에서 발췌
<img src="https://velog.velcdn.com/images/lm_minjin/post/b3a63fc5-9d55-4894-8153-5ef9c84ffae5/image.png" alt="">
(분자는 같은 문장을 다르게 표현한 것들의 유사도, 분모는 다른 문장을 다르게 표현한 것들의 유사도의 합. 즉, 분자는 커지고, 분모는 작아질수록, 같은 것들의 유사도는 높아지고, 다른 애들 사이의 유사도는 낮아질수록 loss가 작아짐)</p>
<h4 id="dropout-noise-as-augmentation">Dropout noise as augmentation</h4>
<p>우리는 droputout을 data augmentation의 최소한의 방식으로 본다. : positive pair는 정확히 같은 문장을 가지고, 그들의 임베딩은 오직 droput out에서 다르게 된다. 우리는 STS-B에 development set에 대해 다른 학습 목적 함수와 이 방식을 비교했다. Table 1은 우리의 접근과 흔한 crop, word deletion, replacement와 같은 data augmentation기법을 비교한다. 그리고 각각은 $h = f_\theta(g(x),z)$그리고 $g$는 x에 대한 (random) discrete operator이다. 우리는 1단어를 삭제하는 것도 성능에 큰 악영향을 미칠 수 있고, discrete augmentation의 어떤 방법도 dropout noise보다 뛰어나지 않다는 것을 알 수 있었다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/ebfe23a7-6dab-4484-b011-9aca2cf47a49/image.png" alt=""></p>
<p>우리는 또한 Logeswaran and Lee(2018)에서 사용된 next-sentence objective에 대한 training objective(1개의 encoder또는 2개의 독립적인 encoder사용)과도 비교해보았다. Table 2에서 볼 수 있듯이, 우리는 SimCSE가 next-sentence objectives보다 훨씬 좋은 성과를 낸다는 것, 2개보다 1개의 encoder를 사용하는 것이 우리의 방법에서 상당한 차이를 낸다는 것을 알 수 있었다. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/a055fae4-f78a-42ef-9447-001d70dc3b13/image.png" alt="">
** DBSA 이유경 석사과정님의 SimCSE발표자료에서 발췌
<img src="https://velog.velcdn.com/images/lm_minjin/post/2822dae6-75ca-4d05-8b55-ec074b18dcc1/image.png" alt=""></p>
<h4 id="why-does-it-work">Why does it work?</h4>
<p>비지도 SimCSE에서 dropout noise의 역할을 더 잘 이해하기 위해, 우리는 Table 3에서 다양한 dropout rates를 시도해봤고, Transformers의 기본 dropout 확률인 p = 0.1이 오는 다양한 모든 시도가 default에 비해  underperform하다는 것을 관찰했다. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/dc6270e3-5891-496d-b782-4d827312f021/image.png" alt=""></p>
<p>우리는 특히 2개의 흥미로운 극단적인 경우 찾았다 : no dropout(p=0)과 fixed 0.1(using default dropout p=0.1 but the same dropout masks for the pair / 두 문장이 representation까지 동일한 경우). 두 경우에서, pair에 대한 임베딩의 결과는 정확히 같았고, 이는 극적인 성능 저하로 이끌었다. 우리는 학습 동안 매 10 step마다 모델의 checkpoint를 찍었고, Figure 2처럼 alignment와 uniformity를 시각화 한다.  사전학습 체크포인트에서 시작해서, 모든 모델이 uniformity가 크게 향상되었다. 하지만, 2가지 특별한 변형의 alignment는 또한 크게 드라마틱하게 떨어졌지만, 우리의 비지도 SimCSE모델은 dropout noise를 사용해 안정적인  alignment를 유지했다. 또한 초기에 좋은 alignment를 제공하기 때문에, 사전 학습된 체크포인트에서 시작하는 것이 중요하다는 것을 증명했다. 마지막으로 &quot;1단어 삭제&quot;는 alignment를 향상시키지만, uniformity지표에 대해선 적은 향상을 달성했고, 결국 비지도 SimCSE보다 낮은 성과를 기록했다. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/4f620bd2-6885-478c-b160-bdfc0a837293/image.png" alt=""></p>
<h3 id="4-supervised-simcse">4 Supervised SimCSE</h3>
<p>우리는 dropout noise를 추가하는 것이 positive pair $(x_i, x_i^+) \sim p_{pos}$에 대한 좋은 alignment를 유지하게 한다는 것을 증명했다. 이번 세션에서는, 우리는 우리의 방법으로 alignment를 개선해 training signal을 더 좋게 만들어 지도 데이터셋을 더 효율적(?) 좋게 사용할 수 있을지를 연구한다. 이전 논문은 지도 NLI 데이터셋이 두 문장 사이의 관계가 entailment, neutral 또는 contradiction인지 예측함으로써 sentence embedding을 학습하는 것에 효과적임을 보였다. 우리의 contrastive learning framework에서, 우리는 지도 데이터셋에서 바로 $(x_i,x_i^+)$를 선택하는거 대신에 Eq.1.를 최적화해 사용한다.</p>
<h4 id="choices-of-labeled-data">Choices of labeled data</h4>
<p>우리는 먼저 지도 데이터셋이 positive pairs $(x_i,x_i^+)$을 구축하는 것에 적합하다는 것을 연구했다. 우리는 4개의 데이터셋을 가지고 실험을 진행했다.</p>
<p>1) QQP : Quora question pairs
2) Flickr30k : each image is annotated with 5 human-written captions. 같은 이미지의 2개의 캡션을 positive pair로 사용
3) paraNMT : 큰 규모의 book-translation paraphrase dataset
4) NLI datasets : SNLI와 MNLI</p>
<p>우리는 다양한 데이터셋을 가지고 contrastive learning model를 학습하고, 결과를 비교한다. Table 4를 보면, 우리는 또한 같은 수의 training pair를 가지고 실험을 진행했다. 모든 옵션 중에서, NLI로부터 entailment pair를 사용하는 것이 가장 베스트였다. 우리는 NLI dataset는 높은 퀄리티, 그리고 crowd-sourced된 데이터로 구성되어 있기 때문에 이것이 합리적이라고 생각한다. 또한, human annotators는 premise에 기반해 hypotheses를 작성할 것이고, 두 문장은 적은 lexical overlap을 가지는 경향이 있다. 예를 들어, NLI의 entailment pair에 대한 lexical overlap(두 개의 BOW 사이의 F1)은 39%였지만, QQP, ParaNMT에 대한 F1은 60%, 55%였다.</p>
<h4 id="contradiction-as-hard-negatives">Contradiction as hard negatives</h4>
<p>자미작으로, 우리는 contradiction pair를 hard negatives로 사용함으로써 NLI datset의 이점을 취했다. NLI 데이터셋에서, 하나의 premise가 주어질 때, annotator는 하나는 절대적으로 true(entailment), 다른 하나는 아마도 true(neutral), 마지막 하나는 절대적으로 false(contradiction)인 한 문장을 직접 작성하는 것이 요구된다. 그러므로, 각 premise와 entailment hypothesis에 대해, 동반하는 contradictino hypothesis가 있다. 
형식적으로, 우리는 $(x_i,x_i^+)$을 $(x_i, x_i^+, x_i^-)$로 확장하고, 이때 $x_i$는 premise, $x_i^+$와 $x_i^-$는 entailment와 contradiction hypothesis를 나타낸다. 학습 목적함수 $l_i$는 다음과 같이 정의된다(N는 mini-batch size):
$$
-log{ \frac{e^{sim(h_i,h_i^{+})/\tau}}{\sum_{j=1}^N {(e^{sim(h_i,h_j^{+})/\tau}+e^{sim(h_i,h_j^{-})/\tau}})}}
$$
Table 4를 보면, hard negative를 더하는 것은 성능을 향상시키고(84.0 $\rightarrow$ 86.2), 이것이 우리의 최종 지도 SimCSE이다. 우리는 또한 ANLI dataset에 비지도 SimCSE를 추가하거나 결합하려고 노력했다. 또한, 지도 SimCSE에서 dual encoder framwork를 사용하는 것은 성능을 악화시켰다(86.2 $\rightarrow$ 84.2).
<img src="https://velog.velcdn.com/images/lm_minjin/post/14c7ffcd-dde5-473f-b679-325661186451/image.png" alt=""></p>
<h3 id="5-connection-to-anisotrpy">5 Connection to Anisotrpy</h3>
<p>최근 논문들은 language representations에서 anisotropy 문제를 식별한다.
(학습된 임베딩이 벡터 공간에서 좁은 꼬깔을 차지하고, 이는 표현을 심각하게 제한한다)</p>
<ul>
<li>Gao et al.[2019]는 input/output embeddings으로 묶여서 학습된 언어 모델이 anisotropic word embedding으로 이끌고, 이는 pre-trained contextual representaion에서도 관찰되었다.</li>
<li>Wang et al.[2020]은 언어 모델에서 워드 임베딩 행렬의 특이값이 급격하게 감소한다는 것을 발견했다. : 몇 개의 지배적인 특이값을 제외하면 나머지는 거의 다 0.</li>
</ul>
<p>이러한 문제를 완화하는 간단한 방법은 </p>
<ul>
<li>post-processing<ul>
<li>dominant principal components를 제거하는 것</li>
<li>isotropic 분포로 임베딩을 맵핑시키는 것</li>
</ul>
</li>
<li>학습 동안에 regularization을 추가하는 것</li>
</ul>
<p>본 논문에서, 이론적으로 경험적으로 모두, contrastive objective가 이런 anisotropy 문제를 경감시킬 수 있음을 보였다. </p>
<p>anisotropy문제는 uniformity와 연결되어 있고, 동시에 embedding이 결국 공간에 분포되어야 한다는 것을 강조한다. <strong>직관적으로, contrastive learning objective를 최적화하는 것은 negative instance를 멀리 밀어내기 때문에 uniformity를 향상시킬 수 있다.</strong> 우리는 singular spectrum perspective을 취한다. - 이는 워드 임베딩을 분석할 때, 흔히 사용하는 방법이다. 그리고, contrastive objective는 문장 임베딩의 특이값 분포를 펼칠 수 있고, 표현을 더 isotropic하게 만든다는 것을 볼 수 있었다. </p>
<p>Wang and Isola[2020]에 따르면, contrastive learning objective의 asymptotics는 negative instances의 수가 무한에 다가감에 따라, 다음과 같은 식으로 표현될 수 있다($f(x)$는 normalized라고 가정).
$$
-\frac{1}{\tau}\mathbb E_{(x,x^+) \sim p_{pos}} [f(x)^Tf(x)^+] + \mathbb E_{x \sim p_{data}}[log \mathbb E_{x^- \sim p_{data}} [e^{f(x)^Tf(x^-)/\tau}]]
$$</p>
<p>첫번째 항은 positive instances들이 유사하게 유지되도록 하고, 두번째 항은  negative pairs가 떨어지게 밀어낸다. $p_{data}$가 유한한 샘플 ${x_i}^m_{i=1}$, $h_i = f(x_i)$에 대해 uniform하다면, 우리는 다음과 같은 식을 Jensen&#39;s inequality를 통해 이끌어낼 수 있다.</p>
<blockquote>
<p>jensen&#39;s inequality
if $g(x)$가 $R_X$에 대해 convex function이고, $E[g(x)]$와 $g(E[X])$이 유한하다면, 
$$
E[g(X)] \geq g(E[X])
$$</p>
</blockquote>
<p>$$
 \mathbb E_{x \sim p_{data}}[log \mathbb E_{x^- \sim p_{data}} [e^{f(x)^Tf(x^-)/\tau}]] 
$$
$$
= \frac{1}{m}\sum_{i=1}^m log(\frac{1}{m}\sum_{j=1}^me^{h_i^Th_j/\tau}) 
$$
$$
 \geq \frac{1}{\tau m^2}\sum_{i=1}^{m}\sum_{j=1}^m h_i^Th_j
$$
$W$를 ${x_i}<em>{i=1}^m$에 대응되는 문장 임베딩 행렬이라고 하자. 즉, $W$의 i번째 행은 $h_i$이다. 두번째 항을 최적화하는 것은 $WW^T$의 모든 요소들의 합의 upper bound를 최소화 하는 것이다. ($sum(WW^T)=\sum</em>{i=1}^m\sum_{j=1}^mh^T_ih_j$)</p>
<p>$h_i$를 normalize하기 때문에, $WW^T$에 있는 모든 주대각원소가 1이고, $tr(WW^T)$(eigenvalues의 합)이 상수이다. $WW^T$의 모든 원소가 양수이면, $Sum(WW^T)$은 $WW^T$의 가장 큰 eigenvalue에 대한 upper bound이다. 두번째 항을 최소화할 때, $WW^T$의 top eigenvalue를 줄이고, 내재적으로 임베딩 공간의 singular spectrum을 flatten한다. 그러므로, contrastive learning은 representation degeneration problem을 경감시키고 문장 임베딩의 uniformity를 향상시킬거라고 에상된다</p>
<p>isotropic representation만을 목표로 하는 post-processing 방법과 비교하면, contrastive learning은 첫번째 항에 의해 positive paris를 align역시 최적화 한다. </p>
<h3 id="6-experiment">6 Experiment</h3>
<h3 id="61-evaluation-setup">6.1 Evaluation Setup</h3>
<p>7가지 semantic textaul similarity(STS) task에 대해 실험을 수행한다. 본 논문에서의 STS 실험은 완전히 비지도이고, STS 학습 데이터셋은 사용되지 않았다. 지도 SimCSE에 대해서도, 우리는 단순히 이전 논문에 따라 학습을 위해 라벨링된 큰 데이터셋을 가져오는 것을 의미한다. 또한 7개의 transfer learning task에 대해 평가하고, 자세한 결과는 Appendix E에 기술해 놓았다. 문장 임베딩의 주된 목표는 의미적으로 유사한 문장들을 클러스터링하는 것이므로 STS를 메인 결과로 가져갔다. </p>
<h4 id="semantic-textual-similarity-tasks">Semantic textual similarity tasks</h4>
<ul>
<li>우리는 7개의 STS task에 대해 평가했다 : STS 2012-2016과 STS Benchmark, SICK Relatednedss</li>
<li>이전 논문들과 비교하면서, 우리는 invalid comparison pattern을 평가 상황에서 식별했다.<ul>
<li>추가적인 regressor를 사용하는지</li>
<li>Spearman&#39;s vs Pearson&#39;s corrleation</li>
<li>어떻게 결과가 합쳐지는지(Table B.1)
<img src="https://velog.velcdn.com/images/lm_minjin/post/90cbdea3-6093-48f1-a3f7-185b25c4ef4b/image.png" alt=""></li>
</ul>
</li>
<li>또한 이전 논문의 중복된 연구를 보고할 뿐만 아니라 우리의 결과를 다양한 환경에서 평가했다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/6f4328c1-9cb6-4314-a239-8ca0bd98aa06/image.png" alt=""><h4 id="training-details">Training details</h4>
</li>
<li>BERT 또는 RoBERTa의 사전학습된 체크포인스에서 시작(6.3에 풀링 방법이랑 비교)</li>
<li>[CLS] 표현을 문장 임베딩으로 사용</li>
<li>영어 위키피디아에서 무작위로 선택된 문장에 대해 비지도 SimCSE 학습, MNLI와 SNLI 데이터셋의 조합에 대해 지도 SimCSE 학습</li>
<li>더 detail한건 Appendix A에!</li>
</ul>
<h3 id="62-main-results">6.2 Main Results</h3>
<ul>
<li><p>STS tasks에 대해 이전 SOTA 문장 임베딩과 본 논문의 비지도, 지도 SimCSE와 비교</p>
</li>
<li><p>비지도 baseline은 GloVe embedding 평균, BERT or RoBERTa embedding 평균, post-processing method로는 BERT-flos, BERT-whitening포함</p>
</li>
<li><p>contrastive objective를 사용한 다른 최근 연구와도 비교</p>
<ul>
<li>IS-BERT : global과 local 특징 사이의 agreement를 최대화</li>
<li>DeCLUTR : positive pair로 같은 문서에서의 다른 spans 선택</li>
<li>CT : 두 개의 encoder로부터 같은 문장의 임베딩을 aligns</li>
</ul>
</li>
<li><p>다른 지도 방법은 InferSent, Universal Sentence Encoder, SBERT/SRoBERTa, 그리고 post-processing 방법과 비교</p>
</li>
<li><p>Table 5엔 7가지 STS task에 대한 평가 결과가 나와있다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/4017dda5-b1c6-4981-b5ea-969e172b1e20/image.png" alt=""></p>
<ul>
<li>SimCSE는 모든  dataset에 대해 결과를 크게 향상시킴. </li>
<li>특히, 비지도 SimCSE-BERT-base는 72.05%dptj 76.25%까지 성능을 향상시켰다. </li>
<li>아무튼 최고!</li>
<li>Appendix E에서, SimCSE는 또한 그동안 성취한 transfer task percormance와 동일하거나 더 나은 결과를 보여줬고, auxiliary MLM objective는 성능을 더 끌어올릴 수 있게 해줬다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/5c35e519-993b-4fb7-b04b-d255dc3592a4/image.png" alt=""></li>
</ul>
</li>
</ul>
<h3 id="63-ablation-studies">6.3 Ablation Studies</h3>
<ul>
<li>다양한 pooling 방법과 hard negative의 영향을 조사함</li>
<li>여기 나온 모든 보고된 결과는 STS-B development set를 기반</li>
<li>더 자세한 ablation study는 Appendix D참고</li>
</ul>
<h4 id="pooling-methods">Pooling methods</h4>
<ul>
<li>사전 학습 모델의 평균 임베딩(첫번째 레이버랑 마지막 레이어 둘다) 사용하는 것이 [CLS]토큰 보다 더 나은 성능을 이끔</li>
<li>Table 6에서 보면 지도 SimCSE와 비지도 SimCSE에 대해 다양한 pooling method를 비교</li>
<li>[CLS]에 대해 원래 BERT 구현은 위에 추가적으로 MLP layer를 사용한다. 그래서 다양한 환경을 고려해 다음과 같이 설정<ul>
<li>MLP layer유지</li>
<li>no MLP layer</li>
<li>keeping MLP during training but removing it at testing time</li>
</ul>
</li>
</ul>
<p>==&gt; 실험 결과, 비지도는 3이 베스트, 지도는 다양한 방법이 맞지 않았음</p>
<ul>
<li>결론적으로, default로 [CLS] with MLP(train) for unsupervised SimCSE와 [CLS] with MLP for supervised SimCSE 사용</li>
</ul>
<h4 id="hard-negatives">Hard negatives</h4>
<ul>
<li>직관적으로, 배치의 다른 negatives로부터 hard negatives를 미분하는 것은 유용!
==&gt; training objective를 hard negative까지로 확장
$$</li>
<li>log \frac{e^{sim(h_i,h_i^+)/\tau}}{\sum_{j=1}^N(e^{sim(h_i,h_j^+)/\tau}+\alpha^{\mathbb 1^j_i}e^{sim(h_i,h_j^-)/\tau})}
$$
$1_i^j \in{0,1}$은 i=j일때만 1과 동일하다. </li>
<li>SimCSE를 다양한 $\alpha$값을 가지고 학습, 평가<ul>
<li>$\alpha=1$일때 가장 성능이 좋았음<h4 id="analysis">Analysis</h4>
<h4 id="uniformity-and-alignment">Uniformity and alignment</h4>
</li>
</ul>
</li>
<li>Figure 3에 다양한 문장 임베딩 모델의 uniformity와 alignment가 나타나 있음
<img src="https://velog.velcdn.com/images/lm_minjin/post/0588ccb8-cb05-46f3-84f6-9b2126adb403/image.png" alt=""></li>
<li>일반적으로 좋은 alignment와 uniformity를 가진 모델들은 좋은 성과를 냄</li>
<li>사전 학습 임베딩은 좋은 alignment를 갖지만, uniformity는 나쁨(즉, embeddings이 highly anisotorpic함)</li>
<li>post-processing방법(BERT-floaw, BERT-whitening)은 uniformity를 크게 향상시키지만 alignment에서 degeration으로 고통받음.</li>
<li>비지도 SimCSE는 사전 학습 임베딩의 uniformity를 효과적으로 향상시키면서 좋은 alignment를 유지</li>
<li>지도 데이터를 SimCSE를 통합하는 것은 alignment를 더욱 수정시킴.</li>
</ul>
<p>Appendix F에서 SimCSE가 사전 학습 임베딩의 특이값 분포를 효과적으로 펼칠 수 있다는 것을 보임
<img src="https://velog.velcdn.com/images/lm_minjin/post/32876cef-f340-48c8-ae60-190de1040add/image.png" alt="">
(BERT-flow 또는 BERT-whitening과 같은 post-processing 방법은 isotropic distribution에 임베딩을 매핑하는 것을 직접 목표로 하기 때문에 곡선을 더욱 flatten)</p>
<p>Appendix G에서 SimCSE가 다른 문장 pairs사이에 더 특징적인, 구별되는 코사인 유사도를 제공한다는 것을 증명함.
<img src="https://velog.velcdn.com/images/lm_minjin/post/f94b32d7-7a1c-4bb2-b7fa-9b8733d53a74/image.png" alt=""></p>
<h4 id="qualitative-comparison">Qualitative comparison</h4>
<p>SBERT-base와 SimCSE-BERT-base를 가지고 실험을 진행. Flickr30k dataset에서 150k의 캡션을 사용했고, 유사한 문장을 검색하기 위해 쿼리로써 무작위로 문장을 선택. Table 8에서의 데이터처럼, SimCSE에 의해 검색된 문장들이 SBERT와 비교해 더 높은 퀄리티를 가짐
<img src="https://velog.velcdn.com/images/lm_minjin/post/76e1e68b-5199-448e-95e1-1961d3b0b27f/image.png" alt=""></p>
<h3 id="9-conclusion">9 Conclusion</h3>
<p>SimCSE는 semantic textual similarity task에서 SOTA sentence embeddings를 크게 개선시킴. input sentnece에 droput onise를 얹어 스스로 예측하게 하는 비지도 방식과, NLI dataset를 활용하는 지도 방식 모두를 제안. 다른 base-line model들과 SimCSE의 alignment와 uniformity를 분석함으로써 내부적으로도 증명. 특히 비지도방식은 NLP의 다양한 응용에 활용될 수 있을거라 생각. text input인 data augmentation에 새로운 관점을 제안했고, 이는 다른 conitunous representation으로 확장되고 언어모델로 통합될 수 있을 것.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] FEQA : A Question Answering Evaluation Framework for Faithfulness Assessment in Abstractive Summarization]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-FEQA-A-Question-Answering-Evaluation-Framework-for-Faithfulness-Assessment-in-Abstractive-Summarization</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-FEQA-A-Question-Answering-Evaluation-Framework-for-Faithfulness-Assessment-in-Abstractive-Summarization</guid>
            <pubDate>Thu, 28 Apr 2022 03:06:49 GMT</pubDate>
            <description><![CDATA[<p>본 논문은 2020 ACL에 실린 논문입니다. Summarization task에서 factual inconsistency를 해결하기 위해 QA방식을 이용해 metric을 제안하고 있습니다. factual inconsistency에 관해 궁금하다면 전의 포스트 중 하나인 &quot;The Factual Inconsistency Problem in Abstractive Text Summarization: A Survey&quot; 논문 리뷰를 읽어보시는 것을 추천드립니다.</p>
<h3 id="abstract">Abstract</h3>
<p>신경망 생성 요약 모델은 원문과 일치하지 않는 내용을 생성하는 경향이 있다(즉, unfaithful). 현존하는 automatic metrics는 이러한 실수를 효과적으로 잡지 못한다. 우리는 본문이 주어졌을 때, 생성된 요약의 faithfulness를 평가하는 문제를 해결하고자 한다. 우선 2개의 데이터셋에 대해서 수많은 모델로부터 output에 대한 faithfulness의 human anootations을 수집했다. 우리는 현재 모델에선 abstractiveness와 faithfullness사이의 trade-off가 존재한다는 것을 발견했다 : 원문과 적은 단어로 overlap되는 결과가 unfaithfullness할 가능성이 높다.(즉, abstractiveness가 높아질수록, faithfullness가 낮아짐) 그래서, 우리는 automatic question answering(QA)를 기반으로 한 faithfulness metric, FEQA를 제안한다. FEQA는 현재 독해에서의 장점을 극대화한다. 요약문을 바탕으로 생성된 QA가 주어질 때, QA모델이 문서에서 답을 추출해낸다. 그리고 그 답이 요약과 매치되지 않으면 unfaithfull한 정보라는 것을 의미한다. word overlap, embedding similarity, learned language understanding models을 기반으로 한 평가지표 중에서, 우리의 QA-based 지표가 human faithfulness scores와 유의미하게 더 높은 상관관계를 보였다(특히 highly abstractive sumamries에 대해).</p>
<h3 id="1-introduction">1 Introduction</h3>
<p>생성 요약 모델은 원문에서 중요한 내용을 모델에 결합해야 faithful을 유지할 수 있음. 신경망 생성 모델은 중요한 내용을 식별하고, 유창한 요약을 생상하는데에 효과적. 하지만, 생성된 요약문이 항상 faithful한 정보를 갖고 있는 것은 아니기 때문에 실제 응용에 적용하기에 치명적이다. 아래 표를 보면, unfaithful generation의 예시가 나와있다. 최근 연구에 따르면, 생성된 요약문의 약 30%정도가 unfaithful 정보를 포함하고 있다고 한다. 특히, 여러 원문 문장의 정보를 합칠때!
<img src="https://velog.velcdn.com/images/lm_minjin/post/ef94f732-6dc2-4c55-b1cf-e2a125d47671/image.png" alt=""></p>
<p>핵심 인사이트</p>
<ol>
<li>현재 모델들이 abstractiveness와 faithfulness사이에 trade-off로 제한된다는 것(section 2)</li>
<li>요약문이 더 abstractive할수록(==less overlap with the source doument) unfaithful sentences의 수가 증가</li>
<li>현존하는 다양한 평가 지표들과 faithfulness의 human score의 상관관계가 abstractive정도가 높은 요약문일수록 떨어짐(즉, 표면적인 유사성을 넘어서 더 깊은 텍스트 이해가 요구됨) </li>
</ol>
<p>이전 논문들의 인사이트</p>
<ul>
<li>QA(Question answering)기반 automatic metric이 요약에서 내용 선택을 평가하기 위한 용도로 제안됨</li>
<li>cloze-style QA는 원문에서 중요한 정보가 요약에서 커버되고 있는지를 평가하기 위해 사용됨</li>
</ul>
<p>==&gt; automatically generated QA pairs를 사용해 요약문의 정보를 나타내고, 이를 원문과 비교해 평가하자!</p>
<ol>
<li>선언적 문장(declarative sentence)와 답변 범위를 질문으로 변환하는 학습된 모델 사용해서 &quot;groudtruth&quot; QA pair를 요약문에서 생성(section 3)</li>
<li>기성(off-the-shelf) 독해 모델은 원문에서 답변 범위를 추출해 평가됨.</li>
</ol>
<p>높은 정확도 == 원문과 요약문이 같은 답을 생성 == 각 질문에 대해 factual consistenct가 있다고 볼 수 있음</p>
<p>cloze test를 사용하는 이전 방법들과 비교하면, 우리의 질문 생성 접근은 더 넓은 범위의 QA model과 답변 유형(extractive와 generative)을 통해 평가할 수 있다.</p>
<h3 id="2-the-abstractiveness-faithfulness-tradeoff">2 The Abstractiveness-Faithfulness Tradeoff</h3>
<p>추출 요약 모델은 매우 faithful하지만(왜냐면 원문에서 그대로 문장을 갖고 오는거니까!), 현재의 생성 모델은 copy없이 faithful summary를 생성하는데에 고군분투하고 있다. 우리는 더 abstractive할수록 factual error가 더 많이 발생한다는 것을 관찰했다(Lebanoff et al. (2019)). 이번 섹션에서, 우리는 생성된 요약을 2개의 차원으로 분석하려고 한다 : abstractivness와 faithfulness</p>
<p>특히, 우리는 다음 질문에 대한 답변을 하는 것을 목표로 한다.</p>
<ol>
<li>요약문의 abstractiveness를 어떻게 계량화할 수 있을까?</li>
<li>abstractiveness가 data또는 model에 의해 더 권장되나?</li>
<li>abstractive함이 어떻게 faithfulness에 영향을 끼칠까?</li>
</ol>
<h3 id="21-characterizing-abstractivenss-of-a-summary">2.1 Characterizing Abstractivenss of a Summary</h3>
<p>생성 요약은 중요한 정보를 간결한 서술로 rephraing하는 것(원문을 살짝 고치는 것 ~ 여러 문장을 새로운 단어로 압축시키는 것)을 포함한다. 원문과 요약이 주어질 때, 우리는 요약문의 abstractivness의 정도를 평가하고자 한다. </p>
<p>이전 논문은 abstractivness를 요약문과 원문 사이에 얼마나 많은 text가 겹치는지를 이용해 abstractiveness의 수준을 평가하거나 LEAD-3와 같은 extractive baseline의 효율성에 의해 간접적으로 평가했다. extractive fragment coverage와 density와 같은 지표는 abstractiveness의 수준에 대해 연속적인 측정값을 제공한 반면, 우리는 요약에서 각 문장들이 얼마나 형성되었는지를 분석하며 abstractiveness의 세밀한 범주화(fine-grained categerization)를 정의한다.</p>
<p>더 abstractive한 summary문장은 원문의 더 큰 chunk에 대한 정보를 통합한다. 즉, 간결함을 유지하기 위해 더 적은 단어만을 copy해야만 한다. 그러므로, 우리는 abstractiveness 종류를 copy된 양에 의해 정의한다.(copy한 것이 문장, 한 부분 or 그 이상, 단어 수준으로 정의)</p>
<ol>
<li>Sentence extraction : 원문 중 하나의 완전히 같은 요약문</li>
<li>Span extraction : 요약문이 원문의 substring과 동일. 
ex) &quot;the plane was coming back from the NCAA final&quot;은 원문의 &quot;<em>the plane was coming back form the NCAA final</em>, according to spokesman John Twork&quot;에서 추출됨</li>
<li>Word extraction : 요약문이 원문의 토큰들의 하위 집합으로 형성됨
ex) &quot;Capybara Joejoe has almost 60000 followers&quot;는 원문의 단어 몇개를 삭제한 것과 같음 &quot;<em>Capybara joejoe</em> who lives in LasVagas <em>has almost 60000 followers on Instragram</em>&quot;</li>
<li>Perfect fusion : 요약문은 원래 순서를 가진 k개의 요약 문장에서부터 substring들을 조합한 것에 의해 만들어짐
ex) &quot;<em>Capybara Joejoe</em> has almost 60000 followers&quot;는 원문의 단어 몇개를 삭제한 것과 같음 &quot;Capybara joejoe lives in LasVagas&quot;, &quot;He <em>has almost 60000 followers</em> on Instragram&quot;</li>
</ol>
<p>요약문의 abstractiveness 정도를 계량화하기 위해, 위의 카테고리 중 하나에 충족될 경우 각 문장에 labeling을 했다. 그리고 나서, category에 의해 라벨링된 문장의 percentage를 각 type의 점수로 정의한다. 이 종류는 abstractiveness의 정도에 따라 오름차순으로 정렬되어 있다. 예를 들어, 더 높은 fusion score와 낮은 extraction 점수를 가진 요약문은 더 abstractive한 것으로 여겨진다. 게다가, 우리는 원문에서 나타나지 않은 <strong>novel n-grams</strong>의 비율을 계산해, abstractiveness의 또 다른 지표로 사용했다.</p>
<h3 id="22-is-abstractiveness-from-the-model-or-teh-data">2.2 Is abstractiveness from the model or teh data?</h3>
<p>위에 언급된 abstractivenss에 대한 지표를 사용해서, 우리는 생성된 요약이 얼마나 abstractive하고, 그것의 양이 training data 또는 model의 결과인지 아닌지를 더 이해하고자 한다. 그래서, 우리는 다양한 모델과 2개의 dataset에 대해 reference summary와 생성된 요약 모두에 대한 abstractiveness scores를 계산했다.</p>
<h4 id="datasets">Datasets</h4>
<p>우리는 CNN/DailyMail(CNN/DM)와 XSUM을 사용했고, 둘다 single-document news summarization task에 사용된다. CNN/DM은 CNN과 Daily Mail 웹사이트의 기사들로 구성되어 있다. XSum은 BBC기사로 구성되어 있고, 요약문은 artile에 대한 opening introductory sentence으로 쓰여진 하나의 문장으로 구성되어 있다. XSum은 highly abstractive summarization system에 대한 연구를 촉진하기 위해 출시되었다. Appendix A에선 CNN/DM과 XSum 데이터셋에 대한 통계자료를 제공한다 : 그들은 각각 약 288k와 204k개의 학습 데이터를 가지고 있다; CNN/DM은 평균적으로 더 긴 원문과 요약을 포함하고 있다.</p>
<h4 id="models">Models</h4>
<p>대부분의 신경망 생성 요약 모델들은 sequence-to-sequence 모델에 기반을 두고 있다. 그들은 copying/extraction와 같은 요약 특화 작업이 인스턴스화되는 방식이 다르다. 우리는 5개의 유명한 모델을 사용하고, 그들의 특성을 Table2에 요약해두었다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/490f37f9-0465-4ec4-bb50-d1d3e0a8102b/image.png" alt=""></p>
<p>각 모델의 세부사항은 Appendix B에서 찾을 수 있다. PGC는 decoding중에 copy mechanism을 사용해 추출을 허용한다. FASTRL과 BOTTOMUP은 처음에 문장과 단어를 선택해 학습하고, extraction과 abstractive generation을 분리한다(decouple). 이 모델은 PGG과 비교해서 더 abstrative summaries을 생성한다고 알려져 있다. TCONV는 XUsm을 위해 초기에 설계되었고, 그렇기 때문에 어떠한 외재적인 copying/extraction 요소를 포함하지 않고 CNN을 사용해 긴 문서 표현에 초점을 둔다. BERTSUM은 BERT 기반 encoder와 6개의 Transformer decoder로 구성되어 있다. 이는 추출 요약 task에 대해선 인코더를 먼저 fine-tuning하여 내재적으로 추출을 통합한다.</p>
<h4 id="results">Results</h4>
<p>우리의 목표는 다양한 모델에 의해 생성된 요약문의 abstractiveness의 수준을 이해하고, 학습 데이터로부터 abstractiveness에 대한 영향을 이해하는 것이다. 그러므로, 우리는 CNN/DM과 XSum에 대해 위의 모델들에 의해 생선된 요약문을 분석한다. 우리는 test set의 generated summaries와 reference summaries에 대해 Section 2.1에 서술된 지표를 계산한다. 그 결과는 Table 3에 나와있다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/ec3211f7-0d77-4dd1-ad38-fa9b7028776f/image.png" alt=""></p>
<ol>
<li><p>CNN/DM은 XSum보다 더 extractive하다. 
CNN/DM에서 reference summary에 대한 extractive score은 거의 문장의 반절 이상이 원문의 문장 중 하나에서 단어를 삭제해 생성되었다는 것을 보여준다. 이 데이터셋에서 sentence compression이 주된 테크닉으로 사용되었다는 걸 보여준다. 반대로, XSum의 요약문에선 단 한 문장도 원문 문장을 그대로 copy해 만들어지지 않았다. 그들은 거의 input content를 paraphrasing하여 생성되었고, 이는 novel n-gram의 large fraction에 의해 설명될 수 있다.</p>
</li>
<li><p>학습 데이터는 model output의 abstractiveness에 대해 큰 영향을 끼친다.
우리는 CNN/DM에 대해 학습한 모델이 더 near-extractive하다는 것을 알았따. 하지만, 같은 모델이 XSum에 대해 학습되었을 때는 확연히 더 abstractive했다. 사실, 어떤 모델도 단일 원문 문장에서 단어/구를 복사하는 문장을 생성하지 않았고, 이는 XSum의 reference summary의 특성과 일치한다. 정보는 참신한(novel) 단어/구에서 더 rephrase되었다. 그러나, 두 데이터셋 모두에 대해서 현재의 모델들은 reference summary과 동일한 수준의 abstractiveness을 달성하기 위해 고군분투하고 있고, 이는 다시 말하자면 여러 문장을 압축하기 위해 추가적인 inductive bias가 필요함을 나타낸다.</p>
</li>
<li><p>다양한 모델들은 다양한 방식으로 extraction을 한다.
CNN/DM에 대해 학습할 때, PGC는 원문을 완전히 copying하면서 문장의 대다수를 생성했지만 FASTRL, BOTTOMUP, BERTSUM은 삭제하면서 더 간단하게 압축을 진행했다. 게다가 BOTTOMUP은 PGC, FASTRL과 BERTSUM에 비교해 더 fusion를 했다.</p>
</li>
</ol>
<h3 id="23-annotating-summary-faithfulness">2.3 Annotating Summary Faithfulness</h3>
<p>현재 시스템의 faithfulness와 abstractive에 대한 그들의 관계를 이해하기 위해, 우리는 Section 2.2에 서술된대로 각 모델-데이터셋 쌍의 결과값에 대해 human annotations을 했다. extractive에 가까운 문장들은 더 grammatical하고 faithful했기 때문에, 우리는 완전한 copy 또는 원문 중 하나의 substring을 copy하는 output sentence는 배제하고 더 abstractive한 경우에 집중했다.</p>
<p>믿을만한 human annotation에 대한 중요한 문제점은 faithfulness에 대한 inter-annotator agreement가 비교적 낮았다는 것이다. 우리의 파일럿 연구는 annotator가 종종 앞뒤가 맞지 않는 문장에 대해 동의하지 않았다는 것을 보인다. (ex. Chelsea beat Chelsea 5-3 in the Premier Leargue on Saturday와 같은 문장은 faithful하냐 아니냐와 같이) annotation 과정을 표준화하기 위해, 우리는 문장을 무의미하게 만드는 <em>실패한 생성</em>, 의미론적 이해에 거의 영향을 미치지 않는 <em>낮은 수준의 문법 오류</em>, 부정확한(그러나 의미있는) 정보를 포함하는 <em>충실도 오류</em>
를 구별하는 계층적 질문을 설계했다.</p>
<p>Figure 1은 우리의 human annotation steps의 decision tree를 보여준다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/dc1c8675-0baf-460d-9916-6fe22fdaec3f/image.png" alt=""></p>
<ol>
<li>우리는 먼저 생성된 문장(원문과 독립)의 문법성을 평가한다.</li>
</ol>
<ul>
<li>문장의 의미 있는지 없는지 선택</li>
<li>문장이 의미 있다면, 문법 오류가 있는지 확인</li>
</ul>
<ol start="2">
<li>의미있다고 분류된 문장에 대해, 제공된 원문에 대해 faithful한지 평가</li>
</ol>
<ul>
<li>unfaithful하다고 붙여진 문장들의 경우, 해당 문장에 원문에 누락된 정보나 상충되는 정보가 포함되어 있는지를 확인해 오류를 분석한다.</li>
</ul>
<p>더 자세한 정보는 Appendix C에 나타나있다.</p>
<h3 id="231-human-annotation-results">2.3.1 Human Annotation Results</h3>
<p>Section 2.2에서 서술한 dataset-model pair에 대해서, 우리는 완전한  혹은 substring copy인 문장을 제외하고 무작위로 sentence-source pair를 1000개 추출한다. 우리는 이러한 문장에 대해 5명의 annotators에게 grammaticality annotation을 수집했다. 우리는 만약 첫 단계에서 5명 중 4명 이상이 의미있다고 라벨링한 문장만 meaningful하다고 생각했다. 우리는 faithfulness에 대해 annotation을 수집하기 위해 200개의 의미 있는 문장을 무작위로 샘플링했다. Table 4는 grammaticality와 faithfulness human evaluation을 보여준다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/9a552ac3-b692-4cdc-a0e8-a955a4120e9b/image.png" alt="">
(확실히 보면 abstractive가 낮은 애들이 문법성도 높고, Faithfulness도 높음)</p>
<h4 id="grammaticality">Grammaticality</h4>
<p>전반적으로, 모든 모델에 대한 결과는 높은 inter-annotator간 일치와 함께 문법성(grammaticality)에서 높은 점수를 받았다. 그러나 더 abstractive한 요약에 대해서는 문법성 점수가 크게 낮아졌다.  하나 예외는 BERTSUM인데, 이 모델은 XSum에 대해서도 높은 성능을 유지함과 종시에 두 데이터셋 모두에 대해 가장 높은 문법성 점수를 기록했다.</p>
<h4 id="faithfulness">Faithfulness</h4>
<p>extractive에 가까운 요약(CNN/DM에 대해 학습된 모델에서 생성한 요약)은 abstractive에 가까운 요약(XSum에 대해 학습된 모델에서 생성한 요약) 보다 더 높은 faithfulness 점수를 가진다. 우리는 PGC와 TCONV가 XSum으로 학습했을 떄 문장의 절반 이상에서 faithfulness error가 나타난다는 것을 발견했다. 하지만 BERTSUM은 덜 unfaithful sentence를 생성하지만, 여전히 XSum에 대해 성능이 낮다. 흥미로운건, faithfulness에 대한 사람의 동의도 XSum으로 얻은 요약문일 경우에 더 낮다. 이는 faithfulness error자체가 더 abstractive한 환경에선 사람이 포착하기에도 어렵다는 것을 의미한다. CNN/DM으로 학습된 경우 원문과 상충되는 정보가 나오는 경우가 흔했고, XSum으로 학습된 경우 hallucination(원문에 없는 정보)이 나오는 경우가 더 흔했다. Table 5는 의미는 있지만 unfaithful한 문장들의 예시를 보여주고 있다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/0088a2ad-d4d1-4371-8232-8696b0605adf/image.png" alt=""></p>
<h3 id="3-feqa--faithfulness-evaluation-with-question-answering">3 FEQA : Faithfulness Evaluation with Question Answering</h3>
<p>위에서 한 우리의 연구는 abstractive summaries이 생성될 때 더 unfaithful한 문장의 수가 증가한다는 것을 보여준다. 이와 같이, faithfulness evaluation에 대한 중요한 문제는 원문에 비해 매우 abstractive한 문장을 증명해야한다는 것이다.(유사도 매칭이 어려움!!)
만약 표면적인 형태와 관계 없이(예 : 누가 누구에게 무엇을 했는지에 대한 사실 목록) 문장의 좋은 의미적인 표현을 가진다면, 우리는 단순히 원문과 문장의 표현을 비교할 수 있다(예 : 요약문의 사실 목록이 원문의 사실 목록의 하위집합인지 확인하는 것). 이상적으로, 그 표현은 간단한 에러 분석에 대해 domain-general하고 interpretable 해야한다.</p>
<p>reading comprehension의 급진적인 성장에서 영감을 받아, 우리는 faithfulness evaluation에 대한 문장의 일반적인 의미 표현으로 QA 쌍을 사용하는 방법을 제안한다. 요약 문장이 주어질 때, 우리는 문장에서 핵심 정보에 대해 묻는 질문들과 그와 상응하는 답을 만들 수 있다. 이 정보가 원문에 있음을 증명하기 위해, 우리는 원문으로부터 답을 예측하는 QA모델을 사용한다. 질문과 QA모델은 그러므로 2개의 텍스트에서 비교할만한 정보를 추출해낸다. 원문과 일치되는 답이 더 많을 수록, 질문들이 다루는 정보가 원문과 요약문에 일관된다는 것을 의미하기 때문에, 더 faithful한 요약이라고 볼 수 있다. Figure 2는 FEQA의 플로우를 보여준다.</p>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/0cbff3ac-ada2-4a88-958b-47b61c64fbf9/image.png" alt=""></p>
<h4 id="question-generation">Question generation</h4>
<p>이전 논문은 entities를 마스킹한 것을 question으로 cloze tests을 사용한다. cloze-style QA을 넘어 더 최근의 extractive 또는 generative QA 모델을 활용하기 위해 요약 문장에서 자연어 질문을 자동으로 생성합니다. 특히, constituency parser에 의해 추출된 명사구와 Stanford CoreNLP NER모델에 의해 추출된 named entity를 포함하여 문장에서 중요한 텍스트 범위를 마스킹한다. 우리는 각 span을 golde answer로 삼고, 사전 학습된 BART 언어 모델을 fine-tuning해 이와 상응하는 질문을 생성한다. 질문 생성기를 학습하기 위해, 우리는 QA2D dataset을 사용했다. 입력값은 마스킹된 답변이 포함된 선언적 문장이고 출력값은 질문이다. 학습 데이터의 예시는 다음과 같다</p>
<blockquote>
<p>Input : Sally was born in [m] 1959 [/m]
Output : When was Sally born?</p>
</blockquote>
<p>선언적 문장에서 질문으로의 변형이 거의 paraphrasing없이 rule-based이기 때문에, 우리는 모델이 다양한 도메인에 으로 일반화되기를 기대한다.</p>
<h4 id="answer-verification">Answer verification</h4>
<p>요약문에서 생성된 QA pair가 주어질 떄, 우리는 이미 있는 QA모델을 사용해 원문에서 이러한 질문에 대한 답을 구한다. 이후 요약에서의 &quot;gold&quot; 답변에 대해 평균 F1 score를 측정한다. 이 과정은 QA모델에 대해 어떠한 제약도 없다. 우리는 사전 학습된 BERT-base모델을 SQuAD-1.1과 2.0으로 fine-tunign해 실험했다. SQuAD-2.9의 경우, 모델이 질문에 답변할 수 없다는 가설이 가능하게 했다. 이는 답변이 incorrect하다는 것과 의미적으로 동일하다(==unfaithful!)</p>
<h3 id="4-experiments">4 Experiments</h3>
<p>우리는 제안된 QA기반 지표와 기존 지표가 요약의 정확성을 어느 정도 포착하는지 이해하는 것을 목표로 한다. reference summary가 없는 원문과 요약 문장의 pair가 주어질 때, 우리는 human-annotated faithfulness score와 아래 서술된 지표를 사용해 계산된 점수와의 상관관계를 측정했다.</p>
<h3 id="41-automated-metrics-for-faithfulness">4.1 Automated Metrics for Faithfulness</h3>
<h4 id="word-overlap-based-metrics">Word overlap-based metrics</h4>
<p>faithfullness에 대한 직관적인 지표는 요약문과 원문 사이의 word overlap이다. 우리는 결과 문장과 원문의 문장 각각에 대한 ROUGE(R), BLEU(B)를 계산한다(원문 문장을 reference로 삼음). 우리는 모든 원문 문장에 대해 평균 점수와 최대 점수를 계산한다. 분석에 따르며 평균 점수를 일관되게 취하는 것이 더 높은 상관 관계를 가지므로 평균에 대한 상관 관계만 작성하였다.</p>
<h4 id="embbeding-based-metrics">Embbeding-based metrics</h4>
<p>word embbeding은 word overlap기반 지표를 정확한 매칭 이상으로 확장한다. 최근에, BERTScore는 BERT에서 contextual word embbeding을 사용해 두 문장 사이의 유사성을 계산하는 방법을 제안했다. 이는 image captioning과 machine translation에서 wor overlap기반 지표보다 더 human judgement와 높은 상관관계를 보인다. 우리는 원문 문장 각각과 요약문장 사이의 BERTScore를 계산한다. 최종적인 점수를 얻기 위해, 우리는 각각의 원문 문장과 요약 문장에서 계산된 평균과 최대 점수 둘다에 대해 실험한다. 성능이 더 좋기 때문에, 최대 점수를 사용해 결과를 보고한다.</p>
<h4 id="model-based-metrics">Model-based metrics</h4>
<p>QA에 더해, 현재 논문들은 faithfulness evaluation을 위해 relation extraction과 text entailment model을 사용해왔다. relation extraction metric(RE)에 대해, 우리는 Standard Open IE에 있는 모델을 사용해 원문과 요약문에서 relation triplets에 대한 precision을 계산한다. textual entailment metric(ENT)에 대해, AllenNLP에서 사전 학습된 ESIM모델을 사용해 요약문이 원문에 대해 entail되는지를 측정한다.</p>
<h3 id="42-results">4.2 Results</h3>
<h4 id="metric-comparison">Metric Comparison</h4>
<p>우리는 CNN/DM과 XSum 데이터셋(748개, 268개) 모두에 대해 원문과 결과 문장에 대해 각각 지표를 적용해 점수를 계산했다. 그리고 우리는 각 지표와 human annotation scores사이의 Pearson과 Spearman 상관계수를 계산했다. Table 7에 각 데이터셋의 데이터에 대한 상관계수들이 나타나있다. 우리는 CNN/DM과 XSum 모두, 다른 지표보다 QA를 바탕으로 한 평가가 faithfulness와 높은 상관관계를 보인다는 것을 알 수 있었다(QA기반 방법이 짱이다). word-overlap기반 방법은 더 extractive한 상황(CNN/DM)에서 더 faithfulness와 상관성이 높았지만, abstractive한 상황(XSum)에선 faithfulness와 상관관계가 없었다. 우리는 XSum에 대해 모든 지표가 human score과의 상관관계가 상당히 낮다는 것을 알았고, faithfulness를 평가하는 것은 more abstractive setting에서 더 힘들어진다는 것을 제시한다. 원문과 요약문에 대한 더 깊은 이해가 필요하다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/6b6c26fb-a83a-4c32-8c89-8d2bee65d94f/image.png" alt=""></p>
<p>이전 연구에 따르면, <strong>entailment metirc은 대부분의 경우에서 faithfulness와 높은 상관관계를 갖지 않았다</strong>. 이러한 모델들은 횬재 entailment dataset에 대해 학습된 모델들은 lexical overlap과 같은 간단한 휴리스틱에 의존하기 때문에 원문과 요약문이 크게 overlap될 때 entailed(faithful)과 non-entailed(unfaithful) 요약 문장을 구별하는 것에 실패했다. 유사하게, BERTScore도 문장사이에 겹치는 개념이 있을 때, 내용이 같이 않더라도 높은 점수를 주는 경향이 있다. Table 6에 예시가 나와있다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/2cfedc28-fd2f-48b6-8471-0442ff737b84/image.png" alt=""></p>
<h4 id="content-selection-and-faithfulness">Content selection and faithfulness</h4>
<p>요약에 대한 현재의 평가 지표들은 요약문의 전반적인 푸질에 대해 하나의 측정값을 생성한다. 전형적으로, 결과 요약문은 n-gram의 관점에서 reference 요약문과 비교된다. 이러한 지표들은 주로 content selection을 평가한다(ex. reference의 content와 유사한지 비교) 반대로, faithfulness를 평가하기 위해, 우리는 원문과 생성한 요약문을 비교한다. 이에 따르는 하나의 질문은 높은 content matching이 faithfulness에 대해 충분한지이다. 우리는 human annotated faithfulness 점수와 ROUGE score와의 상관계수를 계산했다. Table 8에서 볼 수 있듯이, CNN/DM에선 약한 상관관계를 보이고, 그 상관관계는 faithfulness의 ROUGE score(원문과 생성 요약문 비교해 계산)보다 훨씬 낮다. XSum에 대해선, content seclection metric과 faithfulness사이에 큰 상관관계가 없다. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/e869fc03-d90c-4457-beea-b3b45bf4666b/image.png" alt="">
우리는 높은 content selection score를 갖는 unfaithful example를 Appendix D.3에 기술해놓았다. 이는 contenct selection과 faithfulness는 점수를 단일화 해 측정하는게 아니라 분리되어 측정되어야 한다는 것을 보여준다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/7c347f84-f825-4820-a8c2-525f93defb43/image.png" alt=""></p>
<h4 id="analysis-and-limitations-of-qa-based-evaluation">Analysis and limitations of QA-based evaluation</h4>
<p>Table 9는 상응하는 QA pair와 faithful and unfaithful output sentence의 예시에 대해 나와있다.  QA시스템은 생성 요약문에서 충돌하는 정보와 같은 흔한 에러들을 포착할 수 있다. FEQA의 신뢰성을 측정하기 위해, 우리는 무작위로 샘플링된 100개의 QA pair를 사용해 manual error를 분석했다. 생성된 질문의 약 94%가 대부분 문법적이고 mask를 사용할 때 정확했다. 질문의 78%에 대해 QA 시스템은 올바르게 동작한다. 문장이 원문에 충실하면 질문에 올바르게 대답하고, 그렇지 않으면 답변 불가 또는 오답을 생성한다. QA시스템의 대부분의 오류는 답변할 수 없는 질문을 감지하지 못하거나 답변이 이씅ㄹ 때 &quot;응답할 수 없음&quot;을 생성하기 때문이다(14%). 게다가, 원문이 길 때, QA시스템은 더 실수하는 경향이 있다. 특히 더 abstractive한 환경에서, F1-score는 답과 원문이 정확히 일치하지 않을 때 correct answer에 패널티를 준다(ex. &quot;Donald Trump&quot; vs &quot;the President of the United States Donald Trump&quot;)(16%)
<img src="https://velog.velcdn.com/images/lm_minjin/post/f277d9c0-5172-4b05-b0da-2bd2be97f329/image.png" alt=""></p>
<h3 id="5-related-work">5 Related Work</h3>
<h4 id="problems-in-current-neural-generation-models">Problems in current neural generation models</h4>
<p>신경망 생성 모델의 초기엔, 반복 및 일반적인 응단 문제가 많은 관심을 받았다. 최근엔, 기계 번역의 적절성, 요약의 충실도, 대화의 일관성과 같은 모델 출력의 의미 오류에 더 많은 논문이 집중되었다. abstractive-faithfulness trade-off에 대한 우리의 분석은 현재 모델의 추가적인 한계를 드러내고, 모방을 넘어 요약하는 방법에 대한 새로운 inductive bias가 필요함을 시사</p>
<h4 id="qa-as-a-proxy">QA as a proxy</h4>
<p>QA는 많은 태스크를 포괄하는 넓은 포맷이다. QA를 요약을 위한 외재적인 평가로 처음 사용한건 Main et al.[1999]이었다 : 좋은 요약은 독자가 기사에 대해 가질 수 있는 핵심 질문에 답해야 한다. 후에, QA는 한 명이 요약에 대해 질문을 쓰면, 다른 한명이 답을 하는 사람 평가 방식으로 통합되었다. 우리의 방법은 자동화된 질문 생성을 적용한 최초의 방법이다. 우리는 faithfulness에 초점을 두었지만, 우리의 QA방식 평가 지표는 2개의 text사이의 semantic comparison에도 적용될 수 있다.</p>
<h4 id="automated-evaluation-for-nlg">Automated evaluation for NLG</h4>
<p>자동화된 NLG 평가는 텍스트의 깊은 이해를 요구하기 때문에 어렵다. reference text를 이용한 word overlap기반의 평가지표가 흔히 사용되지만, 이는 human judgement와 잘 맞지 않는다(상관관계가 떨어진다)고 알려져 있다. 최근에, 많은 논문들이 discriminator, entailment models, information extraction, question answering를 사용한 모델 기반 평가에 초점을 두고 있다.</p>
<h3 id="6-concolusion">6 Concolusion</h3>
<p>우리는 신경망 생성 요약에서의 faithfulness문제를 조사하고, 요약의 faithfulness를 평가하기 위해 QA기반의 평가지표를 제안하였다. abstractiveness와 faithfulness사이의 내재적인 trade-off로 현재 모델들이 고통받고 있다는 것을 볼 수 있었다. 모델들은 중요한 원문 콘텐츠를 복사하는덴 능숙하지만 더 추상적인 문장을 생성할 때 관련 없는 구간을 연결하고 세부 내용을 착각(hallucination)하는 경향이 있다. 새로운 inductive bias 또는 추가적인 supervision이 신뢰성 있는 모델을 학습하기 위해 필요하다. human judgment와 높은 상관관계를 가지는 우리의 QA기반 평가지표는 모델을 발전시키는데에 유용하다. 하지만 이는 QA모델의 성능에 달려있다. 최종적인 평가는 여전히 human annotation이나 human-in-the-loop방법에 의존한다는 한계가 있다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Characterizing the Efficiency vs. Accuracy Trade-off for
Long-Context NLP Models]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Characterizing-the-Efficiency-vs.-Accuracy-Trade-off-forLong-Context-NLP-Models</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Characterizing-the-Efficiency-vs.-Accuracy-Trade-off-forLong-Context-NLP-Models</guid>
            <pubDate>Mon, 25 Apr 2022 01:57:04 GMT</pubDate>
            <description><![CDATA[<p>**그림은 논문과 무관합니다.</p>
<p>본 논문은 2022 ACL에 실린 논문입니다. 긴 시퀀스를 받는 언어 모델을 만드는 것이 정말 정확도와 효율적인 측면에서 맞는 일인가?에 관한 observation paper입니다. 이 논문은 읽기 전에 longformer, bigbird, summarization task, QA task에 대한 사전 지식이 있으면 이해하기 좋습니다.</p>
<h3 id="abstract">Abstract</h3>
<ul>
<li>긴 텍스트를 다루는 NLP의 다양한 응용으로, 더 긴 input sequences를 다룰 수 있는 모델의 정확도를 측정하는 벤치마크들이 부상. </li>
<li>하지만, <strong>이러한 벤치마크들인 input size 또는 model size가 달라짐에 따라 정확도, 속도 그리고 전력 소비 사이의 trade-off는 고려하지 않음.</strong> </li>
</ul>
<p>본 논문에선, 널리 사용되는 긴 시퀀스의 모델 Longformer-Encoder-Decoder(LED)와 BigBird에 대해 SCROLLS 벤치마크로부터 4가지 데이터셋에 대해 fine-tuing과 inference를 하며 정확도 대 효율성 trade-off에 관한 구조적 연구를 진행. </p>
<ul>
<li>4개의 시퀀스 길이(1024, 2048, 3072, 4096)과 2개의 모델 크기(base, large)에 대해 비교</li>
</ul>
<p>실험 결과는 다음과 같다.</p>
<ul>
<li>LED가 BigBird보다 낮은 전력 + 뛰어난 성능을 달성했다. </li>
<li><strong>요약에서, 우리는 모델의 크기를 늘리는 것이 시퀀스의 길이를 늘리는 것보다 정확도 측면에서 더 효율적</strong> (그러나, inference speed가 크게 떨어짐)</li>
<li><strong>QA에서, 한정된 자원에서 학습 배치 크기가 더 커지기 때문에 큰 모델보다 작은 모델이 효율적이면서 더 정확함</strong></li>
</ul>
<h3 id="1-intrduction">1 Intrduction</h3>
<p>Green AI를 시작으로, 연구자에게 에너지와 계산 효율을 고려하는 것이 요구되었다. 그러나 아직까지 efficiency metric이 LRA, SCROLLS 와 같은 제안된 벤치마크들과 통합되지 못했다. </p>
<ul>
<li>이러한 벤치마크들은 트랜스포머 모델들을 정확도 관점에서만 비교</li>
<li>그러나, 향상된 정확도가 모델 크기를 키우거나 입력 시퀀스의 길이를 늘려서 달성된 것일 경우, 이에 따른 에너지 비용은 명확하지 X </li>
<li>속도 측면에서의 모델 효율성의 이전 특징들은(in LRA) 오직 inter-model comparisons(e.g. model size, input length)만 집중한다. </li>
</ul>
<p>그래서 본 논문에서는 정확도와 효율성의 트레이드 오프가 하이퍼파라미터를 선택할 때 모델 내 비교에도 영향을 미친다고 주장한다. </p>
<p>본 논문에서, 우리는 널리 사용되는 long-context NLP models - BidBird와 LED에 대해 효율성과 정확도의 트레이드오프에 관한 연구를 수행하였다. </p>
<ul>
<li>우리는 효율성을 몇가지 지표(학습 시 소요되는 에너지 소비량, 학습 속도, inference 속도, 전력 효율)를 사용해 특성을 나타냈다. </li>
<li>우리는 4개의 다른 입력 시퀀스 길이와 2가지 다른 모델 크기에 대해 이 모델들을 비교한다.</li>
</ul>
<p>실험한 결과는 다음과 같다.</p>
<ul>
<li>전체적으로, 요약에선, 우리는 모델의 크기를 늘리는 것이 정확도를 높이는 측면에서 더 효율적이라는 사실을 밝혀냈다. </li>
<li>하지만 inference 속도가 효율성에서 주된 관심사라면, 더 작은 모델이 낫다. </li>
<li>QA에선 우리는 더 작은 모델일수록 학습 시 배치 크기가 커지기 때문에 효율성과 정확도의 측면 모두에서 더 낫다는 것을 알았다.</li>
</ul>
<h3 id="2-background">2 Background</h3>
<h3 id="21-nlp-benchmarks">2.1 NLP Benchmarks</h3>
<p>SuperGLUE와 SQuAd와 같은 벤치마크들은 NLP모델의 발전에서 중요한 기반이 되어왔다. 그러나 이러한 벤치마크들은 많은 NLP task(요약, QA..)의 관심사가 긴 문장을 받는 것임에도 불구하고 <strong>짧은 문장에 대한 모델의 성능만 포착</strong>한다. </p>
<p>최근에, 여러 효율적인 트랜스포머 모델들은 입력 길이에 대해 sub-quadratic($O(n^2)$) memory와 time complexity가 요구된다는 것이 밝혀졌다. 
==&gt; 결과적으로, <strong>새로운 표준화된 벤치마크들은 특히 긴 시퀀스를 이러한 모델이 모델링할 수 있냐(수용력)에 대해 초점</strong>을 맞춰왔다.(Long Range Arena(LRA), SCROLLS)</p>
<p>LRA가 긴 시퀀스의 모델을 평가하지만, 이 평가지표는 오직 byte tokenize를 통해 인종적으로 입력 길이를 연장한 2가지 언어의 데이터셋만 포함하고 있다. 또한, LRA는 다른 하이퍼파라미터는 무시한 채 다른 모델 아키텍처들의 속도만 비교한다.</p>
<p>한편, SCROLLS 벤치마크는 요약, QA, 분류를 포함한 긴 길이의 시퀀스에서부터 자연스럽게 합성한 정보(synthesizing information)을 요구하는 언어 태스크에 초점을 두고 있다. 우리의 분석에서, 우리는 SCROLLS에서부터 3개의 요약 태스크와 1개의 QA 태스크를 활용한다.</p>
<h3 id="22-energy-considerations">2.2 Energy Considerations</h3>
<p>딥러닝 모델이 늘어나는 수요를 충족시키기 위해 더 복잡해짐에 따라, 모델을 실행시키기 위한 계산량은 점진적으로 큰 energy cost를 만들어낸다.
==&gt; 이는 SOTA를 유지하면서도 더 높은 에너지 효율을 요구하는 Green AI 관점을 이끌었다. </p>
<p>AI 성능과 에너지 효율의 벤치마크는 학습 동안 가속되었지만, 오직 2-layer LSTM과 vailla Transformers에 대해서만 테스트되었다. </p>
<ul>
<li>HULK는 pre-training, fine-tuning, inference동안 서너개의 Transformer 모델(BERT, RoBERTa)의 에너지 효율을 평가하는 NLP dataset</li>
<li>하지만 긴 입력 길이를 가진 모델은 고려하지 않음</li>
</ul>
<p>추가적으로, 에너지 효울과 정확도 모두에 대해서 다양한 시퀀스 길이의 효과를 고려하는 벤치마크는 없다. 그러나 우리는 <strong>HULK로부터 관찰에서 모델의 사이즈가 커지는 것이 항상 낮은 효율을 암시하지 않는다는 것을 확인</strong>했다.</p>
<h3 id="3-methodology">3 Methodology</h3>
<p>우리의 주된 contribution은 긴 길이의 트랜스포머 모델들이 fine-tuing하고 inference하는 동안 시퀀스의 길이가 정확도, 전력, 속도 사이의 trade-off에 얼마나 많은 영향을 끼치는지에 대한 분석이다. </p>
<p>우리의 초점이 긴 길이의 NLP task에 있기 때문에, 우리는 다음 4개의 입력 시퀀스 길이에 대해 조사했다 : 1024, 2048, 3072, 4096</p>
<h3 id="31-datasets">3.1 Datasets</h3>
<p>우리는 SCROLLS 벤치마크에서 4개의 데이터셋에 대한 분석을 실행 : GovRepert, SummScreenFD, QM-Sum, Qasper. </p>
<p>이러한 데이터셋은 2개의 태스크를 포괄한다 : 요약과 QA. </p>
<ul>
<li>GovReport : U.S. Government Accountability Office(GAO) and Congressional Research Service(CRS)에서 출간된 보고서로 구성된 요약 데이터셋</li>
<li>SummScreenFD : 에피소드의 스크립트가 주어졌을 때, TV 에피소드의 요약을 생성하는 것을 목표로 하는 요약 데이터셋 </li>
<li>QMSum : 다양한 학술 미팅, 산업 제품 미팅, 공공 정책 미팅과 같은 다양한 회의록으로 구성된 query기반 요약 데이터셋</li>
<li>Qasper : SCORC(Semantic Scholar Open Research Corpus)에서의 NLP 논문에 대한 QA데이터셋. 논문의 제목과 초록이 주어졌을 때, 모델이 논문에 대한 질문에 답을 생성할 수 있어야 함.</li>
</ul>
<p>이러한 데이터셋에 대한 요약과 세부 내역을 Table 1과 Appendix A에 있음. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/f4e37c55-7336-4b4b-b5c7-066232e196e1/image.png" alt=""></p>
<h3 id="32-models">3.2 Models</h3>
<p>우리는 pre-trained model로 시작하고, 우리의 분석은 fine-tuning과 inference로 제한했다. 우리의 태스크가 sequence-to-sequence format을 채택하기 때문에, 우리는 긴 길이의 NLP에 대해 널리 사용되는 2개의 encoder-decoder model를 선택했다 - Longformer-Encoder-Decoder(LED)와 Big Bird. 전형적인 사용 방법을 따라하기 위해, 우리는 HuggingFace library에서 2개의 사전 학습된 모델을 얻었다. - 그러므로 우리의 분석은 어느 HuggingFace model에 대해서도 쉽게 확장 될 수 있다.</p>
<h4 id="longformer-encoder-decoderled">Longformer-Encoder-Decoder(LED)</h4>
<p>우리는 원래 논문에서 나온 LED의 base와 large버전 모두를 분석했다. LED model의 버전은  Longformer-chunks 구현을 활용한다. 이는 한 번의 행렬곱 연산만 필요하도록 키 및 쿼리 행렬을 chunk하여 더 높은 메모리 비용으로 높은 계산 효율성을 달성한다.</p>
<h4 id="bigbird">BigBird</h4>
<p>원래 BigBird 논문에서의 encode-decoder setup을 따라, 우리는 PubMed 데이터셋(Pegasus-large에서 시작)에 대해 사전 학습된 BigBird-large버전을 활용했다. 우리는 오직 large viersion에 대해서만 실험을 실행했다.(base는 HuggingFace에 발매 안됨)</p>
<h3 id="33-hardware-resources-provisioned">3.3 Hardware Resources Provisioned</h3>
<p>LED-base 모델에 대한 우리의 초기 연구는 <strong>QA에선 높은 정확도를 얻기 위해 큰 배치 사이즈는 필수적이다, 하지만 요약은 그보다 덜하다는 것을 제안(Table 2)</strong>.
<img src="https://velog.velcdn.com/images/lm_minjin/post/35ece391-3ef6-4693-b504-735fc9794a10/image.png" alt=""></p>
<ul>
<li>Qasper(QA)에 대해 배치 사이즈를 x4 하는 것(gradient accumulation step size를 4로 함)은 입력 시퀀스 길이에 상관없이 2에서 4 point만큼 오름</li>
<li>입력 시퀀스 길이 1024를 예로 들면, 우리는 한 GPU에 24배치를 fitting할 수 있었다.(fine-tuning시 oom에 고통받지 않고, 17.68달성) - 배치 사이즈를 96으로 늘렸을 때, 모델의 정확도는 21.39로 증가</li>
<li>더 많은 GPU를 사용해 배치사이즈를 키웠을 때 F1 점수는 4에서 7%point 정도 증가</li>
<li>같은 트렌드가 Qasper dataset에 대해서 입력 길이에 관해서도 유지됨</li>
<li>배치사이즈를 4배씩 키우는 것은 GovReport 요약 데이터셋에선 무시할만한 Rouge scores점수를 만들었다(GPU 여러개 쓰는 것도 별 영향 없음).</li>
</ul>
<p>이렇게 알려진 초기 실험에서 요약 태스크에 대해 fine-tuning과 inference하는 데에 GPU숫자가 accuracy에 긍정적인 영향을 끼치지 않다는 것을 바탕으로 Nvidia RTX A6000 GPU 1대로 자원을 고정하였다. </p>
<p>대신에, QA 태스크에서는 배치가 커질수록 모델 accuracy가 높아졌기 때문에, 8대의 Nvidia RTX A6000 GPU를 사용했다.</p>
<h3 id="34-fine-tuning">3.4 Fine-tuning</h3>
<p>3.2에서 언급된 모든 사전 학습 모델들은 수렴할 때 까지 모든 데이터셋에 대해 mixed preicision 또는 gradient checkpointing없이 fine-tuned되었다. </p>
<ul>
<li>한 모델은 accuracy가 같거나 3 validation call에 대해 더 나빠졌을 때 수렴했다. </li>
<li>우리는 요약의 경우 500 steps마다, QA의 경우 10 steps마다  validation을 수행했고, 모델은 지표가 계속 같거나 요약은 1500steps, QA는 30 step에 대해 나빠졌을 경우 수렴했다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/9013bbea-69a0-4da3-920f-33c9975c0a53/image.png" alt=""></li>
</ul>
<p>하이퍼파라미터 관점에서, 우리는 SCROLLS벤치마크에서 batch size를 제외한 LED-base model에 대해 같은 파라미터를 적용했다. </p>
<ul>
<li>메모리로 인한 효과를 통제하기 위해, 48GB A6000 GPU에 fit할 수 있는 가장 큰 배치사이즈 선택.  </li>
<li>QA태스크에서, 그 배치 크기는 각각의 8GPUs가 최대화 되는 미니 배치를 보고 결정됨. </li>
<li>QA에서 각각의 미니배치의 효율적인 크기를 더욱 늘리기 위해서, 우리는 4번마다 accumulation steps를 세팅함. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/a2376b10-98d0-4b63-85d4-5f5fda490756/image.png" alt="">
하이퍼파라미터에 대한 더 자세한 정보는 Appendix B에 기술되어 있다.</li>
</ul>
<p>(배치를 다 다르게 하면 비교를 어떻게.. LED-large랑 BigBird-large는 배치가 같아야 비교가 되는게 아닌가? 라는 의문이 있음)</p>
<h3 id="35-inference">3.5 Inference</h3>
<p>우리는 SCROLLS의 테스트셋에서 label을 사용하지 않았기 때문에, inference는 validation set에 대해서만 실행됬다. 모든 inference는 배치 크기를 16으로 두고 실행됨.</p>
<h3 id="36-evaluation-criteria">3.6 Evaluation Criteria</h3>
<h4 id="accuracy">Accuracy</h4>
<p>각 데이터셋에 대해 모델의 정확도에 대한 우리의 평가 지표는 SCROLLS 논문에서 언급된 것을 따른다. </p>
<ul>
<li>GovReport, Summ-ScreenFd, QMSum은 ROUGE를 사용</li>
<li>Qasper은 predicted와 ground-truth answer strings에 대해 normalizing후 token-level의 F1 score를 사용</li>
</ul>
<p>*SCROLLS에 따르면 ROUGE는 각 단일값으로 제공되는 다른 종류의 rouge(Rouge-1, Rouge-2, Rouge-L)를 기하 평균 냄. </p>
<h4 id="eficiency">Eficiency</h4>
<p>각 효율성 지표에 대해서, 우리는 학습시 </p>
<ul>
<li>전력 효율성(number of samples trained per second per Watt)</li>
<li>전체 학습 에너지 요구량(average x training time)</li>
<li>학습 속도(number of samples trained per second)</li>
<li>inference 속도(number of samples inferenced per second)
를 측정한다. </li>
</ul>
<p>학습과 inference 속도는 HuggingFace 라이브러리에 의해, 전력 효율성과 전체 에너지 소비량은 Weights and Biases tool(wandb)에 의해 제공된다.</p>
<p>머신러닝 플랫폼에서 사용되는 중요한 산업 표준 지표중 하나이기 때문에, 우리는 전력 효율성을 우리의 지표중 하나로 선택했다. 클라우드 제공자들은 보통 40-50%의 비용을 전기 뿐만 아니라 서버를 powering and cooling하는데 사용하고, 이 비용은 더 늘어나고 있다. 그러므로, 전력 사용의 유용성을 최대화하는 것(watt당 처리되는 데이터의 수를 늘리는 것)은 NLP 연구에서 탄소 발자국을 줄이는데에 중요하다.</p>
<h3 id="4-results">4 Results</h3>
<h4 id="41-summarization-datasets">4.1 Summarization Datasets</h4>
<p>Figure 1은 각 요약 데이터셋 대 이에 상응하는 1024부터 4096까지의 입력 시퀀스 길이에 대한 학습 accuracy를 묘사하고 있다. 다음과 같은 관찰을 할 수 있다. </p>
<ol>
<li>전력 효율성은 입력 시퀀스 길이와 음의 상관관계를 가진다</li>
<li>BigBird-large는 LED-large와 유사한 전력 효율성을 보지만, BigBird의 rouge 점수가 훨씬 낮다.
==&gt; 즉, 요약 태스크를 학습시킬 때 LED를 선택하는게 더 낫다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/c6a164a3-e190-46cb-857b-c1f9d82f047d/image.png" alt=""></li>
</ol>
<p>Figure2는 3가지 요약 데이터셋 각각을 학습하는데 드는 전체 에너지 소비량을 보여준다. </p>
<ul>
<li>GovRepert와 QMSum에 대해서 LED-large, input 1024가 더 긴 길이의 LED-base모델보다 더 효율적이고 높은 accuracy를 보임 </li>
<li>LED-large의 입력 시퀀스 길이를 늘리는 것은 정확도가 증가하고, 동시에 LED-base 모델의 길이를 늘리는 것보단 더 효율적</li>
<li>우리는 BigBird가 에너지는 더 사용하면서 rouge는 낮다는 것을 알 수 있었음.</li>
</ul>
<p><strong>요약에서 이는 짧은 길이를 가지는 더 큰 모델을 사용하는 것이 더 높은 정확도를 얻으면서 에너지 친화적인 방법</strong>이다. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/d3897616-242a-4b29-9dc5-95ac3a7f3606/image.png" alt=""></p>
<p>요약 데이터셋에 대한 학습 속도(Figure 3)과 inference 속도(Figure 4)는 유사한 경향을 보인다. </p>
<ul>
<li><strong>입력 시퀀스 길이가 늘어남에 따라</strong>, 이러한 효율적인 트랜스포머 모델에 사용된 attention mechanism에서 나타나는 sub-quadratic runtime complexity로 인해 <strong>학습 및 추론 속도가 감소한다.</strong> </li>
<li>학습 시 에너지와 달리, <strong>추론 속도는 모델의 크기가 더 작을수록, 정확도가 낮아질수록 빨라진다.</strong> 그러나 종종 짧은 입력 길이(1024) + LED-large 보다 긴 입력 길이(2048) + LED-base모델이 유사한 정확도를 얻기도 한다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/8e94d7af-b76a-47b9-abb3-636515a73cd3/image.png" alt="">
<img src="https://velog.velcdn.com/images/lm_minjin/post/0e1e13d4-e7da-488f-ae46-c67c822b1e2f/image.png" alt=""></li>
</ul>
<h3 id="42-qasper-dataset-and-scaling-up-resources">4.2 Qasper Dataset and Scaling Up Resources</h3>
<p>Figure 5는 Qasper QA task에 대해 4개의 효율성 지표를 보여준다. </p>
<ul>
<li>LED model이 BigBird보다 전반적으로 F1 score가 높음</li>
<li>한정된 적은 자원에서, LED-base가 LED-large보다 더 뛰어남(배치 크기 때문인걸로 추정)</li>
</ul>
<p>즉, 이 태스크에선 작은 모델을 사용하는 것이 효율적이고 더 정확하다!</p>
<p>입력 시퀀스 길이를 늘리는 것은 정확도에서는 작은 증가를 가져왔지만, 학습 에너지에선 많은 비용을, 속도 측면에서도 훨씬 느려지는 단점을 보였다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/e1bce3c8-47e8-4a07-aaa1-828a78fde0b3/image.png" alt=""></p>
<h3 id="43-energy-consumption-deep-dive">4.3 Energy Consumption Deep Dive</h3>
<p>하드웨어 플랫폼의 에너지 소비를 이해하기 위해, 우리는 GovReport 데이터셋에 대한 더 깊은 분석을 제시한다. 우리는 GPU 활용 정도(average over the entire training run), GPU 메모리 사용(average over the entire training run), 그리고 학습 시간(in seconds)를 Figure 6에 그래프로 표현했다. 
<img src="https://velog.velcdn.com/images/lm_minjin/post/799a10fc-7fa4-461a-a561-0cd00aa92f4e/image.png" alt=""></p>
<ul>
<li>GPU 활용 정도는 LED모델이 높음</li>
<li>BigBird의 경우 input sequence가 4096일 때 GPU 활용 정도가 가장 낮음
==&gt; GPU 활용 정도가 낮아서 에너지 비용 자체는 낮지만, 학습하는데 시간이 매우 오래 걸림(4096, large기준 LED보다 거의 4배 차이가 남)</li>
<li>일반적으로 GPU에 대한 학습 시간은 전체 에너지 소비와 유사한 경향을 보임</li>
</ul>
<h3 id="5-conclusion">5 Conclusion</h3>
<p>우리는 accuracy vs efficiency trade-off에 대한 구조적인 연구를 제시했다. NLP 벤치마크에서 흔하게 사용되는 모델 구조들을 비교했고, 우리는 4개의 다른 시퀀스 길이와 2개의 모델 크기에 따라 모델을 비교하는데 초점을 두었다. 우리는 실무자들이 제한된 자원 환경에서 하이퍼파라미터를 선택하는데 활용될 수 있기 희망하면서 몇가지 키포인트를 강조했다.</p>
<ul>
<li>긴 길이를 갖는 것보다 큰 모델을 사용하는데 에너지 효율도 좋고 요약 태스크에서 정확도도 높다.(추론 속도는 관심사가 아닐 때)</li>
<li>QA에선 작은 모델에 긴 길이의 시퀀스를 활용하는 것이 더 높은 효율과 정확도를 보였다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] The Factual Inconsistency Problem in Abstractive Text Summarization: A Survey]]></title>
            <link>https://velog.io/@lm_minjin/The-Factual-Inconsistency-Problem-in-Abstractive-Text-Summarization-A-Survey</link>
            <guid>https://velog.io/@lm_minjin/The-Factual-Inconsistency-Problem-in-Abstractive-Text-Summarization-A-Survey</guid>
            <pubDate>Wed, 20 Apr 2022 07:39:54 GMT</pubDate>
            <description><![CDATA[<h2 id="abstract">Abstract</h2>
<p>현재 다양한 신경망 인코더 디코더 모델이 생성 요약 분야에서 좋은 모습을 보이고 있다. 하지만 신경망 모델의 생성 요약 능력은 양날의 검과 같다. 생성 요약의 흔한 문제 중 하나는 원문의 factual information을 왜곡하거나 생성하는 것이다. 이러한 원문과 요약문 사이의 inconsistency문제는 여러 응용 분야에서 우려하고 있고, 이전의 생성 요약 평가 지표들은 이러한 문제에 적합하지 않다. 위의 문제를 해결하기위해 현재 연구 방향은 크게 2가지 방향으로 나뉘어 있다. 하나는 factual inconsistency error없이 output을 선택하도록 fact-aware evalutation metrics를 설계하는 것이고, 다른 하나는  factual consistency를 유지하는 새로운 요약 시스템을 개발하는 것이다. 이번 서베이에서, 우리는 fact에 특화된 평과 방법과 요약 모델을 포괄적으로 리뷰하는데 집중하고 있다.</p>
<h2 id="introduction">Introduction</h2>
<p>문서 요약은 NLP에서 가장 중요하면서 어려운 태스크 중 하나다. 문서 요약은 원문에서 중요한 정보를 포함한 짧을 버전으로 텍스트를 농축시키는 것이다. 문서 요약은 크게 2가지 방법으로 나뉜다 : extraticve(추출), abstractive(생성)</p>
<p>extractive summarization은 퉁계적 특성을 고려하고 요약을 만드는 추출된 문장을 정렬해 텍스트에서 중요한 문장을 찾는 것이다. abstractive summarization은 새로운 단어를 사용하거나 rephrasing해 새로운 문정을 생성하면서 요약을 만드는 방법이다.</p>
<p>현재의 생성 요약 모델은 유창하고 사람이 읽을 수 있는 요약을 만들 수 있지만, factual inconsistency error를 생성하는 경향이 높다. 즉, 생성이 종종 원문의 사실을 왜곡하거나 조작하는 현상을 의미한다. 최근 연구에 따르면, 생성 요약의 30% 정도까지는 이러한 factual inconcsistencies를 포함한다고 밝혔다. 이는 생성 요약 시스템의 신뢰와 사용 가능성에 심각한 문제를 가져온다.</p>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/e54efc97-ac4c-4963-ac9d-23cd8ffeb359/image.png" alt=""></p>
<p>위의 그림을 살펴보면, &quot;magnitude-4.8 earthquake&quot;는 &quot;powerful quake&quot;로 강조되었고, 사회적으로 역효과를 낼 수 있다.</p>
<p>다른 한 편, 현존하는 대부분의 요약 평과 방법은 생성 요약과 사람이 쓴 reference 요약 사이에 N-gram overlap를 계산한다(fact-level consistency는 무시한 채). 예를 들어, &quot;I am having vacation in Hawaii&quot;와 &quot;I am not having vacation in Hawaii&quot;는 거의 모든 unigram과 bigram을 공유하지만, 반대의 의미를 지니고 있다.</p>
<p>이런 factual inconsistency issue를 다루기 위해, 많은 automatic factual consistency evaluation metrics과  meta-evaluation for these metrics이 제안되었다. 게다가, 요약 시스템에 factual consistency를 최적화 하기 위해 많은 노력이 들어갔다. 우리는 factual consistency evalutaion과 factual consistency optimazation method의 개론을 제공함으로써 factual inconsistency문제에 초점을 맞춰보고자 한다.</p>
<h2 id="background">Background</h2>
<h3 id="21-abtractive-summarizatoin-methods">2.1 Abtractive Summarizatoin methods</h3>
<p>진부한 생성 요약 방법은 보통 원문에서 몇몇 키워드를 뽑아내고, 키워드에 대해 정렬 및 언어적 변형을 수행한다. 그러나 이전 paraphrase기반 생성 방법은 유창한 문장을 쉽게 생성한다.</p>
<p>Nallapati 외[2016]은 처음으로 RNN을 사용해 원문을 단어 벡터의 시퀀스로 인코드, 다른 RNN을 사용해 단어 시퀀스를 생성해내는 방법을 제안했다. encoder와 decoder는 CNN과 Transformer으로도 만들어질 수 있다. 신경망 문서 생성을 기반으로 하는 시퀀스 투 시퀀스의 디코더는 conditional language model이고, 이는 읽을 수 있고 유창한 텍스트를 생성해낸다. 하지만 대부분의 요약 시스템은 단어 수준에서 reference summary의 log-likelihood를 최대화하는 방식으로 학습된다. 이는 모델이 충실성에 대해선 보상을 주지 않는다.</p>
<h3 id="22-factual-inconsistency-error">2.2 Factual Inconsistency Error</h3>
<p>Factual inconsistency error는 크게 2가지로 나뉠 수 있다.</p>
<ul>
<li>Intrinsic Error : 원문에 반대되는 사실. 예를 들어서, &quot;central&quot;인데 &quot;north&quot;라고 하는 경우</li>
<li>Extrinsic Error : 원문에 중립적인(neutral) 사실. 예를 들어서 &quot;적어도 7명의 사람들이 죽고 100명 이상이 부상을 당했다&quot;와 같은 말은 원문에는 없었던 문장이다.</li>
</ul>
<p>현존하는 fatual consistency optimization 방법은 주로 intrinsic error에 초점을 두고 있다. 그리고 이 2가지 분류는 factual consistency evaluation metrics에선 구별되지 않는다.</p>
<h3 id="3-factual-consistency-metrics">3 Factual Consistency Metrics</h3>
<p><img src="https://velog.velcdn.com/images/lm_minjin/post/9dfdf6a2-7213-464d-b6ff-1595b63415d7/image.png" alt=""></p>
<p>우리는 factual consistency metrics를 2가지로 나눈다. 하나는 Unsupervised metrics(Treple-based, Textual entailment-based, QA-based ..), 다른 하나는 Weakly supervised metrics이다. 또한 이러한 factual consistency metrics를 서로 비교하기 위해 Meta-evaluations이 부상하였다. 여기선 2가지의 meta-evaluation을 소개한다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/f3dfca5c-4aeb-4476-88a0-647dc1ed69c2/image.png" alt=""></p>
<h3 id="31-unsupervised-metrics">3.1 Unsupervised Metrics</h3>
<h4 id="triple-based">Triple-based</h4>
<p>factual consistency를 평가하는 가장 직관적인 방법은 생성된 요약과 원문 사이의 overlap되는 fact를 세는 것이다.  아래 그림과 같이 fact는 보통 relation triples(subject, relation, object)로 나타난다(여기서 subject는 object에 대한 관계를 나타낸다). 
<img src="https://velog.velcdn.com/images/lm_minjin/post/94d55937-7e90-46a6-874b-9296ba187843/image.png" alt=""></p>
<p>triples를 추출하기 위해, Goodrich 외[2019]는 처음으로 OpenIE tool을 사용하기 시작했다. 하지만, OpenIE는 고정된 스케마 대신 명시되지 않은 스케마(unspecified schema)를 가진 triples를 추출한다. unspecific schema extraction에서, relation은 subject와 object사이의 관계가 텍스트에서 추출된다. fixed schema extraction에서, 관계는 미리 정의된 relation set에서 예측된다(일종의 분류 문제 느낌쓰). Unspecific schema추출은 추출된 triples끼리 비교하기 어렵다. Example 1을 보면 같은 사실을 표현한 2개의 문장에서 서로 다른 triples를 얻어낸다는걸 알 수 있다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/436f1be6-3bfb-49b7-9838-b660844fbc03/image.png" alt=""></p>
<p>이런 문제를 해결하기 위해, Goodrich 등[2019]는 fixed schema를 가진 relation extraction tools을 사용하는 것으로 바꿨다. Example 1,에서 2개의 문장을 고려했을 때, 원문에서 추출하든 요약에서 추출하든, 추출된 triples은 fiexed schema extraction에서 (Hawaii, is the birthplace of, Obama)이다. 이는 triples끼리 비교하기 용이하게 한다.</p>
<h4 id="text-entailment-based">Text-Entailment-based</h4>
<p>factually consistent summary는 원문에 의미적으로 entailed여야 한다는 아이디어에 따라, Falke 외[2019]는 요약에서 factual consistency를 위해 textual entailment prediction tool을 사용하는 것을 제안했다. Textual entailment prediction, NLI는 text P(premise)가 다른 text H(hypothesis)를 entail할 수 있는지를 감지하는 걸 목표로 한다. 그러나, out-of-the-box entailment models는 문서 요약에서 factual consistency evaluation을 대해 바라는 성과를 내지 못했다. 그 이유 중 하나는 NLI dataset에서 summarization dataset으로 도메인이 바뀌었기 떄문이고, 또 다른 이유는 NLI 모델이 높은 entailment확률을 설명하기 위해 lexical overlap과 같은 휴리스틱한 방식에 의존하기 때문이다. 결과적으로 현존하는 NLI모델은 downstream task에서 낮은 일반화를 보인다.</p>
<p>NLI모델을 좀 더 일반화하게 만들기 위해, Mishra 외[2020]dms NLI datasets과 downstream task사이에 주요한 차이를 premise의 길이로 봤다. 자세히 말하자먼, 대부분의 NLI dataset은 하나 또는 소수의 문장을 premise로 고려한다. 그러나 요약과 같은 대부분의 downstream NLP task은 더 긴 문장을 premise로 여기고, 이는 긴 텍스트에 대한 추론을 요한다. 더 긴 텍스트에 대한 추론은 무수한 추가적인 능력(ex. coreference resolution, abductive reasoning)을 요한다. 이 사이의 갭을 메꾸기 위해서, 연구자들은 일반화할 수 있는 NLI model을 학습하기 위핸 긴 premise를 가진 NLI dataset를 만들었다. 이 새로운 NLI dataset으로 학습한 후에, 그 모델은 factual consistency evaluation task에서 상당한 성과를 이룩했다.</p>
<h4 id="qa-based">QA-based</h4>
<p>요약에서 automatic metric에 QA아이디어를 넣어서 Wang과 Drumus등[2020]은 factual consistency evaluation metrics에 기반한 QA, QAGS, FEQA를 제안했다. 이 두 metric은 모두 요약과 원문에 대한 질문을 했을 때, 요약이 원문과 factualy consistent하다면 우리는 유사한 답변을 받을거라는 직관을 기반으로 한다. Figure 4에 설명된 것처럼, 총 3가지 단계로 구성되어 있다. </p>
<p>1) 생성된 요약을 바탕으로 질문 생성(QG) 모델이 요약에 대한 질문 set를 생성한다. 이 때 보통 답은 entity의 이름과 요약에서의 key phases에 관한 것이 된다. 
2) 원문이 주어질 때, QA모델을 사용해서 이 질문에 대해 답을 한다.
3) factual consistency score는 상응하는 답의 유사성에 기반해 계산된다. 
entity-level에서 factual consistency를 계산하기 때문에, 이러한 방법들은 textual-entaiment 기반 모델보다 더 interpretable하다. QG와 QA의 독해 능력이 이 방식의 어느 정도의 성능을 가져온다. 하지만 이러한 방식은 계산 비용이 비싸다.
<img src="https://velog.velcdn.com/images/lm_minjin/post/46b26c06-5b69-4df3-9914-c09949e64584/image.png" alt=""></p>
<h4 id="other-methods">Other Methods</h4>
<p>위의 방법들 외에, 몇 가지 간단하지만 효과적인 방법이 있다. Durmus 등[2020]은 factual consistency를 위한 직관적인 metric을 제안한다. </p>
<ul>
<li>word overlap-based metrics : 요약문과 각 원문의 문장을 하나씩 비교해 겹치는 단어 카운트, 이후 평균 or 최고점 선택<ul>
<li>ROUGE</li>
<li>BLEU</li>
</ul>
</li>
<li>Semantic similarity-based metric<ul>
<li>BERTScore</li>
</ul>
</li>
</ul>
<p>실험해보니, low-level의 생성 요약 데이터셋에서는 word overlap-based metric이 더 좋았고, highly 생성 요약 데이터셋에선 semantic similarity based metric이 더 좋았다.</p>
<p>요약 데이터셋의 abstractiveness는 원문 대비 reference summary가 얼마나 abstract되었는지를 의미한다. 극단적으로, 모든 reference summary가 각 원문에서 바로 추출될 때, 요약 데이터셋이 최소한으로 abstractive하다고 한다.</p>
<h3 id="32-weakly-supervised-metrics">3.2 Weakly Supervised Metrics</h3>
<p>Weakly supervised metrics은 특히 evaluating factual consistency를 위해 모델을 설계한다. 그리고 이러한 모델은 자동적으로 요약 데이터셋에서 생성되는  synthetic data에 대해 학습된다. 평가되는 objects에 따라서, 현존하는 metric들은 크게 3가지 카테고리로 나뉠 수 있다 : sentence-level, entity-level, token-level</p>
<h4 id="sentence-level">Sentence-level</h4>
<p>Kryscinski 외[2020]은 FactCC를 제안했고, 이 모델은 원문이 주어질 때 요약 문장에 대해 factual consistency를 확인한다. FactCC는 pre-trained langauge model BERT를 이진 분류기로 fine-tuning함으로써 구현된다. 그리고 이후에 요약 데이터셋 CNN/DM으로부터 syntectic training data를 자동 생성하는 것을 제안한다. 학습 데이터들은 원문에서 처음에 문장 하나를 샘플링하고, 후에 이를 claims로 refer한다. Claims은 이후 output이 positive 혹은 negative label인 novel sentence가 되는 textual transformation의 집합을 통과한다. positive examples는 의미적으로 불변인 변형(like paraphrasing)에 의해 생성된다. negative examples는 negation과 entity swap과 같은 의미적으로 변하는 변형을 통해 생성된다. FactFF는 원문과 요약문을 input으로 받아서, 요약문에 대한 factual consistency label를 output으로 반환한다. 다른 종류의 factual inconsistency error를 만들면서, 이 방법은 factual consistency evaluation에서 향상된 성과를 거뒀다. 하지만, 이러한 rule-based dataset 구축은 performance bottleneck을 가져온다. 모든 종류의 factual inconsistency error를 만들기는 어렵기 때문이다.</p>
<h4 id="entity-level">Entity-level</h4>
<p>Zhao 외[2020]은 HERMAN을 제안한다. 이는 quantity entities(number, dates, 등)의 factual consistency를 평가하는데 집중한다. HERMAN은 input은 원문과 요약문이고, output은 inconsistent quantity entities를 구성하는 토큰을 가리키는 label sequence인 sequence labeling architecture를 기반으로 한다. 이 HERMAN을 위한 syntectic training data는 자동적으로 요약문 데이터셋인 XSUm에서 생성된다. sampling document sentence를 claims으로 샘플링하는게 아니라, reference summary를 claims으로 사용한다. 그리고 이러한 claims는 positive summaries로 바로 라벨링된다. negative summaries는 positive summaries에서 quantity entities를 교체함으로써 생성된다.</p>
<h4 id="token-level">Token-level</h4>
<p>Zhao 외[2020]은 token-level에 대한 factual consistency 평가 방법을 제안한다. 이는 sentence-level 혹은 entity-level에 비해 더 세밀하고 설명가능하다. 이러한 token-level metric은 pre-trained langauge model을 fine-tuning함으로써 구현된다. Zhoa 외[2020]처럼, reference summaries는 바로 positive examples에 라벨링되고, negative examples는 reference summaries의 부분을 reconstructing함으로써 생성된다. 이러한 방법은 human factual consistency evaluation과 더 높은 상관성을 보인다.</p>
<p>이러한 weakly supervised metrics은 최근에 더 이목을 끌고 있다. 하지만 이 방법들은 여전히 많은 양의 human annotated data(원문, 모델이 생성한 요약문, factual consistency label)가 필요하다는 한계가 있다. 그러나 이러한 데이터를 제작하는 것은 많은 시간과 돈이 든다. 현재 weakly supervised methods는 자동으로 training data를 heuristic을 갖고 생성하지만, 그들은 document sentences 또는 reference summaries를 positive와 negative examples를 생성하는데 사용한다. 그럼에도 불구하고, 둘다 요약 모델에 의해 생성된 요약문과는 다르다. 그래서 현재 모델 기반 방법들이 학습 데이터셋에서 효과를 보여줌에도 불구하고, 현실에서 이를 적용하기엔 매우 제한적이다.</p>
<h3 id="33-meta-evaluation">3.3 Meta Evaluation</h3>
<p>factual consistency metrics에 대한 효과를 증명하기 위해, 대부분의 관련 논문들은 그들의 metric과 human-annotated factual consistency score가 상관성이 높다는 것을 보인다. 그러나, 여러 annotating setting이 다양하기 때문에 각 metric끼리 상관성으로 비교하기엔 여전히 어렵다는 문제가 있다. 다양한 factual consistency metrics의 효과를 측정하기 위해 Gabriel 외[2020], Koto 외[2020]은 요약에서 factual consistency의 meta-evaluation을 실행했다. 그들은 여러 metrics에 의해 얻은 점수와 같은 그룹의 annotator에 의해 측정된 점수 사이의 상관성을 계산함으로써 여러 factual consistency metrics의 질을 평가하였다. 
meta-evaluation을 통해, Koto외[2020]은 semantic similarity-based method(ex. BERTScore)가 XSum과 같은 highly 생성 요약  데이텃셋에서 optimal model parameters을 찾으며 factual consistency evaluation에 대한 SOTA를 도달할 수 있었다고 밝혔다. 그럼에도, human evaluation과 상관성은 0.5이상을 넘지 못한다. 그럼으로 factual consistency evaluation은 여전히 열려있는 문제이다.</p>
<h3 id="4-factual-consistency-optimization">4 Factual Consistency Optimization</h3>
<p>우리는 factul consistency쪽으로 요약 시스템을 optimizing하는 접근법에 대해 개괄적인 시각을 제공한다. 아래 그림과 같이, 우리는 현존하는 methods를 각각의 방법이 기반하고 있는 원리에 따라 크게 4가지 클래스로 나눴다 : fact encode-based, textual entailment-based, post-editing-based, 그리고 이 외 방법.
<img src="https://velog.velcdn.com/images/lm_minjin/post/af7b737f-e13c-470f-88e0-1ec27ea057f7/image.png" alt=""></p>
<h3 id="41-fact-encode-based">4.1 Fact-Encode-based</h3>
<p>factual consistency에 대한 연구 초기에는, 대부분의 연구가 주로 intrinsic factual inconsistency error에 초점을 두고 있었다. Intrinsic factual inconsistency error는 원문의 fact와 틀리게 전한다. 이는 보통 다른 fact에서 의미적인 unit의 cross-combination을 보면 명백하다. 예를 들어, &quot;Jenny likes dancing. Bob likes playing football.&quot;을 &quot;Jenny likes playing football&quot;이라고 하는 경우이다. 이러한 에러의 원인은 모델이 원문에서  fact를 잘못 이해하기 때문이다. 
요약 시스템이 fact를 제대로 옳게 이해하도록 하기 위해, 가장 직관적인 방법은 원문에서의 fact를 외재적으로 모델링하는 것이다. 이 아이디어에 따라, fact encode-based methods는 처음에 원문에서 fact를 추출(보통 relation triples(subject; relation; object))한다. 그리고 나서 이러한 방법들을 추가적으로 요약 모델에 추출한 fact를 encode한다. fact를 encoding하는 방법에 따라, 이러한 방법들은 크게 2가지로 나눌 수 있다 : sequential encode와 graph-based encode</p>
<h4 id="sequential-fact-encode">sequential fact encode</h4>
<p>Cao 외[2018]은 두 개의 RNN encoder와 한 개의 RNN decoder 로 구성된 FTSum을 소개한다. FTSum은 원문의 사실을 &quot;fact description&quot;이라 하는 string으로 concatenate한다. encoder하나는 원문을 encode하고, 또 다른 decoder는 fact description을 encode한다. 이후, decoder가 summary를 요약할 때 두 개의 encoder를 attend한다. 실험 결과는 FTSum이 크게 factual inconsistent error를 줄였음에도 불구하고, FTSum이 모든 fact에서 entities사이의 interaction을 포착하는 것은 어렵다.</p>
<h4 id="graph-based-fact-encode">graph-based fact encode</h4>
<p>이 문제를 해결하기 위해, Zhu 외[2020];Huaning 외[2020]은 원문에서 fact를 knowledge graph로 모델링하는 방법을 제안한다. 트랜스포머 기반의 요약 모델인 FASum(Fact-Aware Summarization)은 각 노드의 표현을 학습하기 위해 graph neural network(GNN)을 사용하고, 이를 요약 모델에 녹인다. FASum과 비교해서, ASGARD(Abstractive Summarization with Graph Augmentation and semantic-driven RewarD)는 output에 대해 semantic understanding을 모델이 습득하도록 mutiple choice cloze reward를 사용한다.
원문에서 fact의 표현을 강화시키는 것에 더해, commonsense knowledge를 합치는 것은 요약 시스템이 fact을 이해하는걸 용이하게 한다. 그러므로, Gunel 외[2019]는 위키데이터에서 commonsence knowledge graph를 구축하기 위해 relation triples를 샘플링한다. 이러한 knowledgd graph에서, 유명한 multi-relational data modeling 방법인 TransE은 entity embedding을 학습하는데 사용된다. 그리고 요약 시스템은 원문을 encoding했을 때 관련 entities의 임베딩을 attend한다. 이런 방법에서, commonsiense knowledge는 요약 시스템으로 통합된다.</p>
<h3 id="42-textual-entailment-based">4.2 Textual-Entailment-based</h3>
<p>factual consistent summary는 의미론적으로 원문에 entail된다는 아이디어에 따라, Li외[2018]은 entailment knowledge를 요약 모델로 통합시키려는 목표를 가진 entailmoent-aware summarization model을 제안한다. 특히, 그들은 entailment-aware encoder와 decoder의 pair를 제안한다. entailment-aware encoder는 요약 생성과 textaul entailment prediction을 학습하는데 사용된다. 그리고 entailment-aware decoder는 Reward Augmented Maximum Likelihood(RAML) training에 의해 구현된다. RAML은 직접 task-specific reward(loss)를 최적화하는 계산적으로 효과적인 방법을 제공한다. 이 모델에서 reward는 생성된 요약의 entailment score이다.</p>
<h3 id="43-post-editing-based">4.3 Post-Editing-based</h3>
<p>위의 두 가지 방법은 모델 구조를 수정해 요약 시스템을 factual consistency쪽으로 최적화한다. 이러한 방법들과 달리, post-editing-based method는 모델이 생성한 요약을 요약의 초고를 보고 fact corrects를 사용해 후처리(post-editing)해 최종 요약의 factual consistency를 강화한다. Fact correctors는 input으로 원문과 요약 초고를 받고, 최종 요약으로 수정된 요약문을 생성한다.
QA sapn selection task에 아이디어를 받아, Dong 외[2020]은 SpanFact를 제안한다. 이는 2개의 span selection-based fact correctors로 구성되고, 이는 반복적으로 entitiy를 수정하거나 auto regressive한 태도로 각각에 대해 entity를 수정한다. fact correcting을 수행하기 전에, 하나 또는 모든 entity(iterative - 1개, auto-regressive - 전체)는 mask된다. 그리고 SpanFact가마스크 토큰에 상응하는 것으로 교체하기 위해  원문에서 spans를 선택한다. SpanFact를 학습하기 위해, 데이터셋을 자동으로 구축한다.
Human evaluation은 SpanFact가 성공적으로 약 26%의 factually inconsistent summaries를 수정하고, 1% 미만의 factually consistent summary를 틀리게 오염시킨다고 밝혔다. 
SpanFact보다 더 간단하게, Cao 외[2020]은 더 많은 종류의 error를 수정할 수 있는 End-to-End fact corrector를 제안한다. 이 End-to-End fact corrector는 pre-trained langauage model BART를 인공 데이터로 fine-tuning함으로써 구현된다. 오염된 요약을 input으로 받고, output은 고쳐진 요약이다. 이 방법이 더 SpanFact보다 개념적으로 더 많은 factually inconsistent error를 수정할 수 있다하더라고, 이는 human envaluation result에서 SpanFact를 넘지 못했다.
Dong 외[2020]과 Cao 외[2020] 둘다 비싼 humman annoation대신 자동으로 인공 데이터를 구축했다. 그러나, 이 학습 단계(which learns to correct the corrupted reference summaries)와 test단계(which aims to corerect the model-generated summaires)의 사이의 갭은 posting-editing-based methos의 성능을 제한한다. 오염된 reference summaries와 모델이 생성한 summaries는 다른 데이터 분포를 가지기 때문이다.</p>
<h3 id="44-other">4.4 Other</h3>
<p>위의 방법과 다르게, 유용하지만 domain-specific한 방법들이 있다.</p>
<ul>
<li>Matsumatu 외[2020]는 모델이 종종 factually inconsistent summary를 만드는 원인으로 unfaithful documment-summary pair에 있다고 봤다. 이러한 문제를 줄이기 위해, 그들은 textaul entailment classifier로 inconsistent training examples를 거르는 방법을 제안한다.</li>
<li>Mao 외[2020]은 inference 단계에서 constraints를 적용하는 방법으로 factual consistency를 향상시켰다. 특히 모든 제약을 충족시켰을 때만 요약 생성이 완료된다. 그리고 제약은 중요한 entities와 keyphrases이다. infer단계 때만 작동하기 때문에 어떤 생성 요약 모델에도 붙일 수 있다는 장점이 있다. 하지만, 이 방법에 의해 factual consistency가 얼마나 향상되었는지랑 어떻게 더 유용한 제약을 설계할지는 아직 연구중이다.</li>
</ul>
<p>뉴스 분야와 비교적 같은 열린 도메일 요약과 비교해, 특정 필드에서 factual consistency쪽으로 최적화하는 방법은 필드 특성에 따라 더 다르다. 의료 분야에서는 radiology reports summarization의 factual consistency를 최적화하는 방법을 제안한다. 또한 e-commerce분야에서도 e-commerce 상품 요약의 factual consistency를 최적화하는 방법을 제안한다.</p>
<h3 id="5-conclusion-and-future-directions">5 Conclusion and Future Directions</h3>
<p>향후 과제로 다음을 제안한다.</p>
<ol>
<li>Optimization for Extrinsic Errors : extrinsic factual inconsistency를 막을 방법</li>
<li>Paragraph-level Metrics : 문단 단위의 평가 지표</li>
<li>Factual Consistency in other Coditional Text Generation : 이미지 캡셔닝이나 비주얼 스토리텔링과 같은 conditional text generation task에서 발생하는 factual inconsistency를 해결할 방법</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Tobigs16] NLP Basic]]></title>
            <link>https://velog.io/@lm_minjin/Tobigs16-NLP-Basic</link>
            <guid>https://velog.io/@lm_minjin/Tobigs16-NLP-Basic</guid>
            <pubDate>Wed, 23 Mar 2022 13:08:56 GMT</pubDate>
            <description><![CDATA[<p>Tobigs16&amp;17기 정규세션에서 사용했던 NLP Basic교안입니다.
Tobigs15기 조효원님의 NLP Basic 강의 내용을 기반으로 내용을 조금 더 추가하는 식으로 정리하였습니다.
<img src="https://images.velog.io/images/lm_minjin/post/39f38151-b612-4765-a530-c242f4bef319/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/1ab70648-ba8c-440b-be8f-0a542f5df401/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/be37967d-264a-4a19-987b-fa7f9e4511be/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/bd92071e-151c-4a05-a478-98bcafd8226b/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/e0098a9a-e5c0-43cd-9214-ef0182e8fd21/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/d61a9851-45fe-4dcf-991a-ce3041a00ae0/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/e552111e-38d3-442f-81ba-3b3489a726a1/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/d904d447-d88f-4939-b3d3-eac8d291d9c4/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/35a7a2d5-6cbe-4fc9-a8bb-5cde8054e1cf/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/286db59a-f697-4d26-8662-c7da58db19f0/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/73e66f84-fde5-406b-aac1-e5cfc3859d2f/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/a6aa3889-3430-4649-8fd9-0a27fceb7ff5/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/bda75ed1-1978-4e12-b88e-13b0e408c870/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/32d31db0-22c2-43d0-9104-2a208a2c8658/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/0ebfc2fb-cddb-487c-b9d8-7ca33e57ea72/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/ef655ae6-853b-41ee-931c-16d2df9ee626/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/39fb6a11-5986-42e4-81a0-67da55545d22/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/bbd98220-de69-4db9-b9fd-6fcce44df21f/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/938a887c-0549-4d50-85f0-e2127110b6b7/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/3a754695-7b23-415c-a770-e22edf3cc7fe/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/642c84c5-1bc6-4452-a326-d9306d6736c6/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/afffcaf4-1417-4b7a-857a-3b61a7431665/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/4dead530-2f9a-41f5-9793-5f81914f7cfc/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/430f8dd4-0d96-404f-9401-b801193bb2eb/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/d1ccd556-5495-4a5d-b68b-7557d0f28483/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/f0c0c364-ab0a-4490-b2c5-3717d11c53bc/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/71671992-f85d-4918-95aa-73189d66f56f/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/f8294f94-8f68-4d1f-8786-f9efdd73fdf7/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/49d25084-2cac-466e-a6ea-d720f88c1982/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/73c4299c-33c6-4d7b-98df-947657c51977/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/eb24c983-5750-45ec-90e6-d500778eb593/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/1ad8841d-d5e5-437f-acc4-df3bed704b19/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/f5b4b52d-d129-4952-86ad-f68145cb6a29/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/67cdc031-b198-449b-abf4-6c6500e90749/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/496662c4-eb54-461b-9477-80256c3c4feb/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/e40f7fa0-9a47-4afc-a6a2-2e8a364078be/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/570cb451-abd2-49be-9d1a-9abaa5d05e52/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/235052a0-4fbf-4694-9393-abe97e961a5f/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/0ad838fd-7ec6-4af1-9b37-62784302999b/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/1455430e-b4c3-4a0f-a2a3-fa33c3ea6118/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/aec1c3f4-bd7f-4cc5-ad7d-e592490b5b34/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/18f1ce07-7ad1-4c6d-a48c-ffb85542b2c1/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/1eee3ac2-f163-4ec1-99c1-b6196cab09ef/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/e0d59cc2-ebb7-4ca7-b51d-abb4f0ac6137/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/03cc45f2-89d5-49d0-b041-1f0aab2f6694/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/54d1c900-d347-42a6-abb8-908b41d302a1/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/e35e8709-6889-489a-af4a-1d068c5b5b20/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/b9be4961-78e4-4c31-84ef-2e34f6832424/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/f5ad957d-be51-4f16-a84c-e8f0d7b088ad/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/e4791333-e04e-4882-ba90-0057fed1da39/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/339eac85-4c04-49e9-8f2c-528ae272552d/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/0aa992e5-2186-4bcc-990b-30eb7b378fcf/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/e7e7d0f7-4060-4ed0-89c0-e4c02f7120ad/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/805c8d2a-836e-4233-8fa8-b2d2f6fce654/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/4d9766bb-5ff0-4e29-b5e6-9cb7f44d8c56/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/48e9102b-a066-4155-846a-5e898f64b356/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/d2ee21a6-e133-4eab-83b7-fbdfd40cfaf1/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/680148cc-4611-49cf-8c73-cbf9a91ac1d8/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/c781b187-9dd1-4a9c-8281-98845991c0ee/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/8c631c7a-dbf0-49b0-8d1f-dedacc808909/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/deefe1a4-e97c-44e7-9b0c-5c9c45d8384b/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/edc08888-93a2-4716-adfc-77b12f6a5e03/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/c030876b-7bf2-4c89-84d0-56e39544d0a0/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/85190357-2c6b-4952-9a42-2b52b97feb5c/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/6da2076e-cbda-4044-b436-93d8af37c531/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/e442a8ce-0dc7-4c39-bbea-9997748243bd/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/5e104338-906b-4140-9f65-b47259103fdc/image.png" alt="">
<img src="https://images.velog.io/images/lm_minjin/post/f5dc9883-8c15-4f0e-85b8-1b5d8e4650ab/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Deep contextualized word representations]]></title>
            <link>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Deep-contextualized-word-representations-feeljyel</link>
            <guid>https://velog.io/@lm_minjin/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Deep-contextualized-word-representations-feeljyel</guid>
            <pubDate>Thu, 17 Feb 2022 03:44:19 GMT</pubDate>
            <description><![CDATA[<p>이번에 리뷰할 논문은 바로 ELMo의 시작, &quot;Deep contextualized word representations(2018)&quot;입니다.</p>
<h3 id="abstract">Abstract</h3>
<p>본 논문에서는 새로운 타입의 <strong>deep contextualized word representation</strong>을 소개하고 있습니다.</p>
<blockquote>
<p><strong>deep contextualized word representation</strong></p>
</blockquote>
<p>1) 단어 사용의 복잡한 특성(syntax and semantic) 
ex. present 단어 뜻 - 선물, 현재 등..
2) 이러한 단어 사용이 언어적 맥락에서 얼마나 다양한지(model polysemy - 모델 다형성(다의성))
를 모델링 한 것!
ex. 문맥에 따라 present의 의미가 달라져야 함. (&quot;Here is your b-day present&quot; vs &quot;Live in present not past&quot;)</p>
<p>본 논문의 word vectors는 대량의 corpus로 사전 학습된 deep biLM의 internal state의 학습된 함수로 표현할 수 있습니다. 이러한 representation은 현재 있는 모델에 쉽게 더해질 수 있고, 이를 다양한 데이터셋에 대해서 실험한 결과 6개의 task에서 SOTA를 달성했습니다.</p>
<h3 id="terminology">Terminology</h3>
<h4 id="lstmlong-short-term-memory">LSTM(Long Short-Term Memory)</h4>
<p>RNN의 vanishing grdient problem을 극복하기 위해 고안된 모델!</p>
<p>LSTM은 RNN의 hidden state에 cell-state를 추가한 구조입니다.
<img src="https://images.velog.io/images/lm_minjin/post/772c85d0-340e-4c6b-90e1-247b348d6853/image.png" alt="">
LSTM의 기본 구조는 다음과 같은데, 기본적인 RNN에 비해 안에 여러 gate가 추가되어 있는 걸 볼 수 있습니다. 이제 gate별로 자세히 살펴보도록 하겠습니다.
$$
f_t = \sigma(W_{xh_f}x_t + W_{hh_f}h_{t-1} + b_{h_f})
$$
$$
i_t = \sigma(W_{xh_i}x_t + W_{hh_i}h_{t-1} + b_{h_i})
$$
$$
o_t = \sigma(W_{xh_o}x_t + W_{hh_o}h_{t-1} + b_{h_o})
$$
$$
g_t = tanh(W_{xh_g}x_t + W_{hh_g}h_{t-1}+b_{h_g})
$$
$$
c_t = f_t \odot c_{t-1} + i_{t} \odot g_t
$$
$$
h_t = o_t \odot tanh(c_t)
$$</p>
<p><strong>forget gate $f_t$</strong></p>
<p>forget gate는 &#39;과거 정보를 잊기 위한&#39; 게이트입니다. $h_{t-1}$과 $x_t$를 받아 시그모이드를 취한 값이 forget gate가 내보내는 값이 됩니다. 시그모이드 함수의 출력 범위는 0부터 1사이이므로, 어떠한 확률값이 나간다고 볼 수 있는데, 그 값이 0이라면 이전 상태의 정보를 다 잊는 것이고, 1이라면 이전 상태의 정보를 온전히 기억하게 됩니다.</p>
<p><strong>Input gate $i_t \odot g_t$</strong>
input gate $$i_t \odot g_t$$는 ‘현재 정보를 기억하기 위한&#39; 게이트입니다. $h_{t−1}$과 $x_t$를 받아 시그모이드를 취하고, 또 같은 입력으로 하이퍼볼릭탄젠트를 취해준 다음 Hadamard product(원소별 곱) 연산을 한 값이 바로 input gate가 내보내는 값이 됩니다.</p>
<p><img src="https://images.velog.io/images/lm_minjin/post/94ac96f6-4b68-4d6e-ae5b-e809d6d7cdca/image.png" alt=""></p>
<p><strong>output gate $o_t$</strong>
output gate $o_t$는 cell state를 바탕으로 필터링 해 output으로 내보내기 위한 게이트입니다. 먼저 $o_t$을 계산하고, 이 후 cell state값에 tanh에 태워 -1에서 사이의 값을 받아 $o_t$와 원소별 곱을 해 원하는 부분만 output으로 내보내게 합니다. (output == hidden state)
<img src="https://images.velog.io/images/lm_minjin/post/d3bc30fb-8f82-4ab0-a60b-0f99e86fed4d/image.png" alt=""></p>
<p>종합하면, </p>
<ul>
<li>forget gate와 직전 cell state값을 원소별 곱하고, input gate값을 더해 현재 cell state값이 산출됨</li>
<li>이후 현재 cell state을 tanh에 태우고, output gate값과 원소별 곱을 해 output 값, 현재의 hidden state값이 산출됨</li>
</ul>
<p><img src="https://images.velog.io/images/lm_minjin/post/f719eea4-063a-4c7c-a48a-93ec2a98b948/image.png" alt=""></p>
<blockquote>
<p>참고자료
<a href="https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/">https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/</a></p>
</blockquote>
<h3 id="1-introduction">1. Introduction</h3>
<p>NLP에서 사전 학습된 word representaion은 key point가 되어 가고 있습니다. 하지만, 높은 퀄리티의 representation을 학습하는건 어려운 일이었습니다. 여기서 높은 퀄리티의 representation이란 1) 단어 사용의 복잡한 특성(syntax와 semantic) 2) 이러한 단어 사용이 언어적 문맥에서 얼마나 다양한지(모델의 다의성)를 이상적으로 모델링한 것입니다.</p>
<p>본 논문에서 주장하는 representation은 각 토큰을 전체 입력 문장의 함수로 표현한다는 점에서 다른 전통적인 word embedding과 다릅니다. 본 논문에선 대량의 코퍼스로 학습된 한쌍의 LM, bi-LSTM에서 파생된 벡터를 사용합니다. 이러한 단어 표현을 <strong>ELMo(Embeddings from Language Models) representation</strong>이라고 합니다.</p>
<p>ELMo는 biLM의 모든 내부 레이어에 대한 함수라는 <strong>deep!</strong>하다고 말할 수 있습니다. 더 구체적으로 말하자면, 각 입력 단어 위에 쌓인 벡터들의 선형 결합을 학습합니다.(마지막 layer만 쓰는 것 보다 좋음 /  각 레이어가 갖고 있는 정보가 다르니까!)
$\rightarrow$ internal state를 합쳐 사용해 풍부한 단어 표현이 가능
<img src="https://images.velog.io/images/lm_minjin/post/0f54bdc1-f97b-4f7c-a557-9b17c258267f/image.png" alt=""></p>
<blockquote>
<p>higher-level의 LSTM state 문맥에 의존한 단어 의미를 포착하고, lower-level의 LSTM state는 syntax 측면의 의미를 포착합니다. 이러한 시그널을 각 end task에 가장 유용하도록 적절히 선택합니다.</p>
</blockquote>
<p><img src="https://images.velog.io/images/lm_minjin/post/95b842d0-dca0-4afc-ac51-c08a0621cff4/image.png" alt=""></p>
<p>ELMo가 실전에서 아주 훌륭한 representation이라는 것을 증명하기 위해, 6가지 task에 대한 기본 모델에 ELMo를 추가하였습니다. 실험 결과, ELMo가 CoVe보다 뛰어났고, 마지막 레이어 하나만 쓰는 것보다 deep representation을 쓰는 것이 더 좋다는 사실을 밝혀냈습니다.</p>
<h3 id="2-related-work">2. Related work</h3>
<p>기존의 사전 학습된 단어 벡터는 syntax &amp; semantic과 같은 정보를 잘 포착하고 있어, 뛰어난 성능을 보였습니다. 하지만 이러한 방법은 오직 각 단어에 대한 하나의 context-independent representation만 생성할 수 있다는 단점이 있었습니다. </p>
<blockquote>
<p>학습 시엔 주변 단어를 고려해 단어가 임베딩되지만, 학습 후 이를 사용할 땐 문맥을 고려하지 않음. 또한 present라는 단어가 사전 학습된 word vector로 표현 되었다고 했을 때, 이것이 현재 문맥에 맞는 의미를 가진(현재 or 선물) 적절한 표현인진 알 수 없음.</p>
</blockquote>
<p>그래서 한 단어를 subword information을 이용해서 다양한 뜻을 표현할 수 있도록 하거나, word sense별로 서로 다른 representation을 생성하는 방법 등을 제안되었습니다. 이번 논문에서 제안하는 방식도 subword information을 character convolution을 통해 단어를 학습하게 됩니다.</p>
<blockquote>
<p><strong>Chracter-Aware Neural Language Models</strong>
<img src="https://images.velog.io/images/lm_minjin/post/d81169d8-8102-45a3-8fbd-2abbc303b16f/image.png" alt="">
각 단어를 character-level로 표현. 각 문자를 벡터로 바꾸고, 문자 벡터들을 concat. concat 후에 CNN 1D를 사용해서, h=2,3,4등이 다양한 크기의 필터를 사용해 subword feature 추출. 이후 이를 concat해서 단어를 나타내는 초기 벡터로 사용.</p>
</blockquote>
<p>다른 최근 연구도 Context-dependent representation 학습에 집중하고 있습니다. Context2vec 은 bidirectional LSTM을 사용해서 중심이 되는 특정한 단어 주변의 문맥을 임베딩하게 됩니다. 다른 연구에서, 문맥에 중심이 되는 단어까지 포함해서 문맥을 임베딩하고 supervised MT의 인코더에 넣어 계산한 CoVe라는 모델도 있었습니다. 하지만 MT는 병렬 코퍼스이기 때문에 크기가 한정되었다는 단점이 있는데, 본 논문에선 풍부한 단일 언어 코퍼스를 사용했습니다.</p>
<p>과거의 연구들도 deep biRNN의 서로 다른 layer은 서로 다른 특성을 임베딩한다는 것을 발견했습니다. 높은 LSTM layer(higher-level)는 문맥에서 단어의 의미를 학습하게 되고, 낮은 layer(lower-level)은 단어의 문법적인 측면(POS 등)을 학습하게 됩니다. ELMo도 이와 같은 시그널이 있었기 때문에, 이들을 잘 섞어 기존의 task에 적용해 사용하면 더 좋은 성능을 보였습니다. 본 연구에선 biLM을 unlabeled data로 사전 학습한 후, 가중치는 고정하고 추가적인 task-specific model capacity를 추가해 비록 task에 대한 데이터가 작더라도 풍부하고 범용적인 biLM representaion을 통해 더 효율적으로 모델을 사용할 수 있게 하였습니다.</p>
<h3 id="3-elmo--embedding-from-language-models">3. ELMo : Embedding from Language Models</h3>
<h4 id="31-bidirectional-language-models">3.1 Bidirectional language models</h4>
<p>$N$개의 토큰이 주어질 때, $(t_1,t_2,...,t_N)$, 한 forward language model은 주어진 과거 $(t_1,t_2,...,t_{k-1})$을 이용해 토큰 $t_k$의 확률을 모델링 해 sequence의 확률을 계산합니다. 이를 식으로 표현하면 다음과 같습니다
$$
p(t_1,t_2,...,t_N) = \prod_{k=1}^Np(t_k|t_1,t_2,...,t_{k-1})
$$</p>
<p>최근의 SOTA neural language model에서는 문맥에 독립적인 token representaion $\mathbf x_k^{LM}$(token embedding 또는 CNN over chacracters)을 계산하고, forward LSTM의 L개의 레이어를 거칩니다. 각 위치 $k$에서, 각 LSTM 레이어는 문맥에 의존적인 표현 $\overrightarrow{\mathbf h^{LM}<em>{k,j}}$
울 산출합니다(j=1,...,L). 가장 상단의 LSTM 레이어의 output $\overrightarrow{\mathbf h^{LM}</em>{k,L}}$은 softmax layer에 태워 다음 token $t_{k+1}$을 예측하는데 사용됩니다.
<img src="https://images.velog.io/images/lm_minjin/post/f244db26-d3de-4d16-b506-9bd122e4257e/image.png" alt=""></p>
<p>backward LM은 forward LM과 유사하게 sequence를 역으로 넣어서 미래 context가 주어질 때 아전 token을 예측하는 방식입니다.
$$
p(t_1,t_2,...,t_N) = \prod_{k=1}^Np(t_k|t_{k+1},t_{k+2},...,t_{N})
$$
이는 forward LM과 유사한 방식으로 실행될 수 있고, L개 레이어의 deep model에서 각 backward LSTM layer $j$은 $(t_{k+1},t_{k+2},...,t_{N})$이 주어질 때   $\overrightarrow{\mathbf h^{LM}_{k,j}}$을 통해 $t_k$을 산출합니다.</p>
<p>이제 이 두 방향을 결합하고 즉, 두 식을 곱한 후에 $t_k$가 위치할 최대 우도(Maximum Likelihood)를 구하면 됩니다.
$$
\prod_{k=1}^Np(t_k|t_1,t_2,...,t_{k-1})  \times \prod_{k=1}^Np(t_k|t_{k+1},t_{k+2},...,t_{N})
$$
위 식에 로그를 취해주면 다음과 같은 식이 나오게 됩니다. 
$$
\sum_{k=1}^{N} (log p(t_k| t_1,...,t_{k-1} ; \Theta_x, \overrightarrow{\Theta}<em>{LSTM}, \Theta_s)) + log p(t_k| t_1,...,t</em>{k-1} ; \Theta_x, \overleftarrow{\Theta}<em>{LSTM}, \Theta_s)))
$$
위 식에서 token representation에서 쓰는 파라미터($\Theta_x$)와 softmax layer에서 사용하는 파라미터($\Theta_s$)는 두 방향 모두에 같은 파라미터가 적용된다. $\Theta</em>{LSTM}$은 각 방향 LSTM층에서 사용되는 파라미터로 방향마다 다른 파라미터가 학습됩니다.</p>
<h4 id="32-elmo">3.2 ELMo</h4>
<p>ELMo는 biLM의 intermediate layer representations의 task specific한 결합(combination)입니다. 각 token $t_k$에 대해 L-layer biLM은 $2L+1$ representations의 집합을 계산합니다.
<img src="https://images.velog.io/images/lm_minjin/post/57b67018-459a-4e63-b68e-3170c0b34e30/image.png" alt=""></p>
<p>$$
R_k = {\mathbf{x}<em>k^{LM}, \overrightarrow{\mathbf{h}}</em>{k,j}^{LM},\overleftarrow{\mathbf{h}}<em>{k,j}^{LM} | j = 1,...,L} = {\mathbf{h}</em>{k,j}^{LM}| j = 0,...,L}
$$
이 때, $\mathbf{h}<em>{k,0}^{LM}$은 token layer이고, 각 biLSTM layer에 대해 $\mathbf{h}</em>{k,j}^{LM} = [\overrightarrow{\mathbf{h}}<em>{k,j}^{LM};\overleftarrow{\mathbf{h}}</em>{k,j}^{LM}]$입니다.</p>
<p>downstream model에서 포함하기 위해, ELMo는 $R$에서 모든 layer를 하나의 벡터로 합칩니다. 이를 $\mathbf{ELMo}<em>k = E(R_k;\Theta_e)$로 표기합니다. 가장 간단한 경우 ELMo는 최상단의 layer를 선택한 것과 같습니다($\mathbf{ELMo}_k = \mathbf{h}</em>{k,L}^{LM}$, TagLM과 CoVe가 이 방법 사용!). 더 일반적으로 우리는 모든 biLM layers에 task specific한 가중치를 계산합니다.
$$
\mathbf{ELMo}<em>k^{task} = E(R_k;\Theta^{task}) = \gamma^{task}\sum</em>{j=0}^{L}s^{task}<em>j \mathbf{h}</em>{k,j}^{LM}
$$
여기서 </p>
<ul>
<li>$s^{task}$는 softmax-normalized weights</li>
<li>$\gamma^{task}$는 scalar parameter
: $\gamma$는 세 벡터를 가중합하여 나온 최종 벡터의 요소를 얼마나 증폭 혹은 감소시킬 것인지에 대한 Scale factor이며 태스크에 따라서 달라지게 됩니다.</li>
<li>각 biLM layer의 activation가 서로 다른 분포를 갖는 것을 고려할 때, 어떤 경우엔 가중치를 부여하기 전에 각 biLM layer에 layer normalization을 적용하는게 도움이 되었다고 합니다.</li>
</ul>
<h4 id="33-using-bilms-for-supervised-nlp-tasks">3.3 Using biLMs for supervised NLP tasks</h4>
<p>사전 학습된 biLM과 target NLP task에 대한 supervised architecture가 주어질 때, task model을 향상시키기 위한 biLM을 사용하는 것은 간단한 프로세스입니다.</p>
<ol>
<li><p>biLM을 실행하고, 각 단어에 대해 모든 layer representations를 기록한다.</p>
</li>
<li><p>end task model이 아래처럼 representations의 선형 결합을 학습한다. </p>
<ul>
<li>대부분의 supervised NLP모델은 가장 하단 레이어의 아키텍처를 공유 $\rightarrow$ 여기에 ELMo 붙이자!</li>
<li>토큰 시퀀스 $(t_1,...,t_N)$이 주어질 때, 사전 학습 word embedding과 선택적으로 character-based representations을 사용해 각 token position에 대한 context-independent token representation $\mathbf x_k$를 형성</li>
<li>이후, 모델은 context-sensitive representation $\mathbf h_k$를 형성하고, 이 때,보통 bidirectional RNNs, CNNs, 또는 feed forward neworks를 사용</li>
</ul>
<p><img src="https://images.velog.io/images/lm_minjin/post/039569af-12b6-4800-a386-6b9c0b4c6750/image.png" alt=""></p>
</li>
</ol>
<p>ELMo를 supervised model에 더하기 위해, 우선 biLM의 가중치를 freeze하고 $\mathbf x_k$와 $\mathbf {ELMo}_k^{task}$ 을 concatenate해서 $[\mathbf x_k;\mathbf {ELMo}_k^{task}]$을 task RNN에 넣습니다. </p>
<p>특정 task(SNLI, SQuAD)에서 ELMo를 task RNN의 output단계에도 포함, $\mathbf h_k$대신 $[\mathbf h_k;\mathbf {ELMo}_k^{task}]$로 바꾸는게 더 좋습니다.</p>
<p>마지막으로 ELMo에 적절한 droput을 추가하는 것이 좋고, 때때로 loss에 $\lambda||w||^2_2$를 더해 ELMo 가중치를 정규화하는게 좋습니다. 이는 모든 biLM레이어의 평균이 가깝도록 ELMo 가중치에 inductive bias를 부과합니다.</p>
<h4 id="34-pre-trained-bidirectional-language-model-architecture">3.4 Pre-trained bidirectional language model architecture</h4>
<p>본 논문에서 pre-trained biLMs는 양방향을 함께 학습하고, LSTM layer사이에 residual connection을 추가하였습니다.</p>
<p>모델 크기에 따른 언어 모델 perplexity와 computational requirements를 조절하기 위해 여기선 단일 최고 모델인 CNN-BIG-LSTM의 모든 embedding과 hidden dimensions을 이등분했습니다. 최종 모델은 L-2 biLSTM layers with 4096 units and 512 dimension preojection과 첫번째에서 두번째 레이어 사이에 residual connection을 추가해 완성했습니다. 결로적으로 biLM은 각 입력 토큰에 대해 representation의 3-layers를 제공합니다(BiLSTM2, CNN1).</p>
<p>또한, 1B Word Benchmark에 대해 10 에폭 학습 후엔, 평균적인 forward와 backward의 perplexities는 39.7을 기록하였습니다.(CNN-BIG-LSTM은 30.0) 일반적으로, forward와 backward perplexities는 근사적으로 동일했고, backward가 아주 조금 더 낮았습니다.</p>
<p>사전학습한 후에 biLM은 어떤 task에 대해서든 representations을 계산할 수 있습니다. 몇몇 경우에서, biLM을 domain specific data에 대해 fine tuning했더니 perplexity는 낮아지고, task performance는 증가한 것을 볼 수 있었습니다. 즉, biLM을 가지고 한 일종의 domain transfer라고 볼 수 있습니다. </p>
<h3 id="4-evaluation--analysis">4. Evaluation &amp; Analysis</h3>
<p>아래는 다양한 태스크에서 ELMo가 보여준 성능을 기록한 것입니다. 몇몇 태스크에 대하여 당시의 SOTA모델보다 좋은 성능을 보였음을 알 수 있습니다.</p>
<ul>
<li><p><strong>Performances</strong>
<img src="https://images.velog.io/images/lm_minjin/post/eb1a5705-d83e-4eb5-ab9a-da7c150ac716/image.png" alt=""></p>
</li>
<li><p><strong>sample efficiency</strong>
<img src="https://images.velog.io/images/lm_minjin/post/ef922324-cb74-4aa2-9249-62196a5c0361/image.png" alt="">
ELMo의 사용은 일정 수준 이상의 성능 달성에 필요한 parameter update 횟수 및 전체 training set size를 획기적으로 줄여줍니다. SRL task에 있어서 ELMo 사용 이전 baseline model의 경우에는 486 epoch가 지나서야 score가 수렴했는데, ELMo를 추가하고 난 뒤에는 10 epoch만에 baseline model의 score를 능가했습니다.</p>
<p>또한 위의 그림을 보면, 같은 크기의 dataset에서 ELMo를 사용하는 경우가 훨씬 더 좋은 성능을 낸다는 것을 보여줍니다. SRL task에서는 학습 데이터셋의 단 1%를 학습했을 때 달성한 수치와 baseline model이 학습데이터셋의 10%를 학습했을 때의 수치가 동일하다는 것을 알 수 있습니다.</p>
</li>
<li><p><strong>visualization of learned weights</strong>
<img src="https://images.velog.io/images/lm_minjin/post/5595d4d1-e0ce-48eb-acd2-26bb7ef39699/image.png" alt="">
위 그림은 softmax-normalized parameter $s_j$를 시각화한 자료입니다. ELMo를 biRNN의 input과 output에 사용했을 때를 각각 나눠서 비교했습니다. ELMo가 input에 사용되었을 떄는 대부분 first LSTM layer가 가중치가 높다는 것을 볼 수 있습니다. 반면 ELMo가 output에 사용된 경우엔 하단 layer가 더 높은 가중치를 갖고 있음을 볼 수 있습니다.</p>
</li>
<li><p><strong>&quot;임베딩 벡터와 은닉 벡터에 가중치를 어떻게 부여할 것인가?&quot;</strong>
논문에서 적용했던 것과 같이 $L+1$개의 벡터에 모두 다른 가중치를 적용했을 때의 성능이 가장 좋은 것을 볼 수 있습니다. 이는 $L+1$개의 벡터에 모두 같은 가중치를 적용했을 때보다 성능이 높고, 최상단 hidden layer가 생성한 벡터를 사용하는 것이 그냥 단어 임베딩 벡터를 사용하는 것보다 좋다는 연구 결과가 있습니다.
<img src="https://images.velog.io/images/lm_minjin/post/2ae7745f-c197-45d8-be2e-ebf4ad0fbfd9/image.png" alt=""></p>
</li>
<li><p><strong>“ELMo 임베딩 벡터를 어떤 단계에 Concatenate하는 것이 좋은가?”</strong>
입출력 단계에 모두 ELMo 임베딩을 적용하는 것이 가장 좋은 것을 볼 수 있습니다. 입, 출력 벡터 중 하나에만 적용하는 경우는 모두 적용한 경우보다는 떨어지지만, 아무것도 사용하지 않은 모델보다는 좋은 성능을 보여주는 것을 알 수 있습니다.
<img src="https://images.velog.io/images/lm_minjin/post/c034cd90-3c60-46f4-815b-846a8ba13661/image.png" alt=""></p>
</li>
<li><p><strong>&quot;biLM의 representation에서 무슨 정보가 포착되는가?&quot;</strong>
<img src="https://images.velog.io/images/lm_minjin/post/7d8796a8-7197-4ac6-9b77-8d5a27b90b0b/image.png" alt="">
직관적으로 biLM은 문맥을 사용해 단어의 의미를 명확하게 할 것입니다. &quot;play&quot;라는 단어를 생각해보면, 굉장히 여러 의미가 있다는 것을 알 수 있습니다. GloVe를 사용하여 &quot;play&quot;를 임베딩할 경우 &quot;play&quot;의 여러 의미와 표현(&quot;player&quot;,&quot;playing&quot; 등)이 퍼져있지만, 대체로 sport에서 쓰는 &quot;play&quot;의 의미에 초점이 맞춰져 있는걸 볼 수 있습니다. 표에서 2행에 있는 &quot;play&quot;는 GloVe가 판단한 것과 동일한 &quot;스포츠(경기)&quot;를 의미하고 있으며 마지막 행에 있는 &quot;play&quot;는 &quot;(a Broadway)play&quot;를 의미하고 있습니다. 즉, ELMo는 &quot;play&quot;를 문맥에 맞게 잘 판단하고 있는 것으로 볼 수 있습니다.</p>
</br>
ELMo를 시작으로 대량의 코퍼스에서 좋은 임베딩 벡터를 만드는 모델이 많이 사용되었습니다. ELMo는 이후 나오는 트랜스포머 기반의 BERT나 GPT보다 많이 사용되진 않지만 이렇게 좋은 임베딩 벡터를 바탕으로 적절한 Fine-tuning후에 여러 태스크에 전이 학습(Tranfer learning)의 시초로 의의가 있습니다.

</li>
</ul>
<blockquote>
<p>참고자료
<a href="https://yngie-c.github.io/nlp/2020/07/03/nlp_elmo/">https://yngie-c.github.io/nlp/2020/07/03/nlp_elmo/</a>
<a href="https://www.youtube.com/watch?v=zV8kIUwH32M">https://www.youtube.com/watch?v=zV8kIUwH32M</a></p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>