딥러닝
-
RNN (1) | RNN의 기초 | 패스트캠퍼스 챌린지 35일차딥러닝 2022. 2. 27. 21:33
CNN이 주로 처리하는 이미지는 정적인 데이터다. 달리 말하자면, 이미지 자체는 순서가 중요하지 않다. 하지만 텍스트 데이터나 이미지의 연속인 동영상과 같이 순서(sequence)가 중요한 데이터가 많다. 이러한 데이터를 처리하기 위해 sequential model이 필요하다. 기본적인 sequential model이라 할 수 있는 auto-regressive model의 경우 이전 데이터까지의 확률을 통해 확률을 계산하는 모델이다. 자연스레 데이터 sequence가 길어지면 연산해야 할 확률이 매우 많이 늘어난다. Recurrent Neural Network의 기본 방법은 hidden state h_t가 이전의 모든 정보를 압축해 담고 있다고 상정하는 것이다. 이렇게 된 경우 이번 타임 스텝에서는 기존..
-
CNN (5) | Object Detection Strategies (2) | 패스트캠퍼스 챌린지 34일차딥러닝 2022. 2. 26. 16:16
지난 시간에 다룬 object detection 전략들은(특히 YOLO와 같은 one-stage detector의 경우) 객체 영역을 추정한 뒤 Intersection over Union에 따라 positive/negative sample을 구분하는 전략을 취했다. 하지만 왠만한 학습 데이터의 경우 이미지 안에서 객체에 해당하는 부분은 작기 떄문에 positive sample의 수가 negative sample에 비해 매우 작아 져서 class imbalance가 생기게 된다. 이는 성능에 그다지 좋지 못하다. Fast R-CNN과 같은 two-stage detector 같은 경우 sampling heuristics등을 활용한 region proposal을 추려내는 방법을 적용하여 이를 해결한다. 하지만..
-
CNN (4) | Object Detection Strategies (1) | 패스트캠퍼스 챌린지 33일차딥러닝 2022. 2. 25. 22:45
Object detection을 위한 전략은 2010년대를 거치면서 많이 발전해왔다. 가장 기초적으로는 sliding window detection, 즉 윈도우를 움직이면서 객체를 찾아내는 방식이 있을 수 있다. 그 다음으로는 Proposal Approach가 있었는데, 이는 window를 sliding하면서 객체가 있으리라 예상되는 부분에서 detection 결과를 내보내는 것이 아닌, 모든 window를 우선 찾은 후 window들을 다중분류 하는 방법을 뜻한다. Voting for patches and keypoints는 핵심이 되리라는 영역을 많이 뽑은 뒤, 이 영역에 대해 일종의 투표 과정을 거쳐 객체를 찾는 과정이다. Selective search는 segmentation 기반의 object ..
-
CNN (3) | 패스트캠퍼스 챌린지 32일차딥러닝 2022. 2. 24. 20:57
ResNet과 DenseNet을 뒤이은 모델은 SeNet이다. SeNet은 Squeeze and Excitation을 진행하는데, squeeze는 각 채녈별 정보를 global average pooling 등으로 추출하는 것을 뜻하며, excitation은 각 스칼라의 가중치를 계산하는 것을 뜻한다. 즉, 데이터로부터 정보를 쥐어짜 낸 다음에 그 정보를 불러내는 과정이다. 이 SE 과정은 ResNet과 같은 네트워크와 쉽게 결합될 수 있다. 그래서 SE-ResNet과 같은 이름의 모델들을 쉽게 찾아볼 수 있다. SE 과정을 추가한다고 하더라고 계산량이 그렇게 증가하지는 않으나, 성능은 확실히 개선된다는 장점이 있다. Effiecient Net은 이름 그대로 효율성을 주장한 네트워크다. 즉, 굳이 conv..
-
CNN (2) | 패스트캠퍼스 챌린지 31일차딥러닝 2022. 2. 23. 21:12
CNN을 dropout과 같은 다른 기법과 결합하면 성능 향상을 더 도모할 수 있다. 하지만 CNN에는 convolution layer, pooling layer, fullyc-connected layer 등을 가지고 있기 떄문에 이러한 방식을 넣을 순서가 중요하다. Dropout은 activation function 뒤에 적용하는 것이 좋다고 알려져 있다. Batch normalization의 경우 분포를 조정하는 것이 목적이기 떄문에 주요 연산인 convolution 연산과 분포를 바꾸는 연산인 activation 사이에 진행되는 것이 좋다. 결론적으로, convolution, batch normalization, activation, dropout 순으로 진행하면 된다. Pooling의 경우 맨 뒤..
-
CNN (1) | CNN의 개요 | 패스트캠퍼스챌린지 30일차딥러닝 2022. 2. 22. 21:14
CNN은 주로 이미지를 처리하는데 사용하는 딥러닝 네트워크의 한 종류이다. (물론 CNN을 통해 자연어처리를 할 수 있다. 이는 특히 띄어쓰기나 형태 분석과 같이 토큰 시퀀스의 패턴을 인식하는데 사용된다. Kakao의 형태소분석기--문장을 형태소단위로 분절하고 품사를 결정한다--인 khaiii는 CNN만을 사용하였고, CNN과 RNN의 한 종류인 GRU를 결합한 띄어쓰기 모델도 개발되어 있다.) 딥러닝이 이미지 분석에 큰 강점을 띌 수 있다는 점은 뇌가 시각 신호를 처리하는 과정이 딥러닝과 마찬가지로 계층적이라는 것에서--즉 단순한 feature로 부터 복잡한 feature를 뽑아 이를 매핑해 결과를 내보낸다라는 점에서-- 기대되었다. 물론 CNN이 인간 시각 정보 처리와 완전히 일치하지는 않는다. 대표..
-
최적화(Optimization) (3) | 패스트캠퍼스 챌린지 29일차딥러닝 2022. 2. 21. 20:28
Learning rate는 고정된 값을 취할수도 있지만, 이를 줄여가면서(decaying) 빠른 학습을 도모하는 것이 일반적인 듯 하다. Learning rate를 줄이는 방법은 AdaGrad, RMSProp, Adam과 같은 adaptive learning rate 방식을 취한 SGD를 사용하는 것도 방법이지만, schedule을 통해 직접 정해 주는 것도 방법이다. SGD에 대해 설명한 지난 글에서 알고리즘 부분의 노트 필기에서 learning rate가 scheduled learning rate임을 살펴볼 수 있다. 이렇듯 스케쥴링을 통해 learning rate를 점차 줄여줄 수 있는데, 이 방식에는 에폭 기반과 스텝 기반이 있다. 에폭(epoch)과 스텝(step)은 딥러닝 커뮤니티에서 종종 혼..
-
최적화(Optimization) (2) | 패스트캠퍼스 챌린지 28일차딥러닝 2022. 2. 20. 21:50
경사하강법을 모든 데이터를 계산하여 진행하면 비용이 너무나도 크다. 그런 문제로 학습 데이터를 쪼개서 학습하자는 아이디어를 낼 수 있을 것이다. Batch라고 한다면 학습 데이터 전체를 사용하는 방식을 뜻하며, 다른 방향으로 한 개의 샘플만을 사용하여 경사하강법을 진행한다면 Online Gradient Descent라고 부른다. Minibatch는 이 중간에 있는 방법으로, 전체 데이터를 1보다 큰 배치사이즈 만큼 쪼개어서 학습을 진행하는 방식이다. 배치사이즈는 정하기 나름인데, 현실적으로는 가지고 있는 GPU VRAM이 처리할 수 있을 때 까지 줄여가면서 하게 되는 것 같다. 배치사이즈는 보통 2의 제곱수로 정의된다. 경사하강법 자체는 convex 함수에 대해 제대로 작동하겠지만, convex하지 않은..