激活函数

【全文翻译】YOLOv4:目标检测的最佳速度和准确性

隐身守侯 提交于 2020-04-26 16:52:14
论文连接: https://arxiv.org/abs/2004.10934 翻译的很多都是直译的,不准的地方请欢迎大佬指正 摘要 有许多功能可以提高卷积神经网络(CNN)的准确性。需要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论证明。一些功能仅在某些模型上运行,并且仅在某些问题上运行,或者仅在小规模数据集上运行; 而某些功能(例如批归一化和残差连接)适用于大多数模型,任务和数据集。我们假设此类通用功能包括加权残差连接(WRC),跨阶段部分连接(CSP),跨小批量标准化(CmBN),自对抗训练(SAT)和Mish激活函数。我们使用以下新功能:WRC,CSP,CmBN,SAT,Mish激活,Mosaic数据增强,CmBN,DropBlock正则化和CIoU_loss,并结合使用其中的一些功能以实现最新的结果:43.5%的AP(65.7 在Tesla V100上,MS COCO数据集的实时速度约为65 FPS。源代码位于 https://github.com/AlexeyAB/darknet 。 Introduction 大多数基于CNN的物体检测器仅适用于推荐系统。例如,通过慢速精确模型执行通过城市摄像机搜索空闲停车位的过程,而汽车碰撞警告则与快速不准确的模型有关。提高实时物体检测器的准确性,不仅可以将它们用于生成推荐系统,还可以用于独立的流程管理并能减少人工输入

重磅更新!YoloV4最新论文!解读yolov4框架

谁说胖子不能爱 提交于 2020-04-26 16:06:30
论文地址和代码 https://arxiv.org/abs/2004.10934v1 代码: https://github.com/AlexeyAB/darknet 摘要: 据说有许多功能可以提高卷积神经网络(CNN)的准确性。 需要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论证明。 某些功能仅在某些模型上运行,并且仅在某些问题上运行,或者仅在小型数据集上运行; 而某些功能(例如批归一化和残差连接)适用于大多数模型,任务和数据集。 我们假设此类通用功能包括加权残差连接(WRC),跨阶段部分连接(CSP),跨小批量标准化(CmBN),自对抗训练(SAT)和Mish激活。 我们使用以下新功能:WRC,CSP,CmBN,SAT,Mish激活,马赛克数据增强,CmBN,DropBlock正则化和CIoU丢失,并结合其中的一些功能来实现最新的结果:43.5%的AP(65.7 在Tesla V100上,MS COCO数据集的实时速度约为65 FPS。 核心中的核心:作者将Weighted-Residual-Connections(WRC), Cross-Stage-Partial-connections(CSP), Cross mini-Batch Normalization(CmBN), Self-adversarial-training(SAT),Mish

《机器学习》西瓜书第五章神经网络

被刻印的时光 ゝ 提交于 2020-04-26 04:48:08
本章主要介绍了神经元模型、一些典型的神经网络算法等 5.1 神经元模型 “神经网络是由具有 适应性 的简单单元组成的 广泛并行互连 的网络,他的组织能够模拟生物神经系统对真实世界物体作出的交互反应” 神经网络中最基本的成分是神经元模型。沿用至今的“ M-P神经元模型 ”:神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带 权重 的链接进行传递,神经元接受到的总输入值与神经元的阙值进行比较,然后通过“ 激活函数” 处理以产生神经元的输出。常用“Sigmoid函数”作为激活函数。许多这样的神经元按照一定的层次结构连接起来,就得到了神经网络。 5.2感知机与多层网络 感知机由 两层神经元 组成, 输入层 接受外界输入信号后传递给输出层, 输出层 是M-P神经元,亦称“阙值逻辑单元”。感知机能够很容易地实现逻辑与、或、非运算。 给定训练集,权重ω i 以及阙值θ可通过学习得到。阙值θ可看做一个固定输入为-1.0的“哑结点”,所对应的连接权重ω n+1 ,这样就统一为权重的学习。 感知机的学习规则:对训练样例( x ,y),若当前感知机输出为 y^,则感知机权重: ω i ← ωi +Δωi Δωi = η(y - y^)x i ;其中η属于(0,1)称为学习率。 感知机只有输出神经元进行激活函数处理,只拥有一层功能神经,学习能力非常有限。若两类模式线性可分

神经网络入门回顾(感知器、多层感知器)

