ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 나혼자 정리해보는 케라스 튜토리얼 (2-2. 학습과정 이야기)
    공부(Archive)/ML DL 2020. 6. 17. 14:59

    글은 tykimos.github.io/lecture/ 있는 내용을 토대로 나름대로 혼자 공부하고 정리한 글입니다.

     

    DL을 함에 있어서 학습과정이라 하면 굉장히 복잡한 과정을 거친다고 느꼈지만 keras에서는 이러한 것을 fit()이라는 함수 하나로 쉽게 해결해준다. 이 함수는 fit(x, y, batch_size, epochs)의 인자를 가지며 각 인자는 아래와 같은 역할을 한다.

    • x: Input data
    • y: Label data
    • Batch_size: Data를 몇 개 단위로 나누어 학습할 것인지
    • Epochs: 학습을 몇 번 반복할 것인지

    강의자료에서는 label 즉 답이 없는 경우를 해답지 없이 모의고사를 푸는 것으로 비유하고 있다.

    여기서 눈여겨봐야 할 변수는 batch_sizeepochs라고 생각한다.

     

    모의고사를 예로 들자면 한 문제씩 30 문제를 푸는 것과, 30 문제를 한 번에 푸는 것은 무슨 차이가 있을까?

    전자의 경우 한 문제씩 문제를 풀고 답을 맞추고를 반복한다면 하나의 문제 set(즉 1회분의 모의고사)에 유사한 유형의 문제가 있다면 이전에 푼 문제를 토대로 학습하여 나중에 나오는 문제는 정답을 맞출 수 있다. 하지만 한 문제씩 풀고 맞추고를 반복하는 것은 제법 오랜 시간이 걸릴 것이다.

    반대로 한번에 30 문제를 푸는 것은 비슷한 유형의 문제를 모두 틀려버릴 수 있다. 그뿐만 아니라 한 번에 푼 30 문제에 대해 모두 기억하고 있어야 하기 때문에 기억력이 좋아야 한다라고 resource가 많이 필요함을 표현하고 있다.

     

    다음은 epochs이다. 이는 말 그대로 학습을 몇 번 반복할 것인지를 나타낸다. 강의자료에서는 1회분의 모의고사를 몇 번 반복해서 풀까라고 비유하고 있다. 같은 모의고사를 반복해서 푸는 것은 어떤 결과가 나올지 예상해본다면 쉽게 내용을 이해할 수 있다.

    처음 모의고사를 풀고, 모의고사에 나온 문제들을 공부하여 다시 해당 모의고사를 보면 처음 몇 번은 눈에 띄게 성적이 오를 수 있다. 하지만 이를 반복적으로 한다면 점점 점수가 올라가는 속도가 느려질 것이고, 어쩌면 특정 점수로 수렴할 수도 있게 될 것이다.(심지어는 점수가 떨어질 수도 있지 않을까라는 생각은 해봤지만 사실 같은 모의고사를 반복해서 푸는데 점수가 떨어질 수 있을까..? 라는 생각이 들었다.)

     

    여기서 반복횟수를 늘리면 늘릴수록 생길 수 있는 문제인 overfitting을 피아노를 배우는 사람에 비유해놓은 문장이 매우 인상깊었다.

    어떤 사람이 피아노를 배우는데 하나의 곡만을 반복하여 연습하였다라고 가정해보자. 이 사람은 처음 피아노를 배울땐 악보를 보면서 치다가, 반복하다보면 더 이상 악보를 보지 않아도 칠 수 있게 될 것이고, 더 나아가 눈을 감고도 칠 수 있는 경지에 이를 수 있다.

    하지만 하나의 악보만을 이용하여 피아노를 연습하였기 때문에 다른 곡을 연주하는 악보를 받았을 땐, 처음 배웠던 곡처럼 잘 치지는 못하거나 심지어는 아예 연주하지 못할 수도 있다. 이러한 상황을 overfitting이라고 한다.

    댓글

Designed by Tistory.