이번주는 토이프로젝트4에 대한 리팩토링 및 이력서, 포트폴리오 관리도 하고, 자바의 정석 복습 및 파이썬 문법 공부, Pytorch 공부하느라 시간이 너무 빠르게 흘러갔다. Pytorch는 책과 강의를 들으면서 예제를 따라 치면서 공부하는 정도이지만 더 연습해서 안보고 코드를 짤 수 있는 경지까지 만드는게 내 목표이다.
파이토치 공부했던 것을 간략하게 적어보았다.
1. ANN 기초 다지기
먼저, 가중치 학습이 어떻게 이루어지는지 감을 잡기 위해 간단한 ANN 모델을 직접 만들어봤다.
사인곡선을 학습 대상으로 설정하고, 학습이 진행될수록 모델이 점점 곡선을 따라가는 과정을 시각적으로 확인했다.
비선형 함수를 신경망이 근사하는 과정을 보면서, 가중치와 활성화 함수의 조합이 데이터를 표현하는 방식에 대해 감을 잡을 수 있었다.
2. 다중 출력 분류와 학습 루프 구성
MNIST 손글씨 데이터셋을 사용해 다중 출력 분류를 진행했다.
데이터 로딩부터 모델 정의, 손실 계산, 오차 역전파, 최적화까지 학습 루프를 직접 구성했다.
이 과정에서 2차원 이미지를 1차원으로 변환하는 방법을 배웠고, CNN과 VGG 모델 예제를 실습하며 합성곱 계층이 이미지 특징을 추출하는 과정을 이해했다.
3. CNN & VGG
CNN은 이미지의 지역적인 특징을 추출하는 구조이고, VGG는 작은 커널(3×3)을 여러 층 쌓아 깊은 네트워크를 구성한다.
CNN 구조를 직접 구현하고, VGG 모델을 따라 치면서 합성곱과 풀링의 조합이 특징 맵을 형성하는 과정을 확인했다.
4. ResNet — 스킵 연결(Skip Connection)
ResNet은 Residual Block을 사용해 깊은 네트워크에서 발생하는 기울기 소실 문제를 완화한다.
스킵 연결을 통해 입력값을 그대로 다음 계층에 더해줌으로써, 정보 손실을 줄이고 학습 안정성을 높일 수 있다는 점이 인상적이었다.
5. RNN을 활용한 시계열 예측
넷플릭스 주가 데이터를 사용해 RNN으로 다음날 종가를 예측하는 실습을 했다.
입력 데이터는 하루치 개장가, 최고가, 최저가를 묶어 하나의 시점으로 보고, 출력 데이터는 하루치 종가를 한 시점으로 설정했다.
30일치 데이터를 하나의 배치 단위로 구성해 학습을 진행했으며, 이전 시점의 흐름을 기반으로 다음 값을 예측하는 원리를 이해할 수 있었다.