바이트 쌍 인코딩

Byte pair encoding

바이트 쌍[1][2] 인코딩(digram [3]coding)은 1994년 필립 [4]게이지에 의해 처음 기술된 알고리즘입니다.단일 문자(단자리 또는 단일 구두점 표시 포함)를 인코딩하는 토큰과 전체 단어(심지어 가장 긴 합성어)[5][6]를 인코딩하는 토큰을 모두 결합할 수 있는 기능을 갖춘 대형 언어 모델 토큰라이저로 수정된 것이 눈에 띕니다.이 수정은 첫 번째 단계에서 모든 고유 문자를 1자 길이의 n그램(즉, 초기 "토큰")의 초기 집합으로 가정합니다.그런 다음 인접한 문자의 가장 빈번한 쌍이 연속적으로 새로운 2자 길이의 n-그램으로 병합되고 쌍의 모든 인스턴스가 이 새로운 토큰으로 대체됩니다.이것은 규정된 크기의 어휘를 얻을 때까지 반복됩니다.새로운 단어는 항상 최종 어휘 토큰과 초기 설정 [7]문자로 구성할 수 있습니다.

말뭉치에서 발견되는 모든 고유한 토큰은 토큰 어휘에 나열되며, GPT-3의 경우 크기는 50257입니다.

수정된 알고리즘과 원래 알고리즘의 차이점은 원래 알고리즘이 가장 빈번한 바이트 의 데이터를 병합하지 않고 초기 데이터 집합에 포함되지 않은 새로운 바이트로 대체한다는 것입니다.초기 데이터셋을 재구성하려면 대체 데이터셋에 대한 조회 테이블이 필요합니다.알고리즘은 큰 계산 오버헤드가 필요하지 않고 일관성과 신뢰성을 유지하기 때문에 토큰화에 효과적입니다.

원래 알고리즘은

원래 알고리즘은 대상 텍스트에서 가장 일반적인 연속된 문자 시퀀스를 사용되지 않는 'placeholder' 바이트로 반복적으로 바꿉니다.시퀀스를 찾을 수 없을 때 반복이 종료되어 대상 텍스트가 효과적으로 압축된 상태로 유지됩니다.압축 해제는 룩업 테이블에 따라 이 프로세스를 반대로 수행하여 알려진 자리 표시자 용어를 해당 표시된 시퀀스와 비교하여 쿼리할 수 있습니다.원본 논문에서 이 룩업 테이블은 압축된 텍스트와 함께 인코딩되어 저장됩니다.

인코딩할 데이터가 다음과 같다고 가정합니다.

아압다아박

바이트 쌍 "aa"는 가장 자주 발생하므로 "Z"와 같이 데이터에 사용되지 않는 바이트로 대체됩니다.이제 다음과 같은 데이터와 교체 테이블이 있습니다.

ZabdZabac Z=aa

그런 다음 바이트 쌍 "ab"로 프로세스를 반복하고 "Y"로 대체합니다.

ZZYAC Y=ab Z=aa

남은 유일한 리터럴 바이트 쌍은 한 번만 발생하며, 인코딩은 여기서 중단될 수 있습니다.또는 프로세스는 재귀 바이트 쌍 인코딩으로 계속 진행할 수 있으며, "ZY"를 "X"로 대체할 수도 있습니다.

XdXac X=ZY Y=ab Z=aa

두 번 이상 발생하는 바이트 쌍이 없으므로 바이트 쌍 인코딩을 통해 이 데이터를 더 이상 압축할 수 없습니다.

데이터를 압축 해제하려면 단순히 반대 순서로 교체를 수행합니다.

참고 항목

참고문헌

  1. ^ Gage, Philip (1994). "A New Algorithm for Data Compression". The C User Journal.
  2. ^ "A New Algorithm for Data Compression". Dr. Dobb's Journal. 1 February 1994. Retrieved 10 August 2020.
  3. ^ Witten, Ian H.; Moffat, Alistair; Bell, Timothy C. (1994). Managing Gigabytes. New York: Van Nostrand Reinhold. ISBN 978-0-442-01863-4.
  4. ^ "Byte Pair Encoding". Archived from the original on 2016-03-26.
  5. ^ Brown, Tom B.; Mann, Benjamin; Ryde r, Nick; Subbiah, Melanie; Kaplan, Jared; Dhariwal, Prafulla; Neelakantan, Arvind; Shyam, Pranav; Sastry, Girish; Askell, Amanda; Agarwal, Sandhini (2020-06-04). "Language Models are Few-Shot Learners". arXiv:2005.14165 [cs.CL].
  6. ^ "google/sentencepiece". Google. 2021-03-02. Retrieved 2021-03-02.
  7. ^ Paaß, Gerhard; Giesselbach, Sven (2022). "Pre-trained Language Models". Foundation Models for Natural Language Processing. Artificial Intelligence: Foundations, Theory, and Algorithms. pp. 19–78. doi:10.1007/978-3-031-23190-2_2. ISBN 9783031231902. Retrieved 3 August 2023.