23. GPT-1 2018, GPT-2 2019 , GPT-3 2020

Mở đầu

Với Transformer, có 2 mô hình nổi tiếng nhất là BERTGPT. Nay ta đi tìm hiểu xem GPT có gì, thay đổi gì qua các phiên bản

Improving Language Understanding by Generative Pre-training (GPT-1 2018)

https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf

GPT là viết tắt của Generative Pre-training của 1 language model trên 1 kho văn bản phân kì (diverse corpus) không được gán nhãn, sử dụng discriminative fine-tuning cho mỗi task đặc thù. Tức thay vì như trước đây, ta giờ dùng task-aware input transformations trong khi fine-tuning để có thay đổi ít nhất cho kiến trúc mô hình. Và được cải thiện dựa trên những SOTA của các task -> 1 mô hình chung nhất xử lí mọi task

Trong NLP, khả năng học từ raw text rất quan trọng để giảm bớt sự phụ thuộc supervised learning.

Vấn đề 1: khan hiếm tài nguyên dữ liệu dán nhãn , hạn chế áp dụng nhiều task. Hơn nữa, chưa chắc việc được biểu diễn theo supervised tốt hơn unsupervised 

Vấn đề 2: việc tận dụng nhiều thông tin word-level từ unlabeled text, có 2 thách thức:

    - Không rõ loại mục tiêu tối ưu hóa nào phù hợp cho việc chuyển giao đến text representations. Với từng task lại có loại phương pháp riêng (language modeling, machine translation. discourse coherence)

    - Không có sự đồng thuận về biểu diễn đã học với target task. Các task-specific changes đến cấu trúc model như intricate learning schemesadding auxiliary learning objectives

-> khó phát triển phương pháp bán giám sát (semi-supervised) cho language processing

=> Cách tiếp cận semi-supervised cho language understanding tasks là sự kết hợp unsupervised pre-training và supervised fine-tuning. 

Mục tiêu là tìm 1 phổ quát thích ứng được 1 loạt các tasks, được đào tạo từ lượng lớn dữ liệu không nhất thiết cùng miền

Ta sử dụng two-stage training procedure:

    - Mô hình hóa unlabeled data để học initial parameters của 1 neural network model

    - Điều chỉnh parameters cho target task bằng supervised objective tương ứng

Sử dụng Transformer làm core vì tính chất long-term memory dependencies in text. Học qua 4 loại language understanding tasks: natural language inference, question answering, semantic similarity và text classification

1. Related work

Semi-supervised learning for NLP: Các phương án sớm nhất được sử dụng cho unlabeled data là word-level và phrase-level, mà được dùng như features cho supervised model. Các năm gần đây, word embeddings, được train từ unlabeled corpus cải thiện đáng kể các tasks. Tuy nhiên, vẫn chủ yếu trong chuyển đổi word-level, trong khi ta cần higher-level semantics

-> Phrase-level hoặc sentence-level embedding,  có thể train bằng unlabeled corpus, được xử dụng để encode text về vector phù hợp cho nhiều tasks khác nhau

Unsupervised pre-training: là 1 case đặc biệt của semi-supervised learning với mục đích là tìm good initialization point thay cho supervised learning objective. Nhiều nghiên cứu chỉ ra rằng, pre-training như 1 regularization scheme cho phép khái quát hóa (generalization) trong deep neural network.

Phương pháp pre-training dùng language modeling objective (LSTM) rồi fine-tuning về target task với supervision có hạn chế về short range. Trong khi transformer networks có range dài hơn. Cách tiếp cận khác là hidden representations từ 1 pre-trained language hoặc machine translation model như auxiliary features khi training supervised model trong target task lại có hạn chế là tạo quá nhiều parameters mới cho 1 target task riêng lẻ

Auxiliary training objectives (đào tạo phụ trợ): là 1 dạng alternative way của semi-supervised learning (ví dụ POS tagging, chunking, named entity recognition, and language modeling để cải thiện semantic role labeling). Tuy nhiên, unsupervised pre-training đã học một số khái cạnh ngôn ngữ liên quan target tasks.

2. Framework

Quá trình training được chia làm 2 stage:

    - Học high-capacity language model trên large corpus của text

    - Fine-tuning stage, thích nghi model với discriminative task với labeled data

2.1 Unsupervised pre-training:

