TensorFlow之文本分类算法-5

news2024/12/24 8:28:09

1 前言

2 收集数据

3 探索数据

4 选择模型

5 准备数据

6 模型-构建训练评估

构建输出层

构建n-gram模型

根据前面章节的描述,n-gram模型是独立地处理分词,与原文中的单词顺序不相关。简单的多层神经感知(逻辑回归)、梯度推进机、支持向量机,这些都属于n-gram类型,这些模型利用的信息与原文的顺序无关。

实践证明,多层神经感知(multi-layer perceptions,MLPs)模型比其他模型的表现更佳,MLPs模型定义简单而且容易理解、能提供优越的准确度以及消耗更小的计算资源。

神经网络

在一个神经网络模型中,至少需要包括一个隐藏层,一个深度神经网络模型中,需要包括多于一个隐藏层,如下图所示,包括两个隐藏层的深度神经网络。

如上所示,从左到右,input layer是输入层,输入用于机器学习的特征向量集合,中间两个层hidden layer是隐藏层,first hidden layer是第一个隐藏层,sceond hidden layer是第二个隐藏层,每个隐藏层中包括的元素(unit)是神经元(neuron),每个神经元提供机器学习的能力,前一隐藏层的每个神经元都与后续的隐藏层的每个神经元实现连接(全连接层,稠密层dense)。output layer是输出层,主要是输出分类。

神经元

一个神经网络的每个隐藏层都包括不同的机器学习单元,该单元被称之为神经元(neuron),每个神经元都执行如下所示的两个步骤:

步骤1:

每个输入值与其对应的权重乘积再相和,得出权重和

步骤2:

输入步骤1的权重和到对应的神经元的激活函数,输出到下一层

如下所示的代码实例中,运行tf.keras技术框架实现两层的MLP模型,在两层中间,为了防止数据样本的过度拟合,增加两个用于处理信息规则化的层,其作用是在梯度下降的步骤中删除随机的特征选择。

mlp_model函数对应的输入参数说明如下所示,该函数返回MLP模型:

layers

稠密层(全连接层,前后层的全部神经元都发生连接)的数量  

units

层输出的维度,与稠密层的神经元相关

dropout_rate

防止过度拟合操作中,删除的比率

input_shape

已标准化处理的数据样本的特征向量集合

num_classes

分类的类别数,二元分类或者多元分类

构建序列模型

序列模型是与原文的单词顺序有关,因此,序列模型具备从原文相邻的分词中学习的能力。序列模型主要包括CNN卷积神经网络与RNN循环神经网络,这些模型的数据样本使用序列向量集的方式进行预处理。

一般情况下,序列模型需要学习大量的参数。在序列模型中,第一隐藏层(first hidden layer)是一个嵌入层(embeding layer),该层主要用于学习一个稠密向量集的空间中的单词之间的关系,因此,学习的数据样本越多,该层掌握的单词之间的关系就越丰富。

embeding layer

嵌入层是神经网络中第一个隐藏层,主要用于从高维度的特征集合向低维度的特征集合进行学习,也就是,输入一个高维度的特征向量集合,通过嵌入层的学习,输出一个低维度的特征向量集合,因为维度的降低,在神经网络的学习过程中能大规模地节省计算资源、以及提供更加准确的训练结果。

例如,目前地球上具有大概73000种树分类,假设,树分类作为机器学习的模型的特征向量集合,则神经网络的输入层的一个数据样本中包括73000个元素(one-hot向量集),假如,其中一个数据样本的只包括一个树分类baobad,则one-hot对应的特征向量集如下所示:

如上所示,该数组是一个稀疏向量集,仅baobad对应的索引位置是1,其他索引位置是0。如果不增加嵌入层处理,则学习过程将耗费大量的时间,如果增加嵌入层,则嵌入层只需要学习一个包括12个维度的向量集合(嵌入向量空间,embedding space)。

embedding space

嵌入向量空间是从高维度的向量空间向低维度的向量空间的映射而形成的。理论上,嵌入向量空间的存储组织架构能表示出有意义的数学结果,例如,在嵌入向量空间中,向量集之间的加减能解决单词之间的类比任务。

