深度学习(3)--递归神经网络(RNN)和词向量模型Word2Vec

news/2024/6/3 7:25:47 标签: 深度学习, 人工智能, c
cle class="baidu_pl">
cle_content" class="article_content clearfix">
content_views" class="htmledit_views">

一.递归神经网络基础概念

递归神经网络(Recursive Neural Network, RNN)可以解决有时间序列的问题࿰c;处理诸如树、图这样的递归结构。

CNN主要应用在计算机视觉CV中࿰c;RNN主要应用在自然语言处理NLP中。

c="https://img-blog.csdnimg.cn/direct/7f8163ecf8c145d4a513257f0aebb24c.png" width="1200" />

c="https://img-blog.csdnimg.cn/direct/10d820b4bd344f2ab85785980d1623b0.png" width="1200" />

1.h0࿰c;h1.....ht对应的是不同输入得到的中间结果。

2.处理自然语言I am GodFishhh or AFish:

则对应的输入为X0 -- I࿰c;X1 -- am࿰c;X2 -- GodFishhh࿰c;X3 -- or࿰c;X4 -- AFish࿰c;再通过一定的方法将自然语言输入转换为计算机能够理解的形式(例如Word2Vec方法࿰c;将文本中的词语转换为向量形式)。

3.RNN网络最后输出的结果会考虑之前所有的中间结果࿰c;记录的数据太多可能会产生误差或者错误。

LSTM长短记忆网络是一种特殊的递归神经网络࿰c;可以解决上述记录数据太多的问题:

c="https://img-blog.csdnimg.cn/direct/440967bbfc4a4816bb8f457a13dbdbbc.png" width="1200" />

在普通的RNN中࿰c;t-1时刻得到的输出值h(t-1)会被简单的复制到t时刻࿰c;并与t时刻的输入值X(t)整合再经过一个tanh函数后形成输出。

而在LSTM中࿰c;对于t-1时刻得到的输出值h(t-1)会有更加复杂的操作。

二.自然语言处理-词向量模型Word2Vec

2.1.词向量模型

将文本向量化后࿰c;就可以通过不同方法(欧氏距离、曼哈顿距离、切比雪夫距离、余弦相似度等)来计算两个向量之间的相似度。

c="https://img-blog.csdnimg.cn/direct/bd97c5e5daf24918b3d775043cd04473.png" width="631" />

同时通常来说࿰c;向量的维度越高࿰c;能够提供的信息也越多࿰c;因此所计算出的相似度的可靠性也就越高࿰c;匹配的正确性也就越高(常用向量维度为50~300)

c="https://img-blog.csdnimg.cn/direct/f2003b83f5b54b72822c8adc846580d8.png" width="1200" />

而词向量模型Word2Vec的作用就是把词转化为向量

例如如下训练好的词向量࿰c;将每一个词都表示为50维的向量:

c="https://img-blog.csdnimg.cn/direct/64575bdac8be4a03982ea7fe48309367.png" width="1200" />c="https://img-blog.csdnimg.cn/direct/f8646a624d434927987f953ea61e1a85.png" width="1200" />通过比对不同词向量的热度图可以发现࿰c;有相关特性的词在热度图上较为相似࿰c;而无明显相关特性的词在热度图上则差异较大:

c="https://img-blog.csdnimg.cn/direct/b36cd03e1c2f47369606f545d60f1953.png" width="1112" />

在词向量模型中࿰c;输入可以是多个词࿰c;而在模型的最后一层中连接了SoftMax࿰c;所以会输出所有词可能是下一个词的概率。

c="https://img-blog.csdnimg.cn/direct/98038b2787b34f5e885ea7fd2bcdf186.png" width="1194" />

而文字的输入则是通过一个embeddings层(词嵌入层)来解决。在神经网络初始化时࿰c;会随机初始化一个N×K的矩阵࿰c;其中N为词典的大小࿰c;K为词向量的维度数。初始的词嵌入曾是随机生成的࿰c;通过反向传播进行更新优化。

c="https://img-blog.csdnimg.cn/direct/c9a641f25c2c495cbee8088967f1a65e.png" width="1200" />

2.2.常用模型对比

一切具有正常逻辑的语句都可以作为训练数据。

(1).CBOW模型

CBOW的全称是continuous bag of words(连续词袋模型)。其本质也是通过context word(背景词)来预测target word(目标词)。

该模型的输入为上下文࿰c;输出为该上下文中间的词汇:

c="https://img-blog.csdnimg.cn/direct/3bf89426f9724346bcab871423af2553.png" width="765" />
 

(2).Skip-gram模型

该模型与CBOW模型相反࿰c;模型的输入为一个词汇࿰c;而输出是该词汇的上下文:

c="https://img-blog.csdnimg.cn/direct/a41272b5a51f411293e94ee1da9ced81.png" width="724" />

 示例:

