Vision Transformer
Vision Transformer
在深度学习领域,卷积神经网络(CNN)是处理图像任务的主流模型。然而,CNN的局限性在于其固定的局部感受野和全局池化操作,这使得CNN在处理长距离依赖的任务上表现不佳。而自然语言处理领域,由于序列模型(如LSTM、Transformer)的成功应用,使得人们开始思考是否可以将序列模型应用到图像领域。因此,Vision Transformer(ViT)应运而生。
方法
ViT的核心思想是将图像分割成固定大小的图块,然后将这些图块展平成一维向量,作为输入序列。然后将这些序列输入到Transformer模型中,通过多层的Transformer模型来学习图像的表示。ViT的结构如下图所示:
可以看到,基本上就是原始的Transformer Encoder模型,只是将输入从文本序列变成了图像序列。将图片大小分割成固定大小的图块,然后将这些图块展平成一维向量,加入位置编码信息,然后输入到Transformer模型中。位置编码采用了Bert的思想,位置编码是通过模型学习得到的,并且在输入序列的开头默认加入了一个特殊的CLS token(类似于Bert中的[CL ...
PyTorch
使用Image读取图片
123456from PIL import Image# 读取图片img_path = 'data/1.jpg'img = Image.open(img_path)# 显示图片img.show()
png格式是四个通道,RGB+alpha,alpha表示透明度,alpha=0表示完全透明,alpha=255表示完全不透明。所以,需要调用image = image.convert(‘RGB’)方法将图片转换为RGB格式,保留其颜色通道。
读取一个目录的文件
12345678import osdir_path = 'data/train'# 读取该目录下的所有文件名称path_list = os.listdir(dir_path)# 将文件名称和路径拼接path = os.path.join(dir_path, path_list[0])img = Image.open(path)img.show()
TensorBoard:数据可视化工具 + transforms
12345678from torch.utils.tenso ...
对比学习
对比学习
对比学习是一种自监督学习方法,它的目标是学习数据的表示,使得相似的样本在表示空间中更加接近,而不相似的样本在表示空间中更加远离。对比学习的核心思想是通过最大化相似样本的相似性,最小化不相似样本的相似性,来学习数据的表示。
例如,在一个新的环境中,有两只猫和一只狗,此时你并不认识猫和狗,即并没有猫与狗的标签。但是你会发现,相比于狗来说,两只猫之间的相似度更高。即在你不理解标签情况下,通过对比的方式得知两只猫更相似,例如我们下意识发现两只猫的耳朵都是竖着的,而狗的耳朵是下垂的;或者我们可以发现狗身上没有斑纹而猫身上的斑纹比较多。通过对比的方式让我们可以在更高级的特征方面理解图像 (High-level features),例如在原本的有监督任务中,我们仅仅是通过大规模样本的数据训练一个表征的模型,这个模型只关注于在样本下猫的特征,而缺少了关注类之间不同的高级特征。
为什么我们需要对比学习?或者说需要无监督、自监督或半监督学习?绝大多数情况下,例如人脸数据集,或者医学影像数据集,这些数据集都是大规模的数据集,我们往往无法,或者没有精力、代价去将全部的数据集都作标注。通过网络爬虫 ...
BERT
BERT:Bidirectional Encoder Representations from Transformers
BERT是将词语转换为向量的模型,诞生源于Transformer。由于Transformer的Encoder能将语言的意义很好的抽离出来,那么将Encoder部分独立,也许能很好的对语言做出表示。因此,BERT的核心部分就是Encoder,除此之外,BERT还结合了ELMo的思想,ELMo的核心部分是由双向LSTM组成,BERT结合两者的优点,核心部分由双向Encoder组成。
Bert诞生于2018年,此后在各类的NLP比赛中疯狂屠榜,是集大成者,公认的里程碑。
单向编码和双向编码
单向编码:只能看到当前时刻之前的词,不能看到当前时刻之后的词。
双向编码:可以看到当前时刻之前的词,也可以看到当前时刻之后的词。
Bert的参数
Bert采用双向编码,Bert的参数量很大,因此Bert的训练时间很长,训练花费大,我们大多数情况下都是使用预训练好的Bert模型,然后在此基础上进行微调。
bert参数:
L = 12,H = 768,A = 12,参数量为1.1亿。
L ...
Transformer
Transformer正在席卷NLP领域,打破多项NLP记录,推动技术的最前沿,被应用于机器语言翻译、会话聊天机器人,甚至是更强大的搜索引擎。现在,深度学习领域热衷于Transformer。
Self-attention机制
前言:输入是一系列的向量
输入是N个向量,对应N个输出,例如句子的词性标注
输入是N个向量,对应一个输出,例如句子情感分析
输入是N个向量,对应N’个输出(seq2seq),例如机器翻译
自注意力机制
N个输入->N个输出
自注意力机制:把焦点聚焦在比较重要的事物上,而不是把注意力平均分配给所有事物。
每个输入都会与其他输入进行交互,得到一个输出,但是也不是其他全部输入都会产生一定影响,而是该输入相关度较高的输入才会产生。怎么衡量相关度呢?就是通过自注意力机制。
有两种方式可以计算相关度,我们采取点积的形式。
我们使用qiq_iqi(查询),去与每个kik_iki进行点积,获得相似度,之后使用soft-max函数,得到概率,soft-max也可以换成其他函数。
使用soft-max求概率时会有一个问题,就是如果值的分布相差很大,在数量级较 ...
简要介绍视频
简析视频概念
帧率
帧率是指视频中每秒钟的帧数,单位是fps(Frame Per Second)。帧率越高,视频越流畅,但是视频的大小也越大。
分辨率
分辨率是指视频的宽度和高度,单位是像素。分辨率越高,视频越清晰,但是视频的大小也越大。常见的分辨率有480p、720p、1080p、2K、4K、8K等。
码率
码率是指视频每秒钟的数据量,单位是kbps(Kilo Bit Per Second)。码率越高,视频越清晰,但是视频的大小也越大。
BD蓝光盘能够装下25-128G的数据,DVD光盘能够装下4.7-15.8G的数据,CD光盘能够装下650-700M的数据。BD蓝光盘的视频码率一般为20-40Mbps,DVD光盘的视频码率一般为5-10Mbps,CD光盘的视频码率一般为1.2Mbps。BD蓝光盘的视频码率比DVD光盘的视频码率高4倍,比CD光盘的视频码率高20倍。
一般来说,码率达到3Mbps左右,效果还可以。
色深
色深是指视频中每个像素的颜色数,单位是bit。色深越高,视频的颜色越丰富,但是视频的大小也越大。常见的色深有8bit、10bit、12bit等。
视频编码/编码格式 ...
CS50
CS50哈佛大学计算机科学导论
动态规划
动态规划
动态规划(Dynamic Programming,DP):将一个复杂的问题分解为若干个子问题,同时保存子问题的答案,使得每个子问题只求解一次,最终获得原问题的解。
动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区别于贪心算法,贪心算法没有状态推导,而是从局部直接选最优的。
步骤
确定dp数组(dp table)以及下标的含义
确定递推公式
初始化dp数组
确定遍历顺序
举例推导dp数组
适用条件
动态规划适用于有重叠子问题和最优子结构性质的问题。
重叠子问题
重叠子问题:在使用分治算法时,相同的子问题会被重复计算多次。
最优子结构
最优子结构:一个问题的最优解包含其子问题的最优解。
0-1背包
问题描述
有N件物品和一个最多能承受重量为W的背包,第i件物品的重量是weight[i],价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包可使价值总和最大?
完全背包
问题描述
有N件物品和一个最多能背重量为W的背包,第i件物品的重量是weight[i],价值是value[i]。每件物品无限个,求解将哪些物品装入背包可使价值总和最大?
语言模型
神经网络语言模型
用神经网络的方法来训练语言模型,解决语言模型的两个问题。
语言模型的两个问题:
P(“后藤一里更大”)和P(“后藤二里更大”)哪个概率更大。
后藤一里的外号是____。这个空格应该填什么?
独热编码(one-hot encoding)
独热编码就是用一个向量来表示一个词,这个向量的维度是词典的大小,向量值为1的位置是词在词典中的索引,其余的位置都是0。这样的向量表示方法是稀疏的,因为大部分维度都是0。假设词典的维度为8,则独热编码为下图所示:
从上图可以得知,独热编码占用的内存空间大,而且向量之间的相似度(向量之间的距离、夹角等)无法计算(每个向量的相似度都一样)。因此,独热编码不适合用于神经网络的输入。
Word Embedding
有没有一种好的方法来表示词呢?答案是有的,那就是词向量。我们可以将独热编码乘以一个向量Q,得到一个新的向量,这个向量就是词向量。这种方法叫做Word Embedding。将文字转换成向量,这样就可以用向量来表示词。
假设一个词的独热编码为[0,0,0,1,0][0,0,0,1,0][0,0,0,1,0],我们可以乘以一个矩阵QQQ ...