深度学习之五:序列模型与词向量

深度学习之词向量 一、词向量 自上世纪90年代开始,特征空间模型就应用于分布式语言理解中,在当时许多模型用连续性的表征来表示词语,包括潜在语义分析LSA、隐含狄利克雷分布LDA主题模型。Bengio et al.在2003年首先提出了词向量的概念,当时是将其与语言模型的参数一并训练得到的。Collobert和Weston则第一次正式使用预训练的词向量,不仅将词向量方法作为处理下游任务的有效工具,还引入了神经网络模... 阅读详情

1 循环序列模型

1.1 序列模型的适用范围

序列模型是一种用于处理序列数据的模型,它可以用于语音识别,音乐生成,情感分类,机器翻译,命名实体识别等。模型的输出也可能是一个序列。

1.2 相关的符号约定

x<k>x<k> 表示输入序列中的第k个元素
y<k>y<k> 表示输出序列中的第k个元素
x(i)<k>x(i)<k> 表示第i个输入序列中的第k个元素
y(i)<k>y(i)<k> 表示第i个输出序列中的第k个元素
TxTx 表示输入序列的长度
T(i)xTx(i) 表示第i个输入序列的长度
TyTy 表示输出序列的长度
T(i)yTy(i) 表示第i个输出序列的长度

1.3 RNN模型

1.3.1 词的one-hot表示

构造一个词汇表(也称为词典),若词汇个数为n,词(word)在词典中的位置i记作wiwi,则词可表示为一个长度为n的一维向量,向量中第wiwi位置的元素为1,其他位置为0。

1.3.2 模型示意

在处理序列数据时,由于输入和输出长度的不同,且序列模型的维度过高,参数过多,无法使用传统的全联接神经网络来处理,因此必须要使用新的序列化的模型。见下图:
RNN单元示意图

在图中,RNN单元在时刻t0t0接收输入x0x0并产生输出y0y0。在下一个时刻t1t1,RNN单元同时接收输入x1x1和上一个时刻的输出h0h0,从而产生本时刻的输出。这使得RNN可以考虑历史输入的影响。

1.3.3 前向传播

从上图的RNN单元的结构中,可以推导前向传播的计算公式
ht=g(Wh∗ht−1+Wixt+bh)ht=g(Wh∗ht−1+Wixt+bh)
可以将Wh,WiWh,Wi横向堆叠,将ht−1,xtht−1,xt纵向堆叠,则公式改写为:
ht=g([Wh|Wi]⋅[ht−1xt]+bh)ht=g([Wh|Wi]⋅[ht−1xt]+bh)
yt=f(Wo∗ht+bo)yt=f(Wo∗ht+bo)

1.3.4 RNN前向传播实现
# 实现单个RNN单元内部的计算
def rnn_cell_forward(xt, a_prev, parameters):

    Wax = parameters["Wax"] #alias Wt
    Waa = parameters["Waa"] #alias Wh
    Wya = parameters["Wya"] #alias Wo
    ba = parameters["ba"]   #alias bh
    by = parameters["by"]   #alias bo

    # compute next activation state 
    a_next = np.tanh(np.dot(Wax, xt) + np.dot(Waa, a_prev) + ba)
    yt_pred = softmax(np.dot(Wya, a_next) + by)

    cache = (a_next, a_prev, xt, parameters)
    return a_next, yt_pred, cache

# 实现沿时间序列向前计算
def rnn_forward(x, a0, parameters):
    caches = []

    n_x, m, T_x = x.shape
    n_y, n_a = parameters["Wya"].shape

    # initialize "a" and "y" with zeros
    a = np.zeros((n_a, m, T_x))
    y_pred = np.zeros((n_y, m, T_x))

    a_next = a0

    # loop over all time-steps
    for t in range(T_x):
        # Update next hidden state, compute the prediction, get the cache
        a_next, yt_pred, cache = rnn_cell_forward(x[:,:,t], a_next, parameters)

        a[:,:,t] = a_next
        y_pred[:,:,t] = yt_pred

        caches.append(cache)

    caches = (caches, x)
    return a, y_pred, caches
