파이토치(PyTorch)와 텐서플로우(TensorFlow)를 활용한 딥러닝 기초부터 실전 프로젝트까지 학습하는 Jupyter Notebook입니다.
이 저장소는 딥러닝(Deep Learning)의 기초 개념부터 실전 프로젝트까지 단계별로 학습할 수 있는 자료를 포함하고 있습니다. 파이토치와 텐서플로우 프레임워크를 사용하여 선형 회귀, 로지스틱 회귀, 신경망, CNN, 전이 학습 등 다양한 딥러닝 모델을 구현하고 실습합니다.
딥러닝(Deep Learning)은 머신러닝의 한 분야로, 사람의 뇌 신경망 구조에서 영감을 받은 인공신경망(Artificial Neural Networks)을 여러 층으로 쌓아 복잡한 패턴을 학습하는 기술입니다. 입력층(Input Layer), 은닉층(Hidden Layer), 출력층(Output Layer)으로 구성된 다층 구조를 통해 데이터의 고차원적인 특징을 자동으로 추출하고 학습합니다.
- 자동 특징 추출: 기존 머신러닝과 달리 데이터로부터 특징을 자동으로 학습
- 대용량 데이터 처리: 빅데이터를 활용하여 높은 성능 달성
- 비선형 문제 해결: 복잡한 비선형 관계를 모델링 가능
- 다양한 도메인 적용: 이미지, 음성, 자연어 등 다양한 분야에서 활용
| 구분 | 머신러닝 | 딥러닝 |
|---|---|---|
| 특징 추출 | 수동 설계 필요 | 자동 학습 |
| 데이터 양 | 소규모 데이터에도 효과적 | 대용량 데이터 필요 |
| 계산 자원 | 상대적으로 적음 | GPU 등 고성능 자원 필요 |
| 해석 가능성 | 상대적으로 높음 | 복잡하여 해석이 어려움 |
| 학습 시간 | 비교적 짧음 | 상대적으로 김 |
- 이미지 분류: 사진 속 객체를 카테고리별로 분류
- 객체 탐지: 이미지 내에서 특정 객체의 위치와 종류를 동시에 파악
- 이미지 분할: 이미지의 각 픽셀을 의미 있는 영역으로 구분
- 얼굴 인식: 얼굴 특징을 추출하여 개인 식별
- 의료 영상 분석: X-ray, CT, MRI 등 의료 이미지 분석 및 진단 보조
- 텍스트 분류: 뉴스 기사 카테고리 분류, 감정 분석
- 기계 번역: 언어 간 자동 번역
- 챗봇: 대화형 AI 시스템 구축
- 문서 요약: 긴 문서를 짧게 요약
- 음성 인식: 음성을 텍스트로 변환
- 음성 명령 인식: 음성으로 기기 제어
- 화자 인식: 음성으로 개인 식별
- 음성 합성: 텍스트를 자연스러운 음성으로 변환
- 게임 AI: 바둑, 체스, 게임 봇 개발
- 로봇 제어: 자율주행, 로봇 팔 제어
- 추천 시스템: 개인화된 콘텐츠 추천
- 퍼셉트론 (Perceptron): 가장 기본적인 신경망 단위
- 다층 퍼셉트론 (MLP): 여러 층으로 구성된 신경망
- 활용: 회귀, 분류 문제
- 특징: 이미지의 공간적 특징을 효과적으로 학습
- 구성: 합성곱층, 풀링층, 완전연결층
- 활용: 이미지 분류, 객체 탐지, 얼굴 인식
- 대표 모델: LeNet, AlexNet, VGG, ResNet
- 특징: 시퀀스 데이터의 시간적 패턴 학습
- 활용: 자연어 처리, 시계열 예측, 음성 인식
- 변형: LSTM, GRU
- 특징: 어텐션 메커니즘을 활용한 모델
- 활용: 번역, 언어 모델, BERT, GPT 등
- 데이터 수집 및 전처리
- 데이터 증강 (Data Augmentation)
- 학습/검증/테스트 데이터 분할
- 네트워크 구조 정의
- 활성화 함수 선택
- 손실 함수 및 최적화 알고리즘 설정
- 순전파 (Forward Propagation): 입력 데이터가 네트워크를 통과
- 역전파 (Backpropagation): 오차를 역방향으로 전파하여 가중치 업데이트
- 에포크(Epoch) 반복 학습
- 검증 데이터로 성능 평가
- 과적합(Overfitting) 확인
- 하이퍼파라미터 조정
- 학습률 조정
- 정규화 기법 적용 (Dropout, Batch Normalization 등)
- 조기 종료 (Early Stopping)
- 모델 저장 및 불러오기
- 추론(Inference) 수행
- 프로덕션 환경 배포
- Python: 딥러닝의 표준 언어
- 필수 라이브러리: NumPy, Pandas, Matplotlib
- PyTorch: 유연하고 직관적인 인터페이스, 연구 분야에서 널리 사용
- TensorFlow: Google에서 개발, 프로덕션 환경에서 널리 사용
- Keras: TensorFlow의 고수준 API
- 선형대수: 행렬 연산, 벡터 공간
- 미적분: 편미분, 체인 룰, 경사 하강법
- 확률과 통계: 확률 분포, 베이지안 추론
- GPU: 대용량 연산을 위한 그래픽 처리 장치 (NVIDIA GPU 권장)
- 클라우드 플랫폼: Google Colab, AWS, GCP 등
- Kaggle: 딥러닝 대회 및 데이터셋
- 오픈소스 프로젝트: GitHub에서 모델 구현 및 개선
- 논문 읽기: 최신 연구 동향 파악
02. ai_study_deeplearning/
├── 01. 파이토치 프레임워크.ipynb # PyTorch 기초 학습
├── 02. 파이토치로 구현한 선형 회귀.ipynb # Linear Regression 구현
├── 03. 파이토치로 구현한 논리 회귀.ipynb # Logistic Regression 구현
├── 04. 손 글씨 숫자 데이터셋.ipynb # MNIST 데이터셋 실습
├── 05. 딥러닝_ 퍼셉트론과 다층 퍼셉트론.ipynb # Perceptron & MLP 학습
├── 06. Multi-class Weather Dataset.ipynb # 날씨 데이터 분류
├── 07. CNN.ipynb # 합성곱 신경망 구현
├── 08. 손글씨 도형 분류하기.ipynb # 도형 이미지 분류
├── 09. Alexnet 구현하기.ipynb # AlexNet 모델 구현
├── 10. Alien vs Predator 데이터셋.ipynb # 이미지 분류 프로젝트
├── 11. Surface Crack Detection 데이터셋.ipynb # 표면 균열 탐지
├── 12. 산타와 일반인 분류.ipynb # 얼굴 이미지 분류
├── 13. 텐서플로우.ipynb # TensorFlow 기초 학습
└── README.md # 프로젝트 설명서
python -m venv .venv# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate# PyTorch 설치 (CPU 버전)
pip install torch torchvision torchaudio
# 또는 GPU 버전 (CUDA 지원)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# TensorFlow 설치
pip install tensorflow
# 기타 필수 패키지
pip install numpy pandas matplotlib jupyter scikit-learnjupyter notebook- PyTorch: 딥러닝 모델 개발 및 학습
- TensorFlow: 딥러닝 모델 개발 및 학습
- Torchvision: 이미지 데이터셋 및 전처리 도구
- NumPy: 수치 계산 및 배열 연산
- Pandas: 데이터 분석 및 조작
- PIL/Pillow: 이미지 처리
- Matplotlib: 데이터 시각화
- Seaborn: 통계 데이터 시각화
- Scikit-learn: 머신러닝 유틸리티 및 평가 지표
인공신경망은 인간의 뇌 신경망 구조를 모방한 알고리즘입니다. 입력층에서 데이터를 받아 여러 은닉층을 거쳐 출력층에서 결과를 생성합니다. 각 뉴런(노드)은 가중치(Weight)와 편향(Bias)을 가지고 있으며, 활성화 함수를 통해 출력을 결정합니다.
입력 데이터가 네트워크의 각 층을 순차적으로 통과하면서 최종 출력을 생성하는 과정입니다. 각 층에서 행렬 곱셈과 활성화 함수 적용을 반복합니다.
학습 과정에서 예측값과 실제값의 차이(오차)를 계산하고, 이를 역방향으로 전파하여 각 가중치와 편향을 업데이트하는 알고리즘입니다. 경사 하강법을 사용하여 손실 함수를 최소화합니다.
모델의 예측값과 실제값 사이의 차이를 측정하는 함수입니다. 회귀 문제에서는 평균 제곱 오차(MSE), 분류 문제에서는 교차 엔트로피(Cross-Entropy)를 주로 사용합니다.
손실 함수를 최소화하기 위해 모델의 가중치를 조정하는 과정입니다. 경사 하강법(Gradient Descent)과 그 변형인 Adam, RMSprop 등의 최적화 알고리즘을 사용합니다.
모델이 학습 데이터에만 과도하게 맞춰져서 새로운 데이터에 대한 일반화 성능이 떨어지는 현상입니다. 드롭아웃(Dropout), 정규화(Regularization), 조기 종료(Early Stopping) 등의 기법으로 완화할 수 있습니다.
사전 학습된 모델의 가중치를 새로운 작업에 재사용하는 기법입니다. 적은 데이터로도 높은 성능을 달성할 수 있으며, 학습 시간을 단축할 수 있습니다.
이 프로젝트는 학습 목적으로 작성되었습니다.