谈谈复杂多分类问题上的一些个人理解
七月 上海 | 高性能计算之GPU CUDA培训
7月27-29日三天密集式学习 快速带你入门阅读全文>
正文共1790个字,4张图,预计阅读时间8分钟。
最近遇到了复杂多分类问题,因为无论在自己平时生活还是导师或老板分配的任务里都很常见,所以打算写写,记录下点点滴滴。
复杂多分类问题
什么是复杂多分类问题?(复杂多分类是我自己命名的,如果命名错误请谅解)用一个例子来告诉大家:
比如有一天zenRRan盗窃了东西的时候,被店主人发现,于是两人发生了争执,zenRRan就动手打了人家并且拿了值钱的东西跑了。最后警察根据路边监控的人脸识别功能,识别到了我在xxx大学实验楼NLP实验室312lab,于是将之逮捕!
如果你是大法官,你会判他什么罪?(不要怕,zenRRan不会生气)在找罪名的时候,大脑里先过一遍所有的罪名,以防漏掉一个。这时大脑扫描到了盗窃罪,再一看整个案件,对,zenRRan犯了盗窃罪;之后又扫到了贩卖枪支罪,然后和我的案例一对比,不符合;最后根据上述的流程,发现我又犯了故意伤人罪。最终判别:zenRRan犯了盗窃罪,故意伤人罪,数罪并罚上述问题就是复杂多分类问题。首先罪行数量是一定的,分类结果就是从这些罪行数量中选择。你肯定会联想到咱们平时见得简单分类问题。但是复杂多分类问题和简单分类问题的区别是,前者可以从已知分类集合中选取若干种,而后者只能选取一种。
现在你应该清楚什么是复杂多分类问题了,那么又是怎么训练的呢?代码中又是怎么写呢?毕竟理论和实践毕竟是两件事,下面来讲述下复杂多分类问题我的思路历程和简单网络模型代码搭建。
网络训练思路历程
我从我当时第一次写该模型的时候的思路流程来一一讲解。我的思路流程应该就是大家的思路流程了。
比如训练集为:
case1:杀人罪
case2:故意伤人罪,破坏公物罪
case3:盗窃罪,故意伤人罪
首先,因为我认为复杂多分类问题和简单分类问题极为类似,所以就按照简单分类问题那样,每个case的label是一个label,于是最终分类为结果为:三类,分类集合为:
【杀人罪】,【故意伤人罪,破坏公物罪】,【盗窃罪,故意伤人罪】
于是被导师看到了,用鄙视的小眼神看着我,并说:以后别说你导师是我,我没有这样的学生。于是又耐心的点播我:神经网络和人的思路得是一样的,因为神经网络就是在模仿人类大脑的思考方式,所以,你再想想自己是怎么思考的?然后怎么用网络表示出来?
于是恍然大悟,茅塞顿开,柳暗花明又一村。
想了想上述描述的例子我的大脑是怎么个流程,于是有了新的思路。
因为对每一个案例判刑,需要扫描的集合是所有的罪行,然后进行判定是or否。于是得到分类集合为:
【杀人罪】,【故意伤人罪】,【破坏公物罪】,【盗窃罪】
即在所有罪行上进行二分类。这里用1表示是,0表示否。
所以case1的训练的金标为:
1 0 0 0
case2训练金标为:
0 1 1 0
case3训练金标为:
0 1 0 1
大致思路就是上面的,我想你应该是懂了。然后代码实践。
网络模型代码搭建
网络的大部分内容和简单分类任务网络搭建还是很相似的,先是case通过embedding层,然后LSTM层,之后获得结果,然后进行max_pooling,代码为:
最后的input中保存了这个case的被提取的信息。
我们之后要做的就是在这个input上进行复杂多分类预测。我们继续想大脑的思考过程,是对一个案例在所有类上做二分类,需要有一个参数W。
如对第一个罪行进行预测:
pred1 = input * W1
对第二个罪行进行预测:
pred2 = input * W2
对第三个罪行进行预测:
pred3 = input * W3
对第四个罪行进行预测:
pred4 = input * W4
注:input维度为(1, hidden_size),Wi 维度为(1,hidden_size),得到预测信息为predi,维度为(1,hidden_size)
具体表示为:
我们能够看出,每一个式子中的input是一样的,只是Wi不一样而已,所以,为了加速计算,这里 Wi 可以用大矩阵来表示,input本身复制多份:
每一个case的预测信息保存在pred矩阵里,最后对pred进行线性分类即可。其中pred维度为(label_size,hidden_size),分类结果映射到(label_size,2)上。
代码为:
总结
我们用神经网络搭建的时候,一定要想着自己的大脑思考过程,不要一个方法用到所有任务上。每个任务有每个任务的特点,对症下药才有效!
原文链接:https://www.jianshu.com/p/f09cff556bfa
查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:
www.leadai.org
请关注人工智能LeadAI公众号,查看更多专业文章
大家都在看
LSTM模型在问答系统中的应用
基于TensorFlow的神经网络解决用户流失概览问题
最全常见算法工程师面试题目整理(一)
最全常见算法工程师面试题目整理(二)
TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络
装饰器 | Python高级编程
今天不如来复习下Python基础
谈谈复杂多分类问题上的一些个人理解相关推荐
- Softmax回归——logistic回归模型在多分类问题上的推广
Softmax回归 Contents [hide] 1 简介 2 代价函数 3 Softmax回归模型参数化的特点 4 权重衰减 5 Softmax回归与Logistic 回归的关系 6 Softma ...
- ML之分类预测之ElasticNet之PLoR:在二分类数据集上调用Glmnet库训练PLoR模型(T2)
ML之分类预测之ElasticNet之PLoR:在二分类数据集上调用Glmnet库训练PLoR模型(T2) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 for iStep in ...
- 【NLP】相当全面:各种深度学习模型在文本分类任务上的应用
论文标题:Deep Learning Based Text Classification:A Comprehensive Review 论文链接:https://arxiv.org/pdf/2004. ...
- 【小白学习PyTorch教程】十六、在多标签分类任务上 微调BERT模型
@Author:Runsen BERT模型在NLP各项任务中大杀四方,那么我们如何使用这一利器来为我们日常的NLP任务来服务呢?首先介绍使用BERT做文本多标签分类任务. 文本多标签分类是常见的NLP ...
- BERT模型—7.BERT模型在句子分类任务上的微调(对抗训练)
文章目录 引言 二.项目环境配置 二.数据集介绍 三.代码介绍 四.测试 1.代码执行流程 数据代码见:https://gitee.com/lj857335332/bert_finetune_cls_ ...
- java面试(二十六)--(1)J2EE中常用名词(2)讲一下redis的主从复制怎么做的?(3)请谈谈你对Javaweb开发中的监听器的理解?(4)按之字形顺序打印二叉树(5)内部类大全
1.J2EE中常用名词 web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使 JSP,SERVLET直接跟容器中的环境变量接**互,不必关注其它系统问题.主要有WEB服务器来 ...
- 谈谈我对MVC的View层实现的理解
谈谈我对MVC的View层实现的理解 MVC框架可以把应用清晰明了地分为三个部分:Model层–数据层,View层–视图层,Controller–逻辑层,Model层负责整合数据,View层负责页面渲 ...
- 【HSI】高光谱的数据集分类深度学习实战及代码理解
[HSI]高光谱的数据集分类深度学习实战及代码理解 文章目录 [HSI]高光谱的数据集分类深度学习实战及代码理解 一.配置文件编写 二.高光谱图像的处理 2.1图像数据变换 2.2 数据整合 2.3 ...
- 谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo
谈谈我对前端组件化中"组件"的理解,顺带写个Vue与React的demo 前言 前端已经过了单兵作战的时代了,现在一个稍微复杂一点的项目都需要几个人协同开发,一个战略级别的APP的 ...
最新文章
- linux批量用户创建,linux 批量用户的创建
- linux 查看sql进程id,根据进程的ID取得该进程的SQL脚本
- Eclipse使用Android2.3和3.0的SDK
- 秒杀多线程第十二篇 多线程同步内功心法——PV操作上
- I/O多路转换 select
- 浮栅场效应管 符号_场效应管主要参数与特点,场效应管与其他管子的对比
- DataBase -- JOIN
- [代码审计]phpshe开源商城后台两处任意文件删除至getshell
- OpenResty Redis 安装部署测试SET GET功能
- hdu 1061 Rightmost Digit解题报告
- Ubuntu类似与xshell 和crt的软件 pac- Ásbrú Connection Manager
- 移动硬盘看不到盘符,磁盘管理器显示未初始化解决办法
- 锡兰1.0.0现已上市
- SOS关于组建星际物质研究自愿者协会的倡议
- 1154 Vertex Coloring
- linux pg启动日志查看,pg日志分析
- 免费在线http代理
- nuxt ssr打包和部署
- Win11开始菜单右键没反应怎么办
- smb测速工具_编码器测速例子
热门文章
- 用android做用户管理中心,Android 如何设计用户Session管理?
- moocpython123输入若干数、每行输入一个数值作业_MOOC嵩天@python123作业
- phoenix的元数据一般存在哪里_ElasticSearch文档元数据(Metadata)
- postgresql编译安装
- 远端WWW服务支持TRACE请求漏洞修复(linux)
- python两个一维数组合并_python:16.合并两个排序的链表
- python sorted下标_Python学习教程(Python学习路线):第七天-字符串和常用数据结构
- 剑指Offer——链表中倒数第K个节点
- 苹果ios,下拉菜单错位的问题(目前iphone x没发现有这个问题)
- 原生js 基于canvas写一个简单的前端 截图工具