본문 바로가기

전체 글

(85)
머신러닝 수업 프로젝트 (5) : 모델 및 하이퍼 파라미터 비교 실험 4. 실험 A. 실험 조건 이번 대회에서 사용한 데이터는 CINIC-10입니다. CINIC-10은 32x32 크기의 RGB 이미지 데이터로 각각 90,000장의 훈련, 검증, 테스트 데이터로 구성되어 있으며 비행기, 자동차, 새, 고양이, 사슴, 개, 개구리, 말, 배, 트럭 총 10개의 클래스로 구성되어있습니다. Figure 13은 CINIC-10 데이터의 예시를 보여줍니다. 실험 환경은 구글 코랩(Google Colab)이며, 그에 따라 GPU는 Tesla K80 또는 Tesla P100을 사용하였습니다. 실험에선 우선 최적의 성능을 나타내는 모델을 탐색하기 위해 기본적인 실험 조건을 설정했습니다. 하이퍼 파라미터인 학습률(learning rate)은 0.001, 배치 사이즈 (batch size)는..
머신러닝 수업 프로젝트 (4) : 제안 방법 3. 제안 방법 본 연구에선 딥러닝 모델인 DenseNet, Xception, PyramidNet의 파라미터 수를 대회 규정에 맞춰 줄이기 위해, 그 구조를 일부 변경한 모델을 사용하고자 했습니다. 그다음, 같은 조건에서 각 모델을 학습시켜 최고의 테스트 정확도를 나타내는 모델을 선정합니다. 이후 실험을 통해 해당 모델에 맞는 최적의 하이퍼 파라미터 값을 찾아 적용한 후, 데이터 증강, Mish 활성화 함수, 앙상블 기법을 적용하여 더욱 향상된 성능을 얻고자 했습니다. A. 변형 DenseNet 원논문에서 제시한 DenseNet-121의 경우 Dense Block은 총 56개, Transition Layer는 총 3개이며, 파라미터 수가 약 1,300만 개에 이릅니다. 우리는 여기서 Dense Block..
머신러닝 수업 프로젝트 (3) : 관련 연구 - 기법 D. 데이터 증강 (Data Augmentation) 과적합(overfitting)은 학습할 샘플이 너무 적어 새로운 데이터에 일반화할 수 있는 모델을 훈련할 수 없기 때문에 발생합니다. 그러나 매우 많은 데이터를 제공하면 데이터의 더 다양한 측면을 모델이 학습할 수 있으므로 모델의 과적합을 막고 일반화 성능을 높일 수 있습니다. Figure 8과 같이, 데이터 증강은 여러 가지 랜덤한 변환(회전, 이동, 뒤집기, 밝기 변화 등)을 적용하여 기존 훈련 데이터와 비슷한 훈련 데이터를 더 많이 생성하고, 이로써 과적합 문제를 해결할 수 있습니다. E. Mish 활성화 함수 (Mish Activation Function) Figure 9의 빨간색 그래프는 Mish 활성화 함수를 나타냅니다. Mish 활성화 함..
머신러닝 수업 프로젝트 (2) : 관련 연구 - 모델 2. 관련 연구 A. DenseNet DenseNet은 Figure 1의 Dense Block을 중심으로 설계된 모델입니다. Dense Block은 1x1 Convolution 연산과 3x3 Convolution 연산을 하는 layer로 구성되어 있으며, ResNet의 Residual Block(Figure 2)과 비슷하지만 다릅니다. Residual Block은 바로 직전 층에 주입된 값(x)을 직전 층을 통과한 값 (F(x))에 더하는데, Dense Block은 거쳐왔던 모든 층들에 주입된 값들을 쌓아서 다음 레이어에 전달합니다. DenseNet은 서로 다른 모든 층에서 특징, 즉 feature map을 반영하기 때문에 layer 사이사이에 가치 있는 정보가 충분히 지나다닐 수 있도록 합니다. 다른 ..
머신러닝 수업 프로젝트 (1) : 초록 및 소개 저는 이번 경희대학교의 2020년도 2학기 '머신러닝' 대체 기말고사로 캐글 대회에 참여했고, 이번 게시물은 해당 대회의 결과에 대한 최종 보고서를 좀 더 보기 편하게 재작성한 것입니다. 0. 초록 이번 대회의 목적은 여러 딥러닝 모델 및 기법들을 사용해, 총 10개의 클래스를 가진 CINIC-10 테스트 데이터 90,000장에 대한 예측 정확도를 최대화하는 것이었습니다. 단, 이때 사용되는 모델은 pre-trained되지 않아야 했으며, 파라미터 수는 200만개 이하로 제한되었습니다. 본 연구에선 대회의 목적 달성을 위해 DenseNet, Xception, PyramidNet을 파라미터 수 200만 개 이하로 변형하여 사용했습니다. 성능 향상을 위해 활용한 기법은 데이터 증강(Data Augmentat..
머신러닝 과제 (데이터셋 조사, NLLLoss & Cross Entropy Loss) # 데이터셋 조사 MNIST 데이터셋: 0 ~ 9까지의 손글씨 이미지로 구성되어 있으며 크기는 28x28이다. 각각의 픽셀값은 0~255의 정수로 이루어졌고, 회색조 이미지다. 데이터의 레이블은 0 ~ 9의 정수로 이루어져 있다. 학습용 데이터는 60,000개고, 테스트 데이터는 10,000개다. 가장 기본적인 이미지 분류가 이 데이터셋의 목적이다. Fashion-MNIST 데이터셋: 의류, 가방, 신발 등 총 10종류의 패션 이미지들로 구성되어 있으며 크기는 28x28이다. 각각의 픽셀값은 0~255의 정수로 이루어졌고, 회색조 이미지다. 학습용 데이터는 60,000개고, 테스트 데이터는 10,000개다. MNIST 데이터셋과 마찬가지로, 가장 기본적인 이미지 분류가 이 데이터셋의 목적이다. CIFAR..
머신러닝 과제 (활성화 함수 조사) ReLU: 입력값 x가 양수면 그대로 x를 출력하고, x가 음수면 그냥 0을 출력하는 활성화 함수다. 기울기가 1이기 때문에 Gradient Vanishing 문제를 해결하였다. 또한 함수가 간단해서 계산속도가 빨라 효율적이다. 그러나 중심값이 0이 아니고, x가 음수면 그 결과로 전부 0을 출력하기 때문에 몇몇 가중치들이 갱신되지 않는, Dying ReLU 문제가 발생한다. 수식은 다음과 같다. ReLU6: 기존 ReLU 함수의 upper bound를 6으로 고정시킨 활성화 함수다. 테스트 시 ReLU보다 성능이 좋았고, 최적화 관점에서도 더 좋다는 것이 밝혀졌다. 수식은 다음과 같다. ELU: ReLU의 특성을 공유하며, Dying ReLU 문제를 해결하였다. 수식은 다음과 같다. SELU: ELU와..
머신러닝 과제 (옵티마이저, 파이토치 기능 조사) # 옵티마이저 SGD: 전체 데이터의 일부(mini batch)만 보고 loss function 값을 계산해 빠르게 loss function의 최솟값을 찾아나가는 방법. AdaGrad: 많이 변화하지 않은 가중치들은 step size를 크게 하고, 많이 변화했던 가중치들은 step size를 작게 하는 방법. RMSProp: 학습이 진행될수록 가중치 업데이트 강도가 약해지는 Adagrad의 단점을 보완하고자 제안된 방법. 과거의 gradient 값은 잊고 새로운 gradient 값을 크게 반영해서 가중치를 업데이트하는 방법. Adam: RMSProp과 모멘텀(momentum)이라는 개념을 함께 사용함으로써, 진행 방향과 learning rate 모두를 적절하게 유지하면서 가중치를 업데이트할 수 있도록 고..