본문 바로가기

분류 전체보기

(60)
PyTorch 기초 들어가며 이론은 공부했으니 이제 PyTorch로 직접 코드를 짜볼 차례다. PyTorch는 딥러닝 프레임워크 중 연구와 실무 모두에서 가장 많이 쓰인다. 웹 개발로 비유하면 React 같은 존재다. 직관적이고 유연하며 커뮤니티가 크다. 핵심 개념부터 실제 학습 파이프라인까지 정리해둔다. 설치 # CPU 버전pip install torch torchvision torchaudio# GPU 버전 (CUDA 11.8)pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 설치 확인python -c "import torch; print(torch.__version__..
NumPy / Pandas 기초 들어가며 딥러닝 코드를 보다 보면 NumPy와 Pandas가 항상 등장한다. 파이썬은 쓸 수 있지만 이 두 라이브러리는 딥러닝에 특화된 방식으로 쓰이기 때문에 따로 정리해둘 필요가 있다. 특히 데이터 전처리 단계에서 NumPy와 Pandas 없이는 거의 불가능하다. NumPy 핵심 배열 생성 import numpy as npa = np.array([1, 2, 3, 4, 5])b = np.array([[1, 2, 3], [4, 5, 6]])print(a.shape) # (5,)print(b.shape) # (2, 3)print(b.ndim) # 2# 특수 배열zeros = np.zeros((3, 4))ones = np.ones((3, 4))eye ..
사전학습 모델 활용 (Transfer Learning) 들어가며 딥러닝을 처음 공부하면서 가장 실용적으로 느낀 부분이 사전학습 모델 활용이다. 수억 개의 데이터로 학습된 모델을 가져다가 내 문제에 맞게 조금만 수정하면 처음부터 학습하는 것보다 훨씬 좋은 성능이 나온다. 웹 개발로 비유하면 npm 패키지를 가져다 쓰는 것과 비슷하다. 바퀴를 다시 발명하지 않아도 된다. Transfer Learning이란? 일반적인 학습:랜덤 초기화 → 내 데이터로 처음부터 학습Transfer Learning:사전학습 모델 로드 → 내 데이터로 미세조정 (Fine-tuning)효과:- 적은 데이터로도 좋은 성능- 학습 시간 대폭 감소- 사전학습 모델의 일반적 지식 활용 사전학습 모델의 종류 이미지 (Vision) ResNet-50/1..
Transformer / Attention 들어가며 BERT, GPT, ChatGPT 등 요즘 화제가 되는 모델들이 모두 Transformer 구조를 기반으로 한다. 2017년 "Attention Is All You Need" 논문 하나가 NLP 판도를 완전히 바꿨다. RNN/LSTM의 한계를 어떻게 극복했는지, Attention이 무엇인지부터 차근차근 정리해둔다. RNN의 한계와 Transformer의 등장 RNN/LSTM의 문제점:1. 순차 처리: t번째 단어를 처리하려면 t-1번째가 끝나야 함 → GPU 병렬 처리 불가능 → 학습이 느림2. 장거리 의존성: 시퀀스가 길수록 먼 정보 손실3. 병목: 전체 시퀀스를 고정 크기 벡터로 압축 → 긴 문장에서 정보 손실 Transformer의 핵심 아이디어:- ..
RNN / LSTM (시퀀스, 텍스트) 들어가며 CNN이 이미지의 공간적 구조를 다루는 도구라면, RNN은 시간적 순서가 있는 데이터를 다루는 도구다. 텍스트, 시계열 데이터, 음성 등 순서가 중요한 데이터에 사용된다. 웹 개발로 비유하면 RNN은 이전 API 응답 결과를 다음 요청에 활용하는 것처럼 이전 상태를 기억하면서 처리하는 구조다. 왜 RNN인가? 일반 신경망은 입력이 서로 독립적이라고 가정한다. 하지만 텍스트는 단어 순서가 의미를 결정한다. "나는 밥을 먹었다""밥을 나는 먹었다"→ 같은 단어지만 순서에 따라 의미가 달라짐"I love you" → 긍정"I don't love you" → 부정→ "love"만 보면 모름, 앞뒤 맥락이 중요함 RNN 기본 구조 import num..
CNN (합성곱 신경망) 들어가며 웹 개발을 하면서 이미지를 다룰 때는 그냥 태그로 보여주는 게 전부였다. 딥러닝에서 이미지를 다루기 시작하면서 CNN이 왜 이미지에 특화된 구조인지, 어떻게 동작하는지 처음엔 전혀 감이 없었다. 기초 개념부터 실제 코드까지 정리해둔다. 왜 CNN인가? 일반 신경망(MLP)으로 이미지를 처리하면 어떤 문제가 있을까? import torchimport torch.nn as nn# 224x224 컬러 이미지를 MLP로 처리하면image_size = 224 * 224 * 3 # 150,528개 입력mlp = nn.Sequential( nn.Linear(150528, 1024), # 가중치: 약 1.5억개 nn.ReLU(), nn.Linear(102..
과적합과 정규화 (Overfitting, Dropout, BatchNorm) 들어가며 딥러닝 모델을 학습시키다 보면 훈련 데이터에서는 성능이 좋은데 실제 데이터에서는 성능이 떨어지는 현상을 자주 만난다. 이게 바로 과적합이다. 웹 개발로 비유하면 특정 브라우저에서만 완벽하게 동작하는 코드를 짠 것과 비슷하다. 범용적으로 동작해야 하는데 특정 케이스에만 최적화된 것이다. 과적합을 이해하고 해결하는 방법을 정리해둔다. 과적합 (Overfitting)이란? 모델이 훈련 데이터를 너무 잘 외워서 새로운 데이터에 일반화하지 못하는 현상이다. 과적합 신호:- 훈련 손실은 계속 감소- 검증 손실은 어느 순간부터 증가- 훈련 정확도 >> 검증 정확도 과적합 vs 과소적합 훈련 손실 검증 손실 상태과소적합 (Und..
손실 함수 (Loss Function) 들어가며 손실 함수는 모델이 얼마나 틀렸는지를 하나의 숫자로 표현하는 함수다. 학습의 목표가 이 값을 최소화하는 것이기 때문에, 어떤 손실 함수를 쓰느냐가 모델의 학습 방향 자체를 결정한다. 문제 유형에 따라 적절한 손실 함수를 선택하는 게 중요하다. 손실 함수란? 예측값(ŷ)과 실제값(y)의 차이를 수치화한 함수좋은 예측 → 손실 작음나쁜 예측 → 손실 큼학습 목표: 손실을 최소화하는 가중치 W 찾기θ* = argmin L(y, ŷ) 웹 개발로 비유하면 손실 함수는 테스트 실패율 같은 것이다. 테스트가 많이 실패할수록 코드를 더 많이 고쳐야 하듯, 손실이 클수록 가중치를 더 많이 업데이트해야 한다. 회귀 손실 함수 연..