※ Notification
본 포스팅은 작성자가 이해한 내용을 바탕으로 작성된 글이기 때문에 틀린 부분이 있을 수 있습니다.
잘못된 부분이 있다면 댓글로 알려주시면 수정하도록 하겠습니다 :)
시간이 없다는 것은 핑계겠지만 다른 일 처리할 게 있어서 수업을 들은지 1주일이 다돼서야 포스팅을 한다.
데이터는 주로 3가지 종류로 나뉘는데 train, test, validation으로 나뉜다.
validation 없이 train, test를 사용하기도 하는데, 모델의 일반화를 위해서 Overfitting 확인용으로 validation을 사용한다고 알고 있다.
train 데이터의 경우 epcohs이 반복될 때마다 계속 사용되며 이 과정에서 validation 데이터를 통해 현재 상태(loss, acc 등)를 확인한다.
앞선 포스팅에서도 overfitting을 몇 번 이야기 했었던 것 같은데, 개인적으로는 그럼에도 불구하고 매번 강조해도 괜찮다고 괜찮다고 생각한다.
ML/DL에서 데이터 다음으로 중요한 것이 overfitting이라고 생각한다.
Overfitting : Model이 train data에만 최적화되는 현상으로 train ste에 대한 성능과 validation set에 대한 성능 차이가 발생하면 overfitting이라고 한다.
때문에 오버피팅은 언제나 존재하고(거의 모든 경우에서) overfitting이 심하냐 아니냐의 차이만 있을 뿐이라고 한다.
Validation set에 대해서 성능이 더 높게 나올 수도 있는데 이는 어쩌다가 validation에 더 잘 맞게 학습되었을 뿐, 항상 그럴 것이라는 보장은 없다. 때문에 valdiation 성능이 잘 나왔다고 좋은 모델이라고 할 수는 없다.
overfitting은 언제나 존재한다고 했는데 그러면 어떤 모델이 좋은 모델인지 어떻게 판단할까?
딥러닝에서 overfitting은 피할 수 없다. 하지만 우리의 목표는 reduce overfitting이다.
평균의 오류에 대해서도 이야기해주셨다.
평균을 이야기할 때는 표준편차나 신뢰도 구간을 반드시 이야기 해야하며, 데이터가 많으면 많을수록 좋다.
딥러닝에서는 인덱스를 셔플링하며, 그 인덱스를 가지고 새로운 데이터 순서를 생성한다.
왜 굳이 인덱스 셔플을 해야된다고 하신걸까를 생각해봤는데, 아마도 feature와 label이 한쌍이므로 같이 다뤄야된다는 의미인 것 같았다.
요즘엔 다양한 방법으로 shuffle 기능을 지원해줘서 굳이 따로 인덱스를 셔플하고 데이터에 대입하는 과정으로 shuffle을 해줘야 될까 싶긴하다.
확실히 수업 끝나고 정리를 하는 것이 더 정리도 잘되고 기억도 잘 나는 것 같다.
이번주는 밀리지 말고 포스팅하기가 목표이다.