| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 深度学习:论文阅读:(ICLR-2021)Vision Transformer -> 正文阅读 |
|
[人工智能]深度学习:论文阅读:(ICLR-2021)Vision Transformer |
这里写目录标题论文详情名称:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 预备知识- Self-Attention和Multi-Head AttentionSelf-Attention1 注意力函数: 一个将一个 query 和一些 key - value 对 映射成一个输出的函数,其中所有的 query、key、value 和 output 都是一些向量。 2 输出:output 是 value 的一个加权和 --> 输出的维度 == value 的维度。 3 权重:output 中 value 的权重 = 查询 query 和对应的 key 的相似度 or compatibility function 4 注意力的具体计算是:对每一个 query 和 key 做内积,然后把它作为相似度 attention = softmax( 两个向量的内积值 / sqrt(dk)) * V ,dk 是向量的长度 使用 softmax :一个 query 给 n 个 key - value pair ,这个 query 会跟每个 key - value pair 做内积,会产生 n 个相似度值。传入 softmax 得到 n 个非负、求和为 1 的权重值。把 softmax 得到的权重值 与 value 矩阵 V 相乘 得到 attention 输出。 因为 softmax 最后的结果是希望 softmax 的预测值,置信的地方尽量靠近,不置信的地方尽量靠近零,以保证收敛差不多了。这时候梯度就会变得比较小,那就会跑不动。 5 输入:encoder 的注意力层,有三个输入,它分别表示的是key、value 和 query。 6 总结:输入了 n 个 query,每个 query 会得到一个输出,那么会有 n 个输出。 Multi-head attention与其做一个单个的注意力函数,不如说把整个 query、key、value 整个投影 project 到 1个低维,投影 h 次。然后再做 h 次的注意力函数,把每一个函数的输出 拼接在一起,然后 again projected,会得到最终的输出。
multi-head attention 给 h 次机会去学习 不一样的投影的方法,使得在投影进去的度量空间里面能够去匹配不同模式需要的一些相似函数,然后把 h 个 heads 拼接起来,最后再做一次投影。
VIT主要思想将原始图片进行均匀的分成若干个patch,,每个小块可以看做成NLP当中的词,把patch展平成序列,再把分割后的patch输入到原始Transformer模型的编码器部分中,最后通过正常的全连接层对图片进行分类 主要部分主要包括以下几个部分:数据处理部分,Patch编码,位置编码,分类等模块。 过程1 将输入的图像进行patch的划分 step1. 图像划分Patch我们假设原始的输入数据是 HxWxC的大小,对原始的数据,先分块,再展平。假设每个Patch的长宽为P,那么分块的数目为:N=HxW/(PxP) step2.Linear Projection of Flatted Patches接着对每个向量都做一个线性变换(即全连接层),压缩维度为D,这里我们称其为 Patch Embedding。 step3. Patch+Position Embedding
假设我们按照论文切成了9块,但是在输入的时候变成了10个向量。这是人为增加的一个向量。因为传统的Transformer采取的是类似seq2seq编解码的结构。而ViT只用到了Encoder编码器结构,缺少了解码的过程,假设你9个向量经过编码器之后,你该选择哪一个向量进入到最后的分类头呢? step4. Transformer Encoder
step5. MLP Head分类头的意思就是:特征提取工作已经全部完成,现在你要做分类就加上对应的操作。(同CNN特征提取层后的Linear层+Softmax进行分类预测) 分类头很简单,加入了LayerNorm和两层全连接层实现的,采用的是GELU激活函数。 总结流程一个图片224x224,分成了49个32x32的patch; 缺点
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 1:23:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |