티스토리 뷰

해당 글은 개인적으로 공부한 내용과 '김태영님의 블로그'를 참고한 글 입니다.

 

학습

문제와 해답지를 함께 제공을 하고(코드상에선 x와 y) 문제를 푼 뒤 정답지를 보며 맞는지 틀린지 확인하는 과정을 학습이라고 부른다.

평가

문제만 주고 풀게한 뒤, 그 문제가 맞는지 틀린지 점수(Score)만 계산하는 것.

Validation Set

학생(모델)들의 학습 방법을 Validation set으로 평가해볼 수 있다. 그래서 Hyper-Parameter(공부방법)을 변경해가면서 학생(모델)에게 알맞은 공부 방법이 무엇인지 알아낼 수 있다.
Hyper Parameter는 학습을 하면서 적절한 값을 찾아내야 한다.

 

UnderFitting(언더피팅)

학습이 덜 상태를 의미하며 이는 학습을 더 하면 성능이 더 높아질 가능성이 있는 상태를 의미.

Overfitting(오버피팅)

특정 데이터에 너무 Fitting하게 학습 되어서 보유하고 있는 Dataset을 잘 맞추더라도, 새로운 Dataset이 들어올 경우 원하는 값을 얻지 못하게 된다. 따라서 Overfitting이 되는 것을 피해야 한다.

Keras에서는, Overfitting을 방지하기 위해서 'Callback'함수를 별도로 사용해서 방지한다고 한다.
콜백함수란, 어던 함수를 실행할 때, 그 함수에서 내가 별도로 지정한 함수를 호출하는것을 말한다. 따라서, 오버피팅인 경우에서는 fit함수에서 EarlyStopping이라는 콜백 함수가 학습 과정 중에서 매번 호출이 된다. Overfitting이 발생되는 조건이 되면 학습을 조기 종료를 시킬 수 있게 된다.
kears.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto')

 

배치사이즈(Batch_size)

몇번째 문항까지 문제를 풀고 해답지를 보며 정답인지 아닌지 비교를 할것인지를 의미.
ex) batch_size = 100
--> 100문제를 풀고난 뒤 해답을 맞춰보는 과정.

배치에 대한 자세한 내용은 : https://muuulkkong.tistory.com/2 참고

 

 

오차역전파(BackPropagation)

  • 사전 개념
    • 문제를 푼 뒤 정다과 맞춰봐야 학습이 일어난다.
  • 학생(모델)일 결과 값(문제를 다 푼 문제지들)과 주어진 라벨 값(해답지의 정답)과의 오차(틀린 개수)를 줄이기 위해 'Backpropagation'알고리즘을 사용한다. 이 알고리즘을 이용해서 weight(가중치)가 갱신된다.
  • 정확한 개념 정리
    • 신경망의 기울기를 구하는 방법 : BackPropagation
    • 신경망의 기울기 = 오차(loss or cost)의 기울기
    • loss gradient(오차의 기울기)를 구하면 --> 신경망의 매개변수(weight, bias)를 갱신할 수 있다.

 

Batch Size + BackPropagation

  • 전체 데이터 : 100
  • batch_size = 100 일 경우
    • 전체 문제(100문제)를 푼 뒤 정답을 맞춘다.
    • 따라서, 'Backpropagation'을 하게 되면, weight 갱신은 한번만 일어난다.
  • Batch_size = 10 일 경우
    • 전체 문제에서 10문제씩 풀어보고 해답과 맞추는 방법.
    • Backpropagation 과정을 하면, weight 갱신이 10번 일어난다.
  • Batch_size = 1 일 경우
    • 1문제 풀고 해답을 맞춰보는 방법이다.
    • Backpropagation 과정을 하면 weight 갱신이 100번 일어난다.
  • [정리]
    • Batch_size가 클 경우
      • 한번에 많은 문제를 기억해야하니 기억력(메모리 용량)이 커야한다.
        • 이 방법은, 시간이 단축되는 장점이 있다.
    • Batch_size가 작을 경우
      • 메모리가 작아도 된다.
      • 단, 꼼꼼하게 weight 갱신이 잘 되겠지만, 시간이 너무 오래 걸린다는 단점이 있다.(내 생각이지만, batch_size를 1로 한다면, 하나하나씩 순차적으로 하는거니까 cpu연산과 동일하다고 생각이 든다.)


Epoch

  • 문제를 얼마나 반복해서 풀것인지 정하는 것,
  • 효과
    • 같은 문제를 한번 풀때랑, 여러번 풀때랑 학습량이 달라진다. 따라서 여러분 풀게 되면 문제에서 틀린 개수가 적어지게 된다.
  • 모의고사를 1회분 20번 풀때(batch_size = 100, epoch=20) vs 모의고사 20회분 1번 풀때(batch_size = 5, epoch=1)의 차이점
    • 데이터 특성에 따라 좋고 나쁨이 달라진다.
    • 현실적으로 생각을 해봤을때
      • 딥러닝에서는 데이터가 제한적이다(특히 의료AI에서는 더더욱) 따라서 제한된 데이터셋으로 반복적으로 여러번 학습 하는것이 효율적이다.
  • 무작정 Epoch를 크게 한다고 좋지는 않다.
    • 피아노 곡을 여러번 반복해서 연습하면 나중엔 악보를 안보고 연습하게 되는 경지에 다다르게 되지만, 악보 보는 법을 까먹어서 나중에는 다른 곡을 연주하지 못하게 되는 경우가 발생할 수 있게 된다. 
    • 즉, 악보를 못봐서 다른 곡을 연주 못하는 경우가 Overfitting이 일어난 것이다.
Comments