<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>zzangsky 님의 블로그</title>
    <link>https://zzangsky.tistory.com/</link>
    <description>zzangsky 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Sun, 21 Jun 2026 08:17:18 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>zzangsky</managingEditor>
    <item>
      <title>[Paper Review] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (ViT)</title>
      <link>https://zzangsky.tistory.com/16</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/2010.11929&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://arxiv.org/abs/2010.11929&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1779254944205&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale&quot; data-og-description=&quot;While the Transformer architecture has become the de-facto standard for natural language processing tasks, its applications to computer vision remain limited. In vision, attention is either applied in conjunction with convolutional networks, or used to rep&quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/2010.11929&quot; data-og-url=&quot;https://arxiv.org/abs/2010.11929v2&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/geyo2/dJMb8959kzE/PFlUKZKloDKmLKJT3U6i11/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/5s7hn/dJMb85vUHGE/nfgN9g0FYoIN4kmDKZWl81/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/2010.11929&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/2010.11929&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/geyo2/dJMb8959kzE/PFlUKZKloDKmLKJT3U6i11/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/5s7hn/dJMb85vUHGE/nfgN9g0FYoIN4kmDKZWl81/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;While the Transformer architecture has become the de-facto standard for natural language processing tasks, its applications to computer vision remain limited. In vision, attention is either applied in conjunction with convolutional networks, or used to rep&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Abstract&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Transformer 구조는 자연어처리, 즉 NLP 분야에서 사실상 표준 모델이 되었지만, 컴퓨터 비전 분야에서의 활용은 아직 제한적이었다. 기존 비전 연구에서는 attention을 CNN과 함께 사용하거나, CNN 구조의 일부 구성요소를 attention으로 대체하는 방식이 주로 사용되었다. 즉, 전체적인 CNN 구조는 그대로 유지하는 경우가 많았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이 논문에서는 &lt;b&gt;이미지 인식 문제에서 반드시 CNN에 의존할 필요가 없다는 것&lt;/b&gt;을 보여준다. 이미지를 여러 개의 작은 패치로 나누고, 이 패치들의 sequence에 순수 Transformer를 직접 적용해도 이미지 분류 문제에서 매우 좋은 성능을 낼 수 있다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 Vision Transformer, 즉 ViT는 대량의 데이터로 사전학습한 뒤 ImageNet, CIFAR-100, VTAB과 같은 중간 규모 또는 작은 이미지 인식 벤치마크에 전이학습했을 때, 기존의 최신 CNN 모델들과 비교해도 뛰어난 결과를 달성했다. 또한 학습에 필요한 계산 자원은 훨씬 적게 사용했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 1 INTRODUCTION&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Self-attention 기반 구조, 특히 Transformer는 자연어처리 분야에서 가장 많이 선택되는 모델이 되었다. 대표적인 방식은 큰 텍스트 말뭉치로 먼저 사전학습을 하고, 이후 더 작은 특정 작업 데이터셋에 맞게 fine-tuning하는 것이다. Transformer는 계산 효율성과 확장성이 뛰어나기 때문에, 1000억 개 이상의 파라미터를 가진 매우 큰 모델도 학습할 수 있게 되었다. 또한 모델과 데이터셋의 크기가 계속 커지고 있음에도 성능 향상이 아직 한계에 도달했다는 신호는 보이지 않는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; 하지만 컴퓨터 비전 분야에서는 여전히 CNN 기반 구조가 주류이다.&lt;/span&gt; NLP에서 Transformer가 성공한 것에 영향을 받아, 여러 연구에서는 CNN과 self-attention을 결합하거나, CNN의 convolution 일부를 self-attention으로 대체하려고 했다. 그러나 convolution을 완전히 대체하려는 모델들은 이론적으로는 효율적일 수 있지만, 특수한 attention 구조를 사용하기 때문에 현대 하드웨어 가속기에서 효과적으로 확장하기 어려웠다. 그래서 대규모 이미지 인식 분야에서는 여전히 ResNet과 같은 전통적인 CNN 구조가 최신 성능을 내고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문은 NLP에서 Transformer가 대규모로 확장되며 성공한 것에서 영감을 받았다. 저자들은 &lt;b&gt;가능한 한 최소한의 수정만으로 표준 Transformer를 이미지에 직접 적용하는 실험&lt;/b&gt;을 진행했다. 이를 위해 이미지를 여러 개의 patch로 나누고, 각 patch를 선형 임베딩한 sequence를 Transformer의 입력으로 제공했다. 즉, 이미지 patch를 NLP에서의 단어 token처럼 취급한 것이다. 그리고 이 모델을 지도학습 방식으로 이미지 분류 task에 학습시켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;그런데 데이터가 충분하지 않을 때는 일반화 성능이 CNN보다 좋지 않다.&lt;/span&gt; 그러나 ViT는 &lt;b&gt;충분히 큰 규모로 사전학습한 뒤, 더 작은 데이터셋의 task로 전이학습했을 때 매우 뛰어난 성능을 보였다&lt;/b&gt;. 특히 공개 데이터셋인 ImageNet-21k 또는 Google 내부 데이터셋인 JFT-300M으로 사전학습했을 때, 기존 최신 모델에 근접하거나 이를 뛰어넘는 성능을 냈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2 RELATED WORK&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Transformer는 Vaswani et al.이 2017년에 기계번역을 위해 제안한 모델이다. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;BERT는 self-supervised 방식의 denoising 사전학습을 사용했고, GPT 계열 모델들은 language modeling을 사전학습 task로 사용했다. 즉, 대규모 말뭉치로 먼저 학습한 뒤 특정 task에 fine-tuning하는 방식이 NLP에서 널리 사용되었다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지에 self-attention을 단순하게 적용하려면, 이미지의 모든 픽셀이 다른 모든 픽셀을 참고해야 한다. 하지만 이 방식은 &lt;span style=&quot;color: #ee2323;&quot;&gt;픽셀 수가 많아질수록 계산 비용이 제곱으로 증가하기 때문에 실제 크기의 이미지에는 적용하기 어렵다.&lt;/span&gt; 그래서 기존 연구들은 이미지 처리에 Transformer를 적용하기 위해 여러 가지 근사 방법을 사용했다. 예를 들어 Parmar et al.은 각 query pixel이 전체 이미지가 아니라 주변의 local neighborhood에 대해서만 self-attention을 수행하도록 했다. 이런 local multi-head dot-product self-attention 블록은 convolution을 완전히 대체할 수도 있다. 또 다른 연구인 Sparse Transformer는 이미지에 적용할 수 있도록 global self-attention을 더 효율적으로 근사하는 방식을 사용했다. 그 외에도 attention을 다양한 크기의 block 단위로 적용하거나, 극단적으로는 특정 축 방향으로만 attention을 적용하는 방식도 연구되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 특수한 attention 구조들은 컴퓨터 비전 task에서 가능성을 보여주었지만, &lt;span style=&quot;color: #ee2323;&quot;&gt;하드웨어 가속기에서 효율적으로 구현하려면 복잡한 엔지니어링이 필요하다는 문제&lt;/span&gt;가 있었다. 이 논문과 가장 관련이 깊은 연구는 Cordonnier et al.의 모델이다. 이 연구는 입력 이미지에서 2&amp;times;2 크기의 patch를 추출하고, 그 위에 full self-attention을 적용했다. 이 모델은 ViT와 매우 유사하다. 하지만 ViT 논문은 여기서 더 나아가, 대규모 사전학습을 통해 vanilla Transformer가 최신 CNN 모델과 경쟁하거나 더 좋은 성능을 낼 수 있음을 보여준다. 또한 Cordonnier et al.은 2&amp;times;2라는 매우 작은 patch를 사용했기 때문에 작은 해상도 이미지에만 적용 가능했지만, ViT는 중간 해상도의 이미지도 처리할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CNN과 self-attention을 결합하려는 연구들도 많이 있었다. 예를 들어 image classification을 위해 feature map에 attention을 추가하거나, object detection, video processing, image classification, unsupervised object discovery, text-vision task 등에서 CNN의 출력을 self-attention으로 추가 처리하는 방식들이 연구되었다. 또 다른 관련 연구로 image GPT, 즉 iGPT가 있다. iGPT는 이미지의 해상도와 color space를 줄인 뒤, 이미지 pixel에 Transformer를 적용했다. 이 모델은 generative model로 비지도학습 방식으로 학습되었고, 이후 학습된 representation을 fine-tuning하거나 linear probing하여 분류 성능을 평가했다. iGPT는 ImageNet에서 최대 72% 정확도를 달성했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;349&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD7HOA/dJMcagr27D2/tzGShRvlBm9m31X0BBVDn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD7HOA/dJMcagr27D2/tzGShRvlBm9m31X0BBVDn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD7HOA/dJMcagr27D2/tzGShRvlBm9m31X0BBVDn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD7HOA%2FdJMcagr27D2%2FtzGShRvlBm9m31X0BBVDn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;612&quot; height=&quot;316&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;349&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Figure 1 : 모델 개요. 이미지를 고정된 크기의 패치들로 나누고, 각각의 패치를 선형 임베딩한다. 그다음 위치 임베딩을 추가한 뒤, 이렇게 만들어진 벡터들의 sequence를 표준 Transformer encoder에 입력한다. 분류를 수행하기 위해서는 일반적으로 사용되는 방식처럼, sequence에 추가적인 학습 가능한 &amp;ldquo;classification token&amp;rdquo;을 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3 METHOD&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 설계에서 기존 Transformer 구조를 가능한 한 그대로 따랐다. 의도적으로 단순한 구조를 사용한 장점은, 확장 가능한 Transformer 구조와 효율적인 구현 방식을 거의 그대로 사용할 수 있다는 점이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; ViT는 이미지를 위해 새로운 구조를 만든 것X, NLP에서 쓰던 표준 Transformer를 이미지에 맞게 최소한만 수정해 사용한 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.1 VISION TRANSFORMER (VIT)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 Transformer는 자연어처리에서 단어 token들의 1차원 sequence를 입력으로 받는다. 그러나 이미지는 2차원 구조를 가지기 때문에, ViT는 이미지를 Transformer에 입력하기 위해 먼저 고정 크기의 patch로 분할한다. 각 patch는 flatten 과정을 통해 1차원 벡터로 변환되고, 이후 학습 가능한 linear projection을 거쳐 Transformer 입력 차원에 맞는 patch embedding이 된다. ViT에서 patch는 NLP에서의 token과 유사한 역할을 한다. 예를 들어 문장에서 각 단어가 Transformer의 입력 token이 되는 것처럼, ViT에서는 이미지의 각 patch가 입력 token으로 사용된다. 전체 patch의 개수는 Transformer의 sequence length가 되며, patch 크기가 작을수록 sequence length가 길어져 계산량이 증가한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 ViT는 BERT의 [class] token과 유사한 classification token을 patch embedding sequence의 맨 앞에 추가한다. 이 classification token은 실제 이미지 patch는 아니지만, Transformer encoder를 통과하면서 전체 이미지 정보를 통합하는 역할을 한다. 최종 layer에서 classification token의 출력값은 이미지 전체를 대표하는 representation으로 사용되며, 이후 classification head를 통해 최종 class를 예측한다. 각 patch embedding에는 위치 정보를 보존하기 위해 position embedding이 더해진다. 이는 Transformer가 입력 sequence의 순서나 2차원 공간 구조를 직접적으로 알지 못하기 때문이다. 저자들은 복잡한 2D position embedding 대신 학습 가능한 1D position embedding을 사용했으며, 실험적으로 더 복잡한 위치 임베딩 방식이 뚜렷한 성능 향상을 제공하지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Transformer encoder는 multi-head self-attention과 MLP block이 반복적으로 쌓인 구조이다. 각 block 앞에는 Layer Normalization이 적용되고, 각 block 뒤에는 residual connection이 사용된다. 이를 통해 ViT는 이미지의 각 patch 사이의 관계를 self-attention으로 학습할 수 있으며, CNN 없이도 이미지 분류에 필요한 전역적 정보를 통합할 수 있다. 따라서 ViT의 핵심 아이디어는 이미지를 patch sequence로 변환하고, 이를 표준 Transformer encoder에 입력하여 이미지 분류를 수행하는 것이다. 이 구조는 이미지 처리에 CNN의 convolution 구조를 사용하지 않고, NLP에서 사용되던 Transformer를 거의 그대로 컴퓨터 비전 문제에 적용했다는 점에서 중요한 의미를 가진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZHB9m/dJMcabK6LW2/FPXZ9Y3TDuEaFabZAxtt40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZHB9m/dJMcabK6LW2/FPXZ9Y3TDuEaFabZAxtt40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZHB9m/dJMcabK6LW2/FPXZ9Y3TDuEaFabZAxtt40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZHB9m%2FdJMcabK6LW2%2FFPXZ9Y3TDuEaFabZAxtt40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;772&quot; height=&quot;139&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.2 FINE-TUNING AND HIGHER RESOLUTION&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 우리는 ViT를 큰 데이터셋에서 먼저 사전학습한 뒤, 더 작은 downstream task에 fine-tuning한다. 이를 위해 사전학습 때 사용했던 prediction head를 제거하고, 새롭게 &lt;b&gt;0으로 초기화된 D &amp;times; K (downstream task class 개수) 크기의 feedforward layer&lt;/b&gt;를 붙인다. 또한 fine-tuning할 때는 사전학습 때보다 더 높은 해상도의 이미지를 사용하는 것이 도움이 되는 경우가 많다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해상도가 더 높은 이미지를 입력할 때, patch size는 그대로 유지한다. 그러면 이미지 안에서 만들어지는 patch 개수가 더 많아지고, 결과적으로 Transformer에 들어가는 sequence length도 더 길어진다. Vision Transformer는 메모리 한계만 넘지 않는다면 다양한 sequence length를 처리할 수 있다. 하지만 문제가 하나 있다. 사전학습된 position embedding은 기존 해상도에 맞게 학습된 것이기 때문에, 더 높은 해상도의 이미지에서는 그대로 의미 있게 사용되기 어렵다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;962&quot; data-start=&quot;865&quot; data-ke-size=&quot;size16&quot;&gt;그래서 저자들은 원래 이미지 안에서의 위치를 기준으로, 사전학습된 position embedding을 &lt;b&gt;2D interpolation&lt;/b&gt;하여 새로운 해상도에 맞게 조정한다. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이 해상도 조정 과정과 patch extraction 과정이 ViT에 이미지의 2차원 구조에 대한 inductive bias를 수동으로 넣는 거의 유일한 부분이라고 설명한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4 EXPERIMENTS &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ResNet&lt;/b&gt;, &lt;b&gt;Vision Transformer(ViT)&lt;/b&gt;, 그리고 &lt;b&gt;hybrid 모델&lt;/b&gt;의 representation learning 능력을 평가한다. 각 모델이 얼마나 많은 데이터를 필요로 하는지 이해하기 위해, 서로 다른 크기의 데이터셋에서 모델을 사전학습하고, 여러 benchmark task에서 평가한다. 또한 모델을 사전학습하는 데 필요한 계산 비용을 고려했을 때, ViT는 매우 유리한 성능을 보인다. ViT는 더 낮은 사전학습 비용으로 대부분의 이미지 인식 benchmark에서 state-of-the-art, 즉 당시 최고 수준의 성능을 달성한다. 마지막으로 저자들은 self-supervision, 즉 자기지도학습을 사용한 작은 실험도 수행한다. 그 결과, self-supervised ViT가 앞으로 가능성이 있는 방향임을 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.1 SETUP &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Datasets&lt;/b&gt; : 세 가지 규모의 사전학습 데이터셋을 사용했다. 첫 번째는 &lt;b&gt;ILSVRC-2012 ImageNet&lt;/b&gt; 데이터셋이다. 이 데이터셋은 1,000개의 class와 약 130만 장의 이미지를 포함한다. 두 번째는 &lt;b&gt;ImageNet-21k&lt;/b&gt;이다. 이는 ImageNet의 더 큰 버전으로, 21,000개의 class와 약 1,400만 장의 이미지를 포함한다. 세 번째는 &lt;b&gt;JFT&lt;/b&gt; 데이터셋이다. JFT는 18,000개의 class와 약 3억 300만 장의 고해상도 이미지를 포함하는 대규모 데이터셋이다. 데이터 중복 제거를 수행했다. 또한 &lt;b&gt;VTAB&lt;/b&gt;이라는 19개 task로 구성된 classification suite에서도 평가했다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Natural: CIFAR, Pets 등 일반적인 자연 이미지 task&lt;br /&gt;Specialized: 의료 이미지, 위성 이미지 등 특수 도메인 이미지 task&lt;br /&gt;Structured: 위치 추정처럼 기하학적 이해가 필요한 task&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Model Variants&lt;/b&gt; : ViT 모델 설정은 BERT에서 사용된 구조를 기반으로 한다. 세 가지 크기의 ViT 모델을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델Layer 수Hidden size DMLP sizeHead 수Parameter 수&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 85px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;모델&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Layer 수&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Hidden size&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;MLP size&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Head 수&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Parameter 수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;ViT-Base&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;768&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;3072&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;86M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;ViT-Large&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;1024&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;4096&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;307M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;ViT-Huge&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;32&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;1280&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;5120&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;632M&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Training &amp;amp; Fine-tuning&lt;/b&gt; : Adam optimizer를 사용해 학습되었다. ResNet도 포함된다. Adam의 설정은 &amp;beta;1 = 0.9, &amp;beta;2 = 0.999이고, batch size는 4096이다. 또한 weight decay는 0.1로 비교적 크게 설정했다. 저자들은 이 설정이 모든 모델의 transfer 성능에 도움이 된다고 설명한다. 학습 과정에서는 learning rate warmup과 decay를 사용했다. Fine-tuning 단계에서는 모든 모델에 대해 momentum을 사용하는 SGD를 사용했고, batch size는 512로 설정했다. ImageNet 결과를 낼 때는 더 높은 해상도에서 fine-tuning했다. 예를 들어 ViT-L/16은 512 해상도, ViT-H/14는 518 해상도에서 fine-tuning했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Metrics&lt;/b&gt; : &lt;b&gt;Fine-tuning accuracy&lt;/b&gt;는 사전학습된 모델을 각 데이터셋에 맞게 fine-tuning한 뒤 얻은 정확도이다. 즉, 실제 target task에 맞게 모델을 다시 학습시킨 후의 성능이다. &lt;b&gt;Few-shot accuracy&lt;/b&gt;는 모델의 representation을 고정한 상태에서, 일부 training image만 사용해 간단한 선형 회귀 문제를 풀어 성능을 측정하는 방식이다. 이 방식은 full fine-tuning보다 계산 비용이 적기 때문에 빠른 평가에 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.2 COMPARISON TO STATE OF THE ART &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 가장 큰 모델인 &lt;b&gt;ViT-H/14&lt;/b&gt;와 &lt;b&gt;ViT-L/16&lt;/b&gt;을 기존의 최신 CNN 모델들과 비교했다. 첫 번째 비교 대상은 &lt;b&gt;Big Transfer, BiT&lt;/b&gt;이다.&lt;br /&gt;BiT는 큰 ResNet을 사용해 supervised transfer learning을 수행하는 모델이다. 두 번째 비교 대상은 &lt;b&gt;Noisy Student&lt;/b&gt;이다.&lt;br /&gt;Noisy Student는 큰 EfficientNet 모델이며, ImageNet과 JFT-300M에서 semi-supervised learning 방식으로 학습되었다.&lt;br /&gt;이때 JFT-300M의 label은 제거한 상태로 사용되었다. 당시 기준으로 Noisy Student는 ImageNet에서 최고 성능을 보였고, BiT-L은 논문에서 보고하는 다른 데이터셋들에서 최고 성능을 보이던 모델이었다. 모든 모델은 TPUv3 하드웨어에서 학습되었으며, 저자들은 각 모델을 사전학습하는 데 걸린 &lt;b&gt;TPUv3-core-days&lt;/b&gt;를 함께 보고했다. TPUv3-core-days란 학습에 사용한 TPUv3 core 수에 학습 일수를 곱한 값이다. 즉, 모델 학습에 들어간 계산 비용을 나타내는 지표이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;319&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1mAbY/dJMcaaekvMi/AUbCbMadqkk8UuDqSbz9Y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1mAbY/dJMcaaekvMi/AUbCbMadqkk8UuDqSbz9Y0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1mAbY/dJMcaaekvMi/AUbCbMadqkk8UuDqSbz9Y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1mAbY%2FdJMcaaekvMi%2FAUbCbMadqkk8UuDqSbz9Y0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;746&quot; height=&quot;229&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;319&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;973&quot; data-start=&quot;831&quot; data-ke-size=&quot;size16&quot;&gt;JFT-300M에서 사전학습한 더 작은 모델인 &lt;b&gt;ViT-L/16&lt;/b&gt;은 같은 데이터셋에서 사전학습한 &lt;b&gt;BiT-L&lt;/b&gt;보다 모든 task에서 더 좋은 성능을 보였다. 게다가 학습에 필요한 계산 자원은 훨씬 적었다. 더 큰 모델인 &lt;b&gt;ViT-H/14&lt;/b&gt;는 성능을 더 향상시켰다. 특히 ImageNet, CIFAR-100, VTAB처럼 더 어려운 데이터셋에서 성능 향상이 두드러졌다. 흥미로운 점은 ViT-H/14도 기존 state-of-the-art 모델보다 훨씬 적은 계산량으로 사전학습되었다는 것이다. 다만 저자들은 사전학습 효율성이 모델 구조뿐 아니라 training schedule, optimizer, weight decay 같은 다른 요소의 영향을 받을 수 있다고 언급한다. 그래서 뒤의 4.4절에서 architecture별 성능과 계산량을 더 통제된 조건에서 비교한다.&lt;/p&gt;
