Deep Learning

CATEGORY ARCHIVE
机器学习 Hinge Loss Hinge的叫法来源于其损失函数的图形,为一个折线,通用函数方式为: [公式] Hinge可以解 间距最大化 问题,带有代表性的就是svm,最初的svm优化函数如下: [公式] 将约束项进行变形则为: [公式] 则可以将损失函数进一步写为: [公式] 因此svm的损失函数可以看成L2Norm和Hinge损失误差之和. 交叉熵 从熵来看交叉熵损失 信息量 信息量来衡量一个事件的不确定性,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小。 设𝑋是一个离散型随机变量,其取值为集合 X=x_0,x_1,…,x_n ,则其概率分布函数为 p(x)=Pr(X=x),x∈X ,则定义事件 𝑋=𝑥_0 的信息量为 [公式] 当 𝑝(𝑥_0)=1 时,该事件必定发生...
深度学习领域中,通常将数据标注为hard label,但事实上同一个数据包含不同类别的信息,直接标注为hard label会导致大量信息的损失,进而影响最终模型取得的效果。本文首先探讨一下hard label和soft label之间的关系,然后介绍一下如何用可靠的方法得到蕴含更多信息的soft label,其中主要包含Label Smoothing和Knowledge Distillation两种经典方法。 Hard Label vs Soft Label hard label更容易标注,但是会丢失类内、类间的关联,并且引入噪声。 soft label给模型带来更强的泛化能力,携带更多的信息,对噪声更加鲁棒,但是获取难度大。 Label Smoothing Softmax Cross En...
现代深度学习库对大多数操作都具有生产级的、高度优化的实现,这并不奇怪。但这些库究竟是什么魔法?他们如何能够将性能提高100倍?究竟怎样才能“优化”或加速神经网络的运行呢?在讨论高性能/高效DNNs时,我经常会问(也经常被问到)这些问题。 在这篇文章中,我将尝试带你了解在DNN库中卷积层是如何实现的。它不仅是在模型中最常见的和最重的操作,我还发现卷积高性能实现的技巧特别具有代表性——一点点算法的小聪明,非常多的仔细的调优和低层架构的开发。 我在这里介绍的很多内容都来自Goto等人的开创性论文:Anatomy of a highperformance matrix multiplication,该论文为OpenBLAS等线性代数库中使用的算法奠定了基础。 最原始的卷积实现 “过早的优化是万恶之源...
softmax初探 在机器学习尤其是深度学习中,softmax是个非常常用而且比较重要的函数,尤其在多分类的场景中使用广泛。他把一些输入映射为01之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚好为1。 首先我们简单来看看softmax是什么意思。顾名思义,softmax由两个单词组成,其中一个是max。对于max我们都很熟悉,比如有两个变量a,b。如果ab,则max为a,反之为b。用伪码简单描述一下就是 if a b return a; else b。 另外一个单词为soft。max存在的一个问题是什么呢?如果将max看成一个分类问题,就是非黑即白,最后的输出是一个确定的变量。更多的时候,我们希望输出的是取到某个分类的概率,或者说,我们希望分值大的那一项被经常取到,而分值较小的那...
本文仅对一些常见的优化方法进行直观介绍和简单的比较,各种优化方法的详细内容及公式只好去认真啃论文了,在此我就不赘述了。 SGD 此处的SGD指minibatch gradient descent,关于batch gradient descent, stochastic gradient descent, 以及 minibatch gradient descent的具体区别就不细说了。现在的SGD一般都指minibatch gradient descent。 SGD就是每一次迭代计算minibatch的梯度,然后对参数进行更新,是最常见的优化方法了。即: [公式] 其中, [Math] 是学习率, g_t 是梯度 SGD完全依赖于当前batch的梯度,所以 [Math] 可理解为允许当前bat...
池化: 池化函数使用某一位置的相邻输出的总体统计特征来代替网络在该位置的输出。本质是 降采样,可以大幅减少网络的参数量。 常用的池化有:均值池化(mean pooling)、最大池化(max pooling)。 pooling操作没有参数量!!! 下面来说说这两种池化的区别与作用: 均值池化 主要用来抑制邻域值之间差别过大,造成的方差过大。 如,输入(2,10),通过均值池化后是(6), 对于输入的整体信息保存的很好,在计算机视觉中:因为一般前景的值大于背景,并且背景较多,所以对背景的保留效果好 反传 mean pooling的前向传播就是把一个patch中的值求取平均来做pooling,那么反向传播的过程也就是把某个元素的梯度等分为n份分配给前一层,这样就保证池化前后的梯度(残差)之和保持...
Dropout的运作方式 在神经网络的训练过程中,对于一次迭代中的某一层神经网络,先随机选择中的一些神经元并将其临时隐藏(丢弃),然后再进行本次训练和优化。在下一次迭代中,继续随机隐藏一些神经元,如此直至训练结束。由于是随机丢弃,故而每一个minibatch都在训练不同的网络。 在训练时,每个神经单元以概率 𝑝 被保留(Dropout丢弃率为 1−𝑝 );在预测阶段(测试阶段),每个神经单元都是存在的,权重参数 𝑤 要乘以 𝑝 ,输出是: 𝑝𝑤 。示意图如下: 预测阶段需要乘上 p 的原因: 前一层隐藏层的一个神经元在dropout之前的输出是 x ,训练时dropout之后的期望值是 E=px+0(1−p) ; 在预测阶段该层神经元总是激活,为了保持同样的输出期望值并使下一层也得到同样的结...
1 2