前向传播和反向传播
前向传播 前向传播是神经网络通过逐层计算,从输入层开始,经过隐藏层,最终到达输出层,以产生预测值的过程。 在这个过程中,输入数据通过网络中的权重和偏置进行线性变换,然后通过激活函数进行非线性变换,得到每一层的输出。最终,输出层的输出即为神经网络的预测值。 输入层接收数据 输入层是神经网络的第一层,它接收来自外部的数据。 计算隐藏层输出 数据从输入层传递到隐藏层,隐藏层中的每个神经元都会接收来自上一层神经元的输入,并计算其加权和。加权和通过激活函数(如ReLU、Sigmoid、Tanh等)进行非线性变换,生成该神经元的输出。 计算输出层输出 输出层是神经网络的最后一层,它接收来自隐藏层的输入,并计算最终的输出。 PyTorch中实现前向传播需要基于nn.Module类定义网络结构,并在forward()方法中明确数据流的计算过程 123456789101112131415import torch.nn as nnclass NeuralNetwork(nn.Module): def __init__(self): ...
评估指标
分类问题 混淆矩阵 对于二分类问题,混淆矩阵是一个 2x2 的矩阵。 TP (True Positive,真正例):预测为正类且实际为正类的样本数量。(正确识别目标) TN (True Negative,真负例):预测为负类且实际为负类的样本数量。(正确排除非目标) FP (False Positive,假正例):预测为正类但实际为负类的样本数量。(误报) FN (False Negative,假负例):预测为负类但实际为正类的样本数量。(漏报) 反应每个类别的正确和错误预测情况 正类目标类别 : 疾病检测中的“患病”样本 垃圾邮件分类中的“垃圾邮件” 欺诈检测中的“欺诈交易” 负类非目标类别 准确率 Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} Accuracy=TP+TN+FP+FNTP+TN 模型正确预测的样本占所有样本的比例 是一个全局评估指标,适用于样本类别分布均衡的情况 问题:...
机器、深度、强化
机器学习 机器学习,其实就是让计算机像孩子一样“学习”! 给计算机大量的数据(就像给孩子看很多苹果),然后告诉它一些规则和方法(就像告诉孩子苹果的特征)。 计算机通过分析这些数据,自己总结出规律,掌握识别苹果的“技能”。 以后,就算给它看没见过的苹果,它也能根据学到的规律,判断出来这是苹果。 数据是“基础”: 机器学习需要大量的数据来进行学习。数据越多、质量越高,机器学得就越好。 算法是“方法”: 机器学习有很多种“学习方法”,也就是算法。 不同的算法适用于解决不同的问题。 常见的算法包括: 线性回归 (Linear Regression): 预测数值,比如预测房价、销量。 逻辑回归 (Logistic Regression): 进行分类,比如判断邮件是不是垃圾邮件、用户会不会点击广告。 决策树 (Decision Tree): 像流程图一样做决策,比如根据天气、温度等条件判断是否适合去野餐。 支持向量机 (Support Vector Machine, SVM): 擅长分类,在高维数据中也能找到最佳的分类界限。 K近邻 (K-Nearest Neighbors, KNN):...
机器学习第一篇
学习计划最近准备深挖AI方向 , 本科期间写毕业论文的也了解了一些, 但未系统学习 , 故整理了一个学习计划 1 . 基础: 数学视频课 《线性代数与学习算法》 [视频 ](“【机器学习】带读李航 第一章-第四章《统计学习方法 第二版 监督学习》 跟我一起从菜鸟成长为大神_哔哩哔哩_bilibili“) 徐志钦老师(12,13,14,15,16) 配合《统计学习方法》,《深度学习》 [深度博客 ](“a大纲目录(所有文章索引) - 随笔分类 - B站-水论文的程序猿 - 博客园“) 吴恩达老师 Transformer和BERT python 进阶 sklearn pytorch(pytorch龙曲良)
病虫害图像识别
概述:记录我做毕设的心路历程 和具体学习实现过程达成目标汇总 , 教大家避开弯路。 选好题目 这段时间应该是你大学之中最忙的一个学期,毕业实习,找工作,准备考研或者出国,我做毕设的4个月都在实习,所以选好题目,能帮你省去不小时间。 一般选题方向分为两种 , 一种是纯算法方向 , 一种是产品方向 。我推荐做产品方向 , 应该他更灵活能结合算法,容易拿高分。 如何查找资料 Github : 可以找到很不错的项目 , 但好的项目已经被做烂了 ,要不然工作量太多,一看就不是 大学生做的 , 要不然代码写得稀烂 ,调用混乱 ,改都不好改。 arxiv:这个是找参考论文的好地方 , 我的算法一部分就是复现他们的实验成功的。 kaggle : 找数据集的好地方 , 可以找到很多好用的数据集。 B站: 有些up教的确实蛮不错的。 选取模型 我做深度学习图像识别方向的 , 但这个东西限制很多,有很多模型训练拿自己电脑是跑不了的 ,所以我采用了迁移学习的策略,...
归一化
为什么要归一化 问题 量纲差异:不同特征的单位或数值范围差异大(如年龄0-100,收入0-100000),导致模型偏向学习数值大的特征,导致梯度不平衡,导致梯度爆炸,要将尺度减少到能处理的范围,需要使不同特征对模型的影响权重一致。 梯度不稳定:未经归一化的数据会导致损失函数的等高线呈“狭长形”,梯度下降方向震荡,收敛缓慢(如下图示)。 激活函数饱和:如Sigmoid在输入绝对值较大时梯度接近0,导致参数更新停滞。 解决 加速收敛:使优化路径更平缓,减少迭代次数,优化算法(如梯度下降)在归一化后的数据上更易找到最优解。 提升模型泛化能力:避免某些特征主导学习过程。 兼容正则化:L1/L2正则化对尺度敏感,归一化后惩罚项更公平。 防止数值溢出:避免计算过程中出现极大或极小值导致的计算错误。 数学定义 归一化是对原始数据进行线性或非线性变换,使其符合特定分布或数值范围。 xnorm=x−基准值缩放因子x_{\text{norm}} = \frac{x -...
Deep Residual Learning for Image Recognition
Deep Residual Learning for Image Recognition Abstract **p **: 深的卷积神经网络很难训练 K: 使用残差学习的框架 , 使得深的卷积神经网络容易训练 S: 层作为一个学习残差函数相对于层输入的一个方法 , 而不是一个unreferenced fuctions 的方式 E: ImageNet 数据集上使用了152层深度 , 相较于VGG深8倍 ,计算复杂度要低,COCO28%相关改进,仅替换为残差学习 Introduction 一般在第一页右上角放上一张最好看的图 ,扩展:prof. Randy —CMU最后一课 更深的神经网络随着训练轮数增加训练误差反而会变得更高 ,测试误差也会更高 网络堆叠的过于深的话,梯度会出现爆炸或者消失 传统解决办法: 在权重随机初始化的时候 , 设定好权重的大小 , 并在中间加入 normalization , 校验每个层的输出和它的梯度的均值和方差 , 避免有一些曾过大或者某一些层过小 , 保证能够收敛。 问题: 浅的网络效果不错的话 ,加一些层深的网络不应该变差 ,...
监督学习 半监督学习 无监督学习 强化学习
先放结论 类型 数据需求 学习方式 典型任务 监督学习 大量带标签数据 从输入到输出的映射 分类、回归 半监督学习 少量标签+大量无标签数据 结合标签与数据分布 分类(标签不足场景) 无监督学习 完全无标签数据 发现数据内在结构 聚类、降维 强化学习 无需固定数据集 环境交互与奖励反馈 序列决策、控制任务 监督学习(Supervised Learning) 带标签的数据(输入-输出对)进行训练,模型学习输入到输出的映射关系 优点:任务明确,效果通常较好。 缺点:依赖大量高质量标签数据,成本高。 半监督学习(Semi-Supervised Learning) 核心特点:结合少量带标签数据和大量无标签数据进行训练。 目标:利用无标签数据提升模型性能,解决标注数据不足的问题。 优点:降低对标签数据的依赖,提升模型泛化能力。 缺点:伪标签可能引入噪声,需谨慎处理。 无监督学习(Unsupervised...
神经网络基础概念
机器算法三要素 任务 T ,经验 E , 性能 P. 经过从经验E中的改进 ,在任何任务T上由性能P衡量有所上升 任务 对 Example的处理 ——》样本指的是学习到的feature , 样本通常形式为一个向量 ,
Java红包领取BUG
最近遇到一个很有意思的bug ,业务逻辑很简单, 但涉及到技术面其实很深,拿出来记录一下. 本来要实现的功能是一个订单只发放一个红包,这个致命的错误会导致一个订单同时发放多个红包. 源码:123456789101112131415@transactional(rollbackFor=Exception.class)public void giveRedPacket(long orderId){ order o = getOrder(orderId); if (o == null){ return; } o = getOrderForUpdate(orderId); if (o == null){ return; } if (!existRedPacket(orderId , redid:"20241111")){ createRedPacket(orderId , redid:...