1、BERT 词向量理解

在预训练阶段中,词向量是在不断更新的,而在fine-tuning阶段中,词向量是固定不变的。在fine-tuning阶段中,我们使用预训练好的模型参数来对新的数据进行训练。

BERT模型在预训练阶段中,会学习词表中所有词的词向量。在学习过程中,词表中每个词的词向量是通过输入的语料来学习的。

在训练过程中,词表中每个词的词向量都是随机初始化的,然后通过训练数据和反向传播算法来不断更新。反向传播算法会根据当前的词向量和训练数据的误差来调整词向量的值,使得模型在语料中学到的语言知识能够更好地概括文本。

在预训练阶段结束之后,这些词向量就成为了预训练权重。在 fine-tuning 阶段中,使用这些预训练好的词向量来对新的数据进行训练。

2、词向量训练更新

词向量权重矩阵为什么能训练更新?

理解就是输入字x,1个神经元对应了多个神经元,权重(即是这个x的词向量)就是1对多的连接层上的权重,相当于是个线性函数的连接层参数

#比如这里输入层有1个神经元,输出层有3个神经元,因此W是一个1*3的矩阵,b是一个3维的向量

y = Wx + b

假设输入层有1个神经元x=2,W是1*3的矩阵 [[1, 2, 3]],W就是x的词向量,b是3维的向量 [1, 1, 1]。

那么 y = Wx + b

y = [[1, 2, 3]] * 2 + [1, 1, 1] = [2, 4, 6] + [1, 1, 1] = [3, 5, 7]

这就是输入值为2时,输出层的结果。

1)torch全连接层表示词向量,3维度词向量代码更新训练说明
import torch
import torch.nn as nn# 定义模型
class LinearModel(nn.Module):def __init__(self):super(LinearModel, self).__init__()self.linear = nn.Linear(in_features=1, out_features=3)def forward(self, x):return self.linear(x)# 实例化模型
model = LinearModel()# 获取权重
print(model.linear.weight)
print(model.linear.bias)# 设置输入
x = torch.tensor([[1.0]])# 模型预测
print(model(x))# 设置损失函数和优化器
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.06)# 训练循环
for epoch in range(1000):# 清空梯度optimizer.zero_grad()# 预测y_pred = model(x)# 计算损失loss = criterion(y_pred, torch.tensor([[2.0, 4.0, 6.0]]))# 反向传播loss.backward()# 更新权重optimizer.step()if (epoch+1) % 100 == 0:print(f'Epoch {epoch+1}, Loss: {loss.item()}')# 训练后查看权重
print(model.linear.weight)
print(model.linear.bias)

线性连接层上参数训练前后变化

2)pytorch 词向量Embedding封装层表示,词向量更新训练代码

Embedding层理解,参考https://blog.csdn.net/weixin_42357472/article/details/120886559

import torch
import torch.nn as nn
import torch.optim as optim# 定义词汇表大小和词向量维度
vocab_size = 10000
embedding_dim = 300# 创建Embedding层
embedding = nn.Embedding(num_embeddings=vocab_size, embedding_dim=embedding_dim)

初始化的词向量矩阵向量,每行表示一个字(或词)的向量

# 定义输入数据
inputs = torch.LongTensor([1, 2, 3, 4])# 定义标签数据
labels = torch.LongTensor([1, 2, 3, 4])# 定义损失函数
criterion = nn.CrossEntropyLoss()# 定义优化器
optimizer = torch.optim.SGD(embedding.parameters(), lr=0.3)# 迭代训练
for epoch in range(100):# 计算模型输出outputs = embedding(inputs)# 计算损失loss = criterion(outputs, labels)# 清空梯度optimizer.zero_grad()# 反向传播loss.backward()# 更新权重optimizer.step()embedding.weight

训练后的词向量矩阵向量变化,因为只有1,2,3,4行测试数据,所以只更新的是这几行的向量

