# Transfer_Learning **Repository Path**: flylzz/Transfer_Learning ## Basic Information - **Project Name**: Transfer_Learning - **Description**: 基于 BERT 与 BiLSTM 的中文评论情感分类,对比冻结/全参数微调策略,集成 AMP 混合精度、TensorBoard 可视化与分层学习率。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-27 - **Last Updated**: 2026-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 中文文本情感分类 — 基于 BERT 的迁移学习项目 基于 BERT 和 BiLSTM 的中文商品评论情感二分类(好评/差评),对比冻结微调、全参数微调和轻量级基线模型的效果差异。 ## 技术栈 `PyTorch` `Transformers` `HuggingFace Datasets` `TensorBoard` `AMP 混合精度` ## 项目结构 ``` Transfer_Learning/ ├── config/ # 配置文件 │ └── default.yaml # 默认配置(YAML 驱动,CLI 可覆盖) ├── data/ # 数据集(train/valid/test.csv) ├── model/ # 预训练模型(bert-base-chinese,gitignore) ├── models/ # 模型定义 │ ├── classifier.py # BERT + 线性分类头 │ └── bilstm.py # BiLSTM + Attention ├── trainers/ # 训练 & 评估逻辑 │ ├── trainer.py # 通用训练器(含 AMP、早停、分层学习率) │ └── evaluator.py # 评估器(含混淆矩阵) ├── utils/ # 工具模块 │ ├── config.py # 配置管理(yaml + argparse) │ ├── data_utils.py # 数据加载 & 预处理 │ └── logger.py # TensorBoard 日志(scalar/confusion matrix) ├── scripts/ # 入口脚本 │ ├── train.py # 训练入口 │ ├── evaluate.py # 评估入口 │ └── predict.py # 单条/批量推理 ├── checkpoints/ # 模型权重(gitignore) ├── logs/ # 训练日志 & TensorBoard 事件(gitignore) ├── requirements.txt └── README.md ``` ## 快速开始 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 下载预训练模型 ```bash # 从 HuggingFace 下载 bert-base-chinese 到 model/ 目录 # 或使用镜像: export HF_ENDPOINT=https://hf-mirror.com python -c "from transformers import BertModel, BertTokenizer; \ BertModel.from_pretrained('bert-base-chinese', cache_dir='./model'); \ BertTokenizer.from_pretrained('bert-base-chinese', cache_dir='./model')" ``` ### 3. 训练 ```bash # BiLSTM 基线 python scripts/train.py --model_type bilstm --epochs 7 --batch_size 64 --device cuda # BERT 冻结微调(只训练分类头) python scripts/train.py --model_type bert --epochs 5 --batch_size 32 --device cuda # BERT 全参数微调(分层学习率) python scripts/train.py --model_type bert --epochs 5 --batch_size 32 \ --device cuda --freeze_bert false --layerwise_lr true ``` ### 4. 评估 ```bash python scripts/evaluate.py --model_type bert --device cuda python scripts/evaluate.py --model_type bilstm --device cuda ``` ### 5. 推理 ```bash # 单条预测 python scripts/predict.py --text "这款产品质量很好,值得购买" # 批量预测 python scripts/predict.py --input_file ./data/test.txt --output_file result.csv # 交互模式 python scripts/predict.py --interactive ``` ## 实验结果 | 模型 | 测试准确率 | 差评 F1 | 好评 F1 | 训练耗时 | 参数量 | |------|-----------|---------|---------|---------|--------| | BiLSTM + Attention | 90.17% | 0.9000 | 0.9033 | <1 min | 9M | | BERT (冻结) | 87.42% | 0.8745 | 0.8739 | 3.6 min | 102M | | BERT (全参数微调) | **94.67%** | **0.9471** | **0.9462** | 9.1 min | 102M | - **BERT 全参数微调** 比冻结版本提升 +7.25pp,差评召回率从 88.85% 提升到 96.79% - BiLSTM 仅 9M 参数即可达到 90%+ 准确率,适合轻量级部署 - 训练在 RTX 4060 Laptop (8GB) 上完成,启用 AMP 混合精度 ### 混淆矩阵 (BERT 微调) ``` 预测差评 预测好评 真实差评 573 19 真实好评 45 563 ``` ## 工程特性 - **配置驱动**:所有超参数通过 YAML 文件管理,命令行可覆盖 - **模块解耦**:模型、训练器、数据、日志完全分离,可复用 - **混合精度训练 (AMP)**:自动启用,显著降低显存占用 - **早停机制**:验证集 3 轮无提升自动停止,防止过拟合 - **分层学习率**:BERT 底层 1e-5 / 顶层 5e-5 / 分类头 1e-3,微调更高效 - **TensorBoard 集成**:实时 loss/acc 曲线 + 混淆矩阵可视化 - **多模型对比**:同一训练管线支持 BERT 和 BiLSTM 切换 ## License MIT