목록AI/DL Basic (6)
기록하는삶
1) Data 이미지, 음성, 텍스트, 영상 등 목적에 따라 필요한 데이터가 달라지게 된다. 이미지의 경우도 아래처럼 그 목적에 따라 서로 다른 종류의 labeling을 필요로하기도 한다. 2) Model input data를 내가 원하는 목적에 맞는 output data로 맵핑하는 일종의 프로그램으로, 형 변환과 각종 연산 등의 집합체이다. 동일한 input data와 아키텍쳐가 주어지더라도 그 목적에 따라 그리고 그에 맞게 설정한 loss function에 따라 그 내부 파마티더들이 달라질 수 있다. 아래와 같은 예시들이 있다. 3) Loss(Loss function) 모델을 통해 이루고자 하는 목적의 proxy로, 목적 함수(objective function)라고도 부르며 보통 이를 최소화하는 방향..
1000개 카테고리의 이미지에 대해 머신러닝을 활용한 Classification/Detection/Localization/Segmentation 성능을 비교하는 대회인 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)는 매년 가장 우수한 성능을 보인 모델을 선정한다. 이 글에서는 시기별로 해당 대회에서, 그 중에서도 Classification에 대해 우수한 성적을 보이며 이름을 알린 모델들을 간략하게 살펴보며, CNN이 어떻게 변화하고 발전해왔는지 아주 대략적으로 살펴본다. (추후에 하나씩 자세히 공부해 볼 가치가 있는 논문/모델들이다.) 1) AlexNet(2012) 먼저 AlexNet이다. 기본적인 아키텍쳐는 위와 같이 5개의 convolution..
CNN(Convolutional Neural Network)을 이해하기 위한 기초 개념 및 용어들을 정리해본다. 1) Convolution 수학적 정의의 '합성곱'을 말한다. 합성곱 연산은 두 함수 f, g 가운데 하나의 함수를 반전(reverse), 전이(shift)시킨 다음, 다른 하나의 함수와 곱한 결과를 적분하는 것을 의미하는데, f, g가 연속이냐 이산이냐에 따라 아래 두 가지 표현이 가능하다. 기계학습에서 다루게 되는 CNN은 주로 이미지의 픽셀을 다루기 때문에 'Discrete convolution'이라 이해하면 되겠고, 사실 아주 정확히는 convolution이라기보다 cross-correlation 연산을 하는 것이라 표현해야 맞다고 한다. 그러나 f를 적당히 조작한 함수와 g의 cros..
Regularization은 기계학습에서 과적합을 방지하기 위한 여러 제한적 수단으로, 일종의 학습을 방해하는 행위다. 학습 자체를 방해하고자 하는게 아니라, train data에'만' 너무 잘 동작하는 모델이 되지 않도록 하는 방법들을 말한다. 1) Early Stopping test data외에 validation dataset을 구축하고, 해당 데이터셋에 대해 error가 더이상 줄어들지 않는 시점에 학습을 조기 종료하는 것을 말한다. n번의 epoch 학습 동안 모델 성능이 나아지지 않는다면 학습을 종료하는 방식으로 설정해줄 수 있다. 2) Parameter Norm Penalty(Weight Decay) 각 weight들이 너무 커지지 않게 제한을 두는 것을 말한다. 이는 함수에 smoothne..
1) batch_size 일반적으로 모델을 학습시킬 때 전체 데이터에 대해서 한 번에 학습을 진행하는 것이 아니라 n개의 조각으로 전체의 데이터를 분할 해 여러 번에 걸쳐 학습 및 backpropagation을 진행하게 되는데, 이때 각 n개의 조각이 갖는 데이터의 수가 batch_size이다. 주로 연산 효율을 위해 2의 거듭제곱 단위인 32, 64, 128등을 사용하며, 각 조각들을 mini batch라 칭한다. 이러한 mini batch들을 사용하는 이유로는 gpu 등의 device의 메모리 한계, 모델 성능의 degredation 방지 등이 있다. 실제로 너무 큰 사이즈의 batch를 사용하는 경우 물리적으로 out of memory 문제에 마주칠 가능성도 높지만, 더 작은 배치 사이즈를 사용했을..
1) Generalization(일반화, 일반화 성능) Train data에 대한 성능과 Test data(혹은 validation data)에 대한 성능의 차이를 말한다. 둘 간의 차이가 작을수록 학습 데이터 뿐만아니리 Test data에 대해서도 모델이 잘 작동하므로, 'Generalization이 잘 되었다'고 말한다. 다만 Generalization이 잘 되었다고 해서 꼭 좋은 성능을 보장하는 것은 아니다. 본래 모델의 성능이 나빠 Training error가 큰 상황이라면, Test error와의 차이가 작더라도 그 절대적인 수치는 클 수 있기 때문이다. 2) Underfitting & Overfitting 학습 데이터에 대해서는 성능이 나오지만, Test data에 대해서는 성능이 떨어질 때 ..