네이버 부스트캠프 AI tech 3기 13

회고록(7주차)

Pstage 회고록을 먼저 작성하고, 저의 일기를 써보려고 합니다. "첫 대회, 하나씩 준비해나가다" 캐글, 데이콘 대회 경험이 전무했기 때문에 시작 전부터 어떻게 준비해야 할지 걱정이 많았다. 멘토님의 조언을 바탕으로 가장 처음 수행한 것은 '협업툴 관리하기'였다. 노션의 칸반 기능을 사용해서 팀원들의 진행 상황이 동기화되었고, 앞으로 해야 할 일과 기록을 고정할 수 있어 편리했다. 다만, 처음엔 노션의 각 칸과 깃헙 이슈에 연결하여 에러, 또는 실험 과정을 기록하려고 했지만 생각보다 깃헙과 노션을 동시에 정리하는 것이 쉽지 않았던 것 같다. 베이스라인 코드가 주어진 후, 우선 '코드를 실행해 보자'가 목표였다. 처음 보는 라이브러리가 많았고, 사용법을 익힌 후에 수정해야겠다는 생각을 했다. 생각보다 ..

8. ResNet 리뷰

Deep Residual Learning for Image Recognition (CVPR 2016) 본 논문에서는 깊은 네트워크를 학습시키기 위한 방법으로 Residual Learning을 제안하였다. 배경은 다음과 같다. 네트워크가 깊어지면서 생기는 문제점으로는 대표적으로 vanishing/exploding gradient , degradation 이 있다. vanishing gradient는 역전파 과정에서, 기울기가 0으로 줄어들면서 학습이 어려워지는 문제점을 뜻한다. 왼쪽 그래프는 training error, 오른쪽은 test error 그래프이다. training error는 낮고, test error가 높은 경우 overfitting, high variance라 하고, training err..

7. PyTorch DataLoader

Dataset 모델에 데이터를 feed하는 방법 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class CustomDataset(torch.utils.data.Dataset): def __init__(self): 데이터셋의 전처리를 해주는 부분 self.x_data = [[1, 2, 3], [4, 5, 6]] self.y_data = [[0], [1]] def __len__(self): 데이터셋의 길이. 즉, 총 샘플의 수를 적어주는 부분 return len(self.x_data) def __getitem__(self, idx): 데이터셋에서 특정 1개의 샘플을 가져오는 함수 # 인덱스를 입력받아 그에 맵핑되는 입출력 데이터를 파이토치의 Tensor 형태로 ..

6. PyTorch nn.Module

nn.Module 딥러닝을 구성하는 Layer의 base class이다. Input, Output, Forward, Backward / 학습의 대상이 되는 parameter를 정의해야 한다. nn.Module 과 super().__init__() 코드 1 2 3 4 5 6 7 class GNNStack(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim, task='node'): super(GNNStack, self).__init__() self.task = task # ModuleList(): 각 레이어를 리스트에 전달하고 레이어의 iterator를 만든다. self.convs = nn.ModuleList() Colored by Color..

5. CNN과 RNN

CNN 고정된 Weight matrix (커널, kernel)을 사용한 선형변환 + 활성화 함수의 구조이다. Input 은 주로 이미지, 픽셀로 이루어진 행렬이다. Kernel은 filter라고도 하며, weight matrix를 의미한다. CNN은 Kernel을 Input matrix 위에서 elementwise 곱연산을 진행하는 conv layer를 가진다. 이 때 Kernel은 stride 값 만큼 움직인다. CNN의 장점 1) parameter축소가 가능하다 CNN이 아니라 기존 ANN연산이었다면, 각 픽셀들이 FC를 이루며 학습해야할 weight (parameter)는 한 layer에 픽셀값만큼이었을 것이다. 하지만 weight matrix로 weight를 공유하기 때문에 weight matri..

3. 딥러닝 학습방법 이해하기

비선형 모델 신경망 (그림) x→o는 하나의 선형 모델이다. $x_1$~$x_d$ 벡터를 $o_1$~$o_p$ 벡터로 만들기 위한 모델은 총 $d$x$p$ , 즉 weight matrix (W)의 차원과 같다. 즉 가중치 행렬은 각 화살표 변환의 집합이라 생각할 수 있다. 활성 함수 (activation function) 신경망은 선형 모델과 활성 함수(activation function)의 합성 함수이다. $\sigma(W^{(l)} x +b^{(l)})$ 활성 함수의 역할은 모델에 **비선형성(nonlinearity)**을 추가한다는 것이다. 비선형성이 필요한 이유 실제 해결하고자 하는 문제는 선형 모델로 풀리지 않는다. 만약 활성화 함수가 선형이라면 그저 신경망을 쌓는 것과 같은 효과일 것이다. 활..