&lt;p data-end=&quot;1458&quot; data-start=&quot;1296&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1458&quot; data-start=&quot;1296&quot; data-ke-size=&quot;size16&quot;&gt;마지막으로, 공개 데이터셋인 &lt;b&gt;ImageNet-21k&lt;/b&gt;에서 사전학습한 &lt;b&gt;ViT-L/16&lt;/b&gt;도 대부분의 데이터셋에서 좋은 성능을 보였다. 이 모델은 더 적은 자원으로 사전학습할 수 있었으며, 표준 cloud TPUv3 8-core를 사용하면 약 30일 정도에 학습할 수 있다고 설명한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mkhpC/dJMcafmpuD0/KWodV6ZXv03C4MKO16M920/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mkhpC/dJMcafmpuD0/KWodV6ZXv03C4MKO16M920/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mkhpC/dJMcafmpuD0/KWodV6ZXv03C4MKO16M920/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmkhpC%2FdJMcafmpuD0%2FKWodV6ZXv03C4MKO16M920%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;808&quot; height=&quot;186&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1554&quot; data-start=&quot;1460&quot; data-ke-size=&quot;size16&quot;&gt;Figure 2는 VTAB task를 세 그룹으로 나누어 성능을 비교한다. VTAB은 Natural, Specialized, Structured task로 구성된다.&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;이 그림에서는 ViT-H/14를 기존의 VTAB 최고 성능 방법들과 비교한다. 비교 대상은 BiT, VIVI, S4L이다. ViT-H/14는 Natural task와 Structured task에서 BiT-R152x4 및 다른 방법들보다 더 좋은 성능을 보였다. Specialized task에서는 상위 두 모델의 성능이 비슷했다.&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.3 PRE-TRAINING DATA REQUIREMENTS &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;Vision Transformer가 좋은 성능을 내기 위해 얼마나 많은 사전학습 데이터가 필요한지를 분석한다. ViT는 CNN에 비해 이미지에 특화된 inductive bias가 적기 때문에, 데이터셋 크기가 성능에 중요한 영향을 미칠 수 있다. 이를 확인하기 위해 두 가지 실험을 수행하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9hpXZ/dJMcadaXNnd/qDNEg45Okj5Jzkb2GFpe4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9hpXZ/dJMcadaXNnd/qDNEg45Okj5Jzkb2GFpe4k/img.png&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;355&quot; data-is-animation=&quot;false&quot; width=&quot;403&quot; height=&quot;280&quot; style=&quot;width: 48.724%; margin-right: 10px;&quot; data-widthpercent=&quot;49.3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9hpXZ/dJMcadaXNnd/qDNEg45Okj5Jzkb2GFpe4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9hpXZ%2FdJMcadaXNnd%2FqDNEg45Okj5Jzkb2GFpe4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;511&quot; height=&quot;355&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qvyve/dJMcahYNbDm/EgxOkXGCTcMrZkNE0wgMok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qvyve/dJMcahYNbDm/EgxOkXGCTcMrZkNE0wgMok/img.png&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;333&quot; data-is-animation=&quot;false&quot; width=&quot;369&quot; height=&quot;249&quot; style=&quot;width: 50.1133%;&quot; data-widthpercent=&quot;50.7&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qvyve/dJMcahYNbDm/EgxOkXGCTcMrZkNE0wgMok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqvyve%2FdJMcahYNbDm%2FEgxOkXGCTcMrZkNE0wgMok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;493&quot; height=&quot;333&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째 실험에서는 ViT를 ImageNet, ImageNet-21k, JFT-300M처럼 서로 다른 크기의 데이터셋에서 사전학습한 뒤 ImageNet으로 fine-tuning하여 성능을 비교하였다. 작은 데이터셋인 ImageNet에서 사전학습했을 때는 ViT-Large가 ViT-Base보다 낮은 성능을 보였으며, 전반적으로 BiT 기반 ResNet보다 낮은 성능을 기록하였다. 이는 ViT가 CNN보다 이미지에 대한 구조적 편향이 적기 때문에, 데이터가 부족할 경우 큰 모델일수록 overfitting되기 쉽다는 점을 보여준다.&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 반면 ImageNet-21k로 사전학습했을 때는 ViT-Base와 ViT-Large의 성능이 비슷해졌고, JFT-300M으로 사전학습했을 때는 더 큰 ViT 모델의 성능 이점이 뚜렷하게 나타났다. 특히 대규모 데이터셋에서는 ViT가 BiT ResNet을 앞서는 결과를 보였다. 이는 충분한 데이터가 주어질 경우, ViT가 CNN의 inductive bias 없이도 이미지 인식에 필요한 패턴을 직접 학습할 수 있음을 의미한다.&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;4871&quot; data-start=&quot;4649&quot; data-ke-size=&quot;size16&quot;&gt;두 번째 실험에서는 JFT-300M의 부분집합을 사용하여 데이터 크기에 따른 성능 변화를 더 세밀하게 분석하였다. 저자들은 9M, 30M, 90M, 300M 크기의 subset을 사용했고, 추가적인 regularization 없이 동일한 hyperparameter로 모델을 학습하였다. 이 설정은 regularization 효과가 아니라 모델 구조 자체의 데이터 요구 특성을 확인하기 위한 것이다.&lt;/p&gt;
&lt;p data-end=&quot;5179&quot; data-start=&quot;4873&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 실험 결과, 작은 데이터셋에서는 ViT가 ResNet보다 더 쉽게 overfitting되었고 성능도 낮았다. 예를 들어 ViT-B/32는 ResNet50보다 계산 비용이 약간 낮음에도 9M subset에서는 훨씬 낮은 성능을 보였다. 그러나 데이터 크기가 90M 이상으로 증가하면 ViT가 ResNet보다 더 좋은 성능을 보이기 시작했다. 이는 작은 데이터에서는 convolutional inductive bias가 유리하지만, 큰 데이터에서는 모델이 필요한 패턴을 데이터로부터 직접 학습하는 것이 충분하며 오히려 더 효과적일 수 있음을 보여준다.&lt;/p&gt;
&lt;p data-end=&quot;5179&quot; data-start=&quot;4873&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;따라서 핵심은 ViT의 성능이 사전학습 데이터 규모에 크게 의존한다는 점이다. CNN은 이미지에 적합한 구조적 편향 덕분에 작은 데이터에서도 강점을 보이지만, ViT는 대규모 데이터셋에서 사전학습될 때 그 잠재력이 본격적으로 나타난다. 이는 ViT가 단순한 구조임에도 대규모 데이터와 결합될 경우 CNN 기반 모델을 능가할 수 있음을 뒷받침한다.&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.4 SCALING STUDY &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;JFT-300M에서 사전학습한 여러 모델을 대상으로, 서로 다른 모델 구조들의 scaling study를 수행했다. 이 설정에서는 데이터 크기가 모델 성능의 병목이 되지 않기 때문에, 각 모델의 &lt;b&gt;사전학습 비용 대비 성능&lt;/b&gt;을 평가할 수 있다. 실험에 포함된 모델은 ResNet, Vision Transformer, Hybrid 모델이다. ResNet은 R50x1, R50x2, R101x1, R152x1, R152x2 등을 사용했고, ViT는 ViT-B/32, B/16, L/32, L/16, H/14 등을 사용했다. Hybrid 모델은 ResNet50과 ViT를 결합한 구조를 사용했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;415&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dRdXgg/dJMcahqZKNZ/ik0lhcmSbUCdfKc0GY4LiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dRdXgg/dJMcahqZKNZ/ik0lhcmSbUCdfKc0GY4LiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dRdXgg/dJMcahqZKNZ/ik0lhcmSbUCdfKc0GY4LiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdRdXgg%2FdJMcahqZKNZ%2Fik0lhcmSbUCdfKc0GY4LiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;623&quot; height=&quot;273&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;415&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;Figure 5는 전체 사전학습 계산량에 따른 transfer 성능을 보여준다. 결과적으로 몇가지 패천이 관찰되었다.&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;708&quot; data-start=&quot;589&quot; data-ke-size=&quot;size16&quot;&gt;첫째, &lt;b&gt;Vision Transformer는 성능과 계산량의 균형 측면에서 ResNet보다 우수했다.&lt;/b&gt;&lt;br /&gt;ViT는 평균적으로 같은 성능을 얻기 위해 ResNet보다 약 &lt;b&gt;2~4배 적은 계산량&lt;/b&gt;을 사용했다.&lt;/p&gt;
&lt;p data-end=&quot;708&quot; data-start=&quot;589&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;877&quot; data-start=&quot;710&quot; data-ke-size=&quot;size16&quot;&gt;둘째, &lt;b&gt;Hybrid 모델은 작은 모델 크기에서는 순수 ViT보다 약간 더 좋은 성능을 보였지만, 모델이 커질수록 그 차이는 사라졌다.&lt;/b&gt;&lt;br /&gt;이는 CNN의 지역적 특징 처리 능력이 작은 모델에서는 도움이 되지만, 큰 모델에서는 순수 Transformer만으로도 충분히 학습할 수 있음을 의미한다.&lt;/p&gt;
&lt;p data-end=&quot;877&quot; data-start=&quot;710&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;969&quot; data-start=&quot;879&quot; data-ke-size=&quot;size16&quot;&gt;셋째, &lt;b&gt;ViT는 실험한 범위 안에서 아직 성능이 포화되지 않았다.&lt;/b&gt;&lt;br /&gt;즉, 모델을 더 키우거나 더 많은 계산량을 사용하면 성능이 더 향상될 가능성이 있다.&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.5 INSPECTING VISION TRANSFORMER &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;3168&quot; data-start=&quot;2988&quot; data-ke-size=&quot;size16&quot;&gt;Vision Transformer가 이미지 데이터를 내부적으로 어떻게 처리하는지를 분석한다. 저자들은 ViT의 학습된 representation, position embedding, attention pattern을 살펴봄으로써, ViT가 이미지의 공간적 구조와 의미 있는 영역을 실제로 학습하는지 확인하였다.&lt;/p&gt;
&lt;p data-end=&quot;3168&quot; data-start=&quot;2988&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;3168&quot; data-start=&quot;2988&quot; data-ke-size=&quot;size16&quot;&gt;먼저 ViT의 첫 번째 linear projection layer를 분석한 결과, 학습된 embedding filter가 patch 내부의 세밀한 구조를 표현하는 basis function과 유사한 형태를 보였다. 이는 ViT가 이미지 patch로부터 기본적인 시각적 특징을 학습하고 있음을 의미한다.&lt;/p&gt;
&lt;p data-end=&quot;3565&quot; data-start=&quot;3340&quot; data-ke-size=&quot;size16&quot;&gt;다음으로 position embedding을 분석한 결과, 가까운 위치의 patch일수록 position embedding이 더 비슷하게 학습되는 경향이 나타났다. 또한 같은 행이나 열에 위치한 patch들이 유사한 embedding을 가지는 구조도 관찰되었다. 이는 ViT가 명시적인 2D 구조를 강하게 내장하고 있지 않음에도, 학습을 통해 이미지의 공간적 관계를 어느 정도 획득한다는 것을 보여준다.&lt;/p&gt;
&lt;p data-end=&quot;3565&quot; data-start=&quot;3340&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;3867&quot; data-start=&quot;3567&quot; data-ke-size=&quot;size16&quot;&gt;마지막으로 저자들은 attention distance를 분석하였다. Attention distance는 self-attention이 이미지 공간에서 평균적으로 얼마나 먼 위치의 정보를 통합하는지를 나타내며, CNN의 receptive field와 유사한 개념이다. 분석 결과, 일부 attention head는 낮은 layer부터 이미지 전체에 걸쳐 정보를 통합했으며, 다른 head들은 가까운 영역 중심의 지역적 attention을 수행하였다. 또한 layer가 깊어질수록 attention distance가 증가하는 경향이 나타났다.&lt;/p&gt;
&lt;p data-end=&quot;3867&quot; data-start=&quot;3567&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;4126&quot; data-start=&quot;3869&quot; data-ke-size=&quot;size16&quot;&gt;이러한 결과는 ViT가 self-attention을 통해 이미지의 전역적 정보를 실제로 활용하고 있음을 보여준다. 동시에 일부 attention head는 지역적 정보를 처리하며, 이는 CNN의 초기 convolution layer와 유사한 역할을 할 수 있다. 따라서 ViT는 CNN처럼 명시적인 inductive bias를 강하게 가지지는 않지만, 대규모 학습을 통해 이미지의 위치 구조와 의미적으로 중요한 영역을 스스로 학습할 수 있음을 확인할 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.6 SELF-SUPERVISION&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;271&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o5FMb/dJMcaf7IXuf/ccmG7GKiQCO6PuOGAzs1Jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o5FMb/dJMcaf7IXuf/ccmG7GKiQCO6PuOGAzs1Jk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o5FMb/dJMcaf7IXuf/ccmG7GKiQCO6PuOGAzs1Jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo5FMb%2FdJMcaf7IXuf%2FccmG7GKiQCO6PuOGAzs1Jk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;711&quot; height=&quot;219&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;271&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;346&quot; data-start=&quot;204&quot; data-ke-size=&quot;size16&quot;&gt;Transformer는 자연어처리 task에서 인상적인 성능을 보여주었다. 하지만 Transformer의 성공은 뛰어난 확장성 때문만이 아니라, 대규모 &lt;b&gt;self-supervised pre-training&lt;/b&gt;, 즉 자기지도 사전학습 덕분이기도 하다.&amp;nbsp;BERT에서 사용한 &lt;b&gt;masked language modeling&lt;/b&gt; 방식을 모방하여, ViT에 대해 &lt;b&gt;masked patch prediction&lt;/b&gt;을 사용한 자기지도학습을 예비적으로 실험했다. Self-supervised pre-training을 사용했을 때, 더 작은 모델인 &lt;b&gt;ViT-B/16&lt;/b&gt;은 ImageNet에서 &lt;b&gt;79.9% accuracy&lt;/b&gt;를 달성했다. 이는 처음부터 학습한 경우보다 약 &lt;b&gt;2% 향상&lt;/b&gt;된 결과이다. &lt;span style=&quot;color: #ee2323;&quot;&gt;하지만 supervised pre-training과 비교하면 여전히 약 &lt;b&gt;4% 낮은 성능&lt;/b&gt;을 보였다.&lt;/span&gt;&amp;nbsp;자세한 내용은 Appendix B.1.2에 제시하고, contrastive pre-training 같은 다른 자기지도학습 방식은 향후 연구로 남겨두었다.&lt;/p&gt;
&lt;p data-end=&quot;1624&quot; data-start=&quot;1556&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 5 CONCLUSION &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;335&quot; data-start=&quot;141&quot; data-ke-size=&quot;size16&quot;&gt;Transformer를 이미지 인식에 직접 적용하는 방법을 탐구했다. 기존 컴퓨터 비전 연구들이 self-attention을 사용할 때 이미지에 특화된 inductive bias를 구조에 넣었던 것과 달리, 이 논문은 초기 patch extraction 단계를 제외하고는 이미지에 특화된 inductive bias를 거의 넣지 않았다. 대신 이미지를 여러 개의 patch sequence로 해석하고, 이를 NLP에서 사용되는 표준 Transformer encoder로 처리했다. 이 단순하지만 확장 가능한 전략은 대규모 데이터셋에서 사전학습했을 때 놀라울 정도로 잘 작동했다.&lt;/p&gt;
&lt;p data-end=&quot;335&quot; data-start=&quot;141&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;586&quot; data-start=&quot;475&quot; data-ke-size=&quot;size16&quot;&gt;그 결과 Vision Transformer는 여러 이미지 분류 데이터셋에서 기존 state-of-the-art 모델과 비슷하거나 더 좋은 성능을 달성했다.&lt;br /&gt;또한 사전학습 비용도 상대적으로 낮았다. 하지만 이러한 초기 결과가 긍정적이기는 해도, 아직 해결해야 할 과제도 많이 남아 있다.&lt;br /&gt;첫 번째 과제는 ViT를 object detection이나 segmentation 같은 다른 컴퓨터 비전 task에 적용하는 것이다. 저자들의 결과와 DETR 연구 결과를 함께 보면, 이런 방향은 가능성이 있어 보인다. 두 번째 과제는 self-supervised pre-training 방법을 더 탐구하는 것이다. 초기 실험에서는 self-supervised pre-training이 성능을 향상시키는 것을 확인했지만, 여전히 대규모 supervised pre-training과는 큰 차이가 있었다. 마지막으로, ViT를 더 크게 확장하면 성능이 더 향상될 가능성이 있다고 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>zzangsky</author>
      <guid isPermaLink="true">https://zzangsky.tistory.com/16</guid>
      <comments>https://zzangsky.tistory.com/16#entry16comment</comments>
      <pubDate>Wed, 20 May 2026 15:00:34 +0900</pubDate>
    </item>
    <item>
      <title>[Short Review] Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (T5)</title>
      <link>https://zzangsky.tistory.com/15</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1910.10683&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://arxiv.org/abs/1910.10683&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1779253814390&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer&quot; data-og-description=&quot;Transfer learning, where a model is first pre-trained on a data-rich task before being fine-tuned on a downstream task, has emerged as a powerful technique in natural language processing (NLP). The effectiveness of transfer learning has given rise to a div&quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/1910.10683&quot; data-og-url=&quot;https://arxiv.org/abs/1910.10683v4&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c8TMTR/dJMb8Rj7IiL/Ld7VDTKgaFisnmkfGIqcj0/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/f74Mq/dJMb9jgCXPS/8L3IMb99CqoEBl28K1A5L1/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1910.10683&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/1910.10683&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c8TMTR/dJMb8Rj7IiL/Ld7VDTKgaFisnmkfGIqcj0/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/f74Mq/dJMb9jgCXPS/8L3IMb99CqoEBl28K1A5L1/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Transfer learning, where a model is first pre-trained on a data-rich task before being fine-tuned on a downstream task, has emerged as a powerful technique in natural language processing (NLP). The effectiveness of transfer learning has given rise to a div&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1. 배경 및 문제점&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;391&quot; data-start=&quot;183&quot; data-ke-size=&quot;size16&quot;&gt;최근 NLP 분야에서는 BERT, GPT, RoBERTa와 같이 대규모 텍스트 데이터로 모델을 먼저 학습한 뒤, 특정 task에 맞게 fine-tuning하는 transfer learning 방식이 좋은 성능을 보였다. 하지만 &lt;span style=&quot;color: #ee2323;&quot;&gt;기존 연구들은 task마다 입력/출력 형식, 모델 구조, 학습 목표가 달라서 여러 NLP 기법을 공정하게 비교하기 어렵다는 문제&lt;/span&gt;가 있었다. 예를 들어 감성분석은 classification 문제로, 번역과 요약은 sequence generation 문제로, 질의응답은 span prediction 문제로 다루어지는 경우가 많았다. 즉, NLP 문제마다 서로 다른 방식의 모델 설계가 필요했다. &lt;b&gt;이 논문은 이러한 문제를 해결하기 위해 모든 NLP task를 하나의 통일된 형식, 즉 text-to-text 문제로 변환하는 T5 프레임워크를 제안한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;391&quot; data-start=&quot;183&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;391&quot; data-start=&quot;183&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 2. 핵심 아이디어 &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;391&quot; data-start=&quot;183&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt; T5의 가장 중요한 아이디어는 &lt;b&gt;모든 NLP 문제를 &amp;ldquo;텍스트 입력 &amp;rarr; 텍스트 출력&amp;rdquo; 형식으로 바꾸는 것&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-end=&quot;391&quot; data-start=&quot;183&quot; data-ke-style=&quot;style3&quot;&gt;예를 들어, 번역 테스크는&lt;br /&gt;- 입력: translate English to German: That is good.- 출력: Das ist gut.&lt;br /&gt;- 출력: Das ist gut.&lt;br /&gt;&lt;br /&gt;문장 분류 테스크는&lt;br /&gt;- 입력: cola sentence: The course is jumping well.&lt;br /&gt;- 출력: not acceptable&lt;br /&gt;&lt;br /&gt;요약 task 역시&lt;br /&gt;- 입력: summarize: 긴 기사 내용&lt;br /&gt;- 출력: 짧은 요약문&lt;/blockquote&gt;
&lt;p data-end=&quot;391&quot; data-start=&quot;183&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;391&quot; data-start=&quot;183&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이처럼 T5는 번역, 요약, 질의응답, 감성분석, 문장분류 등 다양한 NLP task를 모두 동일한 text-to-text 형식으로 처리한다. 이를 통해 같은 모델 구조, 같은 loss function, 같은 학습 절차를 여러 task에 적용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;391&quot; data-start=&quot;183&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;391&quot; data-start=&quot;183&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. 모델 구조 &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1260&quot; data-start=&quot;1212&quot; data-ke-size=&quot;size16&quot;&gt;T5는 &lt;b&gt;Transformer 기반 Encoder-Decoder 구조&lt;/b&gt;를 사용한다. Encoder는 입력 텍스트를 읽고 문맥 정보를 표현하며, Decoder는 Encoder의 출력을 바탕으로 정답 텍스트를 생성한다. 논문에서는 Encoder-Decoder 구조뿐 아니라 Language Model, Prefix Language Model 등 다양한 Transformer 구조를 비교한다. 그 결과, T5의 기본 구조인 Encoder-Decoder Transformer가 번역, 요약, 질의응답, 분류 task를 모두 처리하기에 적합하다는 것을 보인다.&lt;/p&gt;
&lt;p data-end=&quot;1260&quot; data-start=&quot;1212&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1260&quot; data-start=&quot;1212&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4. 사전학습 방식 &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1260&quot; data-start=&quot;1212&quot; data-ke-size=&quot;size16&quot;&gt;T5는 대규모 unlabeled text data를 이용해 먼저 사전학습을 수행한다. 이때 사용하는 대표적인 학습 방식은 &lt;b&gt;denoising objective&lt;/b&gt;이다. Denoising objective는 입력 문장의 일부를 가리고, 모델이 가려진 부분을 복원하도록 학습하는 방식이다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1260&quot; data-start=&quot;1212&quot; data-ke-style=&quot;style3&quot;&gt;예를 들어 원래 문장이 다음과 같다면,&lt;br /&gt;hank you for inviting me to your party last week.&lt;br /&gt;&lt;br /&gt;일부 단어를 제거한 뒤,&lt;br /&gt;Thank you &amp;lt;X&amp;gt; me to your party &amp;lt;Y&amp;gt; week.&lt;br /&gt;&lt;br /&gt;모델은 제거된 부분을 출력하도록 학습한다.&lt;br /&gt;&amp;lt;X&amp;gt; for inviting &amp;lt;Y&amp;gt; last&lt;/blockquote&gt;
&lt;p data-end=&quot;1260&quot; data-start=&quot;1212&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1260&quot; data-start=&quot;1212&quot; data-ke-size=&quot;size16&quot;&gt;즉, 모델은 문맥을 보고 빠진 내용을 복원하는 과정에서 언어의 구조와 의미를 학습한다.&lt;/p&gt;
&lt;p data-end=&quot;663&quot; data-start=&quot;535&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;663&quot; data-start=&quot;535&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 5. 데이터셋 &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2050&quot; data-start=&quot;1978&quot; data-ke-size=&quot;size16&quot;&gt;논문에서는 T5 학습을 위해 &lt;b&gt;C4, Colossal Clean Crawled Corpus&lt;/b&gt;라는 대규모 데이터셋을 사용한다. C4는 Common Crawl 웹 데이터에서 불필요한 문장, 중복 문장, 코드, 비영어 문서, 부적절한 표현 등을 제거하여 만든 깨끗한 영어 텍스트 데이터셋이다. 기존 웹 데이터는 노이즈가 많기 때문에, 논문에서는 정제 과정을 거친 대규모 corpus를 사용하여 사전학습의 품질을 높이고자 했다.&lt;/p&gt;
&lt;p data-end=&quot;2050&quot; data-start=&quot;1978&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;2050&quot; data-start=&quot;1978&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 6. 실험 내용 &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2050&quot; data-start=&quot;1978&quot; data-ke-size=&quot;size16&quot;&gt;단순히 새로운 모델 하나를 제안하는 데 그치지 않고, NLP transfer learning에서 중요한 요소들을 체계적으로 비교한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 71.5109%; height: 102px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.5725%; height: 17px;&quot;&gt;&lt;b&gt; 실험 요소 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 55.6053%; height: 17px;&quot;&gt;&lt;b&gt; 비교 내용 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.5725%; height: 17px;&quot;&gt;모델 구조&lt;/td&gt;
&lt;td style=&quot;width: 55.6053%; height: 17px;&quot;&gt;Encoder-Decoder, Language Model, Prefix LM 비교&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.5725%; height: 17px;&quot;&gt;사전학습 목표&lt;/td&gt;
&lt;td style=&quot;width: 55.6053%; height: 17px;&quot;&gt;Denoising objective, Language modeling 등 비교&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.5725%; height: 17px;&quot;&gt;데이터셋&lt;/td&gt;
&lt;td style=&quot;width: 55.6053%; height: 17px;&quot;&gt;C4 및 다른 pre-training data 비교&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.5725%; height: 17px;&quot;&gt;학습 방식&lt;/td&gt;
&lt;td style=&quot;width: 55.6053%; height: 17px;&quot;&gt;Fine-tuning, multi-task learning 등 비교&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.5725%; height: 17px;&quot;&gt;모델 크기&lt;/td&gt;
&lt;td style=&quot;width: 55.6053%; height: 17px;&quot;&gt;모델 scale을 키웠을 때 성능 변화 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-end=&quot;663&quot; data-start=&quot;535&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;663&quot; data-start=&quot;535&quot; data-ke-size=&quot;size16&quot;&gt;이를 통해 어떤 설정이 다양한 NLP task에서 가장 효과적인지 분석한다.&lt;/p&gt;
&lt;p data-end=&quot;663&quot; data-start=&quot;535&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;663&quot; data-start=&quot;535&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 7. 결과 및 의의 &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2832&quot; data-start=&quot;2671&quot; data-ke-size=&quot;size16&quot;&gt;실험 결과, &lt;b&gt;T5는 text-to-text 프레임워크를 통해 다양한 NLP task를 하나의 모델 구조로 처리할 수 있음&lt;/b&gt;을 보였다. 특히 모델 크기를 확장하고 C4 데이터셋으로 충분히 사전학습했을 때, 요약, 질의응답, 번역, 문장분류 등 여러 benchmark에서 높은 성능을 달성했다. 이 논문의 의의는 단순히 성능이 좋은 모델을 제안한 것뿐만 아니라, NLP 문제를 하나의 통일된 형식으로 바라볼 수 있는 관점을 제시했다는 점이다. &lt;b&gt;이후 instruction tuning이나 text-to-text 기반의 대형 언어모델 연구에도 큰 영향을 주었다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;2832&quot; data-start=&quot;2671&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;2832&quot; data-start=&quot;2671&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 8. 한계점 &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;3090&quot; data-start=&quot;2999&quot; data-ke-size=&quot;size16&quot;&gt;T5는 강력한 성능을 보였지만, &lt;span style=&quot;color: #ee2323;&quot;&gt;대규모 데이터와 많은 계산 자원이 필요하다는 한계&lt;/span&gt;가 있다. 특히 큰 모델을 학습하기 위해서는 막대한 GPU/TPU 자원이 필요하다. 또한 모든 task를 text-to-text 형식으로 변환하는 방식은 유연하지만, &lt;span style=&quot;color: #ee2323;&quot;&gt;task별로 최적화된 구조보다 비효율적&lt;/span&gt;일 수 있다. 예를 들어 단순 분류 문제도 텍스트 생성 문제처럼 처리하기 때문에 계산 비용이 증가할 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;3090&quot; data-start=&quot;2999&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;3090&quot; data-start=&quot;2999&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 9. 정리 &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;3090&quot; data-start=&quot;2999&quot; data-ke-size=&quot;size16&quot;&gt;T5 논문은 NLP의 다양한 task를 모두 &lt;b&gt;text-to-text format&lt;/b&gt;으로 통일하고, Transformer 기반 Encoder-Decoder 모델을 대규모 데이터로 사전학습한 뒤 여러 downstream task에 적용한 연구이다. 이 논문은 모델 구조, 사전학습 목표, 데이터셋, 학습 전략, 모델 크기 등을 체계적으로 비교함으로써 NLP transfer learning에서 어떤 요소가 성능에 중요한지 분석했다. T5는 이후 다양한 생성형 언어모델과 instruction-based NLP 모델의 기반이 된 중요한 연구라고 볼 수 있다.&lt;/p&gt;</description>
      <author>zzangsky</author>
      <guid isPermaLink="true">https://zzangsky.tistory.com/15</guid>
      <comments>https://zzangsky.tistory.com/15#entry15comment</comments>
      <pubDate>Wed, 20 May 2026 14:27:52 +0900</pubDate>
    </item>
    <item>
      <title>[Short Review] Generative Adversarial Networks (GAN)</title>
      <link>https://zzangsky.tistory.com/14</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1406.2661&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://arxiv.org/abs/1406.2661&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1778650069077&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Generative Adversarial Networks&quot; data-og-description=&quot;We propose a new framework for estimating generative models via an adversarial process, in which we simultaneously train two models: a generative model G that captures the data distribution, and a discriminative model D that estimates the probability that &quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/1406.2661&quot; data-og-url=&quot;https://arxiv.org/abs/1406.2661v1&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ijCfa/dJMb81fXtcO/cKXpFkrjtUJNC2rXcW52bk/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/pyuno/dJMb887dEmw/yQrA2MUU6N4UBmVn68VzRK/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1406.2661&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/1406.2661&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ijCfa/dJMb81fXtcO/cKXpFkrjtUJNC2rXcW52bk/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/pyuno/dJMb887dEmw/yQrA2MUU6N4UBmVn68VzRK/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Generative Adversarial Networks&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;We propose a new framework for estimating generative models via an adversarial process, in which we simultaneously train two models: a generative model G that captures the data distribution, and a discriminative model D that estimates the probability that&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;123&quot; data-start=&quot;108&quot; data-section-id=&quot;qgazyn&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1. 배경 및 문제점&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;251&quot; data-start=&quot;125&quot;&gt;기존 딥러닝은 이미지, 음성, 자연어처럼 복잡한 데이터를 잘 분류하는 discriminative model에서는 큰 성공을 거두었지만, 새로운 데이터를 생성하는 generative model에서는 한계가 있었다.&lt;/li&gt;
