본문 바로가기

Deep Learning

(17)
MNIST Classification (PyTorch) 0. Overview 본 포스팅에서는 0~9 숫자의 손글씨 이미지를 분류하는 'MNIST Classification'을 PyTorch를 이용해 구현한다. Jupyter Notebook을 이용해 .ipynb 파일에서 코딩을 하였고, 전체 코드는 필자의 github repository를 참고하면 된다. 포스팅에서는 설명을 할 만한 주요 코드 위주로 다루고자 한다. github repository: https://github.com/soohyuncha/MNIST_Classification GitHub - soohyuncha/MNIST_Classification Contribute to soohyuncha/MNIST_Classification development by creating an account on ..
Introduction to Transformer Neural Network Transformer neural network의 구조를 공부하는 데에 아래의 3개 유튜브 영상과 NIPS 17년 논문을 참고하였다. 본 포스팅에서는 이들의 내용을 정리한다. Youtube 영상 링크 Episode 1: Position Embeddings https://www.youtube.com/watch?v=dichIcUZfOw Episode 2: Multi-Head & Self-Attention https://www.youtube.com/watch?v=mMa2PmYJlCo Episode 3: Decoder's Masked Attention https://www.youtube.com/watch?v=gJ9kaJsE78k Paper A. Vaswani, Attention is all you need, N..
Lec 12. Visualizing and Understanding CNN 이번 lecture에서는 CNN이 이미지 관련 task를 처리할 때 그 내부에서는 어떤 일이 일어나는지에 대한 해석을 공부한다. First Layer Filter as an image 먼저, 가장 직관적으로 이해할 수 있는 첫 번째 convolution layer을 살펴본다. 첫 번째 conv. layer의 필터 dimension은 F*F*3이다. Depth는 항상 3인데, 왜냐하면 CNN의 input인 이미지의 depth가 R, G, B 채널에 의해 3이고, convolution 연산에서 input과 filter의 depth는 일치하기 때문이다. Depth가 3이기 때문에, 필터를 F*F 픽셀 크기의 RGB 이미지로 출력할 수 있고, 이는 유용한 해석을 제공한다. 위의 그림은 몇몇 유명한 CNN의 첫 ..
Lec 11-2. Object Detection: Region Proposal, R-CNN, Fast R-CNN, Faster R-CNN, YOLO Object Detection Computer vision 분야에서 neural network를 사용하는 application으로서 object detection을 살펴볼 것이다. Object detection이란 주어진 이미지에서 물체가 속한 영역을 box 표시하고, 물체가 어느 class에 속하는지를 분류하는 task를 말하는데, 하나의 이미지 내에 여러 개의 물체가 들어있을 수 있다는 점에서 이전 포스팅에서 다루었던 classification+localization 문제와는 다르다. 먼저, 지난 포스팅의 classification+localization 방식을 리뷰해보면, label score 벡터와 함께 bounding box의 좌표 값을 output으로 추가함으로써 regression 문제로 만..
Lec 11-1. Semantic Segmentation, Classification + Localization 지금까지 하나의 이미지를 정해진 class set 중 하나로 분류하는 image classification을 풀기 위해 CNN에 대한 여러 논의를 전개시켜왔다. Image classification 외에도 neural network를 활용하는 vision application은 다양한데, 이번 포스팅에서는 semantic segmentation, classification+localization의 두 가지 application에 대해 공부한다. Semantic Segmentation Semantic segmentaion이란, 아래와 같이 주어진 이미지의 각 픽셀이 어느 label에 속하는지를 모두 판단함으로써 이미지를 여러 class의 구역으로 분할하는 것이다. Image classification과 마..
Lec 10. Recurrent Neural Network: Structure, Computational Graph, Language Model, Image Captioning Recurrent Neural Network: Processing Sequential Data 이전 lecture들에서 Convolutional Neural Network(이하 CNN)에 대해서 공부하였는데, CNN은 이미지 데이터를 대상으로 하며 목표는 이 이미지를 finite set of class 중 하나로 labeling(또는 classifying)하는 것이었다. 이번 lecture에서는 다른 neural network 구조인 Recurrent Neural Network(이하 RNN)에 대해 공부한다. CNN이 이미지 데이터를 대상으로 한 application에 쓰인다면, RNN은 sequential data를 대상으로 한다. 그 예로는 하나의 이미지로부터 이를 설명하는 sequence of wo..
Lec 7-2. Regularization: L2 Regularization, Dropout, Data Augmentation Regularization: Make a Model Better for Unseen Data Optimization은 주어진 training 데이터셋에 대해 loss function을 최소화시키는 parameter들을 찾는 과정이다. 그러나, 실제 모델을 학습할 때 training 데이터셋에 대한 loss를 줄이는 것 뿐만 아니라, unseen data에 대한 loss와의 gap을 줄이는 것 역시 중요한 문제이다. 가지고 있는 training 데이터셋에 대해서 overfit 된 모델이라면, test time에 unseen data에 대해서는 좋은 performance를 낼 수 없고, 이것은 우리가 원하는 바가 아니다. Regularization은 모델이 training 데이터셋에 대해 overfit 되는..
Lec 7-1. More on Optimization: SGD with Momentum, Nesterov Momentum, AdaGrad, RMSProp, Adam Neural network 구조에서 주어진 training 데이터셋에 대해 loss function을 minimize하도록 하는 최적의 parameter 값들을 찾는 과정을 optimization이라고 한다. 이에 대한 가장 기본적인 방법으로서 gradient descent 방식을 공부하였다. Weight parameter들을 initialize하고, 현재 weight 값들에 대해 loss function의 gradient를 구해 그 방향으로 조금씩 이동하기를 반복하면 최적의 위치(weight parameter들이 span하는 공간 상의 위치)를 찾을 수 있다는 것이었다. 포스팅 링크: https://crm06217.tistory.com/18 또한 이 때 모든 training 데이터셋을 매 iterati..