1.3.4 损失函数

单个样本的损失函数定义为:

L<t>(yˆ<t>,y<t>)=−y<t>logyˆ<t>−(1−y<t>)log(1−yˆ<t>)L<t>(y^<t>,y<t>)=−y<t>logy^<t>−(1−y<t>)log(1−y^<t>)

整体的损失函数为:
L(yˆ,y)=∑tL<t>(yˆ<t>,y<t>)L(y^,y)=∑tL<t>(y^<t>,y<t>)
1.3.5 RNN的分类

根据输入和输出数量的不同,可以将RNN模型分为三类
Many-to-Many,例如RNN翻译模型
Many-to-One,例如情感分类模型
One-to-Many,例如音乐的生成模型
RNN模型分类

1.4 构建RNN语言模型

所谓语言模型,其实是指基于语料库的语言序列的统计概率模型,模型可以计算出某个句子的概率。

可以使用RNN来生成语言模型,需要将语料库中的语句逐个输入到RNN中,以此来训练模型的参数。
模型的损失函数为:

L(yˆ,y)=−∑ty<t>logyˆ<t>L(y^,y)=−∑ty<t>logy^<t>

1.5 RNN模型序列采样

模型采样的方法,先随机选取一个词将其输入到网络中,并将每次输出作为输入进入到后一个单元中,不断循环,直到生成语句结束符。这样生成的一个语句称为模型的采样序列。
利用模型采样,可以完成文本生成的任务。

1.6 LSTM

由于语句过长,会出现梯度消失或梯度爆炸的问题,因此基本的RNN网络难于处理语言中的长程依赖问题。为了解决这个问题,人们提出了LSTM与GRU两种改进模型。

下面是1997年提出来的LSTM网络的结构,其增加了一个记忆单元(Memory cell),用于跟踪当前输入的长程依赖。
此处输入图片的描述
下图是LSTM单元的结构图:
此处输入图片的描述

图中可以看出,相比于基本的RNN单元,新增加了遗忘门,输入门,输出门,各个门的具体实现为:
此处输入图片的描述

下面推导t时刻时记忆模块的更新公式:
遗忘门:Γf=σ(Wf[h<t−1>,x<t>]+bf)Γf=σ(Wf[h<t−1>,x<t>]+bf)
输入门:Γu=σ(Wu[h<t−1>,x<t>]+bu)Γu=σ(Wu[h<t−1>,x<t>]+bu)
候选记忆:c<t>o=tanh(Wc[h<t−1>,x<t>]+bc)co<t>=tanh(Wc[h<t−1>,x<t>]+bc)
最终记忆:c<t>=Γf∗c<t−1>+Γu∗c<t>oc<t>=Γf∗c<t−1>+Γu∗co<t>
输出门:Γo=σ(Wo[h<t−1>,x<t>]+bo)Γo=σ(Wo[h<t−1>,x<t>]+bo)
输出:h<t>=Γo∗tanhc<t>h<t>=Γo∗tanhc<t>

1.7 实现LSTM的前向计算

def lstm_cell_forward(xt, a_prev, c_prev, parameters):
    Wf = parameters["Wf"]
    bf = parameters["bf"]
    Wi = parameters["Wi"]
    bi = parameters["bi"]
    Wc = parameters["Wc"]
    bc = parameters["bc"]
    Wo = parameters["Wo"]
    bo = parameters["bo"]
    Wy = parameters["Wy"]
    by = parameters["by"]

    # Retrieve dimensions from shapes of xt and Wy
    n_x, m = xt.shape
    n_y, n_a = Wy.shape

    # Concatenate a_prev and xt
    concat = np.zeros((n_a + n_x, m))
    concat[: n_a, :] = a_prev
    concat[n_a:, :] = xt

    # Compute values for ft, it, cct, c_next, ot, a_next
    ft = sigmoid(np.dot(Wf, concat) + bf)
    it = sigmoid(np.dot(Wi, concat) + bi)
    cct = np.tanh(np.dot(Wc, concat) + bc)
    c_next = ft * c_prev + it * cct
    ot = sigmoid(np.dot(Wo, concat) + bo)
    a_next = ot * np.tanh(c_next)

    # Compute prediction of the LSTM cell
    yt_pred = softmax(np.dot(Wy, a_next) + by)

    # store values needed for backward propagation in cache
    cache = (a_next, c_next, a_prev, c_prev, ft, it, cct, ot, xt, parameters)

    return a_next, c_next, yt_pred, cache


