ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CS : Deep Learning (2/2)
    Computer Science/ML, DL 2021. 4. 10. 17:35
    728x90

    ** 순서는 무의미합니다.

     

     

    이전 글 : kxmjhwn.tistory.com/263

     

    Knowledge : Deep Learning (1/2)

    ** 순서는 무의미합니다. attention mask 학습 시간의 효율을 위해, 패딩된 부분을 attention 구조에 통과시키지 않도록 함 값이 있다면 1, 패딩 부분이라면 0 0 부분은 bert 모델에서 attention을 수

    kxmjhwn.tistory.com

     

    deep-learning

    머신 러닝의 한 분야

    이름에서 알 수 있듯, 딥, 즉 여러 개의 층(layer)에서 점진적으로 학습하는 것

     


    overfitting

    1.

    학습 데이터에 너무 최적화를 해서, 오히려 실제 데이터와 차이가 많이 발생

    딥 러닝은 학습 데이터가 많을 수록 더 정교한 모델을 만들 수 있지만, 학습 데이터에 많은 noise가 있다면 overfitting이 발생한다.

     

    2.
    overfitting 방지 방법

    • validation set을 활용하여 검증 과정에서 overfitting을 파악한다.
    • 데이터의 양을 늘린다.
    • 모델의 복잡도를 줄인다.
    • regularization을 적용하여, 복잡한 모델을 간단하게 한다. 사용되지 않는 특성을 제거하는 등
    • drop out을 통해, 신경망의 일부를 사용하지 않는다.

     

     

    fine tuning

    1.

    기존에 학습되어 있는 모델을 기반으로 새로운 목적에 맞게 변형하는 것

    기존의 weight를 활용하여 학습을 업데이트 하는 것

     

     

    2.

    fine tuning을 번역하자면 '미세 조정'이다.

    즉, pre-trained model에 새로운 dataset을 넣어 model의 전체 parameter를 업데이트하는 것이다.

     

    3.

    이러한 업데이트 과정에서, parameter들을 완전히 바꿔버리기 때문에 over fitting 등의 문제가 생길 수 있다.

    때문에, 말 그대로 '미세'하게 parameter를 조정하는 작업을 해주어야 한다.

     

     

     

     

    seed value

    딥 러닝에는 '난수' 개념이 많이 활용되는데, 컴퓨터에 '시작 숫자'를 입력하고 난수를 생성하면, 컴퓨터는 '시작 숫자'를 기준으로 알고리즘을 적용해 난수를 생성한다. 이 때 '시작 숫자'를 seed라고 한다.


    loss

    f1 : 4 = 2a + b

    f2 : 6 = a + 4b

     

    위의 두 식이 있을 때, 컴퓨터는 a와 b에 모든 수를 대입해보고 결과를 비교하는 방식으로 답을 찾아간다.

    이 때, 대입 결과와 실제 정답 간의 차이를 loss라고 한다.

     

     

    gradient

    텐서 연산의 변화율

    텐서를 input으로 받는 함수에 '변화율' 개념을 확장시킨 것

     

     

     

    weight (가중치)

    new_weight(갱신 가중치) = weight(가중치) - learning rate(학습율) * gradient(변화율)

     

     

     

    신경망의 전형적인 학습 과정

    1. 학습 가능한 매개변수(또는 가중치(weight))를 가지는 신경망을 정의한다.
    2. 데이터 셋(data set)의 입력을 반복한다.
    3. 입력을 신경망에서 처리한다. (foreward)
    4. 손실(loss)을 계산한다.
    5. 변화도(gradient)를 신경망의 매개변수들에 역으로 전파한다. (backward)
    6. 신경망의 가중치를 갱신한다.

     

     

    mAP (mean Average Precision)

    multiple object detection 알고리즘에 대한 성능을 1개의 scalar value로 표현한 것

     

     

     

     

     

    Train, Test, Validation Dataset

     

    ** 참고 블로그 URL : kevinthegrey.tistory.com/136

     

     

    0. Train dataset : Validation datset : Test dataset = 6 : 2 : 2

     

     

    1. Train dataset

    • 모델을 학습하기 위한 dataset
    • 모델을 학습하는 데에는 오직, 유일하게, Train dataset만 사용된다.

     

    2. Test dataset 

    • 학습에 전혀 관여하지 않고, 오직 '최종 모델의 성능'을 평가하는데에 사용된다.

     

    3. Validation dataset

    •  학습 과정에 '사용'되지는 않고 '관여'하며, 학습이 된 여러 모델 중 가장 좋은 하나의 모델을 고르기 위한 dataset이다.
    • 만약 validation dataset을 사용하지 않는다면, accuracy를 예측할 수 없고, overfitting 또한 방지할 수 없다.

     

     

    • 위 그림은 여러 가지의 epoch에 대한 loss를 보인다.
    • epoch을 늘려가며 학습을 한다고 할 때, training dataset에 대해서는 loss가 점점 줄어들고, 학습에 '사용'되지는 않는 validation dataset의 loss는 점점 늘어나는 것을 볼 수 있다.
    • 이 때, 두 그래프의 교차점 이후의 부분에 대해서는, 모델이 과적합(overfitting)되고 있다고 판단할 수 있다.
    • 따라서, epoch이 100쯤 될 경우가 가장 최적의 epoch이고, 이때 학습된 모델이 loss 값이 최저라고 할 수 있다.

     

    4. validation dataset은 학습에 '사용'되지 않는데, 이를 test dataset으로 사용하면 되지 않는가 ?

    • validation dataset은 데이터에 편향적으로 weight를 선택하는 경향이 있다고 한다. (bias)
    • 때문에, 학습에 조금도 '사용', '관여'되지 않은 새로운 dataset을 test dataset으로 해야 한다.

     

    728x90

    'Computer Science > ML, DL' 카테고리의 다른 글

    CS : BERT (2/2)  (0) 2021.04.09
    CS : YOLO v5  (0) 2021.04.09
    CS : BERT (1/2)  (0) 2021.04.07
    CS : Deep Learning (1/2)  (0) 2021.04.06

    댓글

kxmjhwn@gmail.com