Với U là tập corpus of token, ta cố gắng maximize likelihood L1(U) với tập xác suất P và tập tham số theta (mỗi token chỉ tính dựa vào context vector của chúng -> Masked). Ta làm việc đó dựa vào sử dụng multi-layer Transformer decoder ở đây (n layer nối tiếp (chỉ có 1 input embedding), mỗi layer là multi-headed self-attention operation) theo dạng feedforward artchitect, softmax (activation) chỉ tính ở output cho hidden state cuối (hn) -> ouptut là vector xác suất

2.2 Supervised fine-tuning: 
Ta cần tinh chỉnh parameters đến supervised target task.

Tức ta cộng thêm (có trọng số) likelihood từ classificate

Ta nhắc lại 3 loss tại model Yolov1: loss confidence + loss classificate + loss coordination, với Transformers, ta gom loss coordination vào loss confidence. Vậy nhìn chung, mục đích của ta chỉ để minimize (maximize likelihood) bài toán tổng tuyến tính có trọng số của 3 loss (likelihood) này.

2.3 Task-specific input transformations

Việc xử lí từng task-specific giờ chỉ cần chú ý vào cách tokenization và sử dụng song song architect (mã hóa input tương ứng):

Text entailment: concat premise p và hypothesis h token sequence, ngăn cách bởi <SEP> ($) token

Similarity: Vì không có thứ tự giữa 2 sentences. Vậy ta chỉnh thành so sánh tất cả các thứ tự khả thi independent (song song) rồi lấy linear output layer

Question Answering and Commonsense Reasoning: ta có context document z, question q, và tập answers {ak}. Ta concat thành [z;q;<SEP>;ak] như 1 sequence input xử lí song song (independent) sau đó normalized và softmax layer

3. Experiments

3.1. Setup

Unsupervised pre-training: BooksCorpus dataset chứa 7000 sách hoặc alternative dataset 1B Word Benchmark (ELMo) -> model ổn với sentence level -destroying long-range structure (tiến tới word-level dictionary semantic: thực sự hiểu nghĩa từ như xây dựng ngôn ngữ thật)

ELMo mắc lỗi sơ đẳng là shuffle ở mức câu với dataset book, làm mất đi tính phụ thuộc của long-range, vì với sách nó gần như liền mạnh từ đầu tới cuối, nhất là trong cùng 1 chương. Với GPT họ giữ nguyên nên họ đạt very low token level perplexity (pp càng thấp càng tốt)

Model specifications

    - 12-layer decoder-only transformer with masked self-attention head (768 dimension states, 12 attention heads)

    - Position-wise feed-forward networks: 3072-dimensional inner states

    - Adam optimization, max learning rate = 2.5e-4 (increased from 0 to 2000 and annealed to 0 by cosine schedule)

    - 100 epochs minibatches of 64 randomly sampled, contiguous sequences of 512 tokens

    - Layer Norm: N(0,0.02)

    - bytepair encoding (BPE) vocabulary 40000 merges, 0.1 rate regulazitation (residual, embedding, attention dropout)

    - L2 regularization : w = 0.01 trên mọi bias hoặc gain weights.

    - Activation function: Gaussian Error Linear Unit (GELU)

    - learned position embeddings thay vì sinusoidal version

    - fifty library cho raw text trong BooksCorpus, standardize punctuation và whitespace, dùng spaCy tokenizer

Fine-tuning details: Giữ lại của unsupervised pre-training, chỉ thay đổi 1 ít. Dropout for classifier: 0.1. Learning rate 6.25e-5, batchsize 32.Thường finetunes nhanh nên 3 epochs training. Linear learning rate decay với 0.2% training, lambda = 0.5

Language Models are Unsupervised Multitask Learners (GPT-2 2019)

Cải tiến chủ yêu của GPT-2 là sử dụng dataset lớn hơn, mô hình nhiều tham số hơn. Thường hàm mục tiêu là dạng P(output|input) nhưng ở GPT-2 là P(output|input, task) (task conditioning) -> Output khác nhau với các nhiệm vụ khác nhau từ cùng một input

Số tham số: 117m (giống GPT-1) , 345m -> 762m -> 1.5B (GPT-2)

Mục đích: xây dựng general system có thể làm nhiều tasks, kể cả không cần thường xuyên tạo hay label 1 raning dataset cho mỗi task

Byte Pair Encoding (BPE) + Bloom filters + n_gram

Approach

Ta có tập examples (x1, x2, ..., xn) và variable lenghth sequences of sympbols (s1, s2, ..., sn)

