<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>yenoh_j.log</title>
        <link>https://velog.io/</link>
        <description>KU ICTM</description>
        <lastBuildDate>Wed, 31 Jul 2024 12:10:57 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. yenoh_j.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/yenoh_j" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Domain Adaptation : Key Concepts, Types and Techniques]]></title>
            <link>https://velog.io/@yenoh_j/Domain-Adaptation-Key-Concepts-Types-and-Techniques</link>
            <guid>https://velog.io/@yenoh_j/Domain-Adaptation-Key-Concepts-Types-and-Techniques</guid>
            <pubDate>Wed, 31 Jul 2024 12:10:57 GMT</pubDate>
            <description><![CDATA[<p>신경망은 원래 학습을 위해 레이블이 지정된 데이터가 많이 필요하고, 수동으로 주석을 달기는 힘들다. 그리고 학습된 딥러닝 모델은 학습 데이터와 동일한 데이터 분포에서만 테스트 데이터에서 좋은 성능을 보인다. 이런 문제를 해결하기 위한 방법이 도메인 적응이다.</p>
<p><img src="https://velog.velcdn.com/images/yenoh_j/post/a8604027-5545-4db5-9716-1bb0786a3e9a/image.png" alt=""></p>
<h3 id="key-defenitions">Key Defenitions</h3>
<ul>
<li><strong>Source Domain</strong> : This is the data distribution on which the model is trained using labeled examples.</li>
<li><strong>Target Domain</strong> :This is the data distribution on which a model pre-trained on a different domain is used to perform a similar task. </li>
<li><strong>Domain Translation</strong> : Domain Translation is the problem of finding a meaningful correspondence between two domains.</li>
<li><strong>Domain Shift</strong> : A domain shift is a change in the statistical distribution of data between the different domains (like the training, validation, and test sets) for a model.</li>
</ul>
<h3 id="types-of-domain-adaptation">Types of Domain Adaptation</h3>
<p><img src="https://velog.velcdn.com/images/yenoh_j/post/955b5da1-2ef8-4daf-b02d-35766c1e9726/image.png" alt=""></p>
<h3 id="types-of-da-based-on-the-labeling-of-target-domain-data">Types of DA based on the labeling of target domain data</h3>
<ul>
<li><strong>Supervised DA</strong></li>
</ul>
<p>지도 도메인 적응에서는 타겟 도메인 데이터가 완전히 라벨링되어 있다. 타겟 도메인의 훈련 데이터가 그렇게 많지 않더라도 최적의 성능을 발휘할 수 있고, 라벨링 비용도 많이 들지 않는다. 논문 <a href="https://openaccess.thecvf.com/content_ICCV_2017/papers/Motiian_Unified_Deep_Supervised_ICCV_2017_paper.pdf">Unified Deep Supervised Domain Adaptation and Generalization</a>에서는 분류 및 대조 의미 정렬(Classification and Constrastive Semantic Alignment, CCSA)손실을 도입한다. 입력 이미지는 딥러닝 모델을 사용하여 임베딩 / 특징 공간으로 매핑되며, 이를 바탕으로 분류 예측이 이루어진다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/4bb77490-22bd-4540-9b28-748b8ba0bc46/image.png" alt=""></p>
<ul>
<li>** Semi-Supervised DA**</li>
</ul>
<p>반지도 도메인 적응은 타겟 도메인에서 소수의 데이터 샘플만 라벨링된 상태를 의미한다. 비지도 도메인 적응은 타겟 도메인의 데이터가 소수만 라벨링된 경우 성능이 저조한 것으로 알려져 있다. 논문 <a href="https://openaccess.thecvf.com/content_ICCV_2019/papers/Saito_Semi-Supervised_Domain_Adaptation_via_Minimax_Entropy_ICCV_2019_paper.pdf">Semi-supervised Domain Adaptation via Minimax Entropy</a>에서는 코사인 유사도 기반 분류기 구조를 제안하였고, 이는 특징 추출기의 출력과 K개의 클래스별 가중치 벡터 간의 코사인 유사도를 계산하여 K-방향 클래스 확률 벡터를 예측한 후 소프트맥스 함수를 적용한다. 각 클래스 가중치 벡터는 해당 클래스의 대표 점으로 간주될 수 있는 프로토타입으로 추정된다. 이는 Few-shot learning에서 사용되는 것과 유사하다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/b8c81558-5ab9-4939-a338-73c0f37e0aec/image.png" alt="">
첫 번째 적대적 단계에서 레이블이 없는 타겟 예제의 엔트로피를 최대화하여 가중치 벡터를 타겟 쪽으로 이동시킨다. 이후 특징 추출기를 업데이트하여 레이블이 없는 예제의 엔트로피를 최소화하여 이들이 프로토타입 주위에 더 잘 클러스터링되도록 한다. 이 과정은 가중치 벡터와 특징 추출기 간의 미니맥스 게임으로 공식화되며 레이블이 없는 타겟 예제에 적용된다. 이 접근 방식의 개요는 아래 그림과 같다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/997f42d1-f09f-4ba9-9f29-1b7a16853b1e/image.png" alt=""></p>
<ul>
<li><strong>Weakly Supervised DA</strong></li>
</ul>
<p>약한 지도 도메인 적응은 타겟 도메인에서 &#39;약한 레이블&#39;만 이용할 수 있는 문제 설정을 의미한다. 예를 들어, 의미적 분할 도메인 적응 문제에서, 타겟 도메인에서 실제 마스크를 사용할 수 없지만, 분할할 객체의 카테고리는 제공될 수 있다. 여기서 카테고리 레이블이 weak label이고, 실제 분할 마스크는 hard label이라고 부른다. 논문 <a href="https://openaccess.thecvf.com/content_CVPR_2020/papers/Baek_Weakly-Supervised_Domain_Adaptation_via_GAN_and_Mesh_Model_for_Estimating_CVPR_2020_paper.pdf">Weakly-supervised Domain Adaptation via GAN and Mesh Model for Estimating 3D Hand Poses Interacting Objects</a>는 이미지 공간에서 두 가지 지침을 사용하여 도메인 적응을 달성했다. 생성적 적대 신경망(GAN)과예측된 3D mesh와 텍스처를 사용하는 mesh renderer. 결과적으로 입력된 HOI 이미지는 분할되고 가려지지 않은 손만 포함된 이미지로 변환되어 HPE 정확도가 효과적으로 향상된다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/cd85292e-1993-482a-bc37-f175ac801582/image.png" alt=""></p>
<ul>
<li><strong>Unsupervised DA</strong></li>
</ul>
<p>비지도 도메인 적응은 타겟 도메인 데이터에 대한 어떤 종류의 레이블도 없는 상태를 의미한다. 소스 도메인 데이터로 훈련된 모델이 타겟 도메인에 독립적으로 적응해야 한다. <a href="https://proceedings.neurips.cc/paper/2016/file/ac627ab1ccbdb62ec96e702f07f6425b-Paper.pdf">Unsupervised Domain Adaptation with Residual Transfer Networks</a>는 UDA 방법 중 하나로 새로운 Residual Transfer Network(RTN) 접근 방식을 제안한다. 심층 네트워크에서 적응형 분류기와 전이 가능한 특징을 동시에 학습할 수 있다. 이전 방법들이 공유 분류기 가정을 했던 것과 달리, 이 방법에서는 소스와 타겟 분류기가 작은 잔여 함수로 다르다고 가정한다. 
<img src="https://velog.velcdn.com/images/yenoh_j/post/7cdf262c-569d-4b73-9e59-10e86300baeb/image.png" alt="">
이 방법에서는 여러 계층을 심층 네트워크에 삽입하여 타겟 도메인 분류기와의 참조를 통해 함수를 명시적으로 학습함으로써 분류기 적응을 가능하게 한다. 이를 통해 소스 도메인 분류기와 타겟 도메인 분류기가 역전파 과정에서 밀접하게 연결할 수 있다. 이 외에도 여기저기 찾아보니, 소스 도메인과 타겟 도메인의 분류기를 연결하는 여러 방법들이 있었던 것 같다.</p>
<hr>
<h3 id="homogenous-da-vs-heterogeneous-da">Homogenous DA vs Heterogeneous DA</h3>
<ul>
<li><strong>Homogenous DA</strong></li>
</ul>
<p>동질 도메인 적응은 소스 도메인과 타겟 도메인의 특징 공간이 동일하고 차원도 동일하지만, 데이터 분포에만 차이가 있는 문제를 말한다. 소스와 타겟 도메인 데이터가 동일한 유형의 특징을 사용하여 수집된다고 가정하는데, 교차 도메인 데이터는 동일한 특징 공간에서 관찰되지만 다른 분포를 보인다는 것이다. 이를 distribution-shift 유형의 도메인 적응 문제라고도 한다.</p>
<ul>
<li><strong>Heterogeneous DA</strong></li>
</ul>
<p>이질 도메인 적응은 소스 도메인과 타겟 도메인이 동등하지 않으며 다른 특징 공간 차원을 가질 수 있다. 이질 도메인 적응에서는 서로 다른 특징으로 설명되기 때문에 서로 다른 분포를 보인다.(다른 해상도의 훈련 및 테스트 이미지 데이터, 혹은 다른 코드북으로 인코딩된 데이터) 따라서 이를 feature space difference 유형의 도메인 적응 문제라고도 하며, 동질 도메인 적응보다 훨씬 더 어려운 문제이다. <a href="https://openaccess.thecvf.com/content_cvpr_2016/papers/Tsai_Learning_Cross-Domain_Landmarks_CVPR_2016_paper.pdf">Learning Cross-Domain Landmarks for Heterogeneous Domain Adaptation</a>에서는 Cross-Domain Landmark Selection(CDLS)의 학습 알고리즘을 제안한다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/89c29ca3-da38-4bbb-94b5-52422e6a49b2/image.png" alt="">
CDLS 모델은 적응 과정에서 모든 교차 도메인 데이터를 동등하게 중요하다고 보는 대신, 이질적 특징 변환을 도출하여 교차 도메인 데이터를 연결하기 위한 도메인 불변 부분 공간을 생성한다. 또한 소스 도메인과 타겟 도메인의 대표 데이터를 공동으로 활용하여 CDLS의 적응 능력을 향상시킨다. 적응 과정이 완료되면, 인식을 수행하기 위해 교차 도메인 레이블이 지정되고 지정되지 않은 타겟 도메인 데이터를 도출된 부분 공간 위에 투영할 수 있다.</p>
<hr>
<h3 id="one-step-da-vs-multi-step-da">One-Step DA vs Multi-Step DA</h3>
<p><img src="https://velog.velcdn.com/images/yenoh_j/post/82b3caf5-c0a3-4944-b7f1-5353fbc9eee3/image.png" alt=""></p>
<ul>
<li><strong>One-Step DA</strong></li>
</ul>
<p>One-Step 도메인 적응은 소스 도메인과 타겟 도메인이 직접적으로 연결된 경우에 해당한다. 이 경우 지식 전이는 한 단계로 이루어진다. 두 도메인이 충분히 유사하여 한 번의 적응으로도 효과적인 지식 전이가 가능한 상황에서 사용된다.</p>
<ul>
<li><strong>Multi-Step DA</strong></li>
</ul>
<p>그러나 현실에서는 소스 도메인과 타겟 도메인의 겹침이 거의 없어 One-Step DA가 효과적이지 않을 수 있다. 다행히, 소스와 타겟 도메인을 원래 거리보다 가깝게 할 수 있는 중간 도메인이 존재하는 경우가 있다. 따라서 일련의 중간 다리를 사용하여 관련이 없어 보이는 두 도메인을 연결한 다음, 이 브릿지를 이용해 One-Step DA를 수행하는 방법을 Multi-Step DA라고 한다.</p>
<p>예를 들어, 얼굴 이미지와 차량 이미지는 모양이나 기타 측면에서 매우 달라 One-Step DA는 실패할 수 있으나, 럭비 헬멧과 같은 중간 이미지를 도입하여 중간 도메인으로 사용하면 원활한 지식 전이가 가능할 수 있다.</p>
<hr>
<h3 id="four-algorithmic-domain-adaptation-principles">Four algorithmic Domain Adaptation principles</h3>
<ul>
<li><strong>Reweighting Algorithms / Instance-based Adaptation</strong></li>
</ul>
<p>Reweighting 알고리즘은 소스 데이터의 분포 차이를 최소화하기 위해 소스 데이터를 reweight한 다음, reweight된 소스 데이터로 분류기를 훈련한다. 이는 소스 도메인에만 속하는 데이터의 중요성을 감소시킨다. 타겟 도메인 데이터와 재가중치된 소스 도메인 데이터는 분포를 정렬하기 위해 적대적 훈련이나 커널 평균 매칭을 통해 특징 추출기를 훈련하는 데 사용된다. 이런 방법을 Instance-based Adaptation이라고도 한다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/ffaa4ff3-711f-4eb5-bb3b-b296626220fd/image.png" alt="">
<a href="https://proceedings.neurips.cc/paper/2021/file/7ce3284b743aefde80ffd9aec500e085-Paper.pdf">Adversarial Reweighting for Partial Domain Adaptation</a>에서는 소스 도메인 데이터를 적대적으로 재가중치하여 소스 도메인과 타겟 도메인의 분포를 맞추는 적대적 가중치(Adversarial Reweighting, AR) 접근 방식을 제안한다. 이 접근 방식은 소스 도메인 데이터의 가중치를 학습하여 재가중치된 소스 도메인과 타겟 도메인 분포 간의 Wasserstein 거리를 최소화한다.</p>
<ul>
<li><strong>Iterative Algorithms</strong></li>
</ul>
<p>반복적 적응은 이름에서 알 수 있듯 타겟 도메인 데이터를 반복적으로 &#39;자동 라벨링&#39;하는 것을 목표로 한다. 그러나 이러한 방법은 일반적으로 라벨링된 타겟 샘플을 필요로 하므로, 지도 학습 및 반지도 도메인 적응 설정에 적합하다. 여기서 딥러닝 모델은 소스 도메인의 라벨링된 데이터로 훈련되고, 레이블이 없는 타겟 샘플을 주석 처리한다. 그런 다음, 새로운 타겟 도메인의 라벨링된 샘플로 새로운 모델을 학습한다.</p>
<p> <a href="https://proceedings.neurips.cc/paper/2011/file/93fb9d4b16aa750c7475b6d601c35c2c-Paper.pdf">Co-Training for Domain Adaptation</a>에서는 소스 도메인에서 타겟 도메인으로 훈련 세트를 천천히 적응시키는 알고리즘을 제시한다. 먼저, 라운드별로 자신들의 출력을 훈련시키고, 각 라운드마다 가장 신뢰할 수 있는 타겟 인스턴스를 훈련 데이터에 포함시킨다. 그 후, 훈련 세트와 레이블이없는 세트를 통해 측정된 호환성에 기반하여 소스와 타겟 데이터의 공통 피처를 선택한다. 더 많은 타겟 인스턴스가 훈련 세트에 추가됨에 따라, 타겟 특유의 특징이 두 세트 간에 호환 가능하게 되어 예측기에 포함된다.</p>
<ul>
<li><p><strong>Feature-based Adaptation</strong></p>
<p>특징 기반 적응 기술은 도메인 간에 불변 특징을 추출하는 변환을 학습하여 소스 데이터를 타겟 데이터로 매핑하는 것을 목표로 한다. 이러한 기술은 일반적으로 원본 특징을 새로운 특징 공간으로 변환한 다음, 최적화 절차에서 도메인 간의 격차를 최소화하면서 원본 데이터의 기본 구조를 유지한다. 특징 기반 적응 방법은 다음과 같이 더 세분화될 수 있다.</p>
</li>
</ul>
<ol>
<li><p><strong>Subspace-based Adaptation</strong> : 도메인 간에 공유되는 공통적인 중간 표현을 발견하는 것을 목표로 한다.</p>
</li>
<li><p><strong>Transformation-based Adaptation</strong> : 특성 변환은 원본 특징을 새로운 특징 표현으로 변환하여, 원본 데이터의 기본 구조와 특성을 유지하면서 주변 분포(marginal distributions)와 조건부 분포(conditional distribution) 간의 불일치를 최소화한다.</p>
</li>
<li><p><strong>Reconstruction-based Adaptation</strong> : 재구성 기반 방법은 중간 특징 표현에서 샘플 재구성을 사용하여 도메인 분포 간의 차이를 줄이는 것을 목표로 한다.</p>
</li>
</ol>
<ul>
<li><strong>Hierarchical Bayesian Model</strong></li>
</ul>
<p>계층적 베이지안 모델은 계층적 베이지안 사전(hierarchical Bayesian prior)을 사용하여 도메인 별 매개변수를 연결한다. 이러한 모델은 도메인에 따라 달라지는 잠재 표현(domain-dependent latent representations)을 도출하여 도메인 별 특성과 전역적으로 공유되는 잠재 요소를 모두 포함할 수 있게 한다. </p>
<p>계층적 베이지안 사전은 도메인 간의 특징이 유사한 가중치를 갖도록 하며, 반대 증거가 없는 한 이러한 유사성을 유지한다. 계층적 베이지안 프레임워크는 각 작업/분포의 매개변수를 독립적으로 학습하고 정보가 많은 작업의 매개변수를 더 거친 작업으로 매끄럽게 하는 접근방식에 비해 전이학습을 위한 더 원칙적인 접근 방법을 제공한다.</p>
<hr>
<h3 id="domain-adaptation-techniques">Domain Adaptation Techniques</h3>
<ul>
<li><strong>Domain Invariant Feature Learning</strong></li>
</ul>
<p>최신 도메인 적응 방법들은 일반적으로 특칭 추출기 신경망(feature extractor neural network)의 형태로 도메인 불변 특징 표현(feature representation)을 생성하여 소스 도메인과 타겟 도메인을 정렬한다. 특징 표현이 도메인 불변이라는 것은 입력 데이터가 소스 도메인에서 왔는지 타겟 도메인에서 왔는지에 관계없이 특징이 동일한 분포를 따른다는 것이다. 만약 도메인 불변 특징을 사용하여 소스 데이터에서 좋은 성능을 내는 분류기를 훈련할 수 있다면, 타겟 데이터의 특징이 분류기를 훈련한 특징과 일치하기 때문에 타겟 도메인에서도 잘 일반화될 수 있다.</p>
<p>이러한 방법들의 일반적인 훈련 및 테스트 설정은 아래와 같이 설명된다. 앞으로 나오는 방법들은 도메인을 정렬하는 방식이 다르다. 일부는 발산을 최소화하고, 일부는 재구성을 수행하고, 일부는 적대적 훈련을 사용한다. 또한 가중치 공유 선택이 다른데, 자세한 내용은 아래에서 설명한다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/7e6239ab-293f-4982-8d50-16ae0343269a/image.png" alt=""></p>
<ul>
<li><p>Divergence-based Domain Adaptation</p>
<ul>
<li>발산 기반 도메인 적응 기술은 소스 도메인과 타겟 도메인 데이터 분포 간의 발산 기준을 최소화하는 것을 목표로 한다. 다양한 도메인 적응 접근 방식에서 사용되는 네가지 선택지는 최대 평균 차이(maximum mean discrepancy), 상관 정렬(correlation alignment), 대조 도메인 불일치(contrastive domain discrepancy), 그리고 Wasserstein metric이다. </li>
<li><a href="https://openaccess.thecvf.com/content_cvpr_2018/papers/Zhang_Aligning_Infinite-Dimensional_Covariance_CVPR_2018_paper.pdf">Aligning Infinite-Dimensional Covariance Matrices in Reproducing Kernel Hilbert Spaces for Domain Adaptation</a>에서 제안된 프레임워크는 무한 차원의 공분산 행렬을 도메인 간에 정렬함으로써 도메인 적응을 수행한다. 구체적으로, 원본 특징을 재생 힐버트 커널 공간(Reproducing Kernel Hilbert Splace, RKHS)으로 매핑한 다음, 결과 공간에서 선형 연산자를 사용하여 변환된 데이터와 타겟 데이터의 RKHS 공분산 설명자가 가까워지도록 소스 데이터를 타겟 도메인으로 &quot;이동&quot;한다. 변환된 샘플과 타겟 샘플로 쌍별 내적을 계산하여 닫힌 형태의 새로운 도메인 불변 커널 행렬을 얻는다. 이 커널 행렬은 어떤 커널 기반 학습 머신에서도 사용할 수 있다.</li>
</ul>
</li>
<li><p>Reconstruction-based Domain Adaptation</p>
<ul>
<li>레이블이 지정된 소스 도메인 데이터를 잘 분류하고 타겟 도메인 데이터 또는 소스와 타겟 도메인 데이터 모두를 재구성할 수 있는 표현을 학습함으로써 도메인 적응을 달성할 수 있다. 이러한 설정에서 정렬 구성 요소는 재구성 네트워크다. 이는 피처 추출기 출력을 가져와 피처 추출기의 입력을 재생성한다.</li>
<li><a href="https://link.springer.com/chapter/10.1007/978-3-319-46493-0_36">Deep Reconstruction-Classification Networks for Unsupervised Domain Adaptation</a>에서는 두 가지 작업을 공동으로 학습하는 DRCN(Deep Reconstruction Classification Networks)을 제안한다 : (i) 지도 소스 레이블 예측 및 (ii) 지도되지 않은 타겟 데이터 재구성. 목표는 학습된 레이블 예측 함수가 타겟 도메인의 이미지 분류에서 좋은 성능을 낼 수 있도록 하는 것이다. 데이터 재구성은 레이블 예측의 적응을 지원하는 보조 작업으로 볼 수 있다. DRCN의 네트워크 학습 매커니즘은 비지도 학습과 지도 학습을 번갈아 가며 진행하는데, 이는 표준 사전 학습-미세 조정 전략과 다르다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/e6973a4a-d25c-4f58-9dea-068881f96f20/image.png" alt=""></li>
</ul>
</li>
<li><p>Adversarial-based Domain Adaptation</p>
<ul>
<li><p>적대적 적응 방법은 도메인 판별자(domain discriminator)와 관련된 적대적 목적을 통해 도메인 불일치 거리를 최소화하려는 접근 방식으로 점점 인기를 얻고 있다. 이러한 방법은 생성적 적대 학습(GAN)과 밀접한 관련이 있으며 여기서는 생성자와 판별자 두 네트워크가 서로 경쟁한다. 적대적 도메인 적응 접근 방식은 도메인 간의 분포 불일치를 최소화하여 전이 가능하고 도메인 불변 특징을 얻는 데 중점을 둔다.</p>
</li>
<li><p>컴퓨터 비전 문헌에는 여러가지 유형의 피처에 대한 적대적 도메인 적응 방법이 소개되었다. 대부분의 경우 정렬 구성 요소는 도메인 분류기(domain classifier)로 구성된다. 도메인 분류기는 특징 표현이 소스 데이터에서 생성된 것인지, 타겟 데이터에서 생성된 것인지를 출력하는 분류기이다. 예를 들어, 이 정렬 구성 요소는 대략적인 Wasserstein 거리를 학습하는 네트워크로 표현될 수도 있고, GAN 모델일 수도 있다.</p>
</li>
<li><p><a href="https://proceedings.mlr.press/v80/hoffman18a/hoffman18a.pdf">CyCADA: Cycle-Consistent Adversarial Domain Adaptation</a>에서는 의미적 일관성을 강화하는 동시에 픽셀 수준과 피처 수준에서 표현을 적응시키는 CyCADA 모델을 제안했다. 사이클 일관성 손실(소스가 타겟으로 매핑되고 다시 소스로 매핑될 때 일치해야 함)과 특정 시각 인식 작업에 기반한 의미적 손실을 사용하여 구조적 일관성과 의미적 일관성을 모두 강화한다. 의미적 손실은 전체 표현이 차별적이게 되도록 안내하고 도메인 간 매핑 전후에 의미적 일관성을 강화한다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/a05ce80d-3677-42cc-b1b7-ce1bb5bfee46/image.png" alt=""></p>
</li>
</ul>
</li>
<li><p><strong>Domain Mapping</strong></p>
</li>
</ul>
<p>도메인 매핑은 도메인 불변 특징을 표현하는 또 다른 방법이다. 이 매핑은 일반적으로 적대적으로 생성되며 픽셀 수준에서 이루어진다.(즉, 픽셀 수준의 적대적 도메인 적응). 이 매핑은 조건부 GAN으로 수행할 수 있다. 생성기는 소스 입력 이미지를 타겟 분포와 매우 유사한 이미지로 변환하여 픽셀 수준에서 적응을 수행한다. 예를 들어, GAN은 합성 차량 운전 이미지를 현실적으로 보이는 이미지로 변환할 수 있다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/51057d43-79e6-4972-b396-df197bb0889b/image.png" alt="">
 <a href="https://openaccess.thecvf.com/content_cvpr_2018/papers/Choi_StarGAN_Unified_Generative_CVPR_2018_paper.pdf">StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation</a> 논문에서는 여러 도메인 간의 매핑을 학습할 수 있는 생성적 적대 신경망인 StarGAN 모델을 제안했다. 기존의 다중 도메인 변환 접근 방식은 도메인 간 변환을 위해 여러 개의 독립된 생성자 및 판별자 네트워크를 사용하는 것과 달리, StarGAN 모델은 여러 도메인의 학습 데이터를 가져와 단 하나의 생성기를 사용하여 사용 가능한 모든 도메인 간의 매핑을 학습한다.
 <img src="https://velog.velcdn.com/images/yenoh_j/post/2282ca5a-e94b-48ce-8437-5fcba504ee0f/image.png" alt="">
 고정된 변환을 학습하는 대신, 이미지와 도메인 정보를 모두 입력으로 받아 입력 이미지를 해당 도메인으로 유연하게 변환하는 방법을 학습한다. StarGAN은 레이블(예를 들면 이진 또는 원-핫 인코딩 벡터)을 사용한다. 훈련 중에는 타겟 도메인 레이블이 무작위로 생성되고, 모델은 입력 이미지를 타겟 도메인으로 유연하게 변환하도록 학습되며, 이를 통해 도메인 레이블을 제어하고 테스트 단계에서 이미지를 원하는 도메인으로 변환할 수 있다. </p>
<ul>
<li><strong>Ensemble Methods</strong></li>
</ul>
<p>기본 모델로서 딥 뉴럴 네트워크와 같은 모델이 사용될 경우, 여러 모델로 구성된 앙상블이 모델의 출력을 평균화하거나(ex. 회귀) 투표(ex. 분류)를 통해 단일 모델보다 좋은 성능을 보일 수 있다. 모델들이 다양하면 각 개별 모델이 서로 다른 실수를 할 가능성이 높기 때문이다. 그러나 이러한 성능 향상은 각 앙상블 예측에 대해 평가할 모델 수가 많아 계산 비용을 증가시킬 수 있다.
 여러 개의 기본 모델을 앙상블로 사용하는 대안으로 단일 모델만을 사용하되, 훈련 중 여러 시점에서 앙상블 내의 모델을 평가하는 방법이 있다. 이를 셀프 앙상블링(self-ensembling)이라고 한다. 이 방법은 각 예제에 대한 과거 예측을 평균화(이전 예측 기록)하거나 과거 네트워크 가중치를 평균화(이동 평균 유지)하여 수행할 수 있다. 이는 계산 과정을 몇 배로 줄일 수 있다.
 <a href="https://arxiv.org/pdf/1706.05208">Self-ensembling for visual domain adaptation</a>에서는 그러한 방법 중 하나를 제안했는데, 비지도 도메인 적응을 위해 셀프 앙상블을 사용한다. 학생 네트워크와 교사 네트워크라는 두 개의 네트워크를 사용하는데, 입력 이미지는 두 네트워크에 입력되기 전에 먼저 확률적 데이터 증강(Gaussian noise, translations, horizontal flips, affine transforms 등)을 거친다. 이 방법은 확률적이기 때문에, 네트워크에 공급되는 증강된 이미지가 다르다. 학생 네트워크는 경사 하강법으로 훈련되며, 교사 네트워크의 가중치는 학생 네트워크 가중치의 지수 이동 평균(EMA)이다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/2ab2581e-0228-40dd-83f5-981def3fde8d/image.png" alt=""></p>
<ul>
<li><strong>Target Discriminative Methods</strong></li>
</ul>
<p>반지도 학습 알고리즘에서 성공을 이끈 한 가지 가정은 클러스터 가정(cluster assumption)이다. 이는 데이터 포인트가 별도의 클러스터에 분포되어 있으며 각 클러스터의 샘플에 공통 레이블이 있다는 것이다. 이러한 경우, 결정 결계는 저밀도 영역에 위치해야 한다.(즉, 데이터 포인트가 많은 영역을 통과해서는 안된다)</p>
<p> 다양한 도메인 적응 방법이 결정 경계를 밀도가 낮은 밀도 영역으로 옮기기 위해 탐구되었고, 일반적으로 적대적으로 훈련된다. <a href="https://openaccess.thecvf.com/content_cvpr_2017/papers/Tzeng_Adversarial_Discriminative_Domain_CVPR_2017_paper.pdf">Adversarial Discriminative Domain Adaptation</a>에서는 제목과 같은 ADDA라고 하는 비지도 DA 방법을 제안한다. 먼저 소스 도메인의 레이블을 사용하여 판별적 표현을 학습하고, 도메인-적대적 손실(domain-adversarial loss)을 통해 학습한 비대칭 매핑을 사용하여 타겟 데이터를 동일한 공간에 매핑하는 별도의 인코딩을 학습한다.
 <img src="https://velog.velcdn.com/images/yenoh_j/post/d85d3aa7-69d6-4252-be98-b485147360fa/image.png" alt=""></p>
<hr>
<p> <a href="https://www.v7labs.com/blog/domain-adaptation-guide">참고 블로그 - 모든 내용의 출처</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Domain Adaptation]]></title>
            <link>https://velog.io/@yenoh_j/Domain-Adaptation</link>
            <guid>https://velog.io/@yenoh_j/Domain-Adaptation</guid>
            <pubDate>Sun, 28 Jul 2024 13:18:52 GMT</pubDate>
            <description><![CDATA[<h3 id="domain-adaptation">Domain Adaptation</h3>
<p>: aimed at enhancing the performance of models when they are applied to different but related domains.</p>
<table>
<thead>
<tr>
<th></th>
<th>Target doamin labeled</th>
<th>Target domain unlabeled</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Source domain labeled</strong></td>
<td>Multi-task Learning</td>
<td>Unsupervised Domain Adaptation</td>
</tr>
<tr>
<td><strong>Source domain unlabeled</strong></td>
<td>Self-Supervised Learning</td>
<td>Unsupervised Learning</td>
</tr>
</tbody></table>
<hr>
<p>전이학습에 도메인 적응이 포함되는 건가? 도메인 적응이라는 개념 안에 전이학습이 있는 건가?</p>
<h3 id="transfer-learning">Transfer Learning</h3>
<ul>
<li><p><strong>Transductive Transfer Learning</strong></p>
<ul>
<li>annotated data only in source domain</li>
<li>same domain and same task<ul>
<li>Sample Selection Bias / Covariance Shift</li>
</ul>
</li>
<li>different domains but same task<ul>
<li>Domain Adaptation</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>Unsupervised Transfer Learning</strong></p>
<ul>
<li>no annotated data</li>
</ul>
</li>
<li><p><strong>Inductive Transfer Learning</strong></p>
<ul>
<li>annotated data in target domain</li>
<li>annotated data in source domain, source and target tasks are learned simultaneously<ul>
<li>Multi-Task Learning</li>
</ul>
</li>
<li>no annotated data in source domain<ul>
<li>Self-Taught Learning</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>위 자료에 따르면 전이학습 내에 도메인 적응이 포함되어 있는 것으로 보인다. 도메인 적응은 작업이 동일하다는 점에서 전이학습에 포함된다고 보는 것 같다. 그렇지만 나는 구분하기보다 그때그때 상황에 맞게 이해하면 될 것 같다.</p>
<ul>
<li>전이학습 : 학습된 모델의 지식을 다른 작업이나 도메인에 적용하는 방법.</li>
<li>도메인 적응 : 개념. 소스 도메인과 타겟 도메인의 데이터 분포 차이를 극복하는 데 중점.</li>
</ul>
<hr>
<h3 id="key-concepts">Key concepts</h3>
<h4 id="domain-shift도메인-변화---between-source-domain-and-target-domain">Domain shift(도메인 변화) - between source domain and target domain</h4>
<h4 id="covariate-shift공변량-이동">Covariate shift(공변량 이동)</h4>
<p>: 입력 데이터의 특징 분포는 다르지만 각 입력에 대한 출력의 조건부 분포는 도메인 간에 일정하게 유지되는 경우.</p>
<ul>
<li>ex) 이미지 분류에서, 소스 도메인은 밝은 날씨의 이미지, 타겟 도메인은 흐린 날씨의 이미지.</li>
</ul>
<h4 id="conditional-shift조건부-이동">Conditional shift(조건부 이동)</h4>
<p>: 클래스별 조건부 분포가 다른 경우, 이는 클래스 간에 서로 다른 이동 프로토콜이 있는 경우. 현실적인 상황을 더 잘 반영한다.</p>
<ul>
<li>ex) 질병 진단 문제에서, 소스 도메인은 질병이 많이 발생하는 지역의 데이터, 타겟 도메인은 그 질병이 거의 없는 지역의 데이터.</li>
</ul>
<h4 id="label-shift레이블-이동">Label shift(레이블 이동)</h4>
<p>: 클래스의 샘플 비율이 도메인 간에 다른 경우. 클래스 비율의 차이에 더 중점을 둠. 클래스 불균형 문제를 처리할 때 중요한 고려사항.</p>
<ul>
<li>ex) 물체 인식 문제에서, 같은 물체가 소스 도메인에서는 다양한 각도에서 촬영되었고, 타겟 도메인에서는 특정 각도에서만 촬영된 경우.</li>
</ul>
<h4 id="concept-shift개념-이동">Concept shift(개념 이동)</h4>
<p>: 특징이 주어졌을 때의 조건부 분포가 도메인 간에 다른 경우. 입력이 동일해도 출력이 달라질 때. 모델이 학습한 개념이 타겟 도메인에서 다르게 적용된다.</p>
<ul>
<li>ex) 음성 인식 문제에서 소스 도메인과 타겟 도메인이 각각 다른 언어의 발음을 포함.(언어적, 문화적, 산업적 차이가 존재할 수 있음)
<img src="https://velog.velcdn.com/images/yenoh_j/post/76758fa8-35c5-45a5-8fc2-5a855a198d33/image.png" alt=""></li>
</ul>
<pre><code>####요약
공변량 이동 : 입력 데이터의 분포가 다르지만 조건부 분포는 동일함.
레이블 이동 : 클래스 비율이 도메인마다 다름.
조건부 이동 : 특정 클래스에 대한 특징의 분포가 다름.
개념 이동 : 동일한 입력에 대한 출력의 조건부 확률이 다름.</code></pre><hr>
<h3 id="domain-shift에-따른-domain-adaptation-기법">Domain shift에 따른 Domain adaptation 기법</h3>
<h4 id="covariate-shift공변량-이동-1">Covariate Shift(공변량 이동)</h4>
<ul>
<li><strong>Importance Weighting</strong>: 소스 도메인의 샘플에 타겟 도메인의 분포에 맞춰 가중치를 부여하여 학습.</li>
<li><strong>Feature Transformation</strong>: 소스와 타겟 도메인의 특징 공간을 일치시키기 위해 특징을 변환.<ul>
<li><strong>PCA</strong> 또는 <strong>T-SNE</strong>를 사용하여 특징을 저차원 공간으로 변환.</li>
<li><strong>Kernel Mean Matching (KMM)</strong>: 소스 도메인의 특징 분포를 타겟 도메인에 맞추기 위해 특징 공간을 매칭.</li>
</ul>
</li>
<li><strong>Domain-Adversarial Training</strong>: 분류기와 도메인 판별기를 동시에 학습하여 특징을 도메인 불변하게 만듦.<ul>
<li><strong>Domain-Adversarial Neural Network (DANN)</strong>: 특징 추출기가 소스와 타겟 도메인에서 동일한 분포를 갖도록 학습.</li>
</ul>
</li>
</ul>
<h4 id="conditional-shift조건부-이동-1">Conditional Shift(조건부 이동)</h4>
<ul>
<li><strong>Class-wise Domain Adaptation</strong>: 클래스별로 도메인 적응을 수행하여 클래스 간의 차이를 줄임.<ul>
<li><strong>Conditional Adversarial Domain Adaptation (CDAN)</strong>: 조건부 분포를 맞추기 위해 클래스 정보를 사용하는 적대적 학습.</li>
</ul>
</li>
<li><strong>Instance Reweighting</strong>: 클래스별로 가중치를 부여하여 타겟 도메인의 분포를 맞춤.<ul>
<li><strong>Balanced Weighting</strong>: 클래스 불균형을 줄이기 위해 소스 도메인의 샘플에 가중치를 부여.</li>
</ul>
</li>
</ul>
<h4 id="label-shift레이블-이동-1">Label Shift(레이블 이동)</h4>
<ul>
<li><strong>Prior Shift Adaptation</strong>: 소스 도메인과 타겟 도메인의 클래스 비율 차이를 조정.<ul>
<li><strong>Target Shift Estimation</strong>: 타겟 도메인의 클래스 비율을 추정하여 모델의 예측을 조정.</li>
</ul>
</li>
<li><strong>Reweighting Techniques</strong>: 클래스 비율을 맞추기 위해 샘플 가중치를 조정.<ul>
<li><strong>EM Algorithm</strong>: 기대-최대화 알고리즘을 사용하여 클래스 비율을 추정하고 조정.</li>
</ul>
</li>
<li><strong>Class Balancing Methods</strong>: 샘플을 재샘플링하거나 가중치를 부여하여 클래스 비율을 맞춤.<ul>
<li><strong>SMOTE</strong>: 소수 클래스의 샘플을 증가시켜 클래스 불균형을 해결.</li>
</ul>
</li>
</ul>
<h4 id="concept-shift개념-이동-1">Concept Shift(개념 이동)</h4>
<ul>
<li><strong>Fine-Tuning</strong>: 타겟 도메인의 데이터를 사용하여 소스 도메인에서 학습된 모델을 미세 조정.<ul>
<li><strong>Transfer Learning</strong>: 소스 도메인에서 학습된 모델을 타겟 도메인에 맞게 재학습.</li>
</ul>
</li>
<li><strong>Ensemble Methods</strong>: 여러 모델을 조합하여 도메인 간의 개념 차이를 줄임.<ul>
<li><strong>Domain Ensembles</strong>: 소스 도메인과 타겟 도메인의 데이터로 각각 학습된 모델을 조합하여 예측.</li>
</ul>
</li>
<li><strong>Conditional Adversarial Networks</strong>: 조건부 분포 차이를 줄이기 위해 적대적 학습을 사용.<ul>
<li><strong>Adversarial Discriminative Domain Adaptation (ADDA)</strong>: 소스 도메인의 특징 추출기를 타겟 도메인에 맞추기 위해 적대적 학습.</li>
</ul>
</li>
</ul>
<hr>
<h3 id="traditional-domain-adaptation">Traditional Domain Adaptation</h3>
<ol>
<li><p><strong>Metric Learning(거리 학습)</strong> : 데이터 포인트 간의 유사성이나 비유사성을 측정하는 거리 함수를 학습하는 기계 학습 → 유사한 인스턴스는 더 가깝게, 비유사한 인스턴스는 더 멀리 두는 거리 측정 학습</p>
<ul>
<li>Siamese Networks : 두 개의 입력 데이터를 사용하여 유사한 쌍의 거리 최소화, 비유사한 쌍의 거리 최대화</li>
<li>Triplet Networks : 삼중 항목 데이터를 사용하여 더 구별력 있는 거리 학습</li>
<li>Contrastive Loss : 유사한 쌍에 대해 거리가 큰 경우와 비유사한 쌍에 대해 거리가 작은 경우를 페널티하는 손실 함수</li>
<li>Triplet Loss : 앵커와 긍정적 샘플 간의 거리가 앵커와 부정적 샘플간의 거리보다 작도록 하는 손실 함수</li>
</ul>
</li>
<li><p><strong>Subspace Representation(부분 공간 표현)</strong> : 고차원 데이터를 저차원 부분 공간으로 투영하여 데이터의 중요한 구조와 관계를 유지하는 방법 → 데이터의 본질적인 구조를 유지하면서 저차원 공간 찾기</p>
<ul>
<li>PCA(Principal Component Analysis) : 데이터의 분산을 최대화하는 방향을 찾는 선형 기법</li>
<li>LDA(Linear Discriminant Analysis) : 서로 다른 클래스를 가장 잘 분리하는 선형 조합을 찾음</li>
<li>Kernel PCA : 커널 함수를 사용하여 비선형 변환을 수행하는 PCA</li>
<li>Manifold Learning : t-SNE, Isomap 등 데이터의 비선형 구조를 포착하는 기법</li>
</ul>
</li>
<li><p><strong>Matching Distribution(분포 정렬)</strong> : 소스 도메인과 타겟 도메인의 데이터 분포를 정렬하여 도메인 이동을 최소화하는 방법. 두 도메인의 특징 분포를 유사하게 만들어 모델이 타겟 도메인에서도 잘 작동하도록 함. → 분포 차이 줄이기</p>
<ul>
<li>MMD(Maximum Mean Discrepancy) : 재현 커널 힐베르트 공간(RKHS)에서 소스와 타겟 분포의 평균 차이를 측정</li>
<li>Wasserstein Distance : 최적 수송 문제를 기반으로 분포 간 거리 측정</li>
<li>Adversarial Training : 도메인 적대적 신경망(DANN)을 사용하여 소스와 타겟 특징 분포를 유사하게 만듦</li>
<li>CORAL : 소스와 타겟 도메인의 공분산 행렬을 정렬하여 도메인 이동을 줄임</li>
</ul>
</li>
</ol>
<hr>
<h3 id="types-of-domain-adaptation---데이터-라벨링-유무기준">Types of Domain adaptation - &#39;데이터 라벨링 유무&#39;기준</h3>
<ol>
<li><strong>Supervised domain adaptation</strong> : labeled data is available in both source and target domains</li>
<li><strong>Unsupervised domain adaptation</strong> : labeled data is available only in the source domain, and the target domain has no labels</li>
<li><strong>Semi-supervised domain adaptation</strong> : both labeled and unlabeled data are available in the target domain</li>
</ol>
<hr>
<h3 id="approaches-to-domain-adaptationuda">Approaches to Domain Adaptation(UDA)</h3>
<ol>
<li><strong>Instance-based adaptation(인스턴스 기반 적용)</strong> : 소스 도메인 인스턴스의 가중치를 조정하여 타겟 도메인에 더 잘 맞게 만드는 방법. 대표적인 방법으로 중요도 가중치 조정(importance weighting)<ul>
<li>ex) 마케팅 데이터에서 고객의 구매 패턴이 지역마다 다를 때, 소스 도메인의 데이터를 타겟 도메인에 맞게 가중치 조정하여 모델 학습</li>
</ul>
</li>
<li><strong>Feature-based adaptation(특징 기반 적용)</strong> : 도메인 불변 특징을 학습하여 소스와 타겟 도메인의 분포를 특징 공간에서 정렬하는 것을 목표로 함.<ul>
<li><strong>Maximum Mean Discrepancy (MMD) : 최대 평균 차이</strong></li>
<li><strong>Correlation Alignment (CORAL) : 소스와 타겟 특징 분포의 공분산 정렬</strong></li>
<li><strong>Adversarial Training</strong>: Using generative adversarial networks (GANs) to align feature distributions : 적대적 네트워크를 사용하여 특징 분포를 도메인 간에 구분할 수 없도록 함.<ul>
<li>ex) 이미지 분류 문제에서 밝은 날씨의 소스 도메인 이미지와 흐린 날씨의 타겟 도메인 이미지를 특징 공간에서 정렬하여 모델 성능 향상</li>
</ul>
</li>
</ul>
</li>
<li><strong>Model-based adaptation(모델 기반 적용)</strong> : 모델 매개변수를 조정하여 도메인 간의 차이를 줄이는 방법.<ul>
<li><strong>Domain-Adversarial Neural Networks (DANN)</strong> : 도메인 분류기를 도입하여 적대적 훈련을 통해 도메인 불변 특징을 학습.</li>
<li><strong>Domain-Specific Batch Normalization</strong> : 도메인 특화 통계를 반영하도록 정규화 계층을 조정.<ul>
<li>ex) 의료 데이터 분석에서 서로 다른 병원 간의 진단 기준 차이를 줄이기 위해 도메인 적대적 신경망 사용</li>
</ul>
</li>
</ul>
</li>
<li><strong>Hybrid approaches(혼합 접근)</strong> : combining techniques for more robust adaptation</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[Types of Learning in ML]]></title>
            <link>https://velog.io/@yenoh_j/Types-of-Learning-in-ML</link>
            <guid>https://velog.io/@yenoh_j/Types-of-Learning-in-ML</guid>
            <pubDate>Thu, 25 Jul 2024 05:55:36 GMT</pubDate>
            <description><![CDATA[<p>기본적인 머신러닝의 학습 방법 카테고리 분류</p>
<hr>
<h3 id="learning-problems">Learning Problems</h3>
<p>세 가지 main types.</p>
<h4 id="supervised-learning--지도-학습">Supervised Learning : 지도 학습</h4>
<p>입력과 정답 레이블이 주어진 경우.
예시를 통해 학습.
label이 지정된 데이터셋을 사용하는 머신러닝.</p>
<ul>
<li>분류</li>
<li>회귀</li>
</ul>
<h4 id="unsupervised-learning--비지도-학습">Unsupervised Learning : 비지도 학습</h4>
<p>입력만 주어지고 정답 레이블이 없는 경우.
데이터에서 숨겨진 패턴을 발견하기.</p>
<ul>
<li>군집화</li>
<li>차원 축소</li>
</ul>
<h4 id="reinforcement-learning--강화학습">Reinforcement Learning : 강화학습</h4>
<p>정적 데이터셋에 의존하는 것이 아닌, 반복적인 시행착오 상호작용을 통해 작업 수행 방법을 학습.</p>
<hr>
<h3 id="hybrid-learning-problems">Hybrid Learning Problems</h3>
<p>지도-비지도 학습 경계가 분명하지 않은 경우.</p>
<h4 id="semi-supervised-learning--준지도-학습">Semi-Supervised Learning : 준지도 학습</h4>
<p>라벨링 된 데이터와 라벨링 되지 않은 데이터를 함께 사용.
라벨링 된 데이터가 많이 없는 경우.</p>
<h4 id="self-supervised-learning--자기-지도-학습">Self-Supervised Learning : 자기 지도 학습</h4>
<p>데이터 자체에서 레이블을 생성하여 학습.
y 없이 (X,X)로 학습.</p>
<h4 id="multi-instance-learning--다중-인스턴스-학습">Multi-Instance Learning : 다중 인스턴스 학습</h4>
<p>개별 인스턴스가 아닌 그룹으로 학습.</p>
<hr>
<h3 id="statistical-inference">Statistical Inference</h3>
<p>추론의 관점에서 분류</p>
<h4 id="inductive-learning--귀납적-학습">Inductive Learning : 귀납적 학습</h4>
<p>결과를 결정하기 위해서 증거를 사용하는 것.
특정 예시들로부터 일반적인 결론을 도출하여 새로운 데이터에 적용하는 방식.
데이터에서 일반적인 패턴을 학습하여 새로운 데이터에 적용.</p>
<h4 id="deductive-inference--연역적-추론">Deductive Inference : 연역적 추론</h4>
<p>기존의 지식과 규칙을 사용하여 특정 결론 도출.
모든 인간은 죽고, 소크라테스는 인간이니, 소크라테스는 죽는다.
일반적인 규칙에서 특정 결론을 도출함. f(x) 계산한 느낌.</p>
<h4 id="transductive-learning--전이적-학습">Transductive Learning : 전이적 학습</h4>
<p>특정 예제에 대한 예측을 훈련 데이터와 테스트 데이터 사이에서 직접 수행.
훈련 데이터와 테스트 데이터 사이에서 직접 예측을 수행하여 특정 인스턴스들에 집중.</p>
<h4 id="example">Example</h4>
<ul>
<li>Induction : 특정 예시들로부터 일반적인 모델을 학습.</li>
<li>Deduction : 학습된 모델을 사용하여 예측.</li>
<li>Transduction : 특정 예시들을 이용하여 직접 예측 수행.<img src="https://velog.velcdn.com/images/yenoh_j/post/942b0bea-7f5a-42c7-9f34-13478b352880/image.png" width="70%" height="70%">

</li>
</ul>
<hr>
<h3 id="learning-techniques">Learning Techniques</h3>
<p>학습 기법들</p>
<h4 id="multi-task-learning">Multi-Task Learning</h4>
<p>여러 관련 작업을 동시에 학습하여 성능 향상.
하나의 데이터셋으로 다중 작업을 학습시켜 일반화 능력 향상.</p>
<h4 id="active-learning">Active Learning</h4>
<p>모델이 중요한 데이터를 선택하여 학습.
라벨링할 데이터를 모델이 선택.
학습하다가 이상하다 싶으면 쿼리를 날림.</p>
<h4 id="online-learning">Online Learning</h4>
<p>데이터를 순차적으로 사용하여 학습을 지속적으로 업데이트.
사용 가능한 데이터를 다 사용하고, 예측 직전 혹은 마지막 관측 이후에 모델 최종적 업데이트.</p>
<h4 id="transfer-learning">Transfer Learning</h4>
<p>한 작업에서 학습한 모델을 다른 작업에 적용.
A task dataset을 통해 모델을 학습시키고, 이 모델의 일부 또는 전체를 활용해 B task dataset을 학습시키는 것.</p>
<h4 id="ensemble-learning">Ensemble Learning</h4>
<p>여러 모델의 예측을 결합하여 더 나은 성능 도출</p>
<hr>
<p><a href="https://machinelearningmastery.com/types-of-learning-in-machine-learning/">참고 블로그</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[PoseCNN]]></title>
            <link>https://velog.io/@yenoh_j/PoseCNN</link>
            <guid>https://velog.io/@yenoh_j/PoseCNN</guid>
            <pubDate>Tue, 23 Jul 2024 08:02:52 GMT</pubDate>
            <description><![CDATA[<h4 id="6d-object-pose-estimation">6D object pose estimation</h4>
<p>객체의 6D pose를 추정하는 것은 로봇이 실제 환경과 상호작용하는 데 중요한 역할을 한다. 그러나 다양한 객체의 형태와 장면의 복잡성, 객체 간의 가림 및 혼잡 때문에 매우 어려운 과제이다.</p>
<p><a href="https://arxiv.org/pdf/1711.00199">PoseCNN 논문 원본</a></p>
<h4 id="관련-연구">관련 연구</h4>
<p>6D object pose estimation에 관한 기존 연구는 templete-based method와 feature-based method로 나뉜다.</p>
<ul>
<li>templete-based method : 강체 템플릿을 생성하여 입력 이미지의 다양한 위치에서 스캔, 유사도 점수를 계산하여 텍스쳐가 없는 객체 감지.(객체가 가려진 경우 성능 저하)<img src="https://velog.velcdn.com/images/yenoh_j/post/59e6add2-50cd-42b0-8ab7-e55fad054c3d/image.png" width="50%" height="50%"></li>
<li>feature-based method : 이미지 픽셀에서 로컬 특징을 추출하고 2D-3D 대응을 설정하여 6D 자세 복원.(객체에 충분한 텍스쳐가 있어야 함)<img src="https://velog.velcdn.com/images/yenoh_j/post/f6fac52d-6d47-4274-827e-c862140aefa6/image.png" width="50%" height="50%">


</li>
</ul>
<p>이 두 방법의 장점을 결합한 심층 학습 프레임워크 제안</p>
<h3 id="posecnn">PoseCNN</h3>
<p>객체의 중심을 이미지에서 지역화하고, 카메라와의 거리를 예측하여 객체의 3D 위치를 추정하며, 쿼터니언 표현을 통해 3D 회전을 추정한다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/b957d826-7d7f-4c53-aa80-a963708303ca/image.png" alt=""></p>
<ol>
<li>입력 : RGB 이미지</li>
<li>컨볼루션 레이어와 맥스 풀링 레이어를 거쳐 특징 맵 추출</li>
<li>임베딩 - 두 가지 경로<ul>
<li>Semantic Labeling을 위한 경로. 두 개의 컨볼루션 레이어를 거쳐 각 픽셀에 대한 객체 레이블 예측</li>
<li>중심 방향 예측과 중심 거리 예측을 위한 경로. 각 픽셀에 대해 객체 중심을 향한 단위 벡터와 객체 중심의 거리 예측</li>
</ul>
</li>
<li>분류 및 회귀<ul>
<li>시맨틱 레이블링 경로는 픽셀별 객체 레이블 예측</li>
<li>중심 방향 예측과 중심 거리 예측 경로는 각각 2D 중심 위치를 찾고 3D Translation을 추정</li>
<li>Hough Voting 레이어를 사용하여 객체 중심을 찾고, 객체의 2D 경계 상자 생성</li>
<li>경계 상자를 사용하여 Rol 풀링 레이어를 통해 특징 맵을 crop and pool.(3D Rotation Regression)</li>
<li>각 Rol에 대해 3D 회전을 쿼터니언으로 회귀하여 6D pose 예측</li>
</ul>
</li>
<li>최종 출력 : 각 객체의 6D pose</li>
</ol>
<h4 id="overview">Overview</h4>
<p>첫 번째 스테이지에서는 13개의 Convolution과 4개의 Max Pooling 레이어를 통해 Feature를 뽑아낸다. 두 번째 스테이지는 임베딩 단계인데, 첫 번째 단계에서 저차원 Feature를 가져와서 고차원 임베딩 단계로 접근한다. 이를 토대로 Semantic labeling을 진행한 후, 해당 정보들을 이용해 Translation과 Rotation을 추정한다.</p>
<h4 id="semantic-labeling">Semantic Labeling</h4>
<p>각 이미지 픽셀을 객체 클래스에 분류하여 객체에 대한 더 많은 정보를 제공하고 가려짐을 효과적으로 처리
semantic labeling branch에서 512d 채널 2개를 사용. 채널을 64d로 줄이며 resolution이 두 배가 되고 두 feature map을 합한 후 deconvolution layer를 통해 원본 이미지 사이즈로 바꾼다. 이 때 채널은 n개인데, 이는 semantic class의 개수이다.
training에서 softmax cross entropy loss를 사용해 픽셀의 class probability를 계산한다.</p>
<h4 id="3d-translation-estimation">3D Translation Estimation</h4>
<img src="https://velog.velcdn.com/images/yenoh_j/post/9644bae4-30d8-409e-9533-a743fae3355e/image.png" width="80%" height="80%">

<p>각 픽셀이 객체 중심을 향한 단위 벡터로 회귀하여 객체 중심의 2D 픽셀 좌표 예측. T를 이미지로 projection한 결과를 c=(cx,cy)라고 하면, c와 depth Tz를 알 수 있다면 Tx, Ty를 얻을 수 있다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/940ed487-719d-4acc-851d-6ab032737fdc/image.png" width="50%" height="50%">
fx,fy는 카메라의 focal length, px,py는 principal point.
<img src="https://velog.velcdn.com/images/yenoh_j/post/f94ac398-2858-4f16-9f05-9389a5b2eb33/image.png" width="50%" height="50%">
단위 벡터를 만들어 중심을 찾도록 학습한다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/f41f9801-1a22-4ceb-abb9-ae0f59b91981/image.png" width="50%" height="50%">
Hough vounting layer를 쌓아 2D 객체 중심을 찾는다. 객체 중심을 찾으면 물체 중심에 투표하는 픽셀을 inliner로 간주하고 Tz를 구한다.</p>
<p>카메라와의 거리를 추정하여 3D 번역을 복원.</p>
<h4 id="3d-rotation-regression">3D Rotation Regression</h4>
<p>객체의 회전을 쿼터니언 표현으로 회귀하기 위해 객체의 경계 상자 내부에서 특징을 추출함. 두 가지 손실함수(PoseLoss, ShapeMatch-Loss)를 도입하여 객체의 회전 추정을 처리.
<img src="https://velog.velcdn.com/images/yenoh_j/post/04bf79e1-99f2-40ad-a63a-369ceeed640d/image.png" width="50%" height="50%">
각 파라미터는 다음 정보들을 의미한다.</p>
<ol>
<li>PLoss(a, b): 두 개의 회전행렬 사이의 손실(loss)</li>
<li>~q, q: 회전을 나타내는 매개변수(예측값, GT)</li>
<li>x: 3D model 데이터 포인트(벡터)</li>
<li>M: 3D model point 집합</li>
<li>m: 포인트의 수</li>
<li>|| -- ||: 벡터의 크기<img src="https://velog.velcdn.com/images/yenoh_j/post/859fb232-6cd2-4cff-a734-5d4e22f8455e/image.png" width="50%" height="50%">


</li>
</ol>
<h4 id="평가">평가</h4>
<p>YCB-Video 데이터셋과 OccludedLINEMOD 데이터셋을 활용.
평가 지표: ADD Metric(올바른 모델 포즈와 추정된 포즈 사이의 평균 거리 추정), ADD-S Metric(대칭 객체의 경우 가장 가까운 점 거리를 사용하여 평균 거리 계산)
<img src="https://velog.velcdn.com/images/yenoh_j/post/dab56cb0-91bb-436b-b731-3eb09c27bd34/image.png" alt=""></p>
<p>PoseCNN은 컬러 이미지만 사용하는 설정과 RGB-D 설정 모두에서 기준을 능가하며, 가려진 상황에서도 뛰어난 성능을 보여준다. 깊이 데이터를 사용한 ICP 알고리즘을 통해 자세를 정제하면 성능이 더욱 향상된다.</p>
<p><a href="https://www.youtube.com/watch?v=ih0cCTxO96Y&amp;t=1s">PoseCNN 유튜브</a>
<a href="https://blog.naver.com/universebin/223185846375">참고 블로그</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[RAG & Prompt Engineering]]></title>
            <link>https://velog.io/@yenoh_j/RAG-Prompt-Engineering</link>
            <guid>https://velog.io/@yenoh_j/RAG-Prompt-Engineering</guid>
            <pubDate>Sat, 20 Jul 2024 15:37:17 GMT</pubDate>
            <description><![CDATA[<h3 id="rag">RAG</h3>
<p>검색-증강 생성(Retrieval-Augmented Generation)</p>
<h4 id="llm의-문제점">LLM의 문제점</h4>
<ol>
<li>답변이 없을 때 허위 정보 제공. (할루시네이션)</li>
<li>사용자가 구체적이거나 최신의 응답을 기대하더라도 오래되었거나 일반적인 정보 제공.</li>
<li>신뢰할 수 없는 출처로부터 응답 생성.</li>
<li>용어 혼동으로 인해 응답이 정확하지 않음. 다양한 훈련 소스가 동일한 용어를 사용하여 서로 다른 내용을 설명함.</li>
</ol>
<h4 id="rag란">RAG란?</h4>
<p>대규모 언어 모델의 출력을 최적화하여 응답을 생성하기 전에 학습 데이터 소스 외부의 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스.</p>
<ol>
<li>사용자가 질문을 입력</li>
<li>RAG가 외부 데이터베이스에서 질문과 관련된 정보를 검색</li>
<li>검색된 정보를 기반으로 LLM이 답변 생성</li>
</ol>
<h4 id="rag의-이점">RAG의 이점</h4>
<ol>
<li>파인튜닝에 비해 시간과 비용이 적게 소요됨.</li>
<li>모델의 일반성을 유지할 수 있음.</li>
<li>답변의 근거를 제시할 수 있음.</li>
<li>할루시네이션 가능성을 줄일 수 있음.</li>
</ol>
<h4 id="작동-과정">작동 과정</h4>
<ol>
<li>데이터 임베딩 및 벡터 DB 구축</li>
</ol>
<ul>
<li>자체 데이터를 임베딩 모델에 통합</li>
<li>텍스트 데이터를 벡터 형식으로 변환하여 벡터 DB를 구축</li>
<li>벡터화된 정보가 풍부한 데이터베이스는 Retriever(문서 검색기) 부분에서 사용자의 쿼리와 관련된 정보를 찾는 데 활용됨.</li>
</ul>
<ol start="2">
<li>쿼리 벡터화 및 관련 정보 추출(증강 단계)</li>
</ol>
<ul>
<li>사용자의 질문(쿼리)을 벡터화</li>
<li>벡터 DB를 대상으로 다양한 검색 기법을 사용하여 소스 정보에서 가장 관련성이 높은 부분 또는 상위 K개의 항목을 추출</li>
<li>추출된 관련 정보는 쿼리 텍스트와 함께 LLM에 제공</li>
</ul>
<ol start="3">
<li>LLM을 통한 답변 생성</li>
</ol>
<ul>
<li>LLM은 쿼리 텍스트와 추출된 관련 정보를 바탕으로 최종 답변 생성</li>
<li>정확한 출처에 기반한 답변이 가능</li>
</ul>
<p><img src="https://velog.velcdn.com/images/yenoh_j/post/fdb54c63-9a12-4c28-a470-650575396359/image.png" alt="출처 : "></p>
<h4 id="활용-방법">활용 방법</h4>
<ol>
<li>Raw data → Connecting
: 원본 데이터의 형식을 컴퓨터가 처리 가능한 형태로 변환해야 함.</li>
<li>Connecting → Embedding
: 데이터를 모델이 처리 가능한 작은 단위로 나누는 과정이 필요.
일반적으로 Chunking이라고 함.</li>
<li>Embedding
: 자연어를 벡터로 변환.
작은 덩어리로 나누어진 데이터와 사용자의 질문을 모두 임베딩해야 함.</li>
<li>Vector DB
: 임베딩으로 변환한 벡터를 저장하는 데이터베이스.
고차원 벡터 데이터를 효율적으로 관리하고 검색하는 데 특화되어 있음.
다양한 기업에서 벡터 DB를 지원하고 있어, 사용자는 목적에 맞는 벡터 DB를 선택할 수 있음.</li>
<li>Retrieval
: 벡터 데이터베이스에 저장된 데이터와 사용자의 질문을 매칭하여, 질문에 가장 적합한 데이터 검색.
검색 로직은 직접 구현하거나, 벡터 DB에서 제공하는 기능을 활용할 수 있음.</li>
</ol>
<p><a href="https://www.ncloud-forums.com/topic/277/">스터디 참고 : 네이버 클라우드 플랫폼</a></p>
<hr>
<h3 id="프롬프트-엔지니어링">프롬프트 엔지니어링</h3>
<ul>
<li>언어모델에게 정확한 정보나 창의적인 콘텐츠를 생성하도록 지시하는 방법을 연구하는 분야를 의미.</li>
<li>프롬프트란? 인공지능에게 주는 입력 문장이나 질문.</li>
<li>인공지능이 원하는 대답을 하도록 프롬프트를 잘 설계하는 것이 인공지능의 출력 품질을 결정함.</li>
</ul>
<h4 id="프롬프트-엔지니어링-구성-요소">프롬프트 엔지니어링 구성 요소</h4>
<ul>
<li>Instruction : 모델이 수행하기를 원하는 특정 작업 또는 지침</li>
<li>Context : 모델을 조정할 수 있는 외부 정보 또는 추가 맥락</li>
<li>Input data : 답변을 찾고자 하는 입력 또는 질문</li>
<li>Output indicator : 출력의 유형 또는 형식을 의미</li>
</ul>
<pre><code>#Prompt
Classify the text into neutral, negative, or positive #instruction
Text: I think the food was okay #input data
Sentiment: #output indicator</code></pre><h4 id="프롬프트-엔지니어링-유형">프롬프트 엔지니어링 유형</h4>
<ul>
<li>zero-shot : 예제를 구성하지 않고 요청</li>
<li>one-shot : 하나의 예제로 구성하는 프롬프트</li>
<li>few-shot : 여러 개의 예제로 구성하는 프롬프트</li>
<li>Chain-of-Thought Prompting : 복잡한 문제를 해결할 때 순차적 해결 방안을 알려주기(계산 식을 풀어서 설명하는 등)</li>
<li>zero-shot CoT Prompting : A:&quot;순차적으로 생각해봐&quot;</li>
</ul>
<h4 id="프롬프트-노하우">프롬프트 노하우</h4>
<ol>
<li>지시 사항은 최대한 구체적이고 명확하게 전달</li>
</ol>
<ul>
<li>모델에게 역할을 부여하는 것이 더 명확한 답변을 이끌어냄.</li>
<li>원하는 답변 형식을 지정하는 것도 중요</li>
</ul>
<ol start="2">
<li>프롬프트 예제를 다양하게 구성</li>
</ol>
<ul>
<li>모델이 다양한 케이스에 대한 패턴을 파악할 수 있도록</li>
</ul>
<ol start="3">
<li>지시문에는 부정문보다 긍정문을 사용</li>
</ol>
<ul>
<li>언어모델은 &#39;generation&#39;하는 모델이기 때문</li>
</ul>
<ol start="4">
<li>계절감 있는 출력 결과가 나오게 하고 싶으면, 예제에 날짜나 시즌 어휘를 추가</li>
</ol>
<ul>
<li>ex) 크리스마스, 설날 등</li>
</ul>
<ol start="5">
<li>대상자를 지정</li>
</ol>
<ul>
<li>대상자 정확히 인식, 문장의 목적 구체화</li>
</ul>
<h4 id="프롬프트-마켓-등장">프롬프트 마켓 등장</h4>
<p>...!</p>
<p><a href="https://bizschool.naver.com/online/course/65204/lecture/1462063">스터디 참고 : 네이버 비즈니스 스쿨</a></p>
<h4 id="cot에-이은-sot">CoT에 이은 SoT</h4>
<p>Skeleton-of-Thoguhts</p>
<ul>
<li>병렬 처리를 통해 LLM의 효율성을 극대화하는 방법론</li>
<li>뼈대 단계(Skeleton stage) 먼저 답변의 주요 요점들을 간단히 나열한 후, 요점 확장 단계(Point-expanding stage)를 통해 병렬적으로 확장해 나가는 것</li>
</ul>
<p><a href="https://arxiv.org/pdf/2307.15337">관련 연구</a>
<img src="https://velog.velcdn.com/images/yenoh_j/post/e3f1821e-c354-4b16-ab26-0ed1c70831f7/image.png" alt=""></p>
<h4 id="sot의-장점">SoT의 장점</h4>
<ol>
<li>효율성 향상</li>
</ol>
<ul>
<li>기존의 언어 모델은 시퀀스 기반으로 순차적으로 텍스트를 생성하기 때문에 추론을 위해 많은 시간이 소요됨. </li>
<li>SoT에서는 응답의 틀을 먼저 구성한 후 세부 내용을 채우는 방식을 사용함으로써 대규모 언어 모델의 응답 속도를 개선함.</li>
<li>여러 부분을 동시에 생성함으로써 전체 생성 시간 단축.</li>
</ul>
<ol start="2">
<li>구조화된 사고 프로세스</li>
</ol>
<ul>
<li>전체 응답의 논리적인 흐름을 미리 셀계할 수 있음.</li>
<li>골격은 필요에 따라 쉽게 수정하거나 확장할 수 있음.</li>
<li>새로운 아이디어나 정보를 추가 시, 전체 구조를 크게 해치지 않고 유연하게 대응 가능.</li>
</ul>
<ol start="3">
<li>복잡한 주제의 체계적 분석</li>
</ol>
<ul>
<li>골격은 주요 논점을 명확히 하고 각 부분을 체계적으로 분석할 수 있게 함.</li>
<li>ex) 학술 연구, 비즈니스 보고서, 창의적 글쓰기, 교육</li>
</ul>
<pre><code>#시스템
- 사용자의 질문을 받으면, 먼저 문제를 명확히 정의하고 핵심 질문을 파악합니다.
- 문제 해결을 위한 단계별 접근 방식을 이용합니다.
- 각 단계에 대해 간단한 설명을 제공하세요. 이는 전체 사고 과정의 뼈대 역할을 합니다.
- 뼈대의 문장은 충분히 완결적인 문장으로 완성합니다.
- 답변은 논리적이고 구조화되어야 하며, 각 단계가 어떻게 최종 결론으로 이어지는지 명확히 보여주어야 합니다.</code></pre><p><a href="https://www.ncloud-forums.com/topic/362/">스터디 참고 : 네이버 클라우드 플랫폼</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[PatchCore]]></title>
            <link>https://velog.io/@yenoh_j/PatchCore-0kbazcgs</link>
            <guid>https://velog.io/@yenoh_j/PatchCore-0kbazcgs</guid>
            <pubDate>Fri, 12 Jul 2024 08:32:05 GMT</pubDate>
            <description><![CDATA[<p>PatchCore는 주로 산업 제조 분야에서 비정상 탐지(anomaly detection)를 위해 사용되는 딥러닝 기반 방법론이다.</p>
<h3 id="towards-total-recall-in-industrial-anomaly-detection">Towards Total Recall in Industrial Anomaly Detection</h3>
<p><a href="https://arxiv.org/pdf/2106.08265v2">https://arxiv.org/pdf/2106.08265v2</a></p>
<p><img src="https://velog.velcdn.com/images/yenoh_j/post/dd620c55-a19a-4db8-a179-4d10ede54e7e/image.png" alt="">
왼쪽은 training 과정, 오른쪽은 testing 과정이다.</p>
<h4 id="patchcore가-강조하는-점">PatchCore가 강조하는 점</h4>
<ol>
<li>산업용 Anomaly Detection</li>
<li>Total Recall</li>
</ol>
<p>결함이 없는 이미지로만 모델을 학습시키는 콜드 스타트 문제를 다룬다.
PaDiM과 SPADE의 단점을 보완하고 이 둘의 장점을 취한 모델이다.</p>
<h4 id="patchcore의-목표">PatchCore의 목표</h4>
<ol>
<li>Pretrained network 사용, 추출한 feature의 정보력 향상</li>
<li>ImageNet으로 학습한 모델의 bias 감소</li>
<li>inference 속도 향상</li>
</ol>
<h4 id="patchcore의-한계점">PatchCore의 한계점</h4>
<p>산업 분야 특화 이상 탐지 모델이기 때문에 다른 분야에서 사용하려면 Adaptation이 필요하다.</p>
<hr>
<h3 id="patchcore의-원리">PatchCore의 원리</h3>
<p>초기 단계에서 입력 이미지 또는 데이터에서 패치를 나누어 특징을 추출함. 일반적으로 사전 학습된 컨볼루션 신경망(CNN) 사용.</p>
<h4 id="local-patch-features-">Local Patch Features :</h4>
<p>Mid-Level features를 Local Patch Features로 사용함.
→ 네트워크의 마지막 레이어 대신 중간 레벨의 특징 표현을 사용하여 ImageNet 클래스에 대한 편향을 피함.</p>
<ul>
<li>High-Level Features는 공간적 정보의 손실이 큼</li>
<li>Image Classification Task에 대한 Bias가 많이 존재함</li>
</ul>
<p>각 Patch에는 Adaptive Average Pooling을 적용해 주변 정보를 포함시킴. 이 과정에서 얻어진 Patch Features를 scoring에 사용함.</p>
<h4 id="coreset-subsampling-">Coreset Subsampling :</h4>
<p>Patch Feature 중, 핵심(Coreset)만 추출해 분석에 사용함.</p>
<p>특정 Patch Features가 Coreset임을 판단하는 기준으로 Greedy Search 알고리즘 사용. (Random Subsampling에 비해 정상 features가 고르게 선택됨)
<img src="https://velog.velcdn.com/images/yenoh_j/post/3327e197-e811-4fe1-b4d5-417629272f1c/image.png" alt=""></p>
<h4 id="detection-and-localization-">Detection and Localization :</h4>
<p>추출된 Coreset Patch의 features를 기준으로 이미지의 Anomaly Scoring하는 단계.</p>
<ul>
<li>테스트 이미지에 Local Patch Features를 추출해 각 Patch Features를 Coreset Features와 비교. 비교 방법은 거리 계산으로.(유클리디안 거리)</li>
<li>K-NN을 수행해 가장 가까운 거리를 Anomaly Score로 간주함.</li>
</ul>
<p>새로운 데이터가 들어오면, 해당 데이터의 패치 특징을 정상 패치들의 대표적인 특징 벡터들을 저장한 데이터베이스와 비교하여 유사도를 계산함.</p>
<p>전체 이미지 또는 데이터의 비정상 점수를 계산하여 점수가 높을수록 해당 데이터가 비정상일 가능성이 높은 것.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Manual correction method using AI language model]]></title>
            <link>https://velog.io/@yenoh_j/Manual-modification-method-using-AI-language-model</link>
            <guid>https://velog.io/@yenoh_j/Manual-modification-method-using-AI-language-model</guid>
            <pubDate>Thu, 11 Jul 2024 12:24:16 GMT</pubDate>
            <description><![CDATA[<p>매뉴얼은 명확하고 정확한 정보 제공이 필수적이다. 특히 로봇 및 자동화 시스템을 제조하는 기술 집약적인 산업의 경우, 작성된 기술 문서인 매뉴얼의 언어적 오류나 번역 문제로 인한 잘못된 사용이 큰 문제를 초래할 수 있다. AI 언어모델은 이러한 문제를 해결할 수 있는 가능성을 제공한다.</p>
<p><img src="https://velog.velcdn.com/images/yenoh_j/post/8ea9fe11-ef86-4a3d-978e-ec858889435d/image.png" alt=""></p>
<h3 id="데이터-수집">데이터 수집</h3>
<p>AI-Hub의 자연어 분석 후처리용 교정 검증 데이터로부터, 잘못된 문장과 수정된 올바른 문장 쌍 및 오류 유형을 수집했다. 총 7개의 오류 유형별로 각각 4000개의 문장을 사용했다.</p>
<p>형식은 &#39;instruction&#39; : &quot;해당 철자 오류를 가진 문장을 수정해주세요.&quot;, &#39;input&#39; : 오타가 있는 문장, &#39;output&#39; : 오타가 수정된 올바른 문장. 이 구조는 모델이 철자 오류를 효과적으로 교정할 수 있도록 도와준다.</p>
<p>테스트 데이터는 기업으로부터 제공받은 매뉴얼로부터, 원본 매뉴얼에서 선택된 문장에 오타를 추가하여 구성하였고, 오류 유형은 다음과 같다. (띄어쓰기 오류, 문장부호 오류, 수사 오류, 삭제 오류, 추가 오류, 교체 오류, 분리 오류, 타이핑 언어 오류, 외래어 변환 오류)</p>
<h3 id="모델">모델</h3>
<p>LLaMA3 Open-Ko 8B 모델을 사용하였다. 상대적으로 적은 컴퓨팅 파워로 구동 가능하고, 성능이 뛰어난 경량화 언어 모델이다. 해당 모델과 함께 GPT-4 아키텍처 기반 대규모 언어모델인 ChatGPT 또한 비교 평가하였다.</p>
<h3 id="평가">평가</h3>
<p>평가 기준은</p>
<ul>
<li>유창성(Fluency): 문장이 문법적으로 올바르고 자연스럽게 읽히는 정도.</li>
<li>정확성(Accuracy): 문장이 전달하는 정보가 사실을 정확히 전달하는지.</li>
<li>적절성(Relevance): 텍스트가 주어진 질문이나 주제에 잘 부합하는지.</li>
</ul>
<p>잘못된 문장을 고친 후, 고쳐진 문장과 올바른 문장을 비교하여 네 명의 연구원이 각 기준에 따라 1점에서 5점까지 점수를 부여하여 독립적으로 평가를 수행했다.</p>
<h3 id="평가-결과">평가 결과</h3>
<h4 id="average-performance-comparison-based-on-evaluation-metrics">Average Performance Comparison Based on Evaluation Metrics</h4>
<table>
<thead>
<tr>
<th>Model</th>
<th>Fluency Average</th>
<th>Accuracy Average</th>
<th>Relevance Average</th>
<th>Total Average</th>
</tr>
</thead>
<tbody><tr>
<td>LLaMA3 Before Fine-tuning</td>
<td>1.90</td>
<td>1.91</td>
<td>1.93</td>
<td>1.91</td>
</tr>
<tr>
<td>LLaMA3 After Fine-tuning</td>
<td>3.54</td>
<td>3.73</td>
<td>3.73</td>
<td>3.66</td>
</tr>
<tr>
<td>ChatGPT</td>
<td>4.86</td>
<td>4.70</td>
<td>4.95</td>
<td>4.84</td>
</tr>
</tbody></table>
<h4 id="average-performance-comparison-based-on-error-type">Average Performance Comparison Based on Error Type</h4>
<table>
<thead>
<tr>
<th>Error Type</th>
<th>LLaMA3 Before Fine-tuning</th>
<th>LLaMA3 After Fine-tuning</th>
<th>ChatGPT</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>1.99</td>
<td>3.52</td>
<td>4.84</td>
</tr>
<tr>
<td>2</td>
<td>1.95</td>
<td>3.74</td>
<td>4.80</td>
</tr>
<tr>
<td>3</td>
<td>1.88</td>
<td>3.10</td>
<td>4.77</td>
</tr>
<tr>
<td>4</td>
<td>2.38</td>
<td>3.85</td>
<td>4.73</td>
</tr>
<tr>
<td>5</td>
<td>2.04</td>
<td>3.88</td>
<td>4.90</td>
</tr>
<tr>
<td>6</td>
<td>2.02</td>
<td>3.56</td>
<td>4.89</td>
</tr>
<tr>
<td>7</td>
<td>2.30</td>
<td>3.87</td>
<td>4.92</td>
</tr>
<tr>
<td>8</td>
<td>1.05</td>
<td>3.25</td>
<td>4.78</td>
</tr>
<tr>
<td>9</td>
<td>1.02</td>
<td>4.10</td>
<td>4.81</td>
</tr>
</tbody></table>
<h4 id="standard-deviation-of-evaluation-metrics-for-models">Standard Deviation of Evaluation Metrics for Models</h4>
<table>
<thead>
<tr>
<th>Model</th>
<th>Fluency Standard Deviation</th>
<th>Accuracy Standard Deviation</th>
<th>Relevance Standard Deviation</th>
</tr>
</thead>
<tbody><tr>
<td>LLaMA3 Before Fine-tuning</td>
<td>1.07</td>
<td>1.28</td>
<td>1.25</td>
</tr>
<tr>
<td>LLaMA3 After Fine-tuning</td>
<td>0.79</td>
<td>0.94</td>
<td>0.79</td>
</tr>
<tr>
<td>ChatGPT</td>
<td>0.34</td>
<td>0.46</td>
<td>0.22</td>
</tr>
</tbody></table>
<p>파인튜닝 전 모델은 전반적으로 낮은 성능과 일관성 부족을 보이며, 파인튜닝 후 모델은 모든 평가 항목에서 성능이 향상되고 일관성이 크게 개선되었다. 이는 파인튜닝이 모델 성능 향상에 중요한 역할을 한다는 것을 입증한다. ChatGPT는 매우 일관되고 안정적인 성능을 보인다.</p>
<h3 id="결론">결론</h3>
<p>AI 언어 모델을 활용하여 매뉴얼의 정확성과 명확성을 높이고, 사용자의 이해도를 향상시키며, 문서 작성 프로세스를 개선하는 데 기여할 수 있음을 보여준다.</p>
<p>매뉴얼 데이터와 같은 특정 도메인 데이터셋을 이용한 언어 모델 파인튜닝의 가능성과 유용성을 입증하였으며, 매뉴얼 작성 및 유지보수 작업에서의 자동화 가능성을 시사한다.</p>
<p>향후 더 다양한 유형의 오타와 광범위한 텍스트 데이터를 활용하여 모델의 성능을 검증하거나, 모델이 텍스트의 문맥을 이해하고 연속적인 정보를 처리하는 능력을 평가해볼 수 있을 것이다.</p>
<h4 id="감사의-글">감사의 글</h4>
<p>본 연구에 데이터를 제공해주신 ㈜로보스타에 감사드립니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Bayesian Optimization for FDM process defect detection]]></title>
            <link>https://velog.io/@yenoh_j/Bayesian-Optimization-for-FDM-process-defect-detection</link>
            <guid>https://velog.io/@yenoh_j/Bayesian-Optimization-for-FDM-process-defect-detection</guid>
            <pubDate>Thu, 11 Jul 2024 11:54:44 GMT</pubDate>
            <description><![CDATA[<h3 id="predecessor">Predecessor</h3>
<p>내가 진행한 연구의 기반이 된 교수님의 논문</p>
<p>Kim, H., Lee, H., &amp; Ahn, S. H. (2022). Sys tematic deep transfer learning method based on a small image dataset for spaghetti-shape defect m onitoring of fused deposition modeling. Journal o f Manufacturing Systems, 65, 439-451.
<a href="https://github.com/hyungjungkim/systematic-deep-transfer-learning-for-fdm-defect-detection">[systematic deep transfer learning]</a></p>
<h4 id="systematic-deep-transfer-learning">Systematic deep transfer learning</h4>
<p>적층 제조(AM), 특히 FDM 공정에서 스파게티형 결함을 감지하기 위한 심층 전이 학습 방법의 개발이다.</p>
<p>데이터는 매우 적고, 데이터 다양성을 위해 데이터 증강 기법을 적용했다.
모델은 ImageNet에서 사전 학습된 네 가지 CNN 아키텍쳐를 사용했다. VGGNet, GoogLeNet, ResNet, EfficientNet.
고정 특징 추출 및 미세 조정이라는 두 가지 주요 방법을 사용했다. 미세 조정 전략은 선택된 모델을 여러 훈련 섹션으로 나누어 진행했다.</p>
<p>ResNet50이 90% 이상의 높은 정확도를 보였고, 해당 모델은 메모리 크기와 계산 시간 면에서 효율적! 실시간 응용 프로그램에도 적합!
<img src="https://velog.velcdn.com/images/yenoh_j/post/a993816a-14a8-4791-b52c-b90abafb10ec/image.png" alt="">
기존에는 네 가지 CNN 모델에서 총 103개의 훈련 실행이 필요하나, 제안된 방법에서는 모델의 구조를 나누어 각 섹션별로 체계적인 훈련을 수행하기 때문에 총 24개의 훈련 실행만이 필요하다. 이를 통해 모델의 특정 부분을 집중적으로 학습시켜 성능 최적화.</p>
<hr>
<h3 id="hyperparameter-selection">Hyperparameter selection</h3>
<p>전이학습의 성능은 선택된 사전 학습 모델과 학습 구성에 크게 의존한다. 특히, 모델의 학습 과정에서 사용되는 하이퍼파라미터 설정은 모델의 성능에 큰 영향을 미친다. </p>
<p>그런데 일반적으로 전이학습에 사용되는 하이퍼파라미터는 개발자의 경험적 지식에 기반되어 선정되기 때문에, 하이퍼파라미터를 최적화할 수 있는 방안이 함께 고민되어야 한다.</p>
<h4 id="overview">Overview</h4>
<p><img src="https://velog.velcdn.com/images/yenoh_j/post/bc724002-0f7a-440b-9908-532d97ca5f66/image.png" alt="">
사전 학습된 CNN 모델 중 ResNet50 모델을 base model로 선정하고, 전체 레이어를 유지한 채로 베이지안 최적화를 진행했다. systematic transfer learning이라는 좋은 틀이 있지만, 베이지안 최적화의 효과를 확인하기 위한 조건임.</p>
<p>최적화의 대상으로는 학습률, 훈련 배치 크기, 검증 배치 크기를 선정. 목적 함수는 검증 손실로 설정.</p>
<h4 id="results">Results</h4>
<p>베이지안 최적화를 통해 모델의 테스트 정확도가 약 3% 향상되었다. 이와 같은 자동화된 하이퍼파라미터 최적화 기법은 모델 개발 과정에서 많은 시간과 노력을 절약할 수 있고, 전문지식이 없는 사용자도 효과적인 모델 튜닝이 가능하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[BO : Hyperparameter Optimization]]></title>
            <link>https://velog.io/@yenoh_j/BO-Hyperparameter-Optimization-6nsl55qb</link>
            <guid>https://velog.io/@yenoh_j/BO-Hyperparameter-Optimization-6nsl55qb</guid>
            <pubDate>Tue, 09 Jul 2024 15:26:58 GMT</pubDate>
            <description><![CDATA[<h3 id="hyperparameter-optimization">Hyperparameter Optimization</h3>
<p>왜 필요할까?</p>
<ol>
<li>모델 성능 향상</li>
<li>과적합 및 과소적합 방지</li>
<li>학습 효율성 개선</li>
<li>복잡한 검색 공간 탐색</li>
<li>자동화된 머신러닝</li>
<li>재현성 및 신뢰성</li>
</ol>
<h4 id="manual-search">Manual Search</h4>
<p>하이퍼파라미터 값들을 결정할 때, 논문에서 사용한 데이터셋과 내가 사용하고자 하는 데이터셋이 다르기 때문에, 완벽하게 적용되기 어렵다. 일반적으로 직관이나 노하우에 의해 다음 하이퍼파라미터 값을 선정하고, 학습을 수행하고, 검증 데이터셋에 대해 측정한 성능 결과를 기록한다. 마지막 시점까지 시도한 다음 가장 높은 성능을 발휘한 하이퍼파라미터 값들을 선정한다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/720a3b61-7e13-4f30-8d9e-5c3c3cacb37b/image.png" alt="">
직관적인 방법이지만, 운에 좌우된다는 점이 단점.</p>
<p>추가적으로, 한 번에 여러 종류의 하이퍼파라미터를 탐색할 때 문제가 복잡해진다. 여러 종류의 하이퍼파라미터들이 서로 간의 상호 영향 관계를 나타내는 경우, 기존의 직관을 적용하기 어렵다. 대표적인 예시가 학습률-L2 정규화 항.
<img src="https://velog.velcdn.com/images/yenoh_j/post/f95bb19b-c9c2-4f93-a8bd-413e0d553cd1/image.png" alt="">
L2 정규화 계수인 ℷ를 변화시키면, 손실함수의 형태가 변화한다. 이로 인해 최적 학습률의 값도 자연스럽게 변화한다.</p>
<h4 id="grid-search-random-search">Grid Search, Random Search</h4>
<p>상대적으로 체계적인 방식. Grid Search는 탐색 대상이 되는 특정 구간 내의 후보 하이퍼파라미터 값들을 일정 간격으로 선정하여 결과 비교. 더 균등하고 전역적인 탐색이 가능하다.
Random Search도 큰 맥락은 유사하지만, 탐색 구간 내 후보 하이퍼파라미터 값들을 랜덤 샘플링으로 선정. 불필요한 반복 수행 횟수를 줄이고, 정해진 간격 사이에 위치한 값에 대해서도 확률적 탐색 가능. 그러나 여전히 불필요한 탐색 반복. 다음 시도할 후보에 이전 성능 결과에 대한 <strong>&#39;사전지식&#39;</strong>이 반영되지 않기 때문.
<img src="https://velog.velcdn.com/images/yenoh_j/post/f729501d-d6dd-49c0-a49e-1d1ca99ea965/image.png" alt=""></p>
<h3 id="bayesian-optimization">Bayesian Optimization</h3>
<p>Bayesian Optimization(BO)은 원래 미지의 목적함수 f를 상정하고 f(x)를 최대로 만드는 최적해 x를 찾는 것을 목적으로 한다. 목적함수의 표현식을 명시적으로 알지 못하고, 하나의 함숫값을 계산하는데 오래 걸릴 경우 가정. 가능한 적은 수의 후보들에 대해 함숫값을 순차적으로 조사하여 f(x)를 최대로 만드는 최적해를 효과적으로 찾는 것이 주요 목표이다.</p>
<h4 id="bo의-두-가지-필수-요소">BO의 두 가지 필수 요소</h4>
<ol>
<li>Surrogate Model : 현재까지 조사된 입력값-함숫값 점들 (x_1, f(x_1)), ...(x_t, f(x_t))를 바탕으로 목적함수의 형태에 대한 확률적인 추정을 수행하는 모델</li>
<li>Acquisition Function : 목적함수에 대한 현재까지의 확률적 추정 결과를 바탕으로 최적 입력값 x를 찾는 데 있어 유용할만한 다음 입력값 후보 x_t+1을 추천해주는 함수
<img src="https://velog.velcdn.com/images/yenoh_j/post/5ac7c88b-5d25-46cb-b877-34a25475a610/image.png" alt=""></li>
</ol>
<p>Surrogate Model로 가장 많이 사용되는 확률 모델이 Gaussian Process(GP)이다. 함수들에 대한 확률 분포를 나타내기 위한 확률 모델, 구성 요소 간의 결합 분포가 가우시안 분포를 따름.
핵심은 조사된 점으로부터 거리가 먼 x일수록, 해당 지점에 대해 추정한 평균값의 불확실성이 크다.
<img src="https://velog.velcdn.com/images/yenoh_j/post/65af3921-86dd-4970-9c8f-501ec54d0fad/image.png" alt=""></p>
<p>Acquisition Function은 선정되는 x_t+1이 최적 입력값을 선정하는데 유용해야 한다. 이 유용하다는 것이 지금까지 조사된 점들 중 함숫값이 최대인 점 근방을 시도하는 것이 합리적이다 이런 뜻. 이 경우가 exploitation. 혹은, 조사된 두 점 사이에 위치하고, 표준편차(=불확실성)가 큰 경우, 탐색해봐야 한다는 것이 어느정도 그럴싸한 판단이다.이것이 exploration.</p>
<p> Expected Improvement(EI)는 exploration과 exploitation 두 전략 모두 일정 수준 포함하도록 설계된 것으로, Acquisition Function으로 가장 많이 사용된다. 현재까지 추정된 목적함수를 바탕으로 최대 합숫값보다 큰 함숫값을 도출할 확률 및 그 함숫값과의 차이값을 종합적으로 고려하여 입력값 x의 유용성을 나타내는 숫자를 출력한다.
 <img src="https://velog.velcdn.com/images/yenoh_j/post/191ed93d-5a76-49da-9c6c-6fde88f48f61/image.png" alt="">
최대 함숫값보다 큰 영역에 해당하는 부분이 초록색으로 표시되어 있음. 이 영역의 크기가 클 수록, 이 때의 함숫값이 지금까지의 최댓값보다 클 확률이 높다. 그런 x값은 유용할만한 후보로 판단할 수 있다. 이렇게 계산한 PI값에 함숫값에 대한 평균과 지금까지의 최댓값과의 차이값만큼 가중하여 EI값을 최종적으로 계산. 그런 가능성이 존재할 때, 그 값이 실제로 얼마나 더 큰가 또한 고려대상이기 때문에 이를 반영한 계산 방식.
<img src="https://velog.velcdn.com/images/yenoh_j/post/461e6561-1bfe-4b58-925f-7187114b10d1/image.png" alt="">
긴 유도과정을 거치면 이렇게 정리된다.Φ와 ϕ는 각각 표준정규분포의 누적분포함수(CDF)와 확률분포함수(PDF)를 나타내며, ℇ는 exploration과 exploitation 간의 상대적 강도를 조절해 주는 파라미터이다. 이걸 크게 잡을수록 exploration의 강도가, 작게 잡을수록 exploitation의 강도가 높아진다.</p>
<h4 id="실제-딥러닝-모델에서의-수행-예시">실제 딥러닝 모델에서의 수행 예시</h4>
<ul>
<li><p>입력값 x : 학습률</p>
</li>
<li><p>목적함수 f(x) : 설정한 학습률을 적용하여 학습한 딥러닝 모델의 검증 데이터셋에 대한 성능 결과 수치 (정확도 등)</p>
</li>
<li><p>입력값 x의 탐색 대상 구간 : (a, b)</p>
</li>
<li><p>맨 처음에 조사할 입력값-함숫값 점들의 갯수 : n</p>
</li>
<li><p>맨 마지막 차례까지 조사할 입력값-함숫값 점들의 최대 개수 : N</p>
<ol>
<li>초기 샘플링: 구간 (a, b)에서 n개의 입력값을 랜덤하게 샘플링하여 딥러닝 모델을 학습하고, 검증 데이터셋으로 성능을 평가하여 함숫값 계산.</li>
</ol>
</li>
</ul>
<ol start="2">
<li>Surrogate Model: 초기 샘플들을 이용해 Surrogate Model로 확률적 추정 수행.</li>
<li>입력값 선택: 탐색된 점이 총 N개에 도달할 때까지, Surrogate Model의 추정 결과를 바탕으로 EI 값을 계산하여, 값이 가장 큰 점을 다음 입력값 후보로 선택.</li>
<li>모델 학습: 선택된 입력값을 사용하여 딥러닝 모델을 학습하고 성능을 평가하여 함숫값으로 간주.</li>
<li>반복: 새로운 점을 기존 점들에 추가하고 Surrogate Model을 갱신. 이 과정을 N개의 점이 모일 때까지 반복.</li>
<li>최종 최적해 선택: 최종적으로 추정된 목적함수 결과물 중 평균 함수  µ(x) 를 최대로 만드는 최적해를 선택.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/yenoh_j/post/21ab5440-b0cb-497f-9678-f348b2c56b5a/image.png" alt=""></p>
<p><a href="https://www.cognex.com/ko-kr/blogs/deep-learning/research/overview-bayesian-optimization-effective-hyperparameter-search-technique-deep-learning-1">이번 스터디 참고 블로그</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Bayesian Optimization]]></title>
            <link>https://velog.io/@yenoh_j/Bayesian-Optimization</link>
            <guid>https://velog.io/@yenoh_j/Bayesian-Optimization</guid>
            <pubDate>Tue, 09 Jul 2024 14:55:11 GMT</pubDate>
            <description><![CDATA[<p><em>P(model)과 P(data I model)을 통해 P(model I data) 추정</em></p>
<p>함수의 특정 x값에 대한 y값만 알 수 있고, 함수의 수학적 표현을 모를 때, 함수의 최댓값을 계산하기 위한 방법으로 사용.</p>
<p>소량의 실험 값과 확률적 추정으로 미지의 목적함수에 대한 최적값을 효과적으로 탐색할 수 있는 방법.</p>
<p>초기 추정치를 업데이트하면서 최적값을 찾아가는 방식. 실제 시스템에서 <strong>매개변수 조정</strong>이나 <strong>하이퍼파라미터 튜닝</strong>에 많이 사용.</p>
<h4 id="베이지안-최적화-활용">베이지안 최적화 활용</h4>
<ol>
<li>하이퍼파라미터 최적화 :
머신러닝 모델에서 사용되는 하이퍼파라미터 조정, 최적의 하이퍼파라미터 값을 찾을 수 있음. 예를 들어, SVM(Support Vector Machine), 신경망, 랜덤 포레스트 등의 모델에서 매개변수인 커널의 유형, 커널 함수의 매개변수, 학습률, 은닉층 수 등 조정, 딥러닝 모델에서의 하이퍼파라미터 조정.</li>
<li>실험 최적화 :
베이지안 최적화의 기본적 사용에서 확장, 실험 디자인에서 베이지안 최적화 사용. 실험 재현성을 높이기 위해 실험 환경 조정, 실험에서 얻은 데이터를 최대한 활용하기 위해 실험의 파라미터 조정 등. 일반적으로 가장 좋은 성능을 뽑는 조건을 찾아내어 적용하기 위해 활용.</li>
</ol>
<h4 id="베이지안-최적화-과정">베이지안 최적화 과정</h4>
<ol>
<li>사전 분포 설정(Prior Distribution) :
함수의 초기 추정치 설정. 주로 가우시안 프로세스(Gaussian Process, GP)사용, 함수의 예측 분포 모델링</li>
<li>획득 함수(Acquisition Function) :
함수의 다음 평가 지점 선택. 주어진 사전 분포를 바탕으로 다음 샘플링 위치 결정. 주로 기대 개선(Expected Improvement), 확률 개선(Probability of Improvement), 상한 신뢰 구간(Upper Confidence Bound) 사용.</li>
<li>함수 평가 :
선택된 지점에서 실제 함수 평가. 실제 데이터나 실험을 통해 결과 획득.</li>
<li>사후 분포 업데이트 :
평가된 결과를 바탕으로 사전 분포 업데이트, 새로운 사후 분포 계산. 베이즈 정리를 통해 이루어짐.</li>
<li>반복 :
위 단계 반복하여 최적화. 각 반복에서 새로운 정보를 얻어 이를 기반으로 더 정교한 최적화 수행.</li>
</ol>
<hr>
<h3 id="bayesian-optimization-algorithm">Bayesian Optimization Algorithm</h3>
<p><img src="https://velog.velcdn.com/images/yenoh_j/post/289ad22d-15fa-42d7-a9f5-cddac68686e1/image.png" alt=""></p>
<ul>
<li>목적함수 f(x) : 우리가 구하고자 하는 함수 (검은 점선)</li>
<li>Surrogate Model : 목적함수의 형태에 대한 확률적 추정 (검은 실선)</li>
<li>실제 측정 값 : 검은색 점</li>
<li>Acquisition fuction : 다음 번 탐색할 입력 값 후보 추천 함수 (녹색 실선)</li>
<li>파란색 영역은 불확실성 정도</li>
</ul>
<h4 id="progress">Progress</h4>
<p>해당 모델에 데이터셋 입력. 데이터셋을 통해 딥러닝 모델 학습이 이루어지고 결과 계산 후 우리가 확률적으로 추정하는 Surrogate Model이 그려짐.</p>
<p>이미 가지고 있는 데이터셋 이후, 다음 iteration에서 측정할 하이퍼파라미터의 위치로서 Acquisition function 값이 큰 점을 후보로 선정.</p>
<p>Acquisition function은 모델을 통해 어떤 결과를 얻고 싶은가에 따라 다르다. 목적함수의 불확실성을 최소화하거나, 예측값을 최대/최소화할 수 있을 것으로 기대되는 포인트가 선정되도록 함수를 만든다. 전자가 탐색 전략 혹은 적극적 학습 전략, 후자가 활용 전략.</p>
<p>결과로서 나온 해당 샘플링 포인트에 대한 측정을 실시하고 그 측정값을 데이터에 편입. 그럼 모델은 추가된 데이터에 기반하여 목적함수의 추정 업데이트.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Bayes' theorem]]></title>
            <link>https://velog.io/@yenoh_j/Bayes-theorem</link>
            <guid>https://velog.io/@yenoh_j/Bayes-theorem</guid>
            <pubDate>Tue, 09 Jul 2024 14:22:26 GMT</pubDate>
            <description><![CDATA[<h3 id="frequentist-probability-vs-bayesian-probability"><em>Frequentist Probability vs Bayesian Probability</em></h3>
<p><strong>빈도론적 확률(Frequentist Probability)</strong>:
<em>확률은 객관적인 수치로, 반복 실험의 결과를 통해서만 정의된다.</em></p>
<p>매개변수 추정: 점 추정(Point Estimation)을 주로 사용하며, 신뢰구간을 통해 불확실성을 표현한다.</p>
<p><strong>베이지안 확률(Bayesian Probability)</strong>:
<em>확률은 개인의 주관적인 신념을 수학적으로 표현한 것으로, 사전 확률(Prior Probability)과 사후 확률(Posterior Probability)을 포함한다.</em></p>
<p>매개변수 추정: 베이즈 정리를 사용하여 사전 확률을 업데이트하고, 이를 통해 매개변수의 분포를 추정한다.</p>
<h4 id="동전을-던졌을-때-앞면이-나올-확률은-12이다">&quot;동전을 던졌을 때 앞면이 나올 확률은 1/2이다.&quot;</h4>
<p>Frequentist Probability:
&quot;동전을 던졌을 때 앞면이 나올 확률이 0.5라는 것은, 무한히 많은 동전 던지기 실험에서 앞면이 나오는 비율이 50%라는 것을 의미한다.&quot;</p>
<p>Bayesian Probability:
&quot;동전을 던지기 전에 앞면이 나올 확률에 대해 어떤 사전 신념을 가지고 있다면, 던진 결과를 통해 그 신념을 갱신한다. 만약 동전을 여러 번 던져서 앞면이 자주 나온다면, 앞면이 나올 확률을 더 높게 갱신한다.&quot;</p>
<h4 id="significance-of-bayesian-probabilty">Significance of Bayesian Probabilty:</h4>
<p>어떤 사건을 여러번 시행하기 어렵다면 베이지안과 같은 시선으로 바라보는 것이 합리적임.</p>
<p>사전 지식을 활용해 우리가 경험적으로 얻기 힘든 사건에 대해 확률을 추정하는 것이 필요.</p>
<hr>
<h3 id="bayes-theorem">Bayes&#39; theorem</h3>
<ul>
<li>사건 ​θ를 원인, 사건 X를 결과 라고 생각</li>
<li>사전 확률 P(θ) : 결과가 나타나기 전에 결정되어 있는 원인(사건 θ)의 확률</li>
<li>우도 확률 P(X|θ) : 원인(사건 θ)가 발생하였다는 가정 하에 결과(사건 X)가 발생할 확률</li>
<li>사후 확률 P(θ|X) : 결과(사건 X)가 발생하였다는 가정 하에 원인(사건 θ)가 발생했을 확률
<img src="https://velog.velcdn.com/images/yenoh_j/post/de739bb8-6829-414b-ab88-335a35b6607d/image.png" alt="">
단순한 조건부 확률을 활용한 계산 식</li>
</ul>
<p>예를 들어, 질병 검사에서 양성 반응이 나온 사건을 +, 실제 질병에 걸린 사건을 D로 정의하면,</p>
<ul>
<li>관심 있는 사건 : 질병 검사의 양성 적중률 = P(D|+)</li>
<li>발병률 : P(D) = 0.01</li>
<li>병에 걸린 사람이 양성 : P(+|D) = 0.99</li>
<li>병에 걸리지 않은 사람이 양성 : P(+|D^c) = 0.10
<img src="https://velog.velcdn.com/images/yenoh_j/post/d106084f-739a-4c96-8f6e-3b2c157feef3/image.png" alt="">
→ 질병 검사의 양성 적중률은 9.1%</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>