深度学习中端到端(end-to-end)简要理解

2023-05-16

端到端(end-to-end)简要理解

  • 端到端
    • 好处
    • 不同领域的端到端
    • 目标检测
        • 非end-to-end方法
        • end-to-end方法
      • CV计算机视觉
      • 语音识别
        • 非端到端
        • 端到端
    • 参考

端到端

端到端指的是输入是原始数据,输出是最后的结果。而原来的输入端不是直接的原始数据(raw data),而是在原始数据中提取的特征(features)。这一点在图像问题上尤为突出,因为图像像素数太多,数据维度高,会产生维度灾难,所以原来一个思路是手工提取(hand-crafted functions)图像的一些关键特征,这实际就是就一个降维的过程。

经典机器学习方式是以人类的先验知识将raw数据预处理成feature,然后对feature进行分类。分类结果十分取决于feature的好坏。所以过去的机器学习专家将大部分时间花费在设计feature上。那时的机器学习有个更合适的名字叫feature engineering(特征工程)。

那么特征如何提取?特征提取的好坏异常关键,甚至比学习算法还重要,举个例子,对一系列人的数据分类,分类结果是性别,如果你提取的特征是头发的颜色,无论分类算法如何,分类效果都不会好,如果你提取的特征是头发的长短,这个特征就会好很多,但是还是会有错误,如果你提取了一个超强特征,比如染色体的数据,那你的分类基本就不会错了。

这就意味着,特征需要足够的经验去设计,这在数据量越来越大的情况下也越来越困难。于是就出现了端到端网络,特征可以自己去学习,所以特征提取这一步也就融入到算法当中,不需要人来干预了。

随着深度学习、神经网络的发展,让网络自己学习如何抓取feature效果更佳。由于多层神经网络被证明能够耦合任意非线性函数,通过一些配置能让网络去做以前需要人工参与的特征设计这些工作,然后配置合适的功能如classifier,regression,而现在神经网络可以通过配置layers的参数达到这些功能,整个输入到最终输出无需太多人工设置,从raw data到最终输出特征。于是兴起了representation learning。这种方式对数据的拟合更加灵活。

相对于深度学习,传统机器学习的流程往往由多个独立的模块组成,比如在一个典型的自然语言处理(Natural Language Processing)问题中,包括分词、词性标注、句法分析、语义分析等多个独立步骤,每个步骤是一个独立的任务,其结果的好坏会影响到下一步骤,从而影响整个训练的结果,这是非端到端的。

而深度学习模型在训练过程中,从输入端(输入数据)到输出端会得到一个预测结果,与真实结果相比较会得到一个误差,这个误差会在模型中的每一层传递(反向传播),每一层的表示都会根据这个误差来做调整,直到模型收敛或达到预期的效果才结束,这是端到端的。即,端到端的学习,就是把特征提取的任务也交给模型去做,直接输入原始数据或者经过些微预处理的数据,让模型自己进行特征提取。
在这里插入图片描述

好处

一个程序包括很多函数,一个做法是一个个实现这个函数,然后组成一个程序,另一个做法肯定是写成一个函数,在传统编程领域,后者一般是肯定会受到鄙视。但是在深度学习领域,更宽泛的说可微分编程领域,后者有极大的意义,它把所有模块放在一起,可以当成一个整体来训练,在前向推理的时候,可以一次性得到你想要的结果。这样做有什么意义?误差理论告诉我们误差传播的途径本身会导致误差的累积,多个阶段一定会导致误差累积,e2e训练能减少误差传播的途径,联合优化。

通过缩减人工预处理和后续处理,尽可能使模型从原始输入到最终输出,给模型更多可以根据数据自动调节的空间,增加模型的整体契合度。

不同领域的端到端

目标检测

非end-to-end方法

目前目标检测领域,效果最好,影响力最大的是RCNN框架,这种方法需要先在图像中提取可能含有目标的候选框(region proposal), 然后将这些候选框输入到CNN模型,让CNN判断候选框中是否真的有目标,以及目标的类别是什么。在我们看到的结果中,往往是类似与下图这种,在整幅图中用矩形框标记目标的位置和大小,并且告诉我们框中的物体是什么。
在这里插入图片描述
这种标记的过程有两部分组成,一是目标所在位置及大小,二是目标的类别。在整个算法中,目标位置和大小其实是包含在region proposal的过程里,而类别的判定则是在CNN中来判定的。

end-to-end方法

end-to-end方法的典型代表就是有名的yolo。前面的方法中,CNN本质的作用还是用来分类,定位的功能其并没有做到。而yolo这种方法就是只通过CNN网络,就能够实现目标的定位和识别。也就是原始图像输入到CNN网络中,直接输出图像中所有目标的位置和目标的类别。这种方法就是end-to-end(端对端)的方法,一端输入我的原始图像,一端输出我想得到的结果。只关心输入和输出,中间的步骤全部都不管。

CV计算机视觉

在图像领域,CNN就是一个很典型的端到端结构。输入图像,输出可以做分类,可以做补全,做各种任务。这之中的具体细节都不需要人工干预,这就是End-to-end。

对于CV视觉领域而言,end-to-end一词多用于基于视觉的机器控制方面,具体表现是,神经网络的输入为原始图片,神经网络的输出为(可以直接控制机器的)控制指令。

语音识别

非端到端

传统的语音识别系统,由声学模型、发音词典、语言模型。其中声学模型和语言模型是需要训练的。

这些模块的训练一般都是独立进行的,各有各的目标函数。

比如声学模型的训练目标是最大化训练语音的概率;语言模型的训练目标是最小化 困惑度(perplexity)。

由于各个模块在训练时不能互相取长补短,训练的目标函数又与系统整体的性能指标(一般是词错误率 WER)有偏差,这样训练出的网络往往达不到最优性能。

传统的语音识别需要把语音转换成语音特征向量,然后把这组向量通过机器学习,分类到各种音节上(根据语言模型),然后通过音节,还原出最大概率的语音原本要表达的单词,一般包括以下模块:
特征提取模块 (Feature Extraction):该模块的主要任务是从输入信号中提取特征,供声学模型处理。一般也包括了一些信号处理技术,尽可能降低环境噪声、说话人等因素对特征造成的影响,把语音变成向量。
声学模型 (Acoustic Model): 用于识别语音向量
发音词典 (Pronnuciation Dictionary):发音词典包含系统所能处理的词汇集及其发音。发音词典提供了声学模型与语言模型间的联系。
语言模型 (Language Model):语言模型对系统所针对的语言进行建模。
解码器 (Decoder):任务是对输入的信号,根据声学、语言模型及词典,寻找能够以最大概率输出该信号的词串。

传统的语音识别中的语音模型和语言模型是分别训练的,缺点是不一定能够总体上提高识别率。

端到端

在这里插入图片描述
端到端学习的思路则非常简单:音频→学习算法→转录结果;而现在,我们可以直接通过深度学习将语音直接对标到我们最终显示出来的文本。通过深度学习自己的特征学习功能来完成从特征提取到音节表达的整个过程。在给定了足够的有标注的训练数据时(语音数据以及对应的文本数据),端到端的语音识别方法的效果会很好。

端到端训练(end-to-end training):
一般指的是在训练好语言模型后,将声学模型和语言模型接在一起,以 WER 或它的一种近似为目标函数去训练声学模型。由于训练声学模型时要计算系统整体的输出,所以称为「端到端」训练。可以看出这种方法并没有彻底解决问题,因为语言模型还是独立训练的。

端到端模型(end-to-end models):
系统中不再有独立的声学模型、发音词典、语言模型等模块,而是从输入端(语音波形或特征序列)到输出端(单词或字符序列)直接用一个神经网络相连,让这个神经网络来承担原先所有模块的功能。典型的代表如使用 CTC 的 EESEN、使用注意力机制的 Listen, Attend and Spell [2]。这种模型非常简洁,但灵活性就差一些:一般来说用于训练语言模型的文本数据比较容易大量获取,但不与语音配对的文本数据无法用于训练端到端的模型。因此,端到端模型也常常再外接一个语言模型,用于在解码时调整候选输出的排名(rescoring)。

参考

https://www.cnblogs.com/zeze/p/7798080.html
https://blog.csdn.net/langb2014/article/details/53019350
https://www.zhihu.com/question/50454339

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习中端到端(end-to-end)简要理解 的相关文章

  • 解决ubuntu18.04&windows10双系统时间不同步问题(在ubuntu环境下使用)

    sudo apt get install ntpdate sudo ntpdate time windows com sudo hwclock localtime systohc
  • ROS Melodic 安装(ubuntu18.04)

    因为后面需要用到python所以我先安装一下 xff0c 不安装应该也行 sudo apt get install python 设置sources list sudo sh c 39 echo 34 deb http packages r
  • ubuntu双系统怎么完全删除ubuntu系统(主要是删除引导)

    必备基础 xff1a 会制作和简单的使用PE系统 xff0c 以下操作均需要在PE中完成 步骤 1 首先你要用U盘制作一个可以使用的PE系统 xff08 推荐使用微PE xff09 2 进入PE系统中把ubuntu对应的分区全部删除 xff
  • arch安装wps

    输入以下命令即可 yay S wps office mui zh cn wps office mime cn wps office cn wps office fonts ttf ms fonts ttf wps fonts
  • oh-my-posh 配置powershell

    写这篇文章记录的原因就是因为很多关于oh my posh的之前的配置教程已经不适用 xff0c 特此记录下来 打开powershell输入 winget span class token function install span JanD
  • 后端开发工具有哪些

    标题 后端开发工具有哪些 1 阿尔萨斯Java在线诊断工具 Arthas是一款用于Java应用程序的在线诊断工具 xff0c 由阿里巴巴于2018年9月开源 2 Cloud Toolkit IDE插件 Cloud Toolkit是一个集成开
  • 启动Zookeper时出现闪退现象

    这里写自定义目录标题 最近在回顾项目的时候遇到zookeeper闪退问题第一步 xff1a 查找问题原因第二步 xff1a 解决问题 最近在回顾项目的时候遇到zookeeper闪退问题 最近打算复习一下之前写的项目 xff0c 却在启动zo
  • 详解基数排序

    1 基数排序 基数排序是一种特殊的排序方式 xff0c 不是基于比较进行排序 xff0c 而是基于关键字的各个位置大小进行 34 分配 34 和 34 收集 34 两种操作对关键字序列进行排序的一种排序方式 基数排序可以分为 xff1a 最
  • Maven基础教程

    文章目录 一 jar包 xff08 一 xff09 打开一个jar包 xff08 二 xff09 打包一个jar包 二 Maven xff08 一 xff09 概述 xff08 二 xff09 仓库与坐标 本地仓库 第三方仓库 xff08
  • 重启策略 ,健康检查,环境变量,初始化容器

    重启策略 简介 Always 当容器终止退出后 xff0c 总是重启容器 xff0c 默认策略 OnFailure 当容器异常退出 退出状态码非0 时 xff0c 才重启容器 Never 当容器终止退出 xff0c 从不重启容器 span
  • 用两种方法求阶乘的累加和(1050: 阶乘的累加和)

    题目描述 求1 43 2 43 n 输入 输入一个整数n xff0c 你可以假定n不大于10 输出 输出一个整数 xff0c 即阶乘累加的结果 xff0c 单独占一行 样例输入 4 样例输出 33 方法一 xff1a 用for的循环两次 s
  • 小白一起学Android studio 创建项目

    本人也是在学习Android Studio xff0c 就想把自己熟悉的记录一下 我用的是Android Studio是 2021 1 1 Patch 2版本 xff1b 1 点击New Project 2 选择Empty Activity
  • numpy实现cnn

    经过多天的奋战 xff0c 终于写出了一个完成的cnn框架 xff0c 里面最主要的还是卷积反向传播这一块 网络架构 用到的包 数据集 xff1a minist 这里是随机抽取了1000份做训练集 100份做测试集 整体流程 39 39 3
  • Notepad++ 中 tab 转 空格

    目录 一 引言 二 tab转空格 一 引言 为了便于观看 xff0c 以及防止程序出bug xff0c 一般不用tab键 xff0c 而是用4个空格代替 因为tab键在不同的软件里代表不同的空格 xff0c 有的代表4个空格 xff0c 有
  • 如何将windows桌面变成类似mac样式

    文章目录 背景效果实现步骤便捷的终端终端的选择快速跳转文件夹power shell颜色更改安装vim 更改桌面下载MyDockFinder进行配置 背景 最近实习快结束了 xff0c 用惯了公司的mac电脑 xff0c 然后用自己的电脑就不
  • 对接诺诺电子发票(Java)

    沙箱环境 xff1a url https sandbox nuonuocs cn open v1 services appKey SD63236305 appSecret SDDED2523BED4643 下载诺诺的SDK xff1a SD
  • Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.6:generate (default-

    Failed to execute goal org mybatis generator mybatis generator maven plugin 1 3 6 generate default cli on project Spring
  • Maven中JDBC驱动问题

    Failed to execute goal org mybatis generator mybatis generator maven plugin 1 3 6 generate default cli on project Spring
  • Description:Web server failed to start. Port 8080 was already in use.Action:Identify and stop

    运行springboot时出现了这个错误 xff0c 看出8080端口号被占用 xff0c 所以我就这样 xff1a 在配置文件中修改端口号 看运行结果 xff1a 就好了
  • org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is ‘com/hujin

    注意 xff1a springboot项目中的包名必须放到运行类的同级目录或者下级目录 运行类就是 xff1a 问题解决 xff1a 把运行类用一个包装起来 xff0c 与项目的其他包是同级包 谢谢 xff0c 希望对你有帮助

随机推荐