&lt;li data-end=&quot;251&quot; data-start=&quot;125&quot;&gt;기존 생성 모델들은 확률분포를 직접 계산하거나 추정해야 했기 때문에 학습이 복잡했다. 특히 RBM, DBM 같은 모델은 정규화 상수나 gradient 계산이 어렵고, 이를 해결하기 위해 MCMC 같은 샘플링 방법이 필요했다. 하지만 MCMC는 계산 비용이 크고 학습이 느리며, 샘플링 과정도 복잡하다는 문제가 있었다.&lt;/li&gt;
&lt;li data-end=&quot;251&quot; data-start=&quot;125&quot;&gt;또한 많은 생성 모델은 학습 과정에서 approximate inference나 Markov chain이 필요해 구조가 복잡했다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;608&quot; data-start=&quot;432&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 복잡한 확률 계산 없이, backpropagation만으로 학습할 수 있는 새로운 생성 모델 구조가 필요했다.&lt;/p&gt;
&lt;h3 data-end=&quot;629&quot; data-start=&quot;615&quot; data-section-id=&quot;3s7rs3&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2. 아키텍처 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;700&quot; data-start=&quot;631&quot;&gt;GAN은 Generator G와 Discriminator D라는 두 개의 신경망을 동시에 학습시키는 구조이다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;700&quot; data-start=&quot;631&quot;&gt;Generator는 random noise z를 입력받아 실제 데이터처럼 보이는 가짜 샘플을 생성한다.&lt;/li&gt;
&lt;li data-end=&quot;700&quot; data-start=&quot;631&quot;&gt;Discriminator는 입력 데이터가 실제 training data인지, Generator가 만든 fake data인지 구분한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-start=&quot;631&quot; data-end=&quot;700&quot;&gt;즉, GAN은 다음과 같은 구조를 가진다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;942&quot; data-start=&quot;863&quot;&gt;random noise z &amp;rarr; Generator G &amp;rarr; fake data 생성 &amp;rarr; Discriminator D가 real/fake 판별&lt;/li&gt;
&lt;li data-end=&quot;942&quot; data-start=&quot;863&quot;&gt;Generator는 진짜처럼 보이는 가짜 데이터를 만들려고 하고, Discriminator는 진짜와 가짜를 구별하려고 한다. 이 경쟁을 통해 두 모델이 함께 발전한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. 주요 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1195&quot; data-start=&quot;1121&quot; data-section-id=&quot;1gd9nc6&quot;&gt;&lt;b&gt;Adversarial Training 사용&lt;/b&gt;&lt;br /&gt;Generator와 Discriminator가 서로 경쟁하면서 학습한다.&lt;/li&gt;
&lt;li data-end=&quot;1296&quot; data-start=&quot;1197&quot; data-section-id=&quot;zmem3u&quot;&gt;&lt;b&gt;Minimax Game 구조&lt;/b&gt;&lt;br /&gt;Discriminator는 진짜와 가짜를 잘 구분하도록 학습하고, Generator는 Discriminator가 틀리도록 학습한다.&lt;/li&gt;
&lt;li data-end=&quot;1360&quot; data-start=&quot;1298&quot; data-section-id=&quot;soqaw4&quot;&gt;&lt;b&gt;Generator G&lt;/b&gt;&lt;br /&gt;noise z를 입력받아 데이터 분포를 모방하는 sample을 생성한다.&lt;/li&gt;
&lt;li data-end=&quot;1439&quot; data-start=&quot;1362&quot; data-section-id=&quot;1sk9x3c&quot;&gt;&lt;b&gt;Discriminator D&lt;/b&gt;&lt;br /&gt;입력 x가 실제 데이터에서 온 것인지, Generator가 만든 것인지 확률값으로 판단한다.&lt;/li&gt;
&lt;li data-end=&quot;1547&quot; data-start=&quot;1441&quot; data-section-id=&quot;1ev5tm9&quot;&gt;&lt;b&gt;Backpropagation으로 학습 가능&lt;/b&gt;&lt;br /&gt;두 모델 모두 multilayer perceptron으로 구성할 수 있고, 전체 학습이 backpropagation으로 가능하다.&lt;/li&gt;
&lt;li data-end=&quot;1628&quot; data-start=&quot;1549&quot; data-section-id=&quot;106qmhz&quot;&gt;&lt;b&gt;Markov chain 불필요&lt;/b&gt;&lt;br /&gt;기존 생성 모델과 달리 샘플 생성 과정에서 MCMC나 Markov chain이 필요하지 않다.&lt;/li&gt;
&lt;li data-end=&quot;1697&quot; data-start=&quot;1630&quot; data-section-id=&quot;1rghdxs&quot;&gt;&lt;b&gt;명시적 확률분포 계산 없음&lt;/b&gt;&lt;br /&gt;데이터의 확률분포를 직접 계산하지 않고, 샘플을 생성하는 방식으로 학습한다.&lt;/li&gt;
&lt;li data-end=&quot;1843&quot; data-start=&quot;1699&quot; data-section-id=&quot;188mh58&quot;&gt;&lt;b&gt;이론적 최적점 존재&lt;/b&gt;&lt;br /&gt;Generator의 분포가 실제 데이터 분포와 같아지면 Discriminator는 둘을 구분할 수 없게 되고, 모든 입력에 대해 1/2을 출력하게 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1859&quot; data-start=&quot;1850&quot; data-section-id=&quot;6obg3f&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. 의의&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1989&quot; data-start=&quot;1861&quot;&gt;GAN은 생성 모델을 학습하는 새로운 패러다임을 제안한 논문이다. 기존 생성 모델이 복잡한 확률 계산이나 Markov chain에 의존했던 것과 달리, GAN은 두 신경망의 경쟁 구조만으로 데이터 분포를 학습할 수 있음을 보였다.&lt;/li&gt;
&lt;li data-end=&quot;1989&quot; data-start=&quot;1861&quot;&gt;특히 Generator가 실제 데이터 분포를 잘 학습하면, Discriminator는 real data와 fake data를 구별할 수 없게 된다. 이는 GAN이 이론적으로 실제 데이터 분포를 복원할 수 있음을 의미한다.&lt;/li&gt;
&lt;li data-end=&quot;1989&quot; data-start=&quot;1861&quot;&gt;MNIST, Toronto Face Database, CIFAR-10 데이터셋을 통해 생성된 샘플을 시각적으로 보여주었고, GAN이 기존 생성 모델들과 비교해 경쟁력 있는 샘플을 만들 수 있음을 확인했다.&lt;/li&gt;
&lt;li data-end=&quot;1989&quot; data-start=&quot;1861&quot;&gt;GAN의 가장 큰 의의는 &lt;b&gt;생성 모델을 확률 계산 문제가 아니라, 두 모델의 경쟁 문제로 바꾸었다는 점&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이다. 이후 이미지 생성, 스타일 변환, 초해상도, 딥페이크, 데이터 증강 등 다양한 생성 AI 연구의 기반이 되었다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2422&quot; data-start=&quot;2413&quot; data-section-id=&quot;6jlnc4&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4. 한계&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2460&quot; data-start=&quot;2424&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;GAN은 강력한 생성 모델이지만 학습이 불안정하다는 한계가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;2606&quot; data-start=&quot;2462&quot; data-ke-size=&quot;size16&quot;&gt;Generator와 Discriminator가 균형 있게 학습되어야 하는데, 한쪽이 너무 강해지면 학습이 잘 진행되지 않는다.&lt;/p&gt;
&lt;p data-end=&quot;2606&quot; data-start=&quot;2462&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 예를 들어 Discriminator가 너무 빨리 좋아지면 Generator는 충분한 gradient를 받지 못해 학습이 어려워진다.&lt;/p&gt;
&lt;p data-end=&quot;2810&quot; data-start=&quot;2608&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Generator가 다양한 z 값을 같은 x로 보내는 문제가 발생할 수 있다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;2810&quot; data-start=&quot;2608&quot; data-ke-size=&quot;size16&quot;&gt;이는 이후 연구에서 &lt;b&gt;mode collapse&lt;/b&gt;라고 불리는 문제와 연결된다.&lt;/p&gt;
&lt;p data-end=&quot;2810&quot; data-start=&quot;2608&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 즉, Generator가 다양한 샘플을 생성하지 못하고 비슷한 결과만 반복해서 만드는 문제가 생길 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;2817&quot; data-start=&quot;2812&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2817&quot; data-start=&quot;2812&quot; data-ke-size=&quot;size16&quot;&gt;주요 한계&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2980&quot; data-start=&quot;2819&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2861&quot; data-start=&quot;2819&quot; data-section-id=&quot;1o52d74&quot;&gt;Generator와 Discriminator의 학습 균형을 맞추기 어려움&lt;/li&gt;
&lt;li data-end=&quot;2877&quot; data-start=&quot;2862&quot; data-section-id=&quot;27eizd&quot;&gt;학습이 불안정할 수 있음&lt;/li&gt;
&lt;li data-end=&quot;2904&quot; data-start=&quot;2878&quot; data-section-id=&quot;1edm0sm&quot;&gt;명시적인 확률분포 p(x)를 계산할 수 없음&lt;/li&gt;
&lt;li data-end=&quot;2920&quot; data-start=&quot;2905&quot; data-section-id=&quot;px1x1t&quot;&gt;생성 결과 평가가 어려움&lt;/li&gt;
&lt;li data-end=&quot;2942&quot; data-start=&quot;2921&quot; data-section-id=&quot;x89izo&quot;&gt;mode collapse 발생 가능&lt;/li&gt;
&lt;li data-end=&quot;2980&quot; data-start=&quot;2943&quot; data-section-id=&quot;3osvhi&quot;&gt;Discriminator와 Generator를 잘 동기화해야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3074&quot; data-start=&quot;2982&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 이후 DCGAN, WGAN, Conditional GAN 등 다양한 GAN 변형 모델들이 등장하여 학습 안정성, 조건부 생성, 이미지 품질 문제를 개선하게 됨.&lt;/p&gt;
&lt;p data-end=&quot;3074&quot; data-start=&quot;2982&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-end=&quot;3074&quot; data-start=&quot;2982&quot; data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; GAN은 random noise를 입력받아 가짜 데이터를 생성하는 Generator, 진짜/가짜를 구별하는 Discriminator를 경쟁적으로 학습시켜 실제 데이터와 비슷한 샘플을 생성하는 &lt;br /&gt;adversarial learning 기반 생성 모델이다. &lt;/span&gt;&lt;/blockquote&gt;</description>
      <author>zzangsky</author>
      <guid isPermaLink="true">https://zzangsky.tistory.com/14</guid>
      <comments>https://zzangsky.tistory.com/14#entry14comment</comments>
      <pubDate>Wed, 13 May 2026 15:10:35 +0900</pubDate>
    </item>
    <item>
      <title>[Paper Review] You Only Look Once: Unified, Real-Time Object Detection (YOLO)</title>
      <link>https://zzangsky.tistory.com/12</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1506.02640&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://arxiv.org/abs/1506.02640&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1778332106292&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;You Only Look Once: Unified, Real-Time Object Detection&quot; data-og-description=&quot;We present YOLO, a new approach to object detection. Prior work on object detection repurposes classifiers to perform detection. Instead, we frame object detection as a regression problem to spatially separated bounding boxes and associated class probabili&quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/1506.02640&quot; data-og-url=&quot;https://arxiv.org/abs/1506.02640v5&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/FQ1wo/dJMb887db0K/jdklfklKu7sePtPhJVXqIk/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/cBE2DT/dJMb8SpMkpQ/CFqDfoKv2Wsdj8tNrPck9K/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1506.02640&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/1506.02640&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/FQ1wo/dJMb887db0K/jdklfklKu7sePtPhJVXqIk/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/cBE2DT/dJMb8SpMkpQ/CFqDfoKv2Wsdj8tNrPck9K/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;You Only Look Once: Unified, Real-Time Object Detection&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;We present YOLO, a new approach to object detection. Prior work on object detection repurposes classifiers to perform detection. Instead, we frame object detection as a regression problem to spatially separated bounding boxes and associated class probabili&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; Abstract &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;YOLO는 새로운 객체 탐지(object detection) 방법이다. 기존 객체 탐지 방법들은 classifier를 객체 탐지에 재사용하는 방식을 사용하였다. 반면 YOLO는 객체 탐지를 bounding box와 class probability를 예측하는 하나의 regression 문제로 정의하였다. 단일 neural network가 이미지 전체를 한 번만 보고 bounding box와 class probability를 직접 예측한다. 전체 detection pipeline이 하나의 network로 구성되어 있기 때문에 detection 성능 자체를 end-to-end 방식으로 최적화할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;YOLO의 unified architecture는 매우 빠르다. 기본 YOLO 모델은 초당 45프레임(FPS)으로 실시간 처리가 가능하며, 더 작은 모델인 Fast YOLO는 155FPS를 달성하였다. 또한 기존 real-time detector보다 약 2배 높은 mAP를 기록하였다. YOLO는 state-of-the-art detector보다 localization error는 다소 많지만 background false positive는 훨씬 적었다. 또한 YOLO는 객체에 대한 일반화된 표현을 학습하며, artwork 같은 새로운 도메인에서도 DPM이나 R-CNN보다 더 좋은 성능을 보였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o1IqK/dJMcadu8aF6/CpnNMO85UH0WLy3gd5E8y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o1IqK/dJMcadu8aF6/CpnNMO85UH0WLy3gd5E8y0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o1IqK/dJMcadu8aF6/CpnNMO85UH0WLy3gd5E8y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo1IqK%2FdJMcadu8aF6%2FCpnNMO85UH0WLy3gd5E8y0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;486&quot; height=&quot;121&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;904&quot; data-start=&quot;887&quot; data-ke-size=&quot;size16&quot;&gt;Figure 1은 YOLO의 전체 detection pipeline을 보여준다. 입력 이미지를 448&amp;times;448로 resize한 뒤 단일 convolutional network를 통과시키고 bounding box와 confidence score를 예측한다. 이후 thresholding과 non-max suppression을 통해 최종 detection 결과를 생성한다.&lt;/p&gt;