def lstm_forward(x, a0, parameters):
    # Initialize "caches", which will track the list of all the caches
    caches = []

    # Retrieve dimensions from shapes of x and Wy
    n_x, m, T_x = x.shape
    n_y, n_a = parameters["Wy"].shape

    # initialize "a", "c" and "y" with zeros
    a = np.zeros((n_a, m, T_x))
    c = np.zeros((n_a, m, T_x))
    y = np.zeros((n_y, m, T_x))

    # Initialize a_next and c_next
    a_next = a0
    c_next = np.zeros(a_next.shape)

    # loop over all time-steps
    for t in range(T_x):
        # Update next hidden state, next memory state, compute the prediction, get the cache
        a_next, c_next, yt, cache = lstm_cell_forward(x[:, :, t], a_next, c_next, parameters)
        # Save the value of the new "next" hidden state in a
        a[:, :, t] = a_next
        # Save the value of the prediction in y
        y[:, :, t] = yt
        # Save the value of the next cell state
        c[:, :, t] = c_next
        # Append the cache into caches
        caches.append(cache)

    caches = (caches, x)

    return a, y, c, caches

1.8 GRU单

下图是2014年提出的GRU的单元示意图:此处输入图片的描述
GRU单元相比LSTM单元,进行了简化。它使用两个门–更新门与重置门来控制是否更新或重置记忆单元。
下面推导tt时刻时记忆单元的更新公式:
对于GRU来说,ht=ct
重置门:Γr=σ(Wr[c<t−1>,x<t>]+br)Γr=σ(Wr[c<t−1>,x<t>]+br)
更新门:Γu=σ(Wu[c<t−1>,x<t>]+bu)Γu=σ(Wu[c<t−1>,x<t>]+bu)
候选记忆:c<t>o=tanh(Wc[Γrc<t−1>,x<t>]+bu)co<t>=tanh(Wc[Γrc<t−1>,x<t>]+bu)
最终记忆:c<t>=Γu∗c<t>o+(1−Γu)∗c<t−1>c<t>=Γu∗co<t>+(1−Γu)∗c<t−1>
GRU单元只有两个门,更简单一些,运算速度更快,相比于LSTM 可以搭建更大型一些的网络。

1.9 双向神经网络

单向的RNN可以捕获前向的内容,但无法捕获后向的内容,因此人们引入双向RNN来解决需要同时捕获前后上下文的内容这种问题。
此处输入图片的描述
双向RNN的问题是必须有完整的句子输入,而单向RNN则没有这个约束。

1.10 深层循环神经网络

此处输入图片的描述

2 自然语言处理与词嵌入

2.1 词的向量表示

下面介绍最简单的一种向量表示法,即one-hot向量。初始时将所有词排序,这样每个词可分配到一个位置序号idx。然后每个词可表示成一个R|V|∗1R|V|∗1的向量,向量的第idx位为1,其余位置为0。

例如如果我们只有4个词,{aa,ab,ba,bb},则有:

Waa=⎡⎣⎢⎢⎢1000⎤⎦⎥⎥⎥,Wab=⎡⎣⎢⎢⎢0100⎤⎦⎥⎥⎥,Wba=⎡⎣⎢⎢⎢0010⎤⎦⎥⎥⎥,Wbb=⎡⎣⎢⎢⎢0001⎤⎦⎥⎥⎥Waa=[1000],Wab=[0100],Wba=[0010],Wbb=[0001]

