<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>aurora.log</title>
        <link>https://velog.io/</link>
        <description>개발에 애정을 쏟는 연구자입니다</description>
        <lastBuildDate>Mon, 26 Jan 2026 00:21:01 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. aurora.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/panda_love" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[이미지 생성에서 Diffusion 모델의 활용과 장점]]></title>
            <link>https://velog.io/@panda_love/%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%83%9D%EC%84%B1%EC%97%90%EC%84%9C-Diffusion-%EB%AA%A8%EB%8D%B8%EC%9D%98-%ED%99%9C%EC%9A%A9%EA%B3%BC-%EC%9E%A5%EC%A0%90</link>
            <guid>https://velog.io/@panda_love/%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%83%9D%EC%84%B1%EC%97%90%EC%84%9C-Diffusion-%EB%AA%A8%EB%8D%B8%EC%9D%98-%ED%99%9C%EC%9A%A9%EA%B3%BC-%EC%9E%A5%EC%A0%90</guid>
            <pubDate>Mon, 26 Jan 2026 00:21:01 GMT</pubDate>
            <description><![CDATA[<h2 id="목차">목차</h2>
<ul>
<li><a href="#1-diffusion-%EB%AA%A8%EB%8D%B8%EC%9D%B4%EB%9E%80">1. Diffusion 모델이란</a><ul>
<li><a href="#%EC%B0%B8%EA%B3%A0--%EC%9A%A9%EC%96%B4-%EC%84%A4%EB%AA%85">참고 : 용어 설명</a></li>
</ul>
</li>
<li><a href="#2-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%83%9D%EC%84%B1%EC%97%90%EC%84%9C%EC%9D%98-%ED%99%9C%EC%9A%A9-%EB%B0%A9%EC%8B%9D">2. 이미지 생성에서의 활용 방식</a><ul>
<li><a href="#1-forward-process-%ED%99%95%EC%82%B0-%EA%B3%BC%EC%A0%95">(1) Forward Process (확산 과정)</a></li>
<li><a href="#2-reverse-process-%EC%97%AD%ED%99%95%EC%82%B0--%EC%83%9D%EC%84%B1-%EA%B3%BC%EC%A0%95">(2) Reverse Process (역확산 / 생성 과정)</a></li>
</ul>
</li>
<li><a href="#3-diffusion-%EB%AA%A8%EB%8D%B8%EC%9D%B4-%EC%9E%98-%EC%9E%91%EB%8F%99%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0">3. Diffusion 모델이 잘 작동하는 이유</a><ul>
<li><a href="#1-%ED%95%99%EC%8A%B5-%EB%AA%A9%ED%91%9C%EA%B0%80-%EB%8B%A8%EC%88%9C%ED%95%98%EB%8B%A4">(1) 학습 목표가 단순하다</a></li>
<li><a href="#2-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%ED%8F%AC%EB%A5%BC-%EC%A7%81%EC%A0%91-%EA%B7%BC%EC%82%AC%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94%EB%8B%A4">(2) 데이터 분포를 직접 근사하지 않는다</a></li>
<li><a href="#3-mode-collapse-%EB%AC%B8%EC%A0%9C%EA%B0%80-%EA%B1%B0%EC%9D%98-%EC%97%86%EB%8B%A4">(3) Mode Collapse 문제가 거의 없다</a></li>
</ul>
</li>
<li><a href="#4-diffusion-%EB%AA%A8%EB%8D%B8%EC%9D%98-%EC%A3%BC%EC%9A%94-%EC%9E%A5%EC%A0%90">4. Diffusion 모델의 주요 장점</a><ul>
<li><a href="#1-%EB%86%92%EC%9D%80-%EC%9D%B4%EB%AF%B8%EC%A7%80-%ED%92%88%EC%A7%88">(1) 높은 이미지 품질</a></li>
<li><a href="#2-%ED%95%99%EC%8A%B5-%EC%95%88%EC%A0%95%EC%84%B1">(2) 학습 안정성</a></li>
<li><a href="#3-%EB%8B%A4%EC%96%91%ED%95%9C-%EC%A1%B0%EA%B1%B4%EB%B6%80-%EC%83%9D%EC%84%B1-%EA%B0%80%EB%8A%A5">(3) 다양한 조건부 생성 가능</a></li>
<li><a href="#4-%EC%9D%B4%EB%A1%A0%EC%A0%81-%ED%95%B4%EC%84%9D%EC%9D%B4-%EB%AA%85%ED%99%95%ED%95%A8">(4) 이론적 해석이 명확함</a></li>
</ul>
</li>
<li><a href="#5-%EB%8B%A8%EC%A0%90">5. 단점</a></li>
<li><a href="#6-gan-%EB%B0%8F-vae%EC%99%80%EC%9D%98-%EB%B9%84%EA%B5%90-%EC%9A%94%EC%95%BD">6. GAN 및 VAE와의 비교 요약</a></li>
<li><a href="#7-%ED%95%B5%EC%8B%AC-%EC%A0%95%EB%A6%AC">7. 핵심 정리</a></li>
</ul>
<hr>
<h2 id="1-diffusion-모델이란">1. Diffusion 모델이란?</h2>
<blockquote>
<p>데이터에 점진적으로 노이즈(noise)를 추가했다가, 그 노이즈를 단계적으로 제거하면서 원본 데이터를 복원하도록 학습하는 생성 모델</p>
</blockquote>
<p>완전히 무작위한 노이즈에서 시작해, 조금씩 노이즈를 제거하면 결국 실제 데이터가 된다는 내용이다.</p>
<h3 id="참고--용어-설명">참고 : 용어 설명</h3>
<ul>
<li><strong>Diffusion(확산)</strong>: 시간이 지남에 따라 정보가 점점 퍼지고 흐려지는 과정</li>
<li><strong>Noise(노이즈)</strong>: 이미지에 인위적으로 추가한 무작위 잡음</li>
<li><strong>Step(단계)</strong>: 노이즈를 추가·제거하는 작은 시간 단위</li>
</ul>
<br>

<h2 id="2-이미지-생성에서의-활용-방식">2. 이미지 생성에서의 활용 방식</h2>
<p>Diffusion 모델은 <strong>두 개의 과정</strong>으로 구성된다.</p>
<h3 id="1-forward-process-확산-과정">(1) Forward Process (확산 과정)</h3>
<p>실제 이미지에 여러 단계에 걸쳐 점점 더 많은 노이즈를 추가한다.</p>
<p>최종적으로 거의 완전한 가우시안 노이즈가 된다.</p>
<p>원본 이미지를 조금씩 망가뜨려서 마지막에는 아무 의미 없는 노이즈로 만드는 것이다.</p>
<h3 id="2-reverse-process-역확산--생성-과정">(2) Reverse Process (역확산 / 생성 과정)</h3>
<p>신경망은 노이즈가 섞인 이미지 로부터 <strong>추가된 노이즈를 예측하고 제거</strong>하는 법을 학습한다.</p>
<p>그 과정을 반복하면 순수 노이즈에서 실제 이미지가 생성된다.</p>
<p>흐릿한 이미지에서, “이 단계에서 제거해야 할 잡음이 무엇인지”를 맞히는 모델이 되는 것이다.</p>
<br>

<h2 id="3-diffusion-모델이-잘-작동하는-이유">3. Diffusion 모델이 잘 작동하는 이유</h2>
<h3 id="1-학습-목표가-단순하다">(1) 학습 목표가 단순하다</h3>
<ul>
<li>GAN: 두 네트워크 간 경쟁 → 불안정</li>
<li>Diffusion: <strong>노이즈 예측이라는 명확한 회귀 문제</strong></li>
</ul>
<p>“이 이미지에 섞인 노이즈가 무엇인지 맞혀라” 라는 단순하고 안정적인 목표를 가진다.</p>
<h3 id="2-데이터-분포를-직접-근사하지-않는다">(2) 데이터 분포를 직접 근사하지 않는다</h3>
<p>Diffusion은 데이터 분포를 한 번에 맞히지 않고, <strong>아주 작은 단계들의 조건부 분포</strong>를 차례대로 학습한다.</p>
<p>따라서 고차원 데이터에서도 안정적으로 학습 가능하다.</p>
<h3 id="3-mode-collapse-문제가-거의-없다">(3) Mode Collapse 문제가 거의 없다</h3>
<p>Diffusion 모델은 노이즈에서 시작해 다양한 경로를 거치므로 <strong>출력 다양성이 매우 높다</strong>.</p>
<p><strong>참고 : Mode Collapse</strong>: 생성 모델이 소수의 결과만 반복 생성하는 현상 (GAN의 대표적 문제)</p>
<br>

<h2 id="4-diffusion-모델의-주요-장점">4. Diffusion 모델의 주요 장점</h2>
<h3 id="1-높은-이미지-품질">(1) 높은 이미지 품질</h3>
<ul>
<li>디테일, 질감, 구조 표현이 매우 뛰어남</li>
<li>현재 최고 수준의 이미지 생성 성능</li>
</ul>
<h3 id="2-학습-안정성">(2) 학습 안정성</h3>
<ul>
<li>GAN처럼 미묘한 균형 조절 필요 없음</li>
<li>수렴이 비교적 예측 가능</li>
</ul>
<h3 id="3-다양한-조건부-생성-가능">(3) 다양한 조건부 생성 가능</h3>
<ul>
<li>Text-to-Image</li>
<li>Image-to-Image</li>
<li>Inpainting / Outpainting</li>
<li>Super-resolution</li>
</ul>
<p>→ 조건을 추가하기 쉬운 구조</p>
<h3 id="4-이론적-해석이-명확함">(4) 이론적 해석이 명확함</h3>
<ul>
<li>확률적 모델 기반</li>
<li>변분 추론(Variational Inference) 관점에서 설명 가능</li>
</ul>
<br>

<h2 id="5-단점">5. 단점</h2>
<ul>
<li>샘플링 속도가 느림. 수십~수백 step 필요</li>
<li>계산 비용 큼</li>
</ul>
<p>※ 최근에는 DDIM, Latent Diffusion, Sampling Acceleration 기법으로 많이 개선됨</p>
<br>

<h2 id="6-gan-및-vae와의-비교-요약">6. GAN 및 VAE와의 비교 요약</h2>
<table>
<thead>
<tr>
<th align="left">항목</th>
<th align="left">GAN</th>
<th align="left">VAE</th>
<th align="left">Diffusion</th>
</tr>
</thead>
<tbody><tr>
<td align="left">학습 안정성</td>
<td align="left">낮음</td>
<td align="left">높음</td>
<td align="left"><strong>매우 높음</strong></td>
</tr>
<tr>
<td align="left">이미지 품질</td>
<td align="left">높음</td>
<td align="left">낮음</td>
<td align="left"><strong>매우 높음</strong></td>
</tr>
<tr>
<td align="left">Mode Collapse</td>
<td align="left">있음</td>
<td align="left">없음</td>
<td align="left">거의 없음</td>
</tr>
<tr>
<td align="left">샘플링 속도</td>
<td align="left">빠름</td>
<td align="left">빠름</td>
<td align="left">느림</td>
</tr>
<tr>
<td align="left">이론적 기반</td>
<td align="left">약함</td>
<td align="left">강함</td>
<td align="left">강함</td>
</tr>
</tbody></table>
<br>

<h2 id="7-핵심-정리">7. 핵심 정리</h2>
<ul>
<li>Diffusion 모델은 <strong>노이즈를 제거하는 과정을 학습하는 생성 모델</strong></li>
<li>순수 노이즈에서 시작해 단계적으로 이미지를 생성</li>
<li>학습이 안정적이고 결과 품질이 매우 높음</li>
<li>현재 이미지 생성 분야의 표준 모델 구조</li>
</ul>
<p>Diffusion 모델은 노이즈에서 시작해 점점 이미지를 복원하는 방식으로,
안정적이면서도 고품질의 이미지를 생성하는 모델이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[GAN에서 생성자(Generator)와 판별자(Discriminator)의 역할]]></title>
            <link>https://velog.io/@panda_love/GAN%EC%97%90%EC%84%9C-%EC%83%9D%EC%84%B1%EC%9E%90Generator%EC%99%80-%ED%8C%90%EB%B3%84%EC%9E%90Discriminator%EC%9D%98-%EC%97%AD%ED%95%A0</link>
            <guid>https://velog.io/@panda_love/GAN%EC%97%90%EC%84%9C-%EC%83%9D%EC%84%B1%EC%9E%90Generator%EC%99%80-%ED%8C%90%EB%B3%84%EC%9E%90Discriminator%EC%9D%98-%EC%97%AD%ED%95%A0</guid>
            <pubDate>Mon, 26 Jan 2026 00:15:27 GMT</pubDate>
            <description><![CDATA[<h1 id="목차">목차</h1>
<ul>
<li><a href="#1-gan-generative-adversarial-network">1. GAN (Generative Adversarial Network)</a></li>
<li><a href="#2-%EC%83%9D%EC%84%B1%EC%9E%90generator%EC%9D%98-%EC%97%AD%ED%95%A0">2. 생성자(Generator)의 역할</a></li>
<li><a href="#3-%ED%8C%90%EB%B3%84%EC%9E%90discriminator%EC%9D%98-%EC%97%AD%ED%95%A0">3. 판별자(Discriminator)의 역할</a></li>
<li><a href="#4-generator%EC%99%80-discriminator%EC%9D%98-%EA%B4%80%EA%B3%84-%EC%A0%81%EB%8C%80%EC%A0%81-%ED%95%99%EC%8A%B5">4. Generator와 Discriminator의 관계 (적대적 학습)</a><ul>
<li><a href="#%ED%95%99%EC%8A%B5-%ED%9D%90%EB%A6%84">학습 흐름</a></li>
</ul>
</li>
<li><a href="#5-%ED%95%B5%EC%8B%AC-%EC%A0%95%EB%A6%AC">5. 핵심 정리</a></li>
</ul>
<hr>
<h1 id="1-gan-generative-adversarial-network">1. GAN (Generative Adversarial Network)</h1>
<blockquote>
<p>두 개의 신경망이 서로 경쟁(adversarial)하면서 학습하는 생성 모델</p>
</blockquote>
<p>Generator (생성자)와 Discriminator (판별자), 이 두 네트워크가 게임 이론적 구조로 함께 학습된다.</p>
<h2 id="2-생성자generator의-역할">2. 생성자(Generator)의 역할</h2>
<blockquote>
<p>Generator(G)는 무작위 노이즈 벡터 zzz를 입력받아 실제 데이터 분포와 유사한 가짜 데이터(fake data)를 생성하는 모델.</p>
</blockquote>
<p>진짜처럼 보이는 가짜를 만드는 역할로써, 처음에는 엉성한 이미지를 생성하지만 판별자에게로 인해 점점 개선된다.</p>
<p>Generator의 학습 목표는 판별자가 생성 결과를 진짜라고 착각하게 만드는 것이다.</p>
<h2 id="3-판별자discriminator의-역할">3. 판별자(Discriminator)의 역할</h2>
<blockquote>
<p>Discriminator(D)는 입력된 데이터가 진짜(real)인지, 생성자가 만든 가짜(fake)인지를 판별하는 이진 분류기.</p>
</blockquote>
<p>출력 값이 1에 가까울수록 진짜, 0에 가까울수록 가짜.</p>
<p>이 데이터가 진짜인지 가짜인지 감별하는 역할로써, 진짜 데이터와 가짜 데이터를 모두 보고 학습하고 점점 더 날카로운 감별 능력을 갖게 된다.</p>
<p>Discriminator의 학습 목표는 진짜와 가짜를 정확히 구분하는 것이다.</p>
<h2 id="4-generator와-discriminator의-관계-적대적-학습">4. Generator와 Discriminator의 관계 (적대적 학습)</h2>
<p>GAN의 핵심은 <strong>두 네트워크의 경쟁 구조</strong>다.</p>
<h3 id="학습-흐름">학습 흐름</h3>
<ol>
<li>Generator가 가짜 데이터를 생성</li>
<li>Discriminator가 진짜/가짜 판별</li>
<li>판별 결과를 바탕으로<ul>
<li>Discriminator는 더 잘 구분하도록 학습</li>
<li>Generator는 더 잘 속이도록 학습</li>
</ul>
</li>
</ol>
<p>이 과정이 반복된다.</p>
<p>판별 정확도 ≈ 50%라면 이는 Generator가 실제 데이터 분포를 잘 학습했다는 의미이다.</p>
<h2 id="5-핵심-정리">5. 핵심 정리</h2>
<ul>
<li>Generator는 <strong>가짜 데이터를 생성</strong></li>
<li>Discriminator는 <strong>진짜/가짜를 판별</strong></li>
<li>두 모델은 서로 경쟁하며 함께 발전</li>
<li>Generator는 “속이기”, Discriminator는 “구분하기”가 목표</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Fully Convolutional Networks(FCN)의 주요 특징과 기존 CNN 기반 분류 모델과의 차이점]]></title>
            <link>https://velog.io/@panda_love/Fully-Convolutional-NetworksFCN%EC%9D%98-%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EA%B8%B0%EC%A1%B4-CNN-%EA%B8%B0%EB%B0%98-%EB%B6%84%EB%A5%98-%EB%AA%A8%EB%8D%B8%EA%B3%BC%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90</link>
            <guid>https://velog.io/@panda_love/Fully-Convolutional-NetworksFCN%EC%9D%98-%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EA%B8%B0%EC%A1%B4-CNN-%EA%B8%B0%EB%B0%98-%EB%B6%84%EB%A5%98-%EB%AA%A8%EB%8D%B8%EA%B3%BC%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90</guid>
            <pubDate>Mon, 26 Jan 2026 00:01:52 GMT</pubDate>
            <description><![CDATA[<h2 id="목차">목차</h2>
<ul>
<li><a href="#1-fully-convolutional-networkfcn%EC%9D%B4%EB%9E%80">1. Fully Convolutional Network(FCN)란?</a></li>
<li><a href="#2-fcn%EC%9D%98-%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95">2. FCN의 주요 특징</a><ul>
<li><a href="#21-fully-connected-layer-%EC%A0%9C%EA%B1%B0">2.1 Fully Connected Layer 제거</a></li>
<li><a href="#22-%EC%9E%85%EB%A0%A5-%ED%81%AC%EA%B8%B0%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9C%A0%EC%97%B0%EC%84%B1">2.2 입력 크기에 대한 유연성</a></li>
<li><a href="#23-dense-prediction-%EC%88%98%ED%96%89">2.3 Dense Prediction 수행</a></li>
<li><a href="#24-upsampling%EC%9D%84-%ED%86%B5%ED%95%9C-%ED%95%B4%EC%83%81%EB%8F%84-%EB%B3%B5%EC%9B%90">2.4 Upsampling을 통한 해상도 복원</a></li>
<li><a href="#25-skip-connection-%EC%82%AC%EC%9A%A9">2.5 Skip Connection 사용</a></li>
</ul>
</li>
<li><a href="#3-%EA%B8%B0%EC%A1%B4-cnn-%EA%B8%B0%EB%B0%98-%EB%B6%84%EB%A5%98-%EB%AA%A8%EB%8D%B8%EA%B3%BC%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90">3. 기존 CNN 기반 분류 모델과의 차이점</a><ul>
<li><a href="#%EA%B5%AC%EC%A1%B0%EC%A0%81-%EC%B0%A8%EC%9D%B4">구조적 차이</a></li>
<li><a href="#%EC%B6%9C%EB%A0%A5-%EA%B4%80%EC%A0%90-%EC%B0%A8%EC%9D%B4">출력 관점 차이</a></li>
<li><a href="#%EC%9A%A9%EB%8F%84-%EC%B0%A8%EC%9D%B4">용도 차이</a></li>
</ul>
</li>
</ul>
<hr>
<h2 id="1-fully-convolutional-networkfcn란">1. Fully Convolutional Network(FCN)란?</h2>
<blockquote>
<p>이미지 분류에 사용되던 CNN 구조를 <strong>픽셀 단위 예측이 가능하도록 변형한 네트워크.</strong>
네트워크 전체가 Convolution 연산으로만 구성되어 있다.</p>
</blockquote>
<p>기존 CNN에서 사용되던 <strong>Fully Connected Layer(완전연결층)를 제거</strong>하고, 그 자리를 <strong>Convolution Layer로 대체</strong>한 구조이다.</p>
<p>이로 인해 FCN은 <strong>입력 이미지 크기에 제약 없이</strong> 출력이 <strong>공간 구조를 유지한 채 생성</strong>될 수 있다.</p>
<p>참고 : FCN은 이후 등장한 U-Net, DeepLab 등 모든 Segmentation 모델의 기반이 된다.</p>
<h2 id="2-fcn의-주요-특징">2. FCN의 주요 특징</h2>
<h3 id="21-fully-connected-layer-제거">2.1 Fully Connected Layer 제거</h3>
<p>기존 CNN 분류 모델의 마지막 단계에 있는 Fully Connected Layer는 입력 이미지의 공간 정보를 모두 벡터 형태로 압축(flatten)하는데,</p>
<p>FCN은 이 레이어를 제거하고 이를 <strong>1×1 Convolution</strong>으로 대체한다.</p>
<p>Fully Connected Layer는 위치 정보를 버리는데,</p>
<p>1×1 Convolution은 각 위치에서 분류를 수행하는 것이다.</p>
<h3 id="22-입력-크기에-대한-유연성">2.2 입력 크기에 대한 유연성</h3>
<p>FCN은 고정 크기 입력을 요구하지 않는다.</p>
<p>모든 연산이 convolution이기 때문에, 임의 크기의 입력 이미지에 대해 <strong>동일한 구조로 추론 가능</strong>하다.</p>
<p>이미지 크기가 달라도 네트워크 구조를 바꿀 필요가 없다는 것이다.</p>
<h3 id="23-dense-prediction-수행">2.3 Dense Prediction 수행</h3>
<p>FCN은 하나의 이미지에 대해 조밀한(dense) 예측, 즉 모든 위치에 대한 출력을 생성한다.</p>
<p>이미지 1장이 결과 1개 (Classification)가 아니라, 픽셀 수만큼 결과(FCN)가 나오는 것이다.</p>
<h3 id="24-upsampling을-통한-해상도-복원">2.4 Upsampling을 통한 해상도 복원</h3>
<p>Pooling과 stride로 인해 줄어든 feature map 해상도를</p>
<p>Upsampling(Deconvolution / Transposed Convolution)으로 복원한다.</p>
<p>앞부분에서 이미지를 작게 만들고, 뒷부분에서 다시 크게 만들어서 원래 이미지 크기의 출력 생성하는 것이다.</p>
<h3 id="25-skip-connection-사용">2.5 Skip Connection 사용</h3>
<p>FCN은 서로 다른 해상도의 feature map을 결합하여 <strong>저수준 위치 정보 + 고수준 의미 정보</strong>를 함께 활용한다.</p>
<p>깊은 층에서는 이게 뭔지를 보고, 얕은 층에서는 어디에 있는지를 보아 이 둘을 합쳐 더 정확한 분할 수행이 가능하다.</p>
<h2 id="3-기존-cnn-기반-분류-모델과의-차이점">3. 기존 CNN 기반 분류 모델과의 차이점</h2>
<h3 id="구조적-차이">구조적 차이</h3>
<table>
<thead>
<tr>
<th>구분</th>
<th>CNN 분류 모델</th>
<th>FCN</th>
</tr>
</thead>
<tbody><tr>
<td>마지막 레이어</td>
<td>Fully Connected</td>
<td>Convolution</td>
</tr>
<tr>
<td>출력 형태</td>
<td>클래스 벡터</td>
<td>공간적 feature map</td>
</tr>
<tr>
<td>입력 크기</td>
<td>고정</td>
<td>가변</td>
</tr>
<tr>
<td>공간 정보</td>
<td>소실</td>
<td>유지</td>
</tr>
<tr>
<td>목적</td>
<td>이미지 단위 분류</td>
<td>픽셀 단위 분류</td>
</tr>
</tbody></table>
<h3 id="출력-관점-차이">출력 관점 차이</h3>
<ul>
<li>CNN 분류 모델 : 이 이미지가 무엇인가</li>
<li>FCN : 이 위치의 픽셀은 무엇인가</li>
</ul>
<h3 id="용도-차이">용도 차이</h3>
<ul>
<li>CNN 분류 모델<ul>
<li>이미지 분류</li>
<li>이진 판별</li>
<li>장면 인식</li>
</ul>
</li>
<li>FCN<ul>
<li>Semantic Segmentation</li>
<li>의료 영상 분할</li>
<li>문서 영역 분리</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Semantic Segmentation과 이미지 분류(Classification)의 차이]]></title>
            <link>https://velog.io/@panda_love/week9-1.-Semantic-Segmentation%EA%B3%BC-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%B6%84%EB%A5%98Classification%EC%9D%98-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@panda_love/week9-1.-Semantic-Segmentation%EA%B3%BC-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%B6%84%EB%A5%98Classification%EC%9D%98-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Sun, 25 Jan 2026 23:49:24 GMT</pubDate>
            <description><![CDATA[<h1 id="목차">목차</h1>
<ul>
<li><a href="#1-semantic-segmentation%EC%9D%B4%EB%9E%80">1. Semantic Segmentation이란?</a></li>
<li><a href="#2-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%B6%84%EB%A5%98classification%EC%99%80%EC%9D%98-%EC%B0%A8%EC%9D%B4">2. 이미지 분류(Classification)와의 차이</a><ul>
<li><a href="#%ED%95%B5%EC%8B%AC-%EC%B0%A8%EC%9D%B4-%EB%B9%84%EA%B5%90">핵심 차이 비교</a></li>
<li><a href="#%EA%B3%B5%EA%B0%84-%EC%A0%95%EB%B3%B4-%EC%B0%A8%EC%9D%B4-%EB%B3%B4%EC%B6%A9%EC%84%A4%EB%AA%85">공간 정보 차이 보충설명</a></li>
</ul>
</li>
<li><a href="#3-%ED%95%B5%EC%8B%AC-%EC%A0%95%EB%A6%AC">3. 핵심 정리</a></li>
</ul>
<hr>
<h1 id="1-semantic-segmentation이란">1. Semantic Segmentation이란?</h1>
<blockquote>
<p>이미지에 포함된 모든 픽셀에 대해 각 픽셀이 어떤 의미적 클래스(semantic class)에 속하는지를 예측하는 것</p>
</blockquote>
<ul>
<li>이미지 전체를 하나의 단위로 판단하는 것이 아니라, 이미지를 구성하는 <strong>가장 작은 단위인 픽셀 수준에서 분류를 수행.</strong></li>
<li>입력: 이미지 1장 <code>(H × W × C)</code></li>
<li>출력: 분할 마스크 <code>(H × W)</code><ul>
<li>각 픽셀 값은 클래스 ID를 의미</li>
</ul>
</li>
<li>예)
0 → 배경
1 → 도로
2 → 자동차
3 → 사람</li>
</ul>
<h1 id="2-이미지-분류classification와의-차이">2. 이미지 분류(Classification)와의 차이</h1>
<p>이미지 분류(Image Classification)는 이미지 전체를 하나의 의미 단위로 보고 <strong>하나의 클래스만 예측한다.</strong></p>
<p>예를 들어, “이 이미지는 고양이다”, “이 이미지는 자동차이다” 이렇게만 예측한다.</p>
<h3 id="핵심-차이-비교">핵심 차이 비교</h3>
<table>
<thead>
<tr>
<th>구분</th>
<th>이미지 분류</th>
<th>Semantic Segmentation</th>
</tr>
</thead>
<tbody><tr>
<td>예측 단위</td>
<td>이미지 전체</td>
<td>픽셀 단위</td>
</tr>
<tr>
<td>출력 형태</td>
<td>클래스 벡터</td>
<td>이미지 크기의 마스크</td>
</tr>
<tr>
<td>위치 정보</td>
<td>알 수 없음</td>
<td>정확히 알 수 있음</td>
</tr>
<tr>
<td>공간 정보 활용</td>
<td>거의 없음</td>
<td><strong>필수적</strong></td>
</tr>
<tr>
<td>난이도</td>
<td>낮음</td>
<td>높음</td>
</tr>
<tr>
<td>라벨링 비용</td>
<td>낮음</td>
<td>매우 높음</td>
</tr>
</tbody></table>
<h3 id="공간-정보-차이-보충설명">공간 정보 차이 보충설명</h3>
<p>이미지 분류는 이미지에 무엇이 있는지만 중요하고, 어디에 있는지는 중요하지 않다.</p>
<p>Semantic Segmentation는 무엇인지, 어디에 있는지, 어떤 형태인지까지 필요하다.</p>
<p>이 때문에 Segmentation은 객체의 경계(boundary)와 픽셀 간 관계를 유지하는 모델 구조가 필요하다.</p>
<h2 id="3-핵심-정리">3. 핵심 정리</h2>
<ul>
<li>Semantic Segmentation은 <strong>픽셀 단위 분류 문제</strong></li>
<li>이미지 분류는 <strong>이미지 단위 판단 문제</strong></li>
<li>가장 큰 차이는 <strong>공간 정보(위치·형태)를 유지하느냐의 여부</strong></li>
<li>Segmentation은 출력 차원이 크고, 라벨링 비용과 난이도가 높음</li>
<li>위치와 형태가 중요한 문제에서 Segmentation이 사용된다</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[객체 인식에서 mAP(mean Average Precision)이 활용되는 법]]></title>
            <link>https://velog.io/@panda_love/%EA%B0%9D%EC%B2%B4-%EC%9D%B8%EC%8B%9D%EC%97%90%EC%84%9C-mAPmean-Average-Precision%EC%9D%B4-%ED%99%9C%EC%9A%A9%EB%90%98%EB%8A%94-%EB%B2%95</link>
            <guid>https://velog.io/@panda_love/%EA%B0%9D%EC%B2%B4-%EC%9D%B8%EC%8B%9D%EC%97%90%EC%84%9C-mAPmean-Average-Precision%EC%9D%B4-%ED%99%9C%EC%9A%A9%EB%90%98%EB%8A%94-%EB%B2%95</guid>
            <pubDate>Sun, 18 Jan 2026 16:41:16 GMT</pubDate>
            <description><![CDATA[<h1 id="1-map-mean-average-precision란">1. mAP <strong>(mean Average Precision)</strong>란?</h1>
<blockquote>
<p>객체 인식 모델의 성능을 평가하기 위한 대표적인 지표</p>
</blockquote>
<ul>
<li>객체 인식 모델이 “무엇을, 어디서, 얼마나 잘” 찾았는지를 하나의 점수로 나타낸 지표</li>
</ul>
<p>객체 인식에서는 단순히 정답 / 오답만 있는 것이 아니라,</p>
<ul>
<li>물체의 <strong>종류를 맞췄는지</strong></li>
<li>물체의 <strong>위치를 정확히 찾았는지</strong></li>
<li>괜히 없는 물체를 <strong>잘못 찾지는 않았는지</strong></li>
</ul>
<p>까지 함께 평가해야 하기 때문에 이러한 지표가 필요하다.</p>
<p>mAP는 이 모든 요소를 종합해서 평가한다.</p>
<p>모든 클래스 AP의 평균을 내는데, 자세한 건 밑에 기록하였다.</p>
<hr>
<h1 id="2-언제-어디서-왜-쓰이나">2. 언제, 어디서, 왜 쓰이나?</h1>
<h2 id="2-1-언제-쓰이나">2-1. 언제 쓰이나?</h2>
<p>객체 인식(Object Detection) 문제에서 모델 성능을 평가할 때 사용한다.</p>
<p>객체 인식은 단순 분류와 달리,<br>“이 이미지에 고양이가 있다” 가 아니라,<br>“이 위치에 고양이가 있다”</p>
<p>까지 맞춰야 하기 때문에 일반적인 정확도(accuracy) 로는 위치 정보를 반영하지 못하기 때문에 부족하여,</p>
<p>모델 학습 후 성능을 정량적으로 평가할 때 mAP를 사용한다.</p>
<hr>
<h2 id="2-2-어디서-쓰이나">2-2. 어디서 쓰이나?</h2>
<ul>
<li>객체 인식 분야의 <strong>사실상 표준 평가 지표</strong></li>
<li>거의 모든 객체 인식 논문과 실험 결과에 등장</li>
</ul>
<p>예: YOLO, Faster R-CNN, SSD, COCO, PASCAL VOC 데이터셋 등</p>
<hr>
<h2 id="2-3-왜-쓰이나">2-3. 왜 쓰이나?</h2>
<p>객체 인식의 상황은 다양하다.</p>
<table>
<thead>
<tr>
<th>상황</th>
<th>설명</th>
</tr>
</thead>
<tbody><tr>
<td>잘 맞춘 경우</td>
<td>물체 종류도 맞고, 위치도 정확</td>
</tr>
<tr>
<td>반만 맞춘 경우</td>
<td>물체 종류는 맞지만 위치가 부정확</td>
</tr>
<tr>
<td>잘못 찾은 경우</td>
<td>없는 물체를 있다고 예측</td>
</tr>
<tr>
<td>놓친 경우</td>
<td>실제 물체가 있는데 못 찾음</td>
</tr>
</tbody></table>
<p>mAP는 이런 경우들을 모두 반영해서 점수화하기 때문에 객체 인식 모델 비교에 적합하다.</p>
<hr>
<h1 id="3-객체-인식에서는-어떻게-활용되나">3. 객체 인식에서는 어떻게 활용되나?</h1>
<h2 id="3-1-iou를-이용한-위치-정확도-판단">3-1. IoU를 이용한 위치 정확도 판단</h2>
<h3 id="iou-intersection-over-union란">IoU (Intersection over Union)란?</h3>
<blockquote>
<p>예측한 박스와 실제 정답 박스가 <strong>얼마나 겹치는지</strong>를 0~1 사이 값으로 나타낸 지표</p>
</blockquote>
<p>쉽게 말해,<br>1에 가까울수록 위치를 거의 정확히 맞춘 것이고,<br>0에 가까울수록 엉뚱한 위치인 것이다.</p>
<hr>
<h3 id="iou-임계값-threshold">IoU 임계값 (threshold)</h3>
<blockquote>
<p>이 정도로 겹치면 맞았다고 할까? 를 정하는 기준</p>
</blockquote>
<ul>
<li><p><strong><a href="mailto:mAP@0.5">mAP@0.5</a></strong></p>
<ul>
<li>IoU가 0.5 이상이면 정답으로 인정</li>
<li>비교적 느슨한 기준</li>
</ul>
</li>
<li><p><strong><a href="mailto:mAP@0.5">mAP@0.5</a>:0.95</strong></p>
<ul>
<li>IoU 0.5부터 0.95까지 여러 기준에서 평가 후 평균</li>
<li>위치까지 매우 엄격하게 평가</li>
<li>COCO 데이터셋의 공식 기준</li>
</ul>
</li>
</ul>
<hr>
<h2 id="3-2-precision과-recall-검출의-질-평가">3-2. Precision과 Recall (검출의 질 평가)</h2>
<h3 id="precision-정밀도">Precision (정밀도)</h3>
<blockquote>
<p>모델이 찾았다고 한 것 중, 진짜 맞은 비율</p>
</blockquote>
<ul>
<li>괜히 없는 물체를 많이 찾으면 Precision이 낮아짐</li>
<li><strong>오검출 (False Positive)</strong> 을 얼마나 줄였는지 보는 지표</li>
</ul>
<hr>
<h3 id="recall-재현율">Recall (재현율)</h3>
<blockquote>
<p>실제 있는 물체 중, 모델이 얼마나 찾아냈는지</p>
</blockquote>
<ul>
<li>물체를 많이 놓치면 Recall이 낮아짐</li>
<li><strong>미검출 (False Negative)</strong> 을 얼마나 줄였는지 보는 지표</li>
</ul>
<hr>
<h3 id="3-3-precisionrecall-곡선과-ap">3-3. Precision–Recall 곡선과 AP</h3>
<ul>
<li>모델은 각 박스에 confidence score(확신도) 를 함께 출력</li>
<li>이 점수를 기준으로 기준을 바꾸면 Precision과 Recall이 달라짐</li>
<li>이를 그래프로 그린 것이 Precision–Recall 곡선</li>
</ul>
<p>이 곡선 아래 면적이 해당 클래스에 대한 AP (Average Precision)인 것이다.</p>
<hr>
<h3 id="3-4-map의-실제-활용">3-4. mAP의 실제 활용</h3>
<ul>
<li><p><strong>모델 비교</strong></p>
<ul>
<li>YOLOv5 vs YOLOv8</li>
<li>Backbone 변경 전/후</li>
</ul>
</li>
<li><p><strong>학습 상태 확인</strong></p>
<ul>
<li>mAP가 계속 증가 → 학습 잘 됨</li>
<li>mAP가 정체/하락 → 과적합 가능성</li>
</ul>
</li>
<li><p><strong>튜닝 기준</strong></p>
<ul>
<li>입력 해상도, 데이터 증강, 하이퍼파라미터 조정 시 기준 지표</li>
</ul>
</li>
</ul>
<hr>
<h2 id="간단-핵심-정리">간단 핵심 정리</h2>
<ul>
<li><strong>mAP :</strong> 객체 인식 모델의 종합 점수</li>
<li><strong>왜 필요?</strong> 무엇을 + 어디를 + 얼마나 정확히 찾았는지 한 번에 보기 위해</li>
<li><strong>어떻게 계산?</strong> 클래스별로 잘 찾았는지(AP)를 구해서 평균을 냄</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[YOLO(You Only Look Once) 모델의 주요 특징과 장점]]></title>
            <link>https://velog.io/@panda_love/YOLOYou-Only-Look-Once-%EB%AA%A8%EB%8D%B8%EC%9D%98-%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%9E%A5%EC%A0%90</link>
            <guid>https://velog.io/@panda_love/YOLOYou-Only-Look-Once-%EB%AA%A8%EB%8D%B8%EC%9D%98-%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%9E%A5%EC%A0%90</guid>
            <pubDate>Sun, 18 Jan 2026 16:38:25 GMT</pubDate>
            <description><![CDATA[<h2 id="yolo란">YOLO란?</h2>
<blockquote>
<p>객체 탐지를 하나의 회귀 문제로 정의하여 수행하는 딥러닝 모델</p>
</blockquote>
<ul>
<li>이미지를 한 번만 신경망에 입력하여 객체의 위치와 클래스를 동시에 예측하는 <strong>단일 단계(Single-Stage) 탐지 모델</strong></li>
</ul>
<br>

<h2 id="주요-특징과-장점">주요 특징과 장점</h2>
<h3 id="1-단일-단계single-stage-구조">1. 단일 단계(Single-Stage) 구조</h3>
<ul>
<li>후보 영역(Region Proposal) 생성 과정이 없음</li>
<li>하나의 네트워크에서 위치, 신뢰도, 클래스를 동시에 예측</li>
</ul>
<p>→ 추론 시간이 짧아져 실시간 처리가 가능해짐</p>
<h3 id="2-grid-기반-예측-방식">2. Grid 기반 예측 방식</h3>
<ul>
<li>입력 이미지를 일정한 격자(Grid)로 분할</li>
<li>각 grid cell이 bounding box, objectness score, class probability를 예측</li>
</ul>
<p>→ 각 grid cell이 담당 영역 내에서 예측하므로, 회귀 범위를 줄여 위치 예측을 안정화하고 출력 구조를 단순하게 만듦.</p>
<h3 id="3-end-to-end-학습">3. End-to-End 학습</h3>
<ul>
<li>객체 위치 예측과 분류를 하나의 손실 함수로 학습</li>
<li>전체 탐지 파이프라인이 하나의 모델로 구성됨</li>
</ul>
<p>→ 모델 전체가 하나의 목적 함수로 최적화되어 학습이 일관됨</p>
<h3 id="4-anchor-box-기반-예측">4. Anchor Box 기반 예측</h3>
<ul>
<li>다양한 크기와 비율의 객체를 탐지하기 위해 Anchor Box 사용</li>
<li>데이터셋 특성에 맞게 anchor를 설계하여 성능 향상</li>
</ul>
<p>→ 박스 예측을 무제한 회귀 문제가 아닌, 기준 박스 보정 문제로 제한하여 일반화 성능을 확보</p>
<h3 id="5-fully-convolutional-network-구조">5. Fully Convolutional Network 구조</h3>
<ul>
<li>고정된 입력 크기 기반의 합성곱 연산 중심 구조</li>
<li>연산 효율이 높아 실시간 처리에 유리</li>
</ul>
<p>→ GPU 병렬화에 유리하고, 고정된 연산 그래프로 인해 추론 속도가 빠름</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[이미지 분류에서 - 전이 학습이란?]]></title>
            <link>https://velog.io/@panda_love/%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%B6%84%EB%A5%98%EC%97%90%EC%84%9C-%EC%A0%84%EC%9D%B4-%ED%95%99%EC%8A%B5%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@panda_love/%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%B6%84%EB%A5%98%EC%97%90%EC%84%9C-%EC%A0%84%EC%9D%B4-%ED%95%99%EC%8A%B5%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Mon, 12 Jan 2026 00:39:55 GMT</pubDate>
            <description><![CDATA[<h2 id="목차">목차</h2>
<ul>
<li><a href="#%EC%A0%84%EC%9D%B4-%ED%95%99%EC%8A%B5%EC%9D%B4%EB%9E%80">전이 학습이란?</a><ul>
<li><a href="#%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%99%9C%EC%9A%A9%ED%95%98%EB%82%98">어떻게 활용하나?</a></li>
<li><a href="#%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%B6%84%EB%A5%98%EC%97%90%EC%84%9C%EC%9D%98-%ED%99%9C%EC%9A%A9">이미지 분류에서의 활용</a></li>
</ul>
</li>
</ul>
<h1 id="전이-학습이란">전이 학습이란?</h1>
<blockquote>
<p>이미 학습된 모델의 지식(가중치, 특징 표현)을 다른 과제에 재사용하는 기법</p>
</blockquote>
<h3 id="어떻게-활용하나">어떻게 활용하나?</h3>
<p>딥러닝 모델의
초기 레이어는 엣지, 코너, 색상 대비 등 저수준 시각 특징을 학습하고
중간 레이어는 텍스처, 패턴, 단순 형태를 학습하고
후반 레이어는 객체의 부분, 클래스에 특화된 고수준 의미 정보를 학습한다.</p>
<p>이 중 전이 학습은 일부 레이어를 조정하고 대부분 학습된 내용을 활용한다.
마지막 레이어만 조정할 수도, 여러 레이어를 조정할 수도 있다.</p>
<h3 id="이미지-분류에서의-활용">이미지 분류에서의 활용</h3>
<p>ImageNet 등 대규모 데이터셋으로 학습된 모델은 일반적인 시각 특징을 충분히 학습했기 때문에, 동물 분류 문제같은 일반적인 이미지 분류 문제는 이러한 특징을 재사용하기에 좋다.</p>
<p>재사용을 하면 학습시간도 단축되고 적은 데이터로도 높은 정확도 확보가 가능해진다.</p>
<p>사전 학습된 모델을 선택하고, 출력 레이어를 새 데이터셋의 클래스 수에 맞도록 교체하고, 특징을 추출하거나 미세 조정 등의 방식으로 이미지 분류 모델에서 활용할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[이미지 데이터를 다룰 때 - 데이터 증강이란?]]></title>
            <link>https://velog.io/@panda_love/%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EB%8B%A4%EB%A3%B0-%EB%95%8C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A6%9D%EA%B0%95%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@panda_love/%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EB%8B%A4%EB%A3%B0-%EB%95%8C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A6%9D%EA%B0%95%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Mon, 12 Jan 2026 00:31:12 GMT</pubDate>
            <description><![CDATA[<h2 id="목차">목차</h2>
<ul>
<li><a href="#%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A6%9D%EA%B0%95%EC%9D%B4%EB%9E%80">데이터 증강이란?</a></li>
<li><a href="#%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%97%90%EC%84%9C-%EC%A3%BC%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%A6%9D%EA%B0%95-%EA%B8%B0%EB%B2%95">이미지 데이터에서 주로 사용하는 증강 기법</a><ul>
<li><a href="#1-%EA%B8%B0%ED%95%98%ED%95%99%EC%A0%81-%EB%B3%80%ED%99%98">1. 기하학적 변환</a></li>
<li><a href="#2-%EC%83%89%EC%83%81%EA%B4%91%ED%95%99%EC%A0%81-%EB%B3%80%ED%99%98">2. 색상·광학적 변환</a></li>
<li><a href="#3-%EB%85%B8%EC%9D%B4%EC%A6%88-%EB%B0%8F-%ED%92%88%EC%A7%88-%EB%B3%80%ED%99%98">3. 노이즈 및 품질 변환</a></li>
<li><a href="#4-%EA%B7%B8-%EC%99%B8-%EA%B3%A0%EA%B8%89-%EC%A6%9D%EA%B0%95-%EA%B8%B0%EB%B2%95%EB%93%A4">4. 그 외 고급 증강 기법들</a></li>
</ul>
</li>
</ul>
<h1 id="데이터-증강이란">데이터 증강이란?</h1>
<blockquote>
<p>기존 데이터를 변형하여 새로운 학습 샘플을 인위적으로 생성하는 기법</p>
</blockquote>
<ul>
<li>모델의 <strong>일반화 성능</strong>을 향상시키고</li>
<li><strong>과적합(overfitting)</strong>을 완화하며</li>
<li>다양한 변형에 대해서도 잘 학습하고 동작하도록 하기 위함이다.</li>
</ul>
<p>이를 통해 다음과 같은 효과를 얻을 수 있다.</p>
<ul>
<li>학습 데이터 부족 문제 완화</li>
<li>과적합 감소</li>
<li>실제와 유사한 데이터 분포 학습 가능</li>
</ul>
<hr>
<h1 id="이미지-데이터에서-주로-사용하는-증강-기법">이미지 데이터에서 주로 사용하는 증강 기법</h1>
<h2 id="1-기하학적-변환">1. 기하학적 변환</h2>
<ul>
<li>회전 (Rotation)</li>
<li>이동 (Translation)</li>
<li>확대, 축소 (Scaling)</li>
<li>뒤집기 (Flip)</li>
<li>자르기 (Crop)</li>
<li>기울이기 (Shear)</li>
</ul>
<p>→ 물체의 위치나 방향이 달라져도 동일한 클래스로 인식해야 하는 문제에 효과적이다.</p>
<hr>
<h2 id="2-색상·광학적-변환">2. 색상·광학적 변환</h2>
<ul>
<li>밝기 조절 (Brightness)</li>
<li>대비 조절 (Contrast)</li>
<li>채도 조절 (Saturation)</li>
<li>색조 변화 (Hue)</li>
<li>그레이스케일 변환 (Grayscale)</li>
</ul>
<hr>
<h2 id="3-노이즈-및-품질-변환">3. 노이즈 및 품질 변환</h2>
<ul>
<li>노이즈 추가</li>
<li>블러(Blur) 적용 등</li>
</ul>
<hr>
<h2 id="4-그-외-고급-증강-기법들">4. 그 외 고급 증강 기법들</h2>
<ul>
<li>두 이미지를 선형 결합</li>
<li>이미지의 일부 영역 가리기</li>
<li>임의 영역을 무작위 값으로 제거</li>
</ul>
<p>등이 있다.</p>
<p>이러한 증강 기법들을 활용하여 이미지 처리 및 모델 성능 개선을 직접 실습해봐야겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[딥러닝 이미지 전처리 : 리사이징(Resizing)과 정규화(Normalization)]]></title>
            <link>https://velog.io/@panda_love/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%A0%84%EC%B2%98%EB%A6%AC-%EB%A6%AC%EC%82%AC%EC%9D%B4%EC%A7%95Resizing%EA%B3%BC-%EC%A0%95%EA%B7%9C%ED%99%94Normalization</link>
            <guid>https://velog.io/@panda_love/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%A0%84%EC%B2%98%EB%A6%AC-%EB%A6%AC%EC%82%AC%EC%9D%B4%EC%A7%95Resizing%EA%B3%BC-%EC%A0%95%EA%B7%9C%ED%99%94Normalization</guid>
            <pubDate>Mon, 12 Jan 2026 00:25:03 GMT</pubDate>
            <description><![CDATA[<h2 id="목차">목차</h2>
<ul>
<li><a href="#%EB%A6%AC%EC%82%AC%EC%9D%B4%EC%A7%95%EC%9D%B4%EB%9E%80">리사이징이란?</a><ul>
<li><a href="#%EC%99%9C-%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94%EA%B0%80">왜 해야하는가?</a></li>
</ul>
</li>
<li><a href="#%EC%A0%95%EA%B7%9C%ED%99%94%EB%9E%80">정규화란?</a><ul>
<li><a href="#%EC%99%9C-%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94%EA%B0%80_1">왜 해야하는가?</a></li>
</ul>
</li>
<li><a href="#%EA%B2%B0%EB%A1%A0">결론</a></li>
</ul>
<h2 id="리사이징이란">리사이징이란?</h2>
<blockquote>
<p>입력 이미지의 가로세로 해상도를 일정한 크기로 변환하는 전처리 과정</p>
</blockquote>
<p>→ 딥러닝 모델이 처리할 수 있는 고정된 입력 형태를 만듦
(이미지 크기를 늘릴 수도, 줄일 수도 있음)</p>
<h3 id="왜-해야하는가">왜 해야하는가?</h3>
<ol>
<li><p>딥러닝 모델(특히 CNN)은 입력 텐서의 크기가 고정되어 있어야 배치 구성이 원활하다.
이미지 크기가 다 다르면 배치 구성도 어렵고 학습도 어렵다.</p>
</li>
<li><p>학습 속도 향상과 자원 효율성 확보를 위함이다.
이미지 해상도가 클수록 연산량과 메모리 사용량이 급격히 증가하기 때문이다.</p>
</li>
<li><p>안정적으로 특징을 추출하기 위함이다.
이미지 크기를 통일해야 동일한 객체나 패턴이 일관된 스케일로 표현된다.</p>
</li>
</ol>
<h2 id="정규화란">정규화란?</h2>
<blockquote>
<p>이미지의 픽셀 값을 일정한 범위나 분포로 변환하는 과정</p>
</blockquote>
<p>보통은 0~1 사이의 값으로 조정(스케일링)한다.</p>
<h3 id="왜-해야하는가-1">왜 해야하는가?</h3>
<ol>
<li><p>픽셀 값의 스케일이 크거나 불균형하면 학습 과정에서 기울기에 불안정해질 수 있다. 정규화를 통해 값의 분포를 균일하게 만들어 학습 안정성을 향상시킬 수 있다.</p>
</li>
<li><p>어떠한 특정 값이 과도한 영향을 미치는 것을 방지할 수 있다. 이렇게 정규화는 성능 유지에도 도움이 된다.</p>
</li>
</ol>
<h2 id="결론">결론</h2>
<p>리사이징과 정규화는 모델이 이미지를 수치적으로, 안정적으로 잘 학습할 수 있게 돕는 전처리 과정이다.</p>
<p>따라서 두 과정은 딥러닝 기반 이미지 모델에서 선택이 아닌 필수라고 할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[오토 인코더란? 언제가 적용되기 적합한 상황일까?]]></title>
            <link>https://velog.io/@panda_love/%EC%98%A4%ED%86%A0-%EC%9D%B8%EC%BD%94%EB%8D%94%EB%9E%80-%EC%96%B8%EC%A0%9C%EA%B0%80-%EC%A0%81%EC%9A%A9%EB%90%98%EA%B8%B0-%EC%A0%81%ED%95%A9%ED%95%9C-%EC%83%81%ED%99%A9%EC%9D%BC%EA%B9%8C</link>
            <guid>https://velog.io/@panda_love/%EC%98%A4%ED%86%A0-%EC%9D%B8%EC%BD%94%EB%8D%94%EB%9E%80-%EC%96%B8%EC%A0%9C%EA%B0%80-%EC%A0%81%EC%9A%A9%EB%90%98%EA%B8%B0-%EC%A0%81%ED%95%A9%ED%95%9C-%EC%83%81%ED%99%A9%EC%9D%BC%EA%B9%8C</guid>
            <pubDate>Wed, 31 Dec 2025 07:43:20 GMT</pubDate>
            <description><![CDATA[<h2 id="목차">목차</h2>
<ul>
<li><a href="#%EC%98%A4%ED%86%A0%EC%9D%B8%EC%BD%94%EB%8D%94%EB%9E%80">오토인코더란?</a></li>
<li><a href="#%EC%98%A4%ED%86%A0%EC%9D%B8%EC%BD%94%EB%8D%94%EC%9D%98-%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C">오토인코더의 구성요소</a><ul>
<li><a href="#%EC%9D%B8%EC%BD%94%EB%8D%94%EC%99%80-%EB%94%94%EC%BD%94%EB%8D%94-%EA%B0%81%EA%B0%81%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90">인코더와 디코더 각각의 차이점</a></li>
</ul>
</li>
<li><a href="#%EC%98%A4%ED%86%A0%EC%9D%B8%EC%BD%94%EB%8D%94%EA%B0%80-%EC%A0%81%EC%9A%A9%EB%90%98%EA%B8%B0-%EC%A0%81%ED%95%A9%ED%95%9C-%EC%83%81%ED%99%A9">오토인코더가 적용되기 적합한 상황</a></li>
</ul>
<h2 id="오토인코더란">오토인코더란?</h2>
<blockquote>
<p><strong>입력 데이터를 그대로 출력으로 복원하도록 학습하는 신경망 모델</strong></p>
</blockquote>
<p>오토인코더는 레이블(정답) 없이 입력 데이터 자체를 학습 신호로 사용한다.
데이터의 핵심 특징을 압축된 잠재 표현(latent representation)으로 학습하는 것이 목적이다.
즉, <strong>입력 → 압축 → 복원</strong> 구조인 것이다.</p>
<p>“데이터를 잘 복원할 수 있도록” 학습하고,
실제 활용 가치는 중간의 압축된 표현(잠재 표현)에 있다.</p>
<h2 id="오토인코더의-구성요소">오토인코더의 구성요소</h2>
<p>오토인코더는 크게 두 개의 핵심 구성요소로 이루어진다.</p>
<blockquote>
<p>오토인코더는<br>
입력 x를 받아서
→ Encoder를 통해
→ 잠재 표현 z를 만들고
→ 이를 Decoder를 통해
→ 복원을 한 유사 x&#39;를 내보낸다.</p>
</blockquote>
<p>이 과정에서 인코더와 디코더가 핵심이다.</p>
<p>인코더는 입력을 저차원 표현으로 압축하고,
디코더는 압축된 표현을 다시 원래 형태로 복원한다.</p>
<p>입력과 출력이 최대한 비슷해야하기 때문에, 오토인코더의 학습은 입력 데이터와 복원된 출력 데이터간의 재구성 오차(Reconstruction Error)를 최소화하는 방식으로 진행된다.</p>
<h2 id="인코더와-디코더-각각의-차이점">인코더와 디코더 각각의 차이점</h2>
<table>
<thead>
<tr>
<th align="left">구분</th>
<th align="left">인코더 (Encoder)</th>
<th align="left">디코더 (Decoder)</th>
</tr>
</thead>
<tbody><tr>
<td align="left"><strong>주 역할</strong></td>
<td align="left">정보 압축</td>
<td align="left">정보 복원</td>
</tr>
<tr>
<td align="left"><strong>입력</strong></td>
<td align="left">원본 데이터 x</td>
<td align="left">잠재 벡터 z</td>
</tr>
<tr>
<td align="left"><strong>출력</strong></td>
<td align="left">잠재 표현 z</td>
<td align="left">복원 데이터 x&#39;</td>
</tr>
<tr>
<td align="left"><strong>차원 변화</strong></td>
<td align="left">감소</td>
<td align="left">증가</td>
</tr>
<tr>
<td align="left"><strong>학습 관점</strong></td>
<td align="left">원본 데이터의 핵심 특징 학습</td>
<td align="left">압축된 정보로 원본을 재구성하는 능력 학습</td>
</tr>
</tbody></table>
<br>

<h2 id="오토인코더가-적용되기-적합한-상황">오토인코더가 적용되기 적합한 상황</h2>
<p>오토인코더는 입력 데이터를 스스로 복원하도록 학습하기 때문에 데이터 자체에 내재된 특징을 효과적으로 학습할 수 있다.</p>
<p>따라서</p>
<ol>
<li>고차원 데이터를 저차원의 잠재 공간으로 압축해야 할 때처럼 <strong>“차원 축소가 필요한 경우”</strong></li>
<li>데이터로부터 자동으로 특징을 학습하고자 할 때처럼 <strong>“특징 추출 및 표현 학습이 필요한 경우”</strong></li>
<li>정상 데이터는 잘 복원되지만 이상 데이터는 복원 오차가 커지도록 <strong>“정상 데이터만 충분히 존재하고 이상 데이터는 드문 경우”</strong> (이상 탐지)</li>
<li>노이즈가 섞인 이미지 복원이나 음성 잡음 제거처럼 <strong>“입력 데이터에 노이즈가 포함되어 있고, 이를 제거한 결과가 필요한 경우”</strong> (노이즈 제거)</li>
<li>이미지 압축과 같은 예시로 저장 공간 또는 전송 비용을 줄여야 할 때처럼 <strong>“데이터 압축 및 복원이 필요한 경우”</strong></li>
</ol>
<p>등에 사용한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[CNN을 구성하는 각 레이어의 역할]]></title>
            <link>https://velog.io/@panda_love/CNN%EC%9D%84-%EA%B5%AC%EC%84%B1%ED%95%98%EB%8A%94-%EA%B0%81-%EB%A0%88%EC%9D%B4%EC%96%B4%EC%9D%98-%EC%97%AD%ED%95%A0</link>
            <guid>https://velog.io/@panda_love/CNN%EC%9D%84-%EA%B5%AC%EC%84%B1%ED%95%98%EB%8A%94-%EA%B0%81-%EB%A0%88%EC%9D%B4%EC%96%B4%EC%9D%98-%EC%97%AD%ED%95%A0</guid>
            <pubDate>Wed, 31 Dec 2025 07:40:08 GMT</pubDate>
            <description><![CDATA[<h1 id="목차">목차</h1>
<ol>
<li><a href="#cnn%EC%9D%B4%EB%9E%80">CNN이란?</a></li>
<li><a href="#%EB%A0%88%EC%9D%B4%EC%96%B4%EB%9E%80">레이어란?</a></li>
<li><a href="#%EB%8C%80%ED%91%9C%EC%A0%81%EC%9D%B8-%EB%A0%88%EC%9D%B4%EC%96%B4-%EC%A2%85%EB%A5%98%EC%99%80-%EC%97%AD%ED%95%A0">대표적인 레이어 종류와 역할</a><ol>
<li><a href="#1-%ED%95%A9%EC%84%B1%EA%B3%B1-%EB%A0%88%EC%9D%B4%EC%96%B4">1. 합성곱 레이어</a></li>
<li><a href="#2-%ED%99%9C%EC%84%B1%ED%99%94-%EB%A0%88%EC%9D%B4%EC%96%B4">2. 활성화 레이어</a></li>
<li><a href="#3-%ED%92%80%EB%A7%81-%EB%A0%88%EC%9D%B4%EC%96%B4">3. 풀링 레이어</a></li>
<li><a href="#4-%ED%94%8C%EB%9E%98%ED%8A%BC-%EB%A0%88%EC%9D%B4%EC%96%B4">4. 플래튼 레이어</a></li>
<li><a href="#5-%EC%99%84%EC%A0%84-%EC%97%B0%EA%B2%B0-%EB%A0%88%EC%9D%B4%EC%96%B4">5. 완전 연결 레이어</a></li>
<li><a href="#6-%EC%B6%9C%EB%A0%A5-%EB%A0%88%EC%9D%B4%EC%96%B4">6. 출력 레이어</a></li>
</ol>
</li>
</ol>
<h1 id="cnn이란">CNN이란?</h1>
<blockquote>
<p>합성곱 신경망이란 이미지, 영상과 같이 공간적 구조를 가진 데이터로부터 특징을 자동으로 학습하기 위해 설계된 딥러닝 모델이다.</p>
</blockquote>
<p>사람의 뉴런과 비슷하게, 이미지의 작은 영역에서 특징을 추출해내기도 하고 엣지→형태→객체와 같은 계층적 표현 학습이 이루어진다.</p>
<p>그래서 CNN은 이미지 분류, 객체 탐지, 얼굴 인식 등에서 많이 사용된다.</p>
<h1 id="레이어란">레이어란?</h1>
<blockquote>
<p>신경망을 구성하는 하나의 처리 단계</p>
</blockquote>
<p>딥러닝 관련하여 필수적으로 알아야하는 용어 중 하나가 이 Layer이다.</p>
<p>CNN도 마찬가지로 다수의 레이어로 이루어져 있고, 각 레이어들은 입력을 받아서 특정 연산을 수행한 후, 그 결과를 다음 단계로 전달한다.</p>
<p>신경망은 이렇게 여러 레이어를 계층적으로 쌓음으로써, 단순한 특징에서 점점 복잡하고 추상적인 특징들을 학습하게 된다.</p>
<p>이제 레이어의 역할들을 살펴보자.</p>
<h1 id="대표적인-레이어-종류와-역할">대표적인 레이어 종류와 역할</h1>
<h2 id="1-합성곱-레이어">1. 합성곱 레이어</h2>
<ul>
<li>이미지의 특징을 추출.</li>
<li>필터(커널)을 사용하여 이미지의 지역적인 패턴(ex 선)을 감지하고, 특징 맵으로 만들어냄.</li>
</ul>
<h2 id="2-활성화-레이어">2. 활성화 레이어</h2>
<ul>
<li>합성곱 레이어의 출력에 비선형성을 부여해서, 모델이 더 복잡한 데이터 패턴을 학습할 수 있도록 함.</li>
<li>이 때, ReLU 함수가 많이 쓰임. (음수 값은 0으로 만들고 양수 값은 유지하는 방식)</li>
</ul>
<h2 id="3-풀링-레이어">3. 풀링 레이어</h2>
<ul>
<li>특징 맵의 차원을 축소하고, 세부 정보를 제거함으로써 복잡도를 낮춤.</li>
<li>이렇게 하여 작은 위치변화에 덜 민감하게 만들어 과적합을 방지하고 일반화 성능을 향상시킴</li>
<li>풀링에도 종류가 많은데, 보통 Max Pooling방식 많이 사용.</li>
</ul>
<h2 id="4-플래튼-레이어">4. 플래튼 레이어</h2>
<ul>
<li>(보통은 풀링 레이어를 통해 줄어든) 특징 맵을 1차원 벡터로 변환.</li>
</ul>
<h2 id="5-완전-연결-레이어">5. 완전 연결 레이어</h2>
<ul>
<li>플래튼 레이어에서 넘어온 1차원 벡터를 받아서, 최종적인 분류나 회귀 작업을 위한 추상적인 정보를 통합.</li>
<li>“완전 연결”이라는 말과 같이, 모든 뉴런이 서로 연결되어 있음.</li>
</ul>
<h2 id="6-출력-레이어">6. 출력 레이어</h2>
<ul>
<li>최종 예측값을 출력</li>
<li>분류 문제나 회귀 문제 등 상황에 따라 적절한 활성화 함수를 사용해서 원하는 형태의 출력을 내보냄.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[PyTorch에서 텐서란 무엇이고, NumPy의 Array(배열)과 어떤 차이가 있나?]]></title>
            <link>https://velog.io/@panda_love/PyTorch%EC%97%90%EC%84%9C-%ED%85%90%EC%84%9C%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-NumPy%EC%9D%98-Array%EB%B0%B0%EC%97%B4%EA%B3%BC-%EC%96%B4%EB%96%A4-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EC%9E%88%EB%82%98</link>
            <guid>https://velog.io/@panda_love/PyTorch%EC%97%90%EC%84%9C-%ED%85%90%EC%84%9C%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-NumPy%EC%9D%98-Array%EB%B0%B0%EC%97%B4%EA%B3%BC-%EC%96%B4%EB%96%A4-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EC%9E%88%EB%82%98</guid>
            <pubDate>Mon, 22 Dec 2025 05:04:22 GMT</pubDate>
            <description><![CDATA[<h3 id="목차">목차</h3>
<ol>
<li><a href="#1-pytorch%EC%97%90%EC%84%9C-%ED%85%90%EC%84%9Ctensor%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80">PyTorch에서 텐서(Tensor)란 무엇인가</a></li>
<li><a href="#2-numpy-arrayndarray%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80">NumPy Array(ndarray)란 무엇인가</a></li>
<li><a href="#3-%EA%B3%B5%ED%86%B5%EC%A0%90-%EC%99%9C-%ED%97%B7%EA%B0%88%EB%A6%AC%EB%8A%94%EA%B0%80">공통점 (왜 헷갈리는가?)</a></li>
<li><a href="#4-%ED%95%B5%EC%8B%AC-%EC%B0%A8%EC%9D%B4%EC%A0%90">핵심 차이점</a>
 4.1. <a href="#41-%EC%9E%90%EB%8F%99-%EB%AF%B8%EB%B6%84autograd-%EC%A7%80%EC%9B%90-%EC%97%AC%EB%B6%80">자동 미분(Autograd) 지원 여부</a>
 4.2. <a href="#42-gpu-%EC%82%AC%EC%9A%A9-%EA%B0%80%EB%8A%A5-%EC%97%AC%EB%B6%80">GPU 사용 가능 여부</a>
 4.3. <a href="#43-%EC%97%B0%EC%82%B0-%EA%B7%B8%EB%9E%98%ED%94%84-%EC%B6%94%EC%A0%81">연산 그래프 추적</a>
 4.4. <a href="#44-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-%EB%AA%A9%EC%A0%81%EC%9D%98-%EC%B0%A8%EC%9D%B4">프레임워크 목적의 차이</a></li>
<li><a href="#5-%EC%96%B8%EC%A0%9C-%EB%AC%B4%EC%97%87%EC%9D%84-%EC%8D%A8%EC%95%BC-%ED%95%98%EB%82%98">언제 무엇을 써야 하나?</a>
 5.1. <a href="#numpy%EA%B0%80-%EC%A0%81%ED%95%A9%ED%95%9C-%EA%B2%BD%EC%9A%B0">NumPy가 적합한 경우</a>
 5.2. <a href="#pytorch-tensor%EA%B0%80-%EC%A0%81%ED%95%A9%ED%95%9C-%EA%B2%BD%EC%9A%B0">PyTorch Tensor가 적합한 경우</a></li>
<li><a href="#6-%EA%B2%B0%EB%A1%A0">결론</a></li>
</ol>
<br>

<h2 id="1-pytorch에서-텐서tensor란-무엇인가">1. PyTorch에서 텐서(Tensor)란 무엇인가</h2>
<ul>
<li><strong>Tensor</strong>는 PyTorch의 기본 데이터 구조</li>
<li>다차원 수치 데이터를 저장하고 연산하기 위한 객체</li>
<li>형태적으로는 NumPy의 <code>ndarray</code>와 거의 동일</li>
</ul>
<pre><code>import torch
x = torch.tensor([[1,2], [3,4]])</code></pre><ul>
<li>0차원: 스칼라</li>
<li>1차원: 벡터</li>
<li>2차원: 행렬</li>
<li>3차원 이상(n차원) : 일반 텐서</li>
</ul>
<p>이렇게 나뉠 수 있는데,</p>
<p>이것이 딥러닝에서는</p>
<ul>
<li>입력 데이터</li>
<li>가중치</li>
<li>출력</li>
<li>그래디언트</li>
</ul>
<p>이 내용들이 모두 텐서로 표현됨.
<br></p>
<h2 id="2-numpy-arrayndarray란-무엇인가">2. NumPy Array(ndarray)란 무엇인가</h2>
<p>NumPy의 ndarray는 CPU 메모리에 존재하는 다차원 수치 배열
(참고 : GPU가속을 직접 제공하지 않을 뿐, CPU만을 요구하는 것은 아님)</p>
<pre><code>import numpy as np
a = np.array([[1,2], [3,4]])</code></pre><ul>
<li>과학 계산, 통계, 신호 처리 등에 최적화됨</li>
<li>파이썬 수치 계산의 사실상 표준이다.<br>
## 3. 공통점 (왜 헷갈리는가?)

</li>
</ul>
<table>
<thead>
<tr>
<th>공통점</th>
<th>설명</th>
</tr>
</thead>
<tbody><tr>
<td>다차원 구조</td>
<td>n차원 배열</td>
</tr>
<tr>
<td>슬라이싱</td>
<td><code>a[1:, ::2]</code> 가능</td>
</tr>
<tr>
<td>브로드캐스팅</td>
<td>자동 차원 확장</td>
</tr>
<tr>
<td>벡터화 연산</td>
<td>루프 없이 연산</td>
</tr>
</tbody></table>
<p>→ <strong>문법과 사용 감각이 매우 유사하다!</strong>
<br></p>
<h2 id="4-핵심-차이점">4. 핵심 차이점</h2>
<h3 id="41-자동-미분autograd-지원-여부">4.1. 자동 미분(Autograd) 지원 여부</h3>
<table>
<thead>
<tr>
<th>항목</th>
<th>PyTorch Tensor</th>
<th>NumPy Array</th>
</tr>
</thead>
<tbody><tr>
<td>자동 미분</td>
<td>지원</td>
<td>미지원</td>
</tr>
<tr>
<td><code>requires_grad</code></td>
<td>있음</td>
<td>없음</td>
</tr>
</tbody></table>
<pre><code>x = torch.tensor(2.0, requires_grad=True)
y = x **2
y.backward()
print(x.grad)# 4.0</code></pre><p><strong>이것이 딥러닝의 핵심 기능이다.</strong></p>
<h3 id="42-gpu-사용-가능-여부">4.2. GPU 사용 가능 여부</h3>
<table>
<thead>
<tr>
<th>항목</th>
<th>PyTorch Tensor</th>
<th>NumPy Array</th>
</tr>
</thead>
<tbody><tr>
<td>GPU 연산</td>
<td>가능 (CUDA)</td>
<td>불가</td>
</tr>
<tr>
<td>장치 이동</td>
<td><code>.to(&#39;cuda&#39;)</code></td>
<td>없음</td>
</tr>
</tbody></table>
<pre><code>x = torch.tensor([1,2,3]).cuda()</code></pre><p>cuda를 이용하여 대규모 딥러닝 연산이 더욱 용이하다</p>
<h3 id="43-연산-그래프-추적">4.3. 연산 그래프 추적</h3>
<ul>
<li>PyTorch 텐서:<ul>
<li>연산 과정을 <strong>그래프로 기록</strong></li>
<li>역전파 가능</li>
</ul>
</li>
<li>NumPy 배열:<ul>
<li>연산 결과만 존재</li>
<li>미분 정보 없음</li>
</ul>
</li>
</ul>
<h3 id="44-프레임워크-목적의-차이">4.4. 프레임워크 목적의 차이</h3>
<table>
<thead>
<tr>
<th>구분</th>
<th>PyTorch</th>
<th>NumPy</th>
</tr>
</thead>
<tbody><tr>
<td>목적</td>
<td>딥러닝·자동 미분</td>
<td>범용 수치 계산</td>
</tr>
<tr>
<td>최적화 대상</td>
<td>GPU / 신경망</td>
<td>CPU 벡터 연산</td>
</tr>
</tbody></table>
<br>

<h2 id="5-언제-무엇을-써야-하나">5. 언제 무엇을 써야 하나?</h2>
<h3 id="numpy가-적합한-경우">NumPy가 적합한 경우</h3>
<ul>
<li>데이터 전처리</li>
<li>통계 분석</li>
<li>간단한 수치 계산</li>
<li>모델 학습 전 단계</li>
</ul>
<h3 id="pytorch-tensor가-적합한-경우">PyTorch Tensor가 적합한 경우</h3>
<ul>
<li>딥러닝 모델 구현</li>
<li>역전파 필요</li>
<li>GPU 연산</li>
<li>학습 루프 작성</li>
</ul>
<br>

<h2 id="6-결론">6. 결론</h2>
<ul>
<li>NumPy 배열은 “계산기”, PyTorch 텐서는 “미분 가능한 계산기 + GPU”다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[딥러닝 프레임워크인 PyTorch와 TensorFlow를 비교해보자]]></title>
            <link>https://velog.io/@panda_love/%EB%94%A5%EB%9F%AC%EB%8B%9D-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EC%9D%B8-PyTorch%EC%99%80-TensorFlow%EB%A5%BC-%EB%B9%84%EA%B5%90%ED%95%B4%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@panda_love/%EB%94%A5%EB%9F%AC%EB%8B%9D-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EC%9D%B8-PyTorch%EC%99%80-TensorFlow%EB%A5%BC-%EB%B9%84%EA%B5%90%ED%95%B4%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Mon, 22 Dec 2025 05:03:53 GMT</pubDate>
            <description><![CDATA[<h3 id="목차">목차</h3>
<ol>
<li><a href="#%EC%82%AC%EC%9A%A9%EC%84%B1">사용성</a></li>
<li><a href="#%EB%AA%A8%EB%8D%B8-%EA%B0%9C%EB%B0%9C-%EB%B0%8F-%EC%97%B0%EA%B5%AC-%EC%B9%9C%ED%99%94%EC%84%B1">모델 개발 및 연구 친화성</a></li>
<li><a href="#%EB%B0%B0%ED%8F%AC-%EB%B0%8F-%ED%94%84%EB%A1%9C%EB%8D%95%EC%85%98-%ED%99%98%EA%B2%BD">배포 및 프로덕션 환경</a></li>
<li><a href="#%EC%83%9D%ED%83%9C%EA%B3%84-%EB%B0%8F-%EC%BB%A4%EB%AE%A4%EB%8B%88%ED%8B%B0">생태계 및 커뮤니티</a></li>
<li><a href="#%EB%8C%80%ED%91%9C%EC%A0%81-%EC%82%AC%EC%9A%A9-%EC%82%AC%EB%A1%80">대표적 사용 사례</a></li>
<li><a href="#%EC%9A%94%EC%95%BD-%EB%B9%84%EA%B5%90">요약 비교</a></li>
<li><a href="#%EA%B2%B0%EB%A1%A0">결론</a></li>
</ol>
<br>

<h2 id="사용성">사용성</h2>
<table>
<thead>
<tr>
<th>항목</th>
<th>PyTorch</th>
<th>TensorFlow</th>
</tr>
</thead>
<tbody><tr>
<td>초보자 친화성</td>
<td>매우 높음</td>
<td>중간</td>
</tr>
<tr>
<td>Pythonic한 코드</td>
<td>강점</td>
<td>상대적으로 약함</td>
</tr>
<tr>
<td>학습 난이도</td>
<td>낮음</td>
<td>비교적 높음</td>
</tr>
<tr>
<td>- <strong>PyTorch</strong>는 NumPy와 유사한 API → 직관적, 학습 곡선이 완만</td>
<td></td>
<td></td>
</tr>
<tr>
<td>- <strong>TensorFlow</strong>는 생태계가 넓은 대신 초기 진입 장벽이 있음</td>
<td></td>
<td></td>
</tr>
</tbody></table>
<br>

<h2 id="모델-개발-및-연구-친화성">모델 개발 및 연구 친화성</h2>
<table>
<thead>
<tr>
<th>항목</th>
<th>PyTorch</th>
<th>TensorFlow</th>
</tr>
</thead>
<tbody><tr>
<td>연구 커뮤니티</td>
<td><strong>압도적으로 강함</strong></td>
<td>상대적으로 약함</td>
</tr>
<tr>
<td>논문 구현</td>
<td>표준에 가까움</td>
<td>구현 예는 많으나 복잡</td>
</tr>
<tr>
<td>실험 반복</td>
<td>매우 용이</td>
<td>상대적으로 번거로움</td>
</tr>
<tr>
<td>- 최신 논문 구현과 오픈소스 모델의 <strong>사실상 표준은 PyTorch</strong></td>
<td></td>
<td></td>
</tr>
</tbody></table>
<br>

<h2 id="배포-및-프로덕션-환경">배포 및 프로덕션 환경</h2>
<table>
<thead>
<tr>
<th>항목</th>
<th>PyTorch</th>
<th>TensorFlow</th>
</tr>
</thead>
<tbody><tr>
<td>배포 도구</td>
<td>TorchScript, TorchServe</td>
<td><strong>TensorFlow Serving, TF Lite, TF.js</strong></td>
</tr>
<tr>
<td>모바일/엣지</td>
<td>제한적</td>
<td><strong>강력</strong></td>
</tr>
<tr>
<td>대규모 분산 학습</td>
<td>지원</td>
<td><strong>성숙</strong></td>
</tr>
<tr>
<td>- <strong>TensorFlow는 배포·서빙·모바일·웹까지 아우르는 End-to-End 플랫폼</strong></td>
<td></td>
<td></td>
</tr>
<tr>
<td>- PyTorch도 배포 역량이 개선되고 있으나, 여전히 TensorFlow가 우위</td>
<td></td>
<td></td>
</tr>
</tbody></table>
<br>

<h2 id="생태계-및-커뮤니티">생태계 및 커뮤니티</h2>
<table>
<thead>
<tr>
<th>항목</th>
<th>PyTorch</th>
<th>TensorFlow</th>
</tr>
</thead>
<tbody><tr>
<td>개발 주도</td>
<td>Meta (Facebook)</td>
<td>Google</td>
</tr>
<tr>
<td>커뮤니티 성장</td>
<td><strong>빠름</strong></td>
<td>성숙</td>
</tr>
<tr>
<td>기업 채택</td>
<td>연구·AI팀 중심</td>
<td>대기업·서비스 중심</td>
</tr>
</tbody></table>
<br>

<h2 id="대표적-사용-사례">대표적 사용 사례</h2>
<ul>
<li><strong>PyTorch가 적합한 경우</strong><ul>
<li>최신 연구 및 논문 구현</li>
<li>빠른 실험과 반복 개발</li>
<li>커스텀 모델·복잡한 제어 흐름</li>
<li>AI 연구, 스타트업, 학계</li>
</ul>
</li>
<li><strong>TensorFlow가 적합한 경우</strong><ul>
<li>대규모 상용 서비스</li>
<li>모바일/웹/엣지 디바이스 배포</li>
<li>TPU 활용</li>
<li>장기 운영이 필요한 엔터프라이즈 환경</li>
</ul>
</li>
</ul>
<br>

<h2 id="요약-비교">요약 비교</h2>
<table>
<thead>
<tr>
<th>기준</th>
<th>추천 프레임워크</th>
</tr>
</thead>
<tbody><tr>
<td>연구·실험 중심</td>
<td><strong>PyTorch</strong></td>
</tr>
<tr>
<td>빠른 학습 및 직관성</td>
<td><strong>PyTorch</strong></td>
</tr>
<tr>
<td>프로덕션·배포</td>
<td><strong>TensorFlow</strong></td>
</tr>
<tr>
<td>모바일·엣지</td>
<td><strong>TensorFlow</strong></td>
</tr>
<tr>
<td>TPU 활용</td>
<td><strong>TensorFlow</strong></td>
</tr>
</tbody></table>
<br>

<h3 id="결론">결론</h3>
<ul>
<li><strong>연구와 개발 속도가 중요하다면 PyTorch</strong></li>
<li><strong>대규모 프로젝트라면 TensorFlow</strong></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[딥러닝의 성능향상을 위해 고려하는 하이퍼파라미터의 종류]]></title>
            <link>https://velog.io/@panda_love/%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%98-%EC%84%B1%EB%8A%A5%ED%96%A5%EC%83%81%EC%9D%84-%EC%9C%84%ED%95%B4-%EA%B3%A0%EB%A0%A4%ED%95%98%EB%8A%94-%ED%95%98%EC%9D%B4%ED%8D%BC%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%EC%9D%98-%EC%A2%85%EB%A5%98</link>
            <guid>https://velog.io/@panda_love/%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%98-%EC%84%B1%EB%8A%A5%ED%96%A5%EC%83%81%EC%9D%84-%EC%9C%84%ED%95%B4-%EA%B3%A0%EB%A0%A4%ED%95%98%EB%8A%94-%ED%95%98%EC%9D%B4%ED%8D%BC%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%EC%9D%98-%EC%A2%85%EB%A5%98</guid>
            <pubDate>Mon, 15 Dec 2025 04:36:23 GMT</pubDate>
            <description><![CDATA[<h1 id="하이퍼파라미터">하이퍼파라미터</h1>
<h2 id="목차">목차</h2>
<ol>
<li><a href="#%ED%95%98%EC%9D%B4%ED%8D%BC-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%EA%B0%9C%EC%9A%94">하이퍼 파라미터 개요</a></li>
<li><a href="#%ED%95%99%EC%8A%B5-%EA%B4%80%EB%A0%A8-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0">학습 관련 파라미터</a><ol>
<li><a href="#1-learning-rate-%ED%95%99%EC%8A%B5%EB%A5%A0">1. Learning Rate (학습률)</a></li>
<li><a href="#2-batch-size">2. Batch Size</a></li>
<li><a href="#3-epoch-%EC%88%98">3. Epoch 수</a></li>
<li><a href="#4-optimizer">4. Optimizer</a></li>
</ol>
</li>
<li><a href="#%EB%AA%A8%EB%8D%B8-%EA%B5%AC%EC%A1%B0-%EA%B4%80%EB%A0%A8-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0">모델 구조 관련 파라미터</a><ol>
<li><a href="#1-depth-%EB%A0%88%EC%9D%B4%EC%96%B4-%EC%88%98">1. Depth (레이어 수)</a></li>
<li><a href="#2-width-%EB%89%B4%EB%9F%B0-%EC%A6%89-%EB%85%B8%EB%93%9C-%EC%88%98">2. Width (뉴런 즉, 노드 수)</a></li>
<li><a href="#3-activation-function">3. Activation Function</a></li>
</ol>
</li>
</ol>
<hr>
<h2 id="하이퍼-파라미터-개요">하이퍼 파라미터 개요</h2>
<p>딥러닝 모델의 성능은 하이퍼파라미터 설정에 크게 영향을 받기 때문에,
성능을 높이기 위해서는 하이퍼파라미터 설정은 필수라고 할 수 있다.</p>
<p>하이퍼파라미터 설정은 모델 학습 전에, 사용자가 직접 설정한다.</p>
<p>이 시간에는 하이퍼 파라미터의 종류와, 종류별 내용들을 살펴보겠다.</p>
<h2 id="학습-관련-파라미터">학습 관련 파라미터</h2>
<h3 id="1-learning-rate-학습률">1. Learning Rate (학습률)</h3>
<ul>
<li>가중치를 얼마나 크게 업데이트할지 결정한다.</li>
<li>너무 크면 발산할 수 있고, 너무 작으면 학습이 매우 느리다.</li>
<li>보통 0.1, 0.01, 0.001 등을 사용해보고 점차 조정하는데, 어느 정도가 적당한지는 상황에 따라 다르다.</li>
</ul>
<h3 id="2-batch-size">2. Batch Size</h3>
<ul>
<li>한 번에 학습하는 데이터 갯수이다.</li>
<li>배치 사이즈가 작을수록 성능이 좋아지는 경우도 있고, 배치 사이즈가 클수록 학습이 안정되기도 한다.</li>
<li>따라서 이도 적절한 값으로 하는 것이 좋다.</li>
<li>검증 데이터셋(Validation Set)에서의 성능이 더 이상 개선되지 않을 때 학습을 조기에 중단하는 &#39;Early Stopping&#39; 기법을 함께 사용하면 과적합을 방지하고 최적의 모델을 찾을 수 있다.</li>
</ul>
<h3 id="3-epoch-수">3. Epoch 수</h3>
<ul>
<li>전체 데이터셋을 몇 번 반복 학습할지 정하는 값이다.</li>
<li>너무 많으면 과적합 위험이 있다. 나는 보통 5로 설정해두고는 한다.</li>
</ul>
<h3 id="4-optimizer">4. Optimizer</h3>
<ul>
<li>손실 함수를 최소로 만들기 위해 모델이 어떻게 학습할지를 결정하는 핵심 알고리즘이다.</li>
<li>다시 말해서, 가중치를 어떤 방식으로, 얼마나 업데이트할지 정하는 방법이다.</li>
<li>SGD, Adam, AdamW, RMSProp 등이 있다. 이중에서 많이 쓰이는 Adam을 주로 나도 사용하고 있다.</li>
</ul>
<h2 id="모델-구조-관련-파라미터">모델 구조 관련 파라미터</h2>
<h3 id="1-depth-레이어-수">1. Depth (레이어 수)</h3>
<ul>
<li>깊을수록 표현력이 증가한다.</li>
<li>하지만 너무 깊으면 기울기 폭주/손실 문제가 생기고 학습이 어렵다.</li>
</ul>
<h3 id="2-width-뉴런-즉-노드-수">2. Width (뉴런 즉, 노드 수)</h3>
<ul>
<li>각 레이어의 차원수를 의미한다.</li>
<li>너무 크면 과적합 위험성이 증가되고, 작으면 표현력이 부족해진다.</li>
</ul>
<h3 id="3-activation-function">3. Activation Function</h3>
<ul>
<li>비선형성을 부여한다.</li>
<li>딥러닝에서 활성화 함수는 필수로 알아야 하는 내용이다.</li>
<li>대표적인 것들은 ReLU, GELU, Tanh, Sigmoid 등이 있다. 이 중에서도 ReLU가 기본적으로는 가장 많이 쓰인다고 할 수 있다.</li>
</ul>
<hr>
<p>이외에도 하이퍼파라미터 종류가 많으니 상황에 따라 적절한 조합을 찾아가자.</p>
<p>그리드 서치도 함께 사용하는 것이 좋다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[딥러닝과 머신러닝 간의 포함관계]]></title>
            <link>https://velog.io/@panda_love/%EB%94%A5%EB%9F%AC%EB%8B%9D%EA%B3%BC-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B0%84%EC%9D%98-%ED%8F%AC%ED%95%A8%EA%B4%80%EA%B3%84</link>
            <guid>https://velog.io/@panda_love/%EB%94%A5%EB%9F%AC%EB%8B%9D%EA%B3%BC-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B0%84%EC%9D%98-%ED%8F%AC%ED%95%A8%EA%B4%80%EA%B3%84</guid>
            <pubDate>Mon, 15 Dec 2025 04:35:50 GMT</pubDate>
            <description><![CDATA[<h1 id="딥러닝-⊂-머신러닝-⊂-인공지능">딥러닝 ⊂ 머신러닝 ⊂ 인공지능</h1>
<hr>
<h2 id="목차">목차</h2>
<ol>
<li><a href="#%EB%94%A5%EB%9F%AC%EB%8B%9D-%E2%8A%82-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%E2%8A%82-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5">딥러닝 ⊂ 머신러닝 ⊂ 인공지능</a></li>
<li><a href="#%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D%EC%9D%B4%EB%9E%80">머신러닝이란?</a></li>
<li><a href="#%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%B4%EB%9E%80">딥러닝이란?</a></li>
<li><a href="#%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D%EA%B3%BC-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%98-%EB%8C%80%ED%91%9C%EC%A0%81%EC%9D%B8-%EC%B0%A8%EC%9D%B4%EC%A0%90">머신러닝과 딥러닝의 대표적인 차이점</a></li>
</ol>
<hr>
<h1 id="딥러닝-⊂-머신러닝-⊂-인공지능-1">딥러닝 ⊂ 머신러닝 ⊂ 인공지능</h1>
<img src="https://velog.velcdn.com/images/panda_love/post/6996f42c-1f8a-4599-bcf5-d74710d5b116/image.png" height="200" alt="인공지능과 머신러닝과 딥러닝의 포함관계">

<ul>
<li>모든 딥러닝은 머신러닝이다.</li>
<li>하지만, 모든 머신러닝이 딥러닝은 아니다.</li>
<li>딥러닝은 머신러닝의 한 분야다.</li>
<li>데이터 기반으로 학습한다는 점, 오차를 줄이는 방향으로 학습한다는 점, 라벨이나 보상으로 성능을 개선한다는 점에서 학습 방식이 같기 때문에 딥러닝이 머신러닝에 포함된다.</li>
<li>머신러닝이 사람이 특징을 정의하는 반면 딥러닝은 다층 신경망을 통해 특징 추출부터 예측까지 자동으로 학습하는 기법이다.</li>
</ul>
<h2 id="머신러닝이란">머신러닝이란?</h2>
<blockquote>
<p>사람이 규칙을 직접 만들지 않고, 데이터를 통해 컴퓨터가 스스로 패턴을 학습하는 기술</p>
</blockquote>
<ul>
<li>적은 데이터로도 학습 가능</li>
<li>학습 결과를 해석하기 쉬움</li>
<li>대표적인 머신러닝 알고리즘 예시<ul>
<li>선형 회귀</li>
<li>로지스틱 회귀</li>
<li>결정 트리</li>
<li>랜덤 포레스트</li>
<li>SVM</li>
<li>KNN</li>
</ul>
</li>
<li>“사람”이 “특징을 정리한 데이터를 직접” 넘겨주고, “머신러닝”에서는 사람에게 형식에 맞게 넘겨받은 데이터를 “분석”.</li>
</ul>
<h2 id="딥러닝이란">딥러닝이란?</h2>
<blockquote>
<p>머신러닝 기법 중 한 분야로써, “신경망”을 여러 층으로 깊게 쌓아 특징 추출부터 판단까지 전부 스스로 학습하는 기법.</p>
</blockquote>
<ul>
<li>사람이 특징을 직접 만들 필요가 거의 없음.</li>
<li>구조가 매우 복잡</li>
<li>결과 해석이 어려움</li>
<li>대표적인 딥러닝 모델<ul>
<li>CNN</li>
<li>RNN/LSTM</li>
<li>Transformer</li>
<li>AutoEncoder</li>
</ul>
</li>
</ul>
<h2 id="머신러닝과-딥러닝의-대표적인-차이점">머신러닝과 딥러닝의 대표적인 차이점</h2>
<table>
<thead>
<tr>
<th>구분</th>
<th>머신러닝</th>
<th>딥러닝</th>
</tr>
</thead>
<tbody><tr>
<td>포함관계</td>
<td><strong>상위 개념</strong></td>
<td><strong>머신러닝의 하위 개념</strong></td>
</tr>
<tr>
<td>특징 추출</td>
<td><strong>사람이 직접</strong></td>
<td><strong>모델이 자동으로</strong></td>
</tr>
<tr>
<td>구조</td>
<td>단순</td>
<td>매우 복잡</td>
</tr>
<tr>
<td>해석</td>
<td>쉬움</td>
<td>어려움</td>
</tr>
<tr>
<td>연산 자원</td>
<td>적음</td>
<td>GPU 필요</td>
</tr>
</tbody></table>
]]></description>
        </item>
        <item>
            <title><![CDATA[차원 축소 - 주성분 분석과 요인 분석의 차이]]></title>
            <link>https://velog.io/@panda_love/%EC%B0%A8%EC%9B%90-%EC%B6%95%EC%86%8C-%EC%A3%BC%EC%84%B1%EB%B6%84-%EB%B6%84%EC%84%9D%EA%B3%BC-%EC%9A%94%EC%9D%B8-%EB%B6%84%EC%84%9D%EC%9D%98-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@panda_love/%EC%B0%A8%EC%9B%90-%EC%B6%95%EC%86%8C-%EC%A3%BC%EC%84%B1%EB%B6%84-%EB%B6%84%EC%84%9D%EA%B3%BC-%EC%9A%94%EC%9D%B8-%EB%B6%84%EC%84%9D%EC%9D%98-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Mon, 08 Dec 2025 01:15:22 GMT</pubDate>
            <description><![CDATA[<h1 id="목차">목차</h1>
<ul>
<li><a href="#%EC%B0%A8%EC%9B%90-%EC%B6%95%EC%86%8C%EB%9E%80">차원 축소란</a><ul>
<li><a href="#%EC%B0%A8%EC%9B%90-%EC%B6%95%EC%86%8C-%EB%B0%A9%EB%B2%95">차원 축소 방법</a></li>
</ul>
</li>
<li><a href="#%EC%A3%BC%EC%84%B1%EB%B6%84-%EB%B6%84%EC%84%9Dpca">주성분 분석(PCA)</a></li>
<li><a href="#%EC%9A%94%EC%9D%B8-%EB%B6%84%EC%84%9D">요인 분석</a></li>
<li><a href="#%EC%A3%BC%EC%84%B1%EB%B6%84-%EB%B6%84%EC%84%9D%EA%B3%BC-%EC%9A%94%EC%9D%B8-%EB%B6%84%EC%84%9D%EC%9D%98-%EC%B0%A8%EC%9D%B4">주성분 분석과 요인 분석의 차이</a></li>
</ul>
<h1 id="차원-축소란">차원 축소란</h1>
<blockquote>
<p>고차원 데이터의 차원을 축소하여 저차원으로 줄이는 알고리즘</p>
</blockquote>
<ul>
<li>차원이 높을 수록 데이터를 보기에 더 어려워지고, 학습에 요구되는 데이터의 갯수도 증가되고, 데이터 활용이나 학습 난이도도 높아지고, 데이터 및 모델이 복잡해진다는 내용이 있다.</li>
</ul>
<h2 id="차원-축소-방법">차원 축소 방법</h2>
<ul>
<li>특성 선택<ul>
<li>원래 있던 특성들 중에서 가장 중요하거나 유의미하다고 판다되는 몇 개의 특성만 골라서 사용</li>
</ul>
</li>
<li>특성 추출<ul>
<li>원래 있던 특성들을 조합해서 새로운 특성을 만들어내는 방법</li>
<li>기존 특성들의 정보를 압축하고 변형해서 적은 수의 새로운 차원을 생성</li>
<li>세부기법 : PCA, LDA, LLE 등</li>
</ul>
</li>
</ul>
<h2 id="주성분-분석pca">주성분 분석(PCA)</h2>
<blockquote>
<p>Principal Component Analysis : 널리 사용되는 일종의 차원 축소 기법</p>
</blockquote>
<ul>
<li>데이터 변동성이 가장 큰 방향으로 새로운 축을 생성하여 데이터를 표현함으로써, 원본 데이터의 분포를 최대한 보존하면서 차원을 축소
⇒ 데이터의 분산을 최대한 보존하는 새로운 ‘주성분’들을 만들어내서 차원을 축소</li>
</ul>
<p>예를 들어 다음과 같은 2차원 데이터가 있다고 해보자.</p>
<img src="https://velog.velcdn.com/images/panda_love/post/171bbd6c-65ec-408c-a026-c3fd5b12d910/image.png" height="200" alt="2차원 데이터 분포">
위 데이터 분포를 최대한 보존하면서 1차원 데이터로 나타내기 위해서는 어떻게 해야 할까?

<br>
<br>

<img src="https://velog.velcdn.com/images/panda_love/post/9159406a-ef0a-4aea-8a60-348cbeb2bf6d/image.png" height="200" alt="새로운 축 생성 예시">

<p>이렇게 새로운 축을 생성하는 게 가장 좋을 것이다.</p>
<p>왜일까?</p>
<p>각 데이터와 축까지의 잔차 제곱을 계산해봤을 때 위 그림과 같이 축을 만들어야 잔차 제곱을 최소화할 수 있기 때문이다.
<br></p>
<p>이렇게 데이터 포인트들이 새로운 축에 투영되었을 때, 투영된 점들의 <strong>분산이 최대가 되는 축을 찾는 것이 PCA의 핵심</strong>이다. </p>
<p>이는 곧 원래 데이터 포인트들과 새로운 축 사이의 <strong>직교 거리 제곱의 합을 최소화</strong>하는 것과 동일한 결과이다
<br>
저렇게 잔차 제곱을 최소화해야 PCA의 핵심인 ‘분산을 최대화’할 수 있는 것이다.
<br></p>
<p>참고 : 사실 저 그림은 쉽게 설명하기 위한 예시였고, 만약 저 알록달록한 데이터가 각 다른 특성들을 나타내고 있는 거라면 계산이 훨씬 복잡하다. (원리는 동일)</p>
<br>

<h2 id="요인-분석">요인 분석</h2>
<blockquote>
<p>우리가 직접 측정한 데이터들(관찰 가능한 변수들) 뒤에 숨어 있는 잠재 요인을 찾아내는 통계 기법</p>
</blockquote>
<ul>
<li>예를 들어서 심리, 만족도, 행복, 지능, 성취도, 스트레스같은 ‘직접 측정하기 어려운 추상적개념’들을 여러 관찰 변수를 통해 간접적으로 파악하는 것</li>
<li>잠재 요인을 찾아내면 추상적인 개념의 실체를 더 명확하게 이해하고, 서로 상관관계가 높은 변수들까리 그룹화해줌으로써 복잡한 데이터를 단순화할 수 있음.</li>
</ul>
<br>

<h1 id="주성분-분석과-요인-분석의-차이">주성분 분석과 요인 분석의 차이</h1>
<ul>
<li>PCA가 데이터 요약이라면, 요인 분석은 잠재요인 탐색</li>
</ul>
<table>
<thead>
<tr>
<th><strong>구분</strong></th>
<th><strong>주성분 분석 (Principal Component Analysis, PCA)</strong></th>
<th><strong>요인 분석 (Factor Analysis, FA)</strong></th>
</tr>
</thead>
<tbody><tr>
<td><strong>주요 목적</strong></td>
<td>- 고차원 데이터의 <strong>변동성(variance)을 최대한 보존</strong>하면서 새로운 축(주성분)으로 데이터 <strong>요약 및 압축</strong>.<br>- 데이터의 &#39;중복 정보&#39;를 제거하고 &#39;주요 패턴&#39;을 찾는 데 초점.</td>
<td>- 여러 관찰 변수들 뒤에 숨어있는, <strong>관찰할 수 없는 소수의 &#39;잠재 요인(latent factor)&#39;을 탐색하고 확인</strong>.<br>- 데이터의 &#39;근원적인 구조&#39;와 &#39;숨겨진 원인&#39;을 밝히는 데 초점.</td>
</tr>
<tr>
<td><strong>기본 가정</strong></td>
<td>- 모든 관찰 변수의 변동성은 추출된 주성분들로 <strong>100% 설명될 수 있다고 가정</strong> (측정 오차 같은 &#39;고유 분산&#39;을 고려하지 않음).<br>- 관찰 변수들이 주성분들의 선형 조합이라고 봄.</td>
<td>- 관찰 변수는 추출된 잠재 요인들(Common Factors)에 의해 설명되는 부분과, <strong>&#39;측정 오차(Error Term)&#39; 또는 &#39;고유 분산(Unique Variance)&#39;에 의해 설명되는 부분</strong>으로 구성된다고 가정.<br>- 측정 오차의 존재를 인정함.</td>
</tr>
<tr>
<td><strong>추출된 것의 성격</strong></td>
<td><strong>- 주성분(Principal Component)</strong>: 원래 변수들의 선형 결합으로 만들어진 <strong>수학적인 구성물</strong>.<br>- 데이터의 변동성을 최대로 설명하는 <strong>&#39;요약된 새로운 변수&#39;</strong>임.</td>
<td><strong>- 잠재 요인(Latent Factor)</strong>: 관찰 변수들 간의 상관관계를 <strong>&#39;설명하는 근원적인 원인&#39;</strong>이라고 가정되는 <strong>이론적인 개념</strong>임.</td>
</tr>
<tr>
<td><strong>관점</strong></td>
<td>- <strong>&#39;데이터를 압축(요약)&#39;</strong>하는 것에 중점.<br>- 이미 존재하는 데이터를 &#39;더 간결하게 만드는&#39; 관점.</td>
<td>- <strong>&#39;현상 뒤에 숨겨진 원인&#39;을 찾아 &#39;해석&#39;</strong>하는 것에 중점.<br>- 측정된 변수들 간의 관계를 &#39;설명하는&#39; 관점.</td>
</tr>
<tr>
<td><strong>주요 용도</strong></td>
<td>- 데이터 압축, 노이즈 제거, 데이터 시각화, 머신러닝 모델의 전처리 단계에서 과적합 방지<br>- 및 학습 속도 개선.</td>
<td>직접 측정 어려운 개념의 정의 및 타당성 검증.</td>
</tr>
<tr>
<td><strong>해석의 용이성</strong></td>
<td>추출된 주성분은 단순히 원래 변수들의 조합이므로 <strong>직접적인 의미 부여가 어려울 수 있음</strong>. 각 주성분이 &#39;무엇을 의미하는지&#39;는 분석가의 해석에 달려 있음.</td>
<td>추출된 잠재 요인은 <strong>근원적인 개념을 가정하므로 해석에 더 용이</strong>할 수 있음.</td>
</tr>
</tbody></table>
]]></description>
        </item>
        <item>
            <title><![CDATA[앙상블 기법 - 부스팅 모델의 특징과 장단점]]></title>
            <link>https://velog.io/@panda_love/%EC%95%99%EC%83%81%EB%B8%94-%EA%B8%B0%EB%B2%95-%EB%B6%80%EC%8A%A4%ED%8C%85-%EB%AA%A8%EB%8D%B8%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%9E%A5%EB%8B%A8%EC%A0%90</link>
            <guid>https://velog.io/@panda_love/%EC%95%99%EC%83%81%EB%B8%94-%EA%B8%B0%EB%B2%95-%EB%B6%80%EC%8A%A4%ED%8C%85-%EB%AA%A8%EB%8D%B8%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%9E%A5%EB%8B%A8%EC%A0%90</guid>
            <pubDate>Mon, 08 Dec 2025 01:14:32 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/panda_love/post/28d92386-394c-4500-8f52-deb9dd5b1803/image.png" alt="앙상블-부스팅"></p>
<h2 id="목차">목차</h2>
<ul>
<li><a href="#%EC%95%99%EC%83%81%EB%B8%94-%EA%B8%B0%EB%B2%95">앙상블 기법</a></li>
<li><a href="#%EB%B3%B4%ED%8C%85">보팅</a></li>
<li><a href="#%EB%B0%B0%EA%B9%85">배깅</a></li>
<li><a href="#%EB%B6%80%EC%8A%A4%ED%8C%85">부스팅</a><ul>
<li><a href="#%EC%A2%85%EB%A5%98">종류</a></li>
</ul>
</li>
<li><a href="#%EC%8A%A4%ED%83%9C%ED%82%B9">스태킹</a></li>
<li><a href="#%EC%95%99%EC%83%81%EB%B8%94-%EA%B8%B0%EB%B2%95-%EC%A0%95%EB%A6%AC">앙상블 기법 정리</a></li>
<li><a href="#%EB%B6%80%EC%8A%A4%ED%8C%85-%EB%AA%A8%EB%8D%B8%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%9E%A5%EB%8B%A8%EC%A0%90">부스팅 모델의 특징과 장단점</a><ul>
<li><a href="#%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95">주요 특징</a></li>
<li><a href="#%EC%9E%A5%EC%A0%90">장점</a></li>
<li><a href="#%EB%8B%A8%EC%A0%90">단점</a></li>
</ul>
</li>
</ul>
<br>

<p>지난 주에는 데이터 학습 시 발생할 수 있는 편향과 분산에 대해 알아보았다.</p>
<p>편향과 분산은 트레이드-오프 관계이고, 적당한 합의점을 찾는 게 핵심이다.</p>
<p>이와 관련하여 앙상블 기법이란 게 있는데, 오늘은 앙상블 기법에 대해 간단히 알아보고, 부스팅에 대해서 정리해볼 것이다.</p>
<h2 id="앙상블-기법">앙상블 기법</h2>
<blockquote>
<p>여러 개의 모델을 만들고 이들을 조합하여 하나의 최종 모델을 만드는 방법</p>
</blockquote>
<p align="center"><img src="https://velog.velcdn.com/images/panda_love/post/30e3f1ba-9739-43a7-a0b8-a3bbc5f58ba2/image.png" width=50% alt="앙상블">

<ul>
<li>앙상블 : 조화, 총체라는 뜻</li>
<li>여러 전문가의 의견을 종합하는 것과 같이, 개별 모델 하나만 사용하는 것보다 여러 모델을 사용하면 예측 성능을 향상시키고 과적합을 줄이는 데 효과적</li>
</ul>
<h2 id="보팅">보팅</h2>
<blockquote>
<p>모델들로 투표를 하여 결정하는 것</p>
</blockquote>
<ul>
<li>하드 보팅 : 여러 개의 분류기 간 투표를 하여 다수결로 최종 클래스 결정</li>
<li>소프트 보팅 : 여러 개의 분류기들의 클래스확률의 평균들을 계산한 후, 가장 평균이 높은 클래스로 결정하는 것</li>
</ul>
<h2 id="배깅">배깅</h2>
<blockquote>
<p>유사한 데이터 셋들로 각 학습기들의 결과를 만들어서 합침</p>
</blockquote>
<ul>
<li><p>핵심 : 여러 약한 학습기를 독립적으로 병렬 학습시킨 후 결과를 취합하여 분산을 감소시키고 과적합을 줄이는 방법</p>
</li>
<li><p>Bagging은 Bootstrap aggregating을 줄인 말</p>
</li>
<li><p>주로 분산(Variance)을 감소시켜 과적합을 줄이고 예측의 안정성을 높이는 데 효과적인 방법</p>
<ul>
<li>Bootstrap<ul>
<li>원본 데이터 셋으로부터 원본과 유사한 새로운 데이터 셋을 추출</li>
<li>이것을 Scikit-learn에서는 원본데이터에서 중복을 허용하여 무작위로 원본데이터의 갯수만큼 새로운 데이터 셋을 추출</li>
<li>즉, 이 데이터 셋들은 서로 유사하지만 서로 다른 데이터 셋들이다. 따라서 학습결과도 조금은 다 다르게 나올 것이다.</li>
</ul>
</li>
<li>aggregating<ul>
<li>모으다, 합치다라는 뜻</li>
<li>Bootstrap을 통해 여러 데이터 셋을 추출하고, 서로 다르게 학습시켜서, 그 예측값을(결과값들을) 합치는 것.</li>
<li>회귀 문제에서는 평균을 낼 것이고, 분류 문제에서는 빈도수를 기준으로 할 것이다.</li>
</ul>
</li>
</ul>
</li>
<li><p>보팅이랑 비슷해보이지만 다르다</p>
</li>
<li><p>대표적인 모델 : 랜덤 포레스트</p>
</li>
</ul>
<h2 id="부스팅">부스팅</h2>
<blockquote>
<p>“전보다 더 크거나 높게 하다”라는 뜻. 여러 모델을 데이터 셋을 바꾸며 순차적으로 연속해서 사용</p>
</blockquote>
<ul>
<li><p>핵심 : 이전 학습기가 잘못 예측한 데이터에 더 큰 가중치를 부여하며 다음 학습기를 훈련시켜 오차를 점진적으로 줄여나가는 방법 → 편향 감소, 예측 성능 향상</p>
</li>
<li><p>일부러 약한 학습기를 사용하여, 결과에 따라 뒤에 있는 모델이 사용할 데이터 셋을 바꾼다.</p>
</li>
<li><p>종합적으로 예측값들을 합칠 때, 성능이 좋은 모델의 예측에 더 큰 가중치를 부여한다.</p>
</li>
<li><p>배깅과 비슷한데 샘플링의 방법이 다르다.</p>
</li>
<li><p>배깅과 비교</p>
<ul>
<li>공통점 : 원본 데이터 집단으로부터 <strong>“원본과 유사한 새로운 데이터 집단”</strong>을 K번 추출하여 K번의 약학습기 학습을 진행. 둘 다 데이터 셋을 계속 바꾼다.</li>
<li>차이점 : Bagging은 K번의 샘플링을 독립적으로 수행, Boosting은 순차적으로 수행.</li>
</ul>
</li>
<li><p>앞선 결과에서 오차가 발생한 데이터에 가중치를 더 강하게 준 다음, 다음 샘플링을 수행함으로써 <strong>“오차가 발생했던 데이터를 또 틀리지 않도록 학습시킴”</strong> (틀린 데이터 위주로 집어넣는다)</p>
</li>
</ul>
<h3 id="종류">종류</h3>
<ul>
<li>AdaBoost(Adaptive Boosting, 적응 부스팅), GBM, XGBoost, LightGBM, MadaBoost, LogitBoost, CatBoost 등이 있다. Cost를 계산하는 방식이 서로 다름<ul>
<li>AdaBoost<ul>
<li>지수 손실로 계산</li>
<li>부스팅이나 배깅처럼 d개를 골라 사용하는 것이 아닌, 학습 데이터 전체를 사용.</li>
<li>초기 가중치를 균등하게 부여</li>
<li>작은 깊이의 Decision Tree 등 약한 학습기를 학습.(앙상블 특징이기도 함)</li>
<li>약한 학습기 대표적인 특징 : 평균적으로 50%보다 조금 좋은 성능을 냄</li>
</ul>
</li>
<li>Gradient Boosting Model(GBM)<ul>
<li>Gradient Descent + Boosting</li>
<li>Ada Boost와 유사하지만 경사하강법(Gradient Descent)을 사용하는 것이 차이점.</li>
<li>Overfitting의 문제가 있어서 Early Stop방식으로 해결</li>
</ul>
</li>
<li>XGBoost(eXtreme Gradient Boosing)<ul>
<li>대규모 데이터 세트에서 높은 성능을 발휘하며, 데이터 분석 경진 대회에서 자주 사용됨</li>
<li>정규화 기법을 통해 과적합을 방지하고 병렬 처리를 지원함</li>
</ul>
</li>
<li>LightGBM<ul>
<li>트리를 확장하는 방식 : Leaf-wise</li>
<li>Leaf-wise 방식이 빠른대신 과적합 위험이 있어서 파라미터 튜닝이 중요</li>
<li>높은 예측 성능, 다만 과적합 발생 가능성 up</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2 id="스태킹">스태킹</h2>
<blockquote>
<p>개별 모델의 예측 결과를 다시 학습 데이터로 활용하여, 이를 입력으로 받아 최종 예측을 수행하는 메타 모델을 훈련시키는 방식</p>
</blockquote>
<ul>
<li>모델 여러 개를 추론해놓은 다음에 똑같은 결괏값들로 다른 모델 학습시킨다.</li>
</ul>
<h2 id="앙상블-기법-정리">앙상블 기법 정리</h2>
<p>위 4가지 앙상블 기법의 공통점 : 여러 모델을 조합해서 더 좋은 성능을 얻는다는 것</p>
<p>차이점 : 조합하는 방식과 주로 해결하려는 문제가 다름.</p>
<table>
<thead>
<tr>
<th>구분</th>
<th>보팅 (Voting)</th>
<th>배깅 (Bagging)</th>
<th>부스팅 (Boosting)</th>
<th>스태킹 (Stacking)</th>
</tr>
</thead>
<tbody><tr>
<td><strong>핵심</strong></td>
<td>여러 <strong>독립적인</strong> 모델들의 <strong>&#39;예측값&#39;을 투표</strong> (또는 평균)하여 최종 결정</td>
<td>여러 약한 학습기를 <strong>&#39;독립적으로&#39;</strong> 병렬 학습시킨 후 결과 <strong>취합</strong> (주로 분산 감소)</td>
<td>약한 학습기들을 <strong>&#39;순차적으로&#39;</strong> 학습시키면서 이전 모델의 <strong>오류에 집중</strong> (주로 편향 감소)</td>
<td>여러 모델의 <strong>&#39;예측값 자체를&#39;</strong> 새로운 <strong>데이터(피처)로 활용</strong>하여 최종 모델 학습</td>
</tr>
<tr>
<td><strong>학습 방식</strong></td>
<td><strong>서로 다른 알고리즘</strong>을 가진 모델들이 각각 독립적으로 학습</td>
<td><strong>동일한 알고리즘</strong>을 가진 모델들이 <strong>부트스트랩 샘플링</strong>으로 생성된 <strong>서로 다른 데이터셋</strong>으로 독립 병렬 학습</td>
<td><strong>동일한 알고리즘</strong>을 가진 약한 학습기들이 이전 모델이 틀린 데이터에 <strong>가중치를 높여</strong> 주며 <strong>순차적으로</strong> 학습</td>
<td><strong>다양한 모델들을 학습</strong>시킨 후, 이 모델들의 예측값을 수집하여 또 다른 <strong>메타 모델</strong>이 학습</td>
</tr>
<tr>
<td><strong>결과 취합</strong></td>
<td>- <strong>하드 보팅</strong>: 다수결<br>- <strong>소프트 보팅</strong>: 확률 평균</td>
<td>- 분류: 다수결 (Voting)<br>- 회귀: 평균 (Averaging)</td>
<td>각 학습기의 <strong>성능에 비례한 가중치</strong>를 부여하여 합산 (AdaBoost)<br>이전 잔차를 예측하여 합산 (GBM 계열)</td>
<td>최종 메타 모델이 개별 모델의 예측값을 바탕으로 최종 예측</td>
</tr>
<tr>
<td><strong>주요 목표</strong></td>
<td>다양한 모델의 강점을 활용하여 예측 성능 향상</td>
<td><strong>모델의 분산(Variance) 감소</strong> 및 과적합(Overfitting) 방지. 더 <strong>안정적인</strong> 예측</td>
<td><strong>모델의 편향(Bias) 감소</strong> 및 예측 성능 극대화. 더 <strong>강력하고 정확한</strong> 예측</td>
<td>여러 모델의 강점을 조합하여 최상의 예측 성능 달성 (때로는 부스팅보다도 더 좋다고 함)</td>
</tr>
<tr>
<td><strong>비유</strong></td>
<td><strong>여러 전문가</strong> (각자 다른 전공)의 <strong>의견을 취합</strong>해서 최종 결정</td>
<td><strong>한 분야 전문가</strong> (A)를 여러 명 복제해서 <strong>각자 다른 정보</strong>를 주고 독립적으로 판단하게 한 후 의견 취합 (평균)</td>
<td><strong>한 분야 전문가</strong> (A)가 특정 문제를 틀리면 <strong>그 틀린 문제에 더 집중해서 계속 재학습</strong>시키는 방식으로 실력 향상</td>
<td><strong>여러 전문가</strong> (각자 다른 전공)에게 최종 판단을 맡기지 않고, 그 <strong>전문가들의 예측 결과</strong>를 보고 <strong>최종 의사결정자</strong>가 다시 한번 판단</td>
</tr>
<tr>
<td><strong>대표 모델</strong></td>
<td>로지스틱 회귀 + SVM + 결정 트리 조합 등</td>
<td><strong>랜덤 포레스트 (Random Forest)</strong></td>
<td><strong>AdaBoost</strong>, <strong>Gradient Boosting (GBM)</strong>, <strong>XGBoost</strong>, <strong>LightGBM</strong>, <strong>CatBoost 등..</strong></td>
<td></td>
</tr>
</tbody></table>
<br>

<h2 id="부스팅-모델의-특징과-장단점">부스팅 모델의 특징과 장단점</h2>
<p>앙상블 공부를 했으니 이번에는 부스팅 모델을 활용하여 자전거 수요 예측을 해볼 것이다.</p>
<p>여러 앙상블 기법 중에서 부스팅 모델을 자세히 살펴본 결과, 다음과 같이 정리해볼 수 있다.</p>
<h3 id="주요-특징">주요 특징</h3>
<ul>
<li>순차적 학습 : 이전 모델이 학습을 마친 후에 다음 모델이 학습을 시작한다는 특징</li>
<li>이전 모델의 오류에 집중 : 이전 모델이 잘못 분류하거나 오차가 컸던 데이터에 가중치를 부여하거나 예측 오차를 다음 모델의 정답으로 삼아서 학습</li>
<li>약한 학습기 사용 : 성능이 뛰어나지 않은 약한 학습기(ex 깊이가 얕은 결정 트리)를 기본 모델로 사용. 약한 모델들이 순차적으로 보완하며 합쳐져서 강력한 하나의 최종 모델이 됨.</li>
</ul>
<h3 id="장점">장점</h3>
<ul>
<li>높은 예측 성능</li>
<li>복잡한 패턴 학습</li>
<li>특성 중요도 제공(피처 중요도를 제공하여 모델을 해석하는 데 도움을 줌)</li>
</ul>
<h3 id="단점">단점</h3>
<ul>
<li>과적합 위험 ← 파라미터 튜닝 중요</li>
<li>노이즈에 민감 : 틀린 데이터나 예측 오류가 큰 데이터에 집중하는 특성 때문에 조심</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[결정 트리의 장점과 단점]]></title>
            <link>https://velog.io/@panda_love/%EA%B2%B0%EC%A0%95-%ED%8A%B8%EB%A6%AC%EC%9D%98-%EC%9E%A5%EC%A0%90%EA%B3%BC-%EB%8B%A8%EC%A0%90</link>
            <guid>https://velog.io/@panda_love/%EA%B2%B0%EC%A0%95-%ED%8A%B8%EB%A6%AC%EC%9D%98-%EC%9E%A5%EC%A0%90%EA%B3%BC-%EB%8B%A8%EC%A0%90</guid>
            <pubDate>Mon, 08 Dec 2025 01:10:29 GMT</pubDate>
            <description><![CDATA[<h1 id="결정-트리란">결정 트리란?</h1>
<h2 id="목차">목차</h2>
<ol>
<li><a href="#%EA%B2%B0%EC%A0%95-%ED%8A%B8%EB%A6%AC%EB%9E%80">결정 트리란?</a></li>
<li><a href="#%EC%9E%A5%EC%A0%90">장점</a></li>
<li><a href="#%EB%8B%A8%EC%A0%90">단점</a></li>
</ol>
<hr>
<blockquote>
<p>트리 구조를 기반으로 의사결정 규칙을 만들어 데이터를 분석하는 모델</p>
</blockquote>
<p>예/아니오 이렇게 확실한 답(and 한 번에 하나의 속성을 선택)이 나오는 질문들을 하고, 이 질문들에 답해나가면서 분류</p>
<p>이 때, 좋은 질문을 던져야 한다! 명확하게 질문하고 명확하게 답을 얻어야 불순도를 낮출 수 있다!</p>
<h3 id="참고-">참고 :</h3>
<ul>
<li><p>명확하게 답을 얻는다란? <strong>질문에 의해 나눠지는 답변의 카테고리가 확실한 것.</strong> 이것이 <strong>“정보획득”</strong>이고, “정보획득”의 계산 방법은 <strong>지니 계수</strong>와 <strong>엔트로피</strong>가 있다.</p>
</li>
<li><p>지니 불순도 : 데이터셋 안에 서로 다른 분류들이 얼만큼 섞여있는지 나타내는 지표로서, 작을수록 좋다.</p>
</li>
<li><p>지니 불순도가 얼마나 줄어드는지 확인하는 <strong>정보이득 공식</strong> : (분할 전 부모 노드의 지니계수) - (
  (왼쪽 자식 노드의 데이터 수)/(분할 후 전체 데이터 수)<em>(분할 후 왼쪽 자식 노드의 지니계수) + 
  (오른쪽 자식 노드의 데이터 수)/(분할 후 전체 데이터 수)</em>(분할 후 오른쪽 자식 노드의 지니계수)
)</p>
</li>
</ul>
<br>
밑은 계산 예시
<img src="https://velog.velcdn.com/images/panda_love/post/fb90fe2c-ac7e-44c8-a6f7-ffbeb63e0933/image.png" height="300px" alt="계산 예시 이미지">

<p>저렇게 섞인 데이터에서 바로 불순도를 낮추기 위해 대각선으로 나누면 좋겠지만, 질문 하나에 가로or세로 직선 하나씩 생긴다.
<img src="https://velog.velcdn.com/images/panda_love/post/e6c27d54-a228-46b2-bdf2-bb12e73c4a27/image.png" height="400px" alt="분류 경계 이미지"></p>
<p>이렇게 점점 분류되는 것이다.</p>
<p>결정 트리는 단순 수직선을 그리되, 이 수직선을 계속해서 그려나감으로써 복잡한 경계선을 만들어나가는 방법론이다.</p>
<p>스무 고개처럼 계속해서 질문을 하고, 수직선을 그려나간다.</p>
<h1 id="장점">장점</h1>
<ul>
<li>데이터를 분류하는 방법이 직관적이다.</li>
<li>어떤 속성이 얼마나 중요하게 사용됐는지 쉽게 알 수 있다.</li>
</ul>
<h1 id="단점">단점</h1>
<p>위에서 언급했듯, 결정 트리는 반복적 분할 방법론으로 학습을 진행한다.</p>
<p>따라서 <strong>훈련세트에 대하여 과적합(Overfitting)이 일어나기 쉽다</strong>.</p>
<p>이를 해결하기 위해 가지치기 방법론을 추가한다.</p>
<p>가지치기 방법은 여러 가지가 있다.</p>
<ol>
<li>트리의 최대 깊이(max_depth)를 설정하여 분할 횟수 제한하기</li>
<li>노드가 분할되기 위한 최소 샘플 수(min_samples_split)를 설정해주기</li>
<li>리프 노드가 되기 위한 최소 샘플 수(min_samples_leaf)를 설정해주기</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[K-폴드 교차 검증에서 K의 값을 선택할 때 고려해야 할 점]]></title>
            <link>https://velog.io/@panda_love/K-%ED%8F%B4%EB%93%9C-%EA%B5%90%EC%B0%A8-%EA%B2%80%EC%A6%9D%EC%97%90%EC%84%9C-K%EC%9D%98-%EA%B0%92%EC%9D%84-%EC%84%A0%ED%83%9D%ED%95%A0-%EB%95%8C-%EA%B3%A0%EB%A0%A4%ED%95%B4%EC%95%BC-%ED%95%A0-%EC%A0%90</link>
            <guid>https://velog.io/@panda_love/K-%ED%8F%B4%EB%93%9C-%EA%B5%90%EC%B0%A8-%EA%B2%80%EC%A6%9D%EC%97%90%EC%84%9C-K%EC%9D%98-%EA%B0%92%EC%9D%84-%EC%84%A0%ED%83%9D%ED%95%A0-%EB%95%8C-%EA%B3%A0%EB%A0%A4%ED%95%B4%EC%95%BC-%ED%95%A0-%EC%A0%90</guid>
            <pubDate>Thu, 04 Dec 2025 10:08:08 GMT</pubDate>
            <description><![CDATA[<h2 id="목차">목차</h2>
<ul>
<li><a href="#k-fold-%EA%B5%90%EC%B0%A8-%EA%B2%80%EC%A6%9D%EC%9D%B4%EB%9E%80">K-fold 교차 검증이란?</a><ul>
<li><a href="#%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80-120%EA%B0%9C%EC%9D%BC-%EB%95%8C-k-fold-%EA%B5%90%EC%B0%A8-%EA%B2%80%EC%A6%9D-%EC%98%88%EC%8B%9C">데이터가 120개일 때 K-fold 교차 검증 예시</a></li>
</ul>
</li>
<li><a href="#k%EC%9D%98-%EA%B0%92%EC%9D%84-%EC%84%A0%ED%83%9D%ED%95%A0-%EB%95%8C-%EA%B3%A0%EB%A0%A4%ED%95%B4%EC%95%BC-%ED%95%A0-%EC%A0%90">K의 값을 선택할 때 고려해야 할 점</a><ul>
<li><a href="#%EC%B0%B8%EA%B3%A0">참고</a></li>
</ul>
</li>
</ul>
<hr>
<h1 id="k-fold-교차-검증이란">K-fold 교차 검증이란?</h1>
<p>데이터를 한 번만 나눠서 평가하면, 나눈 데이터의 내용에 따라 모델 점수가 다르게 나올 수 있다.</p>
<p>따라서 학습, 검증, 테스트를 다 잘 한다고 한들 그 결과로 나온 모델의 성능점수가 진짜일지 믿기가 어려운 것이다.</p>
<p>이런 문제를 해결하기 위해, K-fold란 <strong>데이터를 똑같은 크기로 K개 조각(K개 폴드)로 쪼개서 여러 번 검증하는 방법</strong>이다.</p>
<p>보통은 K의 값을 5나 10으로 설정해준다.</p>
<h2 id="데이터가-120개일-때-k-fold-교차-검증-예시">데이터가 120개일 때 K-fold 교차 검증 예시</h2>
<p>훈련데이터 100개를 20개씩 5조각으로 나누고 순서대로 1, 2, 3, 4, 5라고 부르겠다</p>
<p><img src="https://velog.velcdn.com/images/panda_love/post/35922b63-788e-4d3b-bcc9-0d82e2105052/image.png" alt=""></p>
<ol>
<li>K-fold교차 검증을 위해 폴드를 나눔. 훈련데이터 100개 중 20개를 검증 데이터, 80개를 훈련 데이터로 하여 훈련 및 검증을 수행하고 점수를 측정</li>
<li>똑같이 5번 반복하여 각각의 점수를 전부 측정. 검증 결과가 총 5개가 나옴.</li>
<li>점수 평균을 구함</li>
</ol>
<p>→ 이렇게 검증 결과가 k개가 나온다.</p>
<p>훈련 데이터와 검증 데이터를 어떻게 쓰느냐에 따라 편차가 다르게 나오기 때문에 여러 번의 검증이 필요하다.</p>
<p>예를 들어, 위의 예시에서 데이터 1, 2, 3, 4로 강아지와 고양이를 분류하는 훈련을 하고 데이터 5로 검증하는 작업 한 번만 하고 끝났다면? 만약 이 때 데이터 5에 강아지 사진만 있었기에 점수가 잘 나온 것이라면?</p>
<p>그러면 이 모델은 강아지와 고양이를 잘 분류해서 점수를 잘 받은 것이 아니라, 강아지를 잘 훈련한 모델이 됐을 가능성이 있다는 것이다.</p>
<h1 id="k의-값을-선택할-때-고려해야-할-점">K의 값을 선택할 때 고려해야 할 점</h1>
<p>K의 값에 따라 모델이 과소평가 혹은 과대평가될 수 있으니 일반적으로 5나 10으로 먼저 사용하고, 데이터셋의 크기, 모델의 복잡성, 계산 자원 등을 고려하여서 조정하는 것이 좋다.</p>
<p>예를 들어, 학습 시간이 긴 복잡한 모델은 K값을 작게 설정하여 총 학습 반복 횟수를 줄이는 것이 현실적일 수 있겠고,</p>
<p>학습 시간이 짧은 단순한 모델은 K값을 크게 설정하여 더 정밀한 성능 추정을 시도해볼 수 있다.</p>
<h3 id="참고">참고</h3>
<p>K-fold는 타겟 변수의 분포까지 고려하지는 않는다.</p>
<p>따라서 특정 종류의 사진이 아주 적은 경우 등, 만약 데이터에 ‘클래스 불균형’이 있다면 일반적인 K-fold말고 <strong>“데이터 분할 시 타겟 변수의 클래스 비율을 유지하는”</strong> 계층적 K-fold가 더 좋다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[모델 학습 시 발생할 수 있는 편향과 분산]]></title>
            <link>https://velog.io/@panda_love/%EB%AA%A8%EB%8D%B8-%ED%95%99%EC%8A%B5-%EC%8B%9C-%EB%B0%9C%EC%83%9D%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94-%ED%8E%B8%ED%96%A5%EA%B3%BC-%EB%B6%84%EC%82%B0</link>
            <guid>https://velog.io/@panda_love/%EB%AA%A8%EB%8D%B8-%ED%95%99%EC%8A%B5-%EC%8B%9C-%EB%B0%9C%EC%83%9D%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94-%ED%8E%B8%ED%96%A5%EA%B3%BC-%EB%B6%84%EC%82%B0</guid>
            <pubDate>Thu, 04 Dec 2025 10:07:40 GMT</pubDate>
            <description><![CDATA[<h2 id="목차">목차</h2>
<ul>
<li><a href="#%ED%8E%B8%ED%96%A5bias%EC%9D%B4%EB%9E%80">편향(Bias)이란?</a><ul>
<li><a href="#%ED%8E%B8%ED%96%A5%EC%9D%84-%EC%A4%84%EC%9D%B4%EB%8A%94-%EB%B0%A9%EB%B2%95">편향을 줄이는 방법</a></li>
</ul>
</li>
<li><a href="#%EB%B6%84%EC%82%B0variance%EC%9D%B4%EB%9E%80">분산(Variance)이란?</a><ul>
<li><a href="#%EB%B6%84%EC%82%B0%EC%9D%84-%EC%A4%84%EC%9D%B4%EB%8A%94-%EB%B0%A9%EB%B2%95">분산을 줄이는 방법</a></li>
</ul>
</li>
<li><a href="#%ED%8E%B8%ED%96%A5%EA%B3%BC-%EB%B6%84%EC%82%B0%EC%9D%84-%ED%95%A8%EA%BB%98-%EC%9E%A1%EC%9D%84-%EC%88%98-%EC%97%86%EC%9D%84%EA%B9%8C">편향과 분산을 함께 잡을 수 없을까?</a></li>
</ul>
<hr>
<h1 id="편향bias이란">편향(Bias)이란?</h1>
<ul>
<li>단순한 모델이 데이터의 복잡한 패턴을 제대로 학습하지 못하는 경향</li>
<li>“모델에 편향이 크다” == “데이터에서 중요한 내용을 학습하지 못하고 있다”</li>
<li>결과가 한 쪽으로 치우치는 경향에 따라 오차 발생</li>
<li>ex) 선형 모델을 곡선 형태에 적용했을 시</li>
</ul>
<h3 id="편향을-줄이는-방법">편향을 줄이는 방법</h3>
<ul>
<li>데이터의 복잡도에 맞도록 더 복잡한 모델을 사용하기</li>
<li>레이어나 뉴런 수 늘리는 등 모델 특성 조정하기</li>
</ul>
<h1 id="분산variance이란">분산(Variance)이란?</h1>
<ul>
<li>복잡한 모델이 훈련 데이터의 노이즈까지 과하게 학습하여 성능이 떨어지는 경향</li>
<li>모델이 더 단순하고 일반화 가능한 형태를 유지하도록 돕기 위해 정규화기법 필요.</li>
<li>학습 데이터에 과하게 맞춰져 “과적합 상태”가 되어 예측 정확도 하락</li>
<li>복잡한 모델일수록 분산이 높아질 가능성이 높으니 주의</li>
</ul>
<h3 id="분산을-줄이는-방법">분산을 줄이는 방법</h3>
<ul>
<li>노이즈가 아닌 진짜 패턴을 학습하도록 돕기</li>
<li>불필요한 복잡도 줄이기</li>
<li>덜 중요한 특성 제거하거나 차원 축소하기</li>
<li>모델의 복잡도에 패널티를 부여하여 과적합을 방지하기(Regularization기법)
: 일반화 성능을 높이기 위해 모델에 일종의 규제를 가하는 기법</li>
</ul>
<h1 id="편향과-분산을-함께-잡을-수-없을까">편향과 분산을 함께 잡을 수 없을까?</h1>
<p>편향과 분산은 트레이드오프 관계이다. 반비례한다.</p>
<p>편향이 높고 분산이 낮거나,</p>
<p>편향이 낮고 분산이 높거나</p>
<p>크게는 보통 이렇게 두 가지로 볼 수 있다는 것이다.</p>
<p>그러므로 데이터의 양과 질을 확보하고, 모델의 복잡도를 조정하고, 앙상블 기법 등으로 이 둘 사이의 적절한 균형을 맞춰줘야 한다.</p>
]]></description>
        </item>
    </channel>
</rss>