解密Transformer中的Embedding层

背景

在Transformer架构中,Embedding层是整个模型的输入起点。它对输入的文本进行转换,将文本中的每个词或符号映射成连续向量空间中的向量。在面对Embedding时,我们常常带着如下疑问:

1. Embedding 是什么?

Embedding是一种关键的自然语言处理技术。它将文本中的每个词或符号映射为高维度的实数向量。这意味着每个词都被表明为一个向量,而不再是一个离散的符号。

2. 为什么需要 Embedding?

Embedding的出现解决了自然语言处理中的一些问题。第一,它将离散的文本数据转化为连续的向量表明,从而能够更好地处理文本信息。其次,Embedding保留了词汇之间的语义信息,这使得模型更容易捕捉词汇之间的关系。

3. Embedding 后的内容是什么?

Embedding后的内容是一系列实数向量。每个向量代表一个词或符号,并且这些向量之间具有必定的语义关系。模型使用这些向量来理解和处理文本数据,例如,可以用于文本分类、情感分析、机器翻译等任务。

4. 如何使用 PyTorch 构建 Embedding?

PyTorch是一个深度学习框架,借助于该框架提供的工具和算法,我们可以基于大量数据和特定算法训练出针对特定场景的模型。在下文中,我们使用PyTorch的nn模块来构建嵌入层,这是一种通用的构建嵌入层的方法。而像Word2Vec等模型/算法,则是在经过大量数据和专门的算法训练后得到的。PyTorch构建的嵌入层经过特定算法和大量数据的训练后,也可以生成类似于Word2Vec等模型的嵌入。

#安装依赖

!pip3 install -U PyTouch

#开始编码

import torch

import torch.nn as nn

import torch.nn.functional as F

from torch.autograd import Variable

import math

import matplotlib.pyplot as plt

import numpy as np

import copy

#表明潜入模型的维度,像open ai的embedding-002是1536维

model_dimension = 1536

#表明词汇表的大小,一般是表明这个可能出现的词的多少

vocab_size = 1000

#构建embedding 对象

#Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False, _weight=None)

#num_embeddings 表明符号数据的数量,列如您正在处理文本的潜入层,此时该参数表明词汇表的大小

#embedding-dim 表明潜入的维度,列如open-ai 的embedding-002,该参数的值是1536

embedding = nn.Embedding(vocab_size, model_dimension)

#构建需要处理的数据,一般是以NxN维的方式提供,即一个[n][n]的数组

# PyTorch 张量,是PyTorch的核心数据结构之一,他类似于多维数组或矩阵,超级适用于处理如图像、文本、序列等

# 优势如下:

# 数值计算:PyTorch张量是为数值计算而优化的,可以执行各种数学运算,如加法、乘法、矩阵乘法、梯度计算等。这使得PyTorch成为深度学习任务的理想选择。

# 自动求导:PyTorch的张量具有自动求导功能,也就是说,您可以在张量上执行操作,并且PyTorch会自动跟踪这些操作以计算梯度。这对于训练神经网络等需要反向传播的任务超级有用。

# GPU加速:PyTorch支持在GPU上执行张量计算,这可以显著提高深度学习模型的训练速度。您可以轻松地将张量从CPU转移到GPU上进行计算。

# 灵活性:PyTorch张量具有丰富的方法和函数,用于操作、索引、切片、连接、重塑和变换张量数据。这使得在深度学习任务中处理各种数据变得超级灵活。

# 深度学习框架集成:PyTorch张量是PyTorch深度学习框架的核心组件之一,可以与其他PyTorch模块(如神经网络层、优化器等)无缝集成。

# 丰富的功能:PyTorch张量支持各种功能,如广播(broadcasting)、张量拼接(tensor concatenation)、索引选择(indexing and selection)、元素级运算(element-wise operations)等。

#LongTensor 在 PyTorch 中主要用于存储整数值,一般用于表明分类标签、索引序列和符号数据的整数表明。这使得它在处理分类、自然语言处理和序列数据等任务时超级有用。

input = torch.LongTensor([[0, 2, 0, 5]])

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
-不想吃早飯_的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容