当前位置: 首页 > 科技观察

NanoNets:数据有限时如何应用深度学习?(Part1)

时间:2023-03-13 12:35:08 科技观察

我觉得人工智能就像造火箭飞船。你需要一个巨大的引擎和大量的燃料。如果你有一个大引擎但没有足够的燃料,你就不能让你的火箭进入轨道;如果你有一个小引擎但有足够的燃料,你可能根本无法起飞。所以,要建造一艘火箭飞船,你必须有一个巨大的发动机和大量的燃料。深度学习(创造人工智能的关键过程之一)也是如此。火箭发动机是深度学习模型,燃料是海量数据,我们的算法才能落地。-吴恩达使用深度学习解决问题的一个常见障碍是训练模型所需的数据量。对大数据的需求是由于模型中需要学习的参数非常多。这里有几个例子显示了一些最近的模型需要的参数数量:深度学习模型细节神经网络,又名深度学习,是可以堆叠的层(想想乐高)作为流程图,数据在一侧输入,推理或知识在另一侧输出。你可以拆分一个神经网络,把它拆开,从你喜欢的任何地方进行推理。你可能得不到任何有意义的东西,但你仍然可以做到,就像GoogleDeepDream。模型大小∝数据大小∝问题复杂度在所需数据量和模型大小之间存在有趣的近乎线性关系。基本推理是您的模型应该足够大以捕获数据中的关系(例如图像中的纹理和形状、文本中的语法和语音中的音素)以及问题的具体细节(例如类别的数量)).模型的早期层捕获输入的不同部分之间的高级关系(例如边缘和模式)。后面的层捕获有助于做出最终决定的信息,通常有助于区分所需的输出。因此,如果问题的复杂度很高(比如图像分类),那么参数的数量和需要的数据量也非常大。AlexNet能够在每一步都看到什么是迁移学习来拯救!在处理特定领域的问题时,通常无法找到构建这种规模的模型所需的数据量。但是,为一项任务训练的模型捕获数据类型中的关系,并且可以轻松地重复用于同一领域中的不同问题。这种技术称为迁移学习。迁移学习就像是最好的秘密,没有人试图保守但确实做到了。业内人人皆知,外人无人知晓。GoogleTrendsMachineLearningvsDeepLearningvsTransferLearning参考AwesomeMostCitedDeepLearningPapers看深度学习最好的论文:被引用次数最多的深度学习论文,超过50%的论文使用某种形式的迁移学习或预训练。迁移学习越来越适用于资源(数据和计算)有限的人,但不幸的是,这个想法并没有像它应该的那样被社会化。最需要它的人还不知道。如果深度学习是圣杯,数据是守门人,那么迁移学习就是关键。通过迁移学习,我们可以采用一个预训练模型,该模型已经在大型现成数据集上进行了训练(在具有相同输入但不同输出的完全不同的任务上进行了训练)。然后尝试找到输出可重用特征的层。我们使用该层的输出作为输入特征来训练需要更少参数的更小的网络。这个较小的网络已经了解预训练模型的数据模式,现在只需要了解它与您的特定问题的关系。这就是猫检测模型可以重新用于梵高复制品的方式。使用迁移学习的另一个主要优势是模型泛化能力好。较大的模型往往会过度拟合数据(即建模数据而不是潜在现象)并且在对看不见的数据进行测试时表现不佳。因为迁移学习允许模型看到不同类型的数据,所以它更好地学习世界的基本规则。将过度拟合视为记忆而不是学习。-JamesFaghmous假设由于迁移学习导致的数据减少,他想结束蓝黑色与铂金连衣裙的争论。您开始收集经过验证的蓝色和黑色连衣裙以及铂金连衣裙的图像。如果你想自己建立一个像上面提到的那样的精确模型(有1.4亿个参数)。要训??练这个模型,你需要找到120万张图像,这是一项不可能完成的任务。所以你可以试试迁移学习。计算使用迁移学习解决这个问题需要的参数个数:参数个数=[输入大小+1]*[输出大小+1]=[2048+1]*[1+1]~4098个参数我们看到参数数量从1.4×10?减少到4×103,减少了5个数量级。所以我们收集了不到一百张连衣裙图片,应该没问题。哇!如果您不耐烦并且迫不及待地想知道裙子的实际颜色,请向下滚动以查看如何为您自己的裙子建模。···迁移学习的分步指南-使用与情感分析相关的示例在这个示例中,我们有72条电影评论,其中62条未分配情感,这些将用于预模型8条分配了情感,它们将be为了训练模型2分配了情绪,它们将用于测试模型由于我们只有8个标记的句子(与情绪相关的句子),我们首先直接训练模型来预测上下文。如果我们训练一个只有8个句子的模型,它将有50%的准确率(50%就像掷硬币来做出决定)。为了解决这个问题,我们将使用迁移学习并首先在62个句子上训练一个模型。然后我们使用第一个模型的一部分,并在其之上训练一个情感分类器。当用8个句子训练并测试剩余的2个句子时,模型产生100%的准确率。在第一步中,我们将训练一个网络来模拟单词之间的关系。从一个句子中传入一个单词,并尝试预测该单词出现在同一个句子中。下面代码中embedding矩阵的大小为vocabularyxembedding_size,其中存储了一个代表每个单词的向量(这里的大小为“4”)。Github地址:https://gist.github.com/sjain07/98266a854d19e01608fa13d1ae9962e3#file-pretraining_model-pyStep2我们将训练这个图标,使得出现在相同上下文中的单词可以获得相似的向量表示。我们将预处理这些句子,删除所有停用词并将它们标记化。随后的传递一次一个词,最小化词向量与周围词之间的距离,并增加不包含在上下文中的随机词之间的距离。Github地址:https://gist.github.com/sjain07/3e9ef53a462a9fc065511aeecdfc22fd#file-training_the_pretrained_model-pyStep3然后我们会尝试预测句子要求表达的情绪。目前有10个(8个用于训练,2个用于测试)带有正面和负面标签的句子。由于上一步得到的模型已经包含了从所有词中学习到的向量,而这些向量的数值属性可以代表词的上下文,因此可以进一步简化情感预测。此时我们不直接使用句子,而是将句子的向量设置为它包含的所有单词的平均值(这个任务实际上是通过类似LSTM的技术实现的)。句子向量作为输入传递给网络,输出是内容是正面还是负面的分数。我们使用隐藏的中间层并在标记的句子上训练模型。如您所见,即使每次只使用10个样本,该模型也能达到100%的准确率。Github地址:https://gist.github.com/sjain07/a45ef4ff088e01abbcc89e91b030b380#file-training_the_sentiment_model-py虽然这只是一个例子,但是可以发现借助迁移学习技术,准确率从50%快速提升到100%。要查看完整示例和代码,请访问:https://gist.github.com/prats226/9fffe8ba08e378e3d027610921c51a78迁移学习图像识别的一些真实示例:图像增强、风格迁移、对象检测、皮肤癌检测。文本识别:零镜头翻译、情感分类。迁移学习的实施难点虽然可以用更小的数据量训练模型,但是这项技术的应用对技能要求更高。看看上面例子中硬编码的参数数量,想象一下这些参数在模型训练完成之前一直在不断调整。使用迁移学习技术的难度可想而知。迁移学习技术目前面临的问题包括:寻找预训练所需的大规模数据集确定预训练使用的模型两个模型中的任何一个都无法达到预期效果,将难以调试不确定性附加模型需要训练准备多少数据?使用预训练模型时难以决定在哪里停止。根据预训练好的模型,确定模型所需的层数和参数。托管并提供组合模型。当有更多数据或更好的技术可用时,很难找到数据科学家来更新预训练模型。寻找能够发现数据科学家的人其实也同样困难——KrzysztofZawadzkiMakesTransferLearningEasier在亲身经历了这些问题之后,我们着手构建一个支持迁移学习技术的基于云的深度学习服务,并试图通过这种简单且easy使用服务来解决这些问题。该服务包括一组预训练模型,我们已经对数百万个参数进行了训练。你只需要上传你自己的数据(或者在网上搜索数据),该服务可以为你的特定任务选择最合适的模型,在现有的预训练模型的基础上构建一个新的NanoNet,并将你的数据输入到NanoNet进行处理。NanoNets迁移学习技术(该架构仅作基础展示)构建你的***NanoNet(图像分类)1.在这里选择你要处理的分类。2.一键开始搜索网络和搭建模型(也可以上传自己的图片)。3.解决蓝金裙争议(模型准备好后,我们将允许您通过简单易用的网页界面上传测试图片,同时提供不依赖于特定语言的API).