<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>eunnam_ahn.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Mon, 01 Jun 2026 01:14:14 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>eunnam_ahn.log</title>
            <url>https://velog.velcdn.com/images/eunnam_ahn/profile/f27f936f-8f30-47d4-ba0e-8b91d42cc878/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. eunnam_ahn.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/eunnam_ahn" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[위클리 페이퍼 #9-3 GAN의 생성자(Generator)와 판별자(Discriminator)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-9-3-GAN%EC%9D%98-%EC%83%9D%EC%84%B1%EC%9E%90Generator%EC%99%80-%ED%8C%90%EB%B3%84%EC%9E%90Discriminator</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-9-3-GAN%EC%9D%98-%EC%83%9D%EC%84%B1%EC%9E%90Generator%EC%99%80-%ED%8C%90%EB%B3%84%EC%9E%90Discriminator</guid>
            <pubDate>Mon, 01 Jun 2026 01:14:14 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/0f3aade2-e996-45af-a768-c8c743df07ea/image.png" alt=""></p>
<h2 id="🇶-gan에서-생성자generator와-판별자discriminator의-역할은-각각-무엇인가요">🇶 GAN에서 생성자(Generator)와 판별자(Discriminator)의 역할은 각각 무엇인가요?</h2>
<p>GAN(Generative Adversarial Networks, 생성적 적대 신경망)은 두 개의 서로 다른 신경망이 서로 경쟁하며 학습하는 독특한 구조를 가지고 있습니다. 이 구조는 흔히 &#39;위조지폐범(생성자)&#39;과 &#39;경찰(판별자)&#39;의 게임에 비유됩니다.</p>
<p>두 모델의 구체적인 역할과 학습 방식은 다음과 같습니다.</p>
<h3 id="1-생성자-generator의-역할-위조지폐범">1. 생성자 (Generator)의 역할: &quot;위조지폐범&quot;</h3>
<ul>
<li><strong>목적</strong>: 진짜와 구별할 수 없을 정도로 정교한 가짜 데이터(Fake Data)를 생성하는 것입니다.</li>
<li><strong>작동 방식</strong>: 무작위 노이즈(Random Noise, z)를 입력받아 합성곱(Convolution) 등의 연산을 거쳐 이미지나 텍스트 같은 새로운 데이터를 만들어냅니다.</li>
<li><strong>학습 방향</strong>: 판별자(Discriminator)를 속이는 것이 목표입니다. 즉, 자신이 만든 가짜 데이터를 판별자에게 주었을 때 &quot;이것은 진짜(1)다&quot;라는 판정을 내리도록 생성자의 가중치(Weights)를 업데이트합니다.</li>
</ul>
<h3 id="2-판별자-discriminator의-역할-경찰">2. 판별자 (Discriminator)의 역할: &quot;경찰&quot;</h3>
<ul>
<li><strong>목적</strong>: 입력받은 데이터가 진짜 데이터(Real Data)인지, 생성자가 만든 가짜 데이터(Fake Data)인지 구별하는 것입니다.</li>
<li><strong>작동 방식</strong>: 실제 데이터셋에서 가져온 이미지나 생성자가 만든 가짜 이미지를 입력받아, 이것이 진짜일 확률을 0과 1 사이의 값으로 출력하는 분류기(Classifier) 역할을 합니다.</li>
<li><strong>학습 방향</strong>: 실제 데이터가 들어오면 &#39;진짜(1)&#39;로, 생성자가 만든 데이터가 들어오면 &#39;가짜(0)&#39;로 정확하게 분류하도록 가중치를 업데이트합니다.</li>
</ul>
<h3 id="3-두-모델의-적대적-경쟁과-목표-minmax-게임">3. 두 모델의 적대적 경쟁과 목표 (minmax 게임)</h3>
<p>GAN의 핵심은 두 모델이 적대적(Adversarial)으로 함께 성장한다는 점입니다.</p>
<ul>
<li><strong>초기 단계</strong>: 생성자가 아주 어설픈 가짜를 만들면, 판별자는 이를 쉽게 잡아냅니다.</li>
<li><strong>발전 단계</strong>: 판별자에게 잡히지 않기 위해 생성자는 더 정교한 가짜를 만들고, 판별자는 이를 또 잡아내기 위해 더 똑똑해집니다.</li>
<li><strong>이상적인 종착지 (Nash Equilibrium)</strong>: 이 경쟁이 반복되면, 결국 생성자는 진짜와 완벽히 똑같은 데이터를 만들게 되고, 판별자는 진짜와 가짜를 도저히 구별할 수 없는 상태(찍는 확률인 0.5 또는 50%)에 도달하게 됩니다.</li>
</ul>
<p>수학적으로는 생성자(G)는 판별자가 가짜를 가짜로 알아채지 못하게 오차를 최소화(min)하려 하고, 판별자(D)는 진짜와 가짜를 완벽히 구별하기 위해 오차를 최대화(max)하려는 <code>minmax 게임</code>의 형태로 학습이 진행됩니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[위클리 페이퍼 #9-2 Fully Convolutional Networks (FCN)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-9-2-Fully-Convolutional-Networks-FCN</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-9-2-Fully-Convolutional-Networks-FCN</guid>
            <pubDate>Mon, 01 Jun 2026 00:39:30 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/c8773535-e177-40a7-b8bc-96ed4658de3f/image.png" alt=""></p>
<h2 id="🇶-fully-convolutional-networksfcn의-주요-특징과-기존-cnn-기반-분류-모델과의-차이점은-무엇인가요">🇶 Fully Convolutional Networks(FCN)의 주요 특징과 기존 CNN 기반 분류 모델과의 차이점은 무엇인가요?</h2>
<p>Fully Convolutional Networks(FCN)는 이미지 구조를 유지하면서 픽셀 단위로 예측을 수행할 수 있도록 고안된, 시맨틱 세그멘테이션(Semantic Segmentation) 분야의 기념비적인 모델입니다.</p>
<h3 id="1-fcn의-주요-특징">1. FCN의 주요 특징</h3>
<p><strong>픽셀 단위 예측 (Dense Prediction)</strong>
기존 분류 모델은 이미지를 하나의 카테고리로 압축하지만, FCN은 이미지의 모든 픽셀이 각각 어떤 클래스에 속하는지 예측합니다. 이를 위해 FC 레이어를 제거하고 모든 과정을 Convolution 레이어로만 구성했습니다.</p>
<p><strong>입력 이미지 크기의 자유로움</strong>
FC 레이어는 입력 노드의 개수가 고정되어야 하므로 입력 이미지의 크기를 제한하는 원인이 됩니다. 반면, FCN은 전체 네트워크가 합성곱 필터로만 이루어져 있기 때문에, 입력 이미지의 크기에 상관없이 sliding window 방식으로 연산을 수행할 수 있습니다.</p>
<p><strong>Up-sampling (Transposed Convolution)</strong>
합성곱(Convolution)과 풀링(Pooling) 과정을 거치면 특징 맵(Feature Map)의 크기가 줄어들고 해상도가 낮아집니다. FCN은 줄어든 특징 맵을 다시 원래 이미지 크기로 키우기 위해 Up-sampling(주로 Transposed Convolution 사용) 과정을 수행합니다.</p>
<p><strong>스킵 커넥션 (Skip Connection)을 통한 디테일 복원</strong>
특징 맵을 단순히 크게 키우기만 하면 경계선 같은 정교한 로컬(Local) 정보가 뭉개집니다. FCN은 이를 해결하기 위해 Skip Connection을 도입했습니다.</p>
<ul>
<li>네트워크 앞쪽(얕은 층)의 정교한 위치 정보(Spatial Information)를 뒷쪽(깊은 층)의 추상적인 클래스 정보(Semantic Information)와 결합합니다.</li>
<li>결합하는 수준에 따라 FCN-32s, FCN-16s, FCN-8s로 나뉘며, 더 앞쪽의 맵을 많이 결합할수록(FCN-8s 쪽으로 갈수록) 세그멘테이션 결과가 훨씬 정교해집니다.</li>
</ul>
<p>기존의 CNN 기반 분류(Classification) 모델과 비교하여 FCN이 가진 주요 특징과 차이점은 다음과 같습니다.</p>
<h3 id="2-핵심-차이점-fc-레이어-vs-1x1-합성곱-레이어">2. 핵심 차이점: FC 레이어 vs 1x1 합성곱 레이어</h3>
<p>기존 CNN 분류 모델(AlexNet, VGGNet 등)과 FCN의 가장 결정적인 차이점은 네트워크 뒷부분에 위치한 <code>Fully Connected(FC) 레이어의 존재 여부</code>입니다.</p>
<table>
<thead>
<tr>
<th align="center">구분</th>
<th align="center">기존 CNN 분류 모델</th>
<th align="center">Fully Convolutional Networks (FCN)</th>
</tr>
</thead>
<tbody><tr>
<td align="center"><strong>네트워크 종단부</strong></td>
<td align="center"><strong>Fully Connected (FC) 레이어</strong> 사용</td>
<td align="center">1x1 Convolution 레이어로 대체 (Convolutionalization)</td>
</tr>
<tr>
<td align="center"><strong>입력 이미지 크기</strong></td>
<td align="center">고정된 크기만 가능(예: 224x224)</td>
<td align="center"><strong>어떤 크기의 이미지든 입력 가능</strong></td>
</tr>
<tr>
<td align="center"><strong>출력 형태</strong></td>
<td align="center">클래스별 확률값 (1차원 벡터)</td>
<td align="center">입력 이미지에 대응하는 <strong>2차원 위치 정보 (Feature Map)</strong></td>
</tr>
<tr>
<td align="center"><strong>주요 목적</strong></td>
<td align="center">이미지 전체가 &quot;무엇(What)&quot;인지 분류</td>
<td align="center">이미지 내 객체가 &quot;어디에(Where)&quot; 어떤 형태로 있는지 분류</td>
</tr>
</tbody></table>
<h3 id="3-요약">3. 요약</h3>
<p>기존 CNN 분류 모델이 이미지 안의 정보를 압축하여 &quot;무엇이 있는가&quot;에만 집중했다면, FCN은 <code>&quot;무엇이 어디에, 어떤 모양으로 있는가&quot;</code>를 픽셀 단위로 밝혀내기 위해 구조를 완전히 컨볼루션화(Convolutionalization)한 모델입니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[위클리 페이퍼 #9-1 의미론적 분할 (Semantic Segmentation)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-9-1-%EC%9D%98%EB%AF%B8%EB%A1%A0%EC%A0%81-%EB%B6%84%ED%95%A0-Semantic-Segmentation</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-9-1-%EC%9D%98%EB%AF%B8%EB%A1%A0%EC%A0%81-%EB%B6%84%ED%95%A0-Semantic-Segmentation</guid>
            <pubDate>Mon, 20 Apr 2026 01:16:38 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/fd6c542a-9867-4327-931c-e190d5eaa181/image.png" alt=""></p>
<h2 id="🇶-semantic-segmentation이란-무엇이며-이미지-분류classification와-어떤-차이가-있나요">🇶 Semantic Segmentation이란 무엇이며, 이미지 분류(Classification)와 어떤 차이가 있나요?</h2>
<p>Semantic Segmentation은 이미지의 모든 픽셀에 대해 어떤 클래스에 속하는지를 분류하는 컴퓨터 비전 기술입니다. 단순히 &quot;이미지에 뭐가 있나?&quot;를 넘어서, &quot;이미지의 모든 점이 어디에 속하는가?&quot;를 답하는 것이죠.</p>
<h3 id="1-주요-특징">1. 주요 특징</h3>
<p><strong>Dense Prediction (조밀한 예측)</strong>
이미지 분류가 하나의 벡터 값을 출력한다면, Semantic Segmentation은 이미지의 모든 위치에 대해 예측을 수행합니다. 따라서 출력물은 보통 원본 이미지와 해상도가 같은 세그멘테이션 맵 (Segmentation Map) 형태를 띱니다.</p>
<p><strong>동일 클래스 미구분</strong>
Semantic Segmentation은 같은 클래스에 속하는 서로 다른 개체들을 구분하지 않습니다. 예를 들어, 한 사진에 강아지 세 마리가 있다면 이들을 개별적인 &#39;강아지 1, 2, 3&#39;으로 나누지 않고, 그저 &#39;강아지&#39;라는 하나의 영역(Class)으로 묶어서 표시합니다.</p>
<blockquote>
<p>참고: 개체별로 구분하는 기술은 Instance Segmentation이라고 부른다.</p>
</blockquote>
<h3 id="2-작동-원리-및-구조">2. 작동 원리 및 구조</h3>
<p>대부분의 현대적 세그멘테이션 모델은 FCN (Fully Convolutional Network) 구조를 기반으로 하며, 크게 두 부분으로 나뉩니다.</p>
<ul>
<li><strong>Encoder (Feature Extraction)</strong>: 이미지의 특징을 추출하는 과정이다. 이 과정에서 이미지의 크기는 줄어들고(Downsampling), 추상적인 정보(무엇인지)를 학습합니다.</li>
<li><strong>Decoder (Localization)</strong>: 줄어든 정보를 다시 원본 이미지 크기로 복원하는 과정입니다 (Upsampling). 이를 통해 각 특징이 이미지의 &#39;어느 위치&#39;에 있는지 정교하게 맞춰나갑니다.</li>
</ul>
<h3 id="3-활용-분야">3. 활용 분야</h3>
<ul>
<li><strong>자율주행</strong>: 도로, 보행자, 차량, 표지판 등의 영역을 픽셀 단위로 파악하여 주행 경로를 결정합니다.</li>
<li><strong>의료 영상 분석</strong>: MRI나 CT 영상에서 종양의 위치와 크기를 정확히 측정합니다.</li>
<li><strong>사진 편집 및 증강 현실 (AR)</strong>: 인물의 배경을 제거하거나(누끼 따기), 가상의 배경을 합성할 때 사용됩니다.</li>
</ul>
<h3 id="4-이미지-분류-classification와의-차이점">4. 이미지 분류 (Classification)와의 차이점</h3>
<p>이미지 분류와 세그멘테이션은 정보를 추출하는 정밀도에서 큰 차이를 보인다.</p>
<table>
<thead>
<tr>
<th align="center">구분</th>
<th align="center">이미지 분류 (Classification)</th>
<th align="center">의미론적 분할 (Semantic Segmentation)</th>
</tr>
</thead>
<tbody><tr>
<td align="center">단위</td>
<td align="center">이미지 전체 (Image-level)</td>
<td align="center">픽셀 (Pixel-level)</td>
</tr>
<tr>
<td align="center">목표</td>
<td align="center">이미지에 어떤 물체가 있는지 라벨링</td>
<td align="center">모든 픽셀이 어떤 클래스에 속하는지 분류</td>
</tr>
<tr>
<td align="center">결과</td>
<td align="center">&quot;이 사진은 고양이 사진이다.&quot;</td>
<td align="center">&quot;이 픽셀은 고양이, 저 픽셀은 배경이다.&quot;</td>
</tr>
<tr>
<td align="center">출력</td>
<td align="center">클래스 확률 값 (예: Dog 90%)</td>
<td align="center">입력 이미지와 크기가 같은 마스크(Mask)</td>
</tr>
</tbody></table>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/623b1ccf-ebc5-4303-b055-dfd8a2bed15b/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[데이터 분석] 관련 정리]]></title>
            <link>https://velog.io/@eunnam_ahn/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EA%B4%80%EB%A0%A8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@eunnam_ahn/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EA%B4%80%EB%A0%A8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 09 Apr 2026 07:27:28 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-1-파이썬-데이터-분석에서의-정규화표준화는-무엇이고-어떤-공식을-사용해서-진행할-수-있나요">문제 1. 파이썬 데이터 분석에서의 정규화/표준화는 무엇이고, 어떤 공식을 사용해서 진행할 수 있나요?</h3>