Input Representation

Với 1 language model (LM) với tập dữ liệu càng lớn, ta cần 1 cách embedding thích hợp, nhất là khi xuất hiện của out-of-vocabulary, byte-level (UTF-8) được nghiên cứu nhưng không cạnh tranh được word-level trong LMs on large datasets (1 billion word benchmark)

Byte Pair Encoding (BPE) là 1 cầu nối giữa character và word level language modeling mà có hiệu quả nội suy giữa word level inputs cho các chuỗi kí tự thường xuyên và character level inputs cho các chuỗi kí tự không thường xuyên. BPR hoạt động trên mã Unicode chứ không phả byte sequences -> mô hình hóa mọi Unicode strings (base-vocabulary 130000). Điều này làm giới hạn vocabulary, vì vậy đê tránh được, ta ngăn BPE hợp nhất các danh mục kí tự cho bất kì chuỗi byte. Ta thêm 1 ngoại lệ cho spaces giúp cải thiện hiệu quả nén khi chỉ thêm minimal fragmentation từ nhiều multiple vocab tokens

-> Cho phép ta kết hợp lợi ích từ word-level LMS với tính tổng quát của byte-level. Vì vậy có thể gán xác xuất cho bất kì dãy Unicode nào

=> Có thể làm simple math

Model

Transformer cho LMs. Layer Norm (normalizaion) đặt tại đầu vào mỗi sub-block, vai trò như 1 pre-activation RNN và thêm 1 layer norm sau final self-attention block. 1 chút sửa đổi, residual path được dùng với model depth. Tỉ lệ trọn số của các lớp còn lại là 1/sqrt(N) (N là số residual layers).Vocabulary tăng lên 50257, context size từ 512 lên 1024 tokens và larger batchsize 512

Language Modeling

Ta train với tập WebText. Nghiên cứu thêm task nữa về zero-shot. Từ khi hoạt động với byte-level thì giải quyết vấn đề mất dữ liệu và đa ngôn ngữ. Kết quả trên LM dataset thường là tỉ lệ hoặc lũy thừa của xác xuất trung bình âm (average negative log probability) của 1 đơn vị dự đoán chính tắc (canonical prediction unit) - character, byte hoặc word

Generalization vs Memorization

Để học task này, ta tạo Bloom filters chứa 8-grams của WebText training set tokens. Strings được normalized về lower-cased alphanumeric vứi 1 space như delimiter. Bloom filter được xây dựng sao cho tỉ lệ false positive cao hơn 1/10^8. Verified bằng cách tạo 1M strings, xem 0 có được tìm thấy vởi filter

-> Giúp tính toán

-> Khuyến nghị sử dụng khử trùng(de-duplication) n-gram overlap based như 1 bước xác minh quan trọng và  kiểm tra độ chính xác trong quá trình tạo training và test splits cho các bộ dữ liệu NLP mới.

Bloom Filters
Là cấu trúc dữ liệu xác xuất, được sử dụng rộng rãi trong tìm kiếm và lưu trữ thông tin. Thường xuất hiện trong các mạng Blockchain
Lưu trữ
Gồm 1 mảng m phần tử nhị phân thuộc {0, 1}^m và k hàm băm (hash function) sao cho output là số nguyên thuộc [1, m] (các hash function có nguyên tắc nhất định, cùng 1 input thì ra cùng 1 output)
    - Ban đầu m phần tử đều là 0
    - Thêm 1 bản ghi A vào -> qua hash function k1 -> phần tử tương ứng hàm băm k1 chuyển thành 1.
    - Tương tự đi hết các hash function còn lại
    - Tương tự khi lưu thêm bản ghi B. Nếu có ki(B) chỉ cùng vị trí nào đó đã là 1 thì giữ nguyên số 1
    -> Cấu trúc dữ liệu xác xuất: số bản ghi càng nhiều thì khả năng các phần tử trùng nhau càng tăng nên độ chính xác càng giảm
Tìm kiếm
Để xem bản ghi X có trong bloom filters không, cũng đi qua tương tự rồi so sánh kết quả, nếu các vị trí được chỉ vào có giá trị đều là 1 thì "có lẽ" có, ngược lại nếu có 1 vị trí trỏ vào có giá trị 0 thì chắc chắn không
Trade-off
càng tăng kích thước mảng (m) và số hàm băm (k) thì bloom filters có thể lưu càng nhiều với độ chính xác cao hơn
    - Khi m quá nhỏ -> false positive
    - Khi k quá nhỏ cũng dễ false positive
    - Khi k quá lớn -> chậm (o(k))
