Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 딥러닝 학습 노트북

파이토치(PyTorch)와 텐서플로우(TensorFlow)를 활용한 딥러닝 기초부터 실전 프로젝트까지 학습하는 Jupyter Notebook입니다.


📚 프로젝트 개요

이 저장소는 딥러닝(Deep Learning)의 기초 개념부터 실전 프로젝트까지 단계별로 학습할 수 있는 자료를 포함하고 있습니다. 파이토치와 텐서플로우 프레임워크를 사용하여 선형 회귀, 로지스틱 회귀, 신경망, CNN, 전이 학습 등 다양한 딥러닝 모델을 구현하고 실습합니다.


📘 주요 학습 내용

1. 딥러닝이란?

딥러닝(Deep Learning)은 머신러닝의 한 분야로, 사람의 뇌 신경망 구조에서 영감을 받은 인공신경망(Artificial Neural Networks)을 여러 층으로 쌓아 복잡한 패턴을 학습하는 기술입니다. 입력층(Input Layer), 은닉층(Hidden Layer), 출력층(Output Layer)으로 구성된 다층 구조를 통해 데이터의 고차원적인 특징을 자동으로 추출하고 학습합니다.

딥러닝의 주요 특징

  • 자동 특징 추출: 기존 머신러닝과 달리 데이터로부터 특징을 자동으로 학습
  • 대용량 데이터 처리: 빅데이터를 활용하여 높은 성능 달성
  • 비선형 문제 해결: 복잡한 비선형 관계를 모델링 가능
  • 다양한 도메인 적용: 이미지, 음성, 자연어 등 다양한 분야에서 활용

2. 딥러닝 vs 머신러닝

구분 머신러닝 딥러닝
특징 추출 수동 설계 필요 자동 학습
데이터 양 소규모 데이터에도 효과적 대용량 데이터 필요
계산 자원 상대적으로 적음 GPU 등 고성능 자원 필요
해석 가능성 상대적으로 높음 복잡하여 해석이 어려움
학습 시간 비교적 짧음 상대적으로 김

3. 딥러닝의 주요 분야

컴퓨터 비전 (Computer Vision)

  • 이미지 분류: 사진 속 객체를 카테고리별로 분류
  • 객체 탐지: 이미지 내에서 특정 객체의 위치와 종류를 동시에 파악
  • 이미지 분할: 이미지의 각 픽셀을 의미 있는 영역으로 구분
  • 얼굴 인식: 얼굴 특징을 추출하여 개인 식별
  • 의료 영상 분석: X-ray, CT, MRI 등 의료 이미지 분석 및 진단 보조

자연어 처리 (Natural Language Processing, NLP)

  • 텍스트 분류: 뉴스 기사 카테고리 분류, 감정 분석
  • 기계 번역: 언어 간 자동 번역
  • 챗봇: 대화형 AI 시스템 구축
  • 문서 요약: 긴 문서를 짧게 요약
  • 음성 인식: 음성을 텍스트로 변환

음성 인식 (Speech Recognition)

  • 음성 명령 인식: 음성으로 기기 제어
  • 화자 인식: 음성으로 개인 식별
  • 음성 합성: 텍스트를 자연스러운 음성으로 변환

강화 학습 (Reinforcement Learning)

  • 게임 AI: 바둑, 체스, 게임 봇 개발
  • 로봇 제어: 자율주행, 로봇 팔 제어
  • 추천 시스템: 개인화된 콘텐츠 추천

4. 딥러닝의 주요 모델 구조

완전연결 신경망 (Fully Connected Neural Network, FCN)

  • 퍼셉트론 (Perceptron): 가장 기본적인 신경망 단위
  • 다층 퍼셉트론 (MLP): 여러 층으로 구성된 신경망
  • 활용: 회귀, 분류 문제

합성곱 신경망 (Convolutional Neural Network, CNN)

  • 특징: 이미지의 공간적 특징을 효과적으로 학습
  • 구성: 합성곱층, 풀링층, 완전연결층
  • 활용: 이미지 분류, 객체 탐지, 얼굴 인식
  • 대표 모델: LeNet, AlexNet, VGG, ResNet

순환 신경망 (Recurrent Neural Network, RNN)

  • 특징: 시퀀스 데이터의 시간적 패턴 학습
  • 활용: 자연어 처리, 시계열 예측, 음성 인식
  • 변형: LSTM, GRU

