인턴십 목표
이번 4주 과정의 목표는 단순히 딥러닝 라이브러리 사용법을 배우는 것을 넘어, 딥러닝 모델이 어떻게 데이터를 먹고, 학습하고, 결과를 내는지 그 핵 심 원리를 직접 코드로 구현하며 체득하는 것입니다. 파이토치(PyTorch)를 주력으로 사용하며, ‘왜 이렇게 동작할까?‘를 항상 고민하는 습관을 기르는 데 중점을 둡니다. 추가 목표: 기술적인 능력과 더불어, 동료와 협업하고(Collaboration), 자신의 지식을 공유하며(Communication), 체계적으로 실험하는 (Experimentation) 경험을 통해 예비 연구자로서의 기본 소양을 갖춥니다.
Week 1: 딥러닝 기초 다지기 - PyTorch부터 Custom Dataset까지
주요 목표: 딥러닝의 기본 단위인 텐서부터 나만의 데이터 파이프라인을 만드는 전체 과정까지, 파이토치의 핵심 철학과 이미지 데이터 처리의 기 본을 함께 다집니다. “라이브러리가 다 해주던데?”가 아닌, “이런 원리였구나!”를 깨닫는 한 주입니다.
- 준비: 개발 환경 구성 및 프로젝트 관리 시작
- 가상 환경 설정: Conda 를 이용하여 각자의 프로젝트를 위한 가상 환경을 만들고, 필요한 라이브러리(PyTorch, Numpy, Matplotlib 등)를 설치합니다.
- Git/GitHub으로 관리 시작: 인턴십 기간 동안의 모든 코드를 관리할 개인 GitHub 저장소(Repository)를 생성하고, ‘커밋(commit)‘을 통해 개발 과정을 기록하는 습관을 들입니다.
- 과제 1: 파이토치 기본 튜토리얼 정복하기
- Tensor 마스터하기: 텐서 생성, 기본 연산, requires_grad=True 의 의미 파악하기.
- Autograd 체험하기: 간단한 연산에 .backward() 를 호출하여 그래디언트가 어떻게 계산되는지 직접 확인하기. nn.Module 로 나만의 모델 설계하기: 파이토치 모델의 기본 뼈대인 nn.Module을 상속받아 간단한 Linear 모델을 만들어보기.
- GPU 활용 맛보기: torch.device를 정의하고 .to(device)를 이용해 텐서와 모델을 GPU로 보내는 방법을 익힙니다.
- 기본 훈련 루프 완성하기: 가상의 데이터로 (1)예측 → (2)손실 계산 → (3)그래디언트 초기화 → (4)역전파 → (5)가중치 업데이트의 5단 계를 완벽히 구현해보기.
- 과제 2: 이미지 증강(Augmentation) 직접 만들기
- OpenCV 같은 라이브러리의 도움 없이, Numpy나 PyTorch만으로 이미지 파일을 불러와 회전, 좌우 반전, 밝기 조절 등의 함수를 직접 코딩합니다.
- 핵심: 변환된 결과가 어떻게 달라지는지 반드시 시각화해서 눈으로 확인해야 합니다.
- 과제 3: ‘고양이 vs 강아지’ 분류 모델 만들기 (Custom Dataset)
- 라이브러리가 클릭 한 번에 제공하는 데이터셋이 아닌, 폴더에 담긴 이미지 목록을 직접 읽고 라벨을 붙여주는 Custom Dataset 클래스를 밑바닥부터 구현합니다.
- 핵심: 데이터 로딩의 3대 요소( init , len , getitem )의 역할을 완벽히 이해하는 것이 목표입니다.
- 주간 랩미팅 발표:
- 매주 정기 랩미팅에서 한 주간 진행한 연구 내용과 성과, 문제점 등을 발표합니다. 첫 주에는 파이토치 기초부터 Custom Dataset 구현까지 진행한 전반적인 과정을 중심으로 발표합니다.
Week 2: 클래식 모델 구현과 논문 리딩 입문
주요 목표: 딥러닝의 역사에 한 획을 그은 데이터셋과 모델을 직접 다뤄보며 기본기를 탄탄하게 다지고, 위대한 아이디어들이 담긴 논문을 읽는 법을 배웁니다.
- 과제 1: MNIST, CIFAR-10 분류 모델 구현하기
- 딥러닝의 ‘Hello, World!’와 같은 데이터셋들입니다. 1주차에서 배운 Custom Dataset 방식을 응용해서 직접 데이터 로더를 구성하고, 간단한 CNN 모델을 만들어 학습시켜 봅니다.
- 핵심: 라이브러리 없이 직접 데이터 파일을 파싱하고 로더를 구성하는 경험을 통해 데이터 처리 자신감을 얻습니다.
- 추가 과제: TensorBoard를 연동하여 Loss와 Accuracy가 에포크마다 어떻게 변하는지 그래프로 시각화해봅니다.
- 과제 2: AlexNet 논문 읽기
- 딥러닝 붐을 일으킨 전설적인 논문, “ImageNet Classification with Deep Convolutional Neural Networks”를 함께 읽고 토론 합니다.
- 핵심: ReLU, Dropout, Data Augmentation 등 당시에는 획기적이었던 아이디어들이 어떻게 성능을 폭발적으로 높였는지 이해합니다.
- 주간 랩미팅 발표:
- MNIST/CIFAR-10 모델의 학습 과정(TensorBoard 결과)과 AlexNet 논문을 읽고 이해한 내용을 랩미팅에서 발표하고 공유합니다.
Week 3: 최신 딥러닝 아키텍처 구현
주요 목표: 현대 딥러닝 모델의 핵심 아이디어를 논문으로 깊이 이해하고, 그 구조를 직접 코드로 옮겨보는 본격적인 훈련을 합니다.
- 과제 1: ResNet 논문 읽고 핵심 구현하기”
- 모델을 깊게 쌓아도 어떻게 성능이 좋아질까?”에 대한 해답을 제시한 ResNet 논문을 읽습니다.
- 핵심: 성능 저하 문제를 해결한 ‘Residual Block(잔차 블록)‘의 개념을 이해하고, 이 블록을 사용해 ResNet의 핵심 구조를 직접 구현해봅 니다.
- 과제 2: 동료 코드 리뷰 (Peer Code Review)
- 서로의 ResNet 구현 코드를 GitHub을 통해 리뷰하고 피드백을 주고받습니다. 다른 사람의 코드를 읽는 법과, 내 코드를 명료하게 작성하는 법을 배웁니다.
- 과제 3: EfficientNet 논문 읽기
- 모델의 성능, 속도, 크기 세 마리 토끼를 모두 잡는 비결, EfficientNet 논문을 읽습니다.
- 핵심: ‘Compound Scaling’이라는 아이디어가 무엇인지 이해하고, 다른 사람들에게 설명할 수 있을 정도로 정리하는 것이 목표입니다. (구현은 선택 사항)
- 주간 랩미팅 발표: ResNet 구현 성과와 동료 코드 리뷰를 통해 배운 점을 중심으로 랩미팅 발표를 진행합니다.
Week 4: 실제 데이터 분석 및 모델 응용
주요 목표: 정제된 데이터셋을 넘어, 실제 의료 데이터를 직접 분석하고 지금까지 배운 내용을 응용하여 새로운 방식으로 문제를 해결하는 경험을 합니다.
- 과제 1: 데이터 탐색 분석 (EDA)의 기초
- 피부암 이미지 데이터셋인 HAM10000을 본격적으로 다루기 전에, 데이터가 어떻게 구성되어 있는지(클래스별 이미지 수, 이미지 크기, 환자 나이 분포 등)를 분석하고 시각화해봅니다.
- 핵심: 좋은 모델은 좋은 데이터 분석에서 시작된다는 것을 체험합니다.
- 과제 2: HAM10000 데이터셋으로 회귀(Regression) 문제 풀기
- 이 데이터셋은 원래 여러 종류의 피부 병변을 맞추는 ‘분류’ 문제지만, 우리는 특정 값을 예측하는 ‘회귀’ 문제로 접근하는 독특한 도전을 해 봅니다.
- 핵심: 지금까지 만든 분류 모델의 마지막 부분을 어떻게 수정해야 회귀 문제를 풀 수 있을지 직접 고민하고 구현해봅니다.
- 주간 랩미팅 발표:
- EDA 결과와 모델링 중간 진행 상황을 랩미팅에서 공유하고 피드백을 받습니다.