早期的NLP除了分词外,还有以下内容 - 词性标注,名词,动词,形容词 ... - NER,命名实体识别,人名,地名,公司名称等 - 信息提取 - 句法分析,语义分析 - 动名词短语挖掘 其处理方法更多是靠规则,工作量比较大 有了transformer,尤其是大模型之后,文本类工作基本由交大模型处理了... - 甚至连分词都不用做了,扔给大模型一段文本,告诉大模型要做什么可以了 |
|
|
num_embeddings nn.Embedding中num_embeddings理论上指索引的个数, 但这有个前提,索引编码从0开始,并且一个连一个, 不能跳跃,一般情况下也不会跳跃,但跳跃也没有关系 实际上num_embeddings指提供的索引中的最大值 比如,本例如果num_embeddings低于8将报错,而实际上的索引个数只有4个 正常情况下索引编码都是从0开始,也无跳跃 |
nn.Embedding模板类生成的对象 import torch from torch import nn embedding = nn.Embedding(num_embeddings=6,embedding_dim=3,padding_idx=0) batch_vec = torch.arange(start=0,end=6,step=1).reshape(2,3) embedding(batch_vec).shape # torch.Size([2, 3, 3]) 该对象将索引矩阵升了一维,所升的这一维就是索引所转向量的维度, pytorch的维度是这样的(dim=0,dim=1), 升的这一维默认放在更高的维度,就是(dim=0,dim=1,dim=2) |
随机性与有效性:起点是随机的,终点是有效的(但不一定是最好的,) import torch from torch import nn embedding = nn.Embedding(num_embeddings=6,embedding_dim=3,padding_idx=0) batch_vec = torch.arange(start=0,end=6,step=1).reshape(2,3) embedding(batch_vec) tensor([[[ 0.0000, 0.0000, 0.0000], [-0.9986, 0.2995, -1.3050], [-0.8627, 0.4689, -0.1170]], [[-0.3458, 1.2517, -0.7372], [ 0.4307, -0.3824, 0.1640], [-1.2211, 1.0763, 1.4638]]], grad_fn=EmbeddingBackward0) AI所要训练的参数是在定义nn.Embedding模板类时初始化的 nn.Embedding模板类在初始化参数时,是随机的, 这样随机地将一个整数索引转换为n维浮点向量,有效吗? 其实它的思想跟神经网络层的思想是一样的,参数随机初始化, 在训练时梯度下降,逐步向不随机的方向,就是标签的方向靠近 随机当然是无效的,训练后才有效 |
|
|