&lt;h3 data-end=&quot;904&quot; data-start=&quot;887&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1. Introduction&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1068&quot; data-start=&quot;905&quot; data-ke-size=&quot;size16&quot;&gt;인간은 이미지를 보는 즉시 어떤 객체가 어디에 있는지 빠르게 이해할 수 있다. 이러한 능력은 자율주행, 보조 기기, 로봇 시스템 등 다양한 분야에서 중요하다. 하지만 기존 객체 탐지 시스템들은 매우 복잡한 구조를 사용하였다. 기존 detector들은 일반적으로 classifier를 여러 위치와 크기에서 반복 수행하는 방식을 사용하였다. DPM은 sliding window 기반 방식을 사용하였고, R-CNN은 먼저 region proposal을 생성한 뒤 CNN classifier를 수행하였다. 이후 bounding box refinement, duplicate removal 등 추가적인 후처리 과정도 필요하였다. 이러한 pipeline 구조는 속도가 느리고 각 단계가 분리되어 있기 때문에 최적화가 어렵다.&lt;/p&gt;
&lt;p data-end=&quot;1068&quot; data-start=&quot;905&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1621&quot; data-start=&quot;1383&quot; data-ke-size=&quot;size16&quot;&gt;YOLO는 객체 탐지를 하나의 regression 문제로 정의하였다. 이미지 픽셀에서 bounding box 좌표와 class probability를 직접 예측하며, 이미지 전체를 단 한 번만 보고 detection을 수행한다. 즉, region proposal 과정을 제거하고 단일 convolutional network만으로 detection을 수행한다. YOLO의 첫 번째 장점은 매우 빠르다는 점이다. detection을 regression 문제로 정의하였기 때문에 복잡한 pipeline이 필요하지 않다. 기본 YOLO는 45FPS로 동작하며 Fast YOLO는 150FPS 이상을 달성하였다. 이는 streaming video를 실시간으로 처리할 수 있는 수준이다.&lt;/p&gt;
&lt;p data-end=&quot;1621&quot; data-start=&quot;1383&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2080&quot; data-start=&quot;1840&quot; data-ke-size=&quot;size16&quot;&gt;두 번째 장점은 이미지 전체 문맥(global context)을 함께 학습할 수 있다는 점이다. 기존 sliding window 방식이나 region proposal 기반 방법들은 이미지 일부만 보기 때문에 background를 객체로 잘못 인식하는 경우가 많았다. 반면 YOLO는 전체 이미지를 동시에 보기 때문에 background error가 훨씬 적었다. 세 번째 장점은 일반화 성능이다. YOLO는 자연 이미지뿐 아니라 artwork와 같은 새로운 도메인에서도 높은 성능을 보였다. 이는 객체의 형태(shape)와 관계를 함께 학습하기 때문이다. 하지만 YOLO는 localization accuracy 측면에서는 기존 state-of-the-art detector보다 다소 부족하였다. 특히 작은 객체 탐지에서 약점을 보였다. 논문에서는 이후 실험에서 이러한 trade-off를 자세히 분석한다.&lt;/p&gt;
&lt;p data-end=&quot;2080&quot; data-start=&quot;1840&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;2436&quot; data-start=&quot;2414&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2. Unified Detection&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2641&quot; data-start=&quot;2437&quot; data-ke-size=&quot;size16&quot;&gt;YOLO는 객체 탐지의 모든 과정을 하나의 neural network로 통합하였다. 네트워크는 이미지 전체를 입력으로 받아 bounding box와 class probability를 동시에 예측한다. 따라서 전체 이미지와 객체 간 관계를 함께 고려할 수 있으며 end-to-end 학습이 가능하다. YOLO는 입력 이미지를 S&amp;times;S grid로 나눈다. 객체 중심이 특정 grid cell 안에 존재하면 해당 grid cell이 그 객체를 담당한다. 각 grid cell은 B개의 bounding box와 confidence score를 예측한다. confidence score는 객체 존재 여부와 localization accuracy를 함께 반영하며 다음과 같이 정의된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;39&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A0Liv/dJMcaf0PdLV/fzwokWmiyGn1eCgGMFzUp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A0Liv/dJMcaf0PdLV/fzwokWmiyGn1eCgGMFzUp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A0Liv/dJMcaf0PdLV/fzwokWmiyGn1eCgGMFzUp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA0Liv%2FdJMcaf0PdLV%2FfzwokWmiyGn1eCgGMFzUp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;252&quot; height=&quot;39&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;39&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;3014&quot; data-start=&quot;2882&quot; data-ke-size=&quot;size16&quot;&gt;객체가 존재하지 않는 경우 confidence는 0이 되고, 객체가 존재하는 경우에는 예측 bounding box와 ground truth 사이의 IOU를 의미한다. 각 bounding box는 x, y, w, h, confidence 총 5개의 값을 가진다. x,y는 bounding box 중심 좌표이며, w,h는 width와 height를 의미한다. 또한 각 grid cell은 conditional class probability &lt;span&gt;&lt;span&gt;Pr(Classi∣Object)&lt;/span&gt;&lt;/span&gt;도 함께 예측한다. 테스트 시에는 conditional class probability와 confidence score를 곱하여 최종 class-specific confidence score를 계산한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;43&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cA9tAE/dJMcabYs2LS/XLy4ZfdGCK8XU4LSljaBkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cA9tAE/dJMcabYs2LS/XLy4ZfdGCK8XU4LSljaBkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cA9tAE/dJMcabYs2LS/XLy4ZfdGCK8XU4LSljaBkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcA9tAE%2FdJMcabYs2LS%2FXLy4ZfdGCK8XU4LSljaBkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;532&quot; height=&quot;43&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;43&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;3488&quot; data-start=&quot;3399&quot; data-ke-size=&quot;size16&quot;&gt;이를 통해 객체 종류와 localization accuracy를 동시에 반영할 수 있다. 논문에서는 PASCAL VOC 기준으로 S=7, B=2, C=20을 사용하였다. 따라서 최종 출력 tensor는 다음과 같다. -&amp;gt; &lt;span&gt;&lt;span&gt;&lt;span&gt;7&amp;times;7&amp;times;30 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;3488&quot; data-start=&quot;3399&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;즉, 각 grid cell은 bounding box 2개와 class probability 20개를 예측한다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;495&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LmDad/dJMb997o4FU/XehRQa3kRBnVbZRvzsLCK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LmDad/dJMb997o4FU/XehRQa3kRBnVbZRvzsLCK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LmDad/dJMb997o4FU/XehRQa3kRBnVbZRvzsLCK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLmDad%2FdJMb997o4FU%2FXehRQa3kRBnVbZRvzsLCK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;495&quot; height=&quot;316&quot; data-origin-width=&quot;495&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;3754&quot; data-start=&quot;3734&quot; data-ke-size=&quot;size16&quot;&gt;Figure 2는 YOLO의 전체 모델 구조를 보여준다. 입력 이미지를 S&amp;times;S grid로 나눈 뒤 각 grid cell이 bounding box와 confidence score, class probability를 예측한다. 최종적으로 이 값들을 결합하여 detection 결과를 생성한다.&lt;/p&gt;
&lt;h3 data-end=&quot;3754&quot; data-start=&quot;3734&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2.1 Network Design&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;3952&quot; data-start=&quot;3755&quot; data-ke-size=&quot;size16&quot;&gt;YOLO는 convolutional neural network 기반 구조를 사용한다. 초기 convolution layer들은 이미지 특징(feature)을 추출하고 이후 fully connected layer가 bounding box와 class probability를 예측한다. 네트워크 구조는 GoogLeNet의 영향을 받았으며 총 24개의 convolution layer와 2개의 fully connected layer로 구성된다. GoogLeNet의 inception module 대신 1&amp;times;1 convolution과 3&amp;times;3 convolution을 반복적으로 사용하는 구조를 사용하였다. 1&amp;times;1 convolution은 feature dimension reduction 역할을 수행하여 연산량 감소에 도움을 준다. 또한 논문에서는 더 빠른 detection을 위한 Fast YOLO도 함께 제안하였다. Fast YOLO는 convolution layer 수를 줄이고 filter 수도 감소시킨 구조이다. 정확도는 다소 낮지만 훨씬 빠른 속도를 가진다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;897&quot; data-origin-height=&quot;325&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B9cDB/dJMcafmgA5l/R5XWFMfgZUSaKYNnbvd0Zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B9cDB/dJMcafmgA5l/R5XWFMfgZUSaKYNnbvd0Zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B9cDB/dJMcafmgA5l/R5XWFMfgZUSaKYNnbvd0Zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB9cDB%2FdJMcafmgA5l%2FR5XWFMfgZUSaKYNnbvd0Zk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;664&quot; height=&quot;241&quot; data-origin-width=&quot;897&quot; data-origin-height=&quot;325&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;3952&quot; data-start=&quot;3755&quot; data-ke-size=&quot;size16&quot;&gt;Figure 3은 YOLO의 전체 network architecture를 보여준다. 입력 이미지는 448&amp;times;448&amp;times;3 크기로 들어가며, 총 24개의 convolution layer와 2개의 fully connected layer로 구성된다. 1&amp;times;1 convolution layer를 사용하여 feature dimension을 줄인 뒤 3&amp;times;3 convolution을 수행하는 구조를 반복적으로 사용한다. 또한 detection task 이전에는 ImageNet classification task로 convolution layer를 pretraining하며, 이후 입력 해상도를 224&amp;times;224에서 448&amp;times;448로 증가시켜 detection에 맞게 fine-tuning한다.&lt;/p&gt;
&lt;p data-end=&quot;3952&quot; data-start=&quot;3755&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;14&quot; data-start=&quot;0&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2.2 Training&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;376&quot; data-start=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;YOLO는 먼저 ImageNet 1000-class classification dataset으로 convolution layer를 pretraining한다. Figure 3의 처음 20개 convolution layer 뒤에 average pooling layer와 fully connected layer를 추가하여 classification task를 학습하였다. 약 일주일 동안 학습을 진행하였으며, ImageNet 2012 validation set에서 top-5 accuracy 88%를 달성하였다. 이후 detection task를 위해 network 구조를 수정한다.&lt;/p&gt;
&lt;p data-end=&quot;591&quot; data-start=&quot;378&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;591&quot; data-start=&quot;378&quot; data-ke-size=&quot;size16&quot;&gt;Detection task에서는 pretrained network 뒤에 추가적인 convolution layer와 fully connected layer를 붙인다. 또한 detection은 더 세밀한 spatial information이 필요하기 때문에 입력 해상도를 224&amp;times;224에서 448&amp;times;448로 증가시켰다. YOLO의 최종 output layer는 bounding box coordinate와 class probability를 함께 예측한다. bounding box의 width와 height는 이미지 전체 크기에 대해 normalize되며, x,y 좌표는 특정 grid cell 내부에서의 offset 형태로 표현된다. 따라서 모든 값은 0~1 사이 범위를 가지게 된다. Activation function으로는 마지막 layer에서 linear activation을 사용하고, 나머지 layer에서는 Leaky ReLU를 사용한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;348&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1CGKU/dJMcahqQZSt/Ce9nK0eRK4INV9UgrcKGUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1CGKU/dJMcahqQZSt/Ce9nK0eRK4INV9UgrcKGUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1CGKU/dJMcahqQZSt/Ce9nK0eRK4INV9UgrcKGUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1CGKU%2FdJMcahqQZSt%2FCe9nK0eRK4INV9UgrcKGUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;348&quot; height=&quot;108&quot; data-origin-width=&quot;348&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1096&quot; data-start=&quot;1017&quot; data-ke-size=&quot;size16&quot;&gt;즉 음수 영역에서도 gradient가 완전히 0이 되지 않도록 설계하였다. YOLO는 전체 모델 학습에 sum-squared error loss를 사용한다. 하지만 detection 문제에서는 classification error와 localization error를 동일하게 취급하는 문제가 존재한다. 또한 대부분의 grid cell에는 객체가 존재하지 않기 때문에 no-object confidence loss가 지나치게 커지는 문제가 발생한다. 이 경우 객체가 존재하는 cell의 gradient보다 no-object cell의 gradient가 훨씬 커져 학습이 불안정해질 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;1096&quot; data-start=&quot;1017&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 이를 해결하기 위해 두 개의 hyperparameter 사용 : 람다_coord=5, 람다_noobj=0.5&lt;/p&gt;
&lt;p data-end=&quot;1096&quot; data-start=&quot;1017&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; bounding box coordinate loss의 비중은 증가시키고, 객체가 없는 cell의 confidence loss는 감소시킨다.&lt;/p&gt;
&lt;p data-end=&quot;1096&quot; data-start=&quot;1017&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 또한 큰 bounding box와 작은 bounding box의 오차를 동일하게 취급하지 않기 위해 width와 height 자체가 아니라 square root 값을 예측한다. (루트 w, 루트 h)&lt;/p&gt;
&lt;p data-end=&quot;1096&quot; data-start=&quot;1017&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1847&quot; data-start=&quot;1767&quot; data-ke-size=&quot;size16&quot;&gt;이를 통해 작은 객체 localization에 더 민감하게 반응할 수 있다. YOLO는 하나의 grid cell에서 여러 bounding box를 예측하지만 학습 시에는 하나의 predictor만 특정 객체를 담당하도록 한다. Ground truth box와 가장 높은 IOU를 가진 predictor가 해당 객체를 &amp;ldquo;responsible&amp;rdquo;하게 된다. 이를 통해 predictor specialization이 가능해지며 특정 predictor가 특정 크기나 aspect ratio의 객체를 더 잘 학습할 수 있게 된다. 논문에서 사용한 전체 loss function은 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k6iaT/dJMcajozoBB/4gmhqmvJYw21IaBnaDPOP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k6iaT/dJMcajozoBB/4gmhqmvJYw21IaBnaDPOP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k6iaT/dJMcajozoBB/4gmhqmvJYw21IaBnaDPOP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk6iaT%2FdJMcajozoBB%2F4gmhqmvJYw21IaBnaDPOP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;530&quot; height=&quot;422&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1847&quot; data-start=&quot;1767&quot; data-ke-size=&quot;size16&quot;&gt;여기서 &lt;span&gt;&lt;span&gt;1ijobj&lt;/span&gt;&lt;/span&gt;는 j번째 bounding box predictor가 해당 객체를 담당하는 경우를 의미한다. 또한 classification loss는 객체가 존재하는 grid cell에 대해서만 계산된다.&lt;/p&gt;
&lt;p data-end=&quot;1096&quot; data-start=&quot;1017&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;15&quot; data-start=&quot;0&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2.3 Inference&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;331&quot; data-start=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;YOLO는 test time에서도 단 한 번의 network evaluation만 수행한다. 기존 classifier 기반 detector처럼 region proposal을 반복적으로 생성하거나 여러 번의 classification 과정을 수행할 필요가 없다. PASCAL VOC 기준으로 YOLO는 이미지당 98개의 bounding box와 각 bounding box에 대한 class probability를 예측한다. 이러한 구조 덕분에 YOLO는 매우 빠른 detection 속도를 가진다. YOLO의 grid 기반 구조는 bounding box prediction에 spatial diversity를 부여한다. 일반적으로 객체가 어느 grid cell에 속하는지가 명확하기 때문에 하나의 객체에 대해 하나의 bounding box만 예측되는 경우가 많다. 하지만 큰 객체이거나 여러 grid cell 경계에 걸친 객체는 여러 cell에서 동시에 detection될 수 있다. 이를 해결하기 위해 YOLO는 non-max suppression(NMS)을 사용한다. R-CNN이나 DPM처럼 heavily dependent한 것은 아니지만, NMS를 적용하면 약 2~3%의 mAP 향상을 얻을 수 있었다. 즉 YOLO는 기본적으로 중복 detection이 비교적 적지만, 추가적인 post-processing을 통해 detection 성능을 더 향상시킬 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;331&quot; data-start=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;873&quot; data-start=&quot;848&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2.4 Limitations of YOLO&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1188&quot; data-start=&quot;874&quot; data-ke-size=&quot;size16&quot;&gt;YOLO는 매우 빠르고 단순한 구조를 가지지만 몇 가지 한계도 존재한다. 가장 큰 문제는 grid 기반 구조에서 발생하는 strong spatial constraint이다. 각 grid cell은 제한된 개수의 bounding box만 예측할 수 있으며 하나의 class만 담당할 수 있다. 따라서 서로 가까이 붙어 있는 여러 객체를 동시에 detection하는 데 어려움이 있다. 특히 새 떼(flocks of birds)처럼 작은 객체가 밀집된 경우 detection 성능이 크게 감소한다. 또한 YOLO는 bounding box를 데이터 기반으로 직접 학습하기 때문에 학습 데이터에서 자주 등장하지 않는 새로운 aspect ratio나 unusual configuration에 일반화하기 어렵다. 즉 객체의 형태나 배치가 기존 데이터와 크게 다른 경우 localization accuracy가 감소할 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;1588&quot; data-start=&quot;1409&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1588&quot; data-start=&quot;1409&quot; data-ke-size=&quot;size16&quot;&gt;YOLO는 여러 번의 downsampling layer를 사용하기 때문에 bounding box prediction에 필요한 fine-grained feature를 잃어버리는 문제도 존재한다. 따라서 작은 객체 localization에서 약점을 보인다.&lt;/p&gt;
&lt;p data-end=&quot;1843&quot; data-start=&quot;1590&quot; data-ke-size=&quot;size16&quot;&gt;또 다른 문제는 loss function 자체이다. YOLO의 loss function은 큰 bounding box와 작은 bounding box의 error를 동일하게 처리한다. 하지만 실제 detection에서는 작은 bounding box의 작은 오차가 IOU에 훨씬 큰 영향을 준다. 따라서 작은 객체 detection에서 localization error가 더 크게 나타난다. 논문은 YOLO의 주요 error source가 localization error라고 분석하였다. 즉 YOLO는 객체 존재 자체는 잘 예측하지만 bounding box 위치를 정확하게 맞추는 데는 기존 state-of-the-art detector보다 부족한 성능을 보였다.&lt;/p&gt;
&lt;p data-end=&quot;1843&quot; data-start=&quot;1590&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;42&quot; data-start=&quot;0&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. Comparison to Other Detection Systems&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;352&quot; data-start=&quot;43&quot; data-ke-size=&quot;size16&quot;&gt;객체 탐지는 컴퓨터 비전 분야의 핵심 문제 중 하나이며, 기존 detector들은 일반적으로 robust feature extraction 이후 classifier 또는 localizer를 사용하는 구조를 가진다. 이러한 classifier들은 sliding window 방식으로 이미지 전체에 적용되거나, region proposal을 기반으로 특정 영역에만 적용된다. 논문에서는 YOLO를 기존 주요 detection framework들과 비교하며 구조적 차이와 장단점을 설명한다.&lt;/p&gt;
&lt;p data-end=&quot;352&quot; data-start=&quot;43&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;390&quot; data-start=&quot;359&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Deformable Parts Model (DPM)&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;711&quot; data-start=&quot;391&quot; data-ke-size=&quot;size16&quot;&gt;DPM은 sliding window 기반 detector이다. 먼저 HOG(Histogram of Oriented Gradients)와 같은 handcrafted feature를 추출한 뒤 classifier를 사용하여 객체를 탐지한다. 또한 high-scoring region에 대해 bounding box prediction과 refinement를 수행한다. 즉 feature extraction, classification, localization 등이 각각 분리된 pipeline 형태로 구성된다. 반면 YOLO는 이러한 모든 과정을 단일 convolutional neural network 하나로 통합하였다. Feature extraction, bounding box prediction, contextual reasoning 등을 동시에 수행하며 detection task 자체에 맞게 feature를 end-to-end 방식으로 학습한다. 따라서 DPM보다 훨씬 빠르고 정확한 detection이 가능하다.&lt;/p&gt;
&lt;p data-end=&quot;711&quot; data-start=&quot;391&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;997&quot; data-start=&quot;989&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;R-CNN&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1295&quot; data-start=&quot;998&quot; data-ke-size=&quot;size16&quot;&gt;R-CNN 계열 모델은 sliding window 대신 region proposal을 사용한다. 먼저 Selective Search를 이용하여 potential bounding box를 생성하고, 이후 CNN으로 feature extraction을 수행한다. 이후 SVM classifier로 classification을 수행하고 linear regression으로 bounding box를 refinement한 뒤 non-max suppression을 적용한다. 하지만 이러한 구조는 매우 복잡하다. 각 단계가 독립적으로 존재하기 때문에 각각 따로 학습해야 하며 속도도 매우 느리다. 논문에서는 당시 R-CNN이 test time에서 이미지 한 장당 40초 이상이 걸린다고 설명한다. YOLO 역시 grid cell이 bounding box를 예측한다는 점에서는 R-CNN과 유사하지만 중요한 차이가 존재한다. YOLO는 spatial constraint를 사용하기 때문에 동일 객체에 대한 duplicate detection이 상대적으로 적다. 또한 R-CNN은 약 2000개의 proposal을 생성하지만 YOLO는 단 98개의 bounding box만 예측한다. 가장 큰 차이는 YOLO가 모든 과정을 단일 network 안에서 jointly optimized한다는 점이다.&lt;/p&gt;
&lt;p data-end=&quot;1295&quot; data-start=&quot;998&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1805&quot; data-start=&quot;1782&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Other Fast Detectors&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;2025&quot; data-start=&quot;1806&quot; data-ke-size=&quot;size16&quot;&gt;Fast R-CNN과 Faster R-CNN은 기존 R-CNN의 속도를 개선하기 위해 제안된 모델들이다. Fast R-CNN은 convolution computation을 공유하여 classification 속도를 높였고, Faster R-CNN은 region proposal 자체를 neural network로 대체하였다.&lt;/p&gt;
&lt;p data-end=&quot;2278&quot; data-start=&quot;2027&quot; data-ke-size=&quot;size16&quot;&gt;하지만 두 모델 모두 여전히 real-time performance에는 도달하지 못하였다. Faster R-CNN은 proposal generation 속도를 크게 개선하였지만 여전히 YOLO보다 훨씬 느렸다. 논문은 YOLO가 &amp;ldquo;fast by design&amp;rdquo; 구조라는 점을 강조한다. 즉 기존 pipeline 일부를 최적화한 것이 아니라 아예 pipeline 자체를 제거한 것이다. 기존 DPM 계열 detector들도 GPU acceleration, cascade, fast HOG computation 등을 사용하여 속도를 개선하려 하였다. 하지만 대부분 real-time performance를 달성하지 못하였다.&lt;/p&gt;
&lt;p data-end=&quot;2278&quot; data-start=&quot;2027&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2473&quot; data-start=&quot;2457&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Deep MultiBox&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;2779&quot; data-start=&quot;2474&quot; data-ke-size=&quot;size16&quot;&gt;Deep MultiBox는 Selective Search 대신 convolutional neural network를 사용하여 region proposal을 생성하는 모델이다. Bounding box prediction을 neural network로 수행한다는 점에서 YOLO와 유사하다. 하지만 MultiBox는 general object detection system이 아니라 proposal generation 단계에 가까우며, 이후 추가적인 classifier가 필요하다. 반면 YOLO는 bounding box prediction과 class probability prediction을 모두 수행하는 complete detection system이다. 즉 별도의 classifier나 proposal refinement 과정이 필요하지 않다.&lt;/p&gt;
&lt;p data-end=&quot;2779&quot; data-start=&quot;2474&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2990&quot; data-start=&quot;2979&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;OverFeat&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;3275&quot; data-start=&quot;2991&quot; data-ke-size=&quot;size16&quot;&gt;OverFeat는 convolutional neural network를 사용하여 localization과 detection을 동시에 수행하는 모델이다. Sliding window detection을 CNN 기반으로 효율적으로 구현하였지만 여전히 localization 중심 구조이며 global context reasoning이 부족하다. 따라서 coherent detection을 위해 추가적인 post-processing이 필요하다. 반면 YOLO는 이미지 전체를 동시에 보기 때문에 객체 간 관계와 global context를 함께 학습할 수 있다. 이는 YOLO가 background false positive를 줄일 수 있었던 중요한 이유 중 하나이다.&lt;/p&gt;
&lt;p data-end=&quot;3275&quot; data-start=&quot;2991&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;3462&quot; data-start=&quot;3449&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MultiGrasp&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;3722&quot; data-start=&quot;3463&quot; data-ke-size=&quot;size16&quot;&gt;YOLO의 grid 기반 bounding box prediction 방식은 이전의 MultiGrasp system과 유사하다. MultiGrasp는 grasp detection을 regression 문제로 정의하여 robotic grasping task를 수행하였다. 하지만 grasp detection은 단일 객체에 대한 graspable region만 찾으면 되는 비교적 단순한 문제이다. 반면 YOLO는 여러 객체에 대해 bounding box와 class probability를 동시에 예측해야 한다. 즉 훨씬 복잡한 general object detection 문제를 해결한다는 점에서 차이가 있다.&lt;/p&gt;
&lt;p data-end=&quot;1096&quot; data-start=&quot;1017&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;16&quot; data-start=&quot;0&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4. Experiments&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;265&quot; data-start=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;논문에서는 먼저 YOLO를 기존 real-time detector들과 비교하여 속도와 정확도를 분석하였다. 이후 YOLO와 Fast R-CNN의 error 유형을 비교하고, YOLO를 Fast R-CNN과 결합했을 때의 성능 변화도 함께 분석한다. 또한 VOC 2012 benchmark와 artwork dataset에서도 실험을 수행하여 YOLO의 일반화 성능을 평가하였다.&lt;/p&gt;
&lt;p data-end=&quot;265&quot; data-start=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;315&quot; data-start=&quot;272&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4.1 Comparison to Other Real-Time Systems&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;569&quot; data-start=&quot;316&quot; data-ke-size=&quot;size16&quot;&gt;객체 탐지 분야에서는 기존 detection pipeline의 속도를 개선하려는 연구들이 많이 존재하였다. 하지만 대부분은 일부 component만 최적화한 수준이었으며, 실제 real-time performance(30FPS 이상)를 달성한 경우는 거의 없었다. 논문에서는 YOLO를 기존 fast detector들과 비교하여 accuracy-speed tradeoff를 분석하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;303&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKPTrR/dJMcajozoJn/n7VJd3KMHobXRA8wVSTyt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKPTrR/dJMcajozoJn/n7VJd3KMHobXRA8wVSTyt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKPTrR/dJMcajozoJn/n7VJd3KMHobXRA8wVSTyt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKPTrR%2FdJMcajozoJn%2Fn7VJd3KMHobXRA8wVSTyt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;383&quot; height=&quot;236&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;303&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Table 1은 다양한 detector들의 mAP와 FPS를 비교한 결과이다. Fast YOLO는 155FPS로 가장 빠른 detector였으며, 52.7% mAP를 기록하였다. 기본 YOLO는 45FPS와 63.4% mAP를 기록하여 real-time performance를 유지하면서도 높은 정확도를 달성하였다. 반면 기존 detector들은 정확도는 높았지만 속도가 매우 느렸다. Fast R-CNN은 70.0% mAP를 기록하였지만 0.5FPS에 불과하였다. Faster R-CNN 역시 Faster proposal generation을 사용하였지만 YOLO보다 훨씬 느렸다. Faster R-CNN VGG-16은 73.2% mAP를 기록하였지만 속도는 7FPS였다.&lt;/p&gt;
&lt;p data-end=&quot;1328&quot; data-start=&quot;1083&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1328&quot; data-start=&quot;1083&quot; data-ke-size=&quot;size16&quot;&gt;논문은 YOLO가 &amp;ldquo;fast by design&amp;rdquo; 구조라는 점을 강조한다. 기존 detector들은 region proposal, feature extraction, classification 등의 pipeline 일부를 최적화하는 방식이었다. 반면 YOLO는 처음부터 detection 자체를 하나의 regression 문제로 정의하여 pipeline 자체를 제거하였다. 또한 YOLO VGG-16 모델도 실험하였다. 이 모델은 정확도는 증가하였지만 속도가 크게 감소하였다. 따라서 이후&amp;nbsp; real-time performance를 유지하는 기본 YOLO와 Fast YOLO 중심으로 실험을 진행한다. 실험 결과 YOLO는 기존 detector 대비 localization accuracy는 다소 낮았지만, real-time object detection이라는 측면에서는 매우 큰 성과를 보였다. 특히 Fast YOLO는 기존 real-time detector보다 약 2배 이상 높은 mAP를 기록하였다.&lt;/p&gt;
&lt;p data-end=&quot;1328&quot; data-start=&quot;1083&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1328&quot; data-start=&quot;1083&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.2 VOC 2007 Error Analysis &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1988&quot; data-start=&quot;1752&quot; data-ke-size=&quot;size16&quot;&gt;논문에서는 YOLO와 Fast R-CNN의 차이를 더 자세히 분석하기 위해 VOC 2007 benchmark에서 error analysis를 수행하였다. 특히 detection error를 유형별로 나누어 비교하였다. Fast R-CNN은 당시 PASCAL VOC에서 가장 높은 성능을 보이던 detector 중 하나였기 때문에 비교 대상으로 사용되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9GZ3c/dJMcaaZw70y/Zxx12hDxGyabEDXituVrjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9GZ3c/dJMcaaZw70y/Zxx12hDxGyabEDXituVrjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9GZ3c/dJMcaaZw70y/Zxx12hDxGyabEDXituVrjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9GZ3c%2FdJMcaaZw70y%2FZxx12hDxGyabEDXituVrjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;449&quot; height=&quot;232&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;255&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Figure 4는 YOLO와 Fast R-CNN의 error distribution을 비교한 결과이다. YOLO는 localization error 비중이 매우 높았으며, 이는 YOLO의 주요 문제점이 bounding box localization accuracy라는 것을 보여준다. 반면 Fast R-CNN은 background false positive 비율이 매우 높았다. YOLO는 객체 존재 자체는 잘 판단하지만 bounding box 위치를 정확히 맞추는 데 약점이 있었고, Fast R-CNN은 localization accuracy는 높지만 background false positive가 많았다. 이러한 차이는 이후 YOLO와 Fast R-CNN을 결합했을 때 성능 향상으로 이어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.3. Combining Fast R-CNN and YOLO &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;233&quot; data-start=&quot;36&quot; data-ke-size=&quot;size16&quot;&gt;앞선 error analysis에서 YOLO는 background false positive가 적고, Fast R-CNN은 localization accuracy가 높다는 차이를 확인하였다. 논문에서는 이러한 특성을 활용하여 YOLO와 Fast R-CNN을 결합하는 실험을 수행하였다. YOLO가 특정 객체를 높은 confidence로 예측한 경우, 해당 Fast R-CNN detection의 score를 증가시키는 방식이다. 즉 YOLO를 이용해 Fast R-CNN의 background false positive를 줄인다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;478&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rI8lp/dJMcah5stkT/0vCSCXLSZFEecZZLUCg7eK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rI8lp/dJMcah5stkT/0vCSCXLSZFEecZZLUCg7eK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rI8lp/dJMcah5stkT/0vCSCXLSZFEecZZLUCg7eK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrI8lp%2FdJMcah5stkT%2F0vCSCXLSZFEecZZLUCg7eK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;478&quot; height=&quot;150&quot; data-origin-width=&quot;478&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;788&quot; data-start=&quot;459&quot; data-ke-size=&quot;size16&quot;&gt;Table 2는 YOLO와 Fast R-CNN 결합 결과를 보여준다. 기존 Fast R-CNN은 71.8% mAP를 기록했지만, YOLO와 결합했을 때 75.0%까지 향상되었다. 이는 두 모델이 서로 다른 종류의 error를 가지기 때문이다. YOLO는 localization error는 많지만 background error가 적고, Fast R-CNN은 localization accuracy는 높지만 background false positive가 많다. 따라서 두 모델을 결합하면 서로의 약점을 보완할 수 있었다.&lt;/p&gt;
&lt;p data-end=&quot;233&quot; data-start=&quot;36&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4.4. VOC 2012 Results&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문에서는 YOLO를 PASCAL VOC 2012 benchmark에서도 평가하였다. YOLO는 VOC 2012 test set에서 57.9% mAP를 기록하였다. 이는 당시 최고 성능 detector보다는 낮았지만, real-time detector 중에서는 매우 높은 성능이었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgul94/dJMcaf0Peny/LzReN3Ty7WM2mDj3f7Zf70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgul94/dJMcaf0Peny/LzReN3Ty7WM2mDj3f7Zf70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgul94/dJMcaf0Peny/LzReN3Ty7WM2mDj3f7Zf70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcgul94%2FdJMcaf0Peny%2FLzReN3Ty7WM2mDj3f7Zf70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;738&quot; height=&quot;257&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1248&quot; data-start=&quot;1059&quot; data-ke-size=&quot;size16&quot;&gt;YOLO는 bottle, sheep, tv/monitor 같은 작은 객체 category에서 낮은 성능을 보였다. 이는 grid 기반 구조와 localization limitation 때문이다. 반면 cat, train 같은 category에서는 높은 성능을 기록하였다. 또한 Fast R-CNN과 YOLO를 결합한 모델은 VOC 2012 leaderboard에서 높은 성능을 기록하였다. 논문은 이를 통해 YOLO가 단독 detector뿐 아니라 다른 detector와 결합했을 때도 효과적이라는 점을 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4.5. Generalizability: Person Detection in Artwork&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문에서는 detector들의 일반화 성능을 평가하기 위해 artwork dataset에서 person detection 실험을 수행하였다. 실험에는 Picasso Dataset과 People-Art Dataset이 사용되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5EJSq/dJMcadu8bbj/3Iw8KXikgWhXRy4r2J6yYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5EJSq/dJMcadu8bbj/3Iw8KXikgWhXRy4r2J6yYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5EJSq/dJMcadu8bbj/3Iw8KXikgWhXRy4r2J6yYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5EJSq%2FdJMcadu8bbj%2F3Iw8KXikgWhXRy4r2J6yYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;713&quot; height=&quot;291&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1882&quot; data-start=&quot;1692&quot; data-ke-size=&quot;size16&quot;&gt;Figure 5는 YOLO와 기존 detector들의 일반화 성능을 비교한 결과이다. R-CNN은 artwork dataset에서 성능이 크게 감소하였지만, YOLO는 비교적 높은 성능을 유지하였다. 이는 YOLO가 이미지 전체 문맥과 객체 구조를 함께 학습하기 때문이다. 반면 DPM은 artwork에서도 비교적 안정적인 성능을 보였지만 전체 detection 성능은 YOLO보다 낮았다. 논문은 이를 통해 YOLO가 새로운 domain에서도 잘 일반화된다고 설명한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;415&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m9QdV/dJMb99TRsPt/QNjA15WUWcF8yclwEkOlO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m9QdV/dJMb99TRsPt/QNjA15WUWcF8yclwEkOlO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m9QdV/dJMb99TRsPt/QNjA15WUWcF8yclwEkOlO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm9QdV%2FdJMb99TRsPt%2FQNjA15WUWcF8yclwEkOlO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;689&quot; height=&quot;287&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;415&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;36&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;36&quot; data-start=&quot;0&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;5. Real-Time Detection In The Wild&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;216&quot; data-start=&quot;37&quot; data-ke-size=&quot;size16&quot;&gt;논문에서는 YOLO를 webcam 환경에 적용하여 real-time detection 성능을 확인하였다. YOLO는 streaming video에서도 매우 빠르게 동작하였으며, 실시간으로 객체를 detection하고 tracking하는 것이 가능하였다. 기존 detector들은 detection 속도가 매우 느려 실시간 환경에서 사용하기 어려웠다. 반면 YOLO는 단일 neural network만 사용하기 때문에 low latency를 가지며, background prediction error도 적었다. 따라서 실제 환경에서도 안정적으로 detection을 수행할 수 있었다.&lt;/p&gt;
&lt;div data-is-intersecting=&quot;true&quot; data-turn-id-container=&quot;request-69ff3511-2880-83a2-ac48-aff6664f20fa-3&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-turn-start-message=&quot;true&quot; data-message-model-slug=&quot;gpt-5-5&quot; data-message-id=&quot;98a042e4-ea52-4877-8cad-f6a3d85d0ff0&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-end=&quot;643&quot; data-start=&quot;628&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;6. Conclusion&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;866&quot; data-start=&quot;644&quot; data-ke-size=&quot;size16&quot;&gt;본 논문에서는 객체 탐지를 하나의 regression 문제로 정의한 YOLO를 제안하였다. YOLO는 region proposal 기반의 복잡한 detection pipeline을 제거하고, 단일 convolutional neural network만으로 bounding box와 class probability를 동시에 예측한다.&lt;/p&gt;
&lt;p data-end=&quot;1070&quot; data-start=&quot;868&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1070&quot; data-start=&quot;868&quot; data-ke-size=&quot;size16&quot;&gt;YOLO의 가장 큰 특징은 매우 빠른 속도이다. 기본 YOLO는 45FPS, Fast YOLO는 155FPS를 달성하여 real-time object detection이 가능하였다. 또한 background false positive가 적고 새로운 domain에서도 높은 일반화 성능을 보였다.&lt;/p&gt;
&lt;p data-end=&quot;1273&quot; data-start=&quot;1072&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1273&quot; data-start=&quot;1072&quot; data-ke-size=&quot;size16&quot;&gt;반면 localization accuracy 측면에서는 기존 state-of-the-art detector보다 다소 부족하였으며, 특히 작은 객체 탐지에서 약점을 보였다. 하지만 YOLO는 detection을 end-to-end 방식으로 최적화할 수 있다는 점에서 매우 중요한 의미를 가진다. YOLO가 object detection 분야의 새로운 방향성을 제시하였다. 이후 YOLOv2, YOLOv3, YOLOv4 등 다양한 후속 연구의 기반이 되었으며, real-time object detection 분야에 큰 영향을 주었다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <author>zzangsky</author>
      <guid isPermaLink="true">https://zzangsky.tistory.com/12</guid>
      <comments>https://zzangsky.tistory.com/12#entry12comment</comments>
      <pubDate>Sat, 9 May 2026 22:08:29 +0900</pubDate>
    </item>
    <item>
      <title>[Short Review] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks</title>
      <link>https://zzangsky.tistory.com/11</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1506.02640&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://arxiv.org/abs/1506.02640&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1778326498885&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;You Only Look Once: Unified, Real-Time Object Detection&quot; data-og-description=&quot;We present YOLO, a new approach to object detection. Prior work on object detection repurposes classifiers to perform detection. Instead, we frame object detection as a regression problem to spatially separated bounding boxes and associated class probabili&quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/1506.02640&quot; data-og-url=&quot;https://arxiv.org/abs/1506.02640v5&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/FQ1wo/dJMb887db0K/jdklfklKu7sePtPhJVXqIk/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/cBE2DT/dJMb8SpMkpQ/CFqDfoKv2Wsdj8tNrPck9K/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1506.02640&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/1506.02640&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/FQ1wo/dJMb887db0K/jdklfklKu7sePtPhJVXqIk/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/cBE2DT/dJMb8SpMkpQ/CFqDfoKv2Wsdj8tNrPck9K/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;You Only Look Once: Unified, Real-Time Object Detection&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;We present YOLO, a new approach to object detection. Prior work on object detection repurposes classifiers to perform detection. Instead, we frame object detection as a regression problem to spatially separated bounding boxes and associated class probabili&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 1. 배경 및 문제점 &lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;존 Fast R-CNN은 detection 속도는 빨라졌지만, 여전히 Selective Search 같은 region proposal 알고리즘이 bottleneck이었다.&lt;/li&gt;
