굳이 억지로 대응을 시킨다면 개개인의 뇌는 model 문제집은 training data 모의고사는 validation data 수능은 test data 성적은 loss function라고 할 수 있을 것이다.



그나저나 왜 문제집은 잘 풀리는데 모의고사 or 수능성적은 개판일까?

다시말해 모델이 training set에 대해서는 잘 학습되었는데 왜 val이나 test에서는 성능이 잘 안 나올까?

이렇게 일반화가 안 되는 이유는 보통 모델이 train set에 overfitting 되었기 때문이다.

모델의 함수공간에 제약이 지나치게 없다보니까 학습데이터의 지엽적인 부분까지 다 반영하여 복잡한 모델이 만들어지게 되는데 이 경우에 모델의 bias는 줄어들더라도 variance가 커지게 되어 일반화성능은 떨어지는것이다.

(학습 데이터 자체에도 노이즈가 있을수밖에 없는데 그러한 노이즈까지 학습했기 때문)

이를 완화하기 위해서 간단히 생각해볼수 있는 것은 모델의 복잡도를 낮추거나 학습데이터를 더 많이 투입하는 것이다.

학습데이터를 많이 투입한다는건 문제집많이 풀면 해결될일인데 모델의 복잡도를 낮추기 위해서는 뭘 해야할까?

복잡도를 줄이기 위해서는 모델의 함수공간을 줄여야하고 이는 모델을 이루는 변수들에 제약조건을 걸어주면 해결된다. (regularization)

예를들어 교육과정해설서나 평가원 가이드라인 같은 것이 생각의 범위를 줄여주는 일종의 제약조건 역할을 할 수 있다. 다른 제약조건들은 스스로 알아서 생각해보자.

이제 모델이 아닌 데이터 관점으로 문제를 비틀어보자.

시중문제집들은 과거 평가원 모의고사,수능문제들을 training set으로하여 유사한 문제들을 만들어내는 생성모델의 결과물이라고도 생각해볼수 있다.

그런데 과연 이런 문제들이 모의고사, 수능을 완벽하게 반영하고 있는게 맞을까?


즉, 시중문제들의 분포가 실제로는 수능,모의고사 문제의 분포와 다른 것은 아닐까?

이렇게 데이터의 분포가 다른 경우(domain shift)에는 기존의 방식대로 학습을 해봤자 새로운 데이터에 대한 성능은 떨어질 수 밖에 없다.
(ex. gta5 주행데이터로 자율주행알고리즘을 학습시킨 차는 실제 주행 환경에서 제대로 대처하기 힘들다)


이러한 문제를 완화하기 위해 나온 개념이 바로 도메인 적응 (domain adaptation)이다.

간단히말해 서로 떨어져 있는 두 데이터셋의 분포를 적절히 잘 가깝게 해서 모델의 성능을 올려보자는 아이디어이다.

그러기 위해서 많은 테크닉들이 고안되었는데