-
设立训练集,开发集和测试集的方式大大影响了你或者你的团队在建立机器学习应用方面取得进展的速度。同样的团队,即使是大公司里的团队,在设立这些数据集的方式,真的会让团队的进展变慢而不是加快,我们看看应该如何设立这些数据集,让你的团队效率最大化。  在这个视频中,我想集中讨论如何设立开发集和测试集,开发(**dev**)集也叫做开发集(**development set**),有时称为保留交叉验证集(**hold out cross validation set**)。然后,机器学习中的工作流程是,你尝试很多思路,用训练集训练不同的模型,然后使用开发集来评估不同的思路,然后选择一个,然后不断迭代去改善开发集的性能,直到最后你可以得到一个令你满意的成本,然后你再用测试集去评估。 现在,举个例子,你要开发一个猫分类器,然后你在这些区域里运营,美国、英国、其他欧洲国家,南美洲、印度、中国,其他亚洲国家和澳大利亚,那么你应该如何设立开发集和测试集呢?  其中一种做法是,你可以选择其中4个区域,我打算使用这四个(前四个),但也可以是随机选的区域,然后说,来自这四个区域的数据构成开发集。然后其他四个区域,我打算用这四个(后四个),也可以随机选择4个,这些数据构成测试集。 事实证明,这个想法非常糟糕,因为这个例子中,你的开发集和测试集来自不同的分布。我建议你们不要这样,而是让你的开发集和测试集来自同一分布。我的意思是这样,你们要记住,我想就是设立你的开发集加上一个单实数评估指标,这就是像是定下目标,然后告诉你的团队,那就是你要瞄准的靶心,因为你一旦建立了这样的开发集和指标,团队就可以快速迭代,尝试不同的想法,跑实验,可以很快地使用开发集和指标去评估不同分类器,然后尝试选出最好的那个。所以,机器学习团队一般都很擅长使用不同方法去逼近目标,然后不断迭代,不断逼近靶心。所以,针对开发集上的指标优化。  然后在左边的例子中,设立开发集和测试集时存在一个问题,你的团队可能会花上几个月时间在开发集上迭代优化,结果发现,当你们最终在测试集上测试系统时,来自这四个国家或者说下面这四个地区的数据(即测试集数据)和开发集里的数据可能差异很大,所以你可能会收获"意外惊喜",并发现,花了那么多个月的时间去针对开发集优化,在测试集上的表现却不佳。所以,如果你的开发集和测试集来自不同的分布,就像你设了一个目标,让你的团队花几个月尝试逼近靶心,结果在几个月工作之后发现,你说“等等”,测试的时候,"我要把目标移到这里",然后团队可能会说"好吧,为什么你让我们花那么多个月的时间去逼近那个靶心,然后突然间你可以把靶心移到不同的位置?"。 所以,为了避免这种情况,我建议的是你将所有数据随机洗牌,放入开发集和测试集,所以开发集和测试集都有来自八个地区的数据,并且开发集和测试集都来自同一分布,这分布就是你的所有数据混在一起。 这里有另一个例子,这是个真实的故事,但有一些细节变了。所以我知道有一个机器学习团队,花了好几个月在开发集上优化,开发集里面有中等收入邮政编码的贷款审批数据。那么具体的机器学习问题是,输入为贷款申请,你是否可以预测输出,是他们有没有还贷能力?所以这系统能帮助银行判断是否批准贷款。所以开发集来自贷款申请,这些贷款申请来自中等收入邮政编码,**zip code**就是美国的邮政编码。但是在这上面训练了几个月之后,团队突然决定要在,低收入邮政编码数据上测试一下。当然了,这个分布数据里面中等收入和低收入邮政编码数据是很不一样的,而且他们花了大量时间针对前面那组数据优化分类器,导致系统在后面那组数据中效果很差。所以这个特定团队实际上浪费了3个月的时间,不得不退回去重新做很多工作。  这里实际发生的事情是,这个团队花了三个月瞄准一个目标,三个月之后经理突然问"你们试试瞄准那个目标如何?",这新目标位置完全不同,所以这件事对于这个团队来说非常崩溃。  所以我建议你们在设立开发集和测试集时,要选择这样的开发集和测试集,能够反映你未来会得到的数据,认为很重要的数据,必须得到好结果的数据,特别是,这里的开发集和测试集可能来自同一个分布。所以不管你未来会得到什么样的数据,一旦你的算法效果不错,要尝试收集类似的数据,而且,不管那些数据是什么,都要随机分配到开发集和测试集上。因为这样,你才能将瞄准想要的目标,让你的团队高效迭代来逼近同一个目标,希望最好是同一个目标。 我们还没提到如何设立训练集,我们会在之后的视频里谈谈如何设立训练集,但这个视频的重点在于,设立开发集以及评估指标,真的就定义了你要瞄准的目标。我们希望通过在同一分布中设立开发集和测试集,你就可以瞄准你所希望的机器学习团队瞄准的目标。而设立训练集的方式则会影响你逼近那个目标有多快,但我们可以在另一个讲座里提到。我知道有一些机器学习团队,他们如果能遵循这个方针,就可以省下几个月的工作,所以我希望这些方针也能帮到你们。 from:结构化机器学习项目--笔记
-
要把你顾及到的所有事情组合成单实数评估指标有时并不容易,在那些情况里,我发现有时候设立满足和优化指标是很重要的,让我告诉你是什么意思吧。  假设你已经决定你很看重猫分类器的分类准确度,这可以是分数或者用其他衡量准确度的指标。但除了准确度之外,我们还需要考虑运行时间,就是需要多长时间来分类一张图。分类器需要80毫秒,需要95毫秒,需要1500毫秒,就是说需要1.5秒来分类图像。  你可以这么做,将准确度和运行时间组合成一个整体评估指标。所以成本,比如说,总体成本是,这种组合方式可能太刻意,只用这样的公式来组合准确度和运行时间,两个数值的线性加权求和。 你还可以做其他事情,就是你可能选择一个分类器,能够最大限度提高准确度,但必须满足运行时间要求,就是对图像进行分类所需的时间必须小于等于100毫秒。所以在这种情况下,我们就说准确度是一个优化指标,因为你想要准确度最大化,你想做的尽可能准确,但是运行时间就是我们所说的满足指标,意思是它必须足够好,它只需要小于100毫秒,达到之后,你不在乎这指标有多好,或者至少你不会那么在乎。所以这是一个相当合理的权衡方式,或者说将准确度和运行时间结合起来的方式。实际情况可能是,只要运行时间少于100毫秒,你的用户就不会在乎运行时间是100毫秒还是50毫秒,甚至更快。  通过定义优化和满足指标,就可以给你提供一个明确的方式,去选择“最好的”分类器。在这种情况下分类器B最好,因为在所有的运行时间都小于100毫秒的分类器中,它的准确度最好。  所以更一般地说,如果你要考虑个指标,有时候选择其中一个指标做为优化指标是合理的。所以你想尽量优化那个指标,然后剩下个指标都是满足指标,意味着只要它们达到一定阈值,例如运行时间快于100毫秒,但只要达到一定的阈值,你不在乎它超过那个门槛之后的表现,但它们必须达到这个门槛。  这里是另一个例子,假设你正在构建一个系统来检测唤醒语,也叫触发词,这指的是语音控制设备。比如亚马逊**Echo**,你会说“**Alexa**”,或者用“**Okay Google**”来唤醒谷歌设备,或者对于苹果设备,你会说“**Hey Siri**”,或者对于某些百度设备,我们用“你好百度”唤醒。 对的,这些就是唤醒词,可以唤醒这些语音控制设备,然后监听你想说的话。所以你可能会在乎触发字检测系统的准确性,所以当有人说出其中一个触发词时,有多大概率可以唤醒你的设备。 你可能也需要顾及假阳性(**false positive**)的数量,就是没有人在说这个触发词时,它被随机唤醒的概率有多大?所以这种情况下,组合这两种评估指标的合理方式可能是最大化精确度。所以当某人说出唤醒词时,你的设备被唤醒的概率最大化,然后必须满足24小时内最多只能有1次假阳性,对吧?所以你的设备平均每天只会没有人真的在说话时随机唤醒一次。所以在这种情况下,准确度是优化指标,然后每24小时发生一次假阳性是满足指标,你只要每24小时最多有一次假阳性就满足了。  总结一下,如果你需要顾及多个指标,比如说,有一个优化指标,你想尽可能优化的,然后还有一个或多个满足指标,需要满足的,需要达到一定的门槛。现在你就有一个全自动的方法,在观察多个成本大小时,选出"最好的"那个。现在这些评估指标必须是在训练集或开发集或测试集上计算或求出来的。所以你还需要做一件事,就是设立训练集、开发集,还有测试集。 from:结构化机器学习项目--笔记
-
做完了Tesseract文字识别的实验,不能识别手写文字,继续尝试使用MindSpore开发训练模型识别手写数字实验。我的凭证这里,从个人账号点击进去,不同的上下文会提供不同的下拉列表有点模糊,提了云声。obs桶是免费创建,按用量计费,实验的话,完全可以承担。ModelArts也是免费创建,按需计费,后面会用到。之后就是上传训练用的数据、脚本,创建好日志和输出文件目录。修改脚本文件的时候,出了个错,在修改vi train_lenet.py的时候,“② 红色框2实例化一个用于参数更新的优化器,两个问号处分别填写学习率和动量参数,学习率和动量的范围为0~1。通常学习率设置0.0到0.1之间,动量设置为0.8到1.0之间能取的较好的训练效果。因此,在红色框2处(52行),将原代码中的第一个“?”设置为0.0到0.1之间的数值,第二个“?”设置0.8到1.0之间的数值;”只修改了其中的一个参数,漏掉了一个,导致整个实验的失败。想要修改训练脚本,需要重新xterm远程登录,vi修改再次上传obs。训练作业并没有再次运行的按键,需要点击修改训练作业,即使未做任何修改,也可以触发另一个版本的训练。实验时间不够了。等明天再做?嗯,尝试使用实验手册实际跑一下。难点是,实验所用的数据和脚本都保存在沙箱环境中,并没有像上一个Tesseract实验提供wget的链接,实验的时间又用完了。。。通过其他的IAM账号获得实验时间,然后尝试scp出来,还有一种更简单的方法:首先按照实验手册创建好obs的资源,然后用其他IAM账号(如果没有可以创建一个)进去实验环境,然后不用沙箱的账号密码登录,用自己的账号在沙箱环境登录,将桌面的训练数据、脚本,依次上传到自己的obs桶中去。退出实验环境,用自己的账号(非IAM方式)登录,从控制台找到ModelArts界面,创建训练作业,执行。 查看日志,可能是参数学习率(设置0.0到0.1之间)设置成0.05的原因,准确率有点低。整个训练的时间不到2分钟。
-
循环神经网络(RNN) 循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接受其它神经元的信息,也可以接受自身的信息,形成具有环路的网络结构。 梯度爆炸和梯度消失 如果从数学的角度来理解,一般结构的循环神经网络中,网络的状态之间是非线性的关系,并且参数 w 在每个时间步共享,这是导致梯度爆炸和梯度消失的根本原因。 无论是梯度消失,还是梯度爆炸,都是技术实践上的bug,而不是理论上的 BUG首先需要明确的是,RNN 中的梯度消失/梯度爆炸和普通的 MLP 或者深层 CNN 中梯度消失/梯度爆炸的含义不一样。MLP/CNN 中不同的层有不同的参数,各是各的梯度;而 RNN 中同样的权重在各个时间步共享,最终的梯度 g=各个时间步的梯度 gt的和。RNN 中总的梯度是不会消失的。即便梯度越传越弱,那也只是远距离的梯度消失,由于近距离的梯度不会消失,所有梯度之和便不会消失。RNN 所谓梯度消失的真正含义是,梯度被近距离梯度主导,导致模型难以学到远距离的依赖关系。梯度爆炸从技术上相比梯度消失更好解决,因此,很少有人大篇幅去论证这个问题。梯度爆炸最常用的解决方案是梯度截断:逐元素的截断参数梯度和截断梯度的范数。第二种方案可以确保截断后的梯度仍然是在正确的梯度方向上。但是实践表明:两种方式的效果相近。因为逐元素的梯度截断时,梯度更新的方向不仅不再是真实梯度方向,甚至也不是 mini-batch 的梯度方向。但是它仍然是一个使得目标值下降的方向。长程依赖问题 虽然简单循环网络理论上可以建立长时间间隔的状态之间的依赖关系,但是由于梯度爆炸或消失问题,实际上只能学习到短期的依赖关系。这样,如果时刻 t的输出yt依赖于时刻k的输入 xk,当间隔t-k比较大时,简单神经网络很难建模这种长距离的依赖关系,称为长程依赖问题(Long-Term Dependencies Problem)。 LSTM 为了改善循环神经网络的长程依赖问题,一种非常好的解决方案是引入门控机制来控制信息的累积速度,包括有选择地加入新的信息和有选择地遗忘之前累积的信息。 长短期记忆(Long Short-Term Memory,LSTM)网络[Gers 等人; Hochreiter 等人,2000; 1997] 是循环神经网络的一个变体,可以有效地解决简单循环神经网络的梯度爆炸或消失问题。 与传统的 RNN 相比,LSTM 依然是基于循环机制,只不过对内部的结果进行了更加精细的设计。LSTM 中梯度的传播有很多条路径,关键在于穿过记忆单元的状态 的路径,其上面只有一些少量的线**互(逐元素乘法和加法),梯度流最稳定,信息在上面流动保持不变会变得容易。 但是其他路径上梯度流与普通 RNN 类似,照样会发生相同的权重矩阵反复连乘,所以依然会爆炸或者消失。由于总的远距离梯度 = 各条路径的远距离梯度之和,即便其他远距离路径梯度消失了,只要保证有一条远距离路径(就是上面说的那条路径)梯度不消失,总的远距离梯度就不会消失(正常梯度 + 消失梯度 = 正常梯度)。因此 LSTM 通过改善一条路径上的梯度问题拯救了总体的远距离梯度。
-
超越「预训练-调优」范式经过不断的迭代,虽然当前的 NLP 模型似乎已经达到了最先进的水平,但是 NLP 研究社区的主流观点仍然是:还有一些问题需要改进。由于我们经常使用对比基准来衡量任务的研究进展,我们渐渐遇到了一些棘手的情况,而且这些模型中有许多已经在现有的 NLP 对比基准上超过了人类的表现。那么我们应该怎么办呢?这就是 Zellers等人(https://arxiv.org/pdf/1905.07830.pdf)提出的问题,在早期的工作中,它为常识性的自然语言推理问题提供了一个挑战性的数据集,结果在发布后不就就发现 BERT 已经达到了与人类相近的表现。为了让问题变得更困难一点,作者发布了一个后续的数据集,该数据集使用一种叫做对抗性过滤的技术选择出令 BERT 和其它模型难以回答的示例。在这个过程中,他们大大增加了对比基准测试的复杂度。BERT 当然并非完美。Nangia 等人(https://arxiv.org/pdf/1905.10425.pdf)的研究表明,基于 BERT 的模型难以应对低资源(可用数据量较少)的句子分类任务,并提出了一个被称为「SuperGLUE」(https://arxiv.org/pdf/1905.00537.pdf)的后续的自然语言理解对比基准,专门对这种机制进行评价。McCoy 等人(https://arxiv.org/pdf/1902.01007.pdf)的另一项工作则说明了,应用于自然语言推理的 BERT 模型实际上学习到了非常简单的语法启发信息,但这些启发信息不能很好地泛化到其它的推演(entailment)例子中。他们也发布了一个评价数据集,从而确定模型是否采用在采用了这些启发信息后也没能解决更一般的推理问题。Min 和 Wallace 等人(https://arxiv.org/pdf/1906.02900.pdf)的另一篇相关论文说明了,许多针对 HotpotQA 数据集(一个多条问答对比基准)提出的模型,实际上并不需要执行多跳推理来获得良好的性能。总的来说,我认为现在大部分的模型仍然是在针对特定数据集做工作,而不是针对特定任务。我们建立的模型可以非常有效地收集和利用数据集特有的偏差。在这个过程中,我们的评价指标又为我们展示了相当具有误导性的分析结果。这让我想起了「古德哈特定律」 :当一项指标成为目标时,那么他就不再是一个好的指标(一项社会指标或经济指标,一旦成为一个用以指引宏观政策制定的既定目标,那么该指标就会丧失其原本具有的信息价值)。那么,接下来我们该如何做呢?考虑到这些评价对比基准对于自然语言任务发展的重要意义,以及模型开发的速度,假设对比基准一成不变似乎是不合理的。相反,我发现开发一套不断演化的、难度越来越大的对比基准,提高自然语言能力的门槛,是特别有前景的。也许从某种程度上来说,这就是我们实现令机器具有人类级别的自然语言能力的方式。转自,MrBear,https://www.leiphone.com/category/academic/6e0VKaqUCAEhjj0q.html
-
在配置训练、验证和测试数据集的过程中做出正确决策会在很大程度上帮助大家创建高效的神经网络。训练神经网络时,我们需要做出很多决策,例如: 1. 神经网络分多少层 2. 每层含有多少个隐藏单元 3. 学习速率是多少 4. 各层采用哪些激活函数 创建新应用的过程中,我们不可能从一开始就准确预测出这些信息和其他超级参数。实际上,应用型机器学习是一个高度迭代的过程,通常在项目启动时,我们会先有一个初步想法,比如构建一个含有特定层数,隐藏单元数量或数据集个数等等的神经网络,然后编码,并尝试运行这些代码,通过运行和测试得到该神经网络或这些配置信息的运行结果,你可能会根据输出结果重新完善自己的想法,改变策略,或者为了找到更好的神经网络不断迭代更新自己的方案。 现如今,深度学习已经在自然语言处理,计算机视觉,语音识别以及结构化数据应用等众多领域取得巨大成功。结构化数据无所不包,从广告到网络搜索。其中网络搜索不仅包括网络搜索引擎,还包括购物网站,从所有根据搜索栏词条传输结果的网站。再到计算机安全,物流,比如判断司机去哪接送货,范围之广,不胜枚举。 我发现,可能有自然语言处理方面的人才想踏足计算机视觉领域,或者经验丰富的语音识别专家想投身广告行业,又或者,有的人想从电脑安全领域跳到物流行业,在我看来,从一个领域或者应用领域得来的直觉经验,通常无法转移到其他应用领域,最佳决策取决于你所拥有的数据量,计算机配置中输入特征的数量,用**GPU**训练还是**CPU**,**GPU**和**CPU**的具体配置以及其他诸多因素。 目前为止,我觉得,对于很多应用系统,即使是经验丰富的深度学习行家也不太可能一开始就预设出最匹配的超级参数,所以说,应用深度学习是一个典型的迭代过程,需要多次循环往复,才能为应用程序找到一个称心的神经网络,因此循环该过程的效率是决定项目进展速度的一个关键因素,而创建高质量的训练数据集,验证集和测试集也有助于提高循环效率。 假设这是训练数据,我用一个长方形表示,我们通常会将这些数据划分成几部分,一部分作为训练集,一部分作为简单交叉验证集,有时也称之为验证集,方便起见,我就叫它验证集(**dev set**),其实都是同一个概念,最后一部分则作为测试集。 接下来,我们开始对训练执行算法,通过验证集或简单交叉验证集选择最好的模型,经过充分验证,我们选定了最终模型,然后就可以在测试集上进行评估了,为了无偏评估算法的运行状况。 在机器学习发展的小数据量时代,常见做法是将所有数据三七分,就是人们常说的70%验证集,30%测试集,如果没有明确设置验证集,也可以按照60%训练,20%验证和20%测试集来划分。这是前几年机器学习领域普遍认可的最好的实践方法。 如果只有100条,1000条或者1万条数据,那么上述比例划分是非常合理的。 但是在大数据时代,我们现在的数据量可能是百万级别,那么验证集和测试集占数据总量的比例会趋向于变得更小。因为验证集的目的就是验证不同的算法,检验哪种算法更有效,因此,验证集要足够大才能评估,比如2个甚至10个不同算法,并迅速判断出哪种算法更有效。我们可能不需要拿出20%的数据作为验证集。 比如我们有100万条数据,那么取1万条数据便足以进行评估,找出其中表现最好的1-2种算法。同样地,根据最终选择的分类器,测试集的主要目的是正确评估分类器的性能,所以,如果拥有百万数据,我们只需要1000条数据,便足以评估单个分类器,并且准确评估该分类器的性能。假设我们有100万条数据,其中1万条作为验证集,1万条作为测试集,100万里取1万,比例是1%,即:训练集占98%,验证集和测试集各占1%。对于数据量过百万的应用,训练集可以占到99.5%,验证和测试集各占0.25%,或者验证集占0.4%,测试集占0.1%。 总结一下,在机器学习中,我们通常将样本分成训练集,验证集和测试集三部分,数据集规模相对较小,适用传统的划分比例,数据集规模较大的,验证集和测试集要小于数据总量的20%或10%。后面我会给出如何划分验证集和测试集的具体指导。 现代深度学习的另一个趋势是越来越多的人在训练和测试集分布不匹配的情况下进行训练,假设你要构建一个用户可以上传大量图片的应用程序,目的是找出并呈现所有猫咪图片,可能你的用户都是爱猫人士,训练集可能是从网上下载的猫咪图片,而验证集和测试集是用户在这个应用上上传的猫的图片,就是说,训练集可能是从网络上抓下来的图片。而验证集和测试集是用户上传的图片。结果许多网页上的猫咪图片分辨率很高,很专业,后期制作精良,而用户上传的照片可能是用手机随意拍摄的,像素低,比较模糊,这两类数据有所不同,针对这种情况,根据经验,我建议大家要确保验证集和测试集的数据来自同一分布,关于这个问题我也会多讲一些。因为你们要用验证集来评估不同的模型,尽可能地优化性能。如果验证集和测试集来自同一个分布就会很好。 但由于深度学习算法需要大量的训练数据,为了获取更大规模的训练数据集,我们可以采用当前流行的各种创意策略,例如,网页抓取,代价就是训练集数据与验证集和测试集数据有可能不是来自同一分布。但只要遵循这个经验法则,你就会发现机器学习算法会变得更快。我会在后面的课程中更加详细地解释这条经验法则。 最后一点,就算没有测试集也不要紧,测试集的目的是对最终所选定的神经网络系统做出无偏估计,如果不需要无偏估计,也可以不设置测试集。所以如果只有验证集,没有测试集,我们要做的就是,在训练集上训练,尝试不同的模型框架,在验证集上评估这些模型,然后迭代并选出适用的模型。因为验证集中已经涵盖测试集数据,其不再提供无偏性能评估。当然,如果你不需要无偏估计,那就再好不过了。 在机器学习中,如果只有一个训练集和一个验证集,而没有独立的测试集,遇到这种情况,训练集还被人们称为训练集,而验证集则被称为测试集,不过在实际应用中,人们只是把测试集当成简单交叉验证集使用,并没有完全实现该术语的功能,因为他们把验证集数据过度拟合到了测试集中。如果某团队跟你说他们只设置了一个训练集和一个测试集,我会很谨慎,心想他们是不是真的有训练验证集,因为他们把验证集数据过度拟合到了测试集中,让这些团队改变叫法,改称其为“训练验证集”,而不是“训练测试集”,可能不太容易。即便我认为“训练验证集“在专业用词上更准确。实际上,如果你不需要无偏评估算法性能,那么这样是可以的。 所以说,搭建训练验证集和测试集能够加速神经网络的集成,也可以更有效地衡量算法地偏差和方差,从而帮助我们更高效地选择合适方法来优化算法。
-
一种新的 NLP 范式:先预训练、再调优正如 Krizhevsky 等人于 2011 年发表的开创性工作「ImageNet Classification with Deep Convolutional Neural Networks」一夜之间掀起了计算机视觉领域的革命,深度学习在自然语言处理领域的应用同样也处于爆炸性的快速增长期。从 2015 到 2017 年,NLP 领域中的大多数任务都可以通过一个相对简单的范式来解决:通过某种连续的向量表征嵌入文本输入,对这些表征进行编码,对编码后的表征应用注意力机制,对任务进行预测。Matthew Honnibal 的博文(https://explosion.ai/blog/deep-learning-formula-nlp)对介绍了这种范式。虽然从概念上说很简单,但「嵌入、编码、注意、预测」的范式似乎在 NLP 领域势不可挡,在所有类型的任务(例如机器翻译、问答系统、自然语言推理等等)上都取得了目前最先进的性能。这样的范式在过去一段时间内,似乎是无所不能的。现在,NLP 领域可谓是「城头变幻大王旗」了。随着强大的预训练表征的出现,一些使用语言建模目标进行训练(例如,ELMO,https://arxiv.org/abs/1802.05365),OpenAI GPT(https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf),以及 BERT(https://arxiv.org/pdf/1810.04805.pdf)的 NLP 技术已经可以被直接使用,它们在大规模数据上进行预训练,然后在一些较小的领域内的语料库上针对任务进行调优。实际上,这种策略已经成功地在现有的 NLP 对比基准实验中取得了目前最先进的性能。在本届 ACL 上,这种策略的主导地位被一些已经发表的工作,以及人们对于 NLP 领域研究现状的普遍态度进一步强化了。其中,Dai 和 Yang 等人的工作试图进一步推动基于 Transformer 的超级模型的发展,极大地提升它们的运行速度,实现目前最先进的模型性能。这种新范式的另一个非常具有代表性的工作是 Liu 和 He 等人提出的「Multi-Task Deep Neural Networks for Natural Language Understanding」,他们利用一个基于 BERT 的架构成功登顶 GLUE 对比基准排行榜。(目前排名第3)除了这些工作本身,围绕会议产生的最多的讨论是,如果使用像 BERT这样的训练方法,研究者们之前提出的许多架构可以实现几个百分点的提升。那么问题来了:这种新的范式是否使许多 NLP 领域在建模方面的创新变得不值一提了?针对该问题,我个人持否定态度。总的来说,仍然有很多工作没有得到充分的研究,而这些工作对于推进 NLP 领域在未来的发展是至关重要的。下面,我将列举出其中的一些工作。转自,MrBear,https://www.leiphone.com/category/academic/6e0VKaqUCAEhjj0q.html
-
华为开发者大会2021(Cloud)即将到来,华为云数据使能团队为你准备了大数据训练营,欢迎提前报名咨询~训练营内容:1、清华大学老师介绍大数据教学最新变革方向2、华为云DAYU 专家介绍数据治理方法论、价值和实践案例 3、实际演练:基于华为云DAYU平台演示数据治理过程参加训练营你将获得:1、训练营期间免费使用华为云部分资源2、初步掌握数据治理的概念和实操流程3、免费抽奖机会
-
https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=120502最终积分出来了,参加的可以查看了,差一点点就可以拿实物了。。不过豆豆也不错
-
三种拆分策略:一对一(OvO)一对其余(OvR)多对多(MvM)一对一 将类别两两配对生成 \frac {N(N-2)}{2} 个分类器一对其余 每次将一个类别视为正例,其余视为反例,因此一共会生成 N 个分类器但是,一对一的 训练开销 通常小于 一对其余,因为一对一只用到了两个类的训练数据多对多分类常用纠错输出码(ECOC)常见编码矩阵:二元码,三元码(加上停用类,不带入计算)将类别进行随机拆分,拆分为两类:正例和反例,形成很多个二分类器任意两个分类器越 ”不相同“,训练结果越好,思想类似于 Bagging,训练多个高多样性的分类器最后这些分类器对同一个样本预测,将预测结果分别计算编码距离(海明距离 / 欧式距离),将编码距离最小的类作为最终结果同一个分类任务, ECOC编码越长,分类器之间的相似性就会越小,因此容错能力越好同等长度的编码, 任意两个类别的编码距离越大,容错能力越好
-
一种用于sql生成模型的数据匿名化编码方法论文名称:Data-Anonymous Encoding for Text-to-SQL Generation作者:Zhen Dong1 , Shizhao Sun , Hongzhi Liu , Jian-Guang Lou ,Dongmei Zhang发表时间:2019/11/7论文链接:https://www.aclweb.org/anthology/D19-1543.pdf推荐原因1、为了优化从文本中生成机器语言(此处是sql语句)的效率,作者提出了一种基于序列标注的两阶段模型对文本进行匿名化(anonymous encoding)的预处理,减少了文本的长度,并且提取了文本的词与数据表之间的语义关系.为了更高效地进行训练,作者采用了数据集的一小部分进行人工标注,以此训练出的模型来初始化最终的模型,对于其他的数据,作者仅从sql中抽取出无序的colname, cell等数据,并提出了一种基于奖励机制的隐监督(implicit supervision)学习方法来进行训练。此外,作者还提及了一种基于变分推断思路的训练方法,意图将文本匿名化模型与用于生成sql的语义解析模型联合训练来提供模型的效率2 、作者提出的匿名化方法无论从效率还是从准确度的角度,相比之前的方法都得到了很大的提高3 、序列标注,尤其是与bert相结合的序列标注,是一种直观且有效的训练模型,需要大量标注良好的数据是其一大软肋,作者提出的隐监督训练方案的思路很值得一读转自,AI研习社,https://www.leiphone.com/category/academic/Is2BSkPUrXDA4Qt9.html
-
以新方法训练堆叠浅层的自编码器 我们的目标是在自下而上和自上而下对某个特征的预测之间取得一致。这很容易通过缩小所有隐藏激活向量来实现。这被称为所谓的“塌缩问题”(collapse problem)。不过,我们可以通过使用更好的协议定义来避免这个问题:两个变量在每个训练样例中的值是否一致,以及它们在不同训练样例中是否遵循同样的变化。我们先讨论一种完全不同的无监督学习方法,之后我再回到这种方法。之前,我和我的学生想出了一个方法,用一个更好的定义来解释两者的一致性。与其说它们应该相等,不如说它们应该是相似的,即它们在不同的训练案例上有什么样的变化趋势。所以在一个特定的训练案例中,我们希望神经网络的一部分中的自下而上的预测与自上而下的预测相一致。不要尝试解释输入的每一个细节,只需关注于提取在空间或时间上一致的属性。和自动编码器不同,这里允许我们忽略噪声。提取空间一致性属性Becker 和我在1992年引入了一种提取空间一致属性的方法:最大化两个输入非重叠图像块的表征的互信息。如果a 和b是标量,则通过最小化 来最大化互信息。如果a和b是向量,则通过最小化 来最大化互信息。相关论文:Maximizing the Mutual Infomation between two Gaussian distributed variables(Becker 和Hinton,1992)接下来看一个提取空间一致性属性的简单样例: 首先用随机点填充一张图片使它没有明显的结构。然后再取另一张图片,这张图片是第一张图片经过水平移动后的版本。所以图像对中唯一的结构就是它们之间的相对平移。很久以前我们用的是非常小的电脑。所以我们只从左边的图像中取了一个一维的条带,从右边的图像中取了一个一维的条带。我们在左图上散落了一些随机点。然后我们看了右图,这是左图的翻译版。你可以看到,如果你看两个相邻的图像块,那么它们的视差是一样的。左右条带之间的偏移相同。所以,如果你训练一个神经网络,看看左手边的patch块来提取一个属性, 训练一个神经网络的副本来观察右手边的patch块,吸引一个属性。可以看出仅有的一致性属性分离了,这就是我们想要提取的,它也确实起到了作用。转自,青暮,https://www.leiphone.com/news/202009/xd0M2fn80c856Fcc.html
-
自动化机器学习作为一项能够帮助AI快速落地的关键技术,已经得到了国内外学术界和工业界的广泛关注。经过近几年的研究发展,AutoML在基本技术方法和任务上,已经取得显著的进展和成果。一、关键技术难题和挑战(1)开发一个高效全流程数据分析模型难度大大部分实际应用的模型往往是端到端的机器学习流水线。典型的数据分析流程涉及到多个阶段,包括数据预处理、特征工程、算法选择、模型评估及超参数优化等,而且每个分析阶段又包含了多种方法。数据分析人员需要了解每个阶段中每个方法的适用场景、运行原理以及超参数调优技巧,并通过不断尝试各种算法模型,反复迭代和试错,最终针对实际业务数据特征设计性能优异的机器学习流水线。因此,开发一个高效的全流程的数据分析模型具有技术难度大、严重依赖专家经验、周期较长等困难。目前主流的贝叶斯优化方法将机器学习流水线自动化设计问题抽象成模型选择和超参数调优的联合高维优化问题。然而,大部分贝叶斯优化方法在高维场景下性能较差。另外,基于遗传算法的自动化算法又面临着效率较低、耗时过长的问题。(2)概念漂移场景下的AutoML建模问题现有的AutoML技术方法大都用来解决静态数据集的自动化建模问题,但是在一些现实场景下,数据是持续产生的,数据特征是动态发生变化的。这种数据特征的动态改变也称为概念漂移。例如,在许多实际应用场景中,比如在线广告、推荐系统、情绪分析、欺诈检测等,数据按天、周、月甚至年依次到来,并且随着时间推移,数据分布会发生变化。由于存在概念漂移,一个时间段下训练所得到的模型,有可能难以适应下一个时间段的数据,从而导致预测准确性下降。终身学习(Lifelong Learning ) 的目的就是能够捕获数据概念漂移,使机器学习模型能够随着数据集的变化而动态更新。(3)特征工程中的问题和挑战特征提取的主要目标是通过从输入数据中提取突出的特征来提高机器学习模型的准确性,同时还可能从输入中消除噪声和冗余。 必须考虑特征的可扩展性,因为用于机器学习的数据集大小的增长使得提取特征变得困难且不可行。十年前,要对数千个特征运行特征选择算法是一个挑战,而现在的挑战是要对数百万个输入维执行此操作。这就提出了一个巨大的挑战:我们如何使特征提取具有可扩展性?特征工程通常需要相关领域的专业知识,并且涉及反复试验和错误,模型测试和评估。将原始数据转换为功能部件通常需要大量人员参与有关该问题的领域知识,因为它主要是由直觉驱动的。二、如何解决这些问题和挑战?(1)超参数重要性分析工具大多数 AutoML 工具常常只能机械地给出最优的参数配置,却无法洞察超参数与模型性能之间的关系。针对该问题,超参数重要性分析工具应运而生,它对 AutoML 工具运行过程中产生的算法性能数据进行离线分析,获得关于不同算法的超参数是如何影响模型性能的见解,这有助于算法开发人员深入理解算法的工作原理。 键超参数选择类似于特征选择,它可通过量化超参数重要性,以精简搜索空间的方式来加速搜索过程,提升 AutoML 效率,帮助专家洞察搜索空间。(2)提高计算效率和得到良好结果为了达到高计算效率和得到具有良好结果的目标,目前主要使用经验技术来提升 AutoML 的性能和效率。根据所使用的技术不同,可大致分为三类:基于集成学习的优化技术、基于元学习的优化技术和基于迁移学习的优化技术。 基于集成学习的优化技术将多个基础学习器合成一个强学习器,以达到提高学习器泛化能力的目的,在 AutoML 工具中使用集成学习技术可以提升工具所得结果的泛化性能。基于元学习的优化技术从历史经验中提取元知识(如数据集和模型的元特征、配置的性能等等),并基于元知识训练元学习器再应用于新问题中。元学习技术是 AutoML 性能优化中最常见的优化技术,常应用于在配置生成、动态配置自适应和配置评估等阶段进行性能提升,例如 Auto-Sklearn。基于迁移学习的优化技术使用来自原域的知识尝试改进目标域,它与基于元学习的优化技术的区别在于是否利用提取的知识训练模型,如果训练模型则是元学习,若直接使用知识则是迁移学习。(3)根据实际应用场景搭建算法框架文献1面向全流程数据分析中的自动化机器学习流水线设计场景,首先分析全流程数据分析特点,定义一种由五阶段构成的机器学习流水线,可以同时处理离散型和连续型特征面向终身学习场景,针对普遍存在的概念漂移和数据不平衡问题,研究提出了一种基于加权集成学习的算法框架Auto-LEE。作者:Python码一码转载自:简书
-
BERTBERT是一种深度自编码器,经过训练可以补充句子中遗漏的单词。BERT实际上与信息检索非常相关,因为它可以提取非常好的单词表征。这对于理解文档非常有用。BERT有很多个层,并且在每一层中,都有每个输入单词的嵌入向量。第一个隐藏层中有单词的向量表征,第二个隐藏层中有相同单词的更好的向量表征。随着深入网络,给定单词的表征将变得越来越好。实际上,L + 1层中的某个单词的表征,是通过比较L层中该单词的嵌入与其它单词的嵌入生成的。这种比较是通过称为Transformer的注意力机制实现的。这种嵌入是很好的单词表征,可用于各种自然语言任务。如果用标准的一维卷积神经网络来表示单词字符串,我们将通过这些向量来表示句子中的单词。通过组合信息,激活单词的权重矩阵,我们可以获得下一层向量来表征单词。因此,和之前的方法类似,只需查看前一级中所有附近单词的表征,即可将这些表征组合成下一层中更好的单词表征,但这里使用了注意力机制。BERT的机制实际上看起来像信息检索。每个单词都通过学习的权重矩阵生成查询向量、键向量和值向量。然后,对于L层的每个单词,我们将获取其查询向量,并将其与所有其它单词的键向量进行比较。如果查询向量和键向量之间可以很好地匹配时,也就是说,当查询向量和键向量的标量积很大时,附近位置的值向量影响下一层的单词表征。例如,假设我的名字是June。我将生成一个查询向量,该查询向量可以很好地匹配月份,也可以很好地匹配女性名字。我们将在句子的其余部分中选择相关的词,并使用这些相关的词来修改June的表征。如果句子中还有其他几个女性的名字,则June的表征将变得更接近女性人名的表征,如果句子中出现了月份相关的单词,June的表征将变得更接近“六月”的表征。也就是说,它们将根据上下文进行优化,所以这很像信息检索,不过所有查询、值和键都是学习得到的。因此,我们可以使用这种神经网络进行语言建模。首先使用Transformers预训练单词片段嵌入。如果采用句子或更长的文本片段,则需要成千上万个片段,将它们输入Transformers的多个层,以学习所有的键、值和查询。因此,单词表征会在输出之前得到完善,可以很好地利用上下文信息。然后,我们在另一个神经网络中使用这些单词片段的表征,神经网络可以从先前的单词片段中预测下一个单词片段,因此这是一个自动回归模型。但是,它考虑的不是那些单词片段,而是BERT生成的单词片段的表征。它的效果比规则模型更好。通过给它一个初始的单词序列,然后让它预测下一个片段的概率分布。这样一来,我们就可以生成长长的单词串,直到获得完整的故事为止,效果令人惊讶。BERT需要用数十亿个文字数据来训练,然后我们使用其产生的嵌入,训练具有1,750亿个参数的语言模型,耗时超过一千petaflop天。一旦完成训练,我们就可以生成新闻文章,如上图所示。这是GPT-3的例子,有趣的是,大多数人无法确定这篇新闻文章是由BERT撰写的,它通过了图灵测试。现在,我们回到有关如何进行监督学习的基础思想。变分自编码器BERT比堆叠自编码器的效果更好,这是因为端到端学习可以确保前面层中的隐藏单元学习提取后面层所需的特征,这是反向传播所擅长的事情。转自,青暮,https://www.leiphone.com/news/202009/xd0M2fn80c856Fcc.html
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第三期2026/08/21 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;念擎-华为云AI开发者运营案例开发专家
本期直播内容:AI六层能力首次详细解读 + 新一代华为云开发者空间亮相 + 校园案例直播带练
回顾中
热门标签