词的one-hot表示编码过于稀疏(大量的0)。另一方面不同向量之间是正交的,无法比较不同词之间的关系。

word-embeddings是用多个不同维度的特征来表示每一个词。由于特征的维度数远小于词汇数,因此可以避免了稀疏的问题。另一方面词嵌入可以表现词之间的相似度。

下图是降维之后词向量的表示,可见相似的概念的词聚集一起。
此处输入图片的描述

嵌入矩阵EE是把词典里所有词的词向量作为列向量排列成为矩阵。若某个词的one-hot表示记为ow,词向量表示记为ewew则有:

ew=E⋅owew=E⋅ow

2.2 CBOW模型

对于一个句子,根据某个位置前后(上下文长度)若干个词,而预测此位置词的模型称为连续词袋模型(Continuous Bag of Words Model)。例如,今天是__六 –> 星期。

引入下面的记号,若无特殊说明1维向量采用列向量表示:
wiwi,词典中第i个词
VV,输入词权重矩阵,其第i列表示作为输入的wi向量,记作vivi
UU,输出词权重矩阵,其第i行表示作为输出的wi向量,记作uiui

模型的工作步骤:

  1. 若上下文长度为m,则生成2m个输入词的one-hot向量(xc−m,...xc−1,xc+1...,xc+mxc−m,...xc−1,xc+1...,xc+m)
  2. 对第1步得到的2m个向量,计算vj=Vxjvj=Vxj
  3. 对第2步得到的2m个向量,计算均值vˆ=∑vj2mv^=∑vj2m
  4. 计算得分向量z=Uvˆz=Uv^,其中元素较高的值表示相似度越好
  5. 转换得分向量为概率向量yˆ=softmax(z)y^=softmax(z)
  6. 我们希望计算出的yˆ=yy^=y,y是输出词的one-hot向量

为了计算矩阵U和V,需要损失函数,从信息论中引入交叉熵来定义损失函数

H(yˆ,y)=−∑yjlog(yˆj)H(y^,y)=−∑yjlog(y^j)

由于y是one-hot向量,因此
H(yˆ,y)=−yilog(yˆi)H(y^,y)=−yilog(y^i)

则我们要最小化损失函数:

minimizeJ=−logP(wc|Context)=−logP(uc|vˆ)=−logexp(uTcvˆ)∑exp(uTjvˆ)=−uTcvˆ+log∑exp(uTjvˆ)minimizeJ=−logP(wc|Context)=−logP(uc|v^)=−logexp(ucTv^)∑exp(ujTv^)=−ucTv^+log∑exp(ujTv^)

使用随机梯度下降更新uc和vjuc和vj

2.3 Skip-gram模型

Skip-Gram模型可以根据一个中心,预测此词前后若干个关键词。此模型的工作步骤如下:

  1. 生成中心词的one-hot表示向量 xx
  2. 获取中心词的输入表示 vc=Vx
  3. 计算得分向量z=Uvcz=Uvc
  4. 将得分向量转化为概率向量,yˆ=softmax(z)y^=softmax(z),上下文词为概率向量中较大值位置的one-hot向量
  5. 我们期望生成的概率向量可以匹配真实的向量

为了计算矩阵U,V,基于朴素Bayes思想,使损失函数最小化:
minimizeJ=−logP(Context|wc)minimizeJ=−logP(Context|wc)
=log∏2mj=0,j≠mP(wc−m+j|wc)=log∏j=0,j≠m2mP(wc−m+j|wc)
=−log∏P(uc−m+j|vc)=−log∏P(uc−m+j|vc)
=−log∏exp(uTc−m+jvc)∑exp(uTkvc)=−log∏exp(uc−m+jTvc)∑exp(ukTvc)
=−∑uTc−m+jvc+2mlog∑exp(uTkvc)=−∑uc−m+jTvc+2mlog∑exp(ukTvc)

