반응형

AI Research Topic/Deep Learning 21

[Deep Learning] 딥러닝에서 Synthetic Dataset 을 이용하여 학습하는 연구들

학습 데이터가 부족할 때 가상 세계에서 얻어진 데이터를 이용해 볼 수 있다. 즉 언리얼 엔진을 이용하여 만들어진 GTA 게임에서 Synthetic DataSet 을 생성하여 데이터를 보완 해 볼 수 있다. (GTA 게임 안해봄...) 찾아보니 관련 연구가 여러가지 있었는데 보통 Teacher-Student 형태의 학습 방식을 사용한다. 즉 대규모 데이터인 Synthetic Dataset을 이용하여 Teacher Net 을 구성하여 Pre-training 하고, Real Dataset 을 이용하여 Student Net 을 구성함으로써 fine-tuning 하는 방식이다. Synthetic Dataset 에는 보통 자율 주행 환경 (Car, Person Segmentation, ..) 데이터가 많았으며, 안..

[Deep Learning] Weight Standardization (+ 2D, 3D 구현 방법)

Weight Standardization Paper : arxiv.org/abs/1903.10520 Micro-Batch Training with Batch-Channel Normalization and Weight Standardization Batch Normalization (BN) has become an out-of-box technique to improve deep network training. However, its effectiveness is limited for micro-batch training, i.e., each GPU typically has only 1-2 images for training, which is inevitable for many computer v arxi..

[Deep Learning] Pytorch 를 이용한 다양한 손실 함수 구현(Loss Function Implementation) 참고자료

딥러닝에서 사용되는 다양한 손실 함수를 구현해 놓은 좋은 Github 를 아래와 같이 소개한다. github.com/CoinCheung/pytorch-loss CoinCheung/pytorch-loss label-smooth, amsoftmax, focal-loss, triplet-loss. Maybe useful - CoinCheung/pytorch-loss github.com from pytorch_loss import SwishV1, SwishV2, SwishV3 from pytorch_loss import HSwishV1, HSwishV2, HSwishV3 from pytorch_loss import MishV1, MishV2, MishV3 from pytorch_loss import conver..

[Deep Learning] 딥러닝에서 학습 시 학습률과 배치 크기 문제

학습률 (Learning Rate) 학습률은 아주 중요한 하이퍼파라미터이며, 일반적으로 최적의 학습률은 최대 학습률의 절반 정도라고 한다. 좋은 학습률을 찾는 한 가지 방법은 매우 낮은 학습률 (예를 들면 10^-5) 에서 시작해서 점진적으로 매우 큰 학습률 (예를 들면 10)까지 수백 번 반복하여 모델을 훈련하는 것이다. 반복마다 일정한 값을 학습률에 곱한다. 로그 스케일로 조정된 학습률을 사용하여 학습률에 대한 손실을 그래프로 그리면 처음에 손실이 줄어드는 것이 보인다. 하지만 잠시 후 학습률이 커지면 손실이 다시 커진다. 최적의 학습률은 손실이 다시 상승하는 지점보다 조금 아래에 있을 것이다. 일반적으로 상승점보다 약 10배 낮은 지점이라고 한다. 그 다음 모델을 다시 초기화하고 앞에서 찾은 학습률..

[Deep Learning] Activation Function : Swish vs Mish

활성화 함수(Activation Function)는 입력을 받아 활성, 비활성을 결정하는데 사용되는 함수이다. 어떤 활성화 함수를 사용하느냐에 따라 그 출력 값이 달라지기 때문에 적절한 활성화 함수를 사용하는 것이 매우 중요하다. 보통 어떠한 임계 값을 기준으로 활성화 되거나 혹은 비활성화 되는 형태를 가진다. 기존 활성화 함수들 Swish Swish 는 매우 깊은 신경망에서 ReLU 보다 높은 정확도를 달성한다고 한다. 또한 모든 배치 크기에 대해 Swish 는 ReLU 를 능가하며, 모든 x < 0 에 대해 함수를 감소시키거나 증가시키지 않는다고 한다. Mish 와 마찬가지로 bounded below, unbounded above 특징을 가진다. Mish Mish 는 그래프가 무한대로 뻗어나가기 때문..

