AI大模型之路 第二篇: Word2Vec介绍

你好,我是郭震

今天我来总结大模型第二篇,word2vec,它是大模型的根基,一切NLP都会用到它。

e4e7d3ed5e0457e6b2c310b49263fcea.png

Word2Vec

Word2Vec 是一种流行的自然语言处理(NLP)工具,它通过将词汇表中的每个单词转换成一个独特的高维空间向量,使得这些词向量能够在数学上表示它们的语义关系。

这种方法对于后续的深度学习模型和NLP的发展具有重大意义,因为它提供了一种有效的方式来表达文本数据,并使得基于文本的应用(如机器翻译、情感分析、信息检索等)的实现变得更加高效和准确。

发展影响:

  1. 语义理解的提升:Word2Vec训练出的向量能够捕捉词语之间的多种关系,如同义、反义等,这使得机器能更好地理解语言的深层含义。

  2. 深度学习的推动:Word2Vec的推出加速了深度学习技术在NLP领域的应用,为后来的模型如BERT、GPT等复杂的语言模型奠定了基础。

  3. 词向量方法的创新:Word2Vec的成功推动了其它类型的词嵌入方法的研发,比如GloVe(Global Vectors for Word Representation)和FastText。

基本原理

Word2Vec有两种架构:CBOW(Continuous Bag of Words)和Skip-gram。

  1. CBOW:这种方法预测目标单词基于上下文。例如,在“the cat sits on the”中,CBOW使用“the”、“cat”、“sits”、“on”、“the”作为输入来预测“mat”这个词。

  2. Skip-gram:与CBOW相反,它用一个单词来预测上下文。例如,给定单词“sits”,模型将会尝试预测它周围的单词如“the”、“cat”、“on”、“the”。

训练过程:

  • 使用神经网络作为训练模型,输入层为一个独热编码的向量,通过隐藏层(不使用激活函数的全连接层)将此向量映射到低维空间中,输出层则根据模型架构(CBOW或Skip-gram)来决定。

  • 训练目标是最小化实际输出和预期输出之间的差异,通常使用softmax函数进行分类任务。

案例讲解

假设我们有一个简单的句子:"the quick brown fox jumps over the lazy dog",并且我们选择Skip-gram模型进行词向量的训练。我们可以挑选“fox”作为输入词,上下文窗口大小为2:

  • 输入:"fox"

  • 预测的上下文:"quick"、"brown"、"jumps"、"over"

训练步骤:

  1. 对“fox”进行独热编码。

  2. 使用Word2Vec模型预测“fox”的上下文词。

  3. 通过调整模型权重来最小化预测误差,使得模型可以更准确地预测到“fox”的正确上下文。

通过大量的数据和迭代训练,每个单词的向量都会逐渐调整到能够准确反映它与其他词语的语义关系的位置。

这些向量之后可以用于各种机器学习模型和NLP应用,从而实现更复杂的语言处理任务。接下来大模型第三篇,我会讲解word2vec的神经网络训练代码,欢迎关注。

我将Python与AI技术录制为视频,已上线700多节课,还会持续更新,我本人答疑,助力提升你的AI与Python更全面,更好帮你找工作和兼职赚钱。想做这些事情的,可以长按下面二维码查看,想咨询或已报名联系我,gz113097485

faddaa980be0721630b45b8ef3dceb1f.png

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Word2Vec的词嵌入与BERT模型结合起来,可以使用以下步骤: 1. 导入所需的库: ```python from transformers import BertModel, BertTokenizer import torch import numpy as np ``` 2. 加载BERT模型和分词器: ```python model_name = 'bert-base-uncased' bert_model = BertModel.from_pretrained(model_name) tokenizer = BertTokenizer.from_pretrained(model_name) ``` 3. 加载Word2Vec词嵌入模型并获取词嵌入向量: ```python word2vec_model_path = 'path_to_word2vec_model' # 替换为你的Word2Vec模型路径 # 加载Word2Vec模型 word2vec_model = gensim.models.Word2Vec.load(word2vec_model_path) # 获取词汇表和词嵌入矩阵 vocab = word2vec_model.wv.index_to_key embeddings = word2vec_model.wv.vectors ``` 4. 将Word2Vec的词嵌入转换为PyTorch张量: ```python embeddings = torch.tensor(embeddings) ``` 5. 将Word2Vec的词嵌入与BERT的词嵌入矩阵拼接在一起: ```python # 获取BERT的词嵌入矩阵 bert_embeddings = bert_model.embeddings.word_embeddings.weight.data # 将Word2Vec的词嵌入与BERT的词嵌入矩阵拼接在一起 combined_embeddings = torch.cat([bert_embeddings, embeddings], dim=0) ``` 6. 更新BERT模型的词嵌入矩阵: ```python bert_model.embeddings.word_embeddings.weight.data = combined_embeddings ``` 现在,BERT模型的词嵌入矩阵已经包含了Word2Vec的词嵌入。你可以使用这个更新后的BERT模型进行文本分类、命名实体识别等任务。请注意,Word2Vec的词嵌入矩阵需要与BERT模型的词汇表对齐,因此确保两者的词汇表相同或存在一定的重叠部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值