机器学习基础:监督学习、无监督学习与强化学习解析
1. 机器学习基础概念解析
机器学习作为人工智能的核心技术领域,其本质是让计算机系统通过数据自动改进性能。想象一下教孩子识别动物:我们不会直接告诉孩子"狗有四条腿、会汪汪叫"这样的规则,而是展示大量狗和其他动物的图片,让孩子自己总结特征。机器学习的工作方式与此惊人地相似。
1.1 监督学习:有导师的教学模式
监督学习就像有个全能导师在身边,每个训练样本都带有标准答案。最常见的两种类型是:
分类任务:预测离散标签
- 垃圾邮件过滤(垃圾/非垃圾)
- 医疗影像诊断(良性/恶性)
- 情感分析(正面/负面)
回归任务:预测连续值
- 房价预测
- 销售额预估
- 股票价格走势
典型算法包括:
- 线性回归(房价预测)
- 逻辑回归(二分类)
- 支持向量机(文本分类)
- 随机森林(特征重要性分析)
实践提示:标注数据质量决定模型上限。我曾遇到一个案例,由于标注人员对"轻度抑郁"的判断标准不一致,导致模型在临界值附近预测极不稳定。建议至少安排3人交叉标注,计算Kappa系数评估一致性。
1.2 无监督学习:发现数据的内在密码
当没有现成标签时,无监督学习能自动发现数据中的隐藏模式。主要应用场景:
聚类分析
- 客户细分(RFM模型)
- 异常检测(信用卡欺诈)
- 基因序列分组
降维技术
- PCA用于特征压缩
- t-SNE可视化高维数据
关联规则
- 购物篮分析(啤酒与尿布)
- 推荐系统协同过滤
以K-means聚类为例,其迭代过程包括:
- 随机选择K个中心点
- 将每个点分配到最近的中心
- 重新计算中心点位置
- 重复2-3步直到收敛
from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3) kmeans.fit(X) labels = kmeans.predict(X)1.3 强化学习:通过试错成长
强化学习框架包含三个核心要素:
- 智能体(Agent):学习主体
- 环境(Environment):交互场景
- 奖励(Reward):行为反馈
经典应用案例:
- AlphaGo的围棋策略
- 机器人路径规划
- 广告竞价策略
- 自动驾驶决策系统
关键算法演进:
- Q-Learning:基于价值表格
- Deep Q Network:结合神经网络
- Policy Gradient:直接优化策略
- Actor-Critic:综合价值与策略
2. 机器学习项目生命周期
2.1 数据准备阶段
数据质量决定模型效果上限,需重点关注:
数据收集
- 爬虫技术(Scrapy框架)
- 公开数据集(Kaggle、UCI)
- 传感器采集(IoT设备)
数据清洗
- 缺失值处理(均值填充/删除)
- 异常值检测(3σ原则/箱线图)
- 重复数据去重
特征工程
- 数值特征标准化
- 类别特征编码(One-Hot)
- 时间特征分解(年/月/日)
- 文本特征向量化(TF-IDF)
血泪教训:曾因忽略数据分布变化导致线上事故。训练数据来自夏季,而实际应用在冬季,温度相关特征完全失效。建议进行时序交叉验证(TimeSeriesSplit)。
2.2 模型训练技巧
2.2.1 评估指标选择
不同任务需要不同评估标准:
| 任务类型 | 常用指标 | 适用场景 |
|---|---|---|
| 分类 | Accuracy, F1, AUC-ROC | 均衡数据集 |
| 分类 | Precision-Recall | 类别不平衡 |
| 回归 | MAE, RMSE, R² | 连续值预测 |
| 聚类 | Silhouette Score | 无监督分组 |
2.2.2 超参数调优
常用方法对比:
网格搜索(GridSearchCV)
- 遍历所有参数组合
- 计算成本高但全面
随机搜索(RandomizedSearchCV)
- 随机采样参数空间
- 效率更高
贝叶斯优化
- 基于高斯过程
- 适合昂贵评估场景
from sklearn.model_selection import GridSearchCV params = {'max_depth': [3,5,7], 'n_estimators': [50,100]} grid = GridSearchCV(RandomForestClassifier(), params) grid.fit(X_train, y_train)2.3 模型部署要点
2.3.1 服务化方案
- REST API(Flask/FastAPI)
- gRPC服务(高性能场景)
- 批处理模式(Spark)
2.3.2 监控指标
- 预测延迟(P99<200ms)
- 吞吐量(QPS)
- 数据漂移检测(KL散度)
- 预测结果分布变化
3. 常见问题诊断手册
3.1 训练误差分析
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 训练集表现差 | 模型太简单 | 增加复杂度 |
| 验证集差距大 | 过拟合 | 正则化/Dropout |
| 指标波动大 | 学习率过高 | 动态调整LR |
| 收敛速度慢 | 特征相关性低 | 特征选择 |
3.2 线上故障排查
内存泄漏
- 检查预测服务对象生命周期
- 使用内存分析工具(Valgrind)
性能下降
- 监控GPU利用率
- 优化预处理流水线
结果异常
- 验证输入数据分布
- 检查特征编码一致性
4. 大模型时代的新范式
4.1 预训练+微调模式
典型技术路线:
海量无监督预训练
- 语言模型(GPT)
- 图像生成(Stable Diffusion)
下游任务微调
- 适配具体业务场景
- 小样本学习(Few-shot)
4.2 提示工程实践
零样本提示 "将以下文本分类为正面/负面:{文本}"
少样本提示 """ 示例1: 这电影太棒了 → 正面 示例2: 服务很差 → 负面 现在分类:{新文本} """
思维链(CoT) " step by step..."
4.3 大模型部署优化
量化技术
- FP16 → INT8
- 权重共享
推理加速
- Flash Attention
- KV Cache复用
硬件适配
- CUDA核心优化
- NPU专用指令集
实际部署中发现,7B参数的LLM在A10G显卡上:
- FP16需要14GB显存
- INT8量化后降至7GB
- 结合梯度检查点可进一步压缩
python -m vllm.entrypoints.api_server \ --model meta-llama/Llama-2-7b-chat-hf \ --quantization awq \ --max-model-len 2048在医疗问答场景测试中,量化后模型:
- 推理速度提升2.3倍
- 显存占用减少60%
- 准确率下降<2%