BERT 词向量理解及训练更新相关推荐

  1. 使用pytorch获取bert词向量

    本文主要为如何使用pytorch来获取bert词向量. 首先安装pytorch-pretrained-bert包: pip install pytorch-pretrained-bert 然后加载预训 ...

  2. 使用pytorch获取bert词向量 将字符转换成词向量

    转载保存: 使用pytorch获取bert词向量_海蓝时见鲸_的博客-CSDN博客_获取bert词向量 pytorch-pretrained-bert简单使用_风吹草地现牛羊的马的博客-CSDN博客_ ...

  3. Python Word2vec训练医学短文本字/词向量实例实现,Word2vec训练字向量,Word2vec训练词向量,Word2vec训练保存与加载模型,Word2vec基础知识

    一.Word2vec概念 (1)Word2vec,是一群用来产生词向量的相关模型.这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本.网络以词表现,并且需猜测相邻位置的输入词,在word2 ...

  4. 【NLP】从头开始学词向量的预训练

      磐创AI分享   作者 | ARAVIND PAI 编译 | VK 来源 | Analytics Vidhya 概述 理解预训练词嵌入的重要性 了解两种流行的预训练词嵌入类型:Word2Vec和G ...

  5. bert获得词向量_NLP中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert

    作者:JayLou,NLP算法工程师 知乎专栏:高能NLP之路 https://zhuanlan.zhihu.com/p/56382372 本文以QA形式对自然语言处理中的词向量进行总结:包含word ...

  6. 词向量与词向量拼接_nlp中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert

    本文以QA形式对自然语言处理中的词向量进行总结:包含word2vec/glove/fastText/elmo/bert. 2020年更新:NLP预训练模型的全面总结JayLou娄杰:史上最全!PTMs ...

  7. 【NLP】词向量:从word2vec、glove、ELMo到BERT详解!

    目前,词向量(又叫词嵌入word embedding)已经成为NLP领域各种任务的必备一步,而且随着bert elmo,gpt等预训练模型的发展,词向量演变为知识表示方法,但其本质思想不变.学习各种词 ...

  8. bert获得词向量_词向量详解:从word2vec、glove、ELMo到BERT

    目前,词向量(又叫词嵌入)已经成为NLP领域各种任务的必备一步,而且随着bert elmo,gpt等预训练模型的发展,词向量演变为知识表示方法,但其本质思想不变.学习各种词向量训练原理可以很好地掌握N ...

  9. nlp中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert

    本文以QA形式对自然语言处理中的词向量进行总结:包含word2vec/glove/fastText/elmo/bert. 目录 一.文本表示和各词向量间的对比  1.文本表示哪些方法? 2.怎么从语言 ...

最新文章

  1. 来来来!DD带大家一起赢台MacBook Pro回家过年!
  2. 50个比特怎么生成10个码元_你们最关心的42个计算机网络基础问答
  3. 【spring】spring的事务传播性 hibernate/jpa等的事务隔离性
  4. Js 日期选择,可以的一个页面中重复使用本JS日历,兼容IE及火狐等主流浏览器,而且界面简洁、美观,操作体验也不错。...
  5. linux下解压缩rar格式的文件压缩包
  6. TASKCTL调度服务平台节点管理
  7. Qunee For Html5 开发清新、高效的拓扑图组件
  8. php 小米路由器_小米路由3 原厂固件OPKG安装 nginx+php+mysql 搭建WEB环境 芒果云等...
  9. 别老盯着5G,这些物联网应用用4G LTE技术足够了
  10. 在开发板运行可执行文件,报错 Syntax error: word unexpected (expecting “)“)
  11. android前置摄像头预览,android - 当选择了前置摄像头CameraX预览没有显示任何东西 - 堆栈内存溢出...
  12. 已知 XYZ+YZZ=532,其中,X、Y、Z 为数字,编程求出 X、Y 和 Z 的值。
  13. TCP协议从入门到精通
  14. endnote中科大版是什么意思_ios14.2rc是什么意思 ios14.2rc版是原来的“GM”版吗
  15. 家乡菜之回锅茄子_wizard_新浪博客
  16. 2022年最新crm管理系统免费试用-从0了解crm
  17. 图卷积神经网络GCN中的关键公式推导---干货
  18. 诈骗罪可以提起刑事附带民事诉讼赔偿吗
  19. heritrix 3.2.0 下载
  20. 计算保证图像不拖影的最大曝光时间

热门文章

  1. Splunk—云计算大数据时代的超级日志分析和监控利器
  2. Linu x相关知识2
  3. Bregman Divergence
  4. C++ 队列的创建和基本操作
  5. educoder数据结构与算法 线性表 第2关:实现一个链接存储的线性表
  6. QQ影音自动下载字幕乱码
  7. 浙江桐庐:真实版的《富春山居图》
  8. (转载)建设高效团队的七十五条原则
  9. 每日口语-旅游机场篇
  10. Python函数实现“学生管理系统”案例