c="https://img-blog.csdnimg.cn/direct/0548894223634e4289adc770a9025e6c.png" width="1200" />

2.3.负采样方案

如下图所示࿰c;将构建好的数据集丢给词模型进行训练:

c="https://img-blog.csdnimg.cn/direct/7e8340a99631457eb07cae31339b4149.png" width="1200" />

发现最后一层SoftMax的计算在语料库很大的情况下会非常耗时。

因此࿰c;有一种改进方法是将此时的输入和输出都作为输入值࿰c;做一个二分类问题࿰c;如果两个输入是邻居则输出1࿰c;不是邻居则输出0。(eg.传统模型中࿰c;输入not࿰c;希望输出是thou࿰c;但需要经过SoftMax层计算出所有词可能作为下一个词的概率࿰c;但此时则是将not和thou均作为输入࿰c;如果相邻则输出1࿰c;不相邻则输出0)

c="https://img-blog.csdnimg.cn/direct/7e9679d86f0c40a085bb772a54b71990.png" width="984" /> c="https://img-blog.csdnimg.cn/direct/f63a860e1f794cc6afef2f2e513cc4f4.png" width="1045" />

但此时的问题在于࿰c;训练集本身就是由上下文构建出来的࿰c;所以训练集构建出来的输出targer均为1࿰c;无法进行较好的训练。

改进方案:加入一些负样本࿰c;即不相邻的两个输入词࿰c;输出的target值为0.(一般负样本个数为5个左右) 

c="https://img-blog.csdnimg.cn/direct/23a05a14f00d480f88bf1317f0ae88fe.png" width="1200" />

2.4.词向量训练过程

(1).初始化词向量矩阵

c="https://img-blog.csdnimg.cn/direct/cfe5e609e45348f1b6e501e2aa68a53d.png" width="1200" />

c="https://img-blog.csdnimg.cn/direct/ca0dff11557d4b3997e2e5c453b115f7.png" width="1200" />

(2).训练模型

通过神经网络反向传播来训练模型࿰c;与普通的训练模型只更新权重值不同࿰c;此时不光会更新权重参数矩阵࿰c;还会更新输入数据。

c="https://img-blog.csdnimg.cn/direct/76234723c5e54aa1bfacdc0f69d37f75.png" width="1095" />


http://www.niftyadmin.cn/n/5337602.html

相关文章

2023年12月 C/C++(八级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++等级考试(1~8级)全部真题・点这里 第1题:生理周期 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集…

【ASP.NET Core 基础知识】--路由和请求处理--Attribute路由

一、介绍 在ASP.NET Core中,路由是将传入的URL请求映射到正确的控制器和操作的方法。Attribute路由是一种基于属性,用于定义路由规则的方式,通过在控制器类和操作方法上应用特定的属性,来定义URL模板。 基本概念: **路…

Android问题记录

一 Android编程怎样用ICC校准颜色? 在Android编程中,ICC颜色校准通常是通过使用Color Management API进行的。以下是使用ICC校准颜色的步骤: 首先,确保你的设备支持色彩管理。你可以通过调用ColorManagement.isColorManagementSu…

转行做鸿蒙开发首先需要学习哪些?

随着越来越多的企业和团队开始布局鸿蒙生态,鸿蒙开发人才的需求也呈现出井喷式的增长。对于开发者而言,掌握鸿蒙开发技能不仅意味着能够抓住这个千载难逢的机遇,更意味着能够在未来的科技竞争中占据先机。 在这个变革的时代,鸿蒙开…

基于华为MRS3.2.0实时Flink消费Kafka落盘至HDFS的Hive外部表的调度方案

文章目录 1 Kafka1.1 Kerberos安全模式的认证与环境准备1.2 创建一个测试主题1.3 消费主题的接收测试 2 Flink1.1 Kerberos安全模式的认证与环境准备1.2 Flink任务的开发 3 HDFS与Hive3.1 Shell脚本的编写思路3.2 脚本测试方法 4 DolphinScheduler 该需求为实时接收对手Topic&a…

git本地分支的合并

目录 第一章、本地分支的切换测试1.1)切换之前的master分支下文件内容1.2)切换到develop分支后修改文件1.3)切回master分支出现报错:1.4)报错分析 第二章、解决方式2.1)方式1:commit2.2&#xf…

Python 零散

列表推导式 列表推导式是一种在一行代码中创建列表的紧凑语法。它允许你使用一种简洁的方式从一个可迭代对象(例如列表、元组、字符串等)中生成新的列表。列表推导式的一般形式如下: new_list [expression for item in iterable if …

【linux】ps的基本使用

ps是linux中用于显示进程的工具,确切来说是显示活动进程的工具 ps的基本格式是 ps [选项] sh-3.2# ps --help ps: illegal option -- - usage: ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]][-g grp[,grp...]] [-u [uid,uid...]][-p pid[,pid..…