2.4 训练词向量的实现

本节展示使用gensim训练词向量的方法。gensim是一个开源的文档主题建模库。下面先说明其用于训练词向量的主要API。

Word2Vec(sg, size, window, hs, negative, min_count)

  • sg:若1使用CBOW算法,其他为skip-gram算法
  • size:训练的词向量的维度
  • window:词上下文的距离
  • hs:是否使用分层Softmax
  • negative:是否使用负采样
  • min_count:忽略频率出现小于指定次数的词
  • workers:并行训练的线程数

该方法用于构建训练的模型实例。

build_vocab(sents, update)

  • sents:可迭代的待训练的语料语句
  • update:若为初表示新的词将追加到模型中

模型实例的方法,用于初始化训练模型的词汇表。

train(sents,total_examples,total_words, epochs)

  • sents:可迭代的待训练的语料语句
  • total_examples:训练语料句子数
  • total_words:训练语料的词数
  • epochs:训练时的迭代次数

load_word2vec_format(fname, binary)

  • fname:词向量文件
  • binary:词向量文件的类型,txt或bin类型

用于加载词向量文件,对于gensim生成的词向量文件的格式,其第一行为词向量的条数。从第二行开始,每行一个词向量。每行的第一列为词,其他列为浮点数。

下面的代码示例训练词向量并保存的方法。

from gensim.models import Word2Vec

# lines 为多行文本,可以从文本文件中读取
def train_model(lines):
    sentences = []
    for line in lines:
        tokens = jieba.lcut(line, HMM=False)
        sentences.append(tokens)

    word2vec_model = Word2Vec(sg=1, seed=1, workers=4, size=300, min_count=5, window=5)

    token_count = sum([len(sentence) for sentence in sentences])
    word2vec_model.build_vocab(sentences=sentences, keep_raw_vocab=True)
    word2vec_model.train(sentences=sentences, total_words=token_count, epochs=10)
    print word2vec_model['king'] 
    # array([-0.00449447, -0.00310097,  0.02421786, ...], dtype=float32)
    print word2vec_model.similarity('king', 'queen') # 0.84
    word2vec_model.wv.save_word2vec_format('wv.txt')

训练自己的词向量,需要从网络上准备大量的语料,然后自己花费时间进行训练,过程相对比较费时。完全可以从网络上获得他人训练好的词向量。下面的代码示例了如何加载已经训练好的词向量文件。

from gensim.models import KeyedVectors

wv = KeyedVectors.load_word2vec_format('wv.txt', binary=False) 
print wv['computer']

2.5 负采样与分层Softmax

分层Softmax与负采样都是优化方法,用于加速word2vec词向量训练算法的过程。
负采样的思想是在生成语料时随机从字典中选择大量不在窗口内的词与中心词构成y

学习笔记:深度学习(5)——词向量的相关概念 BERT等预训练模型预备学习知识。 阅读详情

相关推荐

深度学习之词向量Word Embedding总结

目录 一、Word Embedding介绍 二、One-Hot表示 三、Distributed 表示 四、word2vec表示 五、BERT任务 六、BERT与其他模型的调用 一、Word Embedding介绍 word embedding,又名词嵌入、词向量,在近几年的NLP领域变得越来越热,从概念上讲,它涉及从每个单词一维的空间到具有更低维度的连续向量空...

Ivan.J的博客 3061

深度学习基础入门篇[10]:序列模型-词表示{One-Hot编码、Word Embedding、Word2Vec、词向量的一些有趣应用}

¶在正式介绍之前,我们先来科普一下Word2Vec,Word2vec是2013年被Mikolov提出来的词向量训练算法,在论文连续词袋模型CBOW和Skip-gram,如图4所示。图4 CBOW和Skip-gram的对比图4中使用了这句话作为例子:Pineapples are spiked and yellow,在这句话中假设中心词是spiked,这个单词的上下文是其他单词:Pineapples are and yellow。连续词袋模型CBOW。