[Deep Learning] 딥러닝에서 사용되는 다양한 Convolution 기법들

기존 2차원 컨볼루션은 세가지 문제점이 존재한다. Expensive Cost Dead Channels Low Correlation between channels 또한, 영상 내의 객체에 대한 정확한 판단을 위해서는 Contextual Information 이 중요하다. 가령, 객체 주변의 배경은 어떠한 환경인지, 객체 주변의 다른 객체들은 어떤 종류인지 등. Object Detection 이나 Object Segmentation 에서는 충분한 Contextual Information을 확보하기 위해 상대적으로 넓은 Receptive Field 를 고려할 필요가 있다. 일반적으로 CNN에서 Receptive Field 를 확장하기 위해서는 커널 크기를 확장한다던지, 더 많은 컨볼루션 레이어를 쌓는 방법을 ..

[Deep Learning] Batch Normalization (배치 정규화)

사람은 역시 기본에 충실해야 하므로 ... 딥러닝의 기본중 기본인 배치 정규화(Batch Normalization)에 대해서 정리하고자 한다. 배치 정규화 (Batch Normalization) 란? 배치 정규화는 2015년 arXiv에 발표된 후 ICML 2015에 게재된 아래 논문에서 나온 개념이다. Batch Normalization: Accelerating Deep Network Training b y Reducing Internal Covariate Shift https://arxiv.org/pdf/1502.03167.pdf Gradient Vanishing / Exploding 문제 신경망에서 학습시 Gradient 기반의 방법들은 파라미터 값의 작은 변화가 신경망 출력에 얼마나 영향을 미칠 ..

[Deep Learning] CNN(Convolutional Neural Network)

1. CNN, Convolutional Neural Network 개념 Convolutional Neural Network(이하 ConvNet)은 합성곱(Convolution) 연산을 사용하는 인공 신경망의 한 종류이다. ConvNet과 일반적인 신경망의 가장 큰 차이점은 ConvNet은 입력 데이터가 이미지라는 것이다. 이미지는 다음과 같이 행렬 형태로 이루어져있으며 또한, 이미지는 Width x Height x Depth 형태로 이루어져있다. 숫자 32가 의미하는 바는 픽셀 수를 뜻한다. 또한 ConvNet의 가장 큰 특징은 일반적인 신경망 앞에 여러 합성곱 계층을 붙인 형태로 이루어진다. (1). 특징 추출(Feature Extraction)(2). 분류(Calssification) 다음 그림과 같..

[Deep Learning] 손글씨 인식 (MNIST)

참고자료 : 신경망 첫걸음 (한빛미디어) 딥러닝에서의 Hello World는 손글씨 숫자 이미지를 인식하는 것이다. MNIST 데이터셋 MNIST 데이터셋은 훈련용 55000개 및 테스트용 1만개로 이루어진 손글씨 숫자의 흑백 이미지 데이터이다. 이 데이터는 http://yann.lecun.com/exdb/mnist 에서 다운 받을 수 있다. 이미지를 다루는 경우에 데이터 전처리나 포매팅이 중요하지만, 이는 시간이 많이 걸리는 부분이다. 그러므로 이 데이터셋은 딥러닝을 시작하기에 안성맞춤이라고 한다. 이 흑백 이미지는 가로세로 비율은 그대로 유지하고 20x20 픽셀로 정규화 되어있다. 정규화 알고리즘 (가장 낮은 것에 맞춰 전체 이미지 해상도를 감소)에는 앤티에일리어싱 처리가 되어 이들 이미지에는 회색 ..

