<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ji_pooh.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Wed, 19 Jul 2023 07:35:15 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>ji_pooh.log</title>
            <url>https://velog.velcdn.com/images/ji_pooh/profile/1fc41bc3-a605-41e5-82f8-f21ceff3a38b/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. ji_pooh.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/ji_pooh" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Explainable Reasoning over Knowledge Graphs for Recommendation]]></title>
            <link>https://velog.io/@ji_pooh/Explainable-Reasoning-over-Knowledge-Graphs-for-Recommendation</link>
            <guid>https://velog.io/@ji_pooh/Explainable-Reasoning-over-Knowledge-Graphs-for-Recommendation</guid>
            <pubDate>Wed, 19 Jul 2023 07:35:15 GMT</pubDate>
            <description><![CDATA[<h2 id="1-introduction">1. Introduction</h2>
<ul>
<li>Interection이 오직 &#39;click&#39;으로 구성되는 것이 아닌 user과 관계있는 item들의 특징을 반영하여 내재된 정보를 파악한다.</li>
<li>Knowledge Graph를 사용함으로써 추천에 대한 이유를 설명하고, Cold start 문제를 해결한다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/75025c68-66ee-4367-948c-9b08619019a3/image.png" alt=""></p>
<ul>
<li>위의 그림에서 User는 &#39;Alice&#39;이고 이 유저가 &#39;Castle on the Hill&#39; 이라는 곡을 추천 받았을 때, 다음과 같은 경로를 볼 수 있다.</li>
</ul>
<ol>
<li>(<strong>Alice</strong>, Interact, Shape of You) -&gt; (Shape of You, IsSongOf, divide(÷)) -&gt; (divide(÷), ContainSong, <strong>Castle on the Hill</strong>) ==&gt; 수록곡을 통한 Path</li>
<li>(<strong>Alice</strong>, Interact, Shape of You) -&gt; (Shape of You, SungBy, Ed Sheeran) -&gt; (Ed Sheeran, IsSingerOf, <strong>Castle on the Hill</strong>) ==&gt; 가수(Ed Sheeran)를 통한 Path</li>
<li>(<strong>Alice</strong>, Interact, Shape of You) -&gt; (Shape of You, Interacted By, Tony) -&gt; (Tony, Interact, <strong>Castle on the Hill</strong>) ==&gt; 유저를 통한 Path</li>
</ol>
<ul>
<li>이러한 연결들은 경로에서 정보를 종합하여 보이지 않는 user-item interaction을 추론한다.</li>
</ul>
<p><strong>KPRN</strong></p>
<ul>
<li>본 논문의 저자들은 모델 이름을 <strong>KPRN</strong>(Knowledge-aware Path Recurrent Network&#39;라고 지었고, 지식그래프의 path에 RNN 모델을 적용하였다.</li>
<li>기존 아이템 간의 관계형 데이터베이스 정보에 <em>User-Item interaction</em> 정보까지 고려하여 Knowledge Graph를 형성하고, 이는 정형데이터 관계와 Sequence 관계를 모두 포함하게 된다.</li>
<li>또한, 사용자에게 특정 아이템을 추천할 때, 다양한 관계 중 어떤 것에 중점을 두는지 학습하기 위하여 <strong>Weight Pooling</strong>을 사용한다.<ul>
<li>위의 경우에서 가수(Sung by)때문에 Castle on the Hill을 듣는 다는 것에 대한 설명이 가능하도록, Sungby의 관계에 높은 가중치를 두고 학습한다.</li>
</ul>
</li>
</ul>
<h2 id="2-modeling">2. Modeling</h2>
<h3 id="embedding-layer">Embedding Layer</h3>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/9dc83488-d464-41d2-87be-0e8b4b8d4a5c/image.png" alt=""></p>
<ul>
<li>Embedding을 할 때는, 동일한 entity-entity 쌍이 다른 의미(relation)을 가질 수 있고, 이러한 경우 다른 경로로써 포함한다.</li>
</ul>
<h3 id="lstm-layer">LSTM Layer</h3>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/57dfa3bb-e8a9-4e36-9ae7-b9131a92fbb5/image.png" alt=""></p>
<ul>
<li>Input : x (entity, entity type, relation type)</li>
<li>LSTM(Long Short Term Memory) : 장/단기 기억이 가능하게 설계 된 신경망 구조이며 1과 0으로 나타나는 Label을 기준으로 학습한다.</li>
<li>Pos Path와 Neg Path를 학습하며 Neg Path는 label이 0인 즉 상호작용이 없는 Path이다. </li>
<li>LSTM에 대한 설명 참고 : <a href="http://www.incodom.kr/LSTM">http://www.incodom.kr/LSTM</a></li>
</ul>
<h3 id="weighted-pooling-layer">Weighted Pooling Layer</h3>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/98700735-0f26-4b10-930d-924f1d70462d/image.png" alt=""><img src="https://velog.velcdn.com/images/lejss1012/post/5417755c-7441-427b-a8c4-2bf5a855dd54/image.png" alt=""><img src="https://velog.velcdn.com/images/lejss1012/post/3e97f663-44c7-4061-88f5-4d5aa8483d1c/image.png" alt=""><img src="https://velog.velcdn.com/images/lejss1012/post/578d524c-1b26-4b59-b663-c4231f58f735/image.png" alt=""></p>
<ul>
<li>(5)의 식은 path score들의 평균을 sigmoid 함수에 넣어준 값이 된다. 즉, path가 세개이고, 각각의 score가 [0.3, 0.6, 0.9]일 때, sigmoid(0.6)으로 약 0.64의 값이다.</li>
<li>(6)의 식에서는 path score을 $\exp(s_k/\gamma)$ 로 사용하면, $\gamma$(가중치)가 작은 수 일수록 결과값이 커진다. 여기서 $\hat{y}_{ui}$값이 크다는 의미는 score가 강한 path가 더 큰 영향력을 가진다는 <strong>max pooling</strong>을 의미한다.</li>
<li>(6)의 식에서 $\gamma$가 큰 수 일수록 $\hat{y}_{ui}$값이 작아지며 <strong>avg pooling</strong>에 가까워진다.</li>
</ul>
<h2 id="3-experiments">3. Experiments</h2>
<h3 id="3-1-dataset">3-1. DataSet</h3>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/ad488522-55e5-44e2-9c71-a86f4a5fb28f/image.png" alt=""></p>
<ul>
<li>IMDb의 knowledge graph data + MovieLens의 User-Item Interection인 MI(영화) 데이터와 음악 데이터 KKBox를 이용한다.</li>
<li>noisy해지는 것을 방지하여 Path의 length는 최대 6으로 설정되었고, First Node가 User이고 Last Node가 Item인 Path들을 추출하여 사용한다.</li>
</ul>
<h3 id="3-2-learning">3-2. Learning</h3>
<ol>
<li>Positive pair를 설정한 후 Pos Path를 추출한다.</li>
<li>Interaction이 없는 pair를 4개 설정한 후 Neg Path를 추출한다.</li>
<li>1과 2로 나온 데이터를 80%는 train data로, 20%는 test 데이터로 사용하여 학습한다. 이때의 목적함수는 다음과 같다.
<img src="https://velog.velcdn.com/images/lejss1012/post/14221688-8eb4-4a50-84eb-feafecf633f6/image.png" alt=""></li>
</ol>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/cab78f44-9cd9-4196-b516-4c316015bf5c/image.png" alt=""></p>
<ol start="4">
<li>Test는 1개의 test set pair과 random 한 100개의 쌍을 사용하고, 이 101개의 score로 평가를 한다. 이때, 평가지표는 Hit ratio@K, ndcg@K이다.</li>
</ol>
<h3 id="rq1">RQ1</h3>
<blockquote>
<p>Compared with the state-of-the-art KG-enhanced methods, how does our method perform?</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/3d7c99bd-961c-4c32-bf6b-a870dbe35df8/image.png" alt=""></p>
<ul>
<li>MI와 KKBox 데이터에서 모두 가장 좋은 성능을 내는 것을 볼 수 있다.</li>
</ul>
<h3 id="rq2">RQ2</h3>
<blockquote>
<p>How does the multi-step path modeling (e.g., the incorporation of both entity and relation types) affect KPRN? </p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/23468ccd-4454-4414-a3a8-6f9b8df68f6f/image.png" alt=""></p>
<ul>
<li><p>KPRN-r은 KPRN에서 relation을 고려하지 않은 모델이다.</p>
</li>
<li><p>MI 데이터 셋에서 relation을 고려하지 않았을 때 성능이 낮아지는 것을 미루어보아 relation을 고려해서 본 모델이 좋은 성능을 낸다고 말할 수 있다.
<img src="https://velog.velcdn.com/images/lejss1012/post/b194975c-5f2d-4da4-9839-d8153d7a89e3/image.png" alt=""></p>
</li>
<li><p>하이퍼파라미터가 크게 유의미하다고 보이지 않는다.</p>
</li>
</ul>
<h3 id="rq3">RQ3</h3>
<blockquote>
<p>Can our proposed method reason on paths to infer user preferences towards items?</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/a20e74cc-8527-4018-9f00-da819ab71007/image.png" alt=""></p>
<ul>
<li>이 논문의 가장 큰 Contribution은 Reasoning이다. </li>
<li>본 모델은 Knowledge Graph를 따라서 사용자의 관심을 확장할 수 있을 뿐만 아니라 사용자에게 Item이 왜 추천되었는지에 대한 적합한 설명을 제공 가능하다.</li>
</ul>
<h5 id="참고">참고</h5>
<p><a href="http://dsba.korea.ac.kr/seminar/?mod=document&amp;uid=387">http://dsba.korea.ac.kr/seminar/?mod=document&amp;uid=387</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DialogBERT: Discourse-Aware Response Generation via Learning to Recover and
Rank Utterances]]></title>
            <link>https://velog.io/@ji_pooh/DialogBERT-Discourse-Aware-Response-Generation-via-Learning-to-Recover-andRank-Utterances</link>
            <guid>https://velog.io/@ji_pooh/DialogBERT-Discourse-Aware-Response-Generation-via-Learning-to-Recover-andRank-Utterances</guid>
            <pubDate>Wed, 19 Jul 2023 07:33:57 GMT</pubDate>
            <description><![CDATA[<h2 id="abstract">Abstract</h2>
<ul>
<li>기존 대화 context를 토큰의 선형 시퀀스로 보고 토큰의 self-attention을 통해 다음 단어를 생성하는 토큰 수준의 인코딩은 발언간 <code>담화수준</code>의 일관성 탐색을 방해한다.</li>
<li>이에 이전 PLM 기반 대화 모델을 향상시키는 새로운 대화 응답생성 모델인 DialogBERT를 제시한다.</li>
</ul>
<h2 id="introduction">Introduction</h2>
<ul>
<li><p>본 논문에서는 계층적인 트랜스포머 구조를 도입하고, 담화수준의 일관성을 모델링하기 위한 목적함수를 제안한다.
<img src="https://velog.velcdn.com/images/lejss1012/post/2e954d8f-c639-417d-b322-e419f69de374/image.png" alt=""></p>
<ul>
<li>transformer 인코더를 통해 대화 발화를 인코딩 한 후, 담화수준(discourse-level)의 transformer를 사용하여 앞선 결과 벡터를 인코딩하여 전체 대화 context의 표현을 얻는다.</li>
</ul>
</li>
<li><p>BERT와 유사하게 두가지의 훈련 목표를 제안한다.</p>
<ul>
<li>masked context regression : 무작위로 선택된 발화를 마스킹한 후 마스킹된 발화에 대한 인코딩 벡터를 직접 예측</li>
<li>distributed utterance order ranking :  무작위로 셔플된 대화의 일관된 대화 맥락으로 구성</li>
</ul>
</li>
</ul>
<h2 id="method">Method</h2>
<h3 id="approach">Approach</h3>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/50a60491-f8f2-4e93-93c5-141a74d6f98f/image.png" alt=""></p>
<blockquote>
<ul>
<li>대화 : D</li>
</ul>
</blockquote>
<ul>
<li><p>대화 맥락(history) : C ($u_T$는 답변)</p>
</li>
<li><p>$u_i$ :발화</p>
</li>
<li><p>$w_j^i$ : i번째 발화의 j번째 토큰</p>
</li>
<li><p>목표 1 : 대화 맥락 C를 represent하는 방법을 학습</p>
</li>
<li><p>목표 2 : 대화 맥락 C가 주어질 때, 답변 $u_T$를 생성하는 조건부 확률 학습</p>
</li>
</ul>
<h3 id="hierarchical-transformer">Hierarchical Transformer</h3>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/2e954d8f-c639-417d-b322-e419f69de374/image.png" alt=""></p>
<ul>
<li>1) Utterance Encoder f  : 발화 인코더, C에 있는 각각의 발화를 벡터로 인코딩</li>
<li>2) Context Encoder g  : 문맥 인코더, 문맥 속 주변 발화들에 대해 발화 representation을 학습</li>
</ul>
<p>1) BERT에서와 같이 발화의 앞뒤에는 [cls]와 [sep] 토큰을 추가한다.
2) 임베딩 레이어가 각 발화에 있는 토큰을 연속적인 공간으로 매핑한다.(word embedding + positional embedding)<img src="https://velog.velcdn.com/images/lejss1012/post/2e4ee5a0-de4c-4b5d-b054-8acf42fa879d/image.png" alt=""> 
3) 발화 인코더는 임베딩을 input으로 받아 self-attention을 수행하고, 각 발화에 대한 첫번째 토큰([CLS])에 대한 벡터를 발화에 대한 representation으로 사용한다.
<img src="https://velog.velcdn.com/images/lejss1012/post/7b52ad33-cb4f-4d10-a80f-12e95b671342/image.png" alt=""></p>
<ul>
<li>순서를 고려하기 위해 output representation에 positional embedding을 더한 final representation $u_i$를 구하게 된다.
<img src="https://velog.velcdn.com/images/lejss1012/post/a52116d8-7fc1-4c77-9ca5-2e8b7e822e50/image.png" alt=""></li>
</ul>
<p>4) 문맥 인코더는 발화에 대한 representation을 input으로 받아 문맥을 고려한 hidden state를 반환한다.
<img src="https://velog.velcdn.com/images/lejss1012/post/2d652a40-945d-422e-b34a-2a8baed48377/image.png" alt=""></p>
<ul>
<li>본 과정에서 나온 벡터는 계층적 transformer가 생성한 최종 대화 맥락 encoding 결과이다.</li>
</ul>
<h3 id="training-objectives">Training Objectives</h3>
<p>담화 레벨에서의 일관성을 위해서 논문에서는 생성 loss에 더하여 두가지의 새로운 목적함수를 제안한다.</p>
<h4 id="next-utterance-generation-nug">Next Utterance Generation (NUG)</h4>
<ul>
<li>응답 생성의 주요 목표이자 본 논문의 첫번째 훈련 목표는 대화 맥락이 주어진 후 다음 응답을 생성하는 것</li>
<li>계층적 transformer를 통해 맥락의 의미를 담은 발화인 H를 얻을 수 있다.</li>
<li>NUG task에서는 디코더의 cross-entropy loss를 최소화 하는 것을 목적함수로 한다.
<img src="https://velog.velcdn.com/images/lejss1012/post/99411bd5-955e-4d13-8e12-3e961e32e045/image.png" alt=""><img src="https://velog.velcdn.com/images/lejss1012/post/fdd1f42d-b75d-4ca8-bc80-de53638fe120/image.png" alt=""></li>
</ul>
<h4 id="masked-utterance-regressionmur">Masked Utterance Regression(MUR)</h4>
<ul>
<li>BERT에서의 MLM 태스크와 유사하게 DialogBERT에서는 문맥 표현 학습을 향상하기 위한 보조 작업으로 <code>MUR</code>를 설계한다.</li>
</ul>
<blockquote>
<p>대화맥락 C 중에서 랜덤하게 하나의 발화를 선택한 후, </p>
</blockquote>
<p>1) 80%의 확률 : Mask utterance로 대체
2) 10%의 확률 : 변화 x</p>
<blockquote>
<p>3) 10%의 확률 : 학습 데이터 내의 랜덤한 발화로 대체</p>
</blockquote>
<ul>
<li><p>앞서 마스킹된 발화에 대한 벡터를 reconstruct하고, 마스킹된 문맥($Ctilde$)이 주어질 때, 모델은 원래의 발화 벡터를 예측하게 된다.
-&gt; 계층 encoder를 마스킹된 문맥에 적용하여 문맥의 의미를 담은 representation을 얻은 후, 원래 utterance vector에 매핑하는 FC layer를 연결한다.
<img src="https://velog.velcdn.com/images/lejss1012/post/c34b0993-5b9b-4b8d-9160-bde0e1e03952/image.png" alt=""></p>
<p>-&gt; 예측한 hidden vector와 원래 C에서 얻어진 hidden layer의 MRS loss를 최소화하도록 학습한다.
<img src="https://velog.velcdn.com/images/lejss1012/post/91a52fba-0477-409f-838f-716bfeba6bda/image.png" alt=""></p>
</li>
</ul>
<h4 id="distributed-utterance-order-ranking-duor">Distributed Utterance Order Ranking (DUOR)</h4>
<ul>
<li>일관성 있는 담화에서는 발화들이 관계성이나 logic에 따라 특정 순서를 갖기에, 문맥에서 발화의 순서는 대화의 의미를 결정한다.</li>
<li>본 논문은 무질서한 일련의 발화를 <code>순서화</code>하는 것이 대화 맥락의 표현을 하습하는데 중요한 영향을 미칠 것이라고 가정한다.</li>
</ul>
<ul>
<li>대화문에 n개의 발화가 있을 경우 =&gt; n!가지의 발화문의 가지수이기에 그대로 사용하면 결과가 좋지 않을 수 있다.</li>
</ul>
<p>[DORN]
<img src="https://velog.velcdn.com/images/lejss1012/post/9cb98705-16e5-41d6-a3c9-137e5ef372b9/image.png" alt=""></p>
<ul>
<li><p>문맥 encoder위에 <code>distributed order ranking network(DORN)</code> 을 붙이는 방식을 설계</p>
</li>
<li><p>DORN은 순서가 섞인 발화문을 입력받아 각 발화문에 대한 점수를 예측하고, 이러한 점수를 정렬하면 re-ordering된다.</p>
</li>
<li><p>self-attention 메커니즘에서와 같이, order prediction network는 hidden state간의 pairwise inner product를 계산하고, 각 발화문에 대한 점수는 다른 발화문과의 내적에 대한 평균으로 계산한다.
<img src="https://velog.velcdn.com/images/lejss1012/post/a8352d8c-9212-4f55-9888-d4234a2e9fde/image.png" alt=""></p>
</li>
<li><p>학습 과정에서는 learning-to-rank framework를 도입하여 예측된 점수를 어떤 context가 첫번째에 와야하는지에 대한 지표로 사용하여 rank-1 확률을 추정한다.
<img src="https://velog.velcdn.com/images/lejss1012/post/6dd36589-8637-405e-9cac-87c16813b736/image.png" alt=""></p>
</li>
<li><p>Ground Truth Order는 원래의 순서를 고려하여 다음과 같이 계산된다.
<img src="https://velog.velcdn.com/images/lejss1012/post/7353e702-6f64-4489-83c7-acce89dc2e17/image.png" alt=""></p>
</li>
</ul>
<p>본 문제에서는 위에서 계산한 ground truth 와 예측된 분포간의 KL divergence를 최소화하는 것을 목적함수로 한다.<img src="https://velog.velcdn.com/images/lejss1012/post/8e837aa6-fb91-4e25-9635-8b4e68b2ea92/image.png" alt=""></p>
<h4 id="total-loss">total loss</h4>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/6b1d9928-0c65-4dc4-9924-e8d4a8afc5f3/image.png" alt=""></p>
<ul>
<li>각 loss에 대한 가중합을 사용하여 전체 loss를 계산한다.</li>
</ul>
<h2 id="experiments">Experiments</h2>
<p><img src="https://velog.velcdn.com/images/lejss1012/post/c6f0544d-730c-4ea5-b091-1f669d1bcb9c/image.png" alt="">
<img src="https://velog.velcdn.com/images/lejss1012/post/0be4a078-7e2d-4452-8ce8-e748224a56ab/image.png" alt=""></p>
<ul>
<li>사람의 대답과 좀 더 근접한 결과를 볼 수 있다.</li>
</ul>
<h2 id="conclusions">Conclusions</h2>
<ul>
<li>본 논문은 대화 context를 token의 선형 시퀀스로 인코딩 하는 방법 대신 계층적 transformer encoder architecture를 제안한다.</li>
<li>기존 BERT 훈련의 자연스러운 확장으로 <code>MUR</code>과 <code>DUOR</code>의 훈련 목표를 통하여 기준모델보다 좋은 성능을 내는 것을 보여준다.</li>
</ul>
<h4 id="reference">Reference</h4>
<p><a href="https://arxiv.org/pdf/2012.01775.pdf">https://arxiv.org/pdf/2012.01775.pdf</a>
<a href="https://littlefoxdiary.tistory.com/75">https://littlefoxdiary.tistory.com/75</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[OverFeat:
Integrated Recognition, Localization and Detection
using Convolutional Networks]]></title>
            <link>https://velog.io/@ji_pooh/OverFeatIntegrated-Recognition-Localization-and-Detectionusing-Convolutional-Networks</link>
            <guid>https://velog.io/@ji_pooh/OverFeatIntegrated-Recognition-Localization-and-Detectionusing-Convolutional-Networks</guid>
            <pubDate>Wed, 19 Jul 2023 05:39:48 GMT</pubDate>
            <description><![CDATA[<h3 id="abstract">Abstract</h3>
<ul>
<li>본 논문은 CNN을 사용한 분류, 위치 파악, 그리고 detection을 위한 통합 프레임워크를 제안한다.</li>
<li>multiscale과 슬라이딩 윈도우 접근법이 ConvNet 내에서 효율적으로 구현될 수 있는 방법을 보여준다.</li>
<li>객체 경계를 예측하도록 학습하는 새로운 딥러닝 접근법을 소개한다.</li>
</ul>
<h3 id="introduction">Introduction</h3>
<p>[ConvNet의 특징]</p>
<ul>
<li>장점 : 많은 작업에 대해 전체 시스템이 raw 픽셀부터 최종 범주까지 end-to-end 방식대로 훈련 ⇒ 적합한 feature extractor를 수동으로 설계할 필요가 없음</li>
<li>단점 : 레이블이 지정된 훈련 샘플에 대한 굉장한 수요</li>
</ul>
<p>[논문의 주요 포인트]</p>
<ul>
<li><p>이미지에서 객체를 동시에 분류, 위치파악, 탐지 하기 위하여 합성곱 신경망을 훈련시키는 것이 모든 작업의 분류정확도, 탐지 및 위치파악 정확도를 향상시킬 수 있다는 것을 보여주는 것</p>
<p>   ⇒ 즉, 통합적인 접근법 제안</p>
</li>
<li><p>예측된 바운딩박스를 축적함으로써 위치 파악과 탐지에 대한 새로운 방법을 소개</p>
<ul>
<li>여러 localization prediction을 결합하며  배경 샘플에 대한 훈련 없이 탐지할수 있으며 시간이 많이 소요되고 복잡한 bootstraping 과정을 피할 수 있음</li>
<li>배경에 대한 훈련을 하지 않는 것은 네트워크가 오로지 positive class 에만 집중할 수 있도록 함.</li>
</ul>
</li>
</ul>
<p>[데이터셋]</p>
<ul>
<li><p>ImageNet ILSVRC 2012, 2013 데이터셋에서 실험 수행</p>
<ul>
<li><p>대부분의 이미지를 거의 가운데에 가득 채우는 대상 객체가 포함되도록 선택됨</p>
</li>
<li><p>때로는 크기와 위치에서 다양한 객체가 존재</p>
<ul>
<li><p>해결방법 1 : 여러위치에서 슬라이딩 윈도우 방식으로 ConvNet을 여러 스케일에서 적용</p>
<ul>
<li>분류는 괜찮지만 위치파악과 탐지에서는 좋은 성능을 보이지 않음</li>
</ul>
</li>
<li><p>해결방법 2 : 시스템을 훈련시켜 각 창에 대해 범주 분포뿐만 아니라 window와 관련된 객체를 포함하는 b-box의 위치와 크기를 예측하도록 하는 것</p>
</li>
<li><p>해결방법 3 : 각 위치와 크기에서 각 범주에 대한 증거를 축적하는 것</p>
<p>⇒ 본 논문은 기존의 sliding window 방식을 ConvNet에 적용하여 연산 효율성을 높힘</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="classification">Classification</h3>
<p><strong>Model Design and Training</strong></p>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/d9ab229e-1b05-4276-b0e3-c53372930688/image.png" alt=""></p>
<ul>
<li>각 이미지는 가장 작은 차원이 256 픽셀이 되도록 다운샘플링 → 221x221 픽셀 크기의 5개의 임의의 크롭을 추출하고 이를 128 크기의 미니 배치로 네트워크에 제공<ul>
<li>네트워크의 가중치는 (µ, σ) = (0, 1 × 10^−2)로 무작위로 초기화</li>
<li>확률적 경사하강법에 의해 가중치가 갱신되며, 0.6의 모멘텀항과 l2 가중치 규제</li>
<li>초기 학습률은 5 × 10^−2이며, (30, 50, 60, 70, 80) epoch 후에 0.5의 배율로 계속 감소</li>
</ul>
</li>
<li>분류기의 완전 연결 계층은 Dropout을 0.5의 비율로 적용</li>
<li>Layer 1~5를 <em>Feature Extractor</em> 라고 칭하며,  AlexNet의 overlapped pooling대신 non-overlapped pooling</li>
</ul>
<p><strong>Feature Extractor</strong></p>
<p><strong>“OverFeat”</strong></p>
<ul>
<li>빠른 모델과 정확한 모델, 두 모델이 제공</li>
<li>정확한 모델은 빠른 모델에 비해 두배의 connection이 필요</li>
</ul>
<p><strong>Multi-Scale Classification</strong></p>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/e116a2a0-6310-4501-87b7-8e0c456a6da2/image.png" alt=""></p>
<ul>
<li><p>multi scale을 입력받음으로써 이미지 내 존재하는 다양한 크기의 객체를 보다 쉽게 포착할 수 있다.</p>
</li>
<li><p>cnn이 고정된 크기의 이미지를 입력받는 이유는 fc layer가 고정된 크기의 feature vector를 입력받기 때문 → overfeat 모델에서는 이 점을 고려하여 fc layer를 conv layer로 대체한다.</p>
</li>
<li><p>저자는 Convolutional Network를 사용하게 되면 전체 이미지를 각 위치 및 다양한 스케일에서 dense하게 탐색할 수 있다고 언급 → 효율력이 좋아지면서 견고</p>
</li>
<li><p>만약, CNN에서 subsampling ratio가 높아지면 객체와 feature map 사이의 정렬이 안맞기에 성능이 떨어진다고 언급</p>
<p>  → “Fast image scaning with max-pooling convolutional neural networks”의 논문과 유사한 방법으로 접근하여 해결</p>
<p>  <img src="https://velog.velcdn.com/images/ji_pooh/post/9fd6f692-33bc-45be-b962-d78d4f3516ef/image.png" alt=""></p>
</li>
</ul>
<pre><code>![](https://velog.velcdn.com/images/ji_pooh/post/b5e05983-b672-468c-9d04-194509f6c9b8/image.png)


- pooling을 실시할 때 offset {0,1,2}의 조합으로 총 9개의 output map을 만든다.</code></pre><p><strong>Results</strong></p>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/f6a294a0-029f-48df-ae50-29c68e9b0975/image.png" alt=""></p>
<ul>
<li>많은 scale을 사용한 접근방식이 단일 스케일 모델보다 상위 오류율을 가지는 것을 볼 수 있다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/a0ef8e6d-ae01-46d4-b099-7539c4597083/image.png" alt=""></p>
<ul>
<li>overfeat 모델이 7개의 convnet 모델이 보팅에 의해서 13.6%의 error를 달성</li>
</ul>
<p><strong>ConvNets and Sliding Window Efficiency</strong></p>
<ul>
<li>다른 슬라이딩 접근 방식과는 달리 본 논문의 ConvNet은 전체 파이프라인을 한번에 계산하는 것이 아닌, 겹치는 영역에서 공통적으로 사용되는 연산을 공유하기에 convnet에서 효율적이다.</li>
<li>각 레이어의 출력이 새로운 이미지의 크기를 커버하도록 확장되며, 최종적으로 각 윈도우마다 공간위치가 있는 출력 클래스 예측 맵을 생성</li>
</ul>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/dffb6ff4-d162-48b2-832c-d3c6223ef39a/image.png" alt=""></p>
<h3 id="localization">Localization</h3>
<p>본 논문에서는 분류기 레이어를 회귀 레이어로 대체하고, 각 공간 위치와 스케일에서 b-box를 예측하도록 훈련</p>
<p><strong>Generating Predictions</strong></p>
<ul>
<li>객체 b-box를 예측 생성하기 위해 분류기와 회귀 네트워크를 모든 위치와 스케일에 걸쳐 동시에 실행</li>
<li>동일한 특징 추출 레이어를 공유하기 때문에 분류 네트워크 후에는 최종 회귀 레이어만 계산</li>
<li>각 위치의 클래스 c에 대한 최종 softmax layer의 출력은 해당 field에 클래스 c의 객체가 존재할 확률에 대한 신뢰도 점수</li>
</ul>
<p><strong>Regressor Training</strong></p>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/e881c9a3-62df-4c89-b190-bda7f145fc31/image.png" alt=""></p>
<ul>
<li>회귀 네트워크는 layer 5의 풀링된 feature map을 입력으로 사용<ul>
<li>크기가 각각 4096과 1024인 fully connected hidden layer를 가짐</li>
</ul>
</li>
<li>최종 출력 layer는 b-box의 가장자리 좌표를 지정하는 4개의 유닛을 가짐 ⇒ spatial output의 channel 수는 4*C</li>
</ul>
<p><strong>Combining Predictions (Greedy Merge Strategy)</strong></p>
<p><img src="blob:https://velog.io/7c7cab9d-7ce6-4d0c-993f-4e6073c57bd0" alt="업로드중.."></p>
<ul>
<li>Overfeat는 객체 탐지시 각기 다른 6개의 scale에 대하여 굉장히 많은 예측된 b-box를 가짐.</li>
<li>논문의 저자가 정의한 offset조합에 의하여 예측 b-box수가 9배 더 증가</li>
</ul>
<p>⇒ “ Greedy Merge Strategy”</p>
<p>1) $C_s$ 에 해당 scale의 spatial output에 대하여 각 pixel에서 가장 높은 confidence score를 가지는 class를 해당 location에 할당</p>
<p>2) $B_s$ 에 해당 scale의 spatial output에 bounding box 좌표를 할당</p>
<p>3) $B$에 모든 $B_s$를 할당합니다.</p>
<p>4) 결과가 산출되기 전까지 아래의 병합 과정을 반복합니다.</p>
<ul>
<li><p>$B$에서 $b1,b2$ 를 뽑아서 matchScore 적용 후 가장 작은 $b1,b2$ 를 $b1<em>,b2</em>$ 에 할당</p>
</li>
<li><p>만약 matchScore($b$1<em>, $b$2</em> ) &gt; t 이면 멈춤</p>
</li>
<li><p>그렇지 않으면 $B$ 에 $boxMerge(b1<em>,b2</em>)$ 를 $b1,b2$  대신에 넣음</p>
</li>
<li><p>$matchScore$ : 두 바운딩박스 중심좌표 사이의 거리의 합과 IoU를 사용하여 측정</p>
</li>
<li><p>$boxMerge$ : bounding box좌표의 평균 계산</p>
</li>
<li><p>위의 과정을 거쳐 병합된 바운딩 박스 중에서 confidence score가 높은 Box를 최종 예측으로 출력</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[R-CNN(Rich feature hierarchies for accurate object detection and semantic segmentation)]]></title>
            <link>https://velog.io/@ji_pooh/R-CNNRich-feature-hierarchies-for-accurate-object-detection-and-semantic-segmentation</link>
            <guid>https://velog.io/@ji_pooh/R-CNNRich-feature-hierarchies-for-accurate-object-detection-and-semantic-segmentation</guid>
            <pubDate>Fri, 14 Jul 2023 06:11:51 GMT</pubDate>
            <description><![CDATA[<h3 id="1-introduction">1. Introduction</h3>
<ul>
<li>본 논문은 PASCAL VOC에서 CNN을 활용한 Object Detection 성능을 극적으로 향상시킨 최초의 논문</li>
<li>본 논문의 초점 2가지<ul>
<li>Deep Network을 활용한 객체 Localizing  → 영역 제안에 cnn을 적용</li>
<li>매우 적은 양의 주석이 달린 detected data로 높은 수용량을 가지는 model training → pretraining + fine-tuning</li>
</ul>
</li>
</ul>
<p><strong>[본 논문의 주요 목표]</strong> </p>
<p>네트워크 구조가 이미지에서 시계열 데이터를 인식하도록 특별히 설계된 새로운 신경망 모델 ⇒ Region proposals + CNN ⇒ R-CNN</p>
<p><strong>[Deep Network를 활용한 Localizing Object]</strong></p>
<p>Object detection은 이미지 내의 객체를 localizing 하는 것이 필요하다. </p>
<p>CNN localization 문제를 “recognition using regions”로 해결</p>
<ul>
<li><p>Region Proposal : 이미지 안에서 객체가 있을 만한 후보 영역을 먼저 찾아주는 방법</p>
<p>  ⇒ 후보 영역을 바탕으로 객체 찾기 (ex. 선택적 탐색 … )</p>
</li>
</ul>
<h3 id="2-object-detection-with-r-cnn">2. Object Detection with R-CNN</h3>
<p><strong>2.1 Module Design</strong></p>
<p>[R-CNN 프로세스를 위한 세가지 모듈]</p>
<ol>
<li><p>Region proposal</p>
<ul>
<li>Object 영역의 후보를 찾는 모듈 (기존 Sliding window 방식의 비효율성 극복)</li>
<li>selective search 사용</li>
</ul>
</li>
<li><p>Feature Extraction (CNN)</p>
<ul>
<li><p>cnn의 입력 크기가 고정되어있지 않기 때문에 warp작업을 통해서 동일 input size를 만든다 ⇒ output 크기 고정</p>
<p>  <img src="https://velog.velcdn.com/images/ji_pooh/post/e85b4c56-3b52-4a22-80f5-11aa0851bb48/image.png" alt=""></p>
</li>
<li><p>각각의 영역으로부터 고정된 크기의 Feature Vector 추출</p>
</li>
</ul>
</li>
</ol>
<p><strong>2.2 Test-time Detection</strong></p>
<p>[R-CNN의 프로세스]</p>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/92199527-3834-46e6-8e79-67dc26d1fe77/image.png" alt=""></p>
<p>(1) 이미지를 입력받는다.</p>
<p>(2) input image에 대해 region proposals를 약 2000개 추출</p>
<p>(3) 추출한 regional proposals를 모두 동일한 사이즈로 만들어주기 위하여 warp</p>
<p>(4)warped image에 cnn을 적용하여 일정한 길이를 가진 feature vector를 추출</p>
<p>(3) 선형 SVM을 이용하여서 각 region을 카테고리별로 분류</p>
<p><strong>2.3 Training</strong></p>
<ol>
<li><p>Supervised pre-training.</p>
<ul>
<li>large auxiliary dataset ILSVRC에 pre-trained CNN 이용</li>
</ul>
</li>
<li><p>Domain-specific Fine-Tuning</p>
<ul>
<li>Domain-specific한 모델을 위하여 warped region proposals만을 이용하여 SGD를 사용해서 CNN 파라미터를 훈련(AlexNet)</li>
<li>classification layer 개수 = N(Object Class 개수) + 1(Background)</li>
<li>Mini-Batch = 128을 구성하기 위해 SGD iteration 마다, 모든 class의 positive sample 32개, 그리고 96개의 background(negative sample)를 사용한다.</li>
</ul>
</li>
<li><p>Object category classifiers</p>
<ul>
<li><p>positive / negative를 나누는 threshold를 정해는 것은 매우 중요하다. threshold에 따라 mAP가 증가하기도 감소하기도 한다.</p>
<p>[Threshold 선정 방식]</p>
</li>
<li><p>Positive Sample : 각 class별 object의 ground-truth bounding boxes</p>
</li>
<li><p>Negative Sample : 각 class별 object의 ground-truth와 IoU가 0.3 미만인 region</p>
</li>
</ul>
</li>
</ol>
<p><strong>2.4 Results on PASCAL VOC 2010-12</strong></p>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/22ac8ee4-364c-477c-81dd-0184ed215f65/image.png" alt=""></p>
<p>Table 1을 보면 R-CNN이 다른 방법들 보다 좋은 성능을 보이는 것을 확인할 수 있다. BB(Bounding Box regression)을 이용할 때, 성능이 더 올라감을 알 수 있다.</p>
<p><strong>2.5 Results on ILSVRC2013 detection</strong></p>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/9aba0a52-5c31-4c86-a093-d2b4b01f0d39/image.png" alt=""></p>
<p>PASCAL VOC에서 보다 분류해야 할 class가 더 많아서 mAP는 낮지만 다른 방법론들에 비해 R-CNN이 성능이 우수함.</p>
<h3 id="3-visualization-ablation-and-modes-of-error">3. Visualization, ablation, and modes of error</h3>
<p><strong>3.1 Visualizing learned features</strong></p>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/76866673-6b2d-4781-bb32-8f413cd31e81/image.png" alt=""></p>
<p>region proposals에 대한 unit activation 계산 → activation내림차순 정렬 → non-maximum suppression 수행 → 고득점 region 표시</p>
<ul>
<li>각 layer마다의 unit들에 대해 어떻게 학습하는지 볼 수 있음</li>
<li>네트워크는 모양, 질감, 색, 물성의 분산 표현에 영향을 받음</li>
</ul>
<p><strong>3.2 Ablation studies</strong></p>
<p>[Performance layer-by-layer, without fine-tuning]</p>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/efca9c63-4ecf-4b4d-ba4b-6316a7b1213e/image.png" alt=""></p>
<p>1~3줄을 보면 fc7이 fc6보다 성능이 낮음 → mAP가 줄어들지 않더라도 CNN의 파라미터를 줄일 수 있음</p>
<p>[Performance layer-by-layer, with fine-tuning]</p>
<p>4~6줄을 보면 도메인별 학습을 한 후에 개선이 된다는 점을 볼 수 있음</p>
<p>3.3 Network architectures</p>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/03a32e63-8c70-43e6-abc7-99470a3b8565/image.png" alt=""></p>
<p>O-Net을 이용한 R-CNN이 T-Net을 이용한 R-CNN의 성능보다 좋음을 볼 수 있음</p>
<p>3.4 Detection error analysis</p>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/a44778c9-ea20-45be-b43f-a238f340bbfe/image.png" alt=""></p>
<ul>
<li>background나 object classes에 대한 confusion보다는 Loc으로 나타나는 poor localization이 errors의 주요 원인임</li>
</ul>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/3e914bf1-e70f-44ee-b262-d2a2ecee9058/image.png" alt=""></p>
<ul>
<li>object의 특징들인 occlusion (occ), truncation (trn), bounding-box area (size), aspect ratio (asp), viewpoint (view), part visibility (part)의 문제가 있을때의 성능</li>
<li>이전의 방법론인 DPM 보다는 R-CNN이 더 나은 것을 볼 수 있고, finetuning, bounding-box regression을 활용했을 때 더 좋은 성능을 보인다.</li>
</ul>
<p>3.5 Bounding-box regression</p>
<ul>
<li>DPM에서 사용한 bounding box regression 방식을 도입</li>
<li>Bounding-box regression : localization 오류를 줄이기 위한 간단한 방법<ul>
<li>선택적 탐색으로 추출한 후보 영역 경계 박스를 실제 경계박스와 일치하도록 회귀 모델을 만들어 훈련</li>
</ul>
</li>
<li>Bounding-box : P</li>
<li>Gounding-truth bounding box : G</li>
</ul>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/38e4170a-7dcd-48b8-acc4-ef548b9a5fc2/image.png" alt=""></p>
<ul>
<li>w∗ 는 각 함수 d∗(P)에 대한 ridge regression를 통해 학습되어지는 가중치 계수</li>
</ul>
<p><img src="https://velog.velcdn.com/images/ji_pooh/post/30913392-b93a-4506-9de5-7e3cd12f2b4e/image.png" alt=""></p>
<ul>
<li>t : regression target
<img src="https://velog.velcdn.com/images/ji_pooh/post/1133f0cc-86e8-4660-86f3-f4442ad8485c/image.png" alt=""></li>
</ul>
]]></description>
        </item>
    </channel>
</rss>