当前位置: 首页 > 编程日记 > 正文

数据变金矿:一文读懂序列模型(附用例)

简介

众所周知,人工神经网络(ANN)的设计思路是模仿人脑结构。但是直到10年前,ANN和人类大脑之间唯一的共同点是对实体的命名方式(例如神经元)。由于预测能力较弱并且实际应用的领域较少,这样的神经网络几乎毫无用处。

但是随着近十年来技术的飞速进步,神经网络越来越接近人脑,这使得ANN在各个行业中应用得越来越多。

86718798d9d6fb1044bcb773771ce2535bca5409

本文中,我们将介绍人工神经网络(ANN)领域的两大革新,这些革新使得ANN更接近于人类大脑。

目录

d47e62d2b349aca45e42305ed6714efbe5ed61d9ANN领域的两大革新
d47e62d2b349aca45e42305ed6714efbe5ed61d9思想实验
d47e62d2b349aca45e42305ed6714efbe5ed61d9序列模型的实际应用
d47e62d2b349aca45e42305ed6714efbe5ed61d9序列生成器
d47e62d2b349aca45e42305ed6714efbe5ed61d9序列到序列NLP模型
d47e62d2b349aca45e42305ed6714efbe5ed61d9一些非文本的序列到序列模型

ANN领域的两大革新

d47e62d2b349aca45e42305ed6714efbe5ed61d9随着GPU极大地提升了计算能力,我们可以大幅度地增加神经元的深度和广度。然而这样的人工神经网络仍然远远不及大脑的神经元数量。
d47e62d2b349aca45e42305ed6714efbe5ed61d9ANN现在既可以处理输入节点的序列数据,也可以处理输出节点的序列数据。这和我们大脑的工作模式一样。人类大脑并不是通过二分类来理解复杂的理念的。基于一系列给定的信息,我们形成了“思想”,随后大脑会通过一系列可以理解的词汇来表达“思想”。

我们能否在ANN中引入“思想”的概念呢?答案是肯定的,本文将进一步讨论这个理念。

14dd3b5c4dd5a5d04478c54fef6fb1ed2efefe0a

现实世界的大部分数据都是以序列的形式出现的,这使得序列模型受到越来越多的关注。序列可能是数列、图片像素序列、视频序列或者是一段音频序列。

在过去的十年间,我们已经存储了近1000PB(或者超过109GB)的非结构化数据,以前我们很难从中提取信息,幸运的是,我们现在有序列模型这样新型的神经网络结构,它可以把数据变成金矿。

本文并不讨论序列模型背后所有复杂的数学原理,或是提供一些运行序列模型的示例代码(我将把代码留给以后的文章)。本文想要提供一些行业内应用序列模型的实际案例,从而帮助你识别出可以通过此类模型解决的商业问题。

为了更好地理解本文,接下来希望你能想象一个场景。请开启你的分析推理模式吧!

思想实验

假如现在沃尔玛指派你负责一个新项目 – WalKiosk,希望你带领团队开发出无人自助超市,顾客只需要和沃尔玛的Kiosk互动就可以完成购物,就好像自动售卖机一样。沃尔玛想把这样的Kiosk应用在美国各地。


Kiosk和普通自助售卖机的关键区别是Kiosk不会展示售卖商品的名录,而是通过音频开启一个类似Google 的搜索引擎。顾客走到Kiosks面前,以“OK Walmrt, xxxxxx”这样的关键字开头,然后说出或输入想要的商品。下面是一个交互案例(你可以试着评估一下人类售货员是否能比Kiosk 做的更好):

顾客说“OK Walmrt,,我想要Leonardo DiCaprio 和Nolan搭档的第一个电影中,第一幕里他穿的那双鞋。”使用的是某国语言。

你的团队要做的是让Kiosk快速搜索,如果找到一个可靠的答案,就通过客户咨询时使用的语言来回复,比如“Leonardo DiCaprio穿的是黑色xxxxx款的Nike鞋。点击链接观看您所需物品的短视频介绍。好消息--我们目前有您需要的款式和鞋码,价格是200美元。由于您是沃尔玛的忠实用户,我为您找到了合适的折扣!立即购买仅需150美元。”