[Deep Learning] 회귀분석 (Regression) 과 경사하강법 (Gradient Descent)

참고자료 1 : medium.com/mathpresso참고자료 2 : http://gdyoon.tistory.com/9참고자료 3 : 텐서플로 첫걸음 (한빛미디어) 1. 회귀분석 (Regression) Pose Estimation에 대한 자료를 찾다보면 Keypoints detection에서 heatmap을 이용한 포즈추정시 Regression 이라는 개념이 많이 등장한다. 사실 이 개념은 머신러닝에서 나오는 개념이며, 이번 기회에 정리해보도록 한다. 회귀분석이란 주어진 데이터가 어떤 함수로부터 생성되었는가를 알아보는 '함수 관계'를 추측하는 것이다. 즉, 훈련 데이터세트 (X, Y) 로 부터 학습알고리즘을 이용하여 가설을 생성하고, 생성된 가설에 데이터를 입력하여 예측 값 데이터를 얻는 것이다. 이러한..

[Deep Learning] pre-training 과 fine-tuning (파인튜닝)

Pre Training 이란? 선행학습(pre-training)사전훈련(pre-training)전처리과정(pre-training) 이라고도 하는데, 이는 Multi Layered Perceptron (MLP)에서 Weight와 Bias를 잘 초기화 시키는 방법이다. 이러한 Pre-training을 통해서 효과적으로 layer를 쌓아서 여러개의 hidden layer도 효율적으로 훈련 할 수 있다. 또한, 이는 unsupervised learning이 가능하기 때문에(물론 이러한 가중치와 편향 초기화가 끝나면 레이블 된 데이터로 supervised learning 해야 한다 -> fine tuning) 레이블 되지 않은 큰 데이터를 넣어 훈련 시킬 수 있다는 점을 장점으로 들 수 있다. 또한 Drop-ou..

[Deep Learning] end-to-end trainable neural network

논문을 읽다가 이해가 안되던 end-to-end trainable neural network 의 의미를 알아보도록 하자. 모델의 모든 매개변수가 하나의 손실함수에 대해 동시에 훈련되는 경로가 가능한 네트워크로써 역전파 알고리즘 (Backpropagation Algorithm) 과 함께 최적화 될 수 있다는 의미이다. 예를들어 인코더(언어의 입력을 벡터로)와 디코더(벡터의 입력을 언어로)에서 모두가 동시에 학습되는 기계 번역 문제에서 효과적으로 적용 될 수 있다. 즉, 신경망은 한쪽 끝에서 입력을 받아들이고 다른 쪽 끝에서 출력을 생성하는데, 입력 및 출력을 직접 고려하여 네트워크 가중치를 최적화 하는 학습을 종단 간 학습(End-to-end Learning) 이라고 한다. Convolutional neu..

[Deep Learning] 7. 2층 신경망 구현하기

출처 : 밑바닥 부터 시작하는 딥러닝 (한빛미디어) 신경망 학습이 이루어지는 순서는 다음과 같다. 전제 신경망에는 적응 가능한 가중치와 편향이 있고, 이 가중치와 편향을 훈련 데이터에 적응하도록 조정하는 과정을 "학습" 이라고 한다. 신경망 학습은 아래와 같이 4단계로 수행하게 된다. 1단계 미니배치 훈련 데이터 중 일부를 무작위로 가져온 뒤 미니배치의 손실 함수 값을 줄이는 과정을 거친다. 2단계 기울기 산출 미니배치의 손실 함수 값을 줄이기 위해 각 가중치 매개변수의 기울기를 구한다. 기울기는 손실함수의 값을 가장 작게 하는 방향을 제시하게 된다. 3단계 매개변수 갱신 가중치 매개변수를 기울기 방향으로 아주 조금 갱신한다. 4단계 반복 1~3 단계를 반복한다. 이는 6절에서 다루었던 경사 하강법을 이..

728x90
반응형