关于神经网络:神经网络不再卷全靠变形金刚

108次阅读

共计 2089 个字符,预计需要花费 6 分钟才能阅读完成。

作者:Taying,牛津大学计算机科学业余博士
图源:Unsplash

卷积神经网络(CNN)始终是计算机视觉和图像处理的次要技术支柱。与传统的多层感知器(MLP)相比,卷积网络在二维邻域感知和平移同变性方面具备显著劣势。然而,最近在自然语言解决畛域刮起了一阵新趋势,越来越多的人开始用 Transformer 来取代递归神经网络,而这也让 CV 从业者对 Transformer 的后劲感到十分好奇。

不久前的ICLR 2021* 刚好就有一篇论文探讨了 Transformer 在 CV 畛域的利用前景,并率先提出了“视觉 Transformer”的概念,与卷积模型的理念天壤之别。

本文将带大家深入探讨 Transformer 的概念,特地是视觉 Transformer 及其与卷积的比拟。咱们还将简略介绍如何在 PyTorch 上训练 Transformer。

*注:国内学习表征会议(ICLR)是世界顶级的深度学习会议。

卷积网络有什么劣势?

为什么卷积网络在计算机视觉畛域如此受欢迎?答案就在于卷积的固有性质。卷积核可能将图片内邻近像素的特色汇集在一起,使模型可能在学习过程中将这些特色兼顾起来。此外,当咱们在图像中挪动卷积核时,核通过任何中央都能将矩阵内的特色用于分类(称为平移同变性,translation equivariance)。因而,卷积网络无需思考特色在图像中的地位就能提取特色,在过来几年中让图像分类工作呈现了重大进展。

但既然卷积网络曾经如此弱小,咱们为什么还须要 Transformer 呢?

自然语言解决中的 Transformer


图 1. Transformer 中的尺度变换点乘注意力机制和多头注意力机制. 源: https://arxiv.org/abs/1706.03…

Transformer 首先在自然语言解决畛域提出,论文为“Attention Is All You Need”(《你只是须要有点注意力而已》)。传统的 NLP 办法(如 RNNs 和 LSTMs)在计算任何预测时都会思考到短语内左近的词。然而,因为每次呈现新的输出时算法都须要思考到之前曾经呈现的所有输出,因而模型的预测速度并不算快。

Transformer 则利用了“注意力”这一概念。“注意力”某种程度上其实就是矢量词之间的相关性,模型利用这种相关性来计算出最终的预测后果。因为一个词与其余词的相关性独立于其余词之间的相关性,模型得以对所有词进行同时计算。由此,Transformer 进一步优化了深度网络的计算逻辑。通过同时思考所有的词及其相关性,其理论性能显著优于传统的递归办法。

此外,Transformer 还退出了“多头注意力”(multi-headed attention)机制,能够屡次并行运行注意力机制,并将拆散的向量串联成最终的输入后果。

视觉畛域的注意力转向

pip install vit-pytorch

肯定要确保 Pytorch 和 Torchvision 的版本已是最新。

"""Import the necessary libraries"""
import torch
from vit_pytorch import ViT

导入了咱们须要的库之后,咱们能够用如下代码创立一个 ViT:

"""
Create a visual transformer, declaring the number of classes, image size, etc.
Make sure that image_size is divisible by patch_size.
"""
v = ViT(
    image_size = 256,
    patch_size = 32,
    num_classes = 1000,
    dim = 1024,
    depth = 6,
    heads = 16,
    mlp_dim = 2048,
    dropout = 0.1,
    emb_dropout = 0.1
)

如果仅仅须要用 ViT 来进行推理(inference),应用以下代码即可:

"""
Feed in the image as a standard image model of size (batch, 3, image_size, image_size)
The output will be in the dimension of (batch_size, num_classes)
"""
preds = v(img)

如果你真的很想尝试本人去进一步训练 ViT,能够参考这篇文章中介绍的办法,通过“蒸馏”(distillation)来进行训练,缩小所需的数据量。前述的 vit-pytorch 仓库里即有提及相干代码。

后果


图 2. ViT 在多个大型数据集上的后果. 源: https://arxiv.org/abs/2010.11…

ViT 的原始论文曾经能够让咱们看到,ViT 的性能能够十分突出,但前提是肯定要用十分大型的数据集进行预训练,且预训练所须要的算力之多也是极为惊人。

结语

近年来,计算机视觉畛域始终在不断改进 Transformer,使其可能更加适应图像处理乃至三维点云工作的须要。最近的 ICCV 2021 亦呈现了如云 Transformer 和 Swin Transformer(会议最佳论文奖得主)这样的优良文章,表明注意力机制未然成为图像处理的新趋势。

更多信息请拜访格物钛官网

正文完
 0