如果顾客说“好的我买了”,Kiosk会在顾客付款后立刻交货。

Kiosk最后说道“感谢XYZ先生今日的惠顾,请为我们的服务提供宝贵建议,以便我们不断改进”,然后顾客通过文字或语音留下对本次交易的反馈后离开。

这样一个简单的交易现在如今的世界里要占据你大块的时间,但是今后只需要不到两分钟(如果一切正常的情况下)。

这听起来是不是很超前?实现Kiosk的功能主要通过一个简单的结构--序列模型。以下是Kiosk需要具备的功能列表:

d47e62d2b349aca45e42305ed6714efbe5ed61d9语音识别用于理解顾客所述的内容。
d47e62d2b349aca45e42305ed6714efbe5ed61d9机器语言翻译用于将顾客的语言翻译为指定的语言(比如英语)。
d47e62d2b349aca45e42305ed6714efbe5ed61d9命名实体/主题提取用于找到步骤2中顾客需要的主要物品。
d47e62d2b349aca45e42305ed6714efbe5ed61d9关系分类用于标记步骤3中各种实体之间的关系。
d47e62d2b349aca45e42305ed6714efbe5ed61d9查询应答(类似Google搜索)通过核心知识图,找到步骤3和4中实体的关系。
d47e62d2b349aca45e42305ed6714efbe5ed61d9语音生成将步骤5中找到的所有相关信息生成顾客需要的答案。
d47e62d2b349aca45e42305ed6714efbe5ed61d9聊天机器人使机器的对话能力更接近于人类。
d47e62d2b349aca45e42305ed6714efbe5ed61d9文本总结用于将用户的反馈总结为关键点或痛点。

d47e62d2b349aca45e42305ed6714efbe5ed61d9产品销售预测用于补充库存。

5853244d4316c3501f9ab5565562f3302e6ef2be

完成Walkiosk所需的不仅仅是以上九个功能,但是它们足以实现核心想法。九个功能中的任意一个都可以通过单一结构----序列模型构建。

你可以将序列模型想象为一个几乎保持不变的黑匣子,只需要按这九个功能改变输入和输出数据,每个功能的模型架构是相同的。我们可以进一步生成以任何语言为输入的单一模型,一并完成自助服务过程、报告过程、库存管理过程。

如果这还不足以帮助你完整了解序列模型,让我们整理一个序列模型可以实现哪些功能的详尽列表。

序列模型的实际应用

为了确保列表尽可能涵盖序列模型的潜在用例,我们基于输入和输出序列的类型进行分类。输入和输出可以是以下任意一种:标量(Scalar)、趋势、文本、图像、音频和视频。如果以上六种都可以作为输出和输入,我们一共得到36种分类,然而不是每一种组合的研究都已经成熟。

在阅读下面这个列表之前,你可以先停下来。尝试写出你自己的用例列表(可以参考前文的思想实验)。

列表如下:

4d82999a4a7be4a7abb6f1e199f2cc4023abb97a

表格中的名词解释:

类型是输入或输出的类型。

元素是输入或输出序列中元素的数目。

用例是分类中可能的应用方向。

下面我们将介绍一些实际案例,带你领略序列模型的超能力。

首先,我们先介绍最简单的—序列生成器

这些生成器通常采用标量作为输入,标量输入可以是任意的随机种子或数据。以下是一些生成器的案例:

ff68c72ec4733b1c24b1edb5efde6ae012c8c1aa

值得注意的是,我们可以用任何特定类型的数据来训练模型。例如,如果我们用哈利波特的书来训练文本生成器(Text generator),很可能会得到一段有关于哈利波特主人公的奇幻文字。如果你足够幸运,可能会得到一个有实际意义的章节,于是你创造了属于你的独创内容。

如果你用爵士乐训练模型,你可能会通过模型生成同一风格的新曲子。如果你用动物的图片训练模型,你可能会看到杂交物种的样子。

其次,我们介绍最受欢迎的-序列到序列 NLP模型

401a9f3e1190d146f466fb452476085433313ad1

机器语言翻译(Machine Language Translation)已经达到新的高度,现在正和人工翻译展开激烈的竞争。如今,你可以轻松找到基于序列到序列模型(Sequence to sequence, seq2seq)核心概念的实时翻译机器。

文本总结(Text Summarization)是序列模型的另一个重要用例。文本总结可以显著减轻以下工作负担--阅读顾客冗长的投诉、电话/通讯监控、汇总顾客对产品的反馈等。

聊天机器人(Chatbot)是另一个重要的用例,目前被广泛地应用于经营活动、呼叫中心、交流中心和类似Siri、Google Home、Alexa类型的用户辅助。

最后,我们介绍更多非文本的序列到序列模型

fc12b7ec21e398c2b9a2f98ee1a005db625a555a

语音识别(Speech Recognition)是目前最受投资追捧的一个领域,其在个人Al助理(Alexa、Google Home等)和呼叫中心语音记录工具等用例中扮演了非常重要的角色。

在上图提到的三项技术中,目前有市值约10亿美元的企业以语音识别为核心竞争力,语音识别中广泛地使用序列到序列模型。图像描述(Image Captioning)是最热门的研究领域之一,它在社交媒体领域有广泛应用。至于字幕生成(Subtitle Generator),这项技术尽管还没有达到产品阶段,但是目前也在积极地探索中。

尾记

如今数据科学领域的很多牛人都在致力于解决已经存在的问题。然而对于任何成功的数据科学家或分析员来说,识别并提出可以分析解决的问题是同样重要的任务。后者是非常不同的工作,并且不需要过多的编程经验或数学背景。你唯一需要做的是通过给定的工具了解哪些是可能实现的,而哪些不能。

问题识别是资深的分析专业人士必备的技能。我希望这篇序列模型的入门文章可以激励你去寻找领域内能以此工具解决的新问题。


原文发布时间为:2018-05-28

本文作者:数据派

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”。

相关文章:

ZJU-java进阶笔记 第七周(异常处理)