丨汀、的博客 1527

词向量、预训练词向量、Word2Vec、Word Embedding概述

Word2Vec、WordEmbedding及预训练词向量的一文总结

Uzw的博客 2950

Sequential Model - 序列模型(RNN循环神经网络)

Sequential Model - 序列模型(RNN循环神经网络)的理解与实践。

西小庄村高伟 的博客 2675

【PTM】ELMo:通过预训练语言模型生成词向量

今天学习的是 AllenNLP 和华盛顿大学 2018 年的论文《Deep contextualized word representations》,是 NAACL 2018 best paper。 这篇论文提出的 ELMo 模型是 2013 年以来 Embedding 领域非常精彩的转折点,并在 2018 年及以后的很长一段时间里掀起了迁移学习在 NLP 领域的风潮。 ELMo 是一种基于语境的深度词表示模型(Word Representation Model),它可以捕获单词的复杂特征(词性句法),也可

阿泽的学习笔记 2048

Cadence原理图设计10个高效技巧:从封装绑定到BOM表导出全流程

本文为硬件工程师提供了一套Cadence OrCAD Capture CIS原理图设计的高效实战指南。文章深度解析了从封装库的精准管理与CIS数据库绑定、封装批量处理技巧,到设计缓存清理、跨页信号追踪,再到关键的DRC检查、网表导出以及智能BOM报表生成的全流程核心技巧,旨在帮助工程师提升设计效率与可靠性,规避常见错误。

weixin_29178069的博客 201

序列模型(Sequence Models)

文章目录循环神经网络(Recurrent Neural Networks) 循环神经网络(Recurrent Neural Networks)

youyoudao 1万+

基于STM32的智能水温控制系统设计

智能水温控制系统广泛应用于家庭、工业、农业等多个场景,尤其在热水器、恒温泳池和地暖系统中,通过实时监测和调节水温,提高设备的效率和用户的舒适度。本文基于STM32微控制器设计了一个智能水温控制系统,能够实时监测水温、用户设置温度,并根据需要控制加热器或冷却装置,确保水温维持在设定范围内。系统能够根据用户设定自动控制加热和冷却设备,确保水温维持在舒适的范围内,并通过OLED屏实时显示水温信息。在生成的项目基础上,编写水温监测、目标温度设定、加热器和冷却装置控制、OLED数据显示以及超温报警的代码。

2401_88410555的博客 2474

【深度学习6】序列模型

本文主要对序列模型的一些基本概念进行了总结,包括自回归模型、隐变量自回归、马尔科夫模型、循环神经网络等内容。

m0_56655321的博客 263

避坑指南:英飞凌TC3XX的MCMCAN初始化常见错误及解决方法

本文针对英飞凌TC3XX系列MCU的MCMCAN模块初始化难题,深入剖析了寄存器配置时序、总线监控模式误用、中断映射错误及Message RAM地址冲突四大常见陷阱。通过实战代码示例和诊断流程,提供了清晰的避坑指南和解决方案,帮助嵌入式开发者高效解决CAN FD通信故障,确保汽车电子与工业控制项目的稳定运行。

weixin_29193259的博客 244

【科研学习】Demo3D2015安装包以及图文安装步骤

安装包 点击下图的.exe文件,安装 不需要解压,打开注册机 如下图: 点击上图的.exe文件,出现下图 先点击 patch 打开安装目录下的Demo3D.licensing.dll文件,然后点击Generate,生成dvt-license文件,保存即可 打开安装完成的Demo3D 2015(64-bit),一般破解没完成的,会出现一个request a license 的问题,点击find license 的那一行 点击后找到自己Generate,生成dvt

KaelCui的博客 1万+

序列模型小结

