바이트 쌍 인코딩
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
두 번 이상 발생하는 바이트 쌍이 없으므로 바이트 쌍 인코딩을 통해 이 데이터를 더 이상 압축할 수 없습니다.
데이터를 압축 해제하려면 단순히 반대 순서로 교체를 수행합니다.
참고 항목
참고문헌
- ^ Gage, Philip (1994). "A New Algorithm for Data Compression". The C User Journal.
- ^ "A New Algorithm for Data Compression". Dr. Dobb's Journal. 1 February 1994. Retrieved 10 August 2020.
- ^ Witten, Ian H.; Moffat, Alistair; Bell, Timothy C. (1994). Managing Gigabytes. New York: Van Nostrand Reinhold. ISBN 978-0-442-01863-4.
- ^ "Byte Pair Encoding". Archived from the original on 2016-03-26.
- ^ 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].
- ^ "google/sentencepiece". Google. 2021-03-02. Retrieved 2021-03-02.
- ^ 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.