&lt;li&gt;Selective Search는 CPU 기반 알고리즘으로 이미지당 약 2초 정도가 필요해 전체 detection 속도를 제한하였다.&lt;/li&gt;
&lt;li&gt;기존 object proposal 방법들은 detection network와 별개로 동작하여 convolution feature를 공유하지 못했다.&lt;/li&gt;
&lt;li&gt;Multi-scale 처리를 위해 image pyramid나 filter pyramid를 사용하는 방식은 정확도는 높지만 계산량이 매우 크다는 문제가 있었다.&lt;/li&gt;
&lt;li&gt;Detection network와 proposal network를 하나로 통합하고, convolution 연산을 공유하는 구조가 필요했다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 2. 아키텍처 특징 &lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Faster R-CNN은 Region Proposal Network(RPN)와 Fast R-CNN detector를 하나의 unified network로 통합하였다.&lt;/li&gt;
&lt;li data-end=&quot;707&quot; data-start=&quot;637&quot;&gt;RPN은 convolution feature map 위를 sliding window 방식으로 탐색하며 object proposal을 생성한다.&lt;/li&gt;
&lt;li data-end=&quot;707&quot; data-start=&quot;637&quot;&gt;각 위치마다 여러 개의 anchor box를 사용하여 다양한 scale과 aspect ratio의 객체를 동시에 예측하였다.&lt;/li&gt;
&lt;li data-end=&quot;707&quot; data-start=&quot;637&quot;&gt;기본적으로 3개의 scale과 3개의 aspect ratio를 사용하여 총 9개의 anchor를 생성하였다.&lt;/li&gt;
&lt;li data-end=&quot;707&quot; data-start=&quot;637&quot;&gt;RPN은 각 anchor에 대해 object 여부(classification score), bounding box 좌표(regression)를 동시에 예측한다.&lt;/li&gt;
&lt;li data-end=&quot;707&quot; data-start=&quot;637&quot;&gt;Proposal network와 detection network가 convolution layer를 공유하기 때문에 region proposal 계산 비용이 매우 작다.&lt;/li&gt;
&lt;li data-end=&quot;707&quot; data-start=&quot;637&quot;&gt;기존 image pyramid 대신 anchor 기반 multi-scale 방식을 사용하여 계산량을 크게 줄였다.&lt;/li&gt;
&lt;li data-end=&quot;707&quot; data-start=&quot;637&quot;&gt;Alternating Training 방식을 사용하여 RPN과 Fast R-CNN을 번갈아 학습하였다.&lt;/li&gt;
&lt;li data-end=&quot;1177&quot; data-start=&quot;1108&quot;&gt;&amp;nbsp;RoI Pooling을 사용해 proposal 영역을 fixed-length feature vector로 변환하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 3. 의의&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1340&quot; data-start=&quot;1289&quot;&gt;Region proposal과 object detection을 하나의 CNN으로 통합&lt;/li&gt;
&lt;li data-end=&quot;1377&quot; data-start=&quot;1342&quot;&gt;Region proposal 계산 속도를 획기적으로 개선&lt;/li&gt;
&lt;li data-end=&quot;1419&quot; data-start=&quot;1379&quot;&gt;Convolution feature 공유로 매우 높은 효율성 달성&lt;/li&gt;
&lt;li data-end=&quot;1470&quot; data-start=&quot;1421&quot;&gt;Selective Search 없이도 높은 detection accuracy 달성&lt;/li&gt;
&lt;li data-end=&quot;1510&quot; data-start=&quot;1472&quot;&gt;Real-time에 가까운 object detection 가능&lt;/li&gt;
&lt;li data-end=&quot;1580&quot; data-start=&quot;1512&quot;&gt;이후 Faster R-CNN, Mask R-CNN, Feature Pyramid Network 등의 기반 구조가 됨&lt;/li&gt;
&lt;li data-end=&quot;1652&quot; data-start=&quot;1582&quot;&gt;Two-stage detector의 대표적인 구조 제시&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4. 한계&lt;/span&gt;&lt;/h3&gt;
&lt;div data-is-intersecting=&quot;true&quot; data-turn-id-container=&quot;request-69feb903-4214-83a8-a6c1-725b2996266c-19&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-message-model-slug=&quot;gpt-5-5&quot; data-turn-start-message=&quot;true&quot; data-message-id=&quot;081cf74c-d469-46d7-a82c-8e3a1e5e7149&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1699&quot; data-start=&quot;1665&quot;&gt;Two-stage 구조라 YOLO 계열보다 여전히 느림&lt;/li&gt;
&lt;li data-end=&quot;1736&quot; data-start=&quot;1701&quot;&gt;Anchor box hyperparameter 설정 필요&lt;/li&gt;
&lt;li data-end=&quot;1759&quot; data-start=&quot;1738&quot;&gt;작은 객체 탐지 성능 한계 존재&lt;/li&gt;
&lt;li data-end=&quot;1811&quot; data-start=&quot;1761&quot;&gt;Region proposal과 detection 단계를 모두 수행해야 해 구조 복잡&lt;/li&gt;
&lt;li data-end=&quot;1811&quot; data-start=&quot;1761&quot;&gt;학습 과정(alternating training)이 비교적 복잡함&lt;/li&gt;
&lt;li data-end=&quot;2054&quot; data-start=&quot;1892&quot;&gt;Anchor box 기반의 Region Proposal Network(RPN)를 사용하여 region proposal과 object detection을 하나의 CNN으로 통합한 two-stage object detector&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;Anchor box 기반의 Region Proposal Network(RPN)를 사용하여 region proposal과 object detection을 하나의 CNN에서 수행하는 고속 two-stage object detection 구조&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>zzangsky</author>
      <guid isPermaLink="true">https://zzangsky.tistory.com/11</guid>
      <comments>https://zzangsky.tistory.com/11#entry11comment</comments>
      <pubDate>Sat, 9 May 2026 21:50:59 +0900</pubDate>
    </item>
    <item>
      <title>[Paper Review] Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition (SPPNet)</title>
      <link>https://zzangsky.tistory.com/10</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1406.4729&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://arxiv.org/abs/1406.4729&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1778300994641&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition&quot; data-og-description=&quot;Existing deep convolutional neural networks (CNNs) require a fixed-size (e.g., 224x224) input image. This requirement is &amp;quot;artificial&amp;quot; and may reduce the recognition accuracy for the images or sub-images of an arbitrary size/scale. In this work, we equip th&quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/1406.4729&quot; data-og-url=&quot;https://arxiv.org/abs/1406.4729v4&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/blXrSJ/dJMb9cBMmOf/kaR2UbG93ONKM9PoTftUb1/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/bnJ4Df/dJMb9kmg0W0/5TVCTNl47MQ7vYfZdgCzEK/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1406.4729&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/1406.4729&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/blXrSJ/dJMb9cBMmOf/kaR2UbG93ONKM9PoTftUb1/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/bnJ4Df/dJMb9kmg0W0/5TVCTNl47MQ7vYfZdgCzEK/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Existing deep convolutional neural networks (CNNs) require a fixed-size (e.g., 224x224) input image. This requirement is &quot;artificial&quot; and may reduce the recognition accuracy for the images or sub-images of an arbitrary size/scale. In this work, we equip th&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Abstract&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;기존의 CNN은 고정된 크기 (ex:224x224)의 입력 이미지를 필요로 한다. 하지만 이 요구사항은 다양한 크기나 비율을 가진 이미지 또는 부분 이미지(sub-image)에 대해 인식 정확도를 떨어뜨릴 수 있다.&lt;/span&gt; 이러한 문제를 해결하기 위해 &lt;b&gt;Spatial Pyramid Pooling(SPP)&lt;/b&gt; 이라는 새로운 pooling 전략을 CNN에 적용하였다. 제안된 네트워크 구조인 &lt;b&gt;SPP-net&lt;/b&gt; 은 입력 이미지의 크기나 스케일(scale)에 관계없이 항상 고정 길이의 특징 벡터(feature representation)를 생성할 수 있다. 또한 pyramid pooling은 객체의 형태 변형(object deformation)에 대해서도 강인한 특성을 가진다. 이러한 장점 덕분에 SPP-net은 전반적으로 CNN 기반 이미지 분류 성능을 향상시킬 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ImageNet 2012 데이터셋 실험 결과, 서로 다른 구조를 가진 다양한 CNN 아키텍처에서 모두 정확도를 향상시키는 것을 확인하였다. 또한 Pascal VOC 2007과 Caltech101 데이터셋에서는 fine-tuning 없이도 단일 full-image representation만 사용하여 당시 최고 수준(state-of-the-art)의 분류 성능을 달성하였다. SPP-net의 강점은 객체 탐지(object detection)에서도 크게 나타난다. 기존 방식은 후보 영역(region proposal)마다 convolution 연산을 반복 수행해야 했지만, SPP-net은 전체 이미지에 대해 convolution feature map을 한 번만 계산한 뒤, 원하는 영역에 대해서만 pooling을 수행하여 고정 길이 특징 벡터를 생성한다. 이를 통해 불필요한 convolution 계산을 제거하였다. 그리하여 기존 R-CNN보다 약 24배 ~102배 더 빠르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 기존 CNN은 고정 입력 크기 요구해 crop이나 wrap 과정 필요했는데 SPP는 입력 크기 상관 없이 고정 길이 feature vector 생성할 수 있어 다양한 scale과 spatial 정보를 유지할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 1. Introduction &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 컴퓨터 비전 분야에서는 딥 컨볼루션 신경망(CNN)의 발전과 대규모 학습 데이터셋의 등장으로 인해 매우 큰 변화가 일어나고 있다. CNN 기반 방법들은 이미지 분류(image classification), 객체 탐지(object detection), 다양한 인식(recognition) 작업뿐 아니라 비인식(non-recognition) 작업에서도 기존 최고 성능(state-of-the-art)을 크게 향상시키고 있다. 하지만 CNN의 학습과 테스트 과정에는 한 가지 기술적인 문제가 존재한다. 대부분의 CNN은 224&amp;times;224처럼 고정된 크기의 입력 이미지를 필요로 한다는 점이다. 현재 일반적으로 사용하는 방법은 입력 이미지를 crop하거나 warp(이미지 강제로 늘리거나 줄이기)하여 강제로 맞추는 것이다. crop 방식은 객체 전체가 포함되지 않을 수 있고, warp 방식은 이미지 형태가 왜곡될 수 있다. 따라서 이미지 내용 손실(content loss)이나 기하학적 왜곡(geometric distortion)이 발생하여 인식 정확도가 떨어질 수 있다. 또한 객체 크기가 다양한 경우, 하나의 고정된 입력 크기만 사용하는 것은 적절하지 않을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1001&quot; data-start=&quot;872&quot; data-ke-size=&quot;size16&quot;&gt;Convolution layer는 sliding window 방식으로 동작하기 때문에 입력 이미지 크기가 달라도 feature map을 생성할 수 있다. 즉 convolution layer 자체는 고정 입력 크기를 요구하지 않는다. 반면 fully connected layer는 고정 길이의 벡터만 입력으로 받을 수 있기 때문에, 네트워크 전체가 고정 크기 입력만 받도록 제한된다. &lt;span style=&quot;color: #ee2323;&quot;&gt;즉 fixed-size constraint는 fully connected layer 때문에 발생하는 것이다.&lt;/span&gt; 이를 해결하기 위해 논문은 &lt;b&gt;마지막 convolution layer 위에 Spatial Pyramid Pooling(SPP) layer를 추가한다.&lt;/b&gt; SPP layer는 입력 이미지 크기와 관계없이 항상 고정 길이 출력(feature vector)을 생성할 수 있다. 생성된 고정 길이 벡터는 이후 fully connected layer에 입력된다. 즉 논문은 &lt;b&gt;이미지 입력 단계에서 crop이나 warp를 수행하는 대신, convolution feature map 이후 단계에서 정보를 aggregation(통합)하여 입력 크기 제한 문제를 해결하였다.&lt;/b&gt; 논문에서는 이러한 새로운 구조를 &lt;b&gt;SPP-net&lt;/b&gt; 이라고 부른다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxAWRb/dJMcacwiVt5/WQS22xiBCcfJzoTdQZQk11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxAWRb/dJMcacwiVt5/WQS22xiBCcfJzoTdQZQk11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxAWRb/dJMcacwiVt5/WQS22xiBCcfJzoTdQZQk11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxAWRb%2FdJMcacwiVt5%2FWQS22xiBCcfJzoTdQZQk11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;428&quot; height=&quot;179&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spatial Pyramid Pooling(SPP)은 기존 Bag-of-Words(BoW) 모델을 확장한 방법으로, 컴퓨터 비전 분야에서 매우 성공적으로 사용되어 왔다. SPP는 이미지를 여러 단계(level)의 spatial bin으로 나누고, 각 영역의 local feature를 pooling한다. SPP는 CNN에 적용했을 때 3가지 장점을 가진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 입력 이미지 크기와 관계없이 fixed-length output 생성 가능 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. single-level pooling이 아니라 multi-level pooling 사용 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 다양한 scale에서 추출된 feature를 pooling 가능&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 multi-level pooling은 object deformation(객체 형태 변화)에 강인한 특성을 가진다고 알려져 있다. 또한 SPP-net은 테스트 단계뿐 아니라 학습 단계에서도 다양한 크기의 입력 이미지를 사용할 수 있게 한다. 논문에서는 multi-size training을 제안한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 방법 : 서로 다른 입력 크기의 net 사용 -&amp;gt; 모든 parameters 공유 -&amp;gt; epoch마다 입력 크기 변경하며 학습&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 예시 : 한 epoch는 224x224, 다음 epoch는 180x180&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 방식은 scale invariance를 증가시키고 overfitting을 감소시키는 효과를 가진다. 논문에서는 multi-size training이 기존 single-size training과 비슷한 속도로 수렴하면서도 더 좋은 성능을 보였다고 설명한다. 논문은 SPP의 장점이 특정 CNN 구조에만 적용되는 것이 아니라고 한다. SPP-net은 object detection에서도 큰 장점을 가진다. 기존 R-CNN은 약 2,000개의 candidate window 각각에 CNN을 반복 수행해야 했기 때문에 feature extraction 시간이 매우 오래 걸렸다. 반면 SPP-net은 전체 이미지에 대해 conv feature map을 한번만 계산하고 feature map의 원하는 영역에서 pooling을 수행하는 방식을 사용한다.&amp;nbsp; conv 연산을 반복하지 않고 feature map을 재사용할 수 있기 때문에 계산량이 크게 감소한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* spatial arrangement : feature의 공간적 위치 정보 (ex : edge가 어디 위치하는지, 객체가 이미지 어느 부분에 있는지)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Bag-of-words : 이미지를 local feature들의 집합처럼 표현하는 전통적 computer vision 방법 -&amp;gt; spactial imformation 보존 불가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Scale Invariance : 객체 크기가 달라져도 비슷하게 인식할 수 있는 능력 (ex : 가까운 자동차, 먼 자동차 둘 다 같은 객체로 인식)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Candidate Window : 객체가 존재할 가능성이 있는 후보 영역 -&amp;gt; object detection에서 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2 DEEP NETWORKS WITH SPATIAL PYRAMID POOLING&lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2.1 Convolutional Layers and Feature Maps&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적으로 많이 사용되는 7-layer CNN 구조를 기준으로, 처음 5개 layer는 convolution layer이고 일부 뒤에는 pooling layer가 따라온다. 마지막 2개 layer는 fully connected layer이며, 마지막에는 N-way softmax classifier가 존재한다. 여기서 N은 클래스(category)의 개수를 의미한다. Convolution layer는 입력 이미지 크기에 상관없이 동작할 수 있다. Convolution filter는 sliding window 방식으로 이미지를 이동하며 연산을 수행하고, 결과로 feature map을 생성한다. 생성된 feature map은 입력 이미지의 spatial information(공간 정보)을 유지한다. 즉 feature response의 강도뿐 아니라 위치 정보까지 함께 포함하고 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1129&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caXC6h/dJMcab5cQd9/SrrKfRF9XuqFwksmkKG681/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caXC6h/dJMcab5cQd9/SrrKfRF9XuqFwksmkKG681/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caXC6h/dJMcab5cQd9/SrrKfRF9XuqFwksmkKG681/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaXC6h%2FdJMcab5cQd9%2FSrrKfRF9XuqFwksmkKG681%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1129&quot; height=&quot;270&quot; data-origin-width=&quot;1129&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Figure 2는 conv5 layer의 일부 filter들이 어떤 패턴에 반응하는지를 보여주는 그림이다. 특정 filter들이 특정 semantic pattern을 학습한다. 예를들어 55번 필터는 원 모양에 강하게 반응하고 66번째 필터는 ^ 형태에 반응한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; CNN의 convolution layer는 단순 edge 수준 특징만 학습하는 것이 아니라, 점점 더 의미 있는 시각 패턴(semantic content)을 학습한다는 것을 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화살표는 feature map의 strongest response 위치와 입력 이미지 내 대응 위치를 나타낸다. 즉 feature map은 단순 feature 값만이 아니라 spatial location 정보도 유지하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2.2 The Spatial Pyramid Pooling Layer&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Convolution layer는 입력 크기에 상관없이 동작할 수 있지만, 출력되는 feature map의 크기는 입력 이미지 크기에 따라 달라진다. 반면 classifier(SVM/softmax)나 fully connected layer는 고정 길이의 vector를 필요로 한다. 논문은 이러한 고정 길이 vector를 생성하기 위해 Bag-of-Words(BoW) 방식과 Spatial Pyramid Pooling(SPP)을 사용한다. &lt;span style=&quot;color: #ee2323;&quot;&gt;기존 BoW 방식은 이미지 전체의 feature를 하나로 pooling하여 고정 길이 vector를 만든다. 하지만 이 방식은 spatial information(공간 정보)을 거의 유지하지 못한다는 한계가 있다.&lt;/span&gt; &lt;b&gt;반면 Spatial Pyramid Pooling은 이미지를 여러 단계(level)의 spatial bin으로 나누어 pooling을 수행한다. 각 spatial bin의 크기는 입력 이미지 크기에 비례하여 결정되기 때문에, 입력 이미지 크기가 달라도 항상 동일한 개수의 bin을 생성할 수 있다.&lt;/b&gt; 즉 최종 output dimension은 항상 고정된다. 그래서 기존 CNN의 마지막 pooling layer를 SPP로 교체한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IsF4b/dJMb99TQQtR/XlO8utcdm2hC7i3x4kKP7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IsF4b/dJMb99TQQtR/XlO8utcdm2hC7i3x4kKP7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IsF4b/dJMb99TQQtR/XlO8utcdm2hC7i3x4kKP7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIsF4b%2FdJMb99TQQtR%2FXlO8utcdm2hC7i3x4kKP7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;414&quot; height=&quot;280&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;figure3은 SPP 구조를 설명한다. SPP layer는 conv5 feature map을 여러 단계의 spatial bin으로 나누어 pooling한다. 예를 들어 1x1,2x2,4x4 각 영역에서 max pooling을 수행하고 결과를 concat해 하나의 고정길이 vector를 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;-&amp;gt; conv5 filter 개수 : 256 / pyramid level 전체 bin 수 : (1x1 + 2x2 + 4x4) = M / 최종 output&amp;nbsp; dimension : 256 x M&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;-&amp;gt; 입력 이미지 크기 달라져도 spatial bin 개수는 동일, output vector 길이도 동일하게 유지된다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문은 SPP의 또 다른 장점으로 다양한 입력 scale을 사용할 수 있다는 점을 설명한다. 입력 scale이 달라지면 같은 filter라도 서로 다른 scale의 feature를 추출하게 된다. 이는 전통적인 computer vision에서 SIFT feature를 여러 scale에서 추출하던 방식과 유사하다. scale 정보가 CNN 성능 향상에도 중요한 역할을 한다. 또한 pyramid의 가장 coarse한 level은 전체 이미지를 하나의 bin으로 pooling하는데, 이는 사실상 global pooling과 동일하다. 하지만 global pooling과 달리 muti-level spatial 정보를 함께 사용한다는 차이가 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2.3 Training the Network&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이론적으로는 앞에서 설명한 SPP-net 구조를 일반적인 back-propagation 방식으로 학습할 수 있으며, 입력 이미지 크기가 달라도 학습이 가능하다. 하지만 실제 GPU 기반 구현(cuda-convnet, Caffe 등)은 고정 크기 입력 이미지에 최적화되어 있다. 따라서 논문은 기존 fixed-size GPU 구현을 유지하면서도 SPP의 장점을 활용할 수 있는 학습 방법을 제안한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Sigle-size training&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 기존 방식처럼 하나의 고정 입력 크기를 사용하는 경우 설명. 여기서 224x224 crop은 데이터 증강을 위한 것이다. 입력 이미지 크기가 정해지면 conv5 feature map 크기도 고정, spatial pyramid pooling의 bin 크기도 미리 계산 가능하다. 예를 들어 conv5 feature map 크기 = 13&amp;times;13, pyramid level = n&amp;times;n이면 pooling window 크기는 a/n이고 stride도 a/n이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0qKjG/dJMcai4g0VY/ubFr5qP2rB949o0x9sVni1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0qKjG/dJMcai4g0VY/ubFr5qP2rB949o0x9sVni1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0qKjG/dJMcai4g0VY/ubFr5qP2rB949o0x9sVni1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0qKjG%2FdJMcai4g0VY%2FubFr5qP2rB949o0x9sVni1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;332&quot; height=&quot;226&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Figure 4는 cuda-convnet 스타일로 구현된 3-level pyramid pooling 예시이다. SPP layer는 단순 pooling 하나가 아니라 여러 크기의 pooling 결과를 동시에 사용하는 구조이다. single-size taning의 주요 목적은 multi-level pooling behavior 구현, spatial pyramid 효과 활용이다. 즉 입력 크기는 고정이지만 여러 spatial level pooling, 다양한 spatial 정보 유지 효과를 얻을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Multi-size training&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SPP-net은 원래 다양한 크기의 이미지를 처리하기 위해 설계되었다. 따라서 논문은 학습 단계에서도 다양한 입력 크기를 사용하는 multi-size training 방법을 제안한다. 예를 들어 224x224, 180x180 두가지 입력 크기를 사용한다. 중요한 점은 단순히 crop을 사용하는 것이 아니라 같은 영역을 resize하여 서로 다른 resolution을 생성하는 것이다. parameter를 공유하고 scale invariance 증가, overfitting 감소한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 입력이 달라지면 conv5 했을 때 feature map의 크기가 달라지는데 SPP는 이와 상관 없이 output vector를 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 과정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 한 epoch 동안 224&amp;times;224 network 학습&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 다음 epoch에서 180&amp;times;180 network 학습&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. parameter는 그대로 유지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 반복 수행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 입력 크기만 바뀌고 network wight는 공유된다. 이 방식으로 기존 single-size training과 비슷한 속도로 수렴한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 점은 sigle-size / multi-size taining은 학습 단계에서만 필요한 구현 방법으로 테스트 단계에서는 SPP-net을 arbitrary image size에 바로 적용 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. SPP-NET FOR IMAGE CLASSIFICATION&lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.1 Experiments on ImageNet 2012 Classification&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 SPP-net의 이미지 분류(image classification) 성능을 평가하기 위해 ImageNet 2012 데이터셋에서 실험을 수행한다. 학습은 기존 CNN 연구들의 방법을 따라 진행하였다. 입력 이미지는 먼저 짧은 변(shorter side)이 256이 되도록 resize한 뒤, 그 이미지에서 224&amp;times;224 crop을 추출한다. Crop 위치는 중앙, 네 개의 코너 중 하나를 사용한다. 또한 data augmentation도 사용하였다. FC layer에는 dropout을 적용하고 lr은 처음 0.01로 시작하고 error가 더이상 감소하지 않으면 10배씩 감소시킨다. 학습 시간은 약 2~4주이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.1.1 Baseline Network Architectures&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SPP의 효과가 특정 CNN 구조에서만 나타나는 것이 아니라는 점을 보기 위해 여러 종류의 CNN architecture를 사용해 실험한다. filter 크기, network depth, stride, feature map 크기 등이 서로 다른 다양한 CNN에서 SPP를 적용해본다. 논문은 총 네가지 baseline architecture를 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ZF-5 : &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Zeiler &amp;amp; Fergus의 &amp;ldquo;fast&amp;rdquo; 모델 기반 architecture, &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;convolution layer 5개 사용, &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; 비교적 작은 모델, &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; 빠른 연산 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Convnet*-5 : AlexNet 구조 수정한 architecture, pooling layer가 conv1, conv2 뒤가 아니라 conv2,conv3 뒤로 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Overfeat-5 / Overfeat-7 : Overfeat architecture 기반 모델, 더 큰 feature map 사용, conv3 이후 filter 개수 증가, deeper network 구조라는 특징이 있다. 숫자는 conv layer 갯수&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L9E3o/dJMcabxlSCm/YQSutIWJGnSTkvqjXlpwIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L9E3o/dJMcabxlSCm/YQSutIWJGnSTkvqjXlpwIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L9E3o/dJMcabxlSCm/YQSutIWJGnSTkvqjXlpwIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL9E3o%2FdJMcabxlSCm%2FYQSutIWJGnSTkvqjXlpwIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;192&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Overfeat 계열이 더 큰 feature map을 유지한다는 것을 알 수 있다. 논문은 baseline 모델에서 마지막 pooling layer 이후 6&amp;times;6 feature map 생성, 그 뒤 fully connected layer(fc6, fc7), 마지막 softmax classifier가 이어진다고 설명한다. SPP-net은 이 마지막 pooling 부분을 SPP layer로 교체하는 구조이다. 또한 논문은 자신들이 재현(reproduce)한 ZF-5 결과가 원 논문보다 더 좋았다고 설명한다. 그 이유는 crop 방식 떄문이라고 한다. 기존 방식은 중앙 256&amp;times;256 영역 기준으로 crop했지만, 논문은 전체 이미지 기준 corner crop을 사용하여 더 좋은 성능을 얻었다고 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.1.2 Multi-level Pooling Improves Accuracy &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 single-size training 환경에서 SPP의 효과를 실험한다. 여기서는 학습과 테스트 모두 224&amp;times;224 입력 이미지를 사용한다. SPP-net에서는 convolution layer 구조는 baseline network와 동일하게 유지하고, 마지막 pooling layer만 Spatial Pyramid Pooling(SPP) layer로 교체한다. 논문은 실험에서 4-level pyramid를 사용한다. -&amp;gt; 6x6, 3x3, 2x2, 1x1 총 50개 spatial bin&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 공정한 비교를 위해 기존 CNN과 동일한 standard 10-view testing 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;856&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cljSId/dJMcaipJPkN/DFgD03miAo3wQMWNKeEU2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cljSId/dJMcaipJPkN/DFgD03miAo3wQMWNKeEU2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cljSId/dJMcaipJPkN/DFgD03miAo3wQMWNKeEU2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcljSId%2FdJMcaipJPkN%2FDFgD03miAo3wQMWNKeEU2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;636&quot; height=&quot;214&quot; data-origin-width=&quot;856&quot; data-origin-height=&quot;288&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 CNN과 SPP 적용 모델의 classification error 피교한 table2. 결과 보면 모든 architecture에서 성능이 향상되었다. 특히 가장 성능이 높은 network일수록 improvement가 더 크게 나타난다. 중요한 점은 입력 이미지 크기 동일하고 10-view testing이 동일하여 기존 CNN과 거의 같은 조건을 사용했다는 것이다. 따라서 성능 향상은 오직 multi-level pooling 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또다른 실험은 4-level pyramid에 {4&amp;times;4, 3&amp;times;3, 2&amp;times;2, 1&amp;times;1}로 총 30bin이다. 흥미로운 점은 기존보다 parameter 수가 더 적다는 것이다. 왜냐하면 36x256 -&amp;gt; 30x256으로 감소하기 때문이다. 하지만 성능은 여전히 기존 CNN보다 좋았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 3.1.3 Multi-size Training Improves Accuracy&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Table 2의 (c)는 multi-size taining 결과를 보여준다. 실험결과, 모든 network architecture에서 error가 추가적으로 감소하였다. 이러한 결과는 다양한 입력 scale 학습과 scale invariance 증가 덕분이라고 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 모델이 큰 객체, 작은 객체, 다양한 resolution에 더 잘 적응할 수 있게 된것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또다른 방식도 실험한다. 입력 s를 [180,224] 범위에서 랜덤하게 선택하여 epoch마다 임의의 입력 크기를 사용한다. 하지만 실험 결과 두 개의 고정 크기를 번갈아 사용하는 방식이 더 좋은 성능을 보였다. 이유는 테스트 입력 크기(224)가 random 방식에서는 상대적으로 적게 등장했기 때문이다. 하지만 random 방시 역시 single 보다는 더 좋은 결과를 보였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 3.1.4 Full-image Representations Improve Accuracy&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 crop image가 아니라 full-image representation의 효과를 실험했다. 이미지의 짧은 변(min(w,h))을 256으로 resize하여 aspect ratio 유지, 이미지 전체(full image)를 SPP-net에 입력하였다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;219&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Au6vB/dJMcagk8kKZ/rCYDnuD6err3fnBpngCz40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Au6vB/dJMcagk8kKZ/rCYDnuD6err3fnBpngCz40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Au6vB/dJMcagk8kKZ/rCYDnuD6err3fnBpngCz40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAu6vB%2FdJMcagk8kKZ%2FrCYDnuD6err3fnBpngCz40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;431&quot; height=&quot;188&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;219&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과를 보면 full-image representation이 더 좋은 성능을 보인다. -&amp;gt; 이미지 전체를 사용하는 것이 classification accuracy 향상에 도움이 된다. 이유는 crop 방식은 객체 일부가 잘릴 수 있지만 full은 전체 cotent 유지 가능이라고 설명한다. 또한 square로만 학습되었음에도 다양한 aspect ratio 이미지에도 잘 generalize 된다는 점이 흥미롭다. -&amp;gt; 입력 비율 변화와 다양한 이미지 형태에도 강인하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 3.1.5 Multi-view Testing on Feature Maps &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;object detection 방식에서 아이디어를 얻어, feature map 위에서 직접 multi-view testing을 수행하는 방법을 제안한다. 기존 multi-view testing은 이미지 crop 여러 개 생성 -&amp;gt; crop마다 CNN 다시 수행하는 방식. 하지만 SPP-net은 convolution feature map을 한 번만 계산한 뒤, feature map 위에서 다양한 window(view)를 추출하여 pooling할 수 있다. 즉 convolution 연산을 반복할 필요가 없다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력 이미지 resize -&amp;gt; 전체 이미지에 대해 convolution 수행 -&amp;gt; feature map 생성 -&amp;gt; feature map 위에서 여러 window(view) 선택 -&amp;gt; 각 window에 대해 SPP pooling 수행 -&amp;gt; &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;fc layer 통과 후 score 계산 -&amp;gt; 여러 view의 score 평균 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;여러 crop 여러번 만드는 대신 feature map 하나를 공유하고 pooling만 반복하는 방식이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 standard 10-view testing을 feature map 방식으로 구현한다. 기존엔 crop 10 생성했다면 SPP는 feature map에서 해당 위치만 pooling -&amp;gt; 결과적으로 기존과 거의 동일한 정확&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 후 더 많은 scale과 view를 사용한다. -&amp;gt; 결과적으로 error 감소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 3.1.6 Summary and Results for ILSVRC 2014 &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 ImageNet classification 결과를 기존 state-of-the-art 모델들과 비교한다. 공정한 비교를 위해 single만 비교.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;331&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGOmiE/dJMcagSZPKY/F0oDauMYPx1Xon5OsmMtjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGOmiE/dJMcagSZPKY/F0oDauMYPx1Xon5OsmMtjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGOmiE/dJMcagSZPKY/F0oDauMYPx1Xon5OsmMtjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGOmiE%2FdJMcagSZPKY%2FF0oDauMYPx1Xon5OsmMtjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1027&quot; height=&quot;331&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;331&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 SSP 모델이 기존 모델들보다 더 좋은 성능을 냈다. 특히 multi-scale, multi-view, full-image를 함께 사용했을 때 가장 좋을 결과를 얻었다. 그리고 이 모델을 ILSVRC 2014에 제출하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;213&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QWOW9/dJMcacJQGmT/ONo55W3lnKHtUYAqkTkEY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QWOW9/dJMcacJQGmT/ONo55W3lnKHtUYAqkTkEY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QWOW9/dJMcacJQGmT/ONo55W3lnKHtUYAqkTkEY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQWOW9%2FdJMcacJQGmT%2FONo55W3lnKHtUYAqkTkEY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;445&quot; height=&quot;186&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;213&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 classification 부문 3위하였다. SPP는 특정 architecture 전용 기술이 아니라 일반적인 CNN improvement technique라고 주장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 3.2 Experiments on VOC 2007 Classification &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SPP-net이 ImageNet뿐 아니라 다른 데이터셋에서도 좋은 성능을 보이는지 확인하기 위해 Pascal VOC 2007 classification 실험을 수행한다. SPP-net은 이미지 전체(full-view image) representation을 생성할 수 있기 때문에,&amp;nbsp; &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;ImageNet에서 pre-train된 network를 그대로 사용하여 target dataset feature extraction에 활용한다. 이후 추출된 feature를 사용해 SVM classifier를 다시 학습한다. 여기서 중요한 점은 &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;fine-tuning, &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; multi-view testing 사용 안 한다는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;-&amp;gt; 단순히 ImageNet pre-trained CNN 사용, feature extraction, &lt;/span&gt;SVM 학습만 수행하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 baseline 실험을 수행하는데 ZF-5 without SPP을 사용해&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;871&quot; data-start=&quot;848&quot;&gt;이미지 짧은 변을 224로 resize&lt;/li&gt;