Ứng dụng: tìm kiếm nhanh xác định không tồn tại không (SQL, noSQL, Google Bigtable, Apache HBase, Apache Cassandra và Postgresql)
N-gram
Là tần xuất xuất hiện n phần tử liên tiếp trong dữ liệu
Language Models are Few-Shot Learners (GPT-3 2020)

Có đến 175B parameters (hơn 100 lần GPT-2), tập trung vào các NLP tasks (translation, question-answering và cloze tasks)

Thực hiện tốt các task về zero-shot và few-shot. Có thể viết các bài viết dài hoàn hảo đến mức khó phân biệt với con người hoặc thực hiện các task chưa bao giờ được huấn luyện rõ ràng (few-shot learners)

Xu hướng pre-trained language và downstream. Càng ngày càng nhiều model sử dụng pre-trained recurrent hoặc transformer, sau đó trực tiếp fine-tuned, loại bỏ hoàn toàn về nhu cầu kiến trúc cho task-specific

Tuy nhiên, có một hạn chế chung là trong khi các architecture là task-agnostic, vẫn cần đến task-specific datasets và task-specific fine-tuning: để đạt được hiệu suất mạnh mẽ, ta phải tinh chỉnh rất nhiều trên tập dữ liệu các ví dụ cụ thể cho nhiệm vụ đó. Vậy mong muốn hiện tại là loại bỏ giới hạn này:

    - Khó để thu thập 1 tập large supervised training dataset, đặc biệt là phải lặp lại mỗi task mới

    - Tiềm năng khai thác các mối quan hệ giả (spurious correlations) trong training data đồng biến cùng tính cảm ứng (expressiveness) của model và độ hẹp (narrowness) của phân phối đào tạo. Điều này có thể tạo vấn đề đối với pre-training và fine-tuning: khi các models được thiết kế large cho quá trình pre-training, nhưng lại fine-tuned cho task có phân phối rất hẹp. Quan sát thấy rằng các larger models không nhất thiết tổng quát hóa out-of-distribution, cho nên còn tùy vào phân phối mà có thể không tốt với những mô hình bên ngoài nó. Do đó, hiệu suất được tinh chỉnh trên các điểm cụ thể, kể cả human-level, có thể phóng đại hiệu suất với các nhiệm vụ cơ bản (underlying task)

    - Con người (human-level) không yêu cầu large supervised datasets để học hầu hết các nhiệm vụ ngôn ngữ. Nói cách khác, con người có khả năng thích ứng cho phép kêt hợp liền mạch hoặc chuyển đổi giữa các task và skills
-> Meta-learning là tiềm năng giải quyết vấn đề này. Trong ngôn ngữ NLP, có nghĩa là phát triển 1 tập kĩ năng (set of skill) và khả năng nhận dạng (pattern recognition) trong training time, sau đó sử dụng khả năng đó tại thời điểm suy luận (inference time) để nhanh chóng thích ứng hoặc nhận dạng nhiệm vụ. Mà ở đây gọi là "in-context learning", sử dụng text input của 1 pre-trained language model như 1 form của task-specified: model dựa trên hướng dẫn tự nhiên và/hoặc 1 vài minh họa về task và sau đó được kì vọng hoàn thành các trường hợp tiếp theo bằng cách predict cái gì tiếp theo

Đối với parameter lớn, hầu như ô nhiễm dữ liệu (data contamination) không ảnh hưởng nhiều.

Ngoài ra, khi thử nghiệm với những model nhỏ hơn, cho thấy rằng hiệu suất tỉ lệ thuận với dung lượng mô hình, nên mô hình lớn hay meta-learners có tiềm năng hơn