embedding vector

嵌入向量集是一个浮点类型数值的数组,嵌入层使用这些数组进行训练,如前面所述地球上的73000种树分类,对于baobab类型树种的嵌入特征向量集如下所示:

如上所示,一个嵌入向量集并不是一系列的随机数,嵌入层通过训练而确定这些数值,这个训练方式类似于在神经网络中通过训练学习权重的方式,嵌入向量集中的每个数值都是与某些树种分类的特征相关。

嵌入向量集的明显的数学特性是相似的项具有相似的浮点数值集,如上例中的树种分类,相似的树种分类之间具有相似的浮点数值集,而不相似的树种分类之间具有不相似的浮点数值集,例如,红木树种分类与红杉树种分类具有更多相似的浮点数值,而红木树种分类与椰子树种分类具有更少相似的浮点数值,嵌入层每次对数据样本的训练而输出的嵌入向量集是不相同,即使每次输入的数据样本都相同。

对于给定数据集的单词并不是唯一的,相同的单词也会出现在其他数据集,因此,不同数据集之间可以相互学习单词之间的关系,也就是,嵌入层可以从其他嵌入向量空间中学习所得融入到当前嵌入层的向量空间中,这些被嵌入的向量空间被称之为预训练嵌入向量空间,被引入的其他嵌入向量空间用于学习过程的开始阶段。

一些有名的机构可以提供预训练的嵌入向量空间,这些向量空间是通过大量的训练而学习所得,可以运用于当前文本分类的机器学习过程中,其链接如下所示:

https://nlp.stanford.edu/projects/glove/

(未完待续)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SCP命令在不同远程服务器之间发送文件(指定端口)

最近想把数据集放在另一个服务器上,但是如果先下载到本地然后再上传过去,则需要浪费好久时间。 特总结下如何快捷的通过命令完成不同远程服务器之间的文件传输,以及遇到的问题。 SCP命令 Linux scp 命令用于 Linux 之间复制文件和目录。1 s…

第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海),签到题6题

文章目录E.Strange IntegersD.Strange FractionsG.Edge GroupsI.Steadily Growing SteamH.Life is a GameK.Circle of Life补题链接:https://codeforces.com/gym/103446 E.Strange Integers E. Strange Integers time limit per test1 second memory limit per te…

搭建Docker+SRS服务器实现推流拉流的效果

最初的一个想法,是针对当前的网络电视去的,很多网络电视买回家,还要充很多会员,甚至跌入连环坑。我想给妈妈买一台电视,想把我自己收集的电影电视剧做成一个影视库,通过搭建家庭影院服务器,然后…

基于PHP+MySQL保险理赔系统的设计与实现

随着我国经济的发展,车辆的数量也在不断的增加相对应的车辆保险理赔的数量也在不断的增加,但是目前市面上很多理赔要么就是通过手工管理的方式进行管理,要么就是管理软件太过于的专业,为了能够让大众都能够在线通过网络进行在线理赔,我开发了本系统。 本设计尝试用PHP开发一个保…

SpringCloud_第3章_微服务保护_Sentinel

SpringCloud_第3章_微服务保护 文章目录SpringCloud_第3章_微服务保护1.初识Sentinel1.1.雪崩问题及解决方案1.1.1.雪崩问题1.1.2.超时处理1.1.3.仓壁模式1.1.4.断路器1.1.5.限流1.1.6.总结1.2.服务保护技术对比1.3.Sentinel介绍和安装1.3.1.初识Sentinel1.3.2.安装Sentinel1.4…

vue2.x和vue3.x 环境相关配置

1.vue2.x配置多个环境 在根目录下创建多环境配置文件 例如: env.devlopment、env.prod、env.sit等,我的环境文件有以下几个: 分别配置各文件的参数 比如说uat环境和生产环境请求url是不同的 uat环境env.uat: # uat环境 NODE_ENV uat# uat环境请求…

java锁

