작년 봄에 했었던 첫 딥러닝 프로젝트인 '딥러닝을 이용한 은하분류' 발표를 마치고 문제점을 보완하기 위해 적은 메모입니다.
1. 한 번 잘못 판단 후 계속 잘못 판단한 쪽으로 치우친다 (과적합) = local minimum에 빠진다
해결방법 : learning rate, mini-batch learning, Initializer 등으로 해결 가능
1-1. Initializer
딥러닝 학습에선 가중치가 중요하다. 이 가중치를 매 에포크마다 새로 갱신 (초기화) 시키는데, 그 방법의 문제이다.
보편적으로 쓰이는 Initializer에는 Xavier Initializer, He Initializer가 있다.
예를 들어 He Initializer는 Keras에서 Dense((50, kernel_initializer='he_normal'))의형태로 쓰인다.
자세한 내용은 아래 링크에 잘 나와있다.
https://buomsoo-kim.github.io/keras/2018/04/22/Easy-deep-learning-with-Keras-4.md/
1-2. learing rate
최적의 가중치와 편향을 찾기위해서 학습을 진행하며 손실함수(loss function) (또는 비용함수(cost function)라고도 함)가 최솟값을 갖도록 하는 '경사하강법'을 쓸 때, learnig rate가 반영이 된다.
즉, 한 번의 학습으로 얼마만큼 학습해야 할 지, 즉 매개변수 값을 얼마나 갱신하느냐를 정하는 것이 learning rate다.learing rate값은 정해진 공식이 없어서 사람이 직접 실험해가며 적절한 값을 설정해주어야 하는데, learing rate값이 크면 loss function의 최솟값을 건너뛰게 될 수도 있어서 loss function의 최솟값을 제대로 찾지 못 할 수도 있고, learing rate값이 작으면 학습시킬 때 시간이 오래 걸릴 수 있다.
Keras에서는 Optimizer = Adam(lr = 0.001)로 표현된다.
1-3. mini batch learning
빅데이터에서 모든 훈련데이터들을 대상으로 loss function을 일일이 계산하려면 매우 오랜 시간이 걸린다. 이런 경우 데이터 일부를 추려 전체의 '근사치'로 이용할 수 있다. 딥러닝에서도 훈련 데이터로부터 일부만 골라 학습을 수행한다.
이 일부를 'mini-batch'라고 하고, 이 mini-batch만을 이용해 딥러닝 모델을 학습시키는 것을 'mini-batch learning'이라고 한다.
learing rate와 mini batch learning에 관한 자세한 내용은 아래 링크와 책 '밑바닥부터 시작하는 딥러닝' 131p, 141p, 115p에 잘 나와있다.
https://computer-nerd.tistory.com/13
2. input data를 굳이 RGB형태로 넣을 필요가 없을 것이다.
학습 속도 문제 때문에 원본 이미지를 300*300픽셀에서 50*50픽셀로 줄였는데, 그렇다면 굳이 RGB형태로 이미지를 학습시킬 필요가 있을지에 대해 학교 선배가 조언해주었다. 그러고 보니 어차피 이 모델에선 edge, smooth, spiral 세 가지 은하의 '모양'이 중요하다. 때문에 이미지를 전부 grey로 변환한 후 1차원으로 학습시켰으면 모델 정확도도 향상되고 학습 속도도 빨라질 것이라고 생각했다.
3. ROC curve 그리기
딥러닝 모델에선, 특히 분류 모델에선 이 모델이 분류를 얼마나 잘 했는지 못 했는지를 판단하는 것, 즉 평가가 중요할 것이다. 이를 판단할 수 있는 방법 중 하나가 ROC curve를 그려보는 것이다. ROC curve는 진짜 양성 비율(TPR)에 대한 거짓 양성 비율(FPR)을 나타낸다. 이에 대한 자세한 내용은 '블록과 함께하는 파이썬 딥러닝 케라스' 69p~85p (아래 링크로도 나와있다), '파이썬 라이브러리를 활용한 머신러닝' 335p~360p에 잘 나와있다.
https://tykimos.github.io/2017/05/22/Evaluation_Talk/
'딥러닝 & 머신러닝 > 프로젝트' 카테고리의 다른 글
머신러닝 수업 프로젝트 (1) : 초록 및 소개 (0) | 2020.12.25 |
---|---|
2019.11.15 AI 경진대회 발표를 듣고 난 후 메모한 것들 (0) | 2020.06.11 |
딥러닝: LSTM을 활용하여 태양풍 데이터로 Kp지수 예측하기 (0) | 2020.06.11 |
딥러닝(CNN)을 이용한 은하 분류 (2) : 실전 돌입 (0) | 2020.06.11 |
딥러닝(CNN)을 이용한 은하 분류 (1) : 준비과정 (0) | 2020.06.11 |