&lt;li data-end=&quot;900&quot; data-start=&quot;872&quot;&gt;중앙(center) 224&amp;times;224 crop 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 후 각 layer의 feature를 추출해 SVM을 학습한다. 결과적으 deeper layer일수록 성능이 더 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Gs9GX/dJMcahRR6aX/dZ5Wjeo5qkkngCAkwb8Qo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Gs9GX/dJMcahRR6aX/dZ5Wjeo5qkkngCAkwb8Qo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Gs9GX/dJMcahRR6aX/dZ5Wjeo5qkkngCAkwb8Qo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGs9GX%2FdJMcahRR6aX%2FdZ5Wjeo5qkkngCAkwb8Qo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;922&quot; height=&quot;235&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Table 6은 다양한 layer와 입력 방식에 따른 classification mAP를 비교한다.&lt;/p&gt;
&lt;p data-end=&quot;1131&quot; data-start=&quot;1128&quot; data-ke-size=&quot;size16&quot;&gt;(a) : no SPP, crop image 사용&lt;/p&gt;
&lt;p data-end=&quot;1161&quot; data-start=&quot;1158&quot; data-ke-size=&quot;size16&quot;&gt;(b) : SPP 적용, 여전히 crop image 사용&lt;/p&gt;
&lt;p data-end=&quot;1195&quot; data-start=&quot;1192&quot; data-ke-size=&quot;size16&quot;&gt;(c) : SPP 적용, full-image representation 사용&lt;/p&gt;
&lt;p data-end=&quot;1240&quot; data-start=&quot;1237&quot; data-ke-size=&quot;size16&quot;&gt;(d) : 더 큰 image scale 사용&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;(e) : 더 깊은 network 사용&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;먼저 (a)와 (b)를 비교하면 crop 방식 그대로 사용했음에도 SPP 적용 시 성능 향상이 나타난다.&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; multi-level pooling 자체가 VOC classification에서도 효과적이라는 의미이다.&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;다음으로 논문은 crop 대신 full-image representation을 사용한다. 이미지 짧은 변을 224로 resize, 이미지 전체를 SPP-net에 입력한다. 결과적으로 성능이 크게 향상되었다.&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 이미지 전체 정보를 유지하는 것이 classification에 더 유리하다는 것을 보여준다.&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;추가로 입력 scale도 변경해본다. 결과적으로 성능이 향상되었다. 이유로는 VOC dataset 객체는 ImageNet보다 상대적으로 작고 더 큰 scale 사용 시 object detail 유지 가능하기 떄문이다.&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; dataset마다 적절한 object scale이 다를 수 있음, SPP-net은 다양한 scale 처리 가능하다는 장&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 3.3 Experiments on Caltech101 &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;Caltech101 데이터셋은 총 9,144장의 이미지와 102개의 카테고리(배경 포함)로 구성되어 있다. 논문에서는 각 카테고리마다 30장의 이미지를 학습에 사용하고, 최대 50장의 이미지를 테스트에 사용하였다. 또한 random split을 10번 반복하여 평균 classification accuracy를 계산하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;228&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CFTQi/dJMcahRR6DI/1kfaSAdiE00r30TwKSVks1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CFTQi/dJMcahRR6DI/1kfaSAdiE00r30TwKSVks1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CFTQi/dJMcahRR6DI/1kfaSAdiE00r30TwKSVks1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCFTQi%2FdJMcahRR6DI%2F1kfaSAdiE00r30TwKSVks1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;639&quot; height=&quot;181&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;228&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;Table 7은 Caltech101에서의 classification 결과를 보여준다. 논문은 기존 CNN(no SPP), SPP 적용 모델, crop image, full-image representation 등을 비교하였다. 실험 결과 SPP를 적용한 경우 기존 CNN보다 더 높은 accuracy를 보였으며, 특히 full-image representation을 사용할 때 성능이 더욱 향상되었다. 또한 deeper network인 Overfeat-7을 사용한 경우 가장 높은 accuracy인 93.42%를 기록하였다.&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1252&quot; data-start=&quot;881&quot; data-ke-size=&quot;size16&quot;&gt;논문은 Pascal VOC 2007과 비교했을 때 Caltech101에서는 fc layer보다 SPP pooled feature가 더 좋은 성능을 보였다고 설명한다. 이는 Caltech101 category가 ImageNet과 상대적으로 덜 유사하기 때문에, ImageNet에 특화된 deeper layer feature보다 spatial information을 유지하는 pooled feature가 더 잘 generalize되기 때문이라고 분석한다. 또한 입력 scale 224가 가장 좋은 성능을 보였는데, 이는 Caltech101 객체 크기가 ImageNet과 유사하기 때문이라고 설명한다.&lt;/p&gt;
&lt;p data-end=&quot;1580&quot; data-start=&quot;1254&quot; data-ke-size=&quot;size16&quot;&gt;논문은 crop 방식 외에 warp 방식도 비교하였다. Warp 방식은 이미지를 강제로 224&amp;times;224로 resize하는 방법인데, 이 경우 geometric distortion이 발생할 수 있다. 실험 결과 warped image 방식보다 full-image SPP 방식이 더 높은 accuracy를 기록하였다. 마지막으로 Table 8에서는 기존 state-of-the-art 방법들과 비교하였으며, SPP-net은 93.42% accuracy를 기록하여 당시 최고 성능보다 약 4.88% 높은 결과를 달성하였다.&lt;/p&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1266&quot; data-start=&quot;1263&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4 SPP-NET FOR OBJECT DETECTION &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;448&quot; data-start=&quot;34&quot; data-ke-size=&quot;size16&quot;&gt;논문은 SPP-net이 image classification뿐 아니라 object detection에서도 매우 효과적이라고 설명한다. 기존 R-CNN은 약 2,000개의 candidate window(region proposal) 각각에 대해 CNN을 반복 수행해야 했기 때문에 detection 속도가 매우 느렸다. 반면 SPP-net은 전체 이미지에 대해 convolution feature map을 한 번만 계산한 뒤, feature map 위에서 각 candidate window 영역만 선택하여 Spatial Pyramid Pooling을 수행한다. 즉 convolution feature map을 여러 region이 공유하기 때문에 연산량을 크게 줄일 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;448&quot; data-start=&quot;34&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;740&quot; data-start=&quot;450&quot; data-ke-size=&quot;size16&quot;&gt;또한 기존 Overfeat detection은 predefined window size만 사용할 수 있었지만, SPP-net은 arbitrary window size를 자유롭게 사용할 수 있다는 장점이 있다. 논문은 이러한 구조가 기존 computer vision의 feature-map 기반 방법들과 유사하지만, deep convolution feature를 arbitrary region 단위로 pooling한다는 점이 핵심 차별점이라고 설명한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8SqUk/dJMcabKXjSy/58Y1qND2jXz459mxHueAb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8SqUk/dJMcabKXjSy/58Y1qND2jXz459mxHueAb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8SqUk/dJMcabKXjSy/58Y1qND2jXz459mxHueAb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8SqUk%2FdJMcabKXjSy%2F58Y1qND2jXz459mxHueAb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;442&quot; height=&quot;296&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1872&quot; data-start=&quot;1489&quot; data-ke-size=&quot;size16&quot;&gt;Figure 5는 SPP-net의 object detection 구조를 보여준다. 먼저 전체 이미지에 대해 convolution feature map을 계산한 뒤, candidate window에 해당하는 feature map 영역만 선택하여 Spatial Pyramid Pooling을 수행한다. 이후 pooled feature를 fully connected layer에 입력하여 object classification을 수행한다. 즉 convolution feature map을 여러 candidate region이 함께 공유한다는 점이 핵심이다. 이 방식 덕분에 detection 과정의 연산량이 크게 감소한다.&lt;/p&gt;
&lt;p data-end=&quot;1872&quot; data-start=&quot;1489&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1872&quot; data-start=&quot;1489&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.1 Detection Algorithm &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1462&quot; data-start=&quot;1133&quot; data-ke-size=&quot;size16&quot;&gt;논문은 selective search를 이용해 약 2,000개의 candidate window를 생성한 뒤, 전체 이미지에 대해 convolution feature map을 한 번만 계산한다. 이후 각 candidate window에 대해 1&amp;times;1, 2&amp;times;2, 3&amp;times;3, 6&amp;times;6의 4-level spatial pyramid pooling을 수행하여 fixed-length feature vector를 생성한다. 생성된 feature는 fully connected layer와 binary SVM classifier에 입력된다.&lt;/p&gt;
&lt;p data-end=&quot;1462&quot; data-start=&quot;1133&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;1732&quot; data-start=&quot;1464&quot; data-ke-size=&quot;size16&quot;&gt;논문은 multi-scale feature extraction도 적용하였다. 입력 이미지를 여러 scale로 resize한 뒤 feature map을 계산하고, candidate window 크기에 가장 적절한 scale의 feature map을 선택하여 pooling을 수행한다. 또한 fine-tuning과 bounding box regression을 적용하여 detection accuracy를 향상시켰다.&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;1732&quot; data-start=&quot;1464&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1732&quot; data-start=&quot;1464&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.2 Detection Results &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;290&quot; data-start=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;Pascal VOC 2007 데이터셋에서 SPP-net의 detection 성능을 평가하였다. 실험 결과 SPP-net은 기존 R-CNN과 비슷하거나 더 높은 detection accuracy를 보이면서도 훨씬 빠른 속도를 달성하였다. 특히 fine-tuning과 bounding box regression을 함께 사용한 경우 59.2% mAP를 기록하여 기존 R-CNN보다 더 높은 성능을 보였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB9Gl2/dJMcahRR6PT/iEVDOeMzI3hjKaP4jfTf4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB9Gl2/dJMcahRR6PT/iEVDOeMzI3hjKaP4jfTf4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB9Gl2/dJMcahRR6PT/iEVDOeMzI3hjKaP4jfTf4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB9Gl2%2FdJMcahRR6PT%2FiEVDOeMzI3hjKaP4jfTf4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;447&quot; height=&quot;240&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;1732&quot; data-start=&quot;1464&quot; data-ke-size=&quot;size16&quot;&gt;Table 9는 Pascal VOC 2007 detection 결과를 비교한 표이다. 결과적으로 SPP-net은 detection accuracy는 유지하거나 향상, feature extraction 속도는 크게 개선하였다. 특히 convolution 연산을 한 번만 수행하고 feature map을 공유하기 때문에 detection 속도가 매우 빨라졌다.&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;1732&quot; data-start=&quot;1464&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;1732&quot; data-start=&quot;1464&quot; data-ke-size=&quot;size16&quot;&gt;추가로 속도 비교도 수행하였다. 기존 R-CNN은 candidate window마다 CNN을 반복 수행해야 했기 때문에 convolution feature extraction에 약 14초 이상이 필요하였다. 반면 SPP-net은 convolution feature map을 공유하기 때문에 약 0.1~0.3초 수준만 필요하였다. 즉 약 24배~102배 빠른 detection 속도를 달성하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pjWYu/dJMcafzNarf/eLY0nbL2HnzSekziP7YwQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pjWYu/dJMcafzNarf/eLY0nbL2HnzSekziP7YwQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pjWYu/dJMcafzNarf/eLY0nbL2HnzSekziP7YwQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpjWYu%2FdJMcafzNarf%2FeLY0nbL2HnzSekziP7YwQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;406&quot; height=&quot;173&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;205&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;948&quot; data-start=&quot;690&quot; data-ke-size=&quot;size16&quot;&gt;Table 10은 동일한 pretrained model(ZF-5)을 사용하여 R-CNN과 SPP-net을 직접 비교한 결과이다. SPP-net은 거의 동일하거나 더 높은 mAP를 기록하면서도 훨씬 빠른 속도를 유지하였다. 논문은 이를 통해 SPP-net의 multi-level pooling과 convolution feature map reuse가 매우 효과적이라는 점을 보여준다.&lt;/p&gt;
&lt;p data-end=&quot;948&quot; data-start=&quot;690&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1732&quot; data-start=&quot;1464&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.3 Complexity and Running Time &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;350&quot; data-start=&quot;35&quot; data-ke-size=&quot;size16&quot;&gt;SPP-net의 가장 큰 장점 중 하나로 연산량 감소와 빠른 detection 속도를 설명한다. 기존 R-CNN은 약 2,000개의 candidate window 각각에 대해 CNN을 반복 수행해야 했기 때문에 convolution 연산량이 매우 컸다. 반면 SPP-net은 전체 이미지에 대해 convolution feature map을 한 번만 계산한 뒤, 각 region에서는 pooling만 수행한다. 따라서 가장 계산 비용이 큰 convolution 연산을 반복하지 않아도 된다.&lt;/p&gt;
&lt;p data-end=&quot;350&quot; data-start=&quot;35&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;635&quot; data-start=&quot;352&quot; data-ke-size=&quot;size16&quot;&gt;논문은 convolution layer의 계산량이 fully connected layer보다 훨씬 크다고 설명한다. 특히 deeper convolution layer일수록 연산량이 매우 커지는데, R-CNN은 이러한 convolution 연산을 candidate window 개수만큼 반복 수행하기 때문에 비효율적이다. 반면 SPP-net은 convolution feature map을 공유하기 때문에 complexity가 크게 감소한다.&lt;/p&gt;
&lt;p data-end=&quot;635&quot; data-start=&quot;352&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;899&quot; data-start=&quot;637&quot; data-ke-size=&quot;size16&quot;&gt;실험 결과 SPP-net은 GPU 환경에서 feature extraction 속도를 매우 크게 향상시켰다. 기존 R-CNN은 한 이미지 처리에 약 10~14초 이상이 필요했지만, SPP-net은 약 0.1~0.3초 수준만 사용하였다. 즉 약 24배~102배 빠른 detection 속도를 달성하였다. 논문은 이러한 속도 향상이 convolution feature map reuse 덕분이라고 설명한다.&lt;/p&gt;
&lt;p data-end=&quot;899&quot; data-start=&quot;637&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;1070&quot; data-start=&quot;901&quot; data-ke-size=&quot;size16&quot;&gt;또한 SPP-net은 feature map 기반 pooling 구조를 사용하기 때문에, deeper network에서도 효율적으로 동작할 수 있다고 설명한다. 논문은 이러한 구조가 이후 Fast R-CNN과 ROI Pooling 같은 detection framework 발전의 기반이 되었다고 강조한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;253&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OeQdm/dJMcab5cWMs/PPihSgcx5fHMlME3tAsfk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OeQdm/dJMcab5cWMs/PPihSgcx5fHMlME3tAsfk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OeQdm/dJMcab5cWMs/PPihSgcx5fHMlME3tAsfk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOeQdm%2FdJMcab5cWMs%2FPPihSgcx5fHMlME3tAsfk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;994&quot; height=&quot;253&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;253&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-is-intersecting=&quot;true&quot; data-turn-id-container=&quot;request-69feb903-4214-83a8-a6c1-725b2996266c-15&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-turn-start-message=&quot;true&quot; data-message-model-slug=&quot;gpt-5-5&quot; data-message-id=&quot;205f27a7-59dd-4020-a822-d9f8fe8ae381&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-end=&quot;358&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;Table 11은 R-CNN과 SPP-net의 running time을 비교한 표이다. 논문은 convolution time, fully connected time, feature extraction time, 전체 detection 시간 등을 비교하였다. 결과를 보면 기존 R-CNN은 candidate window마다 CNN을 반복 수행하기 때문에 convolution 시간이 매우 크게 나타난다. 반면 SPP-net은 전체 이미지에 대해 convolution feature map을 한 번만 계산하고 이를 여러 region이 공유하기 때문에 연산량이 크게 감소하였다.&lt;/p&gt;
&lt;p data-end=&quot;358&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;628&quot; data-start=&quot;360&quot; data-ke-size=&quot;size16&quot;&gt;특히 R-CNN은 한 이미지 처리에 약 10~14초 정도가 필요했지만, SPP-net은 약 0.1~0.3초 수준만 사용하였다. 즉 SPP-net은 기존 R-CNN보다 약 24배~102배 더 빠른 detection 속도를 달성하였다. 논문은 이러한 속도 향상이 convolution feature map reuse 덕분이라고 설명한다. 즉 가장 계산량이 큰 convolution 연산을 한 번만 수행하고 여러 candidate window가 공유하도록 만든 것이 핵심 아이디어이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;1732&quot; data-start=&quot;1464&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1732&quot; data-start=&quot;1464&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.4 Model Combination for Detection &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;427&quot; data-start=&quot;39&quot; data-ke-size=&quot;size16&quot;&gt;논문은 CNN 기반 classification에서 model combination(ensemble)이 매우 효과적인 방법이라는 점을 object detection에도 적용하였다. 저자들은 동일한 network structure를 사용하되 random initialization만 다르게 하여 또 다른 network를 ImageNet에서 pre-train한 뒤 동일한 detection 알고리즘을 수행하였다. Table 12의 SPP-net(2)가 이 두 번째 모델의 결과이다. 두 모델은 비슷한 성능을 보였으며, 두 번째 모델은 20개 category 중 11개 category에서 첫 번째 모델보다 더 좋은 결과를 나타냈다.&lt;/p&gt;
&lt;p data-end=&quot;427&quot; data-start=&quot;39&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;859&quot; data-start=&quot;429&quot; data-ke-size=&quot;size16&quot;&gt;논문은 이후 두 모델을 결합하는 방법도 제안한다. 먼저 두 모델 각각이 test image의 candidate window들에 대해 score를 계산한다. 이후 두 모델의 candidate window를 합친 뒤 non-maximum suppression(NMS)을 수행한다. 이 과정에서 한 모델이 높은 confidence를 준 window가 다른 모델의 낮은 confidence window를 제거할 수 있다. 실험 결과 model combination 이후 mAP는 59.2%에서 60.9%로 향상되었다. 또한 전체 20개 category 중 17개 category에서 단일 모델보다 더 좋은 성능을 보였다. 논문은 이를 통해 두 모델이 서로 complementary한 특징을 가진다고 설명한다.&lt;/p&gt;
&lt;p data-end=&quot;859&quot; data-start=&quot;429&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1128&quot; data-start=&quot;861&quot; data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 complementarity가 주로 convolution layer 차이에서 발생한다고 분석하였다. 실제로 동일한 convolution model을 사용한 채 fine-tuning만 다르게 한 모델들을 결합했을 때는 성능 향상이 거의 나타나지 않았다. 즉 model combination 효과는 convolution feature representation의 차이에서 주로 발생한다는 의미이다.&lt;/p&gt;
&lt;p data-end=&quot;1128&quot; data-start=&quot;861&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1128&quot; data-start=&quot;861&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.5 ILSVRC 2014 Detection &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1431&quot; data-start=&quot;1159&quot; data-ke-size=&quot;size16&quot;&gt;ILSVRC 2014 detection task는 총 200개의 category로 구성되며, 약 45만 장의 training image, 2만 장의 validation image, 4만 장의 testing image를 포함한다. 논문은 provided-data-only track에 참여하였으며, 여기서는 ImageNet classification용 1000-category training data를 사용할 수 없다.&lt;/p&gt;
&lt;p data-end=&quot;1431&quot; data-start=&quot;1159&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2016&quot; data-start=&quot;1433&quot; data-ke-size=&quot;size16&quot;&gt;논문은 detection dataset과 classification dataset 사이의 중요한 차이점 세 가지를 설명한다. 첫 번째는 detection training data 양이 classification training data의 약 1/3 수준이라는 점이다. 두 번째는 detection category 수가 classification의 1/5 수준이라는 점이다. 이를 해결하기 위해 논문은 제공된 subcategory label을 사용하였다. 전체 499개의 subcategory를 이용해 499-category network를 pre-train하였다. 세 번째는 object scale distribution 차이이다. Classification dataset에서는 객체가 이미지의 약 80%를 차지하는 경우가 많지만, detection dataset에서는 약 50% 정도만 차지한다. 이를 해결하기 위해 논문은 입력 이미지를 min(w,h)=400으로 resize하고, object와 50% 이상 overlap되는 224&amp;times;224 crop만 사용하여 학습하였다.&lt;/p&gt;
&lt;p data-end=&quot;2016&quot; data-start=&quot;1433&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2371&quot; data-start=&quot;2018&quot; data-ke-size=&quot;size16&quot;&gt;논문은 이러한 pre-training 전략의 효과도 Pascal VOC 2007에서 검증하였다. 기존 classification pre-training 모델은 43.0% mAP를 기록하였지만, detection dataset만으로 학습한 200-category network는 32.7% mAP로 크게 감소하였다. 이후 499-category network를 사용하자 35.9%로 향상되었고, 추가적으로 min(w,h)=400 설정을 사용하자 37.8%까지 향상되었다. 논문은 이를 통해 deep learning에서 대규모 데이터가 매우 중요하다는 점을 강조한다.&lt;/p&gt;
&lt;p data-end=&quot;2371&quot; data-start=&quot;2018&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2649&quot; data-start=&quot;2373&quot; data-ke-size=&quot;size16&quot;&gt;최종적으로 논문은 499-category Overfeat-7 SPP-net을 사용하여 ILSVRC 2014 detection task를 수행하였다. 이후 과정은 VOC 2007 detection과 유사하며, selective search fast mode를 사용하여 candidate window를 생성하였다. 또한 fine-tuning, SVM training, bounding box regression도 함께 적용하였다.&lt;/p&gt;
&lt;p data-end=&quot;2649&quot; data-start=&quot;2373&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2869&quot; data-start=&quot;2651&quot; data-ke-size=&quot;size16&quot;&gt;실험 결과 single model은 ILSVRC 2014 test set에서 31.84% mAP를 기록하였다. 이후 논문에서 제안한 model combination 전략으로 6개의 model을 결합하자 최종 mAP는 35.11%까지 향상되었다. 이 결과는 provided-data-only track에서 2위를 기록하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;333&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDnBS7/dJMcafNlOdm/ztTaZchEOXNaHlLb4Hw8r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDnBS7/dJMcafNlOdm/ztTaZchEOXNaHlLb4Hw8r1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDnBS7/dJMcafNlOdm/ztTaZchEOXNaHlLb4Hw8r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDnBS7%2FdJMcafNlOdm%2FztTaZchEOXNaHlLb4Hw8r1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;333&quot; height=&quot;192&quot; data-origin-width=&quot;333&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;3144&quot; data-start=&quot;2902&quot; data-ke-size=&quot;size16&quot;&gt;Table 13은 ILSVRC 2014 detection competition 결과를 보여준다. 논문 팀은 35.11% mAP를 기록하여 2위를 달성하였다. 1위는 contextual information을 사용한 NUS 팀으로 37.21% mAP를 기록하였다. 논문은 단일 모델(single model)만 사용한 경우에도 31.84% mAP를 기록했다고 설명한다. 논문은 마지막으로 속도 측면의 장점도 강조한다. SPP-net single model은 GPU 환경에서 한 이미지 처리에 약 0.6초만 사용하였다.&lt;/p&gt;
&lt;p data-end=&quot;1128&quot; data-start=&quot;861&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1128&quot; data-start=&quot;861&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 5 Conclusion &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1128&quot; data-start=&quot;861&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;논문은 Spatial Pyramid Pooling(SPP)이 서로 다른 scale, size, aspect ratio를 처리하기 위한 매우 유연한 방법이라고 결론짓는다. 기존 deep network에서는 이러한 문제들이 충분히 고려되지 않았지만, SPP-net은 spatial pyramid pooling layer를 이용하여 이를 해결하였다.&lt;/span&gt;&lt;/p&gt;
&lt;div data-is-intersecting=&quot;true&quot; data-turn-id-container=&quot;request-69feb903-4214-83a8-a6c1-725b2996266c-16&quot;&gt;
&lt;div&gt;
&lt;div data-message-model-slug=&quot;gpt-5-5&quot; data-turn-start-message=&quot;true&quot; data-message-id=&quot;a948c039-f46e-4338-9544-49df84542ddf&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;p data-end=&quot;3765&quot; data-start=&quot;3756&quot; data-ke-size=&quot;size16&quot;&gt;SPP-net은:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3807&quot; data-start=&quot;3766&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3788&quot; data-start=&quot;3766&quot;&gt;image classification&lt;/li&gt;
&lt;li data-end=&quot;3807&quot; data-start=&quot;3789&quot;&gt;object detection&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;4062&quot; data-start=&quot;3809&quot; data-ke-size=&quot;size16&quot;&gt;모두에서 매우 높은 accuracy를 보였으며, 특히 DNN 기반 object detection 속도를 크게 향상시켰다. 또한 논문은 traditional computer vision에서 오랫동안 사용되던 spatial pyramid와 multi-scale 아이디어가 deep learning 기반 recognition에서도 여전히 중요한 역할을 할 수 있음을 보여준다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;1732&quot; data-start=&quot;1464&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1451&quot; data-start=&quot;1001&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1451&quot; data-start=&quot;1001&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1451&quot; data-start=&quot;1001&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1451&quot; data-start=&quot;1001&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>zzangsky</author>
      <guid isPermaLink="true">https://zzangsky.tistory.com/10</guid>
      <comments>https://zzangsky.tistory.com/10#entry10comment</comments>
      <pubDate>Sat, 9 May 2026 13:33:22 +0900</pubDate>
    </item>
    <item>
      <title>[Short Review] BERT: Pre-training of Deep Bidirectional Transformers forLanguage Understanding</title>
      <link>https://zzangsky.tistory.com/9</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1810.04805&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://arxiv.org/abs/1810.04805&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1778049802905&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding&quot; data-og-description=&quot;We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional representations from unla&quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/1810.04805&quot; data-og-url=&quot;https://arxiv.org/abs/1810.04805v2&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gYfPn/dJMb8Rj5Wsw/vyjwjDYS2km2eYg5tlGFIK/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/1nQk2/dJMb8VNzr8w/Vp4zE4Csbltdr5Ma9MSF3K/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1810.04805&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/1810.04805&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gYfPn/dJMb8Rj5Wsw/vyjwjDYS2km2eYg5tlGFIK/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/1nQk2/dJMb8VNzr8w/Vp4zE4Csbltdr5Ma9MSF3K/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional representations from unla&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-end=&quot;14&quot; data-start=&quot;0&quot; data-section-id=&quot;1vs9pfw&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1. 배경 및 문제점&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;290&quot; data-start=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;84&quot; data-start=&quot;16&quot; data-section-id=&quot;37qiru&quot;&gt;기존 Word2Vec, GloVe 같은 임베딩은 단어마다 하나의 고정 벡터(static embedding)만 사용한다.&lt;/li&gt;