Approach
Hầu như architect tương đồng với GPT-2. Cho nên ta chỉ phân tích những điểm khác nhau:

    - Fine-tuning FT: updating weights of pre-trained model bằng cách training với supervised dataset specific với task chỉ định. Lợi ích chính của fine-tuning là strong performance trên nhiều benchmarks. Hạn chế chính là cần tập larger dataset mới cho mọi task, tập trung vào kém tổng quát hóa (poor generalization out-of-distribution) và khả năng khai thác tính năng giả (spurious features) của training data, có khả năng dẫn đến so sánh không công bằng với hiệu suất con người, -> không tinh chỉnh GPT-3 vì hướng về task-agnostic, về nguyên tắc thì đây là mục đích cho tương lai

    - Few-Shot FS: model chỉ được cho một ít demonstrations của task tại inference time như điều kiện, nhưng không weight nào được cho phép updates. Ta đặt K (số examples) trong khoảng [10,100] vì model's context window (nctx = 2048). Lợi ích chính của few-shot là giảm lượng lớn yêu cầu cho task-specific data và giảm phân phối quá hẹp từ fine-tuning dataset. Hạn chế chính là kết quả vẫn còn khá tệ so với SOTA models. Dù vậy, một lượng nhỏ task specific data vẫn được yêu cầu -> Hay áp dụng cho các sự phân bố rộng rãi các nhiệm vụ (tức pre-training data) và nhanh chóng thích ứng task mới

    - One-Shot 1S: giống few-shot nhưng chỉ 1 demonstrations. Lí do phân biệt 1S với FS và 0S là nó phù hợp nhất với một vài task  về giao tiếp với con người (ví dụ tọa tập dataset dựa trên human worker service). Ngược lại, đôi khi khó giao tiếp bằng nội dung hoặc định dạng nếu không có ví dụ nào được đưa ra

    - Zero-shot 0S: không có demonstrations nào được đưa ra, chỉ có 1 cấu trúc natural language miêu tả task.  Cung cấp thuận tiện tối đa và tiềm năng mạnh mẽ, tránh được quan hệ giả (spurious correlations) (trừ khi xảy ra quá thường xuyên trong corpus of pre-training data), nhưng cũng là thách thức lớn nhất. Một số trường hợp còn khó cho con người để hiểu task mà không có ví dụ, nên gọi là "unfair hard" (ví dụ các mô tả task không rõ ràng). Tuy nhiên, cho 1 số 0S gần nhất với cách con người thực hiện task (ví dụ dịch thuật), con người biết phải làm gì chỉ từ text instruction
mọi model đều có nctx = 2048 tokens, dmodel là số units mỗi bottleneck layer (reduce dimension layer) (luôn có FF layer là 4 lần size của bottleneck layer: dff = 4* dmodel), dhead dimension of each attention head

Q: các attention cũ dùng masked 1 chiều để tránh việc 1 token lấy tỉ trọng chính nó
bert thay bằng attention 2 chiều nhưng mask input, t5 cũng tiếp thu và phát triển cái này. Gpt lại dùng lại masked 1 chiều. Vậy ý tưởng nào tốt hơn?
A: bart tốt nhất cover nhiều biến thể, bert tốt, gpt là hack (dùng ok). Với LLM thì GPT là lựa chọn hàng đầu, vì mô hình đơn giản (giảm lượng tính toán) + khả năng sinh
GPT convert bài toán con thành chuỗi left to right token (a.k.a prompt engineering), để fill in the middle (BERT là fill in mask) nó bẻ text từ prefix + middle + suffix thành prefix + suffix + middle hoặc suffix + prefix + middle. Và thế là GPT có thể predict middle given prefix & suffix. A clever hack. Điều hấp dẫn là trộn đc nhiều cách bẻ dữ liệu trong huấn luyện mà không làm giảm hiệu năng mô hình. 
WE SHOULD THINK SIMPLE & THINK OUT OF THE BOX.

Traning Dataset
GPT-3 được train với cỡ 45TB dataset trước filtering và 570GB sau filtering, khoảng cỡ 400B byte-pair-encoded tokens
=> Việc lọc cực kì khắt khe (dùng chưa đến 2%) và cũng đặt biệt quan trọng, nhất là đối với phân phối data
Các dataset cực lớn nhưng không được chỉnh sửa. Các phiên bản chưa lọc hoặc lọc nhẹ có xu hướng chất lượng thấp hơn so với các bộ dữ liệu được quản lí nhiều. Cho nên ta cần 3 bước để cải thiện dataset:
    - Download và lọc CommonCrawl dựa trên sự tương đồng vơi 1 loại corpora chất lượng kao
    - Sao chép mờ (fuzzy deduplication) ở document-level, để tránh dư thừa và duy trì tính toàn vẹn của tập hợp đã bỏ validation, coi nó như 1 thước đo cho overfitting
    - Đồng thời thêm known high-quality corpora để mix training với CommonCrawl và tăng tính diversity (phân kì)
