AI
共 28 篇文章
机器学习入门:先定义预测时刻,再谈特征和模型
学习机器学习时,最先写下的不是模型名称,而是:对谁,在什么时候,利用当时能够获得的信息,预测什么结果? 把问题写成可检查的约定 以“预测门店下周的商品销量”为例: 项目 本例中的定义 一个样本 某门店在某一周开始前的一次预测 特征 截至该时刻的历史销量、价格、已确定的促销安排 标签 随后这一周实际发
机器学习实操:把预处理放进训练边界
跑通一个项目,不等于得到了可信的评估。最值得反复检查的问题是:测试数据是否以某种方式参与了训练流程的决定? 对讲义流程的一处修正 课程的第二次实操强调按步骤理解流程,但不能把“编码、缺失处理在划分前;标准化在划分后”当成通用规则。判断依据应是:这个步骤是否需要从样本中学习信息。 操作 需要注意的边界
分类评估笔记:99%的准确率,可能一次目标都没找对
评估前先说明正类是什么、漏报和误报分别意味着什么。指标不是模型训练结束后随手挑一个最漂亮的数字。 从混淆矩阵开始 二分类中,TP 是正确识别的正类,FN 是漏掉的正类,FP 是误报,TN 是正确识别的负类。准确率看全部样本的正确比例;召回率看正类中找回多少;精确率看报出的正类中多少是真的。类别比例和
集成学习笔记:Stacking先管好折外预测,再谈模型互补
多个模型组合不自动优于单模型。先确认基模型是否在不同样本上互补,再判断组合方法是否真正带来收益。 三种组合不要混成一种 Bagging 常通过抽样训练多个基学习器,再汇总结果;Boosting 按阶段构建加性模型;Stacking 则用基模型的输出训练第二层模型。这些是不同的训练设计,不是“多套一层
神经网络基础:反向传播算梯度,优化器才负责更新参数
一个最小训练步骤包含前向计算、计算损失、求梯度、按更新规则修改参数。把这些步骤分开,才能定位“损失不降”究竟发生在哪里。 两件容易混淆的事 反向传播利用链式法则计算梯度;优化器利用梯度及自身状态更新参数。PyTorch 的自动微分系统记录计算图并执行梯度计算,不等于它已经完成参数更新。PyTorch
神经网络基础:先对齐标签和Logits,再选择损失函数
输出层的数字、标签格式与损失函数要形成一致约定。看见分类任务就先加 Softmax,可能反而重复了损失函数内部已经做的操作。 常见约定 任务形式 典型模型输出 标签约定 多分类、每样本一个类别 每类一个 Logit 类别索引,或满足要求的类别概率分布 二分类单输出 一个 Logit 与输出对应的 0
卷积层学习笔记:先算清形状和参数,再理解特征
阅读 CNN 代码时,我先给每个张量写下形状,再检查卷积核、步长和通道数。这样比只记“提取局部特征”更容易发现实现错误。 四个维度分别是什么 PyTorch 的常见输入排列是 (N, C, H, W):批大小、通道数、高度、宽度。普通二维卷积的权重排列为 (C_out, C_in / groups,
迁移学习笔记:冻结骨干之前,先检查参数、模式和预处理
换一个分类头不等于完成迁移学习。一次实验至少有三份需要分别核对的状态:哪些参数可以训练、哪些模块处于训练模式、图像怎样进入网络。 骨干网络解决什么问题 骨干把图像变成可供后续任务使用的特征。分类头、检测头和分割解码器的输出目标不同,不能只替换输出维数就默认其他设置完全通用。ResNet 的残差连接可
注意力模块笔记:形状不变,不等于接上就一定有效
SE、CBAM、ECA 都能用于调整 CNN 的中间特征,但“即插即用”只说明接口容易对接,不是效果保证。先把维度和成本算清楚,再设计实验,比先叠模块更重要。 三种模块分别在调整什么 以 B × C × H × W 特征为例: 模块 权重形状的典型形式 主要操作 SE B × C × 1 × 1 汇
花卉分类项目学习:从数据管线到注意力消融的完整路线
1. 这个项目真正要回答什么 花卉分类不仅是把模型最后一层改成花卉类别数。完整问题是:在样本有限的细粒度分类任务中,预训练骨干如何迁移,注意力模块是否带来可重复收益,代价是多少,失败样本是什么? 我把讲义中的项目拆成五个可独立核验的环节:数据与标签、预训练迁移、训练和选模、受控消融、错误分析。前面的