Chọn độ hạt: chia nhỏ tới đâu thì dừng lại?

Chọn độ hạt: chia nhỏ tới đâu thì dừng lại? A workflow diagram generated by Archify. 01 / Độ hạt, từ đơn vị lớn đến đơn vị nhỏ EX / Cái giá ở hai đầu Đơn vị lớn Vùng cân bằng Đơn vị nhỏ Word-level · tách theo khoảng trắng · Độ hạt, từ đơn vị lớn đến đơn vị nhỏ › Đơn vị lớn · sequence ngắn Word-level tách theo khoảng trắng sequence ngắn Subword · BPE · WordPiece · Unigram · Độ hạt, từ đơn vị lớn đến đơn vị nhỏ › Vùng cân bằng · lựa chọn thực dụng Subword BPE · WordPiece · Unigram lựa chọn thực dụng Character-level · từng ký tự Unicode · Độ hạt, từ đơn vị lớn đến đơn vị nhỏ › Vùng cân bằng Character-level từng ký tự Unicode Byte-level · 256 giá trị UTF-8 · Độ hạt, từ đơn vị lớn đến đơn vị nhỏ › Đơn vị nhỏ · gần như hết OOV Byte-level 256 giá trị UTF-8 gần như hết OOV Vocabulary nổ + OOV · từ lạ bị nén thành <UNK> · Cái giá ở hai đầu › Đơn vị lớn Vocabulary nổ + OOV từ lạ bị nén thành <UNK> Sequence dài ra · attention pairwise tốn theo n² · Cái giá ở hai đầu › Đơn vị nhỏ Sequence dài ra attention pairwise tốn theo n² chia nhỏ hơn chia nhỏ hơn chia nhỏ hơn nên lùi về subword cũng lùi về subword gặp từ chưa thấy văn bản đa byte Legend Agent logic Context / trace External system

Vì sao subword thắng trong thực tế

  • • Chuỗi hay gặp được giữ nguyên thành một token lớn
  • • Chuỗi hiếm vẫn biểu diễn được bằng các mảnh nhỏ hơn
  • • Vocabulary hữu hạn phủ được một không gian từ gần như mở

Hai đại lượng luôn kéo ngược nhau

  • • Đơn vị càng lớn thì vocabulary càng phình và OOV càng dễ xảy ra
  • • Đơn vị càng nhỏ thì sequence càng dài và chi phí attention càng tăng
  • • Không có mức nào đúng tuyệt đối, chỉ có mức phù hợp với dữ liệu

Đừng nhầm coverage với hiệu quả

  • • Byte-level encode được mọi chuỗi, nhưng không hứa cắt tốt
  • • Một ngôn ngữ vẫn có thể bị phân mảnh nặng dù luôn encode được
  • • Subword không đảm bảo mỗi mảnh là một morpheme đúng