提示:该博客全部参考李沐老师的《动手深度学习》这门课,可在B站自行查看。 文章目录前言一、序列模型1.1 统计工具1.1.1自回归模型二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 一、序列模型 我自己的理解 序列模型:为解决含有序列数据的一类问题而建立的数学模型。序列数据是指数据含有时序结构的,如音乐、语音、文本和视频。 1.1 统计工具.

wltyh的博客 681

37、基于铁电场效应晶体管(FeFET)的片上深度神经网络(DNN)直接反馈对齐训练

本文提出了一种基于铁电场效应晶体管(FeFET)的深度神经网络(DNN)训练加速器架构,结合直接反馈对齐(DFA)算法和FeFET的独特物理特性,以解决当前DNN训练中反向传播(BP)算法带来的高计算开销、复杂数据依赖和高能耗问题。通过设计基于FeFET的MVM引擎、低功耗ADC和随机数生成器(RNG),该架构在速度和功率效率方面相比现有基于ReRAM的加速器分别提升了1.3倍和2.5倍。研究为未来高效能AI训练硬件的发展提供了新的思路和实现路径。

wine的专栏 162

ELMo动态词向量模型

ELMo通过结合大量文本数据训练的语言模型,实现了词义的动态性和上下文敏感性,并且能够有效地提升下游NLP任务的表现。虽然BERT后来在许多方面超越了ELMo,但ELMo仍然是推动NLP领域动态词向量发展的重要里程碑。

xw555666的博客 2519

如何利用通达信进行选股集合操作

每个交易者实际上都有自己的选股策略,这是必然的,也会有自己的主观干预,但是还是需要从客观热点股票进行一个比对的,才能说主观和客观相结合不至于​偏离方向。 这几天我也发了节前最后一天我的选股策略盘中的选择结果, 我也从网上拿到了热点股票池,当拿到之后你会发现如何从几十个股票热点股票选出核心票,这就是个问题了,这里面一定要通过股价涨跌幅来进行过滤,而不是通过指标,因为一切指标都是根据价格变化而改变的了,所以​这一步不要走弯路。 1、把拿到的热点股票名单,导入通达信自定义板块 2、删除

抢财猫股票课堂 2581

知识图谱大模型系列之 12 LLM 知识图谱构建器:从零到 GraphRAG 使用 LLM 知识图谱生成器在 GenAI 应用中提取和使用知识图谱(教程含源码)

为了更深入地了解 LLM 知识图谱构建器,GitHub 存储库提供了大量信息,包括源代码和文档。此外,我们的文档提供了详细的入门指南,而GenAI 生态系统则提供了有关可用更广泛工具和应用程序的进一步见解。

iCloudEnd的博客 2037

大语言模型与高质量的词向量表示

大语言模型的词向量表示由于其在预训练阶段学习到的通用语言特征,可以在多种NLP任务中作为强大的工具,提高任务的性能和准确性。大语言模型与词向量表示之间的关系是NLP领域的一个活跃研究方向,随着模型规模的增加和训练技术的改进,这些模型在理解和生成自然语言方面的能力不断提高。

xw555666的博客 2699

Pytorch中安装 torch_geometric 详细图文操作(全)

如果已经安装了pytorch版本,对应跳过步骤一,直接安装步骤二即可注意:依赖包的配置需要根据pytorch版本号以及cuda的版本号,版本号要适配,否则部分函数无法使用。

码农研究僧的博客 3447

深度学习NLP的各类模型及应用总结

原文来自知乎:https://zhuanlan.zhihu.com/p/58931044。 转载为了方便自己学习,如有侵权,我会删除! 背景 自然语言处理(英语:Natural Language Process,简称NLP)是计算机科学、信息工程以及人工智能的子领域,专注于人机语言交互,探讨如何处理和运用自然语言。自然语言处理的研究,最早可以说开始于图灵测试,经历了以规则为基础的研究方法,流行于现...

技术的点点滴滴 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

深度序列模型与自然语言处理:基于TensorFlow2实践