我是研究僧i 提交于 2020-04-25 05:25:12
神经网络属于“联结主义”,和统计机器学习的理论基础区别还是很不一样。 以我自己的理解,统计机器学习的理论基于统计学,理论厚度足够强,让人有足够的安全感;而神经网络的理论更侧重于代数,表征能力特别强,不过可解释性欠佳。 这两个属于机器学习的两个不同的流派,偶尔也有相互等价的算法。 本文回顾神经网络最简单的构件:感知器、多层感知器。一些简单的代码实践可以参考: Python 实现感知器的逻辑电路(与门、与非门、或门、异或门) 。 感知器 感知器 是二类分类的线性分类模型,将实例划分为正负两类的分离超平面(separating hyperplane),属于判别模型。 感知器基于 线性阈值单元 (Linear Threshold Unit, LTU )构件的。以下是 LTU: LTU 相当于对输入做一个 线性组合 ,再加一个 阶跃函数 。 常用的阶跃函数是 Heaviside 和 Sign。 哪怕只有一个 LTU 也可以作为简单的线性二分类器,类似于 逻辑回归 或者 线性 SVM 。 感知器 就是由一层 LTU 组成。以下是一个多输出分类器。 为了求得感知器的权重参数,需要确定一个学习策略,即定义损失函数并将损失函数极小化。有这样几种选择: 1. 误分类点的总数:损失函数不是 w, b 的连续可导函数,不易优化。 2. 误分类点到超平面的总距离:感知器所采用的损失函数。 感知器的损失函数

推荐系统系列(五):Deep Crossing理论与实践

偶尔善良 提交于 2020-04-25 01:54:41
背景 特征工程是绕不开的话题,巧妙的特征组合也许能够为模型带来质的提升。但同时,特征工程耗费的资源也是相当可观的,对于后期模型特征的维护、模型线上部署不太友好。2016年,微软提出Deep Crossing模型,旨在解决特征工程中特征组合的难题,降低人力特征组合的时间开销,通过模型自动学习特征的组合方式,也能达到不错的效果,且在各种任务中表现出较好的稳定性。 与之前介绍的FNN、PNN不同的是,Deep Crossing并没有采用显式交叉特征的方式,而是利用残差网络结构挖掘特征间的关系。本文将对DeepCrossing从原理到实现细节进行详细分析。 分析 1. DeepCrossing模型结构 <div align=center><img src='https://img2018.cnblogs.com/blog/955208/201911/955208-20191109202012738-359876410.png'></div> 整个模型包含四种结构:Embedding,Stacking,Residual Unit,Scoring Layer。 论文中使用的目标函数为 $logloss$ :$logloss=-\frac{1}{N}\sum_{i=1}^{N}(y_ilog(p_i)+(1-y_i)log(1-p_i))$ ,在实际应用中,可以灵活替换为其他目标函数。

写给程序员的机器学习入门 (三)

依然范特西╮ 提交于 2020-04-24 13:10:10
生物神经元与人工神经元 在了解神经元网络之前,我们先简单的看看生物学上的神经元是什么样子的,下图摘自维基百科: (因为我不是专家,这里的解释只用于理解人工神经元模拟了生物神经元的什么地方,不一定完全准确) 神经元主要由细胞体和细胞突组成,而细胞突分为树突 (Dendrites) 和轴突 (Axon),树突负责接收其他神经元输入的电流,而轴突负责把电流输出给其他神经元。一个神经元可以通过树突从多个神经元接收电流,如果电流没有达到某个阈值则神经元不会把电流输出,如果电流达到了某个阈值则神经元会通过轴突的突触把电流输出给其他神经元,这样的规则被称为全有全无律。输入电流达到阈值以后输出电流的状态又称为到达动作电位,动作电位会持续 1 ~ 2 毫秒,之后会进入约 0.5 毫秒的绝对不应期,无论输入多大的电流都不会输出,然后再进入约 3.5 毫秒的相对不应期,需要电流达到更大的阈值才会输出,最后返回静息电位。神经元之间连接起来的网络称为神经元网络,人的大脑中大约有 860 亿个神经元,因为 860 亿个神经元可以同时工作,所以目前的计算机无法模拟这种工作方式 (除非开发专用的芯片),只能模拟一部分的工作方式和使用更小规模的网络。 计算机模拟神经元网络使用的是人工神经元,单个人工神经元可以用以下公式表达: 其中 n 代表输入的个数,你可以把 n 看作这个神经元拥有的树突个数,x

深度学习之循环神经网络(RNN)

冷暖自知 提交于 2020-04-24 09:23:39
循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络,适合用于处理视频、语音、文本等与时序相关的问题。在循环神经网络中,神经元不但可以接收其他神经元的信息,还可以接收自身的信息,形成具有环路的网络结构。 循环神经网络的参数学习可以通过随时间反向传播算法来学习,即按照时间的逆序把误差一步步往前传递。而当输入序列比较长时,会产生梯度爆炸或梯度消失问题,这也叫做长期依赖问题。为了解决这个问题,门控机制被引入来改进循环神经网络,也就是长短期记忆网络(LSTM)和门控循环单元(GRU)。 好了,看了上面概括性的描述,心头一定有许多疑问冒出来: 1、为什么循环神经网络拥有记忆能力呢? 2、循环神经网络的具体结构是什么样的? 3、循环神经网络怎么用随时间反向传播算法来学习? 4、循环神经网络的长期依赖问题是怎么产生的? 5、针对不同的任务,循环神经网络有哪些不同的模式? 这篇文章整理以上几个问题的答案。 一、循环神经网络的记忆能力 前馈神经网络是一个静态网络,信息的传递是单向的,网络的输出只依赖于当前的输入,不具备记忆能力。 而循环神经网络通过使用带自反馈的神经元,使得网络的输出不仅和当前的输入有关,还和上一时刻的输出相关,于是在处理任意长度的时序数据时,就具有短期记忆能力。 给定一个输入序列

