안녕하세요.

다들 금요일 하루 잘 시작하셨나요~!


혼자서 생각하고 찾아보다 잘 모르겠어서 BERT와 관련한 질문을 드리려고 합니다.

제가 하려고 하는 것은 특정 문장이나 혹은 구와 같은 자연어를 임베딩을 시키려고 합니다!

이렇다 보니 대표적으로 BERT기반의 모델들을 떠올리게 되었습니다.


BERT의 사전학습은 mlm, nsp와 같은 objective function으로 모델을 학습시키기 위해 pair로 입력이 주어지는 것으로 알고 있습니다.

여기서 제가 하려고 하는 것(단일 문장 or 구를 넣고 벡터를 구하는 것)과 사전학습 입력의 형태가 매칭이 안됩니다.


과거에는 단순히 사전학습된 BERT를 사용하여 단일 문장을 입력으로 문장벡터(cls, mean, max pooling)를 사용해왔었는데 오늘 문득 이렇게 사용해도 되는지? 이게 왜 가능한건지? 이런 원론적인 내용이 궁금합니다.


BERT 이후에, RoBERTa (nsp 제거)나 S-BERT와 같은 모델들이 나오고 사용되고 있는데 S-BERT같은 경우 bi-encoding을 사용하여 BERT의 cross-encoding보다는 성능이 떨어진다는 결과도 있더라구요.


두서없이 작성하여 이해하기 힘드시겠지만, BERT의 사전학습 과정과 실제 사용하려는 목적과의 데이터 입력의 괴리가 발생하는게 이상이 없는지 궁금합니다. 혹시 관련된 지식이 있으시다면 좋은 말씀 부탁드립니다. 

감사합니다