(完整版)深度神经网络及目标检测学习笔记(2)
- 格式:doc
- 大小:230.14 KB
- 文档页数:7
深度学习知识点总结
深度学习是一种人工智能(AI)的子领域,它的目标是让计算机系统像人类一样具有分析、理解和解释数据的能力。通过模拟人脑中神经元的工作原理,深度学习算法可以学习和理
解数据中的复杂模式,并进行非常准确的分类和预测。本文将系统地总结深度学习的基本
概念和常见技术,帮助读者全面了解深度学习的核心知识点。
一、基本概念
1. 神经网络
神经网络是深度学习的基础,它模拟了人脑中神经元之间的连接关系。一个神经网络由许
多神经元组成,并通过神经元之间的连接来传递信息。通常,神经网络被组织成多个层次,包括输入层、隐藏层和输出层。每个神经元接收来自上一层神经元的输入,通过加权求和
和激活函数的处理后产生输出。神经网络可以通过训练来学习适应不同的数据模式和特征。
2. 深度学习
深度学习是一种使用多层神经网络进行学习的机器学习技术。与传统的浅层神经网络相比,深度学习能够更好地处理大规模高维度的数据,并学习到更加复杂的特征和模式。深度学
习已经广泛应用在图像识别、语音识别、自然语言处理等领域,取得了显著的成果。
3. 监督学习
监督学习是一种常见的机器学习方法,它通过使用有标签的数据样本来训练模型。在监督
学习中,模型通过学习输入和输出之间的关系来进行预测。常见的监督学习算法包括:神
经网络、决策树、支持向量机等。
4. 无监督学习
无监督学习是一种不使用标签数据的机器学习方法,它通过学习数据之间的内在结构和模
式来进行数据分析和分类。无监督学习常用的算法包括聚类、关联规则、降维等。
5. 强化学习
强化学习是一种通过与环境交互来学习最优决策策略的机器学习方法。在强化学习中,智
人工神经网络学习总结笔记
主要侧重点:
1.概念清晰
2.进行必要的查询时能从书本上找到答案
第一章:绪论
1.1人工神经网络的概述
“认识脑”和“仿脑”:人工智能科学家在了解人脑的工作机理和思维的本质的基础上,探索具有人类智慧的人工智能系统,以模拟延伸和扩展脑功能。我认为这是人工神经网络研究的前身。
形象思维:不易被模拟
人脑思维抽象推理
逻辑思维:过程:信息概念最终结果
特点:按串行模式
人脑与计算机信息处理能力的不同点:
方面类型人脑计算机
记忆与联想能力可存储大量信息,对信息有
筛选、回忆、巩固的联想记
忆能力无回忆与联想能力,只可存取信息
学习与认知能力具备该能力无该能力
信息加工能力具有信息加工能力可认识
事物的本质与规律仅限于二值逻辑,有形式逻辑能力,缺乏辩证逻辑能力
信息综合能力可以对知识进行归纳类比
和概括,是一种对信息进行
逻辑加工和非逻辑加工相
结合的过程
缺乏该能力
信息处理速度数值处理等只需串行算法就能解决的应用问题方便,计算
机比人脑快,但计算机在处理文字图像、声音等类信息的
能力远不如人脑
1.1.2人脑与计算机信息处理机制的比较
人脑与计算机处理能力的差异最根本的原因就是信息处理机制的不同,主要有四个方面
方面类型人脑计算机
系统结构有数百亿神经元组成的神经
网络由二值逻辑门电路构成的按串行方式工作的逻辑机器
信号形式模拟量(特点:具有模糊性。离散的二进制数和二值逻辑容易被机器模拟的思维方式
难以被机器模拟)和脉冲两种
形式
形式
信息储存人脑中的信息分布存储于整个系统,所存储的信息是联想式
的
有限集中的串行处理机制信息处理机制高度并行的非线性信息处理系统
神经网络与深度学习知识点整理
●神经网络基础
●MP神经元模型
●可以完成任何数学和逻辑函数的计算
●没有找到训练方法,必须提前设计出神经网络的参数以实现特定的功能
●Hebb规则
●两个神经元同时处于激发状态时,神经元之间的连接强度将得到加强
●Hebb学习规则是一种无监督学习方法,算法根据神经元连接的激活水平改变权
值,因此又称为相关学习或并联学习。
●
●感知机模型
●有监督的学习规则
●神经元期望输出与实际输出的误差e作为学习信号,调整网络权值
●
●LMS学习规则是在激活函数为f(x)=x下的感知器学习规则
●由于激活函数f的作用,感知器实际是一种二分类器
●感知器调整权值步骤
●单层感知器不能解决异或问题
●BP网络
●特点:
●同层神经网络无连接
●不允许跨层连接
●无反馈连接
●BP学习算法由正向传播和反向传播组成
●BP网络的激活函数必须处处可导——BP权值的调整采用 Gradient Descent 公式
ΔW=-η(偏E/偏w),这个公式要求网络期望输出和单次训练差值(误差E)求导。所以要求输出值处处可导。。。。s函数正好满足处处可导。
●运算实例(ppt)
●Delta( δ )学习规则
●误差纠正式学习——神经元的有监督δ学习规则,用于解决输入输出已知情
况下神经元权值学习问题
●δ学习规则又称误差修正规则,根据E/w负梯度方向调整神经元间的连接权
值,能够使误差函数E达到最小值。
●δ学习规则通过输出与期望值的平方误差最小化,实现权值调整
●
●1
●自动微分
●BP神经网络原理:看书
●超参数的确定,并没有理论方法指导,根据经验来选择
Testing Deep Neural Networks
Youcheng Sun1, Xiaowei Huang2, and Daniel Kroening1
1Department of Computer Science, University of Oxford, UK
2Department of Computer Science, University of Liverpool, UK
0x00 一句话说清本文工作
深度学习越来越应用于安全攸关领域,其可靠性要求日益提高。传统的基于代码分支覆盖的软件测试方法[3][4][5]不能适用于深度学习程序,而现有的深度学习程序测试方法或过于粗略[1][2]或难以在有限时间内完成[6],因此兼顾效率和效果的测试方法急需被提出—也就是本文的工作。
1x00 MOTIVATION
经验告诉我们,把故事讲清楚、将漂亮是发文章的第一步。
1x01 研究背景
随着人工智能的发展,我们生活中的各个领域都开始有了人工智能的影子,比如语音助手、身份识别、智能驾驶等等。为我带来了方便的同时,人们对他们的可靠性也更加关注。在智能驾驶领域,出现了不少安全问题,比如Uber 智能车撞人、百度智能车在北京五环上行驶出现问题等等。其智能软件背后多由深度学习网络实现,那么对深度学习网络的可靠性研究就十分重要,当前人们的主要研究从验证和测试两个角度开展。本文就是测试的角度。1x02 问题定义&前人不足
既然是测试,那么肯定是为了找bug,一般程序的bug我们已经十分熟悉,深度学习领域的bug是否相同呢,我认为不是的。例如下图,智能驾驶软件在左图软件做出了正确的决定,但是在右图的情况中,看似与左图只有光线的变化,但是却做出了危险的决策。而这样的bug属于模型设计、训练层面的bug,无法用传统的基于程序覆盖的方法检测出来。这种bug,一句话说就是“输入相似,输出相反”。这个是一个很好的test oracle,使得神经网络的测试工作得以开展。
第二章深度神经网络
一、概述
1、基本概念
深度学习(Deep Learning)是一种没有人为参与的特征选取方法,又被称为是无监督的特征学习(Unsupervised Feature Learning)。
深度学习思想的神经网络利用隐含层从低到高依次学习数据的从底层到高层、从简单到复杂、从具体到抽象的特征,而这一特性决定了深度学习模型可以学习到目标的自适应特征,具有很强的鲁棒性。
深度学习的另外一个思想是贪婪算法(greedy algorithm)的思想,其在训练的时候打破了几十年传统神经网络训练方法的“桎梏”,采用逐层训练(greedy layer-wise)的贪婪思想,并经过最后的微调(fine-tuning),这一训练算法的成功也使得深度学习获得了巨大成功。
传统的模式识别方法:
机器学习过程
从最初的传感器得到原始的数据,到经过预处理,都是为了第三步和第四步的特征提取和特征选择,而这个耗时耗力的工作一般要靠人工完成。
这种靠人工的,需要大量的专业知识的启发式的特征提取方法注定要限制机器学习的发展,而深度学习的非监督学习阶段的“盲学习”的特性能够解决该问题,即:深度学习在特征提取和选择时是完全自主的,不需要任何的人工干预。
2、神经网络发展受限之处
多隐含层的网络容易收敛到参数空间的局部最优解,即偏导数为0 的点,尤其在目标识别中,由于图像的信噪比很低,神经网络很容易陷入局部极小点; 训练算法与网络的初始参数有很大关系,比较容易过拟合;
训练速度慢;
在误差反向传播的训练算法中,层数越深,误差越小,甚至接近于0,造成训练失败。
dnn的参数
一、DNN的基本概念
深度神经网络(Deep Neural Network,简称DNN)是一种模拟人脑神经元连接的计算模型,用于实现端到端的数值计算和预测。它由多个神经元组成的层级结构构成,每一层都由若干个神经元组成,神经元之间通过权重进行连接。DNN在众多领域取得了显著的成果,如计算机视觉、自然语言处理、语音识别等。
二、DNN的主要参数
1.网络结构:包括层数、每层的神经元数量等。
2.激活函数:用于引入非线性变换,增强模型的表达能力。常见的激活函数有Sigmoid、ReLU等。
3.损失函数:衡量模型预测值与实际值之间的差距,常见的损失函数有均方误差(MSE)、交叉熵损失等。
4.优化器:用于更新模型参数,常见的优化器有梯度下降、Adam、RMSProp等。
5.正则化:用于防止过拟合,常见的正则化方法有L1、L2正则化等。
三、参数调整方法
1.学习率调整:通过改变优化器的更新幅度,影响模型训练速度。
2.批量大小调整:控制每次迭代使用的样本数量,影响模型泛化能力。
3.神经元数量调整:根据任务复杂度,适当增加或减少神经元数量。
4.网络结构调整:尝试不同层数和神经元数量的组合,找到最佳网络结
构。
5.激活函数和损失函数调整:根据任务特点,选择合适的激活函数和损失函数。
四、参数优化策略
1.网格搜索:穷举所有参数组合,找到最佳组合。
2.随机搜索:在参数空间中随机选取组合,减少计算量。
3.贝叶斯优化:利用概率论方法,高效地搜索优质参数组合。
4.遗传算法:模拟自然进化过程,寻找优秀参数组合。
五、总结与展望
2-1 分析为什么平方损失函数不适用于分类问题?
损失函数是一个非负实数,用来量化模型预测和真实标签之间的差异。我们一般会用损失函数来进行参数的优化,当构建了不连续离散导数为0的函数时,这对模型不能很好地评估。直观上,对特定的分类问题,平方差的损失有上限(所有标签都错,损失值是一个有效值),但交叉熵则可以用整个非负域来反映优化程度的程度。从本质上看,平方差的意义和交叉熵的意义不一样。概率理解上,平方损失函数意味着模型的输出是以预测值为均值的高斯分布,损失函数是在这个预测分布下真实值的似然度,softmax 损失意味着真实标签的似然度。
在二分类问题中y = { + 1 , − 1 }在C 分类问题中y = { 1 , 2 , 3 , ⋅ ⋅ ⋅ , C }。可以看出分类问题输出的结果为离散的值。分类问题中的标签,是没有连续的概念的。每个标签之间的距离也是没有实际意义的,所以预测值和标签两个向量之间的平方差这个值不能反应分类这个问题的优化程度。比如分类 1,2,3, 真实分类是1, 而被分类到2和3错误程度应该是一样的,但是明显当我们预测到2的时候是损失函数的值为1/2而预测到3的时候损失函数为2,这里再相同的结果下却给出了不同的值,这对我们优化参数产生了误导。至于分类问题我们一般采取交叉熵损失函数(Cross-Entropy Loss Function )来进行评估。
2-2 在线性回归中,如果我们给每个样本()()(,)n n x y 赋予一个权重()n r ,
经验风险函数为()()
()21
深度学习目标检测
深度学习是一种通过模拟人脑神经网络原理来进行模式识别和学习的机器学习方法。目标检测是深度学习在计算机视觉领域中的重要应用之一,旨在从图像或视频中准确地定位和识别出感兴趣的目标物体。
在传统的计算机视觉方法中,目标检测通常是通过手工设计特征和使用分类器来实现的。但是,这种方法存在着很多局限性,如特征的选择和设计需要专业知识和经验,无法适应不同场景和目标的变化等。而深度学习通过自动学习特征和目标的表示,可以克服传统方法的这些限制,并在目标检测任务中取得了巨大的成功。
深度学习目标检测主要分为两个阶段:候选区域生成和目标分类。首先,通过使用深度神经网络模型,如卷积神经网络(CNN),在图像中生成一系列候选区域。这些候选区域通
常是由滑动窗口或选择性搜索等方法生成的,其中每个区域都被认为可能包含目标物体。然后,通过再次使用深度神经网络对这些候选区域进行目标分类和定位。
对于目标分类,常用的方法是使用卷积神经网络中的全连接层,将候选区域的特征与不同的目标类别进行匹配,并输出一个概率分布。一般来说,分类器会利用softmax函数对这些概率进
行标准化,最终确定每个候选区域所属的目标类别。
在目标定位方面,常用的方法是使用回归模型来预测目标的位置和大小。具体来说,回归模型会输出一个包含目标边界框的
四个坐标值的向量,用来精确定位目标的位置。
目标检测的深度学习模型通常需要大量的标注数据进行训练,以及大量的计算资源进行模型优化和推理。近年来,随着深度学习的快速发展,许多重要的目标检测算法被提出,如R-CNN、Fast R-CNN、Faster R-CNN、YOLO和SSD等。
yolo系列知识笔记
YOLO(YouOnlyLookOnce)是一种基于深度学习的目标检测算法,由Joseph Redmon等人于2015年提出。相较于传统的目标检测算法,YOLO能够实现实时目标检测,且准确率较高。在此笔记中,我们将介绍YOLO系列算法的基本原理及其变种。
一、YOLO v1
YOLO v1是YOLO系列的第一代算法,其主要思想是将目标检测问题转化为一个回归问题。具体而言,YOLO将图像分成S×S个网格(grid),每个网格负责检测该网格中是否存在目标,并预测目标的位置和类别。每个网格中预测B个边界框(bounding box),每个边界框预测5个参数:中心坐标x、y、宽度w、高度h以及目标得分。目标得分代表该边界框中存在目标的概率,是一个0到1之间的值。类别预测则是一个C维向量,表示目标属于C个类别中的哪一类。因此,每个网格的预测结果可以表示为:
$P_i$($object$) × $confidence$ × $P_j$($class$) ×
$B_{i,j}$
其中,$P_i$($object$)是一个二值变量,表示该网格中是否存在目标;$confidence$是该边界框的目标得分;$P_j$($class$)是一个C维向量,表示目标属于C个类别中的哪一类;$B_{i,j}$是一个长度为4的向量,表示该边界框的中心坐标和宽度、高度。
YOLO v1的损失函数包括两部分:定位误差和分类误差。定位误差是指预测框与实际框之间的误差,可以用均方差(MSE)来度量。
分类误差是指目标类别的误差,可以用交叉熵(Cross-Entropy)来度量。YOLO v1的总损失函数为:
⽬标检测——深度学习下的⼩⽬标检测(检测难的原因和
Tricks)
⼩⽬标难检测原因
主要原因
(1)⼩⽬标在原图中尺⼨⽐较⼩,通⽤⽬标检测模型中,⼀般的基础⾻⼲神经⽹络(VGG系列和Resnet系列)都有⼏次下采样处理,导致⼩⽬标在特征图的尺⼨基本上只有个位数的像素⼤⼩,导致设计的⽬标检测分类器对⼩⽬标的分类效果差。
(2)⼩⽬标在原图中尺⼨⽐较⼩,通⽤⽬标检测模型中,⼀般的基础⾻⼲神经⽹络(VGG系列和Resnet系列)都有⼏次下采样处理,如果分类和回归操作在经过⼏层下采样处理的特征层进⾏,⼩⽬标特征的感受野映射回原图将可能⼤于⼩⽬标在原图的尺⼨,造成检测效果差。
其他原因
(1)⼩⽬标在原图中的数量较少,检测器提取的特征较少,导致⼩⽬标的检测效果差。
(2)神经⽹络在学习中被⼤⽬标主导,⼩⽬标在整个学习过程被忽视,导致导致⼩⽬标的检测效果差。
Tricks
(1) data-augmentation.简单粗暴,⽐如将图像放⼤,利⽤ image pyramid多尺度检测,最后将检测结果融合.缺点是操作复杂,计算量⼤,实际情况中不实⽤;
(2)特征融合⽅法:FPN这些,多尺度feature map预测,feature stride可以从更⼩的开始;
(3)合适的训练⽅法:CVPR2018的SNIP以及SNIPER;
(4)设置更⼩更稠密的anchor,设计anchor match strategy等,参考S3FD;
(5)利⽤GAN将⼩物体放⼤再检测,CVPR2018有这样的论⽂;
(6)利⽤context信息,简历object和context的联系,⽐如relation network;
深度学习笔记(3)神经⽹络,学习率,激活函数,损失函数神经⽹络(NN)的复杂度
空间复杂度:
计算神经⽹络的层数时只统计有运算能⼒的层,输⼊层仅仅起到将数据传输进来的作⽤,没有涉及到运算,所以统计神经⽹络层数时不算输⼊层
输⼊层和输出层之间所有层都叫做隐藏层
层数 = 隐藏层的层数 + 1个输出层
总参数个数 = 总w个数 + 总b个数
时间复杂度:
乘加运算次数
学习率以及参数的更新:
w t+1=w t−lr∗∂loss ∂w t
指数衰减学习率的选择及设置
可以先⽤较⼤的学习率,快速得到较优解,然后逐步减⼩学习率,使模型在训练后期稳定。指数衰减学习率 = 初始学习率 * 学习率衰减率(当前轮数 / 多少轮衰减⼀次)
指数衰减学习率=初始学习率∗学习率衰减率
当前轮数
多少轮衰减⼀次
#学习率衰减
import tensorflow as tf
w = tf.Variable(tf.constant(5, dtype=tf.float32))
epoch = 40
LR_BASE = 0.2
LR_DECAY = 0.99
LR_STEP = 1
for epoch in range(epoch):
lr = LR_BASE * LR_DECAY**(epoch / LR_STEP)
with tf.GradientTape() as tape:
loss = tf.square(w + 1)
grads = tape.gradient(loss, w)
w.assign_sub(lr * grads)
print("After %2s epoch,\tw is %f,\tloss is %f\tlr is %f" % (epoch, w.numpy(), loss,lr)) After 0 epoch, w is 2.600000, loss is 36.000000 lr is 0.200000
目标检测详解
目标检测是计算机视觉中的重要研究领域,它旨在识别图片或视频中的物体与目标。它是智能视觉系统自动检测并定位可能存在的复杂物体的前提。通过深度神经网络的应用,目标检测发展迅速,技术和应用也变得日趋成熟。本文将详细阐述目标检测的概念、基本原理和最新应用,以便让读者能够更全面地理解这一技术。
首先,说明一下目标检测的概念。它是智能视觉系统自动检测并定位可能存在的复杂物体的前提。它利用机器学习和深度学习等新技术来区分待检测物体和其他非物体特征,并可以精准地从图像或视频中检测、识别物体,输出待检测物体的边界框。其次,要了解目标检测的基本原理。
目标检测的基本原理是利用深度神经网络(Deep Neural Network,DNN)处理大量样本图像,应用卷积神经网络(Convolutional Neural Network,CNN)建立模型,分析该模型中各个层次特征,获得待检测物体的边界框,进一步获取检测边界框概念,以预测物体的位置、大小、类别等信息。最后,介绍一下对目标检测的最新应用。
由于目标检测技术的精准度逐步提高,该技术已在各个领域的应用都得到发展,尤其是新兴领域。比如,在安防和多媒体行业,可以精准跟踪特定人员和危险物体,从而提升安全水平;在计算机辅助诊断(CAD)领域,可以方便医生对图像学检
查结果进行准确定位和诊断;在无人驾驶领域,可以识别并处理道路上行人、车辆和其他障碍物,指引车辆更安全地行驶;在智慧城市领域,可以设计智能家居自动识别家庭成员,根据他们的年龄和性别调整家庭温度、光照强度等,开启智慧家庭的新篇章。