트랜스포머 (Transformer)

  • 특징: 어텐션 메커니즘을 활용한 모델
  • 활용: 번역, 언어 모델, BERT, GPT 등

5. 딥러닝 학습 프로세스

1. 데이터 준비

  • 데이터 수집 및 전처리
  • 데이터 증강 (Data Augmentation)
  • 학습/검증/테스트 데이터 분할

2. 모델 설계

  • 네트워크 구조 정의
  • 활성화 함수 선택
  • 손실 함수 및 최적화 알고리즘 설정

3. 모델 학습

  • 순전파 (Forward Propagation): 입력 데이터가 네트워크를 통과
  • 역전파 (Backpropagation): 오차를 역방향으로 전파하여 가중치 업데이트
  • 에포크(Epoch) 반복 학습

4. 모델 평가

  • 검증 데이터로 성능 평가
  • 과적합(Overfitting) 확인
  • 하이퍼파라미터 조정

5. 모델 최적화

  • 학습률 조정
  • 정규화 기법 적용 (Dropout, Batch Normalization 등)
  • 조기 종료 (Early Stopping)

6. 모델 배포

  • 모델 저장 및 불러오기
  • 추론(Inference) 수행
  • 프로덕션 환경 배포

6. 딥러닝을 공부하기 위해 필요한 것들

프로그래밍 언어

  • 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                                 # 프로젝트 설명서

⚙️ 실행 환경 설정

1️⃣ 가상환경 생성 (선택)

python -m venv .venv
# Windows
.venv\Scripts\activate

# macOS/Linux
source .venv/bin/activate

2️⃣ 필수 패키지 설치

# 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-learn

3️⃣ Jupyter Notebook 실행

jupyter notebook

📦 주요 패키지

딥러닝 프레임워크

  • PyTorch: 딥러닝 모델 개발 및 학습
  • TensorFlow: 딥러닝 모델 개발 및 학습
  • Torchvision: 이미지 데이터셋 및 전처리 도구

데이터 처리

  • NumPy: 수치 계산 및 배열 연산
  • Pandas: 데이터 분석 및 조작
  • PIL/Pillow: 이미지 처리

시각화

  • Matplotlib: 데이터 시각화
  • Seaborn: 통계 데이터 시각화

기타

  • Scikit-learn: 머신러닝 유틸리티 및 평가 지표

💡 핵심 개념

신경망 (Neural Network)

인공신경망은 인간의 뇌 신경망 구조를 모방한 알고리즘입니다. 입력층에서 데이터를 받아 여러 은닉층을 거쳐 출력층에서 결과를 생성합니다. 각 뉴런(노드)은 가중치(Weight)와 편향(Bias)을 가지고 있으며, 활성화 함수를 통해 출력을 결정합니다.

순전파 (Forward Propagation)

입력 데이터가 네트워크의 각 층을 순차적으로 통과하면서 최종 출력을 생성하는 과정입니다. 각 층에서 행렬 곱셈과 활성화 함수 적용을 반복합니다.

역전파 (Backpropagation)

학습 과정에서 예측값과 실제값의 차이(오차)를 계산하고, 이를 역방향으로 전파하여 각 가중치와 편향을 업데이트하는 알고리즘입니다. 경사 하강법을 사용하여 손실 함수를 최소화합니다.

손실 함수 (Loss Function)

모델의 예측값과 실제값 사이의 차이를 측정하는 함수입니다. 회귀 문제에서는 평균 제곱 오차(MSE), 분류 문제에서는 교차 엔트로피(Cross-Entropy)를 주로 사용합니다.

최적화 (Optimization)

손실 함수를 최소화하기 위해 모델의 가중치를 조정하는 과정입니다. 경사 하강법(Gradient Descent)과 그 변형인 Adam, RMSprop 등의 최적화 알고리즘을 사용합니다.

과적합 (Overfitting)

모델이 학습 데이터에만 과도하게 맞춰져서 새로운 데이터에 대한 일반화 성능이 떨어지는 현상입니다. 드롭아웃(Dropout), 정규화(Regularization), 조기 종료(Early Stopping) 등의 기법으로 완화할 수 있습니다.

전이 학습 (Transfer Learning)

사전 학습된 모델의 가중치를 새로운 작업에 재사용하는 기법입니다. 적은 데이터로도 높은 성능을 달성할 수 있으며, 학습 시간을 단축할 수 있습니다.


🔗 참고 자료


📝 라이선스

이 프로젝트는 학습 목적으로 작성되었습니다.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages