-
나혼자 정리해보는 케라스 튜토리얼 (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_size와 epochs라고 생각한다.
모의고사를 예로 들자면 한 문제씩 30 문제를 푸는 것과, 30 문제를 한 번에 푸는 것은 무슨 차이가 있을까?
전자의 경우 한 문제씩 문제를 풀고 답을 맞추고를 반복한다면 하나의 문제 set(즉 1회분의 모의고사)에 유사한 유형의 문제가 있다면 이전에 푼 문제를 토대로 학습하여 나중에 나오는 문제는 정답을 맞출 수 있다. 하지만 한 문제씩 풀고 맞추고를 반복하는 것은 제법 오랜 시간이 걸릴 것이다.
반대로 한번에 30 문제를 푸는 것은 비슷한 유형의 문제를 모두 틀려버릴 수 있다. 그뿐만 아니라 한 번에 푼 30 문제에 대해 모두 기억하고 있어야 하기 때문에 기억력이 좋아야 한다라고 resource가 많이 필요함을 표현하고 있다.
다음은 epochs이다. 이는 말 그대로 학습을 몇 번 반복할 것인지를 나타낸다. 강의자료에서는 1회분의 모의고사를 몇 번 반복해서 풀까라고 비유하고 있다. 같은 모의고사를 반복해서 푸는 것은 어떤 결과가 나올지 예상해본다면 쉽게 내용을 이해할 수 있다.
처음 모의고사를 풀고, 모의고사에 나온 문제들을 공부하여 다시 해당 모의고사를 보면 처음 몇 번은 눈에 띄게 성적이 오를 수 있다. 하지만 이를 반복적으로 한다면 점점 점수가 올라가는 속도가 느려질 것이고, 어쩌면 특정 점수로 수렴할 수도 있게 될 것이다.(심지어는 점수가 떨어질 수도 있지 않을까라는 생각은 해봤지만 사실 같은 모의고사를 반복해서 푸는데 점수가 떨어질 수 있을까..? 라는 생각이 들었다.)
여기서 반복횟수를 늘리면 늘릴수록 생길 수 있는 문제인 overfitting을 피아노를 배우는 사람에 비유해놓은 문장이 매우 인상깊었다.
어떤 사람이 피아노를 배우는데 하나의 곡만을 반복하여 연습하였다라고 가정해보자. 이 사람은 처음 피아노를 배울땐 악보를 보면서 치다가, 반복하다보면 더 이상 악보를 보지 않아도 칠 수 있게 될 것이고, 더 나아가 눈을 감고도 칠 수 있는 경지에 이를 수 있다.
하지만 하나의 악보만을 이용하여 피아노를 연습하였기 때문에 다른 곡을 연주하는 악보를 받았을 땐, 처음 배웠던 곡처럼 잘 치지는 못하거나 심지어는 아예 연주하지 못할 수도 있다. 이러한 상황을 overfitting이라고 한다.
'공부(Archive) > ML DL' 카테고리의 다른 글
Deep Photo Style Transfer 리뷰 (0) 2021.08.14 나혼자 정리해보는 케라스 튜토리얼 (2-1. 데이터셋 이야기) (0) 2020.06.10 Pycharm&Anaconda 설치 후 TensorFlow 설치하기(GPU) Windows 10 (0) 2019.07.10 Pycharm 설치하기(Feat. Anaconda) 및 환경설정 (0) 2019.07.10