2.9 什么是端到端的深度学习?(What is end-to-end deep learning?)
Last updated
Last updated
以前有一些数据处理系统或者学习系统需要多个阶段的处理。端到端深度学习就是忽略所有这些不同的阶段,用单个神经网络代替它
目标是输入,比如说一段音频,然后把它映射到一个输出,就是这段音频的听写文本:
传统上语音识别需要很多阶段的处理。首先提取一些特征,一些手工设计的音频特征,比如MFCC,这种算法是用来从音频中提取一组特定的人工设计的特征。在提取出一些低层次特征之后,应用机器学习算法在音频片段中找到音位(声音的基本单位),比如“Cat”这个词是三个音节构成的,Cu-、Ah-和Tu-,算法把这三个音位提取出来,然后将音位串在一起构成独立的词,然后将词串起来构成音频片段的听写文本
端到端深度学习的挑战之一是需要大量数据才能让系统表现良好,比如只有3000小时数据去训练语音识别系统,那传统的流水线效果很好。但当有非常大的数据集时,比如10,000小时数据或者100,000小时数据,端到端方法突然开始很厉害。所以当数据集较小时,传统流水线方法效果更好。如果数据量适中,也可以用中间件方法,如输入还是音频,然后绕过特征提取,直接尝试从神经网络输出音位
最好的方法是一个多步方法,首先运行一个软件来检测人脸,然后放大图像并裁剪图像,使人脸居中显示,然后红线框起来的照片再喂到神经网络里,让网络去学习,或估计那人的身份
比起一步到位,一步学习,把这个问题分解成两个更简单的步骤更好:
首先弄清楚脸在哪里
第二步是看着脸,弄清楚这是谁
这种方法让两个学习算法分别解决两个更简单的任务,并在整体上得到更好的表现
训练第二步的方式:输入两张图片,网络将两张图比较一下,判断是否是同一个人。比如记录了10,000个员工ID,可以把红色框起来的图像快速比较,看看红线内的照片是不是那10000个员工之一,判断是否应该允许其进入
为什么两步法更好:
解决的两个问题,每个问题实际上要简单得多
两个子任务的训练数据都很多
传统上机器翻译系统也有一个很复杂的流水线,比如英语机翻得到文本,然后做文本分析,基本上要从文本中提取一些特征之类的,经过很多步骤,最后会将英文文本翻译成法文。因为对于机器翻译来说有很多(英文,法文)的数据对,端到端深度学习在机器翻译领域非常好用
端到端深度学习是训练一个巨大的神经网络,输入一段音频,输出直接是听写文本。只需要把训练集拿过来,直接学到了和之间的函数映射,绕过了其中很多步骤