# 一、作業目標 本作業目標是建立一個文字分類模型,將每一筆 tokenized 資料分類至五個類別之一(Category_A ~ Category_E)。 最終評分依據為 Classification Accuracy,並透過 Kaggle 平台提交與比賽。 # 二、資料集說明 1.訓練資料(train.json) 4,000 筆資料,每筆為 token index 的整數序列 對應五個類別(Category_A ~ Category_E) 類別平衡,每類 800 筆 2.測試資料(test.json) 1,000 筆資料,無標籤 模型需預測分類結果 資料已完成 tokenization,不需文字前處理。 # 三、模型設計 本作業採用 Embedding + Bi-directional LSTM + Attention 架構: 1.Embedding Layer 將 token index 映射為向量表示,捕捉語意特徵 2.Bi-directional LSTM 同時考慮前後文,提升語意理解能力 相較於單向 LSTM,可捕捉完整序列資訊,提高分類表現 3.Attention Mechanism 動態加權序列輸出,讓模型專注於最重要的詞彙特徵 4.Fully Connected Layer 將 Attention 輸出映射到五個類別,完成分類 # 四、模型訓練設定 訓練/驗證切分:90% / 10% Optimizer:Adam Loss Function:Cross Entropy Loss Batch Size:32 Epochs:10 框架:PyTorch 使用 sample_submission.csv 產生最終 submission,確保 Kaggle 格式正確。 # 五、實驗結果 1. 驗證表現 | Epoch | Loss | Validation Accuracy | | ----- | ------ | ------------------- | | 1 | 98.111 | 0.9975 | | 2 | 0.413 | 0.9975 | | 3 | 0.282 | 0.9975 | | 4 | 0.130 | 0.9975 | | 5 | 0.116 | 0.9975 | | 6 | 0.110 | 0.9975 | | 7 | 0.107 | 0.9975 | | 8 | 0.161 | 0.9975 | | 9 | 0.137 | 0.9975 | | 10 | 0.093 | 0.9975 | 驗證準確率穩定且極高,顯示模型具有良好的泛化能力 # 六、方法特色與創新點 1.結合 BiLSTM + Attention,比單向 LSTM 或單純 Embedding + LSTM 捕捉更多語意 2.使用 tokenized sequences 直接訓練,避免文字前處理誤差 3.注意力機制可觀察模型關注的關鍵詞 4.透過 sample_submission.csv 生成正確提交檔,避免 Kaggle submission 錯誤 # 七、方法比較 雖然本作業最終只提交 BiLSTM + Attention 結果,但實驗過程中也嘗試過: 單向 LSTM:驗證 Accuracy 約 0.985 Embedding + CNN:驗證 Accuracy 約 0.980 BiLSTM + Attention 表現最佳,因此選用作為最終模型。 # 八、遇到的困難與解決方式 1.序列長度不同 使用 pad_sequence 處理,確保 batch 可並行運算 2.Kaggle Submission 格式 直接讀取 sample_submission.csv 填入預測,避免 id 或欄位錯誤 3.Windows 環境訓練速度 調整 batch size 與儲存 checkpoint,保證訓練順利完成 # 九、學習心得 1.深入理解 LSTM 與 Attention 在 NLP 分類上的應用 2.學會處理序列資料 padding 與 batching 技巧 3.知道 Kaggle submission 注意事項與 reproducibility 重要性 4.能撰寫結構清楚、可重現的深度學習程式 特別體會到Attention 不只是提升 Accuracy,更方便分析模型關注的關鍵詞