分类: 深度学习

Swish 激活函数简介

Swish 激活函数是一种在深度学习中广泛使用的激活函数,它最初作为 Sigmoid-weighted Linear Unit (SiLU) 在 GELU 论文中被提出。本文将介绍 Swish 的数学原理及其应用,并通过与其他激活函数的对比,分析其性质。1. 简介 在深度神经网络中,激活函数的选择对模型性能有着重要影响。从 Sigmoid 到 ReLU,再到 GELU,激活函数的发展体现了深度学习领域对非线性变换的不断探索。Swish 作为一个相对较新的激活函数,最初以 Sigmoid-weighted Linear Unit (SiLU) 的形式在 GELU 论文中被提出,后来被 Google...

GELU(Gaussian Error Linear Unit)激活函数简介

GELU 在深度学习领域,特别是在 BERT、GPT 等大型语言模型中有比较多的应用。本文介绍了 GELU(Gaussian Error Linear Unit)激活函数的理论和应用。从概率论视角出发,推导了 GELU 的数学形式及其导数,并通过与 ReLU、ELU 等经典激活函数的对比,分析了 GELU 的特性。1. 简介 在深度学习的发展历程中,激活函数扮演着至关重要的角色。从早期的 Sigmoid 到广泛使用的 ReLU,激活函数的选择直接影响着神经网络的性能。GeLU (Gaussian Error Linear Unit) 作为一种新型激活函数,在多个领域都展现出了优异的性能,并在 BERT、GPT 等大型语言模型中得到广泛应用。 概率视角 从概率视角看,GELU...

论文笔记:ASLFeat: Learning Local Features of Accurate Shape and Localization

本文是基于 D2-Net 的进一步改进,主要创新点如下: 1)使用 Deformable Convolution 来进行稠密的变换估计和特征提取 2)使用特征金字塔适应空间分辨率以及使用 low-level 细节来进行精确的特征点定位 1 Methods 1.1 Prerequisites 本文的网络设计基于以下两个工作:DCN 和 D2-Net,首先回顾这两个工作的主要思想: Deformable convolutional networks (DCN)可变形卷积 (Deformable Convolutional Networks, DCN) 的目的主要是学习动态感受野,对于传统卷积来说,其公式为: 其中 代表卷积的中心点坐标, 代表卷积 范围内的偏移量,...

CVPR 2021 Image Matching 挑战赛双冠算法回顾

借之前我们给公司提供的文章,总结一下前一段时间参赛的一些实验和思考。本文版权所有:旷视科技。原文链接:https://www.zhihu.com/question/32066833/answer/2041516754 Image Matching (图像匹配)是计算机视觉领域最基础的技术之一,它是指通过稀疏或者稠密特征匹配的方式,将两幅图像相同位置的局部信息进行关联。Image Matching 在很多领域均有广泛应用,比如机器人、无人车、AR/VR、图像/商品检索、指纹识别等等。 在今年刚刚结束的 CVPR 2021 Image Matching 比赛中,旷视 3D 组获得两冠一亚的成绩,本文介绍了他们的比赛方案、实验和一些思考。比赛介绍 图像匹配是指将两幅图像具有相同或者相似属性的内容或结构进行像素上的识别与对齐。一般而言,待匹配的图像通常取自相同或相似的场景或目标,或者具有相同形状或语义信息的其他类型的图像对,从而具有一定的可匹配性。 Image Matching Challenge本次 Image Matching Challenge(IMC) 比赛还是分为两个赛道 unlimited keypoints 和 restricted keypoints,即每张图片可提取特征点数量分别小于 8k 和...

论文笔记:Linear Attention Mechanism: An Efficient Attention for Semantic Segmentation

由于经典的 Dot product Attention 具有较大的空间和时间复杂度,虽然效果很好,但由于图像和视频输入的数据量经常比文字大很多,这种经典的 Attention 限制了在高分辨率图像中的应用。本文提出了一种线性的 Attention 模块,希望能够解决这样的问题同时在性能上不会有明显的损耗。 本文主要贡献点有: 1)提出了一种新的线性化 Attention 方式,能够将计算复杂度从  降低到  2)该 Attention 机制使得 Attention 与网络的结合更加通用和灵活; 3)在语义分割任务中,该 Attention 机制的引入在多种 baseline 上获得了性能提升。 1 METHODOLOGY A. Definition of Dot-Product Attention 给定一个输入的特征向量 ,其中  代表特征长度, 代表特征维度。那么 Dot-Product Attention...