异常的定义 捕捉异常范例 try{//可能产生异常的代码 }catch(Type1 id1){//处理Type1异常的代码 }catch(Type2 id2){//处理Type2异常的代码 }catch(Type3 id3){//处理Type3异常的代码}异常捕捉的意义:异常发生,程序也不需要终止 3. 捕捉到异常对象后…

【组队学习】【35期】吃瓜教程——西瓜书+南瓜书

吃瓜教程——西瓜书南瓜书 航路开辟者:谢文睿、秦州领航员:凌亮航海士:谢文睿、秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-bookB站视频:https://www.bilibili.com/video/BV1Mh411e7VU内容…

SmartDispatcher 类

UI线程中使用 public class SmartDispatcher { public static void BeginInvoke(Action action) { if (Deployment.Current.Dispatcher.CheckAccess() || DesignerProperties.IsInDesignTool) { action(); } else { Deployment.Current.Dispatcher.BeginInvoke(action); } } }…

三、临时弹出一个QQ对话窗口

第一种&#xff1a;需要添加好友才可以访问 <a href"http://wpa.qq.com/msgrd?v3&uin317985559&siteqq&menuyes" target"_blank">123 </a> 第二种&#xff1a;不需要添加好友即可访问 上网去搜吧&#xff0c;小臂崽子转载于:http…

ZJU-java进阶笔记 第七周(输入输出)

流是Java处理输入输出的方式流的基础类——以字节(byte)形式 InputStream OutputStream 例 public class Main {public static void main(String[] args){System.out.println("请输入&#xff1a;");//定义一个字节数组byte[] buffer new byte[1024];try {int len …

Jquery实现的Tabs页签

管理导航系统设置用户管理内容管理其他管理1111111222222222333333333334444444444555555555555555<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns&qu…

【组队学习】【35期】动手学数据分析

动手学数据分析 航路开辟者&#xff1a;陈安东、金娟娟、杨佳达、老表、李玲、张文涛、高立业领航员&#xff1a;六一航海士&#xff1a;郑园园、李牧轩、高岩 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/hands-on-data-analysis开源内容&#xff1a;…

postfix邮箱服务

1、使用postfix服务之前&#xff0c;需要先安装DNS服务&#xff0c;指定邮件交换记录&#xff1b;2、编辑postfix服务配置文件&#xff1b;3、安装dovecot服务、用于本地进行邮件发接测试&#xff1b;4、创建两个用户&#xff0c;并添加到mailusers组中&#xff1b;5、在Linux虚…

mysql数据库基本介绍及常见使用

关系型数据库 ● 二维表 ● 表中的一行&#xff0c;称为记录&#xff0c;表中的列&#xff0c; 称为字段&#xff08;属性&#xff09; ● 行列交叉的单元格的值&#xff0c;叫属性值或字段值。 ● ORACLE DB2 Mysql SQL SERVER 关系型数据库 常用的指令(可以在命令行执行&…

FilenameFilter的使用

使用FilenameFilter过滤掉chapter开头的文件。 1 public class contentFilter implements FilenameFilter {2 public boolean isContent(String file) {3 if (file.startsWith("chapter")){4 return false;5 }else{6 return true;7 }8 …

Qt 串口连接

Qt 串口连接 使用 Qt 开发上位机程序时&#xff0c;经常需要用到串口&#xff0c;在 Qt 中访问串口比较简单&#xff0c;因为 Qt 已经提供了 QSerialPort 和 QSerialPortInfo 这两个类用于访问串口。 使用 QSerialPort Qt 提供的 QSerialPort 类继承于 QIODevice&#xff0c;也…

navicat for mysql如何在更新记录时自动记录更新时间

如图所示 步骤 添加属性recordTime(任意)设置属性类型为timestamps勾选 根据当前时间戳更新默认栏填 CURRENT_TIMESTAMP 效果

ASP.NET Web API自身对CORS的支持:从实例开始

在《通过扩展让ASP.NET Web API支持W3C的CORS规范》中我们通过自定义的HttpMessageHandler为ASP.NET Web API赋予了跨域资源共享的能力&#xff0c;具体来讲&#xff0c;这个自定义的CorsMessageHandler的自由主要体现在如下两个方面&#xff1a;其一&#xff0c;为简单跨域请求…

2021第12届蓝桥杯省赛 -- 填空题:试题B:直线

试题B&#xff1a;直线 问题描述 在平面直角坐标系中&#xff0c;两点可以确定一条直线。如果有多点在一条直线上&#xff0c; 那么这些点中任意两点确定的直线是同一条。 给定平面上 2 3 个整点(x,y)∣0≤x<2,0≤y<3,x∈Z,y∈Z{(x, y)|0 \leq x < 2, 0 \leq y &l…

Markdown快速上手

基本语法 标题 #标题名共六级&#xff0c;依次“#”数量增加&#xff0c;字体减小 加粗文字 哈喽 两个“* ”文字内容 再两个 斜体文字 哈喽 一个“*” 文字内容 再一个 无序列表 -列表内容回车两次退出此编辑模式 有序列表 1.列表内容回车两次退出此编辑模式 插入链接 百度链接…

复杂SELECT语句执行过程

通过FROM子句中找到需要查询的表通过WHERE子句进行分组函数筛选判断通过GROUP BY子句完成分组操作通过HAVING子句完成组函数筛选判断通过SELECT子句选择显示的列或表达式及组函数通过ORDER BY子句进行排序操作 书写时按照这个顺序:5 1 2 3 4 6 出处&#xff1a;东软Java实训

MTD NANDFLASH驱动相关知识介绍

转&#xff1a;http://blog.csdn.net/zhouzhuan2008/article/details/11053877 目录 MTD总概述MTD数据结构 MTD相关层实现MTD&#xff0c;Memory Technology Device即内存技术设备字符设备和块设备的区别在于前者只能被顺序读写&#xff0c;后者可以随机访问&#xff1b;同时&a…

Spring Boot轻松理解动态注入,删除bean

原文地址&#xff1a;http://412887952-qq-com.iteye.com/blog/2348445 ​ 我们通过getBean来获得对象,但这些对象都是事先定义好的,我们有时候要在程序中动态的加入对象.因为如果采用配置文件或者注解&#xff0c;我们要加入对象的话,还要重启服务,如果我们想要避免这一情况就…

mysql数据库常见进阶使用

事务 1&#xff09;mysql中的工作单元&#xff0c;由一个或者多个sql语句组成&#xff0c;“不成功便成仁”&#xff0c;要么全部执行成功&#xff0c;要么全部执行失败&#xff0c;以此来保证数据的一致性。 2&#xff09;事务的回滚&#xff1a;如果事务中的任何一个sql执行失…

[转]web打印实现方案 Lodop6.034 使用方法总结

本文转自&#xff1a;https://www.cnblogs.com/tiger8000/archive/2011/09/19/2181365.html 官文下载&#xff1a; http://mtsoftware.v053.gokao.net/download.html 本地 Lodop6.034 版本下载&#xff1a;/Files/tiger8000/Lodop6.034.rar 假设你的 lodop 打印控件放在你项目的…

图片的另一种展现—将后台图片编码直接展现为图片

1、应用场景 开发过程中&#xff0c;遇到这样的需求&#xff1a;需要将服务器上的图片展现在页面上&#xff0c;但是图片所在服务器不是对外的&#xff0c;图片所在服务器与应用服务器也不在同一台机器上&#xff0c;这时候就需要在开发中先将图片读出来&#xff0c;返回给应用…

电子学会青少年编程等级考试Python一级题目解析12

Python一级题目解析 1、题目&#xff08;2021.03&#xff09; 写一个计算长方形面积的程序&#xff0c;并对每行代码进行相应的注释&#xff0c;要求如下&#xff1a; &#xff08;1&#xff09;采用多行注释&#xff0c;说明程序的功能&#xff08;如下&#xff09;&#x…

Swing基础知识(更新中)

Swing是什么 做桌面应用程序的界面&#xff0c;GUI。 组件和容器&#xff1a;容器是特殊的组件。 布局管理器&#xff1a; 一般放中间容器&#xff0c;用来控制容器中组件的排列方式。 常见&#xff1a; ① FlowLayout 流布局(默认布局) 左上是起点&#xff0c;按组件加入容…

timesten 修改最大连接数

修改完/var/Timesten/sys.odbc.ini里面的connections之后 重启TT&#xff1a;ttdaemonadmin -restart 报错&#xff1a;15019: Only the instance admin may alter the Connections attribute Command> Command> connect dsn的名称;15019: Only the instance admin may a…

青少年编程竞赛交流群第050次活动录播

背景介绍 把电子学会的青少年编程能力等级测评作为游戏的关卡&#xff0c;带着小朋友们升级打怪&#xff0c;这个想法来自于 我从邵慧宁身上得到的启发。 升级打怪&#xff1a; 电子学会考评中心&#xff1a;http://www.qceit.org.cn/bos/default.html 知识内容&#xff1a…

JDBC连接mysql数据的7个步骤(讲解+源码)

步骤 源码 DBUtils类 package com.csu.db;import java.sql.*;public class DBUtils {public static Connection getConnection(){try {//[1/7] 加载JDBC的驱动Class.forName("com.mysql.cj.jdbc.Driver");//[2/7] 定义url连接参数String url "jdbc:mysql://l…

UML:概要设计,用什么画我的类图?

背景 做过需求之后&#xff0c;很少使用 UML 画概要设计&#xff0c;这几天尝试的用了几个工具&#xff0c;最总还是选择了 VisualStudio。 Edraw 详细信息很难编辑&#xff0c;如&#xff1a;签名。 Viso 添加成员太麻烦了。 VisualStudio 图形不支持着色。 备注 使用 VisualS…