java锁 乐观锁和悲观锁 悲观锁 悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。 悲观锁的实现方式 synchronized关键字Lock的实现类都是悲观锁 适合写操作多的场景,…

面向物联网应用的6G技术

摘要 在物联网(Internet of Things,IoT)快速发展和5G已经规模化的商业部署的背景下,在不久的将来,5G的技术指标将无法完全满足大规模IoT的应用需求。而6G技术由于其具备高传输、低时延等出色的性能指标,受到了学术界和工业界的广泛关注。因此,为了促使IoT网络能够更好地发…

此框架是SQL Server增量订阅,用来监听增删改数据库数据变更

目前仅支持SQL Server,后续会支持MySQL和Oracle,Nuget上可以下载安装 或者使用Nuget命令添加包 dotnet add package Kogel.Subscribe.Mssql --version 0.0.0.1 可以用来处理DB主从同步,跨库同步,数据备份,同步ES&…

AI绘画软件汇总

AI绘画软件汇总 AI绘图在线体验 二次元绘图 在线体验地址:Stable Diffusion 模型包括: NovelAI,NovelAI的模型训练使用了数千个网站的数十亿张图片,包括 Pixiv、Twitter、DeviantArt、Tumblr等网站的作品。 Waifu,waifu的模型…

ShareSDK for Unity

本文档使用Unity2019进行演示 下载unitypackage 从Mob的github地址下载ShareSDK.unitypackage:Git地址,如下图所示 )![image.png]//download.sdk.mob.com/2022/06/22/15/165588252810937.61.png) 下载完成后得到一个.unitypackage结尾的文件&#xf…

2022年12月全国DAMA-CDGA/CDGP数据治理认证招生简章

20DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职…

R语言stan进行基于贝叶斯推断的回归模型

可以从许多统计软件包中运行Stan。到目前为止,我一直在从R运行Stan。 我们围绕stan进行一些咨询,帮助客户解决独特的业务问题。 简单线性回归 第一步是为Stan模型编写文件。这包含一个文件linreg.stan: 视频:线性回归中的贝叶斯…

新闻舆情管理平台开发,监控舆情发展趋势

打造企业良好声誉可能需要几年、十几年甚至更久,而毁掉它只需要短短几分钟。尤其是互联网时代下,人们接收信息的速度越来越快,在新闻发出去的几分钟内就能迅速占据热搜榜。而且网络上每天都会产生上亿条信息,单纯的依靠人工进行监…

openEuler 通过 手工方式 安装 ceph 步骤 Cephadm无法应用到openEuler 提醒不支持

ceph集群在openEuler手工安装过程Cephadm安装步骤前置要求1.openEuler版本2. Python 33. Systemd4. Time synchronization (such as chrony or NTP)5. LVM2 for provisioning storage devices安装1. 创建用户ceph2. 安装 ceph3. 生成配置项3.1 机器及组件规划列表3.2 ceph.conf…

Python第三方库之nibabel

1.nibabel简介 NiBabel提供对一些常见医学和神经影像文件格式的读/写访问,包括ANALYZE(plain,SPM99,SPM2及更高版本),GIFTI,NIfTI1,NIfTI2,CIFTI-2,MINC1&am…

[附源码]SSM计算机毕业设计疫情防控期间人员档案追寻系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

RocketMQ系列——搭建Namesrv源码调试环境整理

目录 RocketMQ系列-搭建Namesrv源码调试环境 Namesrv源码调试环境搭建 导入项目到IDEA 创建所需目录 环境配置 启动Namesrv 总结 RocketMQ系列-搭建Namesrv源码调试环境 在学习任何一个技术框架的时候,我们通常都是先了解是什么,有什么作用、解决…

Java流程控制语句

流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。 流程控制语句分类 顺序结构、分支结构&#…

【毕业设计】深度学习社交安全距离检测系统 - python opencv

文章目录0 前言1 课题背景2 实现效果3 相关技术3.1 YOLOV43.2 基于 DeepSort 算法的行人跟踪4 最后0 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! 🔥 对毕设有任何疑问都可以问学长哦! 这两年开始&#xff0c…