<p><code>정규화(Normalization)</code>와 <code>표준화(Standardization)</code>는 데이터의 스케일을 통일하는 전처리 기법입니다. 각 피처마다 단위나 스케일이 다른 경우, 머신러닝 모델이 왜곡된 결과를 도출할 수 있기 때문에 반드시 필요합니다.</p>
<ol>
<li><strong>정규화</strong>: 데이터의 범위를 0과 1 사이로 압축하는 방법입니다. 데이터의 최소값과 최대값을 알 때 유용하며, 데이터의 분포가 균등할 때 효과적입니다. 이상치(outlier)에 매우 민감하다는 단점이 있습니다. 공식은 다음과 같습니다. 
$$ x_{new}=(x-x_{min})/(x_{max}-x_{min}) 
$$</li>
<li><strong>표준화</strong>: 데이터의 평균을 0, 표준편차를 1이 되도록 변환하는 방법입니다 (데이터를 표준정규분포의 형태로 만드는 과정). 데이터에 이상치가 포함되어있는 경우, 정규화보다 훨씬 안정적입니다. 공식은 다음과 같습니다.
$$ z = (x - \mu) / \sigma
$$</li>
</ol>
<p>($\mu$: 평균, $\sigma$: 표준편차)</p>
<h3 id="문제-2-모집단과-표본이-무엇인지-간략하게-설명해-주세요">문제 2. 모집단과 표본이 무엇인지 간략하게 설명해 주세요.</h3>
<p>통계학에서 분석하고자 하는 대상의 전체와 그 일부를 각각 <code>모집단(population)</code>과 <code>표본(sample)</code>이라고 부릅니다. </p>
<ol>
<li><p><strong>모집단 (Population)</strong>: 연구자가 알고 싶어하는 조사 대상 전체를 일컫습니다. 보통 규모가 너무 크거나 물리적으로 접근 불가능한 경우가 많기 때문에, 전수조사를 하기에는 시간과 비용이 막대하게 듭니다.</p>
</li>
<li><p><strong>표본 (Sample)</strong>: 모집단에서 실제로 조사하기 위해 추출된 일부를 말합니다. 표본은 모집단을 대표할 수 있어야하며, 표본을 통해 얻은 통계량(Statistics)으로 모집단의 특성을 추측합니다. 표본이 모집단의 특성을 잘 반영하게끔 <code>&#39;무작위성(Randomness)&#39;</code>을 확보하는 것이 매우 중요합니다.</p>
</li>
</ol>
<h3 id="문제-3-인스턴스-변수와-클래스-변수를-비교해서-간략하게-설명해-주세요">문제 3. 인스턴스 변수와 클래스 변수를 비교해서 간략하게 설명해 주세요.</h3>
<p>파이썬의 클래스 내에서 사용하는 변수는 그 소유주가 개별 객체(인스턴스)인지, 아니면 클래스 전체인지에 따라 성격이 완전히 달라집니다.</p>
<ol>
<li><p><strong>인스턴스 변수 (Instance Variable)</strong>
각 객체(인스턴스)마다 독립적으로 가지는 변수입니다. 객체마다 서로 다른 값을 저장해야 할 때 사용합니다. 주로 <strong>init</strong> 메서드 안에서 self.변수명으로 선언합니다. 한 객체에서 값을 변경해도 다른 객체의 변수 값에는 아무런 영향을 주지 않는 특징이 있습니다.</p>
</li>
<li><p><strong>클래스 변수 (Class Variable)</strong>
해당 클래스로 생성된 모든 객체가 공유하는 변수입니다. 클래스 내의 모든 인스턴스가 공통된 값을 가져야 할 때 사용합니다. 클래스 내부, 메서드 외부에서 &quot;변수명 = 값&quot; 형태로 선언합니다. 클래스 이름을 통해 접근하며, 값이 변경되면 모든 인스턴스가 그 변경된 값을 공유합니다.</p>
</li>
</ol>
<h3 id="문제-4-수치형-데이터와-범주형-데이터는-무엇인가요-예시를-들어-설명해-주세요">문제 4. 수치형 데이터와 범주형 데이터는 무엇인가요? 예시를 들어 설명해 주세요.</h3>
<ol>
<li><p><strong>수치형 데이터 (Numerical Data)</strong>
숫자로 표현되며 사칙연산(덧셈, 뺄셈 등)이 가능한 데이터입니다. 양이나 크기를 나타냅니다. 연속형과 이산형으로 나눌 수 있습니다.</p>
<ul>
<li>연속형 (Continuous): 일정 범위 안에서 어떤 값도 가질 수 있는 데이터입니다. 소수점으로 무한히 나눌 수 있는 경우가 많습니다. 키(170cm), 몸무게(60kg), 온도, 시간 등이 해당됩니다.</li>
<li>이산형 (Discrete): 개수를 셀 수 있는 데이터로, 보통 정수 형태로 나타납니다. 가족 구성원수(3명), 사건사고 숫자(2건), 책 권수(1권) 등이 해당됩니다.</li>
</ul>
</li>
<li><p><strong>범주형 데이터 (Categorical Data)</strong>
숫자가 아닌 특성이나 종류를 나타내는 데이터입니다. 숫자로 표시되더라도 크기나 양의 의미가 없어 계산할 수 없다는 특징이 있습니다.</p>
<ul>
<li>명목형 (Nominal): 순서나 서열이 없는 데이터입니다. 단순히 분류를 위한 이름표 역할을 합니다. 성별(남/여), 혈액형(A/B/O/AB), 거주지역(서울/부산) 등이 여기에 해당합니다.</li>
<li>순서형 (Ordinal): 범주 간에 명확한 순서나 계급이 존재하는 데이터입니다. 성적(A/B/C), 만족도(매우 만족/만족/불만족), 직급(대리/과장/차장) 등이 여기에 해당합니다.</li>
</ul>
</li>
</ol>
<h3 id="문제-5-클래스와-인스턴스가-무엇인지-간략하게-설명해-주세요">문제 5. 클래스와 인스턴스가 무엇인지 간략하게 설명해 주세요.</h3>
<p>객체 지향 프로그래밍에서 <code>클래스</code>와 <code>인스턴스</code>는 <code>&#39;설계도&#39;</code>와 <code>&#39;실제 물건&#39;</code>의 관계라고 이해하면 됩니다.</p>
<ol>
<li><p><strong>클래스 (Class)</strong>:
객체를 만들기 위한 <code>설계도</code> 또는 <code>틀</code>입니다. 어떤 데이터(속성)를 가지고 어떤 동작(메서드)을 할지 정의해 놓은 상태를 말합니다. 실체가 아니며, 메모리에 직접 올라가서 동작하는 단계가 아닙니다. 붕어빵 틀, 자동차 설계도, 아파트 도면을 생각하면 이해가 쉽습니다.</p>
</li>
<li><p><strong>인스턴스 (Instance)</strong>:
클래스라는 설계도를 바탕으로 메모리에 실제 구현된 객체를 의미합니다. 설계도대로 만들어진 구체적인 <code>&#39;실물&#39;</code>입니다. 하나의 클래스로부터 여러 개의 독립적인 인스턴스를 만들 수 있으며, 각 인스턴스는 자신만의 고유한 데이터를 가질 수 있습니다. 틀에서 구워져 나온 붕어빵, 도로를 달리는 실제 자동차, 완공된 아파트 A동 등을 생각하면 되겠습니다.</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[코드잇 스프린트 8주차 회고]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%BD%94%EB%93%9C%EC%9E%87-%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-8%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%BD%94%EB%93%9C%EC%9E%87-%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-8%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0</guid>
            <pubDate>Wed, 08 Apr 2026 02:06:50 GMT</pubDate>
            <description><![CDATA[<p>이번주에도 역시 5L 방법을 통해 회고를 진행해보았습니다.</p>
<h3 id="🟥-fact-사실">🟥 Fact (사실)</h3>
<p>이란 전쟁을 틈틈이 팔로우 중인데, 흥미로운 지표를 하나 알게 되었습니다. <code>펜타곤 피자 지수 (Pentagon Pizza Index)</code>인데, 미국 국제 정세 개입 또는 국제 분쟁이 임박할 때 미국 국방부 본부 청사인 펜타곤 주변 피자 가게에 주문이 폭주한다는 가설입니다. </p>
<p>상세한 논거는 다음과 같습니다.</p>
<ul>
<li>미국 정부에서 국제 분쟁과 위기 대응이 임박했다 판단하면, 펜타곤 내 3만 명에 달하는 미국 국방부 직원들이 비상근무에 돌입해 저녁 늦게까지 야근과 철야 회의를 할 것입니다.</li>
<li>미국 국방부 공직자들도 어쨌든 사람인 이상 철야를 뛰면 뭔가를 먹어야합니다. 미국 국방부가 야근하는 상황이면 당연히 긴급 상황일테니 나가서 먹을 수는 없을 것이고 본부 업무공간 내에서 식사를 해결할 것입니다.</li>
<li>그렇게 공직자들은 값싸고 다같이 먹기 무난한 피자를 시키는데, 펜타곤은 116,000 m²인 광대한 면적에 3만 명에 달하는 인원이 근무하는 거대한 시설이다. 제아무리 기밀 시설인 펜타곤이어도 그 큰 건물에 들락날락거리는 사람들 숫자를 전부 숨길 수는 없습니다.</li>
</ul>
<p>사이트: <a href="https://www.pizzint.watch/">https://www.pizzint.watch/</a></p>
<h3 id="🟧-feeling-느낌">🟧 Feeling (느낌)</h3>
<p>바이브코딩으로 만든 사이트라고 하는데, 일상 생활에서 이런 아이디어를 바탕으로 재미있는, 또는 유용한 사이트를 만들어보는 것도 엔지니어로서 좋은 자세인 것 같다는 생각이 들었습니다. </p>
<h3 id="🟨-finding-배운-점발견">🟨 Finding (배운 점/발견)</h3>
<p>펜타곤 피자 지수는 구글 지도가 제공하는 <code>&#39;실시간 방문자 수(Live Busyness)&#39;</code>를 핵심 데이터로 쓴다고 합니다 (구글은 전 세계 수억 명의 안드로이드 및 아이폰 사용자로부터 수집한 익명의 위치 기록 데이터를 활용해 특정 장소가 평소보다 얼마나 붐비는지 실시간으로 계산한다고 합니다).</p>
<p>우리나라에서도 비슷한 방식으로 만들어볼 수 있을지 궁금해서 우리나라에서 활용 가능한 주요 서비스를 한번 알아보았습니다.</p>
<h4 id="1-서울-실시간-도시데이터">1. 서울 실시간 도시데이터</h4>
<p>서울시에서 제공하는 서비스로, 주요 명소(강남역, 홍대, 성수동 등) 115곳의 실시간 인구 혼잡도를 제공합니다. KT의 통신 기지국 신호와 공공 데이터를 결합해 만들었습니다.</p>
<ul>
<li>제공 정보: &#39;여유&#39;, &#39;보통&#39;, &#39;붐빔&#39;, &#39;매우 붐빔&#39; 4단계 지표와 실시간 인구 수.</li>
<li>활용 방법: 서울 열린데이터 광장에서 API를 신청해 Python으로 가져올 수 있습니다.</li>
<li>특이사항: 특정 식당 하나하나의 데이터는 아니지만, <strong>&#39;해당 상권 전체가 야근이나 인파로 붐비는지&#39;</strong>를 파악하기에 가장 좋습니다.</li>
</ul>
<h4 id="2-skt-지오비전-퍼즐-sk-open-api">2. SKT 지오비전 퍼즐 (SK Open API)</h4>
<p>SK텔레콤에서 운영하는 빅데이터 플랫폼입니다. 통신 데이터를 기반으로 특정 장소 (POI)의 혼잡도를 제공합니다.</p>
<ul>
<li>제공 정보: 특정 건물의 실시간 혼잡도 및 시간대별 통계 데이터.</li>
<li>활용 방법: SK Open API에서 &#39;장소 혼잡도&#39; API를 통해 데이터를 요청할 수 있습니다.</li>
<li>장점: 구글 지도처럼 <strong>&#39;특정 장소 ID (POI ID)&#39;</strong>를 기준으로 데이터를 주기 때문에 개발자가 활용하기에 매우 직관적입니다.</li>
</ul>
<h4 id="3-지하철-혼잡도-데이터">3. 지하철 혼잡도 데이터</h4>
<p>&#39;피자 지수&#39;가 펜타곤 직원의 야근을 체크한다면, 한국에서는 <strong>&#39;지하철 실시간 혼잡도&#39;</strong>가 비슷한 역할을 할 수 있습니다.</p>
<ul>
<li>제공처: 서울교통공사, SKT (T-map) 등.</li>
<li>데이터: 현재 열차 칸별로 사람이 얼마나 타고 있는지 실시간 비율 (%)을 제공합니다. 늦은 밤 특정 노선의 혼잡도가 올라간다면 대규모 행사나 이벤트를 짐작할 수 있습니다.</li>
</ul>
<h3 id="🟩-future-action-향후-계획">🟩 Future Action (향후 계획)</h3>
<p>일상 생활 속에서 아이디어를 얻기 위해 항상 열린 마음으로 세상을 바라보는 연습을 해야겠다는 생각이 들었습니다. </p>
<h3 id="🟦-feedback-피드백">🟦 Feedback (피드백)</h3>
<p>이번에는 특별한 피드백은 없었습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[위클리 페이퍼 #8-2 mAP (mean Average Precision)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-8-2-mAP-mean-Average-Precision</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-8-2-mAP-mean-Average-Precision</guid>
            <pubDate>Tue, 07 Apr 2026 00:31:46 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/6ff32353-4366-48c0-8cfe-a3cd076fdf7e/image.png" alt=""></p>
<h2 id="🇶-mapmean-average-precision의-개념이-무엇이며-객체-인식에서-어떻게-활용되는지-설명해주세요">🇶 mAP(mean Average Precision)의 개념이 무엇이며 객체 인식에서 어떻게 활용되는지 설명해주세요.</h2>
<p>mAP(mean Average Precision)는 객체 인식(Object Detection) 모델의 성능을 평가하는 대표적인 지표입니다. 단순히 <code>정확도</code>를 측정하는 것이 아니라, 모델이 객체를 얼마나 정확한 위치에서 제대로 분류했는지를 종합적으로 나타냅니다.</p>
<h3 id="1-map의-핵심-개념">1. mAP의 핵심 개념</h3>
<p>mAP를 이해하기 위해서는 먼저 <code>Precision(정밀도)</code>과 <code>Recall(재현율)</code>, 그리고 이들의 관계를 나타내는 <code>PR 곡선</code>을 알아야 합니다.</p>
<ul>
<li><strong>Precision (정밀도)</strong>: 모델이 탐지했다고 예측한 결과 중 실제 정답(Ground Truth)의 비율입니다.</li>
<li><strong>Recall (재현율)</strong>: 실제 정답 중 모델이 빠뜨리지 않고 탐지해낸 비율입니다.</li>
<li><strong>AP (Average Precision)</strong>: 특정 클래스에 대해 PR 곡선 아래의 면적을 계산한 값이다. 보통 Precision과 Recall은 반비례 관계에 있는데, 이를 하나의 수치로 요약한 것이 AP입니다.</li>
<li><strong>mAP (mean Average Precision)</strong>: 각 클래스별 AP 값을 모두 합쳐 클래스 개수로 나눈 평균값입니다.</li>
</ul>
<h3 id="2-계산-과정-iou와-threshold">2. 계산 과정: IoU와 Threshold</h3>
<p>mAP 계산에서 가장 중요한 전제 조건은 <code>IoU(Intersection over Union)</code>입니다.</p>
<ul>
<li><strong>IoU</strong>: 모델이 예측한 상자(Bounding Box)와 실제 정답 상자가 얼마나 겹치는지를 나타내는 지표(0~1 사이)입니다.</li>
<li>보통 IoU가 <code>0.5 이상</code>일 때 올바르게 탐지한 것으로 간주합니다. (이를 <a href="mailto:mAP@0.5">mAP@0.5</a>라고 표현함)</li>
<li>최근에는 성능을 더 엄격하게 평가하기 위해 IoU 임계값을 0.5부터 0.95까지 변화시키며 평균을 내는 <code>mAP@[.5:.95]</code> 방식을 주로 사용합니다.</li>
</ul>
<h3 id="3-객체-인식에서의-활용">3. 객체 인식에서의 활용</h3>
<p>객체 인식 분야에서 mAP가 표준 지표로 활용되는 이유는 다음과 같습니다.</p>
<ul>
<li><strong>복합적인 성능 평가</strong>: 모델이 물체의 위치를 정확히 찾았는지(Localization)와 종류를 맞혔는지(Classification)를 동시에 평가할 수 있습니다.</li>
<li><strong>클래스 불균형 해소</strong>: 단순히 전체 정확도를 따지면 데이터가 많은 클래스에 편향될 수 있지만, mAP는 클래스별로 AP를 구한 뒤 평균을 내므로 공정한 평가가 가능합니다.</li>
<li><strong>검출 한계 측정</strong>: 모델이 얼마나 낮은 신뢰도(Confidence Score)까지 정답으로 인정할 것인가에 따른 성능 변화를 한눈에 파악할 수 있습니다.</li>
</ul>
<h3 id="📊-요약">📊 요약</h3>
<p>$$
\displaystyle
mAP=\frac 1 N
\sum_{i=1}^{N}AP_{i}
$$
(여기서 N은 클래스의 총 개수입니다.)</p>
<p>결론적으로 mAP가 높다는 것은 <code>모델이 다양한 종류의 사물을 놓치지 않으면서도(High Recall)</code>, <code>틀린 예측을 적게 하며(High Precision)</code>, <code>위치까지 정확하게(High IoU)</code> 찾아내고 있음을 의미합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[위클리 페이퍼 #8-1 YOLO (You Only Look Once) ]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-8-1-YOLO-You-Only-Look-Once</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-8-1-YOLO-You-Only-Look-Once</guid>
            <pubDate>Mon, 06 Apr 2026 08:32:05 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/008cac39-d915-455e-969d-29ebc466651a/image.png" alt=""></p>
<h2 id="🇶-yoloyou-only-look-once-모델의-주요-특징과-장점은-무엇인가요">🇶 YOLO(You Only Look Once) 모델의 주요 특징과 장점은 무엇인가요?</h2>
<p>YOLO(You Only Look Once)는 실시간 객체 탐지(Object Detection) 분야에서 혁신을 일으킨 모델입니다. 기존 모델들이 이미지에서 객체가 있을 법한 위치를 먼저 찾고(Region Proposal) 나중에 분류하는 방식이었다면, YOLO는 이름 그대로 이미지를 단 한 번만 보고 객체의 위치와 종류를 동시에 예측합니다.</p>
<h3 id="1-yolo의-주요-특징">1. YOLO의 주요 특징</h3>
<ul>
<li><strong>Unified Pipeline (통합된 구조)</strong>: 이미지를 S×S 그리드로 나누고, 각 그리드 셀에서 직접 바운딩 박스(Bounding Box)와 클래스 확률을 예측합니다. 이를 통해 복잡한 파이프라인 없이 하나의 신경망으로 처리가 가능합니다.</li>
<li><strong>Global Context (전역적 문맥 파악)</strong>: 이미지를 부분적으로 보지 않고 전체를 한 번에 보기 때문에, 배경과 객체를 혼동하는 &#39;Background Error&#39;가 적습니다. 즉, 물체의 주변 환경을 함께 고려하여 판단합니다.</li>
<li><strong>Generalization (일반화 성능)</strong>: 훈련 단계에서 보지 못한 새로운 도메인(예: 예술 작품 속 객체 탐지)에 대해서도 비교적 정확하게 객체를 찾아내는 뛰어난 일반화 능력을 갖추고 있습니다.</li>
</ul>
<h3 id="2-yolo의-주요-장점">2. YOLO의 주요 장점</h3>
<ul>
<li><strong>압도적인 처리 속도 (Real-time Detection)</strong>: 가장 큰 장점은 매우 빠르다는 점입니다. 단순한 구조 덕분에 GPU에서 실시간(초당 45~150 프레임 이상)으로 구동이 가능하여 자율주행 자동차, 실시간 CCTV 분석 등에 필수적으로 사용됩니다.</li>
<li><strong>높은 효율성</strong>: 연산량이 상대적으로 적어 임베디드 기기나 모바일 환경에서도 최적화를 통해 구동하기 유리합니다. 최신 버전(YOLOv8, YOLOv10 등)으로 갈수록 정확도와 속도 사이의 균형이 더욱 정교해지고 있습니다.</li>
<li><strong>단순한 학습 과정</strong>: 하나의 네트워크가 위치 검출과 분류를 동시에 수행하므로, 모델 학습 및 최적화 과정이 직관적이고 관리가 용이합니다.</li>
</ul>
<h3 id="📊-요약-비교">📊 요약 비교</h3>
<table>
<thead>
<tr>
<th align="center">특징</th>
<th align="center">기존 모델 (R-CNN 등)</th>
<th align="center">YOLO</th>
</tr>
</thead>
<tbody><tr>
<td align="center">처리 방식</td>
<td align="center">Multi-stage (추천후 분류)</td>
<td align="center">Single-stage (동시 수행)</td>
</tr>
<tr>
<td align="center">속도</td>
<td align="center">느림 (실시간 어려움)</td>
<td align="center"><strong>매우 빠름 (실시간 가능)</strong></td>
</tr>
<tr>
<td align="center">정확도</td>
<td align="center">정밀한 위치 추적에 강점</td>
<td align="center">배경 오류가 적고 전역적 파악에 강점</td>
</tr>
</tbody></table>
]]></description>
        </item>
        <item>
            <title><![CDATA[위클리 페이퍼 #7-3 전이 학습 (Transfer Learning)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-7-3-%EC%A0%84%EC%9D%B4-%ED%95%99%EC%8A%B5-Transfer-Learning</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-7-3-%EC%A0%84%EC%9D%B4-%ED%95%99%EC%8A%B5-Transfer-Learning</guid>
            <pubDate>Thu, 02 Apr 2026 00:36:33 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/5cc29bf5-9646-4879-82ad-c612019fe828/image.png" alt=""></p>
<h2 id="🇶-transfer-learning전이-학습이란-무엇이며-이미지-분류-모델에서-어떻게-활용할-수-있나요">🇶 Transfer Learning(전이 학습)이란 무엇이며, 이미지 분류 모델에서 어떻게 활용할 수 있나요?</h2>
<p><code>전이 학습(Transfer Learning)</code>은 이미 특정 분야에서 충분한 데이터를 통해 학습된 모델(Pre-trained Model)의 지식을 새로운 문제에 재사용하는 기법입니다.</p>
<p>쉽게 비유하자면, 피아노를 칠 줄 아는 사람이 첼로를 처음 배울 때, 아예 음악을 모르는 사람보다 악보 보는 법이나 리듬 감각 면에서 훨씬 빠르게 배우는 것과 같습니다. 딥러닝에서도 방대한 데이터셋(예: ImageNet)으로 학습된 모델의 &#39;특징 추출 능력&#39;을 가져와 내 데이터에 맞게 조금만 수정하여 사용하는 방식입니다.</p>
<h3 id="💡-이미지-분류-모델에서의-활용-방법">💡 이미지 분류 모델에서의 활용 방법</h3>
<p>이미지 분류에서 전이 학습을 활용할 때는 보통 두 가지 전략을 선택합니다.</p>
<h3 id="1-특성-추출-feature-extraction">1. 특성 추출 (Feature Extraction)</h3>
<p>기존 모델의 Backbone(특징 추출기) 부분은 그대로 고정(Freeze)시키고, 마지막 분류기(Classifier) 부분만 내 데이터셋의 클래스 개수에 맞게 새로 만들어 학습시키는 방법입니다.</p>
<ul>
<li>언제 사용하나?: 내 데이터셋이 기존 모델이 학습한 데이터와 비슷하지만, 데이터 양이 적을 때 유용합니다.</li>
<li>장점: 학습 속도가 매우 빠르고, 적은 데이터로도 높은 성능을 낼 수 있습니다.</li>
</ul>
<h3 id="2-미세-조정-fine-tuning">2. 미세 조정 (Fine-Tuning)</h3>
<p>분류기만 학습시키는 것을 넘어, 기존 모델의 가중치 일부 또는 전부를 내 데이터에 맞춰 다시 학습시키는 방법입니다.</p>
<ul>
<li>언제 사용하나?: 내 데이터셋의 양이 충분히 많거나, 기존 모델이 학습한 데이터와 내 데이터의 도메인이 많이 다를 때 사용합니다.</li>
<li>장점: 모델이 내 데이터의 특성에 더 정교하게 맞춰지므로 성능을 극대화할 수 있습니다.</li>
</ul>
<h3 id="전이-학습의-핵심-단계">전이 학습의 핵심 단계</h3>
<ul>
<li><strong>사전 학습된 모델 선택</strong>: VGG, ResNet, EfficientNet 등 검증된 모델을 선택합니다.</li>
<li>기존 분류기 제거: 모델 하단(Output Layer)에 있던 기존의 1,000개 클래스 분류기 등을 제거합니다.</li>
<li>** 새 분류기 추가**: 내 문제(예: 고양이 vs 강아지 2개 클래스)에 맞는 레이어를 새로 추가합니다.</li>
<li><strong>학습 전략 결정</strong>:<ul>
<li>초기에는 기존 층을 <code>Freeze(동결)</code>하고 새 레이어만 학습시킵니다.</li>
<li>필요에 따라 하위 레이어의 동결을 풀고 Fine-Tuning을 진행합니다.
<img src="https://velog.velcdn.com/images/eunnam_ahn/post/51efd27d-9148-404e-b980-1bdf0f8a9367/image.png" alt=""></li>
</ul>
</li>
</ul>
<h3 id="✅-왜-전이-학습을-써야-할까">✅ 왜 전이 학습을 써야 할까?</h3>
<ul>
<li><strong>시간과 비용 절약</strong>: 수천만 장의 이미지를 직접 학습시키려면 엄청난 GPU 자원과 시간이 필요하지만, 전이 학습은 이를 대폭 단축합니다.</li>
<li><strong>데이터 부족 문제 해결</strong>: 수백 장의 사진만 있어도 수만 장을 학습시킨 것과 유사한 효과를 낼 수 있습니다.</li>
<li><strong>검증된 성능</strong>: 이미 학계와 업계에서 성능이 입증된 구조를 그대로 가져와 사용할 수 있어 안정적입니다.</li>
</ul>
<h3 id="📊-언제-어떤-전략을-쓸까">📊 언제 어떤 전략을 쓸까?</h3>
<table>
<thead>
<tr>
<th align="center">상황</th>
<th align="center">추천 전략</th>
</tr>
</thead>
<tbody><tr>
<td align="center">데이터 적음 + 유사 도메인</td>
<td align="center">Feature Extraction</td>
</tr>
<tr>
<td align="center">데이터 적음 + 다른 도메인</td>
<td align="center">Fine-Tuning (뒤 레이어만)</td>
</tr>
<tr>
<td align="center">데이터 충분 + 유사 도메인</td>
<td align="center">Fine-Tuning</td>
</tr>
<tr>
<td align="center">데이터 충분 + 다른 도메인</td>
<td align="center">Full Fine-Tuning</td>
</tr>
</tbody></table>
]]></description>
        </item>
        <item>
            <title><![CDATA[위클리 페이퍼 #7-2 데이터 증강 (Data Augmentation)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-7-2-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A6%9D%EA%B0%95-Data-Augmentation</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-7-2-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A6%9D%EA%B0%95-Data-Augmentation</guid>
            <pubDate>Tue, 31 Mar 2026 15:43:46 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/beb9d736-3c0f-4724-84ad-8d238bedbf21/image.png" alt=""></p>
<h2 id="🇶-데이터-증강data-augmentation이란-무엇이며-이미지-데이터에서-주로-사용하는-증강-기법에는-어떤-것들이-있나요">🇶 데이터 증강(Data Augmentation)이란 무엇이며, 이미지 데이터에서 주로 사용하는 증강 기법에는 어떤 것들이 있나요?</h2>
<p><code>데이터 증강(Data Augmentation)</code>은 기존의 한정된 학습 데이터에 인위적인 변화를 주어 데이터의 양을 늘리고, 모델의 <code>일반화 성능(Generalization)</code>을 높이는 기법을 말합니다.</p>
<p>쉽게 말해, 모델이 &#39;강아지&#39; 사진을 한 장만 보는 것이 아니라, 그 사진을 뒤집고, 자르고, 밝기를 조절한 여러 버전을 보게 함으로써 <code>&#39;어떤 각도나 조명에서도 이건 강아지구나&#39;</code>라고 학습하게 만드는 과정입니다. 이를 통해 모델이 특정 훈련 데이터에만 과도하게 맞춰지는 <code>과적합(Overfitting)</code> 문제를 방지할 수 있습니다.</p>
<h3 id="💡-주요-이미지-데이터-증강-기법">💡 주요 이미지 데이터 증강 기법</h3>
<p>이미지 분야에서 가장 흔히 사용되는 기법들은 다음과 같습니다.</p>
<h3 id="1-기하학적-변환-geometric-transformations">1. 기하학적 변환 (Geometric Transformations)</h3>
<p>이미지의 형태나 위치를 바꾸는 가장 기본적인 방법입니다.</p>
<ul>
<li><strong>좌우/상하 반전 (Flip)</strong>: 이미지를 좌우 또는 상하로 반전시킵니다. (예: 강아지 사진을 좌우 반전해도 강아지라는 본질은 변하지 않음)</li>
<li><strong>회전 (Rotation)</strong>: 이미지를 특정 각도만큼 회전시킵니다.</li>
<li><strong>자르기 및 크기 조정 (Crop &amp; Resize)</strong>: 이미지의 특정 부분만 잘라내어 확대하거나 크기를 조절합니다.</li>
<li><strong>평행 이동 (Translation)</strong>: 이미지를 가로 또는 세로 방향으로 약간 이동시킵니다.</li>
</ul>
<h3 id="2-색상-및-밝기-변형-photometric-transformations">2. 색상 및 밝기 변형 (Photometric Transformations)</h3>
<p>이미지의 픽셀 값 자체를 변경하여 조명이나 카메라 설정을 모사합니다.</p>
<ul>
<li><strong>밝기 및 대비 조절 (Brightness &amp; Contrast)</strong>: 이미지의 밝기를 높이거나 낮추고, 색상 간의 차이를 조절합니다.</li>
<li><strong>채도 및 색조 변경 (Color Jittering)</strong>: 이미지의 채도(Saturation), 색조(Hue) 등을 미세하게 변경합니다.</li>
<li><strong>노이즈 주입 (Noise Injection)</strong>: 이미지에 무작위 노이즈(예: Gaussian Noise)를 추가하여 모델이 거친 환경에서도 잘 작동하게 합니다.</li>
</ul>
<h3 id="3-고급-및-복합-기법">3. 고급 및 복합 기법</h3>
<p>최근에는 여러 이미지를 조합하거나 특정 부분을 삭제하는 방식이 많이 쓰입니다.</p>
<ul>
<li><strong>컷아웃 (Cutout)</strong>: 이미지의 일정 부분을 검은색 사각형으로 가려 모델이 특정 특징(예: 눈)에만 집착하지 않고 전체적인 맥락을 학습하게 합니다.</li>
<li><strong>믹스업 (Mixup)</strong>: 두 개의 이미지를 투명도를 조절해 겹치고 라벨도 그 비율에 맞춰 섞는 방식입니다 (예: 강아지 70% + 고양이 30%가 섞인 모호한 이미지 학습).</li>
<li><strong>컷믹스 (CutMix)</strong>: 이미지의 특정 부분을 잘라내고 그 자리에 다른 이미지의 조각을 붙여 넣는 방식입니다.</li>
</ul>
<h3 id="✅-왜-데이터-증강을-해야-할까요">✅ 왜 데이터 증강을 해야 할까요?</h3>
<ul>
<li><strong>데이터 부족 해결</strong>: 실제 데이터를 수집하고 라벨링하는 비용은 비싸지만, 증강은 컴퓨터 연산만으로 데이터를 무한히 생성할 수 있습니다.</li>
<li><strong>강건함(Robustness) 확보</strong>: 현실 세계에서 찍히는 사진은 항상 정중앙에 완벽한 조명으로 찍히지 않습니다. 증강을 거친 모델은 실제 환경의 변수들에 훨씬 더 잘 대응합니다.</li>
</ul>
<h3 id="⛔-사용-시-주의사항">⛔ 사용 시 주의사항</h3>
<ul>
<li>데이터 증강을 적용할 때는 <code>데이터의 특성(Domain)</code>을 고려하는 것이 매우 중요합니다. 예를 들어, 숫자 인식 모델(MNIST)에서 &#39;6&#39;을 180도 회전시키면 &#39;9&#39;가 되어버려 라벨의 의미가 훼손될 수 있으므로 주의해야 합니다. 또한, 의료 영상(CT, MRI)에서 상하 반전은 현실적이지 않아 오히려 해가 될 수 있습니다.</li>
<li>증강은 훈련 데이터에만 적용하고, 검증/테스트 데이터에는 적용하지 않는 것이 원칙입니다.</li>
<li>과도한 증강은 오히려 학습을 방해할 수 있으므로 강도 조절이 필요합니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[코드잇 스프린트 7주차 회고]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%BD%94%EB%93%9C%EC%9E%87-%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-7%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%BD%94%EB%93%9C%EC%9E%87-%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-7%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0</guid>
            <pubDate>Tue, 31 Mar 2026 08:45:06 GMT</pubDate>
            <description><![CDATA[<p>이번주에도 역시 5L 방법을 통해 회고를 진행해보았다.</p>
<h3 id="🟥-fact-사실">🟥 Fact (사실)</h3>
<p>2주 전 CNN 개념을 배울 때 필터(커널)에 대해서 배웠다. </p>
<blockquote>
<p>필터는 입력 데이터를 지정한 간격으로 순회하면서 합성곱을 계산한다. 여기서 지정된 간격으로 필터를 순회하는 간격을 스트라이드 (stride)라고 한다. </p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/a44157b0-a3a9-4c40-9547-35d844947452/image.jpg" alt=""></p>
<h3 id="🟧-feeling-느낌">🟧 Feeling (느낌)</h3>
<p>필터에 대해 배우면서, 대학원 수업에서 했던 코어 샘플의 공극률 (porosity)을 측정하는 과제가 떠올랐다. 간단하게 소개해보자면, 코어 샘플링이란 원통형 모양의 샘플을 땅에서 채취하는 것을 일컫는다. </p>
<p>이 코어의 여러가지 특성을 파악하는 것이 중요한데, 그 중 공극률 (porosity)이라는 중요한 개념이 있다. 공극률은 &#39;다공질 재료, 토양, 암석 등에서 전체 부피에 대한 기공(공간) 부피의 비율을 백분율로 나타낸 것&#39;으로, 여러가지 방법으로 측정할 수 있지만 내가 했던 과제에서는 코어의 단면을 CT촬영하여 생긴 수백장의 이미지를 통해 계산하게 하는 것이었다. </p>
<p>과제에서는 가장 작은 단위부터 조금씩 크기를 키워가면서 각 단위에 속한 공극률을 그래프로 그려보라는 것이었는데, 그 과정이 CNN 커널이 피처 맵 (feature map)을 계산하는 과정과 흡사하다는 생각이 들었다.</p>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/3138392a-65c2-426d-97b1-2d2ddb393756/image.png" alt="">
<img src="https://velog.velcdn.com/images/eunnam_ahn/post/08dce877-97b5-415c-be7b-7ab174fc8fc7/image.png" alt="">
<img src="https://velog.velcdn.com/images/eunnam_ahn/post/6f28f480-3b92-4333-a97d-e6be22cdc67b/image.png" alt=""></p>
<h3 id="🟨-finding-배운-점발견">🟨 Finding (배운 점/발견)</h3>
<p>연구하는 입장이라면, 다른 분야의 아이디어에서 영감을 얻어서 연구 주제를 정할 수 있겠다는 생각이 들었다. 우연히 CNN 필터가 내가 해본 공극률 측정하는 과정과 약간 비슷해서 반갑기도 했고 신기하기도 했다.</p>
<h3 id="🟩-future-action-향후-계획">🟩 Future Action (향후 계획)</h3>
<p>향후 연구를 하게 될 것 같지는 않지만, 엔지니어로 활동하면서 다른 분야의 좋은 아이디어를 접목해볼 수 있게 열린 마음을 가져야겠다는 생각이 들었다.</p>
<h3 id="🟦-feedback-피드백">🟦 Feedback (피드백)</h3>
<p>이번에는 특별히 피드백을 받은 것은 없었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[위클리 페이퍼 #7-1 리사이징과 정규화 (Resizing & Normalization)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-7-1-%EB%A6%AC%EC%82%AC%EC%9D%B4%EC%A7%95%EA%B3%BC-%EC%A0%95%EA%B7%9C%ED%99%94-Resizing-Normalization</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-7-1-%EB%A6%AC%EC%82%AC%EC%9D%B4%EC%A7%95%EA%B3%BC-%EC%A0%95%EA%B7%9C%ED%99%94-Resizing-Normalization</guid>
            <pubDate>Mon, 30 Mar 2026 04:19:44 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/1fb62094-d094-4c65-a1b1-0325ca582d2e/image.png" alt=""></p>
<h2 id="🇶-이미지를-모델에-입력하기-전에-리사이징resizing과-정규화normalization를-하는-이유는-무엇인가요">🇶 이미지를 모델에 입력하기 전에 리사이징(Resizing)과 정규화(Normalization)를 하는 이유는 무엇인가요?</h2>
<p>CNN (합성곱 신경망)이나 트랜스포머 기반의 비전 모델에 이미지를 입력하기 전 <code>리사이징(Resizing)</code>과 <code>정규화(Normalization)</code>를 거치는 것은 모델의 학습 효율과 성능을 결정짓는 필수적인 전처리 단계입니다.</p>
<h3 id="1-리사이징resizing을-하는-이유">1. 리사이징(Resizing)을 하는 이유</h3>
<p>가장 근본적인 이유는 모델이 받아들일 수 있는 데이터의 규격(Input Shape)을 통일하기 위함입니다.</p>
<ul>
<li><strong>연산의 일관성</strong>: 딥러닝 모델의 초기 레이어(주로 Fully Connected Layer나 고정된 크기의 필터)는 특정 크기의 행렬 연산을 상정하고 설계된다. 입력 이미지들의 크기가 제각각이면 행렬 곱 연산 자체가 불가능해진다.</li>
<li><strong>배치 처리(Batch Processing)</strong>: 효율적인 학습을 위해 여러 장의 이미지를 하나의 &#39;묶음(Batch)&#39;으로 처리하는데, 이때 모든 데이터가 동일한 차원을 가져야 메모리 상에서 하나의 텐서(Tensor)로 결합될 수 있다.</li>
<li><strong>메모리 및 속도 조절</strong>: 고해상도 이미지는 정보가 많지만 연산량이 기하급수적으로 늘어난다. 모델의 목적에 따라 적절한 크기(예: 224x224)로 줄여 학습 속도와 정확도 사이의 균형을 맞춘다.</li>
</ul>
<h3 id="2-정규화normalization를-하는-이유">2. 정규화(Normalization)를 하는 이유</h3>
<p>이미지 정규화는 보통 픽셀 값(0<del>255)을 일정 범위(0</del>1 또는 -1~1)로 변환하거나, 평균과 표준편차를 이용해 분포를 맞추는 작업을 의미합니다.</p>
<ul>
<li><strong>학습 속도 향상 (Convergence)</strong>: 픽셀 값이 0에서 255 사이로 크면, 역전파(Backpropagation) 과정에서 가중치(Weight) 업데이트가 불안정하거나 매우 느려질 수 있다. 데이터를 작은 범위로 응집시키면 비용 함수(Cost Function)의 지형이 완만해져 최적의 해(Global Minimum)를 더 빨리 찾을 수 있다.</li>
<li><strong>Local Minima 방지</strong>: 특정 특징(Feature)의 수치 범위가 너무 크면 모델이 해당 특징에만 과도하게 의존하게 될 수 있다. 모든 입력 데이터를 동일한 스케일로 맞추어 모델이 편향되지 않고 골고루 학습하게 한다.</li>
<li><strong>기울기 소실 및 폭주 예방</strong>: 활성화 함수(Sigmoid, ReLU 등)를 통과할 때 값이 너무 크거나 작으면 기울기가 0이 되어 학습이 멈추는 문제를 방지하는 데 도움을 준다.</li>
</ul>
<p>요약하자면, 리사이징은 모델이 데이터를 <code>읽을 수 있게</code> 만드는 물리적 규격 맞춤이며, 정규화는 모델이 데이터를 <code>잘 배울 수 있게</code> 만드는 수학적 환경 조성이라고 할 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AI 시대 공부법: 탑다운 vs. 바텀업 (Top-down vs. Bottom-up) (part 2)]]></title>
            <link>https://velog.io/@eunnam_ahn/AI-%EC%8B%9C%EB%8C%80-%EA%B3%B5%EB%B6%80%EB%B2%95-%ED%83%91%EB%8B%A4%EC%9A%B4-vs.-%EB%B0%94%ED%85%80%EC%97%85-Top-down-vs.-Bottom-up-part-2</link>
            <guid>https://velog.io/@eunnam_ahn/AI-%EC%8B%9C%EB%8C%80-%EA%B3%B5%EB%B6%80%EB%B2%95-%ED%83%91%EB%8B%A4%EC%9A%B4-vs.-%EB%B0%94%ED%85%80%EC%97%85-Top-down-vs.-Bottom-up-part-2</guid>
            <pubDate>Fri, 27 Mar 2026 06:29:12 GMT</pubDate>
            <description><![CDATA[<h2 id="2-ai-시대-탑다운-vs-바텀업-공부법의-함정과-해결책">2. AI 시대, 탑다운 vs 바텀업 공부법의 함정과 해결책</h2>
<p>AI 시대 공부법에 대한 혼란 속에서, 탑다운과 바텀업 접근법의 장단점을 이해하고 이를 효과적으로 결합하는 방법을 알아야 한다.</p>
<h3 id="21-ai-시대-공부법의-혼란과-탑다운-접근법">2.1. AI 시대 공부법의 혼란과 탑다운 접근법</h3>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/2ab33fc1-1f0c-4202-ad80-cb55b80bfac1/image.jpg" alt=""></p>
<h4 id="1-ai-시대-공부법-혼란의-원인">1. AI 시대 공부법 혼란의 원인</h4>
<ul>
<li>AI가 해주는 부분과 못 해주는 부분이 명확하지 않아 혼란스럽다.</li>
</ul>
<h4 id="2-인간의-본능과-탑다운-공부">2. 인간의 본능과 탑다운 공부</h4>
<ul>
<li>인간은 본능적으로 공부를 적게 하고 싶어 한다.</li>
<li><code>탑다운 공부</code>는 위에서 내려다보며 필요성을 느끼기 때문에 동기 부여가 되어 열심히 할 가능성이 높다.</li>
<li>디테일에 자신이 없는 사람에게 탑다운 방식이 매력적일 수 있다.</li>
</ul>
<h4 id="3-탑다운-공부의-약점-깨작거리다-끝나는-함정">3. 탑다운 공부의 약점: &#39;깨작거리다&#39; 끝나는 함정</h4>
<ul>
<li>대부분의 사람들은 탑다운으로 시작해도 &#39;깨작거리다&#39; 끝나버린다.</li>
<li>AI를 이용해 이것저것 물어보다가 결국 AI의 <code>소비자로 전락</code>하게 된다.</li>
<li>바이브 코딩처럼 제품을 만드는 것처럼 보이지만, 특정 플랫폼의 사용자로 묶여 그것 없이는 못하는 사람이 된다.</li>
</ul>
<h4 id="4-탑다운-접근법의-근본적인-약점">4. 탑다운 접근법의 근본적인 약점</h4>
<ul>
<li>결국 사용자로 전락하여 특정 플랫폼에 종속된다.</li>
<li>그것 없이는 아무것도 못 하는 사람이 되어버린다.</li>
<li>대부분의 사람이 이 함정에 갇혀버린다.</li>
</ul>
<h3 id="22-바텀업-접근법의-함정과-현실">2.2. 바텀업 접근법의 함정과 현실</h3>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/8632364c-9498-4610-934c-19fe7594a3da/image.jpg" alt=""></p>
<h4 id="1-바텀업-접근법의-잠재적-함정">1. 바텀업 접근법의 잠재적 함정</h4>
<ul>
<li>바텀업에만 갇혀버리는 함정에 빠질 수 있다.</li>
</ul>
<h4 id="2-한국에서의-바텀업-현실">2. 한국에서의 바텀업 현실</h4>
<ul>
<li>저수준에 대한 수요가 어느 정도 받쳐져 있어, 그 안에서 살기는 편할 수 있다.</li>
<li>하지만 소프트웨어처럼 빠르게 발전하는 분야에서는 아쉬움이 남을 수 있다.</li>
</ul>
<h3 id="23-ai-시대-탑다운과-바텀업의-효과적인-결합">2.3. AI 시대, 탑다운과 바텀업의 효과적인 결합</h3>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/2e1e6ced-af5a-4682-8f1f-7501c366b3d3/image.jpg" alt=""></p>
<h4 id="1-핵심-쉽고-간단한-것부터-탑다운과-바텀업을-병행">1. 핵심: 쉽고 간단한 것부터 탑다운과 바텀업을 병행</h4>
<ul>
<li>변화가 빠른 시대에는 빠르게 치고 나가야 한다.</li>
<li><code>가장 중요한 포인트는 아주 간단하고 쉬운 것부터 탑다운과 바텀업을 모두 해야 한다는 것이다.</code></li>
<li>예시: 간단한 투두리스트 만들기</li>
</ul>
<h4 id="2-쉬운-것을-할-때-바텀업과-탑다운을-확실히-뚫기">2. 쉬운 것을 할 때 바텀업과 탑다운을 확실히 뚫기</h4>
<ul>
<li>바닥부터 끝까지 직접 만들어보는 경험이 중요하다.</li>
<li>AI 시대에는 오히려 쉬운 것을 할 때 <code>자기 머리로 직접 뚫어야 한다.</code></li>
<li>한 번 뚫은 것은 평생 가며, AI 시대에는 직접 할 일이 없어진다.</li>
<li>머릿속에 개념만 있으면 되므로, 아주 쉬운 것만 가지고 경험하면 된다.</li>
<li>한 번도 경험하지 않으면 평생 그 공간이 비어 있게 된다.</li>
</ul>
<h4 id="3-직접-경험의-중요성-ai-활용-능력-향상">3. 직접 경험의 중요성: AI 활용 능력 향상</h4>
<ul>
<li>한 번 해봤기 때문에 AI가 헛소리를 하는지 제대로 하는지 평가할 수 있다.</li>
<li>효율적인 방향으로 몰아갈 수 있으며, 인간은 눈치가 빠르다.</li>
<li>쓸데없이 길게 만드는 코드를 줄이라고 지시할 수 있다.</li>
<li>공부할 때 탑다운과 바텀업 모두 &#39;요만큼만&#39; 하면 된다.</li>
</ul>
<h4 id="4-과거와-달라진-공부-방식-반복의-불필요성">4. 과거와 달라진 공부 방식: 반복의 불필요성</h4>
<ul>
<li>옛날에는 모든 것을 다시 반복하며 공부해야 했지만, 이제는 그 시대가 끝났다.</li>
<li>한 번 뚫어 놓으면 그 부분은 다시 할 필요가 없다.</li>
<li>조금 보충하고 살짝 보충하는 것만으로 충분하다.</li>
</ul>
<h4 id="5-기하급수적-실력-향상의-원리">5. 기하급수적 실력 향상의 원리</h4>
<ul>
<li>이 과정을 반복하면 인간은 일반화를 잘하며 실력이 기하급수적으로 올라간다.</li>
<li>AI 덕분에 이 과정이 저절로 확보된다.</li>
<li>다음 단계를 공부할 때 더 적은 노력으로 확장하기 쉬워진다.</li>
<li>근간이 되는 기술을 뚫고 이를 응용하여 제품 품질을 높이거나 상품화를 빠르게 할 수 있다.</li>
<li>AI가 나머지 부분을 채워주므로 누구나 공부하기 좋은 시대가 되었다.</li>
</ul>
<h4 id="6-ai-시대-성공을-위한-집중과-마음가짐">6. AI 시대, 성공을 위한 집중과 마음가짐</h4>
<ul>
<li>어디까지 직접 해봐야 하는지에 대한 기준을 사람이 정해줘야 한다.</li>
<li>결국 누구를 믿을 수 있느냐의 문제로 귀결된다.</li>
<li><code>AI는 한계가 있는 기술이지만 쓸모없는 기술은 아니므로 현실적으로 파악해야 한다.</code></li>
<li><code>성공은 한 번만 하면 된다는 마음으로, 실패를 두려워하지 않고 한 곳을 집중하여 뚫으면 인생을 바꿀 수 있다.</code></li>
<li>AI가 어려운 부분을 보충해주는 시대에, 한 곳을 집중하여 뚫는 마음가짐과 정신력이 중요하다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[AI 시대 공부법: 탑다운 vs. 바텀업 (Top-down vs. Bottom-up) (part 1)]]></title>
            <link>https://velog.io/@eunnam_ahn/AI-%EC%8B%9C%EB%8C%80-%EA%B3%B5%EB%B6%80%EB%B2%95-%ED%83%91%EB%8B%A4%EC%9A%B4-vs.-%EB%B0%94%ED%85%80%EC%97%85-Top-down-vs.-Bottom-up-part-1</link>
            <guid>https://velog.io/@eunnam_ahn/AI-%EC%8B%9C%EB%8C%80-%EA%B3%B5%EB%B6%80%EB%B2%95-%ED%83%91%EB%8B%A4%EC%9A%B4-vs.-%EB%B0%94%ED%85%80%EC%97%85-Top-down-vs.-Bottom-up-part-1</guid>
            <pubDate>Thu, 26 Mar 2026 00:32:59 GMT</pubDate>
            <description><![CDATA[<p>멘토 모임에 멘토님께서 요새 화제가 되고 있는 동영상 하나를 소개해주셨습니다. (존경하는 홍정모 교수님의 &lt;AI 시대 공부 순서, 대부분이 틀리고 있습니다&gt;라는 영상)</p>
<p>좋은 내용인 것 같아서 정리해보았습니다. 내용이 길어서 2파트로 나눠서 올려볼 예정입니다.</p>
<h3 id="📌-ai-시대에-효과적인-공부-순서는-무엇이며-탑다운과-바텀업-방식-중-어떤-것을-선택해야-하는가">📌 AI 시대에 효과적인 공부 순서는 무엇이며, 탑다운과 바텀업 방식 중 어떤 것을 선택해야 하는가?</h3>
<p>아주 간단하고 쉬운 것부터 탑다운과 버텀업을 둘 다 경험하여 한 번 완전히 뚫어보는 것이 중요합니다.</p>
<h3 id="💡-왜-쉬운-것부터-두-가지-방식을-모두-경험해야-하는가">💡 왜 쉬운 것부터 두 가지 방식을 모두 경험해야 하는가?</h3>
<p>AI가 어려운 부분을 보충해주므로, 쉬운 것을 직접 뚫어보면 AI의 한계를 파악하고 효율적으로 활용하며 기하급수적으로 실력을 향상시킬 수 있기 때문입니다.</p>
<h2 id="1-ai-시대-공부-방법의-혼란과-현실적-파악">1. AI 시대, 공부 방법의 혼란과 현실적 파악</h2>
<p>AI 시대에 공부 방법에 대한 혼란은 자연스러우며, AI의 능력과 한계를 현실적으로 파악하는 것이 중요하다.</p>
<h3 id="11-ai의-등장과-변화">1.1. AI의 등장과 변화</h3>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/3459d9c5-76de-48bb-a56e-6dbe78ead33d/image.jpg" alt=""></p>
<h4 id="1-ai의-발전과-영향력-확대">1. AI의 발전과 영향력 확대</h4>
<ul>
<li>알파고 이벤트와 ChatGPT 등장으로 일상생활에 변화가 생기기 시작했다.</li>
<li>AI가 어려운 부분을 보충해 주는 시대가 되었다.</li>
</ul>
<h4 id="2-ai에-대한-과도한-기대와-과소평가-경계">2. AI에 대한 과도한 기대와 과소평가 경계</h4>
<ul>
<li>AI가 모든 일자리를 잃게 할 것이라는 과도한 기대는 상한선을 너무 높게 잡은 것이다.</li>
<li>ChatGPT의 헛소리만 보고 쓸모없다고 판단하는 것은 하한선을 너무 낮게 잡은 것이다.</li>
<li>상한선과 하한선을 현실적으로 파악하면 잘못된 판단을 줄일 수 있다.</li>
</ul>
<h4 id="3-압축적-사건-속에서의-분석-능력">3. 압축적 사건 속에서의 분석 능력</h4>
<ul>
<li>알고리즘은 다양한 사건 발생 시 분석을 돕는다.</li>
<li>변화는 분명히 있지만, 분석 능력이 있다면 혼란스럽지 않다.</li>
</ul>
<h3 id="12-ai-시대의-일자리-변화와-ai의-강점">1.2. AI 시대의 일자리 변화와 AI의 강점</h3>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/d39e7aa8-f103-4f4c-b0b5-65bf7f701caf/image.jpg" alt=""></p>
<h4 id="1-시니어-vs-주니어-일자리-변화-추이">1. 시니어 vs 주니어 일자리 변화 추이</h4>
<ul>
<li>2015-2020년에는 시니어와 주니어 일자리가 함께 증가했다.</li>
<li>코로나19 이후 시니어 일자리는 유지되거나 증가했지만, 주니어 일자리는 감소했다.</li>
<li>ChatGPT 등장 이후 주니어 일자리는 감소 추세이며, AI 언급 채용 공고는 증가하고 있다.</li>
</ul>
<h4 id="2-ai-업계의-현재-과제와-활용-분야">2. AI 업계의 현재 과제와 활용 분야</h4>
<ul>
<li>기존 기술로 수익을 내야 하므로, 현재 LM 기술을 최대한 활용해야 한다.</li>
<li>주요 활용 분야는 기본적인 자료 조사 및 일차적 취합 정리, 그리고 코딩이다.</li>
</ul>
<h4 id="3-ai의-발산적-사고-능력과-강점">3. AI의 발산적 사고 능력과 강점</h4>
<ul>
<li>AI는 개인이 할 수 없는 수준의 발산적 사고를 매우 잘한다.<ul>
<li><code>(이유 1) 방대한 지식 보유</code>: 인간보다 훨씬 많은 자료를 알고 있다.</li>
<li><code>(이유 2) 고정 관념 없음</code>: 컨텍스트 윈도우는 있지만, 인간 수준의 고정 관념이 없어 편견 없이 다양한 아이디어를 제시한다.</li>
</ul>
</li>
</ul>
<h4 id="4-ai의-코딩-능력-구현-및-취합">4. AI의 코딩 능력: 구현 및 취합</h4>
<ul>
<li>AI는 알고리즘을 외우고 있어, 구현 요청 시 어디선가 찾아와 잘 구현한다.</li>
<li>이는 &#39;갖다 붙이기&#39;를 매우 잘하는 능력으로 볼 수 있다.</li>
</ul>
<h3 id="13-인간-고유의-능력-수렴과-문제-해결">1.3. 인간 고유의 능력: 수렴과 문제 해결</h3>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/59a4c8ad-1426-492b-b82e-9848239d7da3/image.jpg" alt=""></p>
<h4 id="1-ai가-해결하기-어려운-문제의-본질">1. AI가 해결하기 어려운 문제의 본질</h4>
<ul>
<li>인류 중 누군가 풀고 디지털화된 자료로 남긴 문제는 AI로 해결 가능하다.</li>
<li>하지만 아무도 풀지 못한 문제는 결국 인간이 직접 진지하게 풀어야 한다.</li>
</ul>
<h4 id="2-ai의-한계-최적화된-해법-도출의-어려움">2. AI의 한계: 최적화된 해법 도출의 어려움</h4>
<ul>
<li>해답이 너무 많으면 그것은 진정한 해답이 아니다.</li>
<li>AI는 코드를 만드는 것은 잘하지만, 너무 난잡하게 만들어 최적화된 해법을 도출하는 데 어려움을 겪는다.</li>
</ul>
<h4 id="3-인간의-본능-수렴과-효율-추구">3. 인간의 본능: 수렴과 효율 추구</h4>
<ul>
<li>인간은 본능적으로 일을 줄이고 싶어 한다.</li>
<li>AI는 자료 조사, 아이디어 제시 등 발산적인 부분은 잘하지만, <code>핵심 해결책을 만들고 실행하는 것은 결국 인간의 몫</code>이다.</li>
</ul>
<h3 id="14-ai-시대-공부의-기초와-인간-두뇌의-가치">1.4. AI 시대, 공부의 기초와 인간 두뇌의 가치</h3>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/20ae183d-11b3-4447-b703-756700d874ce/image.jpg" alt=""></p>
<h4 id="1-ai의-한계-재확인-돈-버는-방법-예시">1. AI의 한계 재확인: 돈 버는 방법 예시</h4>
<ul>
<li>AI는 돈 버는 100가지 방법을 알려줄 수 있지만, 실제 돈을 벌 수 있는 단 한 가지 방법을 찾아주거나 실행해주지는 못한다.</li>
</ul>
<h4 id="2-ai-공부-시-겪는-문제와-반복되는-패턴">2. AI 공부 시 겪는 문제와 반복되는 패턴</h4>
<ul>
<li>AI의 한계를 느끼는 것은 당연하다.</li>
<li>프로그래밍 학습 시 CPU, 메모리 등 기초가 중요해지듯, AI 공부에서도 기초가 중요하다.</li>
<li>AI가 코딩을 다 해주더라도, AI 자체도 메모리 문제 등 기초적인 컴퓨터 문제를 겪으며 이는 반복된다.</li>
<li>돈 벌 수준의 시스템이 되면 결국 컴퓨터 기초 문제를 다시 만나게 된다.</li>
</ul>
<h4 id="3-ai-시대에도-중요한-기초-학습의-가치">3. AI 시대에도 중요한 기초 학습의 가치</h4>
<ul>
<li>Leetcode 같은 단순 반복 작업은 AI 시대에 사라질 것이다.</li>
<li>이를 오해하여 알고리즘 공부를 안 해도 된다고 생각하는 것은 위험하다.</li>
<li>AI 사용 시에도 메모리(컨텍스트 윈도우)를 신경 써야 하며, 어려운 부분은 인간이 해야 한다.</li>
<li><code>인간의 두뇌는 AI보다 훨씬 뛰어난 성능을 가지고 있으며, 그 가치를 평가절하해서는 안 된다.</code></li>
<li>특히 10대 후반에서 대학교 1~3학년 학생들은 AI 활용보다 <code>기초에 집중하는 것이 훨씬 좋은 시대이다.</code></li>
</ul>
<h4 id="4-ai의-확률적-답변과-평균의-중요성">4. AI의 확률적 답변과 평균의 중요성</h4>
<ul>
<li>AI는 확률적으로 답을 내놓는데, 평가를 잘 받게 하려면 &#39;평균&#39;으로 가야 한다.</li>
<li>한국인의 평균 얼굴처럼, AI가 만드는 답은 어디선가 본 듯하지만 주변에서 찾을 수 있는 익숙한 형태이다.</li>
<li>현재 기술 수준에서 AI 에이전트 개발에 많은 노력이 투입될 것이며, 관련 일자리는 늘어날 가능성이 있다.</li>
</ul>
<h3 id="15-ai-에이전트-개발과-비용-최적화-문제">1.5. AI 에이전트 개발과 비용 최적화 문제</h3>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/32ea17a0-e74a-40f1-b84c-916646cd1e02/image.jpg" alt=""></p>
<h4 id="1-ai-에이전트-개발의-중요성-증대">1. AI 에이전트 개발의 중요성 증대</h4>
<ul>
<li>오픈AI 같은 기술 발전으로 AI 에이전트 관련 일자리가 늘어날 가능성이 높다.</li>
</ul>
<h4 id="2-ai의-기억력-한계와-비용-최적화">2. AI의 기억력 한계와 비용 최적화</h4>
<ul>
<li>인간과 달리 AI는 이전 대화 내용을 금방 잊어버려 비용 최적화가 어렵다.</li>
<li>AI 에이전트 개발은 결국 &#39;토큰값 최적화&#39;라는 엔지니어링 문제로 귀결된다.</li>
</ul>
<p><em>(part 2에서 계속...)</em></p>
<p>출처: <a href="https://www.youtube.com/watch?v=EWAjNmFKmW4">https://www.youtube.com/watch?v=EWAjNmFKmW4</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[딥러닝] 병목 (Bottleneck) 구조와 오토인코더 (Autoencoder)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EB%B3%91%EB%AA%A9-Bottleneck-%EA%B5%AC%EC%A1%B0%EC%99%80-%EC%98%A4%ED%86%A0%EC%9D%B8%EC%BD%94%EB%8D%94-Autoencoder</link>
            <guid>https://velog.io/@eunnam_ahn/%EB%B3%91%EB%AA%A9-Bottleneck-%EA%B5%AC%EC%A1%B0%EC%99%80-%EC%98%A4%ED%86%A0%EC%9D%B8%EC%BD%94%EB%8D%94-Autoencoder</guid>
            <pubDate>Wed, 25 Mar 2026 05:28:15 GMT</pubDate>
            <description><![CDATA[<p>&#39;병목구조가 있으면 무조건 오토 인코더라고 봐도 될까?&#39;라는 궁금증이 문득 생겼습니다.</p>
<p>결론부터 말씀드리면, 병목 구조 ≠ 오토인코더입니다. </p>
<p>오토인코더 (Autoencoder)의 핵심 구조가 바로 <code>병목 (Bottleneck)</code>인 것은 맞지만, 병목 구조가 있다고 해서 무조건 오토인코더는 아닙니다. 즉, <code>병목은 오토인코더의 필요조건이지 충분조건이 아닙니다.</code> 오토인코더가 되려면 병목 외에도 두 가지 조건이 더 필요한데, 오토인코더의 3가지 조건은 아래와 같습니다.</p>
<p><strong>오토인코더의 3가지 조건</strong>:</p>
<ul>
<li>병목 구조 (차원 압축)</li>
<li>입력과 출력이 같은 도메인</li>
<li>재구성 손실로 학습</li>
</ul>
<p>병목만 있고 나머지가 없으면 전혀 다른 아키텍처가 됩니다.</p>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/94428088-b56e-4f99-bf09-338cd814557b/image.png" alt=""></p>
<p>병목 구조는 일종의 <code>&#39;설계 기법&#39;</code>이고, 오토인코더는 그 기법을 활용한 <code>&#39;모델의 종류&#39;</code>이기 때문입니다. 병목 구조를 사용하지만 오토인코더가 아닌 대표적인 사례들을 알아보겠습니다.</p>
<h3 id="1-병목-구조가-있지만-오토인코더가-아닌-경우">1. 병목 구조가 있지만 오토인코더가 아닌 경우</h3>
<h4 id="①-cnn-classification-분류-모델">① CNN Classification (분류 모델)</h4>
<p>우리가 흔히 쓰는 ResNet 같은 이미지 분류 모델에도 <code>&#39;병목 레이어(Bottleneck Layer)&#39;</code>가 존재합니다.</p>
<ul>
<li>구조: 입력 이미지 → 복잡한 연산 → 좁은 층(특징 압축) → 최종 분류(개/고양이 등)</li>
<li>차이점: 오토인코더는 입력과 똑같은 이미지를 다시 <code>&#39;복원&#39;</code>하는 것이 목적이지만, 분류 모델은 압축된 정보로 <code>&#39;정답(Label)&#39;</code>을 맞히는 것이 목적입니다.</li>
</ul>
<h4 id="②-resnet의-bottleneck-block">② ResNet의 Bottleneck Block</h4>
<p>딥러닝 성능을 높이기 위해 연산량을 줄이려고 일부러 병목을 만듭니다.</p>
<ul>
<li>1x1 합성곱(Convolution)으로 채널 수를 확 줄였다가(병목), 다시 1x1로 늘리는 방식입니다. 이는 오토인코더처럼 데이터를 복원하려는 게 아니라, 연산 효율성을 극대화하기 위한 설계입니다.</li>
</ul>
<h4 id="③-인코더encoder만-있는-모델">③ 인코더(Encoder)만 있는 모델</h4>
<p>데이터를 압축해서 특징(Feature)만 뽑아내고 끝나는 모델도 병목 구조를 가집니다. 하지만 뒤에 복원하는 <code>&#39;디코더&#39;</code>가 없다면 오토인코더라고 부르지 않습니다.</p>
<h3 id="2-오토인코더와-일반-병목-모델의-결정적-차이">2. 오토인코더와 일반 병목 모델의 결정적 차이</h3>
<p>가장 쉬운 구별 방법은 <code>&#39;출력이 무엇인가?&#39;</code>를 보는 것입니다.</p>
<table>
<thead>
<tr>
<th align="center">구분</th>
<th align="center">오토인코더 (Autoencoder)</th>
<th align="center">일반 병목 모델 (예: 분류, 회귀)</th>
</tr>
</thead>
<tbody><tr>
<td align="center"><strong>목표</strong></td>
<td align="center">입력 데이터를 그대로 재구성</td>
<td align="center">입력을 보고 정답을 예측</td>
</tr>
<tr>
<td align="center"><strong>출력 형태</strong></td>
<td align="center">입력과 <strong>똑같은 크기</strong>의 데이터</td>
<td align="center">클래스 번호, 확률, 혹은 특정 수치</td>
</tr>
<tr>
<td align="center"><strong>병목의 위치</strong></td>
<td align="center">모델의 한가운데 (모래시계 중심)</td>
<td align="center">주로 모델의 <strong>끝단</strong> 혹은 연산 효율화</td>
</tr>
</tbody></table>
<p>결론적으로 병목은 <code>&#39;정보를 압축해서 중요한 것만 남긴다&#39;</code>는 범용 아이디어이고, 오토인코더는 그 아이디어를 재구성 학습에 특화해서 사용하는 한 가지 방식입니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[코드잇 스프린트 6주차 회고]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%BD%94%EB%93%9C%EC%9E%87-%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-6%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%BD%94%EB%93%9C%EC%9E%87-%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-6%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0</guid>
            <pubDate>Tue, 24 Mar 2026 04:59:55 GMT</pubDate>
            <description><![CDATA[<p>저번주에 회고를 처음 진행해보았는데, 멘토님과 멘티님들의 회고를 보면서 보고 배운 점이 많았고, 나 또한 내 회고에 대한 피드백을 받으면서 도움을 많이 받은 것 같다. 매주 회고를 하는 습관을 들여서 한단계 성장하는 개발자가 되어야겠다! 이번주에도 저번주에 했던 5F 방법으로 회고를 진행해보았다.
<img src="https://velog.velcdn.com/images/eunnam_ahn/post/9de6e741-5711-4555-97a3-89bea1706eac/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/8ae404f5-c35e-45c1-ae1f-1074e6ed1ec6/image.png" alt=""></p>
<h3 id="🟥-fact-사실">🟥 Fact (사실)</h3>
<p>지난 3월 21일 (토) 오후 8시, 방탄소년단(BTS)이 광화문에서 글로벌 라이벌 공연으로 화려하게 컴백하였다. BTS 공연을 앞두고 26만명이 운집할 것이라는 분석들이 있었지만, 실제로 모인 숫자는 4만여명에 불과했다는 기사를 접하였다.</p>
<p>방탄소년단(BTS)의 광화문 공연에 당초 최대 예상치인 26만명에 훨씬 못미치는 관람객이 방문하면서 편의점들이 &#39;눈물의 떨이&#39;로 재고를 소진하고 있다는 소식을 접했다. 경찰은 당일 공연에 최대 26만명이 모일 것으로 예상했는데, 서울시 데이터에 따르면 4만6천~4만8천명이 모인 것으로 나타났다. </p>
<h3 id="🟧-feeling-느낌">🟧 Feeling (느낌)</h3>
<p>물론 시민 안전과 관련해서는 과도하게 대응해야한다는 서울경찰청장의 해명은 일리가 있고 잘한 일이지만, 경찰 추산만 믿고 간편식과 우유 등 신선식품 발주를 늘렸다가 예상 밖의 판매 부진에 재고를 고스란히 떠안게 된 광화문 인근 편의점 점주들의 고심이 깊어지고 있다는 점이 너무 안타까웠다 (다행히 일부 편의점 본사는 자체적으로 가맹점의 재고 물량을 소화하겠다는 소식을 접했다!).</p>
<p>해당 소식을 접하면서, 경찰의 인원 예상은 대체 어떤 식으로 하는지 문득 궁금해졌다 (어떤 데이터를 수집했는지, 과연 머신러닝 모델을 돌렸는지 여부 등등). 예상되는 방문자 수의 정확한, 또는 그것이 어렵다면 적어도 예상 방문자 수의 최소/최대 범위를 제공했더라면, 불필요한 자원을 낭비하는 일이 없지 않았을까 싶어서 좀더 정확한 모델 개발을 해야할 필요성을 느꼈다.</p>
<h3 id="🟨-finding-배운-점발견">🟨 Finding (배운 점/발견)</h3>
<p>제미나이와 클라우드의 도움을 받아서 인원 예측을 하기 위한 분석 설계안을 단계별로 알아보았다.</p>
<h4 id="1-데이터-수집-체계-구축-data-ingestion">1. 데이터 수집 체계 구축 (Data Ingestion)</h4>
<p>가장 먼저 어떤 데이터를 어디서 가져올지 결정해야 합니다. 한 가지 소스만으로는 부정확하므로 다각도로 수집합니다.</p>
<ul>
<li><del><strong>통신사 유동인구 데이터</strong>: SKT, KT, LGU+ 등의 기지국 접속 정보를 API로 연동하여 실시간 광화문 지역 접속자 수를 파악합니다.</del></li>
<li><del><strong>공공 데이터 (서울시)</strong>: 지하철(광화문역, 시청역, 종각역) 승하차 인원 데이터와 시내버스 카드 태그 정보를 수집합니다.</del></li>
<li><strong>SNS 및 웹 크롤링</strong>: X(구 트위터), 인스타그램에서 #BTS, #광화문 등의 해시태그 발생 빈도를 분석하여 팬들의 방문 의사 및 밀집도를 파악합니다.</li>
<li><del><strong>교통 및 CCTV 데이터</strong>: 서울시 TOPIS를 통해 인근 도로의 정체 상황과 지능형 CCTV를 활용한 구역별 밀집도를 수집합니다.</del></li>
</ul>
<h4 id="2-데이터-처리-및-정제-data-processing">2. 데이터 처리 및 정제 (Data Processing)</h4>
<p>수집된 원천 데이터(Raw Data)는 형식이 제각각이므로, 분석 가능한 형태로 가공해야 합니다.</p>
<ul>
<li><strong>실시간 스트리밍 처리</strong>: 콘서트 당일에는 초단위로 데이터가 쏟아지므로 Apache Kafka나 Spark Streaming을 사용하여 끊김 없이 데이터를 처리합니다.</li>
<li><strong>데이터 정제</strong>: 단순 통과 인원과 콘서트 관람 목적의 체류 인원을 구분하기 위해 &#39;30분 이상 체류&#39;와 같은 로직을 적용해 필터링합니다.</li>
<li><strong>데이터 적재</strong>: 가공된 데이터는 향후 분석 및 시각화를 위해 <code>Data Warehouse(BigQuery, Snowflake 등)</code>에 저장합니다.</li>
</ul>
<h4 id="3-분석-및-예측-모델링-analytics--ml">3. 분석 및 예측 모델링 (Analytics &amp; ML)</h4>
<p>과거의 유사 사례와 현재 데이터를 결합하여 예측 수치를 도출합니다.</p>
<ul>
<li><strong>과거 사례 비교 분석</strong>: 2002년 월드컵 거리 응원, 과거 대규모 집회, 혹은 타 아티스트의 광화문 공연 데이터를 벤치마킹 모델로 삼습니다.</li>
<li><strong>공간 수용량 계산</strong>: 광화문 광장의 면적(m2)당 적정 인원(보통 1m2당 3~4명)을 계산하여 물리적 한계치를 설정합니다.</li>
<li><strong>예측 알고리즘</strong>: 날씨, 요일, 티켓팅 데이터 등을 변수로 활용해 머신러닝 모델을 돌려 예상 인원 범위를 산출합니다.</li>
</ul>
<h4 id="4-시각화-및-모니터링-visualization">4. 시각화 및 모니터링 (Visualization)</h4>
<p>분석된 결과를 의사결정권자가 한눈에 볼 수 있도록 대시보드를 구성합니다.</p>
<ul>
<li><strong>히트맵(Heatmap) 구현</strong>: 광화문 광장 내 어느 구역이 가장 혼잡한지 실시간으로 보여주는 지도를 제작합니다.</li>
<li><strong>대시보드 운영</strong>: 현재 인원, 유입 속도, 퇴장 예상 시간을 시각화하여 운영팀과 경찰측에 공유합니다.</li>
</ul>
<h3 id="🟩-future-action-향후-계획">🟩 Future Action (향후 계획)</h3>
<p>아직은 대규모 데이터를 다루는 방법과 실시간 데이터를 스트리밍 처리하는 방법을 모르기 때문에, 나중에 배우고 나면 한번 직접 구현해보면 좋을 프로젝트인 것 같다는 생각이 들었다.</p>
<h3 id="🟦-feedback-피드백">🟦 Feedback (피드백)</h3>
<ul>
<li>멘토님도 해당 기사를 보면서 이런 생각을 못했는데, 좋은 생각을 한 것 같다고 칭찬해주셨다. ^^</li>
<li>&quot;데이터 수집 체계 구축&quot; 부분에서 통신사 유동인구 데이터, 서울시 공공데이터, 교통 및 CCTV 데이터는 실시간 데이터이기 때문에 방문 예상치를 분석하는데 도움이 될 것 같지는 않다고 하셨지만, SNS 및 웹 크롤링은 도움이 될 것 같고, 다른 요소가 또 있을지 고민해보면 좋을 것 같다고 해주셨다. </li>
<li>사회현상 및 문제 해결이라는 것을 하나의 주제로 프로젝트를 진행해도 좋을 것 같다고 하셨다. 굳이 분석까지 가지 않더라도, 기획까지만 해도 충분할 것 같다고 하셨다 (이를테면 분석은 3개, 기획은 5~7개).</li>
</ul>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/66a94f3a-e55b-45ca-ba71-e91121c73755/image.jpg" alt="">
<img src="https://velog.velcdn.com/images/eunnam_ahn/post/2be3e1b3-ca1d-4312-8b07-abd55747c108/image.png" alt="">
<img src="https://velog.velcdn.com/images/eunnam_ahn/post/02591325-17d2-44c9-a2c3-b66a109ed8e7/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2026 회사에서 모셔가는 포트폴리오 작성법 (part 4) - 정우혁 개발자 (26/03/11) ]]></title>
            <link>https://velog.io/@eunnam_ahn/2026-%ED%9A%8C%EC%82%AC%EC%97%90%EC%84%9C-%EB%AA%A8%EC%85%94%EA%B0%80%EB%8A%94-%ED%8F%AC%ED%8A%B8%ED%8F%B4%EB%A6%AC%EC%98%A4-%EC%9E%91%EC%84%B1%EB%B2%95-part-4-%EC%A0%95%EC%9A%B0%ED%98%81-%EA%B0%9C%EB%B0%9C%EC%9E%90-260311</link>
            <guid>https://velog.io/@eunnam_ahn/2026-%ED%9A%8C%EC%82%AC%EC%97%90%EC%84%9C-%EB%AA%A8%EC%85%94%EA%B0%80%EB%8A%94-%ED%8F%AC%ED%8A%B8%ED%8F%B4%EB%A6%AC%EC%98%A4-%EC%9E%91%EC%84%B1%EB%B2%95-part-4-%EC%A0%95%EC%9A%B0%ED%98%81-%EA%B0%9C%EB%B0%9C%EC%9E%90-260311</guid>
            <pubDate>Mon, 23 Mar 2026 09:39:14 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/d6ff110b-ae2b-4f2e-b05a-632c117e6643/image.png" alt="">
<img src="https://velog.velcdn.com/images/eunnam_ahn/post/1cf489c0-f9a5-4478-aad2-dae4f40a0292/image.png" alt=""></p>
<h3 id="✅-자주-묻는-질문-faq">✅ 자주 묻는 질문 (FAQ)</h3>
<h4 id="q-문제-해결-과정을-얼마나-어떻게-녹여야하나요">Q. 문제 해결 과정을 얼마나, 어떻게 녹여야하나요?</h4>
<p>A. 길어지면 면접관은 보지 않는다. 짧게, 정량적 성과 위주로 서술하여 면접관의 호기심을 불러일으켜야한다. 상세 과정은 면접에서 설명하고, 블로그에 기록하는 것은 괜찮다. 블로그 링크 첨부 정도는 괜찮지만, 면접관이 (시간 제한으로) 절대 읽지 않는다는 점은 인지하자.</p>
<h4 id="q-쓸만한-내용이-없고-차별화가-안되는-것-같아요">Q. 쓸만한 내용이 없고, 차별화가 안되는 것 같아요.</h4>
<p>A. 쓸만한 내용이 없다면, <code>개발 역량이 부족하다는 뜻</code>이므로 심각하다. 하지만 코드잇 부트캠프는 커리큘럼이 우수하다고 알려져있어서 수강생들에게 해당되지는 않는 것 같다. 프로젝트를 할 때 적극적으로 역할을 많이 가져가도록 노력하면 좋을 것 같다.
<strong>대기업</strong>의 경우 → <code>스페셜리스트 (Specialist)를 선호</code>하므로, 해당 포지션에 대한 깊은 이해와 경험이 필요하다.
<strong>스타트업</strong>의 경우 → <code>제네럴리스트 (Generalist)를 선호</code>하므로, 압도적인 양으로 승부를 본다.</p>
<h4 id="q-수치화가-너무-어려워요">Q. 수치화가 너무 어려워요.</h4>
<p>A. 핵심은 대략적인 수치를 적고, 그 근거가 명확해야한다는 점이다.
예: 원래 운영팀 6명이 하던 일을 기능 개선으로 4명이 할 수 있게 됐다면 → 기능 개선으로 운영 효율 33% 개선</p>
<h3 id="✅-결론">✅ 결론</h3>
<ul>
<li>포트폴리오의 목적은 <code>&#39;면접 오퍼를 받는 것&#39;</code>임을 잊지 말자. 너무 많이 보여줄 필요도 없고, 적게 보여줘서도 안된다. 적당하게 딱 알맞게. 그리고 면접장에 가서 모든 것을 쏟아붓고 나오도록 한다.</li>
<li>포트폴리오가 <code>최대 20장</code>을 넘지 않도록 주의하자.</li>
<li>채용 플랫폼별 이력서에 집중하기보다는, <code>채용 담당자가 꼭 포트폴리오를 확인</code>할 수 있게끔 하자.</li>
</ul>
<h3 id="✅-참석자-질의응답-qa">✅ 참석자 질의응답 (Q&amp;A)</h3>
<h4 id="q-면접관의-입장에서-인상깊게-생각하는-이력서-유형">Q. 면접관의 입장에서 인상깊게 생각하는 이력서 유형?</h4>
<p>A. 면접관 입장에서 읽기 편해야하고 <code>이미지 기반</code>의 이력서.</p>
<h4 id="q-서류에서-가장-중요하게-평가하는-기준">Q. 서류에서 가장 중요하게 평가하는 기준?</h4>
<p>A. 이론적으로 <code>업무 역량</code>이지만, 실무적으로 우선 보기가 편해야한다. (호기심 자극 + 가독성)</p>
<h4 id="q-단순-결과가-아닌-작업-과정을-효율적으로-녹여내는-방법">Q. 단순 결과가 아닌 &#39;작업 과정&#39;을 효율적으로 녹여내는 방법?</h4>
<p>A. 없다! 사실 상당히 어렵다. 그래서 면접으로 이어질 만큼만 만들면 된다.</p>
<h4 id="q-인턴십-기간의-학습용-프로젝트와-ai-툴에-의존해서-만든-결과물은-포트폴리오에-의미가-있는지">Q. 인턴십 기간의 학습용 프로젝트와 AI 툴에 의존해서 만든 결과물은 포트폴리오에 의미가 있는지?</h4>
<p>A. </p>
<ul>
<li>인턴십도 평가하는 과정에서 큰 의미는 없다. 어떤 인턴십이냐에 따라 다르겠지만, 채용 연계형이 아니라면 핵심 업무를 했을 것이라고 생각하지 않는다. 내가 실제로 한 것이 상용 서비스인지 여부가 중요하다.</li>
<li>면접에서는 코드 레벨을 잘 물어보지는 않는다. 개념, 설계, 관점을 주로 묻는다. → 내가 한 경험에 대해 예상 질문을 뽑아보고 준비하도록 한다. </li>
</ul>
<h4 id="q-포트폴리오에서-수치화할-것이-없다면">Q. 포트폴리오에서 수치화할 것이 없다면?</h4>
<p>A. 너무 없다면 개인 프로젝트라도 수치화를 염두에 두고 하는 것을 추천한다.</p>
<h4 id="q-대외비-문제-등의-이유로-스크린샷을-준비할-수-없다면">Q. 대외비 문제 등의 이유로 스크린샷을 준비할 수 없다면?</h4>
<p>A. 내가 만든 서비스와 최대한 비슷한 스크린샷을 넣어주면 된다. 면접 가서 그렇게 설명해주면 된다.</p>
<h4 id="q-신입-개발자가-차별화를-줄-수-있는-부분">Q. 신입 개발자가 차별화를 줄 수 있는 부분?</h4>
<p>A. </p>
<ul>
<li>내가 서비스를 만들어봤는지, 그걸 사용해본 사람이 있는지 (프로덕트 런칭 경험 여부). 이렇게까지 하는 사람이 별로 없다.</li>
<li>현재 포지션 숫자가 줄고 있기 때문에, 취업이 어려워지고 있다.</li>
<li>조급함만 버리고 여유를 갖는다면 충분히 가능하다.</li>
</ul>
<h4 id="q-기술-스택-외에-적합성을-판단하는-요소는">Q. &#39;기술 스택&#39; 외에 적합성을 판단하는 요소는?</h4>
<ul>
<li>커뮤니케이션 능력. 강사 본인은 지원자가 &#39;기술 외골수&#39;라는 느낌이 드는 순간 바로 탈락시킨다. </li>
</ul>
<h4 id="q-ai-에이전트가-널리-퍼진-현재-인재상">Q. AI 에이전트가 널리 퍼진 현재, 인재상?</h4>
<ul>
<li>제너럴리스트를 원한다. 비즈니스 역량도 필요하다. 사람들의 니즈를 파악하고 그걸 충족시켜본 경험 유무!</li>
</ul>
<h4 id="q-바이브-코딩이-주니어-개발자-성장에-어떻게-영향을-주게-될지">Q. 바이브 코딩이 주니어 개발자 성장에 어떻게 영향을 주게 될지?</h4>
<ul>
<li>AI를 사용하되, 잘 사용해야한다. 되도록이면 직접 코드를 짜보는 걸 추천. 활용하더라도 왜?라는 질문에 답할 수 있어야한다.</li>
</ul>
<h4 id="q-프로필-사진을-면접-사진으로-써도-되나요">Q. 프로필 사진을 면접 사진으로 써도 되나요?</h4>
<ul>
<li>너무 이상하지만 않다면 OK.</li>
</ul>
<h4 id="q-기여도-몇--정도-미만이면-부정적인-인상을-주게-되는지">Q. 기여도 몇 % 정도 미만이면 부정적인 인상을 주게 되는지?</h4>
<ul>
<li>면접관이 %만으로 부정적 느낌을 받진 않는다. 다만 거짓말을 하는 게 느껴지면 부정적으로 느끼게 된다. 팀원 8명인데 기여도가 90%라고 하면 가령, 이상하게 보일 것. 면접에서 기여도 부분은 다 티가 나게 되기 때문에, 기술 면접에서 얼마나 자신있게 답을 할 수 있는지에 따라 쓰면 된다. </li>
<li>팀 프로젝트에서 최대한 적극적으로 역할을 가져가려고 노력하자.</li>
<li>면접을 볼 때는 같이 프로젝트를 한 팀원이 다 가서 보는 것이 아니기 때문에 주관적으로 쓰면 된다. 주관적으로 쓰되, 면접에서 얼마나 자신있게 답할 수 있는가가 중요하다.</li>
</ul>
<h4 id="q-나이와-성별의-불리함은-어떻게-하나요">Q. 나이와 성별의 불리함은 어떻게 하나요?</h4>
<ul>
<li>성별은 불리함이 없는 것 같고 나이는 불리함이 있을 수 있는데, 극복 방법은 한가지 → 압도적인 실력 차!</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[위클리 페이퍼 #6-2 오토 인코더 (Autoencoder)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-6-2-%EC%98%A4%ED%86%A0-%EC%9D%B8%EC%BD%94%EB%8D%94-Auto-Encoder</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-6-2-%EC%98%A4%ED%86%A0-%EC%9D%B8%EC%BD%94%EB%8D%94-Auto-Encoder</guid>
            <pubDate>Mon, 23 Mar 2026 08:24:50 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/9e943d99-bca8-400c-a75c-8db2f5542555/image.png" alt=""></p>
<h2 id="🇶-오토-인코더가-적용되기-적합한-상황에-대해-설명하고-오토-인코더를-구성하는-인코더encoder와-디코더decoder-각각의-개념과-차이점에-대해-설명하세요">🇶 오토 인코더가 적용되기 적합한 상황에 대해 설명하고, 오토 인코더를 구성하는 인코더(Encoder)와 디코더(Decoder) 각각의 개념과 차이점에 대해 설명하세요.</h2>
<p>오토인코더(Autoencoder)는 입력 데이터를 압축했다가 다시 복원하는 과정을 통해 데이터의 핵심 특징을 학습하는 <code>비지도 학습(Unsupervised Learning)</code> 모델이다.</p>
<h3 id="1-오토인코더가-적용되기-적합한-상황">1. 오토인코더가 적용되기 적합한 상황</h3>
<p>오토인코더는 데이터의 본질적인 구조를 파악해야 할 때 강력한 위력을 발휘한다. 대표적으로 다음과 같은 상황에 적합하다.</p>
<ul>
<li><strong>차원 축소 (Dimensionality Reduction)</strong>: 고차원의 데이터를 저차원으로 압축하여 시각화하거나 데이터의 용량을 줄일 때 사용한다. PCA보다 복잡한 비선형 구조를 잘 잡아낸다.</li>
<li><strong>이상 탐지 (Anomaly Detection)</strong>: 정상 데이터로만 모델을 학습시킨 후, 새로운 데이터를 입력했을 때 복원 오차(Reconstruction Error)가 크면 이를 <code>이상치</code>로 판단한다. (예: 카드 부정 사용 감지, 공정 불량 탐지)</li>
<li><strong>노이즈 제거 (Denoising)</strong>: 일부러 노이즈가 섞인 데이터를 입력하고 원본 데이터를 복원하도록 학습시켜, 데이터 내의 잡음을 효과적으로 제거한다.</li>
<li><strong>특징 추출 (Feature Extraction)</strong>: 레이블이 없는 방대한 데이터에서 데이터의 핵심적인 특징(Latent Variable)을 자동으로 추출하고자 할 때 활용한다.</li>
</ul>
<h3 id="2-인코더encoder와-디코더decoder의-개념-및-차이점">2. 인코더(Encoder)와 디코더(Decoder)의 개념 및 차이점</h3>
<p>오토인코더는 모래시계 형태의 구조를 띠며, 크게 인코더와 디코더 두 부분으로 나뉜다.</p>
<p><strong>인코더 (Encoder)</strong></p>
<ul>
<li>개념: 입력 데이터를 더 작은 차원의 <code>잠재 공간(Latent Space, Bottleneck)</code>으로 압축하는 역할을 한다.</li>
<li>동작: 고차원 정보를 점차 줄여나가며 데이터의 가장 중요한 특징만을 남긴다. 이 압축된 벡터를 <code>잠재 변수</code> 혹은 <code>코드(Code)</code>라고 부른다.</li>
<li>목적: 데이터에서 불필요한 노이즈를 버리고 핵심 정보만 추출하는 것이다.</li>
</ul>
<p><strong>디코더 (Decoder)</strong></p>
<ul>
<li>개념: 인코더가 만든 압축된 정보를 다시 원래의 입력 데이터 형태로 복원하는 역할을 한다.</li>
<li>동작: 좁은 병목 구간(Bottleneck)에서 나온 정보를 점차 확장하여 입력값과 최대한 유사한 출력값을 생성한다.</li>
<li>목적: 압축된 정보가 원본 데이터를 충분히 설명하고 있는지 검증하고 재구성하는 것이다.</li>
</ul>
<h3 id="3-인코더encoder-vs-디코더decoder-차이점-요약">3. 인코더(Encoder) vs. 디코더(Decoder) 차이점 요약</h3>
<table>
<thead>
<tr>
<th align="center">구분</th>
<th align="center">인코더 (Encoder)</th>
<th align="center">디코더 (Decoder)</th>
</tr>
</thead>
<tbody><tr>
<td align="center"><strong>방향</strong></td>
<td align="center">입력 → 잠재 공간 (압축)</td>
<td align="center">잠재공간 → 출력 (복원)</td>
</tr>
<tr>
<td align="center"><strong>데이터 크기</strong></td>
<td align="center">점진적으로 감소</td>
<td align="center">점진적으로 증가</td>
</tr>
<tr>
<td align="center"><strong>핵심 역할</strong></td>
<td align="center">특징 추출 및 차원 축소</td>
<td align="center">데이터 재구성 및 복원</td>
</tr>
<tr>
<td align="center"><strong>출력물</strong></td>
<td align="center">저차원의 잠재 벡터</td>
<td align="center">원본과 유사한 형태의 데이터</td>
</tr>
<tr>
<td align="center">오토 인코더는 결국 입력값과 출력값 사이의 차이(손실)를 최소화하는 방향으로 학습하게 된다.</td>
<td align="center"></td>
<td align="center"></td>
</tr>
</tbody></table>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/7f98fd85-1c56-46fc-9fdf-a4dbc0447b78/image.jpg" alt="">
이미지 출처: <a href="https://blog.keras.io/building-autoencoders-in-keras.html">https://blog.keras.io/building-autoencoders-in-keras.html</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[위클리 페이퍼 #6-1 CNN (Convolutional Neural Network, 합성곱 신경망)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-6-1-CNN-Convolutional-Neural-Network-%ED%95%A9%EC%84%B1%EA%B3%B1-%EC%8B%A0%EA%B2%BD%EB%A7%9D</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-6-1-CNN-Convolutional-Neural-Network-%ED%95%A9%EC%84%B1%EA%B3%B1-%EC%8B%A0%EA%B2%BD%EB%A7%9D</guid>
            <pubDate>Mon, 23 Mar 2026 07:46:20 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/04e3bd14-0ba9-4cc3-a1f0-543e2ca1766d/image.png" alt=""></p>
<h2 id="🇶-cnn을-구성하는-각-레이어의-역할에-대해-설명해보세요">🇶 CNN을 구성하는 각 레이어의 역할에 대해 설명해보세요.</h2>
<p>CNN (Convolutional Neural Network, 합성곱 신경망)은 주로 이미지 인식과 처리에 특화된 딥러닝 구조입니다. 데이터의 공간적 구조(Spatial Structure)를 유지하면서 특징을 추출하는 것이 핵심이며, 크게 세 가지 주요 레이어로 구성됩니다.
<img src="https://velog.velcdn.com/images/eunnam_ahn/post/2f561c40-00aa-404a-a6b9-b0d18457f33a/image.jpg" alt="">
이미지 출처: <a href="https://nl.mathworks.com/discovery/convolutional-neural-network.html">https://nl.mathworks.com/discovery/convolutional-neural-network.html</a></p>
<h3 id="1-합성곱-레이어-convolutional-layer">1. 합성곱 레이어 (Convolutional Layer)</h3>
<p>CNN의 가장 핵심적인 부분으로, 이미지로부터 <code>특징(Feature)</code>을 추출하는 역할을 합니다.</p>
<ul>
<li>동작 방식: 필터(Filter 또는 Kernel)가 이미지를 일정 간격(Stride)으로 훑으며 연산을 수행합니다.</li>
<li>역할: 이미지의 저수준 특징(선, 면, 색상)부터 고수준 특징(형태, 특정 객체의 부위)까지 단계별로 찾아냅니다.</li>
<li>특징: <code>가중치 공유</code>를 통해 파라미터 수를 줄이면서도 이미지 내 객체의 위치가 바뀌어도 동일한 특징을 인식할 수 있게 합니다.</li>
</ul>
<h3 id="2-풀링-레이어-pooling-layer">2. 풀링 레이어 (Pooling Layer)</h3>
<p>추출된 특징 맵(Feature Map)의 크기를 줄여주는 <code>차원 축소</code> 레이어입니다.</p>
<ul>
<li>동작 방식: 특정 영역에서 가장 큰 값을 뽑는 Max Pooling이나 평균값을 계산하는 Average Pooling을 주로 사용합니다.</li>
<li>역할: <ul>
<li>데이터의 크기를 줄여 연산량을 감소시킵니다.</li>
<li>중요한 특징만 남기고 사소한 변화(노이즈)를 무시하여 모델의 과적합(Overfitting)을 방지합니다.</li>
<li>사물의 위치가 약간 변하더라도 동일하게 인식하는 불변성(Invariance)을 제공합니다.</li>
</ul>
</li>
</ul>
<h3 id="3-완전-연결-레이어-fully-connected-layer">3. 완전 연결 레이어 (Fully Connected Layer)</h3>
<p>망의 마지막 부분에 위치하며, 앞서 추출된 특징들을 종합하여 <code>최종적인 분류(Classification)</code>를 수행합니다.</p>
<ul>
<li>동작 방식: 2차원 형태의 특징 맵을 1차원 벡터로 펼친(Flatten) 후, 일반적인 신경망(ANN)처럼 모든 노드를 연결합니다.</li>
<li>역할: 합성곱과 풀링을 통해 얻은 고차원 특징들을 조합해 &#39;이 이미지는 90% 확률로 강아지다&#39;와 같은 최종 판단을 내립니다.</li>
<li>활성화 함수: 마지막 출력층에서는 보통 Softmax 함수를 사용하여 각 클래스별 확률 값을 출력합니다.</li>
</ul>
<h3 id="📊-요약-정리">📊 요약 정리</h3>
<table>
<thead>
<tr>
<th align="center">레이어</th>
<th align="center">주요 역할</th>
<th align="center">핵심 키워드</th>
</tr>
</thead>
<tbody><tr>
<td align="center"><strong>Convolution</strong></td>
<td align="center">이미지 특징 추출</td>
<td align="center">필터, 스트라이드, 패딩</td>
</tr>
<tr>
<td align="center"><strong>Pooling</strong></td>
<td align="center">데이터 크기 축소 및 특징 강화</td>
<td align="center">맥스 풀링, 계산 효율성</td>
</tr>
<tr>
<td align="center">*<em>Fully Connected *</em></td>
<td align="center">최종 결과 도출 및 분류</td>
<td align="center">소프트맥스, 확률 출력</td>
</tr>
</tbody></table>
]]></description>
        </item>
        <item>
            <title><![CDATA[위클리 페이퍼 #5-2 파이토치의 텐서와 넘파이의 배열 (PyTorch Tensor vs. NumPy Array)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-5-2-%ED%8C%8C%EC%9D%B4%ED%86%A0%EC%B9%98%EC%9D%98-%ED%85%90%EC%84%9C%EC%99%80-%EB%84%98%ED%8C%8C%EC%9D%B4%EC%9D%98-%EB%B0%B0%EC%97%B4-PyTorch-Tensor-vs.-NumPy-Array</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-5-2-%ED%8C%8C%EC%9D%B4%ED%86%A0%EC%B9%98%EC%9D%98-%ED%85%90%EC%84%9C%EC%99%80-%EB%84%98%ED%8C%8C%EC%9D%B4%EC%9D%98-%EB%B0%B0%EC%97%B4-PyTorch-Tensor-vs.-NumPy-Array</guid>
            <pubDate>Thu, 19 Mar 2026 01:38:40 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/113d7112-3b31-46d0-8da7-2b2d026cc1e4/image.png" alt=""></p>
<h2 id="🇶-pytorch에서-텐서란-무엇이고-numpy의-array배열과-어떤-차이가-있나요">🇶 PyTorch에서 텐서란 무엇이고, NumPy의 Array(배열)과 어떤 차이가 있나요?</h2>
<p>PyTorch에서 가장 먼저 마주치게 되는 개념이 바로 <code>텐서 (Tensor)</code>인데요, 쉽게 설명하자면 텐서는 데이터를 담는 다차원 배열이라고 이해하시면 됩니다. NumPy의 배열 (Array)와 매우 유사하지만, 딥러닝 프레임워크인 PyTorch만의 강력한 무기들이 있습니다.</p>
<h3 id="1-텐서tensor란-무엇인가">1. 텐서(Tensor)란 무엇인가?</h3>
<p>수학적 관점에서 텐서는 데이터의 차원에 따라 다음과 같이 불립니다:</p>
<ul>
<li>0차원: 스칼라 (Scalar) - 단일 숫자</li>
<li>1차원: 벡터 (Vector) - 숫자의 나열</li>
<li>2차원: 행렬 (Matrix) - 가로와 세로가 있는 표 형태</li>
<li>3차원 이상: 텐서 (Tensor) - 입체적인 데이터 구조</li>
</ul>
<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/b77562a6-5cbf-4224-94e2-aed292cf0cdd/image.png" alt=""></p>
<p>PyTorch에서 텐서는 이러한 데이터를 저장할 뿐만 아니라, GPU 가속과 자동 미분이라는 핵심 기능을 수행하는 기본 단위가 됩니다.</p>
<h3 id="2-numpy-배열-array-vs-pytorch-텐서-tensor">2. NumPy 배열 (Array) vs. PyTorch 텐서 (Tensor)</h3>
<p>두 구조는 사용법이 거의 90% 이상 일치할 정도로 비슷하지만, 결정적인 차이점 3가지가 있습니다.</p>
<p><strong>① GPU 가속 (Hardware Acceleration)</strong></p>
<ul>
<li>NumPy: 기본적으로 CPU에서만 동작합니다. 대규모 연산이 필요한 딥러닝에서는 속도의 한계가 있습니다.</li>
<li>PyTorch: 텐서를 아주 간단하게 GPU (cuda)나 Apple Silicon GPU (mps)로 옮겨서 연산할 수 있습니다. 수만 개의 파라미터를 계산할 때 CPU보다 수십 배 이상 빠릅니다.</li>
</ul>
<p><strong>② 자동 미분 (Autograd)</strong></p>
<ul>
<li>NumPy: 미분 값을 구하려면 직접 수학 공식을 코드로 구현해야 합니다.</li>
<li>PyTorch: NumPy 배열과의 가장 핵심적인 차이는 자동 미분 (Autograd)입니다. <code>requires_grad=True</code> 설정만 하면, 텐서에서 일어나는 모든 연산을 추적하여 <code>역전파(Backpropagation)</code> 시 미분 값을 자동으로 계산해 줍니다. 딥러닝 모델 학습의 핵심 기능입니다.</li>
</ul>
<p><strong>③ 상호 변환 (Interoperability)</strong>
두 라이브러리는 서로 매우 친합니다. 데이터를 주고받는 것이 매우 자유로우며, 특히 CPU 상의 텐서는 NumPy 배열과 <code>메모리를 공유</code>하기 때문에 변환 시 별도의 복사 비용이 들지 않습니다.</p>
<h3 id="📊-핵심-비교">📊 핵심 비교</h3>
<table>
<thead>
<tr>
<th align="center">특징</th>
<th align="center">NumPy 배열 (Array)</th>
<th align="center">PyTorch 텐서 (Tensor)</th>
</tr>
</thead>
<tbody><tr>
<td align="center"><strong>주요 장치</strong></td>
<td align="center">CPU</td>
<td align="center">CPU, GPU, TPU</td>
</tr>
<tr>
<td align="center"><strong>자동 미분</strong></td>
<td align="center">지원 X</td>
<td align="center">강력하게 지원 (Autograd)</td>
</tr>
<tr>
<td align="center"><strong>용도</strong></td>
<td align="center">일반 수치 계산, 데이터 분석</td>
<td align="center">딥러닝 모델 구현 및 학습</td>
</tr>
</tbody></table>
<p>가장 핵심적인 차이는 <code>자동 미분 (Autograd)</code>입니다. 이것이 텐서를 단순 배열이 아니라 딥러닝 도구로 만드는 핵심 기능입니다.</p>
<p><strong>한 문장으로 요약하면:</strong>
NumPy 배열은 수치 계산 도구이고, PyTorch 텐서는 거기에 GPU 가속과 자동 미분을 얹은 딥러닝 전용 도구입니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[위클리 페이퍼 #5-1 파이토치와 텐서플로우 (PyTorch & TensorFlow)]]></title>
            <link>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-5-1-%ED%8C%8C%EC%9D%B4%ED%86%A0%EC%B9%98%EC%99%80-%ED%85%90%EC%84%9C%ED%94%8C%EB%A1%9C%EC%9A%B0-PyTorch-TensorFlow</link>
            <guid>https://velog.io/@eunnam_ahn/%EC%9C%84%ED%81%B4%EB%A6%AC-%ED%8E%98%EC%9D%B4%ED%8D%BC-5-1-%ED%8C%8C%EC%9D%B4%ED%86%A0%EC%B9%98%EC%99%80-%ED%85%90%EC%84%9C%ED%94%8C%EB%A1%9C%EC%9A%B0-PyTorch-TensorFlow</guid>
            <pubDate>Wed, 18 Mar 2026 02:24:37 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eunnam_ahn/post/e04f088f-0ea2-42fa-985d-085c2f2bfc0e/image.png" alt=""></p>
<h2 id="🇶-딥러닝-프레임워크인-pytorch와-tensorflow를-비교해보세요">🇶 딥러닝 프레임워크인 PyTorch와 TensorFlow를 비교해보세요.</h2>
<h3 id="1-핵심-차이">1. 핵심 차이</h3>
<p>두 프레임워크의 가장 큰 차이는 그래프를 생성하고 실행하는 방식에 있습니다.</p>
<ul>
<li><strong>PyTorch</strong>: 코드가 실행될 때 그래프가 즉시 만들어지는 <code>동적 그래프(define-by-run) 방식</code>입니다. 덕분에 일반 Python 코드처럼 <code>print()</code>로 중간값을 확인하거나, 반복마다 모델 구조를 바꾸는 것이 자연스럽습니다. 연구자들이 압도적으로 선호하는 이유가 여기에 있습니다.</li>
<li><strong>TensorFlow</strong>: 원래 그래프를 먼저 정의해두고 나중에 실행하는 <code>정적 그래프(define-and-run) 방식</code>이었습니다. 이 방식은 최적화와 배포에 유리하지만 디버깅이 까다로웠고, TF 2.x부터는 Eager Execution을 기본으로 채택해 이 단점을 보완했습니다.</li>
</ul>
<h3 id="2-주요-특성-비교">2. 주요 특성 비교</h3>
<table>
<thead>
<tr>
<th align="center">구분</th>
<th align="center">PyTorch (Dynamic)</th>
<th align="center">TensorFlow (Static/Hybrid)</th>
</tr>
</thead>
<tbody><tr>
<td align="center"><strong>연산 방식</strong></td>
<td align="center"><strong>Define-by-Run</strong> (동적 계산 그래프)</td>
<td align="center"><strong>Define-and-Run</strong> (정적 계산 그래프)</td>
</tr>
<tr>
<td align="center"><strong>작동 원리</strong></td>
<td align="center">코드를 실행하는 시점에 그래프가 생성됨.</td>
<td align="center">그래프를 먼저 정의한 후 데이터를 주입함.</td>
</tr>
<tr>
<td align="center"><strong>유연성</strong></td>
<td align="center">Pythonic하며, 중간에 값을 확인하거나 수정하는 것이 쉬움.</td>
<td align="center">대규모 분산 처리와 최적화에 유리함.</td>
</tr>
<tr>
<td align="center">참고: TensorFlow도 2.0 버전부터 &#39;Eager Execution&#39;을 도입하여 PyTorch처럼 동적 실행이 가능해졌고, PyTorch 역시 배포를 위해 정적 그래프 변환 기능을 강화했습니다.</td>
<td align="center"></td>
<td align="center"></td>
</tr>
</tbody></table>
<h3 id="3-무엇을-선택해야-할까">3. 무엇을 선택해야 할까?</h3>
<ul>
<li><p><strong>PyTorch를 추천하는 경우</strong>:</p>
<ul>
<li>논문 구현, 새로운 아이디어 실험, 아키텍처 탐색 등 연구 목적</li>
<li>HuggingFace 생태계(Transformers, Diffusers)를 활용할 때</li>
<li>빠른 프로토타이핑과 직관적인 디버깅이 중요할 때    </li>
</ul>
</li>
<li><p><strong>TensorFlow를 추천하는 경우</strong>:</p>
<ul>
<li>TFLite로 모바일/IoT 기기에 모델을 배포할 때</li>
<li>기존 TF 코드베이스가 있는 엔터프라이즈 환경</li>
<li>이미 Google Cloud 기반의 인프라를 사용 중인 기업</li>
</ul>
</li>
</ul>
<p>결론적으로, 요즘은 둘 중 하나만 배워야 한다면 <code>PyTorch</code>가 업계 표준 조언에 가깝습니다. 딥러닝 입문자나 연구자라면 고민하지 말고 PyTorch를 추천합니다. 아이디어를 코드로 옮기는 과정이 훨씬 매끄럽습니다. 하지만 취업 목표가 대기업 프로덕션 ML 엔지니어링이라면 TensorFlow 배포 생태계도 알아두는 것이 유리합니다. 기업 환경에서 대규모 서빙 인프라를 구축하거나 안드로이드/iOS 등 모바일 환경에 모델을 이식해야 한다면 <code>TensorFlow</code>가 유리한 선택지가 될 수 있습니다.</p>
]]></description>
        </item>
    </channel>
</rss>