# GAI 2024 Project 2.B Report 資訊114 F74106026 李星辰 [Project Requirements](https://hackmd.io/@w-cKMxhqRAGOleYimY6D3Q/ryYZBxgyA) [Jupyter Notebook](https://github.com/xing5740/GenerativeAIPractice/blob/main/generativeAI_Project2B.ipynb) ## Model T5 and GPT2 model is used in this project 以下為2個model的比較: ### 目標 T5主要目標是**有指定任務的text-to-text轉換**,希望模型能夠廣泛應用於不同領域 text-to-text指的是輸入和輸出都是文字,相對於輸入和輸出都是數字序列的seq-to-seq,如同下圖所示,在輸入之前開頭會有任務的名稱,告訴模型所要進行的任務  來源: [T5論文](https://arxiv.org/pdf/1910.10683.pdf) GPT2的主要目標是透過非監督式學習,讓模型能夠廣泛地應用於自然語言處理的領域,處理各種複雜任務 除此之外,GPT2論文還有一段描述如下: > GPT-2 is trained with a simple objective: predict the next word, given all of the previous words within some text 也就是說GPT2的長處在於**對輸入的文本進行生成** ### 模型架構 T5: 完整的Transfomer (Encoder + Decoder) GPT2: 基於Transformer的Decoder,將多個Decoder堆疊起來  來源:[The Illustrated Transformer](https://jalammar.github.io/illustrated-gpt2/) 兩個模型皆有使用: 1. masked self-attention 在輸出時只能看到當前位置之前的資料,就像人在說話時通常是前後文相關,這個機制讓模型可以透過過去的資訊,推論後面可能會出現的字,而不會受到未來的資訊干擾 2. autoregression 以之前的輸出作為輸入的一部分,讓生成內容的語意可以更為連貫,從而提升生成內容的品質 ### Pre-train T5: C4 (Colossal Clean Crawled Corpus)資料集,約750GB GPT2: WebText資料集,約40GB 兩者皆是透過網路爬蟲擷取大量資料,尤其T5在模型架構上沒有特別的改善,但是用了數量極為龐大的的資料去進行預訓練,最終達到相當好的成效 ## Dataset ### Load Data 利用torch.utils.data中的Dataset和Dataloader進行資料讀取 由於原資料中的data數量龐大(約2.6M),全部使用的話會花費許多時間與資源,所以我只取20000筆訓練資料與10000筆驗證資料,未使用測驗資料 由於本次project目標是進行文本摘要,所以我在資料前都加上`"文本摘要:"`的字串   #### get_tensor() get_tensor的函式在T5與GPT2當中不一樣,因為GPT2需要attention mask作為輸入參數,所以我更改了get_tensor函式,讓他可以返回input, attention mask, output三項 for T5  for GPT2  ### Tokenizer 我使用的是bert-base-chinese 因為T5原本的tokenizer在中文轉換上有問題,所以選了一個為中文設計的tokenizer  GPT2的tokenizer中需要額外加入特殊token  ## Train 兩個模型的訓練流程大致相同 - 總共會訓練`epochs`個epoch - tqdm用以可視化,顯示進度條與loss值 - 迴圈內的操作: 1. 用`optimizer.zero_grad()`清空gradient 2. 將input放入model並計算loss 3. 用`loss.backward()`將loss回傳求gradient 4. 用`optimizer.step()`以gradient descent進行參數更新 其中optimzer使用AdamW T5  GPT2  我選擇的LMHead比起原本的GPT2會輸出更多內容,比如hidden state, loss, logits等等,更便於進行模型訓練 需要注意的是LMHead在訓練時需要放入attention_mask的參數 生成結果: T5  GPT2  兩者的結果都不盡理想,其中可以看到T5生成的結果相比之下較接近summarization,GPT2只是把讀到的文本再輸出而已 推測可能是因為訓練的資料還不夠多,導致fine tune失敗 ## Evaluation 使用ROUGE作為model evaluation T5  GPT2 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up