- 博客(28)
- 收藏
- 关注
原创 批量归一化(BN)
X为输入,gamma和beta为两个参数,moving_mean和moving_var为全局数据的均值和方差,eps和momentum都有一定的值,momentum负责更新全局均值和方差。假设输入形状为 (batch_size, channels, height, width),在每个通道上,跨 batch、跨空间位置(H×W)计算均值和方差。(with torch.enable_grad() 或默认状态),需要实时计算当前 batch 的均值方差,并更新滑动平均。上,跨 batch 计算均值和方差。
2026-07-28 14:49:37
原创 VGG + NiN + GoogLeNet
与其纠结用哪种卷积核(3×3 还是 5×5),不如全部并行使用,让网络自己学习哪种特征提取方式最有效。最后用10个通道数的输出作为10个类别的分类,平均池化层的核size和输入size一样,输出为输入的。in_channels = out_channels:下一块的输入通道 = 当前块的输出通道。定义一个数组(num_convs, out_channels)代表块的参数,一共有五种块。p1,p2,p3,p4代表Inception块的四条路经。Stage1:第一个模块使用64个通道,7*7的卷积层。
2026-07-28 13:56:27
14
原创 LeNet,AlexNet
Xavier初始化 → SGD优化器 → 6步训练循环(清梯度→搬数据→前向→算损失→反向→更新)→ 实时画图监控。nn.Conv2d(1, 6, 5, padding=2):1通道→6通道,5×5核,保持28×28。nn.Flatten():把 [N, C, H, W] 展平为 [N, C×H×W]nn.Linear(16*5*5, 120):全连接,400→120。nn.AvgPool2d(2, 2): 2×2平均池化,尺寸减半。iter(net.parameters()):转成迭代器。
2026-07-26 13:22:04
136
原创 卷积神经网络:卷积
通过限制每个输出只连局部窗口、所有位置共享同一套权重,把参数量从 H×W×H′×W′ 降到 K×K (核大小),同时保留提取局部特征的能力。格式参见“PyTorch 神经网络基础”章节,定义weight,bias的值,定义前向传递函数forward,引用corr2d()函数计算。当我们卷积核的维度比输入维度小得多,则需要更多的层数来使得输出特征矩阵维度大小合适,这样就需要我们调整步幅来得到合适维度的特征矩阵。当卷积核的维度越大,得到的特征矩阵维度越小,或者说经过多轮卷积核操作后,特征矩阵的维度不断减小。
2026-07-25 12:19:03
145
原创 PyTorch 神经网络基础(模型构建,参数构造...)
是 PyTorch 的"子模块登记簿" :只有把模块放进这里,PyTorch 才知道"这是我的孩子",才会帮你管理参数、搬 GPU、保存模型。是一个特殊的 nn.Module,它把多个层按顺序串起来,数据从第一个层流到最后一个层,中间不做任何分支或跳转。通常这是自动发生的。请注意,输出的形状可能与输入的形状不同。(2)一种前向传播函数,用于将输入按追加块的顺序传递给块组成的“链条”。下面,我们访问第一个主要的块中、第二个子块的第一层的偏置项。1.克隆原MLP的结构(这里的参数都是随机初始化的,不能用)
2026-07-24 13:20:01
169
原创 迁移学习(预训练模型的选择与微调)
神经网络通常有一个层次化的,最底层一般是学习了底层的特征,上层的更与语义相关,所以一般来说底层与上面层没有太多的关系,在换了数据集之后泛化性都很好;将预训练好的模型用在新任务上叫fine-tuning(微调)(通常在深度学习里面,微调能带来最好的效果,但是也有一定的开销)(2)在一个相关的任务上训练一个模型,然后在另一个任务上直接用它;(2)在找到合适的预训练模型之后要初始化我们的模型(将预训练模型的除了最后一层之外(特征提取器)的。(1)在新的任务上构建一个新的模型,新的模型的架构要更预训练的模型的。
2026-07-24 11:28:56
177
原创 深度神经网络:批量与层的归一化
使用批量归一化之后,收敛上会更加容易,可以选用更大的一些学习率,但是一般来说不会改变最后的结果(精度跟没有差不多,但是可以快一点),这样能帮助整个函数更加平滑,使得在训练深度神经网络的时候会更加容易(这个观点还是争议的);*BN 是对网络内部每一层的输入做标准化,而不是对原始输入数据。对变形后的矩阵的一列 减去 这一列的均值 再除以这一列的方差。它的目的是稳定深层网络中各层的输入分布,让训练更快更稳定。,这样做的好处是说在做预测时不需要存均值方差这种全局的东西。中间那些层的输入也做标准化。
2026-07-22 15:35:07
189
原创 模型的调参,超参数的优化
在一开始的时候其实跟random search差不多(获取函数还不够好,就只能随机挑值来做),再后期的时候(建模比较准)会比较好一点;如果要做的东西是跟某些论文相关,可以看看该论文里面的超参数是什么(有些超参数 跟特定的数据集有关),这些超参数在一般的情况下都不错。,epoch还是m;每次调参一定要做好笔记(训练日志、超参数记录下来,这样可以与之前的实验做比较,也好做分享,与自己重复自己的实验)选一个质量比较高的工具包,其中设了不错的参数,虽然可能对我们的问题不算是最好 的,但是是一个不错的开始点;
2026-07-22 13:53:58
216
原创 机器学习:方差和偏差
然后将ht * η(学习率)加进当前整个boosting出来的模型,变成下一个时刻boosting出来的模型(η是作为一个正则项,boosting中叫收缩)(当然η可以为1,但是这样很。在GBDT中模型没有过拟合(每一个小模型确实比较弱,学习率也定的比较低),当weak learner、学习率 控制得比较好的时候,它的过拟合现象没那么严重。(将数据集分成两块A、B(2层stacking),然后用A训练第一层模型L1,用L1对B进行预测,把预测的结果加上B本身训练第二层模型L2);
2026-07-21 13:35:01
226
原创 机器学习:模型验证
一般来说会选取 n% 的样本作为验证集(可以可以取50,40,30,20,10;将训练样本分成两个集合,一个是训练集,一个是验证集,在训练集上训练模型,在验证集上计算误差(或其他指标),用验证集算到的误差来近似泛化误差。问题:随机划分可能把同一个人的照片同时放进训练集和验证集,模型"记住"了这个人,而不是学到了通用特征。背景:数据量不够大时,Hold Out 方法会"浪费"一部分数据做验证,训练数据变少,模型学不充分。问题:随机划分会让未来数据"泄露"到训练集,模型"偷看"了未来。
2026-07-20 11:30:53
203
原创 机器学习:过拟合和欠拟合
当然也是很难比较两个数据集的复杂程度(图片数据集与文本数据集“像素与字符比较”),但是可以比较类似数据的复杂程度;虽然模型会有很好的精度,但是在实际情况中可能会有很大的问题(在数据上取得比较好的成绩与在实际应用中做的好不好,中间是有比较大的代沟的)可视化训练误差和泛化误差随着模型复杂度的变化,最好的地方是泛化误差最低的点,但是就算是最好的情况,可能还是会有overfitting。3.数据中是否有时间或空间的结构(股票有时间的结构,图片是有空间结构的)定义:模型能完美分类任意标签组合的样本点的最大数量。
2026-07-20 11:30:40
151
原创 机器学习:模型评估
用于搜索词(在看的具体网页) --> 取出相关的网页 --> 预测用户点击广告的点击率(点击率高的给用户看)【因为不知道点击率会是多少,所以弄成一个机器学习的问题,用机器学习来判断用户的点击(二分类问题)】 --> 把所有的广告通过CTR(点击率)乘上甲方给的钱来排序。(1)预测的CTR值变低了,但是AUC的数值没有改变,可是会引起预测用户点击的置信值降低了,可能会导致展示的广告数目降低。(2)可能新换的广告实际的CTR低,模型使用的是过去的数据,市场是会变化的,用户可能不喜欢基于过去数据的广告。
2026-07-19 16:24:51
185
原创 机器学习:多层感知机
假如说我们需要一个语言预测模型来判断下一个word,如果使用MLP输入为hello可以预测下一个为world,但如果输入world是否会预测下一个是!也纳入端到端的学习框架中,让模型从原始数据中自动学习最优的表示(representation),而不是依赖人工设计的特征。例如:"我出生在中国,...,所以我会说____",中间隔了很多词,"中国"这个信息很难传递到填空位置。:用极少的参数,通过在图像上滑动扫描,实现了对任意位置局部模式的检测。序列很长时,早期的信息在传递过程中逐渐衰减,爆炸。
2026-07-19 15:36:57
172
原创 机器学习:线性模型
若样本真实类别为 i,只要其他类别原始得分 oj 远小于 oi,损失就不会施加大量惩罚,不会像 MSE 一样强制把其他类分数压到 0。(2)当预测和真实差距大时,交叉熵的梯度很大,模型能快速修正错误;第i类的预测概率等于该类原始得分的指数,除以所有类别得分指数之和。使用线性模型预测出样本数据类别的置信度,最大置信度的类别为样本数据所对于的类别并用。把无界的原始置信分数o转化为合法概率:所有数值≥0,全部类别概率相加等于 1。,只要真实类得分远高于其他类,损失就很小,不会浪费模型能力。
2026-07-18 13:43:31
191
原创 机器学习:决策树模型
(2)数据过于复杂会生成过于复杂的树,会导致过拟合*把决策树的枝剪掉一些(在训练时觉得太复杂了就停下来,或在训练之后把特往下的节点给剪掉)(1)不稳定(数据产生一定的噪音之后,整棵树构建出的样子可能会不一样)*使用集成学习 (ensemble learning)可以解决。特征随机(特征子空间采样) 单棵树节点分裂时,不使用全部特征,仅随机。(3)大量的判断语句(太顺序化),不太好并行*在性能上会吃亏。(选择熵小的分支进行分裂)信息增益越大,分支熵越小,越优。(1)可以解释(可以让人看到对数据处理的过程)
2026-07-18 13:43:17
186
原创 机器学习:特征工程
用卷积神经网络替代特征提取器,从"人设计特征,机器做分类" ->"机器从数据中自动学习特征和分类",代价是需要更多数据和算力,但换来的是任务最优的特征表示。为什么需要day_of_year,week_of_year,day_of_week?但模型能理解 month=7(夏天)和 is_weekend=1(周末购物多)(2)Computation Heavy(计算密集)(3)预训练语言模型 *BERT, GPT-3。(1)Data Hungry(数据饥渴)(2)类别型(Categorical)
2026-07-17 11:17:54
176
原创 机器学习:数据变换
视频变换的核心是"化长为短、化编码为帧",在保持语义完整性的前提下,把高可变性的原始视频转化为固定长度、易于加载、模型友好的输入格式,同时接受存储空间的代价。原始数据往往不符合模型输入要求,数据转换是连接"清洗后的数据"和"可训练的特征"之间的桥梁,针对不同数据类型有特定方法。(1)将数据线性映射到指定区间 [a,b] (通常是 [0,1] 或 [−1,1] )(2)将数据转换为均值为 0,标准差为 1 的分布(最常见)词干还原:基于词典的词性标注,准确率高,速度慢(E1)
2026-07-17 11:17:37
216
原创 机器学习:数据清理
数据错误不会导致训练失败,但会慢性中毒:模型能跑但精度差,更危险的是部署后会持续污染新数据,形成不可逆的质量下降螺旋。可以根据2.1介绍的各种查看数据的方法,可视化图寻找数据的Outliers。数据错误 = 数据与真实值(Ground Truth)的不匹配。极端值(Extreme Values)异常但可能是真实的。x → y:x 的值唯一确定 y 的值(邮编唯一对应州)(3)模式违反(Pattern Violations)(2)规则违反(Rule Violations)(1)异常值(Outliers)
2026-07-16 11:16:35
196
原创 机器学习:数据分析
建议存成压缩文件,在传输存储都会比较好,甚至还会比直接读取还要好(这个方法可用于文本)数值列转换完成后,需要查看各列的最小值(min)和最大值(max),因为有些列的极值明显不合理,可能存在异常值或数据错误。pandas:也是用于数据分析,擅长处理表,数据没那么大要放入内存中,这将是首选;1.将带’$’的货币字符串,去掉’$’后转为可被识别转换的浮点数float。如果一个列30%的样本该列数据是缺失的,就把该列删去,简化数据。[0:20]:切片取前 20 个(出现频率最高的 20 种)
2026-07-16 11:16:22
192
原创 机器学习:数据的标注
在已知输入和输出的情况下,通过训练建立起输入到输出的映射模型,应用最广的机器学习方法,可进一步分为分类和回归两类算法。聚类假设(Cluster assumption)数据存在内在的聚类结构,同一簇的样本倾向于同标签。模型主动筛选"最有价值"的未标注样本来请人标注,合并已标注数据继续训练模型,循环往复。=用模型自己的高置信度预测来"自举"更多训练数据,核心挑战是如何控制伪标签的噪声。判断标准:模型对某样本的最高类预测概率接近随机猜测(1/n,n 为类别数),与标记好的标签合并再次训练模型,重复过程。
2026-07-15 12:40:52
211
原创 网页的数据抓取
寻找需要访问的url的规律:豆瓣每页显示 25 部电影,URL 参数 start=0 表示从第 1 条开始,start=25 从第 26 条开始(有的网页比如58同城房源子网页是格局房屋id访问的,就需要依次提取html相应的各个id组成url)class_='item':且class属性为 "item"(注意下划线)Scraping(抓取):从特定网站的网页中提取特定数据(局部、精准)Crawling(爬取):索引整个互联网上的网页(全局、广泛)分析目标网页的html的结构,找到需要的信息。
2026-07-15 11:57:40
214
原创 机器学习:数据的获取
学术界用的"干净数据集"和工业界的"原始数据"是两回事。在学校做实验可以用现成的benchmark,但进了公司,大部分时间都在"洗数据",而且这不仅是技术活,还涉及法律、隐私、跨部门协作。2. 找基准数据集Find benchmark datasets :用标准数据集来“验证新想法/新算法”的效果 测试新的超参数调优算法→用一组小到中等规模的多样化数据集。2. 数据增强(Data augmentations):在现有数据上做变换,"变出"更多训练样本。用实体ID作为"连接键"把不同表Join在一起。
2026-07-14 16:04:45
197
原创 个人笔记:实用机器学习(b站李沐)
模型上线后,现实数据变了,或者对某些群体有偏见,需要持续跟踪。问题定义:要聚焦在“最有影响力的工业问题”上。例子:无人超市、自动驾驶——这些是能真正改变行业的大问题,而不是边缘的小优化。数据:“高质量数据稀缺”,而且涉及“隐私问题”。数据是ML的"燃料",但好数据难获取,还可能有法律,隐私风险。背景:机器学习已经从少数科技巨头的"玩具"变成了各行各业驱动商业营收的核心工具,而新冠疫情进一步加速了这一商业化进程。训练模型:模型越来越复杂、越来越“吃数据”、越来越“烧钱”。模型部署后,需要持续监控它的表现。
2026-07-14 15:19:22
171
原创 CCF-CSP 37-4(区间更新)
(1)当gcd(stu[left],nxt.first) == cur.back().first即此时对于一个nxt的区间加上stu[left]元素后gcd值和cur的最后一个区间的gcd相同,所以可以进行合并,两个区间的右元素和可以合并。(2)当gcd值不相等,区间无法合并时,cur就push_back一个新的区间,gcd值为求得的gcd值,右边界元素和保留nxt数组的右边界和。1.用nxt存储以left = n+1时的区间(此时left = n),pair数组区间为{gcd值,右边界和}
2026-07-10 10:23:00
163
原创 CCF-CSP 37-3(字符串)
这里我想用哈希表unordered_map存储变量名和变量信息的映射,变量信息包括变量的值,脏标记,和对应的赋值表达式(如果为脏),因为哈希表可以自动初始化比较方便直接索引访问,但是遗憾的是我的代码虽然正确但是仅仅过了4个测试集,其余6个测试集均为超时,还需要改进思考。因为我更新间接赋值相关的变量后,会影响间接赋值的对象所以导致我每次都在用之前都需要更新一遍脏变量,看似每次都需要无脑更新。因为我们最终需要输出的是字符串的长度,而不是字符串,因此我们只需要关注字符串的长度而非他本身,
2026-07-07 16:26:28
198
原创 HNU人工智能导论24届心得
因为到了期末考试我们已经学习过的知识点已经很多了,所以考察的内容考察不全,所以为了很稳的话各个部分的知识点都要掌握,我们这一次考察的内容我个人感觉难度比去年的卷子简单,我个人认为考察的核心是我们会不会写这种题,而不是我们能不能解决这种很难的题,所以重在理解与掌握,但是我有两个概念题没有记得,一个是什么隐马尔可夫的三元组的定义,还有一个什么我忘记了,这次考察的概念比较多,一般第一个大题是考察概念的但是我们这次好多大题的第一小问都涉及了一些概念,根据最后的成绩来看老师应该给分比较松。给大家我当时复习用的。
2026-07-07 08:39:43
210
原创 CCF-CSP 37-2(完全背包问题)
刚开始的想法是用vector数组以:得到价值/投喂个数 作为判断条件价值降序排列,以单个苹果价值高的优先考虑,样例一能够很好的解决但是样例二得到的结果不正确,分析后得到问题这个题目要考虑组合的问题,联想到背包问题,重新进行解决,将苹果个数作为背包容量,价值则为价值。这里需要注意,要从dp[0]开始拓展,我开始用的是dp[1] = arr[1]拓展,但是如果arr[2]>arr[1]+arr[1]就会出现未考虑的错误情况。
2026-07-06 15:52:56
25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