Policy Gradient (策略梯度)

Policy Gradient (策略梯度) 是强化学习中的基础概念之一,在很多工作中都会使用(特别是对于可微化的工作)。本文内容主要来自于台大李宏毅的教学课件。 下载地址:1636956663-PPO (v3) 1 Policy of Actor 1.1 基本概念 强化学习是根据环境观测、自身动作以及反馈来学习网络的一种方式。它通常有以下一些概念:Policy 用  表示,它是一个深度神经网络,网络的参数为  Actor 用  表示,它是我们可以控制的动作。比如对于上面的游戏例子来说,我们每一步可以选择 left right fire 三种动作。它就是 Policy Gradient 学习的对象 Environment 表示环境,这是我们无法改变的。我们仅能对其进行观测 Observation Reward 用  表示,它是我们采用动作后从环境获得结果。比如对于上面的游戏的例子来说就是当前获得的分数。 State 用 表示,它是我们当前所处的状态 Trajectory 用  表示...

论文笔记:RAFT: Recurrent All-Pairs Field Transforms for Optical Flow

本文介绍了一种叫做 Recurrent All-Pairs Field Transforms (RAFT) 的光流网络,在数据集中取得了 SOTA 的结果。主要亮点如下: (1)State-of-the-art accuracy:本文在 KITTI 相对现有最好结果取得了 16% 的误差下降,达到 5.10%(F1)。在 Sintel 上取得了 30% 的误差下降(像素误差)。是目前最好的结果。 (2)Strong generalization:仅在仿真数据集训练时,RAFT 相比同样在仿真数据集训练的最好的网络结果有 40% 的误差下降。 (3)High efficiency: RAFT 在 1088×436...

论文笔记:Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics

Multi-Task Learning (MTL) 问题一个典型方法就是把所有的 Loss 放在一起优化,但是往往又需要设置不同权重。传统方法中往往根据不同 Loss 的量级等人为分析、实验等设置合理的权重,但是取得理想效果往往需要大量工作。本文提出了一种使用 Uncertainty 自动学习权重的方式。 如下图展示了一个典型的 Multi-Task Learning 的场景,同时学习 Semantic、Instance 和 Depth,这一场景包含了分类、特征学习、回归任务,比较典型,也是本文的示例:本文主要创新点如下: 1)一种创新的原则,利用同方差不确定性的多任务学习方法 2)一个统一的用于学习 semantic segmentation, instance segmentation 和 depth regression 的框架 3)展示了通过学习方法获得权重的有效性 1 Multi Task...

PyTorch Lighting 常见问题整理

0 系统版本 PyTorch Lighting 1.1.7 1 错误:object has no attribute '_metrics_to_agg' 当使用自定义的 Logger 时,如果出现上面的错误,一个很可能的原因是在自定义的 __init__ 函数中忘记调用 super().__init__(),正确的自定义初始化函数用法如下: Python class MyLogger(LightningLoggerBase):def __init__(self, a): ...

每次训练自动备份源码的脚本

我们运行深度学习任务时,常常要改改代码就跑个实验,同时跑很多个,时间久了可能会忘记 TensorBoard 上相应的训练任务都改了什么。 这种情况下,记录下每次运行任务时的源码状态就变得非常有必要。这里有很多方法,比如用git保存相应版本之类的。由于通常情况下深度学习的代码文件都非常少(可能也就几十kb),我这里给出一个最简单粗暴的方法:每次将特定扩展名的文件自动备份到另一个目录。 1 脚本源码 直接给出脚本源码,我这里保存其为 train.sh Shell #!/bin/bashcurrentdir=${PWD##*/}echo "["${currentdir}"] command line is : " "$*"echo '********************************' echo 'Begin backup source codes'# backup all necessary files # "%Y-%m-%d-%H-%M-%S" time=$(date "+%Y-%m-%d-%H-%M-%S")# echo ${time}destpath='../'${currentdir}'_backups/'${time}'/'echo...