&lt;li data-end=&quot;111&quot; data-start=&quot;85&quot; data-section-id=&quot;53xpkg&quot;&gt;문맥에 따라 의미가 달라도 동일한 벡터 사용&lt;/li&gt;
&lt;li data-end=&quot;142&quot; data-start=&quot;112&quot; data-section-id=&quot;1gwgz8a&quot;&gt;예시 : bank &amp;rarr; 은행 / 강둑 &amp;rarr; 구분 어려움&lt;/li&gt;
&lt;li data-end=&quot;195&quot; data-start=&quot;143&quot; data-section-id=&quot;jvch9z&quot;&gt;GPT 같은 기존 language model은 단방향(left-to-right) 구조 사용&lt;/li&gt;
&lt;li data-end=&quot;217&quot; data-start=&quot;196&quot; data-section-id=&quot;141g0kq&quot;&gt;앞 문맥 또는 뒤 문맥만 활용 가능&lt;/li&gt;
&lt;li data-end=&quot;252&quot; data-start=&quot;218&quot; data-section-id=&quot;1evwwae&quot;&gt;QA, NLI 같은 task에서는 양방향 문맥 이해가 중요&lt;/li&gt;
&lt;li data-end=&quot;290&quot; data-start=&quot;253&quot; data-section-id=&quot;1naylrx&quot;&gt;syntax + semantics를 동시에 깊게 반영하기 어려움&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;355&quot; data-start=&quot;292&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 문장 전체 문맥을 동시에 반영하는 deep bidirectional contextual embedding 필요&lt;/p&gt;
&lt;h3 data-end=&quot;375&quot; data-start=&quot;362&quot; data-section-id=&quot;53myps&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2. 아키텍처 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1214&quot; data-start=&quot;377&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;427&quot; data-start=&quot;377&quot; data-section-id=&quot;ppdmtx&quot;&gt;Transformer Encoder 기반 contextual language model&lt;/li&gt;
&lt;li data-end=&quot;463&quot; data-start=&quot;428&quot; data-section-id=&quot;33bmdd&quot;&gt;Deep Bidirectional Transformer 사용&lt;/li&gt;
&lt;li data-end=&quot;486&quot; data-start=&quot;464&quot; data-section-id=&quot;hfqpej&quot;&gt;self-attention 기반 구조&lt;/li&gt;
&lt;li data-end=&quot;511&quot; data-start=&quot;487&quot; data-section-id=&quot;1hmzb1x&quot;&gt;문장의 앞 + 뒤 문맥 모두 동시에 반영&lt;/li&gt;
&lt;li data-end=&quot;764&quot; data-start=&quot;513&quot; data-section-id=&quot;1rgrc6&quot;&gt;주요 pretraining task
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;764&quot; data-start=&quot;538&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;655&quot; data-start=&quot;538&quot; data-section-id=&quot;kfrxcf&quot;&gt;MLM (Masked Language Model)
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;655&quot; data-start=&quot;572&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;605&quot; data-start=&quot;572&quot; data-section-id=&quot;ha50ym&quot;&gt;입력 token 일부를 masking 후 원래 단어 예측&lt;/li&gt;
&lt;li data-end=&quot;624&quot; data-start=&quot;610&quot; data-section-id=&quot;1a6xeew&quot;&gt;양방향 문맥 활용 가능&lt;/li&gt;
&lt;li data-end=&quot;655&quot; data-start=&quot;629&quot; data-section-id=&quot;sbvlij&quot;&gt;전체 token의 15% masking 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;764&quot; data-start=&quot;659&quot; data-section-id=&quot;3kfco3&quot;&gt;NSP (Next Sentence Prediction)
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;764&quot; data-start=&quot;696&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;720&quot; data-start=&quot;696&quot; data-section-id=&quot;ph6wco&quot;&gt;두 문장이 실제로 이어지는 문장인지 학습&lt;/li&gt;
&lt;li data-end=&quot;740&quot; data-start=&quot;725&quot; data-section-id=&quot;1bpnf5c&quot;&gt;문장 간 관계 이해 가능&lt;/li&gt;
&lt;li data-end=&quot;764&quot; data-start=&quot;745&quot; data-section-id=&quot;l6w83n&quot;&gt;QA, NLI 성능 향상에 기여&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1214&quot; data-start=&quot;766&quot; data-section-id=&quot;t44fh6&quot;&gt;주요 특징
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1214&quot; data-start=&quot;777&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;830&quot; data-start=&quot;777&quot; data-section-id=&quot;11iwd01&quot;&gt;모든 layer에서 양방향 문맥 학습
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;830&quot; data-start=&quot;804&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;830&quot; data-start=&quot;804&quot; data-section-id=&quot;177h8cd&quot;&gt;GPT의 단방향 attention 한계 해결&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;953&quot; data-start=&quot;834&quot; data-section-id=&quot;43gins&quot;&gt;입력 embedding 구조 사용
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;953&quot; data-start=&quot;859&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;876&quot; data-start=&quot;859&quot; data-section-id=&quot;zm0grg&quot;&gt;Token Embedding&lt;/li&gt;
&lt;li data-end=&quot;900&quot; data-start=&quot;881&quot; data-section-id=&quot;ywj6bo&quot;&gt;Segment Embedding&lt;/li&gt;
&lt;li data-end=&quot;953&quot; data-start=&quot;905&quot; data-section-id=&quot;11i4ep&quot;&gt;Position Embedding&lt;br /&gt;&amp;rarr; 세 embedding을 합쳐 입력 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1067&quot; data-start=&quot;957&quot; data-section-id=&quot;znbgk7&quot;&gt;pretrained model 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1067&quot; data-start=&quot;983&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1027&quot; data-start=&quot;983&quot; data-section-id=&quot;1kpapn3&quot;&gt;BooksCorpus + Wikipedia 기반 대규모 pretraining&lt;/li&gt;
&lt;li data-end=&quot;1067&quot; data-start=&quot;1032&quot; data-section-id=&quot;1si8ax8&quot;&gt;downstream task에 fine-tuning하여 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1147&quot; data-start=&quot;1071&quot; data-section-id=&quot;7ve7x1&quot;&gt;task-specific architecture 최소화
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1147&quot; data-start=&quot;1108&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1147&quot; data-start=&quot;1108&quot; data-section-id=&quot;1wp6v4z&quot;&gt;output layer만 추가하여 다양한 NLP task 적용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1214&quot; data-start=&quot;1151&quot; data-section-id=&quot;1vtpo7s&quot;&gt;fine-tuning 기반 transfer learning 구조 확립
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1214&quot; data-start=&quot;1196&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1214&quot; data-start=&quot;1196&quot; data-section-id=&quot;1rb5rx6&quot;&gt;end-to-end 학습 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1229&quot; data-start=&quot;1221&quot; data-section-id=&quot;zj1sc8&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. 의의&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1509&quot; data-start=&quot;1231&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1283&quot; data-start=&quot;1231&quot; data-section-id=&quot;1yi8ezn&quot;&gt;Transformer 기반 contextual embedding 시대를 본격적으로 연 모델&lt;/li&gt;
&lt;li data-end=&quot;1336&quot; data-start=&quot;1284&quot; data-section-id=&quot;1jzqx88&quot;&gt;ELMo의 contextual embedding 개념을 Transformer 기반으로 확장&lt;/li&gt;
&lt;li data-end=&quot;1379&quot; data-start=&quot;1337&quot; data-section-id=&quot;1ctjuh6&quot;&gt;다양한 NLP task에서 SOTA(State-of-the-Art) 달성&lt;/li&gt;
&lt;li data-end=&quot;1415&quot; data-start=&quot;1380&quot; data-section-id=&quot;1hyyygy&quot;&gt;GLUE, SQuAD, NER, NLI 등에서 큰 성능 향상&lt;/li&gt;
&lt;li data-end=&quot;1449&quot; data-start=&quot;1416&quot; data-section-id=&quot;ixu2zn&quot;&gt;pretrain + fine-tuning 패러다임 대중화&lt;/li&gt;
&lt;li data-end=&quot;1509&quot; data-start=&quot;1450&quot; data-section-id=&quot;3k7578&quot;&gt;이후 GPT, RoBERTa, ALBERT, T5 등 Transformer 기반 모델 발전의 기반 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1524&quot; data-start=&quot;1516&quot; data-section-id=&quot;zih65j&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4. 한계&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1838&quot; data-start=&quot;1526&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1611&quot; data-start=&quot;1526&quot; data-section-id=&quot;5d50m3&quot;&gt;MLM 기반 구조 특성상 pretrain/fine-tune mismatch 존재
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1611&quot; data-start=&quot;1575&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1611&quot; data-start=&quot;1575&quot; data-section-id=&quot;1ov1vzu&quot;&gt;fine-tuning 시에는 [MASK] token 사용 안함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1703&quot; data-start=&quot;1613&quot; data-section-id=&quot;klvlo9&quot;&gt;Transformer 기반이라 계산량과 메모리 사용량 큼
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1703&quot; data-start=&quot;1649&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1703&quot; data-start=&quot;1649&quot; data-section-id=&quot;t6ygec&quot;&gt;self-attention 연산량이 sequence length에 대해 quadratic 증가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1724&quot; data-start=&quot;1705&quot; data-section-id=&quot;1p0uqpc&quot;&gt;대규모 GPU/TPU 자원 필요&lt;/li&gt;
&lt;li data-end=&quot;1796&quot; data-start=&quot;1726&quot; data-section-id=&quot;1uoji3t&quot;&gt;autoregressive text generation에는 비효율적&lt;br /&gt;&amp;rarr; 이후 GPT 계열 decoder 기반 모델 등장&lt;/li&gt;
&lt;li data-end=&quot;1838&quot; data-start=&quot;1798&quot; data-section-id=&quot;i9ektr&quot;&gt;긴 문장 처리 비용 증가&lt;br /&gt;&amp;rarr; 이후 Longformer 등으로 발전&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Transformer encoder 기반의 MLM + NSP 사전 학습을 통해&lt;br /&gt;양방향 문맥 정보를 깊게 학습하는 contextual language representation 모델&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;</description>
      <author>zzangsky</author>
      <guid isPermaLink="true">https://zzangsky.tistory.com/9</guid>
      <comments>https://zzangsky.tistory.com/9#entry9comment</comments>
      <pubDate>Wed, 6 May 2026 15:46:55 +0900</pubDate>
    </item>
    <item>
      <title>[Paper Review] Improving Language Understandingby Generative Pre-Training (GPT-1)</title>
      <link>https://zzangsky.tistory.com/8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Abstract&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자연어 이해는 텍스트 함의, 질의응답, 의미 유사도 평가, 문서 분류 등 다양한 작업을 포함한다. 대규모 비지도 텍스트 데이터는 풍부하지만 이러한 작업을 &lt;span style=&quot;color: #ee2323;&quot;&gt;학습하기 위한 라벨된 데이터는 부족하다.&lt;/span&gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;이로 인해 지도학습 기반 모델은 충분한 성능을 내기 어렵다.&lt;/span&gt; 우리는 다양한 비지도 텍스트 데이터로 &lt;b&gt;언어 모델을 사전 학습(pre-training)&lt;/b&gt;한 뒤 각 작업에 대해 &lt;b&gt;지도학습 fine-tuning&lt;/b&gt;을 수행하면 큰 성능 향상을 얻을 수 있음을 보인다. 기존 방법들과 달리 우리는 fine-tuning 단계에서 &lt;b&gt;task-aware 입력 변환&lt;/b&gt;을 사용하여 모델 구조를 거의 변경하지 않고도 효과적인 전이를 달성한다. 우리는 다양한 자연어 이해 벤치마크에서 이 방법의 효과를 입증하였다. 우리의 모델은 task-specific 구조를 사용하는 기존 모델보다 성능이 뛰어나며, 12개 작업 중 9개에서 state-of-the-art를 달성하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1 Introduction&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자연어 처리(NLP)에서 raw text로부터 효과적으로 학습하는 능력은 지도학습에 대한 의존도를 줄이기 위해 매우 중요하다. &lt;span style=&quot;color: #ee2323;&quot;&gt;대부분의 딥러닝 모델은 많은 양의 라벨된 데이터에 의존하는데, 이는 데이터가 부족한 분야에서는 적용이 어렵다.&lt;/span&gt; 이런 상황에서 &lt;b&gt;비지도 데이터에서 언어 정보를 학습할 수 있는 모델은 라벨 데이터를 추가로 수집하는 것보다 더 효율적이다.&lt;/b&gt; 또한 충분한 라벨 데이터가 존재하는 경우에도, &lt;b&gt;비지도 학습으로 좋은 표현을 미리 학습하면성능 향상을 가져올 수 있다.&amp;nbsp;&lt;/b&gt; 지금까지 성공적인 예는 사전 학습된 단어 임베딩을 활용하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 &lt;span style=&quot;color: #ee2323;&quot;&gt;단어 수준 이상의 정보를 활용하는 것은 어렵다.&lt;/span&gt; 그 이유는 어떤 학습 목표가 좋은 텍스트 표현을 학습하는데 가장 효과적인지 불명확하다. 그리고 학습된 표현을 실제 task로 어떻게 전이할지에 대한 방법이 정립되어 있지 않다. 기존 방법들은 task마다 다른 구조 설계하거나 복잡한 학습 방식, 보조 목표를 사용하는 등 다양한 접근 시도해왔다. 하지만 이러한 불확실성 떄문에 효과적인 semi-supervised 학습 방법을 만들기 어려웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;본 논문에서는 비지도 pre-training과 각 task에 맞게 지도 fine-tuning을 결합한 semi-supervised 접근을 제안한다.&lt;/b&gt; &lt;b&gt;목표는 다양한 task에 적은 수정만으로 적용 가능한 범용 표현을 학습하는 것이다.&lt;/b&gt; &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;모델 구조로는 긴 문맥 잘 처리하고 다양한 task에서 좋은 전이 성능 제공하는 Transformer를 사용한다. 또한 structured input을 하나의 토큰 시퀀스로 변환하는 방식을 사용하여 모델 구조 거의 변경하지 않고 다양한 task에 적용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2 Related Work&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Semi-supervised learning for NLP&lt;/b&gt; : 본 연구는 자연어 처리에서의 반지도 학습 범주에 속한다. 초기 연구들은 라벨이 없는 데이터로부터 단어 또는 구 수준의 통계를 계산하고, 이를 지도학습 모델의 feature로 사용하였다. 최근에는 비지도 데이터로 학습된 word embedding을 활용하여 여러 NLP 작업에서 성능을 향상시키는 방법이 널리 사용되고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 문장/구 수준 표현&lt;/b&gt; : 최근 연구들은 단어를 넘어서 문장이나 구 단위의 의미 표현을 학습하는 방법을 제안하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. Unsupervised pre-training&lt;/b&gt; : 비지도 사전학습은 반지도 학습의 한 형태로 모델을 더 잘 학습시키기 위한 좋은 초기값을 찾는 것을 목표로 한다. 모델의 일반화 성능을 향상시키는 효과가 있음이 확인되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 기존 language model 기반 방법&lt;/b&gt; : 가장 유사한 연구는 언어 모델로 pre-training을 한 뒤 fine-tuning하는 방식이다. 하지만 기존 연구들은 LSTM을 사용하기 때문에 짧은 문맥만 학습할 수 있는 한계가 있다. 반면 본 논문은 Transformer 사용하여 더 긴 문맥 정보 학습 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. 다른 접근과의 차이&lt;/b&gt; : 일부 연구는 pre-trained 모델의 hidden representation을 추가 feature로 사용하는 방법을 사용한다. 하지만 이 경우 task마다 새로운 파라미터가 많이 필요하다. 본 논문은 모델 구조 거의 변경하지 않고도 전이 학습 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6. Auxiliary training objectives&lt;/b&gt; : 또 다른 방법은 보조 학습 목표를 추가하는 것이다. 예를 들어 POS tagging이나 NER 같은 작업을 함께 학습하거나, language modeling을 보조 목표로 사용하는 방식이 있다. 본 논문은 pre-training만으로도 충분한 언어 정보 학습됨을 확인하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. Framework&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 과정은 두 단계로 이루어진다. 대규모 텍스트 데이터로 언어 모델 학습 -&amp;gt; 라벨링된 데이터 이용해 특정 task에 맞게 fine-tuning&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.1 Unsupervised pre-training&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;46&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cI8QHL/dJMcabcYXZ9/yxw2vXgo9UibbZ6ZPKXqmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cI8QHL/dJMcabcYXZ9/yxw2vXgo9UibbZ6ZPKXqmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cI8QHL/dJMcabcYXZ9/yxw2vXgo9UibbZ6ZPKXqmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcI8QHL%2FdJMcabcYXZ9%2Fyxw2vXgo9UibbZ6ZPKXqmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;478&quot; height=&quot;43&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;46&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비지도 텍스트 코퍼스 &lt;span&gt;&lt;span&gt;U={u1,...,un}&lt;/span&gt;&lt;/span&gt;가 주어졌을 때 표준적인 language modeling objective를 사용하여 다음의 확률을 최대화하도록 학습한다. k는 window 사이즈를 의미, 조건부 확률 P는 파라미터를 가진 신경망으로 모델링된다. stochastic gradient descent(SGD)를 통해 학습된다. &lt;b&gt;language model로 multi-layer Transformer decoder&lt;/b&gt;를 사용해 입력 토큰들에 대해 multi-head self-attention을 적용한 뒤 position-wise feed-forward layer를 거쳐 다음 단어의 확률 분포를 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/79zTT/dJMcab49jUo/Ydl2V2zlElPuO1T1hcdglk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/79zTT/dJMcab49jUo/Ydl2V2zlElPuO1T1hcdglk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/79zTT/dJMcab49jUo/Ydl2V2zlElPuO1T1hcdglk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F79zTT%2FdJMcab49jUo%2FYdl2V2zlElPuO1T1hcdglk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;397&quot; height=&quot;94&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;U는 문맥 토큰들 &lt;span&gt;&lt;span&gt;(u&amp;minus;k,...,u&amp;minus;1) , n은 layer 수, We는 단어 임베딩 행렬, Wp는 위치 임베딩 행렬을 의미한다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.2 Supervised Fine-tuning&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델을 학습한 이후, 지도학습 task에 맞게 조정(fine-tuning)한다. 라벨된 데이터셋 &lt;span&gt;&lt;span&gt;C&lt;/span&gt;&lt;/span&gt;를 가정하고 각 데이터는 입력 토큰 시퀀스 &lt;span&gt;&lt;span&gt;(x1,...,xm)&lt;/span&gt;&lt;/span&gt;과 해당 label &lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;y&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;로 구성된다. 입력은 pre-trained 모델을 통과하여 마지막 Transformer layer의 출력 &lt;span&gt;&lt;span&gt;hl&lt;/span&gt;&lt;/span&gt;을 얻는다. 이후, 이 값을 새로운 linear layer에 넣어 label &lt;span&gt;&lt;span&gt;y&lt;/span&gt;&lt;/span&gt;를 예측한다. 목적함수도 최대화한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;45&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yMpQm/dJMcaayquR0/zfEWHAefxksKxzkMTcHEr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yMpQm/dJMcaayquR0/zfEWHAefxksKxzkMTcHEr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yMpQm/dJMcaayquR0/zfEWHAefxksKxzkMTcHEr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyMpQm%2FdJMcaayquR0%2FzfEWHAefxksKxzkMTcHEr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;414&quot; height=&quot;43&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;45&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;51&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IjMv4/dJMcafT148a/ZFp0f6r9Kj04ZTtObYkao0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IjMv4/dJMcafT148a/ZFp0f6r9Kj04ZTtObYkao0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IjMv4/dJMcafT148a/ZFp0f6r9Kj04ZTtObYkao0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIjMv4%2FdJMcafT148a%2FZFp0f6r9Kj04ZTtObYkao0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;428&quot; height=&quot;49&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;51&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fine-tuning 과정에서 language modeling을 &lt;b&gt;보조 objective로 함께 사용하는 것이 &lt;/b&gt;학습에 도움이 된다는 것을 발견하였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 일반화 성능 향상 + 학습 속도 증가&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;237&quot; data-origin-height=&quot;31&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FaUaR/dJMcabRBPkd/KIEZvTdKG4XiVmg9xZ2cs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FaUaR/dJMcabRBPkd/KIEZvTdKG4XiVmg9xZ2cs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FaUaR/dJMcabRBPkd/KIEZvTdKG4XiVmg9xZ2cs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFaUaR%2FdJMcabRBPkd%2FKIEZvTdKG4XiVmg9xZ2cs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;237&quot; height=&quot;31&quot; data-origin-width=&quot;237&quot; data-origin-height=&quot;31&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목적함수 최적화한다. fine-tuning 과정에서 추가되는 파라미터는 출력 layer의 Wy와 일부 delimiter token embedding 뿐이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;804&quot; data-origin-height=&quot;327&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XhzNc/dJMcagyBq8O/C0nmU43kRfNGAs8E5lIhP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XhzNc/dJMcagyBq8O/C0nmU43kRfNGAs8E5lIhP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XhzNc/dJMcagyBq8O/C0nmU43kRfNGAs8E5lIhP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXhzNc%2FdJMcagyBq8O%2FC0nmU43kRfNGAs8E5lIhP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;627&quot; height=&quot;255&quot; data-origin-width=&quot;804&quot; data-origin-height=&quot;327&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽은 Transformer 구조와 학습 방식, 오른쪽은 다양한 task에 대해 입력을 token sequence 형태로 변환하는 방식이다. 모든 입력을 하나의 시퀸스로 변환한 뒤, linear + softmax를 통해 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.3 Task-specific input transformations&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일부 작업(예: 텍스트 분류)은 앞에서 설명한 방식으로 그대로 fine-tuning이 가능하다. 하지만 질문응답이나 자연어 추론처럼 입력이 문장 쌍 또는 (문서, 질문, 답변)과 같은 구조를 가지는 경우에는 추가적인 처리가 필요하다. 우리의 pre-trained 모델은 연속된 텍스트 시퀀스를 기반으로 학습되었기 때문에, 이러한 구조화된 입력을 그대로 사용할 수 없다. 기존 연구에서는 전이된 표현 위에 task-specific 구조를 추가로 학습하는 방법을 사용하였다. 하지만 &lt;span style=&quot;color: #ee2323;&quot;&gt;이러한 방식은 task마다 많은 구조적 변경을 필요로 하며, 추가적인 부분에서는 전이학습이 제대로 활용되지 않는다.&lt;/span&gt; 본 논문은 대신 &lt;b&gt;구조화된 입력을 하나의 순서 있는 텍스트 시퀀스로 변환하는 방식&lt;/b&gt;을 사용한다. 이 방법을 통해 모델 구조를 크게 바꾸지 않고도 다양한 task에 적용할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Textual Entailment (문장 관계 판단) : premise(p)와 hypothesis(h)를 중간에 delimiter 토큰($)을 넣어 이어 붙인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; [p ; $ ; h]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Similarity (문장 유사도) : 두 문장의 순서가 중요하지 않기 때문에 두 가지 순서를 모두 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; [s1 ; $ ; s2], [s2 ; $ ; s1]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Question Answering / Commonsense Reasoning : 문서(z), 질문(q), 답 후보들 {aₖ}가 주어진다. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;각 답 후보마다 다음과 같이 입력을 구성한다. 각 시퀀스를 모델에 따로 넣은 뒤, softmax를 통해 최종 답을 선택한다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;-&amp;gt; [z&amp;nbsp;;&amp;nbsp;q&amp;nbsp;;&amp;nbsp;$&amp;nbsp;;&amp;nbsp;aₖ]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4.1 Experiments &lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.1 Setup&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;unsupervised pre-training&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약 7,000권 이상의 다양한 장르 책으로 구성된 BooksCorpus 데이터셋&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;을 사용,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 긴 문맥이 유지된 연속적인 텍스트로 이루어져 장거리 의존성 학습 가능 (1B Word Benchmark는 문장 단위로 섞여 있기 때문에 문맥 구조 깨지는 차이)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 이 데이터에서 &lt;b&gt;perplexity 18.4&lt;/b&gt;라는 낮은 값을 달성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Model specifications &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 Transformer 구조 따름. 12-layer decoder-only Transformer, optimizer: Adam,&amp;nbsp; 100 epoch 학습, L2 regularization 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Fine-tuning details&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fine-tuning시에는 기본적으로 pre-training 설정을 그대로 사용한다. 대부분 task에서 3 epoch이면 충분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4.2 Supervised Fine-tuning &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT 모델을 다양한 NLP task에 fine-tuning하여 성능을 평가하였다. 평가한 task는 크게 자연어 추론(NLI), 질문응답 및 상식 추론, 의미 유사도(패러프레이즈), 텍스트 분류로 구성된다. 전체적으로 GPT는 기존 RNN/BiLSTM 기반 모델보다 더 좋은 성능을 보였으며 특히 긴 문맥 처리와 문장 간 관계 이해에서 강점을 보였다. 또한 대부분의 task에서 복잡한 task-specific 구조 없이도 높은 성능을 달성하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xwJ8m/dJMcadBPRLB/KRmZk8xq9s6E0KydWDZkzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xwJ8m/dJMcadBPRLB/KRmZk8xq9s6E0KydWDZkzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xwJ8m/dJMcadBPRLB/KRmZk8xq9s6E0KydWDZkzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxwJ8m%2FdJMcadBPRLB%2FKRmZk8xq9s6E0KydWDZkzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;582&quot; height=&quot;170&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT(Finetuned Transformer LM)가 기존 NLI 모델들과 비교해서 얼마나 성능이 좋은지 보여주는 표다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문장 관계 판단 task 학습 데이터와 비슷한 도메인 / 안 본 도메인 / 이미지 캡션 기반 데이터 / 과학 문제 기반 / 질문 문장 관계 / 작은 규모&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 대부분 최고 성능, 긴 문맥과 문장 관계 이해 강함, 복잡한 구조 없어도 성능 우수, 작은 데이터셋에서는 약점 존재&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;223&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pmbkc/dJMcaiiUEME/DqY2tvDtsydWFvfwGKH2t1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pmbkc/dJMcaiiUEME/DqY2tvDtsydWFvfwGKH2t1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pmbkc/dJMcaiiUEME/DqY2tvDtsydWFvfwGKH2t1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpmbkc%2FdJMcaiiUEME%2FDqY2tvDtsydWFvfwGKH2t1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;547&quot; height=&quot;152&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짧은 이야기 마지막 문장 맞추기 / 중국 영어시험 기반 QA 중학교 수준 / 고등학교 수준&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 상식 추론 매우 강함, 긴 문맥 처리 능력 뛰어남, 이야기 흐름과 논리 관계 이해 가능&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;283&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k2TgB/dJMb99TOvpn/ZsSdgXfoN3YbJoVpB3hW3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k2TgB/dJMb99TOvpn/ZsSdgXfoN3YbJoVpB3hW3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k2TgB/dJMb99TOvpn/ZsSdgXfoN3YbJoVpB3hW3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk2TgB%2FdJMb99TOvpn%2FZsSdgXfoN3YbJoVpB3hW3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;531&quot; height=&quot;188&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;283&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문법성 판단(CoLA) / 감정 분류(SST-2) / 문장 유사도(MRPC, QQP, STS-B)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;문법적 언어 이해 능력 우수, 문장 의미 및 패러프레이즈 관계를 효과적으로 학습, 다양한 NLP 분류 task에서도 높은 성능 달성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;5. Analysis &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT가 왜 잘 동작하는지 분석한다. 주요 분석 내용은 pre-training layer 전이 효과, zero-shot 성능 변화, Transformer vs LSTM 비교, pre-training의 중요성 등이다.&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzo7jA/dJMcaiXt0Cx/KTBOD5MuAAW7Ssar0358t1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzo7jA/dJMcaiXt0Cx/KTBOD5MuAAW7Ssar0358t1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzo7jA/dJMcaiXt0Cx/KTBOD5MuAAW7Ssar0358t1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzo7jA%2FdJMcaiXt0Cx%2FKTBOD5MuAAW7Ssar0358t1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;564&quot; height=&quot;246&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;351&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Layer Transfer Analysis&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pre-training된 Transformer의 layer를 얼마나 많이 가져오는지에 따라 성능이 어떻게 변하는지 분석하였다. 결과적으로 embedding만 전이해도 성능 향상, Transformer layer를 더 많이 사용할수록 성능 증가, 전체 layer를 사용할 때 MultiNLI에서 최대 9% 향상을 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; pre-trained 모델의 각 layer가 task 해결에 유용한 언어 정보를 학습하고 있음을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Zero-shot Behavior&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Transformer language model이 왜 효과적인지 분석하기 위해 fine-tuning 없이(zero-shot) task를 수행하는 실험도 진행하였다. 결과적으로 학습이 진행될수록 zero-shot 성능도 꾸준히 향상, Transformer가 다양한 task 관련 기능을 자연스럽게 학습, LSTM보다 Transformer가 더 안정적인 transfer 성능을 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; Transformer의 attention 구조가 전이학습에 도움을 준다는 것을 보여준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;808&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bl0nb9/dJMcaaLYHrb/ayKKpGtIecxkOzvlkHShWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bl0nb9/dJMcaaLYHrb/ayKKpGtIecxkOzvlkHShWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bl0nb9/dJMcaaLYHrb/ayKKpGtIecxkOzvlkHShWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbl0nb9%2FdJMcaaLYHrb%2FayKKpGtIecxkOzvlkHShWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;689&quot; height=&quot;133&quot; data-origin-width=&quot;808&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Auxiliary LM 제거 / Transformer 대신 LSTM 사용 / pre-training 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; pre-training이 GPT 성능의 핵심 요소, Transformer가 LSTM보다 더 뛰어난 전이 성능 제공, auxiliary LM은 일부 큰 데이터셋에서만 성능 향상에 도움&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;6. Conclusion&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;generative pre-training과 discriminative fine-tuning을 통해 하나의 범용(task-agnostic) 모델로 강력한 자연어 이해를 수행하는 framework를 제안하였다. 긴 문맥이 포함된 다양한 텍스트 코퍼스로 pre-training되면서 풍부한 세계 지식과 장거리 의존성 처리 능력을 학습하게 된다. 이후 fine-tuning을 통해 다양한 task에 효과적으로 전이되었다. 비지도 pre-training을 이용해 지도학습 task 성능을 향상시키는 것은 오랫동안 머신러닝 분야의 중요한 목표였다. Transformer 구조와 긴 문맥 포함 텍스트 데이터가 매우 효과적이라는 점을 시사한다. 자연어 이해뿐 아니라 다양한 분야에서 비지도 학습 연구를 더욱 발전시키길 기대한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>zzangsky</author>
      <guid isPermaLink="true">https://zzangsky.tistory.com/8</guid>
      <comments>https://zzangsky.tistory.com/8#entry8comment</comments>
      <pubDate>Tue, 5 May 2026 02:30:02 +0900</pubDate>
    </item>
    <item>
      <title>[Paper Review] Attention Is All You Need (Transformer)</title>
      <link>https://zzangsky.tistory.com/7</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1706.03762&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://arxiv.org/abs/1706.03762&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1777719550953&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Attention Is All You Need&quot; data-og-description=&quot;The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new &quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/1706.03762&quot; data-og-url=&quot;https://arxiv.org/abs/1706.03762v7&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cucP58/dJMb8TCddbo/kqZGcNbsXBvKu9NM3KjFt0/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/b3hnDN/dJMb8U8W8yH/KpUcozdscyIN6lIc1rLcqK/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1706.03762&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/1706.03762&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cucP58/dJMb8TCddbo/kqZGcNbsXBvKu9NM3KjFt0/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/b3hnDN/dJMb8U8W8yH/KpUcozdscyIN6lIc1rLcqK/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Attention Is All You Need&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Abstract&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sequence 변환 모델들은 encoder와 decoder를 포함한 복잡한 RNN 또는 CNN 구조이다. 거기에 더해 성능이 좋은 모델들은 attention 메커니즘을 사용한다. 이 논문은 오직 attention만으로 구성된 새로운 네트워크 구조인 Transformer를 제안한다. 결과적으로 기계 번역 실험에서 이 모델은 더 높은 성능을 달성하면서도 병렬화가 가능하고 학습 시간이 훨씬 짧았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1. Introduction&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RNN, 특히 LSTM과 GRU는 언어 모델링과 기계 번역과 같은 sequence modeling 문제에서 최첨단 방법으로 자리 잡았다. 이후에도 이러한 RNN 기반 모델과 encoder-decoder 구조의 성능을 더욱 향상시키기 위한 다양한 연구들이 진행되어 왔다. &lt;span style=&quot;color: #ee2323;&quot;&gt;RNN 모델 구조는 본질적으로 순차적이기 때문에 하나의 문장 내부에서도 병렬 처리가 불가능하다. 특히 문장이 길어질수록 심해지며 메모리 제한 때문에 batch 처리에도 어려움이 존재한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, attention 메커니즘은 입력과 출력 시퀀스에서 거리와 상관없이 의존 관계를 학습할 수 있게 해주며&amp;nbsp;다양한 모델에서 중요한 요소로 자리 잡았다. 그러나 대부분의 경우 attention은 여전히 RNN과 함께 사용되는 보조적인 역할이었다. &lt;b&gt;본 논문에서는 이러한 문제를 해결하기 위해 recurrence 없이 오직 attention만으로 구성된 Transformer 구조를 제안&lt;/b&gt;한다. Transformer는 입력과 출력 간의 전역적인 의존 관계를 attention만으로 모델링하며 훨씬 높은 병렬화가 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2. Background &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순차적 계산을 줄이려는 시도는 Extended Neural GPU, ByteNet, ConvS2S와 같은 모델에서도 나타난다. 이 모델들은 CNN을 사용하여 입력과 출력의 모든 위치에 대해 병렬로 hidden representation을 계산한다. &lt;span style=&quot;color: #ee2323;&quot;&gt;하지만 이러한 모델에서는 서로 멀리 떨어진 위치 간의 관계를 연결하기 위해 필요한 연산 수가 거리(distance)에 따라 증가한다. (convS2S - 선형적 증가, ByteNet-로그로 증가)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 Transformer에서는 두 위치 간의 관계를 연결하는 데 필요한 연산이 상수(constant)이다. 다만 attention은 여러 위치의 정보를 평균내는 과정이 있어 해상도(resolution)가 낮아질 수 있는데 이를 Multi-Head Attention으로 보완한다. Self-attention은 하나의 시퀀스 내부의 서로 다른 위치 간 관계를 학습하여 시퀀스 전체를 표현하는 메커니즘이다. 이는 독해, 요약, 문장 유사도 등 다양한 작업에서 이미 성공적으로 사용되어 왔다. 또한 End-to-end memory network는 RNN 대신 attention 기반 구조를 사용하여 간단한 질의응답 및 언어 모델링에서 좋은 성능을 보였다. (그러나 여전히 RNN 또는 CNN과 함꼐 사용) 본 논문에서 제안하는 &lt;b&gt;Transformer는 오직 self-attention만을 사용하는 최초의 모델이다. &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3 Model Architecture&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;726&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DpZeE/dJMcaaFbsKO/WLJzi9eussGjRLLt6RUink/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DpZeE/dJMcaaFbsKO/WLJzi9eussGjRLLt6RUink/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DpZeE/dJMcaaFbsKO/WLJzi9eussGjRLLt6RUink/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDpZeE%2FdJMcaaFbsKO%2FWLJzi9eussGjRLLt6RUink%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;291&quot; height=&quot;409&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;726&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;encoder : 입력 시퀀스 &lt;span&gt;&lt;span&gt;(x1,...,xn)&lt;/span&gt;&lt;/span&gt;을 연속적인 표현 &lt;span&gt;&lt;span&gt;z=(z1,...,zn)&lt;/span&gt;&lt;/span&gt;으로 변환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;decoder : z 바탕으로 출력 시퀀스 &lt;span&gt;&lt;span&gt;(y1,...,ym)&lt;/span&gt;&lt;/span&gt;을 한 단어씩 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정에서 모델은 이전에 생성된 단어들을 입력으로 사용하며 auto-regressive (자귀 회귀, 이전 겨로가 이용해 다음 값 예측하는) 방식으로 동작한다. Transformer는 &lt;b&gt;encoder와 decoder 모두에서 self-attention과 fully connected layer를 반복적으로 쌓은 구조&lt;/b&gt;를 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.1 Encoder and Decoder Stacks&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Encoder : 동일한 구조의 layer를 N=6개 쌓은 형태, 각 layer는 두 개의 sub-layer로 구성&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Multi-head self-attention&lt;/b&gt; - 같은 문장 안에서 단어들끼리 서로 얼마나 중요한지 계산 x N (여러번 동시에)&lt;/li&gt;
