2024-06-30|閱讀時間 ‧ 約 25 分鐘

GM 002|如何使用GReaT class進行表格數據生成?

今天我們繼續聊聊由 Vadim Borisov[1]於2023年發表的文章,


《Language Models are Realistic Tabular Data Generators》[2]。


今天我將帶你看看GReaT作為「物件導向編程 Objective-Oriented Programming」的「類別 Class」會是如何。


首先,GReaT class 會處理整個表格數據生成的工作流[3]。


GReaT class 的主要功能,就是對大語言模型,根據「表格數據 Tabular Data」進行「微調 Fine-Tune」,以利產生「合成表格數據 Synthetic Tabular Data」。


而這個類別具體有11個「屬性 Attributes」:


01 `llm (str)` : 從HuggingFace[4]上拿「預訓練大語言模型 Pretrained Large Language Model」的「檢查點 Checkpoint」[5]


02 `tokenizer (AutoTokenizer)`:「符元器 Tokenizer」,可以從大語言模型檢查點自動下載


03 `model (AutoModelForCausalLM)`:大語言模型,也是從大語言模型檢查點自動下載


04 `experiment_dir (str)`:儲存訓練檢查點的字典


05 `epochs (int)` : 要微調模型使用的訓練週期次數


06 `batch_size (int)` : 微調模型使用的數據batch大小


07 `train_hyperparameters (dict)` :HuggingFaceLibrary使用,要增加到 TrainingArguments的額外超參數[6]


08 `columns (list)`:表格數據集所有特徵/欄位的列表


09 `num_cols (list)`:表格數據集所有數值特徵/欄位的列表


10 `conditional_col (str)`:在生成表格數據時,可以作為條件的特徵/欄位


11 `conditional_col_dist (dict | list)`:透過`conditional_col` 指定的特徵/欄位的分佈


可以看到01-07的屬性,都是來自大語言模型的。


而08-11的屬性,則是為表格數據所設定。


而對表格數據做「生成式建模 Generative Modeling」標準的挑戰,就是要區分「離散變數 Discrete Variable」與「連續變數 Continuous Variable」。


在我的經驗上,語言模型擅長生成離散變數,但連續變數的分佈語言模型就沒辦法給出很好的結果。


或許這是因為連續變數是一種數學統計模型,而用語言的法則,是很難抓住其精髓的。


很有意思,持續去研究。


Reference

[1] https://uni-tuebingen.de/en/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/data-science-analytics/team/dr-vadim-borisov/

[2] https://arxiv.org/abs/2210.06280

[3] https://github.com/kathrinse/be_great/blob/main/be_great/great.py

[4] https://huggingface.co/

[5] https://huggingface.co/docs/accelerate/usage_guides/checkpoint

[6] https://huggingface.co/docs/transformers/main/en/main_classes/trainer#transformers.TrainingArguments

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.