深度学习入门(第四天)——递归神经网络与词向量原理解读

一、RNN网络架构解读

常规神经网络并不能考虑时间序列的特征(比如前天+昨天+今天或者带有前后关联的特征),现在每个特征都是独立考虑的,那么如果有这样的特征,网络应该怎么学呢

而递归递归网络hidden这里的转回箭头,表示训练完第一个X后,再拿回来去训练第二个X,即前一次训练的结果对后一次的训练结果产生影响。

类似现在有X0、X1、X2 ... Xt,假设X0就是本月的1号,X1就是2号以此类推,Xt就是昨天,这样是不是就是一个时间序列。

X输入后有了h,h是中间的结果,每个h保证能联合前一个的h。

二、LSTM网络

RNN的问题在于,每一次的h只考虑前一个,当h到最后的时候,它只考虑n-1的h,这样对吗?或者说越后面的时间的数据一定越重要吗?我们是不是应该考虑每个时间的数据

  • C:控制参数,决定什么样的信息会被保留什么样的会被遗忘。

  • 门:一种让信息选择式通过的方法

  • 每次计算的结果和前一轮的结果进行比较,选择要更新的信息

 

三、词向量Word2Vec模型通俗解释

先考虑第一个问题:如何将文本向量化

比如描述一个人,只用身高或体重,还是综合各项指标?如下

只要有了向量,就可以用不同的方法来计算相似度。如下

通常,数据的维度越高,能提供的信息也就越多,从而计算结果的可靠性就更值得信赖了。如下

如何描述语言的特征呢?通常都在词的层面上构建特征。Word2Vec就是把词转成向量:

假设现在已经拿到一份训练好的词向量,其中每个词都表示50维的向量:

如果在热度图中显示,结果如下:

从结果中可以发现,相似的词在特征表达中比较相似,也就是说明词的特征是有实际意义的!

如上图的男人和男孩有相当部分的区域颜色是相似的,只是有的浅了点,有的深了点。同样的地方,对比水,它们之间相差的就非常远,颜色基本没有关联。

四、训练数据构建

输入数据从哪来?首先我们得理解的是,文字单词转换成数值,它并不是仅仅针对该次任务或者该数据的,Thou或者shalt在这里是有这些意思,转成对应的数值,在其它文本其它数据中也是同样的意思,所以只要是符合逻辑的文本,我们都可以拿来训练。目前有Google的预训练bert模型也是这个原理。一般我们会维护一下语料库大表。

如何训练

我们选中三个单词,以thou shalt 来预测not,也可以不断的往后滑动,如以shalt not来预测make

也就是可以是无监督学习,但文字的前后一定是有先后顺序的,不能没有说话逻辑。

五、CBOW与Skipgram模型

CBOW:根据上下文预测中间内容

Skipgram:根据中间内容预测上下文

两模型输入输出如下:

这两个模型都存在gensim里,后续调用该工具包即可。

最终预测的词也会带有概率,而前面我们讲到如SoftMax用到会将最大的值提取出来,如果我们的语料库非常大,比如5万字,那么要给出5万字的概率,而SoftMax也得计算这5万,可以说是非常耗时的,怎么解决这个问题呢?

六、负采样方案

1.初始方案:

输入两个单词,看它们是不是前后对应的输入和输出,也就相当于一个二分类任务

出发点是好的,但是此时训练集构建出来的标签全为1,无法进行较好的训练

如上图,这样相当于告诉模型,只要往1预测,那么一定能效果好,类似风控场景中,正负样本非常悬殊甚至达到1:1万的情况。我们是不能直接训练的,我们会“构造”一些正样本,而这里是1太多,需要构建一些负样本。

2.改进方案:

加入一些负样本

1个1添加多少个0呢?gensim工具包给出的默认参数是1个1和5个0,即正负样本比1:5

正常情况下的Skipgram训练集

大致流程如下:

1.初始化词向量矩阵

最左边Embedding是语料库大表,所有的词都在里面。

