2023년 3월 19일 일요일

Transformer 로 긴문장을 처리할때 고려해야할 점(long text classification)

Transformer 모델을 파인 튜닝할 때 토큰 길이에 제한이 있는 경우에는 몇 가지 전략을 고려해볼 수 있습니다.


1. Truncation: 입력 문장을 일정 길이로 자르는 것입니다. 이 경우, 모델이 문장의 일부를 무시하게 됩니다. 보통은 문장의 끝 부분을 자르는 것이 일반적입니다. 이를 "tail truncation"이라고 합니다. 하지만, 문장의 중요한 정보가 문장의 앞부분에 있는 경우 "head truncation"을 사용할 수도 있습니다.


2. Sliding Window: 입력 문장을 여러 개의 작은 문장으로 나누어 처리하는 것입니다. 예를 들어, 긴 문장을 3개의 작은 문장으로 나누는 경우, 1번째 작은 문장은 첫 번째 단어부터 100번째 단어까지, 2번째 작은 문장은 51번째 단어부터 150번째 단어까지, 3번째 작은 문장은 101번째 단어부터 마지막 단어까지를 포함합니다. 그리고 이 작은 문장들을 순차적으로 모델에 입력하여 처리합니다.

작은 문장들을 다시 LSTM 같은것으로 처리하는 방법입니다.

https://medium.com/@armandj.olivares/using-bert-for-classifying-documents-with-long-texts-5c3e7b04573d


3. Dynamic Padding: 이 방법은 문장을 자르지 않고 모델 입력에 맞게 패딩을 추가합니다. 이를 "dynamic padding"이라고 합니다. 이 방법을 사용하면 모든 문장이 모델의 입력 길이에 맞게 됩니다. 이 방법은 모델 입력의 효율성을 유지하면서, 문장의 일부를 잃지 않고 전체 문장을 처리할 수 있습니다.


이러한 전략들 중 적절한 것을 선택하여 문장의 길이를 모델의 입력 길이에 맞게 조절하여 사용하면 됩니다. 선택한 전략에 따라 모델 성능이 변할 수 있으므로, 여러 방법을 시도해보고 가장 적합한 방법을 찾아내는 것이 중요합니다.


다양한 아이디어들은 아래에서도 확인 가능합니다.

https://stackoverflow.com/questions/58636587/how-to-use-bert-for-long-text-classification


댓글 없음:

댓글 쓰기