今天我們繼續聊聊由 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