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

[week2] CBOW와 Skip-gram의 syntactic task와 semantic task의 성능 차이 나는 이유가 학습 방식과 어떤 관련이 있을까요? #7

Closed
kimcando opened this issue Mar 16, 2022 · 2 comments

Comments

@kimcando
Copy link
Owner

논문 4.3 section 3번째 문단입니다.

The CBOW architecture works better than the NNLM on the syntactic tasks, and about the same on the semantic one. Finally, the Skip-gram architecture works slightly worse on the syntactic task than the CBOW model (but still better than the NNLM), and much better on the semantic part of the test than all the other models.

  • CBOW 은 NNLM 대비 syntactic에서 높은 성능냈지만 semantic 측면에서는 비슷
  • Skip-gram은 syntactic task는 NNLM보다는 높지만 CBOW보다 낮음. 반면에 semantic에서는 가장 높음

CBOW는 주변 단어를 참고해서 현재 단어를 예측하고, skip-gram은 현재 단어로 주변 단어를 예측하는 방식으로 학습되는데요. 이런 학습 방식의 syntactic, semantic 테스크의 성능 차이로 이어지는 것일까요?

@sujeongim
Copy link
Collaborator

저도 이 부분이 궁금해서 찾아보았는데,
Skip-gram이 CBOW보다 semantic 성능이 높은 이유에 대해서는 아래내용으로 설명될 수 있을 것 같습니다.
예를 들어 'The boy is going to school.'을 context로 두고 CBOW와 Skip-gram을 실행하면 input과 output이 다음과 같이 구성된다고 합니다.
스크린샷 2022-03-17 오후 8 53 02

즉 CBOW 같은 경우는 한 단어에 대해 한 번 예측하고 학습하는 반면에,
Skip-gram은 기준 단어로부터 여러 문맥의 단어를 예측 및 학습하기 때문에 한 단어를 여러번 예측 시도하고 배우게 됩니다.
그런 의미에서 Skip-gram이 전반적인 성능이 더 좋은 것 같습니다.

또한 semantic에 대해서는 CBOW는 문장의 각 단어와 예측 단어와의 차이를 보기 때문에 예측 단어를 제외한 단어들끼리의 연관성을 학습하지는 않는 것 같은데, Skip-gram은 한 단어로 문장의 다른 단어들을 예측하기 때문에 그 한 단어를 통해 문장의 다른 단어들 간의 연결점을 간접적으로라도 학습하는 것이 아닌가 하는 생각이 들었습니다. 그래서 문장의 의미적인 부분이나 문장에 같이 나올 확률이 높은 의미적 유사성이 높은 단어들을 더 잘 예측하는 것이라고 생각을 해보았습니다. ( 참고 : 논문 이미지 )
스크린샷 2022-03-17 오후 9 06 24

반면에 syntactic(문법적) 유사성이 높은 단어들은 대부분 한 문장에 나오는 경우가 별로 없기 때문에(big, biggest / go, went) 비교적 성능이 좀 떨어지지 않았나 하는 생각이 들었습니다.

제 추측이 많이 들어간 설명이라서..혹시 다른 의견 있으시면 말해주시면 감사하겠습니다!
이미지 출처 : https://wooono.tistory.com/244

@HanNayeoniee
Copy link
Collaborator

추가적으로, skip-gram이 CBOW보다 전반적인 성능이 높은 이유를 back propagation 과정에서 추측해 볼 수 있습니다.

데이터를 feed하는 관점에서는 주변 단어 여러개를 사용해 단어 1개를 예측하는 CBOW가 단어 1개로 여러 단어를 예측하는 skip-gram보다 성능이 더 좋을 것 같습니다.
하지만, gradient flow 관점에서 보면 CBOW는 중심 단어 1개의 gradient를 주변 4개의 단어로 flow하는 반면에, skip-gram은 단어 4개의 gradient를 중심 단어로 flow합니다. 이런 관점에서 skip-gram의 전반적인 성능이 더 좋은 것 같습니다.

스크린샷 2022-03-17 오후 11 12 25

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants