一文了解循环神经网络_华为云开发者联盟-编程思维

摘要:循环神经网络(RNN)可是在语音识别、自然语言处理等其他领域中引起了变革!

本文分享自华为云社区《【MindSpore易点通】深度学习系列-循环神经网络上篇》,作者:Skytier

循环神经网络(RNN)可是在语音识别、自然语言处理等其他领域中引起了变革!

1 应用场景

循环神经网络(RNN)其实就是序列模型,我们先来看看其应用场景。

在语音识别时,给定了一个输入音频片段X ,并要求输出对应的文字记录Y 。这里的输入和输出数据都是序列模型,输入X是一个按时播放的音频片段,输出Y是一系列文字。

音乐生成问题也是一样,输出数据Y是序列,而输入数据X可以是空集,也可以是个单一的整数(代表音符)。

而系列模型在DNA序列分析中也十分有用,DNA可以用A、C、G、T四个字母来表示。所以给定一段DNA序列,你能够标记出哪部分是匹配某种蛋白质的吗?

以上所有类似问题都可以被称作使用标签数据(X,Y)作为训练集的监督学习,输入数据X或者输出数据Y是序列,即使两者都是序列也有数据长度不同的问题。

2 模型构建

比如建立一个序列模型,它的输入语句是这样的:“Sam Li and Tom date on Tuesday.”。然后模型是可以自动识别句中人名位置的命名实体识别模型,可以用来查找不同类型的文本中的人名、公司名、时间、地点、国家名和货币名等等。

假定输入数据x,序列模型的输出y,使得输入的每个单词都对应一个输出值,同时y还需要表明输入的单词是否是人名的一部分。

首先输入语句是7个单词组成的时序序列,所以最终会有7个特征集x:x<1>,x<2>,...,x<7>,同时可以索引其序列中的位置。Tx表示输出序列的长度,这里Tx=7。

同理,输出数据也是一样,分别对应y<1>,y<2>,...,y<7>,Ty表示输出序列的长度。

那么问题来了,首先我们需要准备一个比较大的词典库,可能该库里的第一个单词是a,and出现在第367个位置上,Sam是在7459这个位置,Tom则在8674。

那么我们就可以在这个词典库的基础上遍历训练集。

那么也就是说,Sam由x<1>表示,其是一个第7459行是1,其余值都是0的向量;Li由x<2>表示,其是一个第2420行是1,其余值都是0的向量。

通常我们称这种x指代句子里的任意词为one-hot向量,只有一个值是1,其余值都是0,所以整句话中我们会有7个one-hot向量,用序列模型在X和Y目标输出之间学习建立一个映射关系。

PS:如果遇到了一个在你词表中的单词,可以创建一个Unknow Word的伪造单词,用<UNK>作为标记。

3 模型解释

通常情况下,我们会首先选取标准的神经网络,输入7个one-hot向量,经过一些隐藏层,最终会输出7个值为0或1的项,表明每个输入单词是否是人名的一部分。

但最后我们总会遇到这样的问题:

1.输入和输出数据的长度并不完全一致,即使采用填充(pad)或零填充(zero pad)使每个输入语句都达到最大长度,但最后的表达式会很奇怪。

2.简单的神经网络并不会共享从文本的不同位置上学到的特征。因为我们希望,如果首次学习的时候我们已经知道了Tom是人名,那么当Tom出现在其他位置时,其并不能够自动识别,因此也不能够减少模型中参数的数量。

那么循环神经网络为啥会比普通的神经网络更加出众呢?

另外循环神经网络是从左向右扫描数据,同时每个时间步的参数也是共享的,用Wax来表示从x<1>到隐藏层的连接的一系列参数,每个时间步使用的都是相同的Wax参数,而激活值是由参数Waa决定的,输出结果由Way决定。

先输入零向量a<0>,接着进行前向传播过程,计算激活值a<1>,然后再计算y<1>。

更普遍来说,在t时刻:

为了更加简化一点,定义Wa:

,假设a是100维的,x是10,000维的,那么Waa是(100,100)维的矩阵,Wax是(100,10000)维,Wa为(100,10100)。

同样,假定

,Wy表明它是计算y类型的量的权重矩阵,而Wa和ba则表示这些参数是用来计算激活值的。

RNN前向传播示意图:

 

点击关注,第一时间了解华为云新鲜技术~

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/huaweiyun/p/16711152.html

推理网络精度不达标,5个方法轻松搞定_华为云开发者联盟-编程思维

摘要:推理时精度错误或不达标,怎么办?模型推理时,模型推理功能调测OK,但推理精度错误,或推理精度与标杆数据存在少量差距,这时该怎么做呢? 本文分享自华为云社区《【CANN文档速递10期】推理网络精度调优》,作者: 昇腾CANN 。 一、推理时精度错误或不达标,怎么办? 模型推理时,模型推理功能调测OK,但推理精度错误

阿里云高性能计算负责人何万青:阿里云大计算加速hpc与ai融合_弹性计算百晓生-编程思维

摘要:2022 年 8 月 5 日,2022 阿里云生命科学与智能计算峰会在北京望京昆泰酒店举行,阿里云高性能计算负责人何万青博士,带来了题为《阿里云大计算加速 HPC 与 AI 融合》的分享,以下是他的演讲内容整理,供大家阅览:     阿里云高性能计算负责人  何万青   人类历史上各种广谱药的发现,是一个漫

跟我学python图像处理丨带你掌握傅里叶变换原理及实现_华为云开发者联盟-编程思维

摘要:傅里叶变换主要是将时间域上的信号转变为频率域上的信号,用来进行图像除噪、图像增强等处理。 本文分享自华为云社区《[Python图像处理] 二十二.Python图像傅里叶变换原理及实现》,作者:eastmount。 本文主要讲解图像傅里叶变换的相关内容,在数字图像处理中,有两个经典的变换被广泛应用——傅里叶变换和霍

vs code摸鱼神器,让你快速开发ai模型_华为云开发者联盟-编程思维

摘要:ModelArts VS Code插件一键接入云上开发环境介绍及操作指导 对于习惯于使用本地VS Code IDE的开发者,受限于本地资源,采用本地开发加云上调测的远程开发方式不失为一种更好的选择。对比一下本地开发和远程开发的优劣可以看到,本地+远程结合的方式可以同时享受IDE工程化开发的优势和云上资源的即开即用

【机器学习】数值分析03——任意曲线拟合_warrenryan-编程思维

数值分析<3>——任意曲线拟合 全文目录 (博客园)机器学习 (Github)MachineLearning Math 万物皆是展开式 你是否想过这样一个问题,任何的函数,也许都能通过一个“大一统”理论将他们整合在一起。事实上对于任意一种对应关系,我们都能找到一个函数尽可能去贴合它,我们采取的是一种极限的思

讯飞语音接口注册_水上云天-编程思维

1.首先申请账号 http://open.voicecloud.cn/一个邮箱就够了,验证邮箱后,会得到一个appid2.然后登陆账号,到“我的语音云”---创建一个新的应用填写应用名称iflyreminder,后选择分类,然后描述应用大致要实现的功能,选择平台,这里选择Android。当然也有IOS WP8 JAVA

闻其声而知雅意,基于pytorch(mps/cpu/cuda)的人工智能ai本地语音识别库whisper(python3.10)-编程思维

前文回溯,之前一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),利用AI技术将文本合成语音,现在反过来,利用开源库Whisper再将语音转回文字,所谓闻其声而知雅意。 Whisper 是一个开源的语音识别库,它是由Facebook AI Research (

极速进化,光速转录,c++版本人工智能实时语音转文字(字幕/语音识别)whisper.cpp实践-编程思维

业界良心OpenAI开源的Whisper模型是开源语音转文字领域的执牛耳者,白璧微瑕之处在于无法通过苹果M芯片优化转录效率,Whisper.cpp 则是 Whisper 模型的 C/C++ 移植版本,它具有无依赖项、内存使用量低等特点,重要的是增加了 Core ML 支持,完美适配苹果M系列芯片。 Whisper.cp

教你1分钟搞定2小时字幕-编程思维

摘要:本文将介绍如何使用录音文件识别极速版给无字幕视频自动生成字幕。 本文分享自华为云社区《利用录音文件极速版为视频生成字幕》,作者:戈兀。 引言 越来越多的人们使用抖音、B站等视频app,记录、分享日常生活,随之互联网上产生了大量的长、短视频。字幕是影响视频观看体验的重要因素。以日常分享为主的视频创作者往往没有时间为