Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

머신러닝의 반복학습에 대한 의문 #1142

Open
wish0728 opened this issue Jul 29, 2021 · 3 comments
Open

머신러닝의 반복학습에 대한 의문 #1142

wish0728 opened this issue Jul 29, 2021 · 3 comments
Labels
ML / DL machine learning, deep learning

Comments

@wish0728
Copy link

사회과학을 전공하고, 기초통계에 대해서는 회귀분석+@ 정도의 지식이 있는 상태에서 처음으로 머신러닝야학을 통해 공부를 시작해서 따라가고 있습니다.

Tensorflow101 에서 첫번째 딥러닝 - 레모네이드 판매를 예측까지 학습한 상태입니다. 수업에서 원리나 문법을 자세히 설명해주시는 대신 간략한 설명과 함께 따라하면서 실행해보는 과정이라 재미있게 공부하고 있습니다. 그런데 첫번째 딥러닝 모델과 예측을 따라 해보면서 의문이 생겼습니다.

해당 수업에서 모델에 학습시키는 데이터는 observation갯수가 6개인데, 이 6개를 반복해서 학습시켜서 예측을 한다면 기존에 가지고 있는 데이터가 과대대표되는 문제가 생기는 것 아닌가요?

예를 들어 모델의 정확성을 높이고 싶을 때 데이터의 n갯수 자체를 늘리는 것은 이해가 됩니다. observation의 갯수가 늘어날수록 거기에서 얻을 수 있는 정보값이 많아진다는 뜻이니까요 그런데 데이터가 가지고 있는 정보값이 한정된, 제한된 데이터를 반복해서 학습시킴으로서 모델의 정확성을 높인다는 개념이 잘 이해가 가지 않습니다.
정보값이 변하지 않는 상태로 n갯수가 늘어나면 수치적으로는 당연히 모델의 정확도가 올라가지만, 실제로 그게 더 좋은 예측력을 가지게 된다고 할 수는 없는 것 아닌가요? 어떤 원리를 통해서 동일한 데이터의 반복학습이 모델의 정확성을 높이는 것일까요?

너무 궁금합니다!

@blackdew
Copy link
Collaborator

데이터에 대해서 이해가 있으시군요. :)
학습데이터에 과잉학습(overfit)이 되지 않고, 학습 때 사용하지 않고 모델이 처음 경험하는 테스트용 데이터에서 충분히 좋은 성능을 나타내도록 해야 좋은 예측력을 만들 수 있습니다.

야학에서 준비한 수업은 "학습" 이라는 것에 집중된 수업이고, 과대대표 문제는 다루지 않고 있죠.
때문에 해당 수업으로 만들어진 모델은 모두 과대대표되는 문제를 가지고 있어요.

"실제 현실에서 쓸만한 모델"을 만들 때에는 "학습용 데이터(training set)"와 "검증용 데이터(validation set)", "테스트용 데이터(test set)" 로 데이터를 구분하여 준비하합니다. 데이터의 양을 충분히 확보할 수 있게 되면서 가장 많이 사용되는 방법이죠. 또한, 딥러닝 모델은 사실 준비된 데이터에 대해 과잉학습(overfit)이 잘되는 구조라서, 과대대표가 되지 않도록 모델을 구성하는 방법에 대해 많이 연구되고 다양한 기법들이 사용이 되고 있어요.

@wish0728
Copy link
Author

답변 정말 감사합니다. 충분한 데이터만 확보된다면 학습용 데이터와 검증용, 테스트용을 나눠서 사용한다는 방법이 있군요!

다만 여전히 궁금한 부분이 있습니다. 데이터의 양이 얼마나 많건간에 동일한 데이터를 가지고(아마도 학습용 데이터겠죠?) '반복적으로' 학습을 시키는 것은 모든 ML 과정에서 일반적인가요? 그렇다면 같은 데이터를 반복적으로 학습시킴으로써 loss를 줄이는 것의 매커니즘은 뭘까요?

@blackdew
Copy link
Collaborator

blackdew commented Jul 29, 2021

tensorflow101 과정의 '학습의 실제' 수업을 보면 해당하는 내용을 간단하게 설명합니다.
https://opentutorials.org/module/4966/28977

loss를 줄여나가는 학습방법은 딥러닝에서만 사용하는 방법은 아닙니다.
이것의 의미를 알아보려면 최적화 이론(Optimization Theroy)을 살펴보시면 되는데요. 간단하게 설명드리면 목표로 하는 성능 지수 함수를 여러 가지 제약 조건 하에서 최소 또는 최대 값을 찾는 문제로 수확 및 공학 분야에서 가장 오래된 학문 영역 중 하나입니다.

또한, 딥러닝에서는 최적화를 이루어 내는 방법 중에 미분을 이용한 '역전파학습(Backpropagation)' 방법을 이용하고 있습니다. 딥러닝이 이용하는 메카니즘을 깊게 보고 싶으시면 '역전파학습'을 공부해 보시면 되겠습니다.

당연하게도 딥러닝 이외의 다른 ML은 각 ML특성에 맞는 방식을 사용합니다. :)

@progh2 progh2 added this to the 머신러닝 야학 3기 milestone Jul 30, 2021
@progh2 progh2 added the ML / DL machine learning, deep learning label Jul 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ML / DL machine learning, deep learning
Projects
None yet
Development

No branches or pull requests

3 participants