&lt;li&gt;&lt;b&gt; Position-wise fully connected feed-forward network&lt;/b&gt; - 각 단어에 대해 독립적인 FFN&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 sub-layer 주변에는 &lt;b&gt;residual connection&lt;/b&gt;이 적용되며 그 후 &lt;b&gt;layer normalization&lt;/b&gt;이 수행된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;LayerNorm&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Sublayer&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;)) -&amp;gt; 이러한 residual 연결을 위해 모든 sub-layer와 embedding은 동일한 차원 &lt;span&gt;&lt;span&gt;d_model=512&lt;/span&gt;&lt;/span&gt;을 갖는다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Decoder : 동일한 구조의 layer를 N=6개 쌓은 형태, 각 layer는 3개의 sub-layer로 구성&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Masked multi-head self-attention&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt; Encoder-Decoder attention &lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt; Feed-forward network&lt;/b&gt; - Linear + ReLU + Linear, 각 단어 개별적 변환 (책 -&amp;gt; 벡터 &amp;gt; FFN -&amp;gt; 더 풍부한 의미 벡터)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;encoder와 동일하게 각 sub-layer마다 &lt;b&gt;residual connection + layer normalization&lt;/b&gt;이 적용된다. 또한 decoder의 self-attention에서는 &lt;b&gt;미래 단어를 보지 못하도록 masking을 적용&lt;/b&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; masking과 출력 shifting 덕분에 각 위치 i 의 예측은 오직 i 이전 단어들에만 의존&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.2.1 Scaled Dot-Product Attention&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력은 query(지금 내가 보고 있는 단어), key(비교 대상 단어들), value(실제 가져올 정보)로 구성된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;66&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buUUQG/dJMcaf0JKym/Z6mDrgmrdsSEV3VNtI96Dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buUUQG/dJMcaf0JKym/Z6mDrgmrdsSEV3VNtI96Dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buUUQG/dJMcaf0JKym/Z6mDrgmrdsSEV3VNtI96Dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuUUQG%2FdJMcaf0JKym%2FZ6mDrgmrdsSEV3VNtI96Dk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;412&quot; height=&quot;52&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;66&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;query (내적) key -&amp;gt; 루트d_k 로 나누기 -&amp;gt; softmax -&amp;gt; 가중치 -&amp;gt; 가중치 x value -&amp;gt; ouput&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.2.2 Multi-Head Attention &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단일 attention을 사용하는 대신 query, key, value를 여러 개의 서로 다른 선형 변환으로 투영한 뒤 각각에 대해 attention을 병렬로 수행하는 것이 더 효과적이다. 각 attention의 결과는 이후 연결(concatenate)되고 다시 선형 변환을 거쳐 최종 출력이 생성된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NL6Gh/dJMcacJMLIH/ISBzs9Fu1nF1m0mXq3nVZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NL6Gh/dJMcacJMLIH/ISBzs9Fu1nF1m0mXq3nVZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NL6Gh/dJMcacJMLIH/ISBzs9Fu1nF1m0mXq3nVZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNL6Gh%2FdJMcacJMLIH%2FISBzs9Fu1nF1m0mXq3nVZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;442&quot; height=&quot;79&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 W_Q, W_K, W_V는 서로 다른 학습 가능한 행렬이다. 본 논문에서는 &lt;span&gt;&lt;span&gt;h=8&lt;/span&gt;&lt;/span&gt;개의 head를 사용하며 각 head의 차원은 &lt;span&gt;dk = dv = dmodel/h = 64이다. 여러 head를 사용하면 모델이 서로 다른 표면 공간에서 다양한 관계를 동시에 학습 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.2.3 Applications of Attention in our Model &lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Transformer는 multi-head attention을 세 가지 방식으로 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Encoder-Decoder Attention (Cross Attention)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;query는 decoder에서 key와 value는 encoder의 출력에서 옴 -&amp;gt; decoder의 각 위치는 입력 시퀀스의 모든 위치 참고 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Encoder의 Self-Attention &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;encoder는 query, key, value 모두 이전 layer의 encoder 출력에서 나옴 -&amp;gt; encoder의 각 위치는 입력 문장의 모든 위치참고 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;3. Decoder의 Self-Attention (Masked)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;decoder에서도 self-attention이 사용되며 각 위치는 이전 위치들까지만 참고 가능 -&amp;gt; 이를 위해 masking 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.3 Position-wise Feed-Forward Networks &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 encoder와 decoder의 layer에는 attention sub-layer 외 &lt;b&gt;fully connected feed-forward network(FFN)&lt;/b&gt;가 포함되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 FFN은 각 위치(position)에 대해 독립적으로 동일하게 적용된다. ( 입력 &amp;rarr; Linear &amp;rarr; ReLU &amp;rarr; Linear &amp;rarr; 출력 )&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;475&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pF6Rt/dJMcacJML9r/LiQ4d66DKFypP80ZYH7Jj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pF6Rt/dJMcacJML9r/LiQ4d66DKFypP80ZYH7Jj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pF6Rt/dJMcacJML9r/LiQ4d66DKFypP80ZYH7Jj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpF6Rt%2FdJMcacJML9r%2FLiQ4d66DKFypP80ZYH7Jj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;397&quot; height=&quot;46&quot; data-origin-width=&quot;475&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력과 출력의 차원은 d_model = 512이고, hidden 차원은 d_ff = 2048이다. 차원을 키웠다 줄이는 이유는 더 풍부한 표현을 만들기 위함이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.4 Embeddings and Softmax &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 sequence 모델들과 마찬가지로 입력 토큰과 출력 토큰을 벡터로 변환하기 위해 embedding을 사용한다. 또한 decoder의 출력은 linear transformation + softmax를 통해 다음 단어의 확률로 변환된다. 입력 embedding, 출력 embedding, softmax 이전 linear transformation이 같은 weight를 공유한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1048&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qXAoQ/dJMcaaFcJld/R6t5OkR6KAKkDGYpNgf4e0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qXAoQ/dJMcaaFcJld/R6t5OkR6KAKkDGYpNgf4e0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qXAoQ/dJMcaaFcJld/R6t5OkR6KAKkDGYpNgf4e0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqXAoQ%2FdJMcaaFcJld%2FR6t5OkR6KAKkDGYpNgf4e0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;662&quot; height=&quot;150&quot; data-origin-width=&quot;1048&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;complexity per Layer - 연산량 / sequential operations - 순차 연산 (1은 병렬) / maximum path length - 정보 전달 거리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 병렬처리 가능하고 장거리 의존성도 없고 계산 효율이 좋은 모델은 self- attention 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.5 Positional Encoding &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;transformer는 recurrence도 없고 convolution도 없기 때문에 시퀀스의 순서 정보를 활용하기 위해 토큰의 위치 정보를 따로 추가해주어야 한다.&amp;nbsp; 이를 위해 우리는 encoder와 decoder의 입력 embedding에 &lt;b&gt;positional encoding&lt;/b&gt;을 더해준다. positional encoding은 embedding과 같은 차원을 가지며 두 값을 더할 수 있도록 설계된다. positional encoding엔 여러 방식이 존재하고 학습 가능 방식과 고정도니 방식이 존재한다. 본 논문에서는 서로 다른 주파수를 가지는 sin, cos 함수 기반 positional encoding을 사용한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;99&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v0ESn/dJMcagMbrFF/aXsGZLi79ECMAHy5huyx9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v0ESn/dJMcagMbrFF/aXsGZLi79ECMAHy5huyx9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v0ESn/dJMcagMbrFF/aXsGZLi79ECMAHy5huyx9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv0ESn%2FdJMcagMbrFF%2FaXsGZLi79ECMAHy5huyx9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;339&quot; height=&quot;76&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;99&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pos = 위치 (1,2,3...) / i = 차원 인덱스(0 ~ d_model/2) / d_model = 전체 차원 (논문에선 512)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; positional encoding의 짝수 차원은 sin, 홀수 차원은 cos로 구성, 복잡한 숫자는 주기 조절로 i 커질수록 값 작아져 변화 느려짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 4 Why Self-Attention&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;self-attention layer를 RNN이나 CNN과 같은 기존 layer들과 비교한다. 입력 시퀀스 &lt;span&gt;&lt;span&gt;(x1,...,xn)&lt;/span&gt;&lt;/span&gt;을 동일한 길이의 표현 &lt;span&gt;&lt;span&gt;(z1,...,zn)&lt;/span&gt;&lt;/span&gt;으로 변환하는 문제를 고려한다. self-attention을 사용하는 이유를 4가지 기준으로 비교한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 계산 복잡도&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;self-attention의 계산 복잡도는 &lt;span&gt;&lt;span&gt;O(n2&amp;sdot;d)&lt;/span&gt;&lt;/span&gt;이다. RNN은 &lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;&amp;sdot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, CNN은 &lt;span&gt;&lt;span&gt;O(k&amp;sdot;n&amp;sdot;d2)&lt;/span&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 문장 길이 n이 표현 차원 d보다 작은 경우, self-attention이 더 효율적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 병렬화&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;self-attention은 모든 위치를 동시에 계산할 수 있어 순차 연산이 O(1)이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 장거리 의존성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;self-attention에서는 모든 위치 간 경로 길이가 O(1)이다. 반면 RNN은 O(n), CNN은 O(log n)이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 경로가 짧을수록 장거리 의존성 학습하기 쉽다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 표현력&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;self-attention은 multi head로 각 head가 서로 다른 역할을 하여 학습하는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 모델을 더 해석 가능하게 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;5. Training&lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;5.1 Training Data and Batching&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약 450만 개의 문장 쌍으로 구성된 WMT 2014 영어-독일어 데이터셋 사용, 문장은 byte-pair encoding(BPE)을 사용하여 인코딩되었으며 약 37,000개의 공유 vocabulary를 사용 영어-프랑스어의 경우 더 큰 데이터셋(3,600만 문장)을 사용하였고, 32,000개의 word-piece vocabulary로 나눔 문장 쌍은 길이가 비슷한 것끼리 batch로 묶었다. 각 batch에는 약 25,000개의 source token과&lt;br /&gt;25,000개의 target token이 포함되었다. -&amp;gt; 단어를 쪼개서 vocabulary 줄임, 길이 비슷한 것끼리 batching 효율 높이기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 5.2 Hardware and Schedule &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8개의 NVIDIA P100 GPU를 사용하여 모델을 학습하였다. -&amp;gt; 짧은 시간에 높은 성능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 5.3 Optimizer &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Adam optimizer를 사용, 러닝레이트 초반에 점점 증가 시키다가 후반에 점점 감소시켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 5.4 Regularization &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Residual Dropout&lt;/b&gt; : 각 sub-layer 출력에 dropout을 적용한 뒤 residual connection과 normalization을 수행, embedding과 positional encoding의 합에도 dropout을 적용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Label Smoothing&lt;/b&gt; : label smoothing (&amp;epsilon; = 0.1)을 적용 -&amp;gt; perplexity를 악화시키지만 accuracy와 BLEU score를 향상&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k0Nty/dJMcahEg8CW/XGkriCQIYBcu22iLvuKSsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k0Nty/dJMcahEg8CW/XGkriCQIYBcu22iLvuKSsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k0Nty/dJMcahEg8CW/XGkriCQIYBcu22iLvuKSsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk0Nty%2FdJMcahEg8CW%2FXGkriCQIYBcu22iLvuKSsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;587&quot; height=&quot;258&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 6. Results &lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;6.1 Machine Translation&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WMT 2014 영어&amp;rarr;독일어 번역 작업에서 Transformer (big) 모델은 기존의 최고 성능 모델들(앙상블 포함)보다 2 BLEU 이상 높은 성능(28.4 BLEU)을 달성하였다. 또한 base 모델조차도 기존의 모든 모델 및 앙상블보다 더 낮은 학습 비용으로 더 높은 성능을 달성하였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영어&amp;rarr;프랑스어 번역 작업에서는, big 모델이 41.0 BLEU를 달성하여 기존 single model보다 우수한 성능을 보였으며, 학습 비용은 기존 최고 모델의 1/4 수준이었다. base 모델의 경우, 마지막 5개의 checkpoint를 평균하여 최종 모델을 구성하였다. big 모델의 경우, 마지막 20개의 checkpoint를 평균하였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1038&quot; data-start=&quot;913&quot; data-ke-size=&quot;size16&quot;&gt;추론(inference) 시에는 beam search를 사용하였으며, beam size는 4, length penalty는 0.6으로 설정하였다. 출력 길이는 입력 길이 + 50으로 제한하였으며, 가능한 경우 더 일찍 종료하였다.&lt;/p&gt;
&lt;p data-end=&quot;1038&quot; data-start=&quot;913&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1038&quot; data-start=&quot;913&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 6.2 Model Variations &lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1038&quot; data-start=&quot;913&quot; data-ke-size=&quot;size16&quot;&gt;Transformer의 각 구성 요소가 얼마나 중요한지 평가하기 위해, base 모델을 다양한 방식으로 변경하고 영어&amp;rarr;독일어 번역(dev set)에서 성능 변화를 측정&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;690&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcvoeW/dJMcadhA9mj/yCMNiOt6tNnCkjk3wIZNGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcvoeW/dJMcadhA9mj/yCMNiOt6tNnCkjk3wIZNGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcvoeW/dJMcadhA9mj/yCMNiOt6tNnCkjk3wIZNGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcvoeW%2FdJMcadhA9mj%2FyCMNiOt6tNnCkjk3wIZNGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;544&quot; height=&quot;346&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;690&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1038&quot; data-start=&quot;913&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; (A) Attention head 수 변화 &lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1038&quot; data-start=&quot;913&quot; data-ke-size=&quot;size16&quot;&gt;attention head의 개수와 각 head의 차원을 조절 -&amp;gt; single-head attention은 최적 설정보다 약 0.9 BLEU 낮은 성능, head 수 너무 많아도 성능 감소&lt;/p&gt;
&lt;p data-end=&quot;1038&quot; data-start=&quot;913&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; (B) Key 차원 dk 감소 &lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1038&quot; data-start=&quot;913&quot; data-ke-size=&quot;size16&quot;&gt;attention key의 차원을 줄이면 성능이 감소 -&amp;gt; 단순한 dot-product 만으로는 충분한 관계 표현이 어려울 수 있음&lt;/p&gt;
&lt;p data-end=&quot;1038&quot; data-start=&quot;913&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; (C), (D) 모델 크기 변화&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1038&quot; data-start=&quot;913&quot; data-ke-size=&quot;size16&quot;&gt;모델의 크기가 커질수록 성능이 향상되는 경향, dropout은 과적합 방지에 중요한 역할&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; (E) Positional Encoding 방식 비교 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sinusoidal positional encoding 대신 학습 가능한 positional embedding을 사용해도 거의 동일한 성능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 6.3 English Constituency Parsing &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Transformer가 다른 작업에도 잘 일반화되는지 평가하기 위해 어 구문 분석(task)에 대한 실험을 수행&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;405&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OhTyQ/dJMcabjODOU/uhVwrCellLBoJXL6oKe0gK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OhTyQ/dJMcabjODOU/uhVwrCellLBoJXL6oKe0gK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OhTyQ/dJMcabjODOU/uhVwrCellLBoJXL6oKe0gK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOhTyQ%2FdJMcabjODOU%2FuhVwrCellLBoJXL6oKe0gK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;637&quot; height=&quot;292&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 RNN 기반 seq2seq 모델은 데이터가 적은 환경에서는 좋은 성능을 내지 못했다. dropout, learning rate, beam size 등 일부 하이퍼파라미터만 조정하고, 나머지는 번역 모델과 동일하게 유지하였다. 실험 결과, Transformer는 task-specific tuning이 거의 없음에도 불구하고 매우 좋은 성능을 보였다. 특히 WSJ-only 설정에서도 Berkeley Parser보다 더 높은 성능을 달성하였다. 이는 Transformer가 작은 데이터 환경에서도 기존 RNN 기반 모델보다 더 뛰어난 성능을 보일 수 있음을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 7 Conclusion&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 attention만으로 구성된 최초의 sequence 변환 모델인 Transformer를 제안하였다. 기존 encoder-decoder 구조에서 널리 사용되던 recurrent layer를 제거하고, multi-head self-attention으로 대체하였다. 기계 번역 작업에서 Transformer는 RNN이나 CNN 기반 모델보다 훨씬 빠르게 학습되며, 더 높은 성능을 달성하였다. 특히 영어&amp;rarr;독일어 작업에서는 기존의 모든 앙상블 모델보다도 더 높은 성능을 보였다. 텍스트뿐만 아니라 이미지, 오디오, 비디오와 같은 다양한 입력/출력 형태에도 Transformer를 확장할 수 있을 것으로 본다. 더 나아가, 생성 과정을 덜 순차적으로 만드는 것도 향후 연구 과제이다.&lt;/p&gt;</description>
      <author>zzangsky</author>
      <guid isPermaLink="true">https://zzangsky.tistory.com/7</guid>
      <comments>https://zzangsky.tistory.com/7#entry7comment</comments>
      <pubDate>Sun, 3 May 2026 00:55:02 +0900</pubDate>
    </item>
    <item>
      <title>[Short Review] Deep contextualized word representations (ELM0)</title>
      <link>https://zzangsky.tistory.com/6</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1802.05365&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://arxiv.org/abs/1802.05365&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1777357461927&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Deep contextualized word representations&quot; data-og-description=&quot;We introduce a new type of deep contextualized word representation that models both (1) complex characteristics of word use (e.g., syntax and semantics), and (2) how these uses vary across linguistic contexts (i.e., to model polysemy). Our word vectors are&quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/1802.05365&quot; data-og-url=&quot;https://arxiv.org/abs/1802.05365v2&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/NyvHq/dJMb89ygBkC/SgMaujl5HmKjfGwoeJBAa1/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/Y8SkE/dJMb84X1LeL/Si3ANJDGguiEuZVMFtWqDK/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1802.05365&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/1802.05365&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/NyvHq/dJMb89ygBkC/SgMaujl5HmKjfGwoeJBAa1/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/Y8SkE/dJMb84X1LeL/Si3ANJDGguiEuZVMFtWqDK/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Deep contextualized word representations&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;We introduce a new type of deep contextualized word representation that models both (1) complex characteristics of word use (e.g., syntax and semantics), and (2) how these uses vary across linguistic contexts (i.e., to model polysemy). Our word vectors are&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1. 배경 및 문제점&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 Word2Vec, GloVe 같은 임베딩은 단어마다 하나의 고정 벡터만 사용한다.&lt;/li&gt;
&lt;li&gt;문맥에 따라 의미가 달라도 같은 벡터 사용&lt;/li&gt;
&lt;li&gt;예시 : bank -&amp;gt; 은행 / 강둑 -&amp;gt; 구분 불가&lt;/li&gt;
&lt;li&gt;syntax + semantics 모두 반영 어려움&lt;/li&gt;
&lt;li&gt;polysemy (다의어) 처리 한계&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 문맥에 따라 달라지는 contextual embedding 필요&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 2. 아키텍처 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문맥 기반 단어 임베딩 (contextual embedding)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;BiLM (Bidirectional Language Model) 기반 : forward LM + backward LM&lt;/li&gt;
&lt;li&gt;LSTM 사용&lt;/li&gt;
&lt;li&gt;문장의 앞 + 뒤 문맥 모두 반영&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;주요 특징
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단어 벡터가 문장 전체에 따라 달라짐 (static embedding X)&lt;/li&gt;
&lt;li&gt;여러 층의 representation 사용 : lower layer &amp;rarr; 문법(syntax), higher layer &amp;rarr; 의미(semantics)&lt;/li&gt;
&lt;li&gt;모든 layer를 가중합해서 사용 : 단순히 top layer만 쓰지 않음&lt;/li&gt;
&lt;li&gt;pretrained 모델 활용 : 대규모 corpus로 biLM 학습, downstream task에 붙여서 사용&lt;/li&gt;
&lt;li&gt;기존 모델에 쉽게 추가 가능 : concat 방식으로 결합&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. 의의&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문맥을 반영한 최초의 실용적 word embedding&lt;/li&gt;
&lt;li&gt;다양한 NLP task에서 성능 향상&lt;/li&gt;
&lt;li&gt;최대 20% error 감소&lt;/li&gt;
&lt;li&gt;pretrain + downstream 구조 확립 -&amp;gt; 이후 BERT, GPT로 이어짐&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4.한계&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LSTM 기반 -&amp;gt; 병렬 처리 어려움&lt;/li&gt;
&lt;li&gt;계산량 큼 (biLM + 여러 layer 사용)&lt;/li&gt;
&lt;li&gt;Transformer보다 비효율&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 이후 BERT / Transformer에 의해 대체&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 문맥에 따라 단어 표현이 달라지도록 biLSTM 기반 언어모델에서 모든 층의 정보를 결합한 &lt;br /&gt;contextual word embedding &lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>zzangsky</author>
      <guid isPermaLink="true">https://zzangsky.tistory.com/6</guid>
      <comments>https://zzangsky.tistory.com/6#entry6comment</comments>
      <pubDate>Tue, 28 Apr 2026 15:50:49 +0900</pubDate>
    </item>
  </channel>
</rss>