Larger model có thể dùng larger batch size, nhưng yêu cầu smaller learning rate


Evaluation
Cho few-shot learning, ta rút ra K ví dụ ngẫu nhiên từ task's training set như conditioning (labeled), phân đinh bởi 1 hoặc 2 lines tùy vào task (K  có thể từ 0 đến maximum quy định bởi model's context window, với nctx = 2048, với mọi models nên chọn K thuộc [10,100]). Giá trị K lớn cũng thường được dùng nhưng không phải lúc nào cũng tốt hơn. Vì vậy khi 1 development và test set có sẵn, ta thí nghiệm với 1 vài giá trị K trên development set và chọn best value để thử test set. Với 1 vài nhiệm vụ, ta cung xử dụng prompt bên cạnh demonstration (hoặc thay vì thế cho K=0)
    - Với các task liên quan multiple choice, ta lấy K example của context only, và so sánh với LM likelihood của mỗi completion. Với hầu hết task, ta so sánh pre-token likelihood (normalize length), nhưng với small datasets, ta có lợi ích thêm khi đo trên development set bằng cách normalizing bằng unconditional probability của mỗi completion
answer_context là string "Answer: ..." hoặc "A: ..." dùng để prompt completion nên là 1 câu trả lời
    - Với các task binary classification, ta dùng như multiple choice ("True" - "False"), ta cũng hay xem các task similar như GPT-2 đã làm
    - Với task free-form completion, ta dùng beam search giống GPT-2 (width = 4, length penalty của alpha = 0.6. Score bằng F1 similarity score, BLUE, hoặc exact match, tùy vào dataset)
Result
Hầu như GPT-3 đã được train rất nhiều, cộng với việc có số lượng parameter quá nhiều nên cái được đưa ra đánh giá là few-shot FS, one-shot 1S và zero-shot 0S, chứ không bàn với việc train với đầy đủ data nữa, GPT-3 không được xây dựng vì điều đó
Với bộ dataset có 93% english, 7% ngôn ngữ khác, với task dịch:


Winograd Schemas Challenge: xác định đại từ đề cập đến cái gì, khi đại từ mơ hồ về mặt ngữ pháp nhưng rõ ràng về mặt ngữ nghĩa đối với con người. Gần đây, các LMs đã đạt hiệu suất gần con người 
GPT-3 có vẻ yếu (FS và 1S) trong vài task liên quan đến so sánh 2 câu hoặc đoạn trích, chẳng hạn như 1 từ có được dùng cùng 1 nghĩa ở 2 câu (WiC), hay 1 câu có phải cách diễn giải khác của câu khác
NLI Natural Language Inference: thường biên dịch thành 2 hoặc 3 class trong classification. Mục tiêu là hiểu quan hệ giữa 2 câu
Cho thấy đây vẫn là 1 task khó
Arithmetric: toán
GPT-3 giỏi văn dốt toán? Hay khoa học chứng minh toán khó hơn văn?
Word Scrambling and Manipulation Tasks: các task liên quan sắp xếp lại chữ cái thành từ có nghĩa
    - Cycle letters in word (CL): xoay thứ tự các chữ cái theo hình tròn (inevitably -> lyinevitab)
    - Anagrams of all but first and last characters (A1): xáo trộn các chữ cái trừ chữ cái đầu và chữ cái cuối (corruption -> criroptuon)
    - Anagrams of all but first and last 2 characters (A2): xáo trộn các chữ cái trừ 2 chữ cái đầu và 2 chữ cái cuối (opponent -> opoepnnt)
    - Random insertion in word (RI) chèn dấu câu ngẫu nhiên hoặc kí tự trắng giữa các chữ cái (succession -> s.u!c/c!e.s s i/o/n)
    - Reversed words (RW) viết ngược từ (objects -> stcejbo)