Context是本次的预测的文本

dataset是负采样完成后的结果

2.通过神经网络返回传播来计算更新,此时不光更新权重参数矩阵W,也会更新输入数据

给出损失函数Error的结果,并更新到输入和输出数据中。更新输出数据是为了输出本次的预测结果,而更新输入数据,是为了维护我们将一直使用的语料库大表,使得我们的语料库的词向量等越来越准确。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/185661.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C+=内存管理

C/C内存管理以及动态内存的申请_c动态内存的申请与释放_Demo Test的博客-CSDN博客 问题是,这个0x0804 8000 到0xC 0000 0000之间,不止3GB,应该有47GB,该怎么解释呢?

4.1 Windows驱动开发:内核中进程与句柄互转

在内核开发中,经常需要进行进程和句柄之间的互相转换。进程通常由一个唯一的进程标识符(PID)来标识,而句柄是指对内核对象的引用。在Windows内核中,EProcess结构表示一个进程,而HANDLE是一个句柄。 为了实…

Python 如何实现外观设计模式?什么是 Facade 外观设计模式?Python 设计模式示例代码

什么是(Facade)外观设计模式? 外观(Facade)设计模式是一种结构型设计模式,它提供了一个简化复杂系统接口的高级接口,使得系统更容易使用。外观模式通过定义一个高层接口,隐藏了系统…

2023年中国恒温蜡疗仪发展趋势分析:应用前景存有很大发展与探索空间[图]

恒温电蜡疗仪可将蜡熔化,利用蜡自身特点,能阻止热的传导、散热慢、气体和水分不易消失,保温性能优越。利用蜡能紧密贴于体表的可塑性,可加入其他药物协同进行治疗,也可将中药与蜡疗有机地结合在一起,产生柔…

【Linux】Linux进程间通信(二)

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【Linux】…

《QT从基础到进阶·三十》QVariant的基础用法

很多时候,需要几种不同的数据类型需要传递,如果用结构体,又不大方便,容器保存的也只是一种数据类型,而QVariant则可以统统搞定。 QVariant可以保存QT和C常用类型,如果是自定义类型,比如struct,c…

什么是PWA(Progressive Web App)?它有哪些特点和优势?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

2023年中国逆流式冷却塔性能特点、应用领域及市场规模分析[图]

按冷却塔热交换时气流和水流方向不同的配置,机力通风冷却塔又可分为横流式冷却塔、逆流式冷却塔,目前主流的冷却塔型式为逆流式冷却塔,逆流式冷却塔(counterflowcoolingtower)是指水流在塔内垂直落下,气流方…

【C++学习手札】模拟实现string

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:缶ビール—みゆな 0:41━━━━━━️💟──────── 2:52 🔄 ◀️ ⏸ ▶️ ☰ &…

linux进程间通信之管道通信

Linux 进程间通信机制分三类:数据交互,同步,信号。理解了这些机制才能灵活运用操作系统提供的 IPC 工具。 一.管道 管道是一种文件形式,是内核的一块缓冲区。匿名管道只能用于具有亲缘关系的进程间通信,命名管道可以用…

在Linux上安装Oracle 数据库 11g (含静默方式安装)

好久没碰11g了,今天(2023年11月16日)因为有个需求又装了一遍。 在OCI上安装了一个Oracle Linux 6实例: $ uname -a Linux instance-20231116-1239-db11g 4.1.12-124.80.1.el6uek.x86_64 #2 SMP Mon Oct 9 02:32:10 PDT 2023 x86…

多维度梳理 MySQL 锁

多维度梳理 MySQL 锁 1、并发问题的解决方案2、MySQL的各类型锁2.1、从数据操作的类型划分 (读锁、写锁)2.2、从数据操作的粒度划分2.2.1、表锁2.2.1.1、表级别的S 锁、X 锁2.2.1.2、意向锁(IS、IX)2.2.1.3、自增锁2.2.1.4、元数据锁 2.2.2、行锁2.2.2.1…