TensorFlow实现XOR

自作多情 提交于 2020-04-24 09:17:23
TensorFlow基础 1、概念 TF使用图表示计算任务,图包括数据(Data)、流(Flow)、图(Graph) 图中节点称为op,一个op获得多个Tensor Tensor为张量,TF中用到的数据都是Tensor 图必须在 会话 中启动 示例 计算两个矩阵的乘积, x = tf.constant([[1.0,2.0,3.0],[1.0,2.0,3.0],[1.0,2.0,3.0]]) y = tf.constant([[0,0,1.0],[0,0,1.0],[0,0,1.0]]) z = tf.matmul(x3,y3) # Session激活z,得到计算结果 with tf.Session() as sess: print(sess.run(z)) 2、Tensor类型 (1)常量 值不可变 constant( value,(数值) dtype=None,(数据类型) shape=None,(指定形状) name='Const',(命名) verify_shape=False() ) 代码 x = tf.constant([[1.0,2.0,3.0],[1.0,2.0,3.0],[1.0,2.0,3.0]],dtype=tf.float32,shape=[3,3],name='x') # 简写 x = tf.constant([[1.0,2.0,3.0],[1.0,2.0

深度学习之前馈神经网络(前向传播和误差反向传播)

て烟熏妆下的殇ゞ 提交于 2020-04-24 08:24:06
这篇文章主要整理三部分内容,一是常见的三种神经网络结构:前馈神经网络、反馈神经网络和图网络;二是整理前馈神经网络中正向传播、误差反向传播和梯度下降的原理;三是梯度消失和梯度爆炸问题的原因及解决思路。 一、神经网络结构 目前比较常用的神经网络结构有如下三种: 1、前馈神经网络 前馈神经网络中,把每个神经元按接收信息的先后分为不同的组,每一组可以看做是一个神经层。每一层中的神经元接收前一层神经元的输出,并输出到下一层神经元。整个网络中的信息是朝着一个方向传播的,没有反向的信息传播(和误差反向传播不是一回事),可以用一个有向无环图来表示。 前馈神经网络包括全连接前馈神经网络和卷积神经网络。 前馈神经网络可以看做是一个函数,通过简单非线性函数的多次复合,实现输入空间到输出空间的复杂映射。 2、反馈神经网络 反馈神经网络中神经元不但可以接收其他神经元的信号,而且可以接收自己的反馈信号。和前馈神经网络相比,反馈神经网络中的神经元具有记忆功能,在不同时刻具有不同的状态。反馈神经网络中的信息传播可以是单向也可以是双向传播,因此可以用一个有向循环图或者无向图来表示。 常见的反馈神经网络包括循环神经网络、Hopfield网络和玻尔兹曼机。 而为了进一步增强记忆网络的记忆容量,可以映入外部记忆单元和读写机制,用来保存一些网络的中间状态,称为记忆增强网络,比如神经图灵机。 3、图网络

前向传播算法(Forward propagation)与反向传播算法(Back propagation)

末鹿安然 提交于 2020-04-24 08:21:35
虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解。因此特意先对深度学习中的相关基础概念做一下总结。先看看前向传播算法(Forward propagation)与反向传播算法(Back propagation)。 1.前向传播 ​ ​ 如图所示,这里讲得已经很清楚了,前向传播的思想比较简单。 举个例子,假设上一层结点i,j,k,…等一些结点与本层的结点w有连接,那么结点w的值怎么算呢?就是通过上一层的i,j,k等结点以及对应的连接权值进行加权和运算,最终结果再加上一个偏置项(图中为了简单省略了),最后在通过一个非线性函数(即激活函数),如ReLu,sigmoid等函数,最后得到的结果就是本层结点w的输出。 最终不断的通过这种方法一层层的运算,得到输出层结果。 对于前向传播来说,不管维度多高,其过程都可以用如下公式表示: a2=σ(z2)=σ(a1∗W2+b2)a2=σ(z2)=σ(a1∗W2+b2) 其中,上标代表层数,星号表示卷积,b表示偏置项bias,σ表示激活函数 。 2.反向传播算法(Back propagation) BackPropagation算法是多层神经网络的训练中举足轻重的算法。简单的理解,它的确就是复合函数求偏导的链式法则,但其在实际运算中的意义比链式法则要大的多。要回答题主这个问题“如何直观的解释back