BPE Encoding hoạt động dựa trên các phân số quan trọng (significant factor) ảu 1 từ (khoảng 0.7 words/token). Do đó, theo quan điểm LMs, các task này không chỉ liên quan đến thao túng BPE tokens mà còn hiểu và tách rời các cấu trúc con. Đồng thời, CL, A1, A2 không phải song ánh (bijective) -> không verified 2 chiều được -> Yêu cầu tìm kiếm chính xác, các kĩ năng liên quan như khớp mẫu và tính toán không tầm thường (non-trivial pattern-matching and computation)
Measuring and Preventing Memorization Of Benchmarks (Overlap data)
Khi lấy nguồn data từ Internet, có khả năng model đã được trained trên một vài benchmark test set. Phát hiện ô nhiễm  (test contaminaton) trên internet-scale datasets là 1 hướng nghiên cứu mới. Với quy mô ngày càng tăng của pretraining datasets, vấn đề này ngày càng nghiêm trọng. Trong GPT-2 cũng đã có post-hoc overlap analysis. Mặc dù model cho kết quả tốt hơn trên overlapped data nhưng lại không tác động kết quả do ô nhiễm (thường chỉ vài phần trăm)
Do GPT-3 có 175B, số parameters đủ lớn, nên có thể tác động của ô nhiễm không lớn
Ta dùng 13-gram để loại bỏ overlap
=> Có khi có ô nhiễm lại tốt hơn



Limitations
    - Repeat semantically (lặp ngữ nghĩa) tại document-level (mất mạch lạc tại đoạn văn dài, tự mâu thuẫn, hoặc không theo trình tự)
   - Khó khăn trong hiểu biết toán, vật lí và khoa học ...
   - Tập trung vào học tập trong hồi quy ngôn ngữ (in-context learning behavior on autoregressive language
   - Không có 2 chiều (bidirectional architectures) hoặc training object khác như denoising, khác với các hướng đi gần đây về fine-tuning -> Do đó thiết kế này phải trả giá bằng hiệu suất so với 2 chiều (thường liên quan các task fill-in-the-blank, looking back, so sánh 2 phần hoặc summarize)
    -> Phát triển mô hình 2 chiều thành scale như GPT-3 cho few-shot hoặc zero-shot là 1 hướng đầy hứa hẹn
  - Kể cả autoregressive hay bidirectional đều trở về hạn chế của pretrainig objective: 
        + Coi mọi token như nhau -> Không biết điều gì quan trọng nhất với task và những gì ít quan trọng hơn.
        + Với Self-supervised objectives, task buộc phải miêu tả theo một prediction problem, trong khi các language systems (ví dụ trợ lí ảo vitural assistants) có thể hướng mục tiêu tốt hơn, hành động thay vì chỉ dự đoán. 
        + Pretrained LMs không có kinh nghiệm cho khác lĩnh vực, như video hay tương tác thực tế (real-world physical interaction), do đó thiếu ngữ cảnh về thế giới.
    -> Việc mở rộng pure self-supervised prediction dường như đạt giới hạn, tăng cường bởi các cách tiếp cận khác là cần thiết.
    -> Các hướng đi hứa hẹn để cung cấp nền tảng và mô hình tốt hơn về thế giới: learning the objective function from humans; fine-tuning with reinforcement learning; adding additional modalities như images 
  - Poor sample efficiency during pre-training
  - Mơ hồ rằng few-shot learning có thật sự học tasks mới "from scratch" tại inference time hay nó chỉ đơn giản recognize và identifi tasks đã học trong training -> Cùng nhiệm vụ nhưng khác định dạng (different format) -> Khả năng thay đổi nhiệm vụ liên tục 
  - Các task về wordscrambling hay defining nonsense word cần được thiết kế riêng vì test data khác cách thiết kế. Và cũng không rõ ràng humans học từ scratch hay từ prior demonstration -> Cần hiểu chính xác cách few-shot hoạt động
  - Scale lớn như GPT-3 khá tốn kém và bất tiện trong biểu diễn inference, nhưng chưa được thử nghiệm cắt giảm nhỏ lại ứng từng task với độ lớn hàng tỉ tham số
  - Hạn chế của các deep learning: quyết định không dễ hiểu
  -  Những bias trong dữ liệu khiến model rập khuôn, định kiến
Appendix
Details of Common Crawl Filtering
1. Filtering Common Crawl
Classifier low-quality/high-quality bằng logistic regression với feature từ Spark's standard tokenizer và HashingTF. Giữ lại nếu:
2. Fuzzy deduplication
Tức xóa documents high overlap với documents khác. Ta dùng Spark's MinHashLSH cới 10 hashes, cùng features với classification trên. Thường giảm 10% dataset
Sau 2 bước trên, ta còn xóa text trong benchmark datasets
Details of Model Traning
Details of Test Set Contamination Studies
Initial training set filtering
GPT-3 dùng n-grams để lọc dữ liệu trùng (cụ thể là 13-grams) thay vì Bloom filter tại GPT-2
Total Compute Used to Train Language Models

Nhận xét