本期博主给大家推荐一本深度学习的好书,对Python深度学习感兴趣的小伙伴快来看看吧!本书以自然语言和语音信号处理两大应用领域为载体,详细介绍深度学习中的各种常用序列模型。在讲述理论知识的同时辅以代码实现和 讲解,帮助读者深入掌握相关知识技能。本书共12章,不仅涵盖了词向量、循环神经网络、卷积神经网络、Transformer等 基础知识,还 囊括了注意力机制、序列到序列问题等 专题,同时还包含其他书籍中较少涉及的预训练语言模型、生成对抗网络、强化学习、流模型 等前沿内容,以拓宽读者视野。

AIGC 4万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

NLP:词向量与ELMo模型笔记

目录:基础部分回顾(词向量、语言模型)NLP的核心:学习不同语境下的语义表示基于LSTM的词向量学习深度学习中的层次表示以及Deep BI-LSTMELMo模型总结1. 基础部分回顾(词...

fengdu78的博客 516

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何在Java中实现高效的自然语言处理模型:从词向量到深度学习

在Java中实现高效的自然语言处理模型涉及从词向量表示到深度学习模型的构建与优化。本文将详细介绍如何在Java中实现自然语言处理模型,涵盖词向量的生成、模型设计、训练以及优化。在Java中实现高效的自然语言处理模型涉及从词向量表示到深度学习模型的构建与优化。通过有效的数据预处理、模型训练和评估,可以提升模型的性能和准确性。词向量是自然语言处理中非常重要的一部分,它将词语转换为固定长度的向量。深度学习模型在自然语言处理中已经成为主流,特别是基于神经网络的模型如LSTM、Transformer等。

微赚淘客系统开发者博客 1171

NLP词向量模型总结:从Elmo到GPT,再到Bert

词向量历史概述 提到NLP,总离开不了词向量,也就是我们经常说的embedding,因为我们需要把文字符号转化为模型输入可接受的数字向量,进而输入模型,完成训练任务。这就不得不说这个转化的历史了。 起初用于把文字转化向量,用的是最基础的词袋模型,类似于one-hot,不得不说,这种做法很简单粗暴,现在也还在用,但是维度过高,并且有些词出现多次一般来说更重要,而这种词袋模型无法表示,于是出现了以频率...

qq_40176087的博客 4058

【中文】【吴恩达课后编程作业】Course 5 - 序列模型 - 第二周作业 - 词向量的运算与Emoji生成器

词向量运算  因为词嵌入的训练是非常耗资源的,所以大部分人都是选择加载训练好的词嵌入数据。在本博客中,我们将学习到: 如何加载训练好了的词向量 使用余弦相似性计算相似度 使用词嵌入来解决“男人与女人相比就像国王与____ 相比”之类的词语类比问题 修改词嵌入以减少性别偏见等 我们先来加载所需要的包: import numpy as np import w2v_utils 接下来就是加载词向量...

何宽的博客 2万+

获取词向量的方法及训练词向量的理解

概述 在深度学习中,Embedding技术对于深度学习非常重要,甚至可以说是深度学习的“基本核心操作”。深度学习网络中作为Embedding层,完成从高维稀疏特征向量到低维稠密特征向量的转换。 使用One-hot编码对类别、Id型特征进行编码,导致样本特征向量极度稀疏,而深度学习的结构特点使其不利于稀疏特征向量的处理,因此几乎所有的深度学习都会由Embedding层负责将高维稀疏特征向量转换成稠密低维特征向量 常用的获取词向量的方法 利用网络embedding层训练词向量, FastText工具快速生

云计算、数据库、大数据、容器、微服务、深度学习、NLP、Python 4398

《大语言模型》(二):词向量

词向量是一种将单词表示为稠密的低维向量的方式。

哈哈嗨 1408
上一篇: 深度学习之四:卷积神经网络基础
下一篇: 神经网络框架-Pytorch使用介绍
zzulp
博客等级 码龄19年 464粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值