关于深度学习:深度学习教程-AI应用实践策略下

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/220申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 AI利用实际策略(上) 中咱们对以下内容进行了介绍: 正交化办法(Orthogonalization)建设单值评估指标数据集划分要点人类程度误差与可防止偏差(Avoidable Bias)进步机器学习模型性能总结本篇是吴恩达老师第3门课《Structuring Machine Learning Projects》(构建机器学习我的项目)后半局部的总结梳理。内容次要笼罩误差剖析、零碎迭代、数据匹配与定位、迁徙学习、多任务学习、端到端系统等。 1.谬误剖析 如果心愿让学习算法可能胜任人类能做的工作,但学习算法还没有达到人类的体现,那么人工检查一下算法犯的谬误能够理解接下来应该做什么,这个过程称为谬误剖析(error analysis)。 假如正在调试猫分类器,获得了90%准确率,相当于10%谬误,留神到算法将一些狗分类为猫,须要对模型的一些局部做相应调整,能力更好地晋升分类的精度。 1.1 收集谬误样例在开发集(测试集)中,获取大概100个谬误标记的例子,而后手动查看,一次只看一个,看看开发集里有多少谬误标记的样本是狗。 100个数据中有5个样例是狗,如果对数据集的谬误标记做致力去改良模型的精度,能够晋升的下限是5%,仅能够达到9.5%的错误率,称为性能下限(ceiling on performance)。这种状况下,这样耗时的致力方向不是很值得的事。100个数据中,有50多个样例是狗,改良数据集的谬误标记是一个值得的改良方向,能够将模型的精确度晋升至95。这种谬误剖析尽管简略,然而可能防止破费大量的工夫精力去做一些对进步模型性能收效甚微的工作,让咱们专一解决影响模型正确率的次要问题,十分必要。 谬误剖析能够同时评估多个影响模型性能的因素,通过各自在谬误样本中所占的比例来判断其重要性。例如,猫类辨认模型中,可能有以下几个能够优化的影响因素: 批改那些被分类成猫的狗狗图片标签。批改那些被谬误分类的大型猫科动物,如:狮子,豹子等。晋升含糊图片的品质。能够建设表格来做并行的剖析。如下图所示: 在最右边,人工过一遍想剖析的图像集,电子表格的每一列对应要评估的想法,如狗(Dog)的问题、猫科动物(Great cats)的问题、含糊图像(Blurry images)的问题,最初一列写评论(Comments)。 在这个步骤做到一半时,可能会发现其余谬误类型,比方可能发现有Instagram滤镜,那些花哨的图像滤镜,烦扰了分类器。在这种状况下能够在谬误剖析途中,减少一列多色滤镜(Instagram滤镜和Snapchat滤镜),再过一遍,并确定新的谬误类型百分比,这个剖析步骤的后果能够给出一个预计,是否值得去解决每个不同的谬误类型。 最终汇总到上述这样的表格里,咱们能够敲定更无效的优化策略:把团队能够分成两个团队,其中一个改善大猫的辨认,另一个改善含糊图片的辨认。 1.2 小结总结一下,进行谬误剖析时,你应该察看谬误标记的例子,看看假阳性和假阴性,统计属于不同谬误类型的谬误数量(如上图)。在这个过程中,你可能会失去启发,演绎出新的谬误类型。总之,通过统计不同谬误标记类型占总数的百分比,有助于发现哪些问题亟待解决,或者提供构思新优化方向的灵感。 2.修改谬误标记 咱们用mislabeled examples来示意学习算法输入了谬误的\( Y\) 值。而在做谬误剖析时,有时会发现数据集中有些样本被人为地谬误标记(incorrectly labeled)了,这时该如何解决呢? 2.1 训练集错标如果是在训练集中,因为机器学习算法对于随机误差的稳健性(Robust)(也称作「鲁棒性」),只有这些出错的样本数量较小,且散布近似随机,就不用破费工夫一一修改。 2.2 验证集/测试集错标如果是验证集与测试集中呈现错标样本,该怎么解决呢? 办法很简略,应用上一大节内容介绍的谬误分析方法,统计验证集中所有分类谬误的样本中错标数据的占比。依据占比大小,决定是否须要修改所有错标数据,还是能够疏忽。如下举例说明: (1) case1如果评估算法后,是如下这种状况: 总体验证集错误率:10%错标样本错误率:0.6%其余起因引起的错误率:9.4%下面状况下错标样本引起的验证集错误率占比仅为0.6%,占验证集谬误状况的6%,而其它类型谬误占验证集谬误状况的94%。这种状况下,能够疏忽错标数据。 (2) case2如果评估算法后,是如下这种状况: 总体验证集错误率:2%错标样本错误率:0.6%其余起因引起的错误率:1.4%下面状况下错标样本引起的验证集错误率占比仍然为0.6%,然而却占验证集谬误状况的30%,而其它类型谬误占验证集谬误状况的70%。这种状况下,错标数据不可疏忽,须要手动修改。 通过后面的内容,咱们理解到验证集的次要作用是「在不同算法之间进行比拟,抉择错误率最小的算法模型」。然而,如果验证集有错标数据的存在,当不同算法错误率比拟靠近的时候,咱们无奈仅仅依据总体验证集的成果判断哪个算法模型更好,必须修改错标数据。 对于修改错标数据,吴恩达老师还给出了一些倡议: 在验证集和测试集上同时应用同样的修改伎俩,以保障验证集和测试集来自雷同的散布。同时查看判断正确和判断谬误的例子(通常不必这么做)。在修改验证集和测试集时,鉴于训练集的散布不用和验证/测试集完全相同,能够不去修改训练集。3.疾速搭建零碎并迭代 如果咱们想搭建一个全新的机器学习零碎,吴恩达老师倡议依据以下步骤疾速搭建好第一个零碎,而后重复迭代优化: [外链图片转存失败,源站可能有防盗链机制,倡议将图片保留下来间接上传(img-GX2QivZl-1649925346046)(http://image.showmeai.tech/de...)] 设置好训练、验证、测试集及掂量指标,确定指标。疾速训练出一个初步的零碎,用训练集来拟合参数,用验证集调参,用测试集评估。通过偏差/方差分析以及谬误剖析等办法,决定下一步优先解决的方向。4.在不同的散布上训练和测试 有时,咱们很难失去来自同一个散布的训练集和验证/测试集。当训练集与验证/测试集不来自同一个散布的时候,咱们应该如何解决这一问题,构建精确的机器学习模型呢? 仍以猫辨认作为例子,咱们的训练集可能由网络爬获得到,图片比拟清晰,而且规模较大(例如20万);而验证/测试集可能来自用户手机拍摄,图片比拟含糊,且数量较小(例如1万),难以满足作为训练集时的规模须要。 尽管验证集测试集图片品质不高,然而模型最终次要利用在对这些含糊的照片的解决上。有两种解决办法解决训练集和验证/测试集散布不统一: ①办法1:将训练集和验证/测试集齐全混合,而后再随机抉择一部分作为训练集,另一部分作为验证/测试集。 例如,混合210000例样本,而后随机抉择205000例样本作为训练集,2500例作为验证集,2500例作为测试集。 这种做法的长处是实现训练集和验证/测试集散布统一。毛病是验证/测试集中webpages图片所占的比重比mobile app图片大得多。(例如dev set蕴含2500例样本,大概有2381例来自webpages,只有119例来自mobile app。算法模型比照验证依然次要由webpages决定,理论利用的mobile app图片所占比重很小,达不到验证成果。) ...

April 14, 2022 · 1 min · jiezi

关于深度学习:深度学习教程-AI应用实践策略上

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/219申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章网络优化:超参数调优、正则化、批归一化和程序框架中咱们对以下内容进行了介绍: 超参数优先级与调参技巧超参数的适合范畴确定Batch Normalizationsoftmax回归深度学习框架本篇 和 下篇 次要对吴恩达老师第3门课《Structuring Machine Learning Projects》(构建机器学习我的项目)相干内容做总结梳理。内容次要笼罩机器学习中的一些策略和办法,让咱们可能更快更无效地让机器学习零碎工作。 对于一个曾经被构建好且产生初步后果的机器学习零碎,为了能使后果更令人满意,往往还要进行大量的改良。之前的内容局部介绍了很多改良的办法,包含: 收集更多数据调试超参数调整神经网络的大小或构造采纳不同的优化算法增加正则化可抉择的办法很多,也很简单、繁琐。自觉抉择、尝试不仅消耗工夫而且可能收效甚微。想要找准改良的方向,使一个机器学习零碎更快更无效地工作,就须要学习一些在构建机器学习零碎时罕用到的策略。 1.正交化 机器学习中有许多参数、超参数须要调试。通过每次只调试一个参数,放弃其它参数不变,而失去的模型某一性能扭转是一种最罕用的调参策略,咱们称之为正交化办法(Orthogonalization)。 正交化的外围在于每次调整只会影响模型某一方面的性能,而对其余性能没有影响。这种办法有助于更快更无效地进行机器学习模型的调试和优化。 在机器学习(监督学习)零碎中,咱们心愿模型有4重评估: 建设的模型在训练集上体现良好建设的模型在验证集上体现良好建设的模型在测试集上体现良好建设的模型在理论利用中体现良好其中: 对于第①条,如果模型在训练集上体现不好,能够尝试训练更简单的神经网络或者换一种更好的优化算法(例如Adam)。对于第②条,如果模型在验证集上体现不好,能够进行正则化解决或者退出更多训练数据。对于第③条,如果模型在测试集上体现不好,能够尝试应用更大的验证集进行验证。对于第④条,如果模型在理论利用中体现不好,可能是因为测试集没有设置正确或者老本函数评估指标有误,须要扭转测试集或老本函数。每一种“性能”对应不同的调节办法。而这些调节办法(旋钮)只会对应一个“性能”,是正交的。面对遇到的各种问题,正交化可能帮忙咱们更为精准无效地解决问题。 在模型性能调试中并不举荐应用早停法early stopping。如果晚期进行,尽管能够改善验证集的拟合体现,然而对训练集的拟合就不太好。因为对两个不同的“性能”都有影响,所以早进行法不具备正交化。尽管也能够应用,然而用其余正交化管制伎俩来进行优化会更简略无效。 2.单值评估指标 (对于本节波及到的机器学习利用中的评估指标详解,举荐浏览ShowMeAI文章 图解机器学习 | 模型评估办法与准则) 构建与优化机器学习零碎时,单值评估指标十分必要。通过设置一个量化的单值评估指标(single-number evaluation metric),能够使咱们依据这一指标比拟不同超参数对应的模型的优劣,从而抉择最优的那个模型。 例如,对于二分类问题,罕用的评估指标是准确率(Precision)和召回率(Recall)。 假如咱们有A和B两个分类器,其两项指标别离如图。但理论利用中,咱们通常应用综合了准确率和召回率的单值评估指标 \( F1-Score\) 来评估模型的好坏。\( F1- Score\) 其实就是精准率和召回率的和谐平均数(Harmonic Mean),比单纯的平均数成果要好。咱们计算出两个分类器的F1-Score,比照会发现A模型的成果要更好。 除了F1-Score之外,咱们还能够应用平均值作为单值评估指标来对模型进行评估。 如图所示,\( A,B,C,D,E,F\) 六个模型对不同国家样本的错误率不同,能够计算其均匀性能,而后选择均匀错误率最小的那个模型(\( C\) 模型)。 3.优化指标和满足指标 有时候,要把所有的性能指标都综合在一起,形成单值评估指标是比拟艰难的(比方在下面例子的根底上退出模型效率即运行工夫)。这时,咱们能够将某些指标作为优化指标(Optimizing Metric),寻求它们的最优值;而将某些指标作为满足指标(Satisficing Metric),只有在肯定阈值以内即可。 咱们以猫类辨认的分类器为例,有A、B、C三个模型,各个模型的Accuracy和运行工夫(Running time)如下表中所示: 咱们能够将Accuracy作为优化指标(Optimizing metic),将Running time作为满足指标(Satisficing metic):给Running time设定一个阈值,在其满足阈值的状况下,抉择Accuracy最大的模型。 如上例中设定Running time必须在100ms以内: 模型C不满足阈值条件,首先剔除模型B相比拟模型A而言,Accuracy更高,性能更好总结一下:优化指标(Optimizing metic)是须要优化的,越优越好,满足指标(Satisficing metic)只有满足设定的阈值就好了。上例中,准确率就是优化指标,因为咱们想要分类器尽可能做到正确分类;而运行工夫就是一个满足指标,如果你想要分类器的运行工夫不多于某个阈值,那最终抉择的分类器就应该是以这个阈值为界外面准确率最高的那个。 4.动静扭转评估指标对于模型的评估规范劣势须要依据理论状况进行动静调整,以让模型在理论利用中取得更好的成果。 ...

April 14, 2022 · 2 min · jiezi

关于深度学习:深度学习教程-网络优化超参数调优正则化批归一化和程序框架

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/218申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 神经网络优化算法 中咱们对以下内容进行了介绍: batch/mini-batch/ Stochastic gradient descent指数加权均匀(Exponentially weighted averages)和偏移校对(bias correction)动量梯度降落、RMSprop和Adam算法学习率衰减法部分最优的概念及论断本篇咱们将重点开展介绍超参数调试、BN(Batch Normalization批归一化)和深度学习编程框架三个局部的内容。 1.超参数调试解决 深度神经网络须要调试的超参数(Hyperparameters)较多,咱们来看看如何对其调试。 1.1 重要水平排序吴恩达老师后面讲到过的超参数中,重要水平顺次是(仅供参考): 最重要:学习率 \( \alpha\)其次重要:\( \beta\) :动量衰减参数,常设置为 0.9\( n^{[l]}\) :各暗藏层神经元个数(#hidden units)Mini-Batch 的大小再次重要:\( \beta_1\) ,\( \beta_2\) ,\( \varepsilon\) :Adam 优化算法的超参数,常设为 0.9、0.999、\( 10^{-8}\)\( L\) :神经网络层数(#layers)decay_rate:学习衰减率1.2 调参技巧咱们上面来看看神经网络的超参数抉择与调试办法。在传统的机器学习中,咱们对每个参数等间隔选取任意个数的点,而后,别离应用不同点对应的参数组合进行训练,最初依据验证集上的体现好坏,来选定最佳的参数。 例如有两个待调试的参数Hyperparameter 1和Hyperparameter 2,在每个参数上别离平均距离选取\( 5\) 个点,这样形成了\( 5 \times 5=25\) 种参数组合,如图所示。这种做法在参数比拟少的时候成果较好。 然而在深度神经网络模型中,咱们个别不采纳这种平均距离取点的办法,比拟好的做法是应用随机抉择。也就是说,对于下面这个例子,咱们随机抉择25个点,作为待调试的超参数,如下图所示: 随机化抉择参数的目标是为了尽可能地失去更多种参数组合。还是下面的例子,如果应用平均采样的话,每个参数只有5种状况;而应用随机采样的话,每个参数有25种可能的状况,因而更有可能失去最佳的参数组合。 这种做法带来的另外一个益处就是对重要性不同的参数之间的抉择成果更好。假如hyperparameter1为\( \alpha\) ,hyperparameter2为\( \varepsilon\) ,显然二者的重要性是不一样的。 如果应用第一种平均采样的办法,\( \varepsilon\) 的影响很小,相当于只抉择了5个\( \alpha\) 值。如果应用第二种随机采样的办法,\( \varepsilon\) 和\( \alpha\) 都有可能抉择25种不同值。这大大增加了\( \alpha\) 调试的个数,更有可能抉择到最优值。其实,在理论利用中齐全不晓得哪个参数更加重要的状况下,随机采样的形式能无效解决这一问题,然而平均采样做不到这点。 ...

April 14, 2022 · 4 min · jiezi

关于深度学习:深度学习教程-神经网络优化算法

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/217申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 深度学习的实用层面 中咱们对以下内容进行了介绍: Train / Dev / Test sets的切分和比例抉择Bias和Variance的相干常识避免过拟合的办法:L2正则化和Dropout规范化输出以放慢梯度降落速度和精度梯度隐没和梯度爆炸的起因及解决办法梯度查看本篇内容开展介绍深度神经网络中的一些优化算法,通过应用这些技巧和办法来进步神经网络的训练速度和精度。 1.Batch梯度降落法 Batch梯度降落法(批梯度降落法)是最罕用的梯度降落模式,它是基于整个训练集的梯度降落算法,在更新参数时应用所有的样本来进行更新。 对整个训练集进行梯度降落法的时候,咱们必须解决整个训练数据集,而后能力进行一步梯度降落,即每一步梯度降落法须要对整个训练集进行一次解决,如果训练数据集很大的时候,处理速度就会比较慢。 然而如果每次解决训练数据的一部分,基于这个子集进行梯度降落法,算法迭代速度会更快。而解决的这些一小部分训练子集即称为Mini-Batch,这个算法也就是咱们说的Mini-Batch梯度降落法。 2.Mini-Batch梯度降落法 Mini-Batch梯度降落法(小批量梯度降落法)每次同时解决单个的Mini-Batch,其余与Batch梯度降落法统一。 应用Batch梯度降落法,对整个训练集的一次遍历只能做一个梯度降落;而应用Mini-Batch梯度降落法,对整个训练集的一次遍历(称为一个epoch)能做Mini-Batch个数个梯度降落。之后,能够始终遍历训练集,直到最初收敛到一个适合的精度。 Batch梯度降落法和Mini-Batch梯度降落法代价函数的变化趋势如上图所示: 应用Batch gradient descent,随着迭代次数减少,cost是一直减小的。应用Mini-batch gradient descent,随着在不同的mini-batch上迭代训练,cost并不是枯燥降落,而是振荡降落的,最终也能失去较低的cost值。呈现轻微振荡的起因是不同的mini-batch之间是有差别的。例如可能第一个子集\( (X^{{1}},Y^{{1}})\)是好的子集,而第二个子集\( (X^{{2}},Y^{{2}})\)蕴含了一些噪声noise。呈现轻微振荡是失常的。2.1 Batch大小及影响咱们在训练神经网络的时候,应用mini-batch gradient descent,常常要指定一个batch批次的样本数量。而不同的batch大小会影响训练的过程,其中有2个特例,mini-batch gradient descent会进化为不同的算法: Mini-Batch的大小为1,即是随机梯度降落法(stochastic gradient descent),每个样本都是独立的Mini-Batch。Mini-Batch的大小为\( m\)(数据集大小),即是Batch梯度降落法。 如上图,咱们比照一下Batch gradient descent和Stachastic gradient descent的梯度降落曲线。 图中蓝色的线代表Batch gradient descent。Batch gradient descent会比拟安稳地靠近全局最小值,然而因为应用了所有m个样本,每次后退的速度有些慢。图中紫色的线代表Stochastic gradient descent。Stochastic gradient descent每次后退速度很快,然而路线波折,有较大的振荡,最终会在最小值左近来回稳定,难以真正达到最小值处。而且在数值解决上就不能应用向量化的办法来进步运算速度。(1) Batch梯度降落法(Batch gradient descent)对所有 m 个训练样本执行一次梯度降落,每一次迭代工夫较长,训练过程慢。绝对噪声低一些,幅度也大一些。老本函数总是向减小的方向降落。(2) 随机梯度降落法(Stochastic gradient descent)对每一个训练样本执行一次梯度降落,训练速度快,但失落了向量化带来的计算减速。有很多噪声,减小学习率能够适当。老本函数总体趋势向全局最小值凑近,但永远不会收敛,而是始终在最小值左近稳定。(3) Mini-Batch gradient descent理论应用中,batch size不能设置得太大(会偏向于Batch gradient descent),也不能设置得太小(偏向于Stochastic gradient descent)。 ...

April 14, 2022 · 4 min · jiezi

关于深度学习:深度学习教程-深度学习的实用层面

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/216申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 深层神经网络中咱们对以下内容进行了介绍: 深层神经网络的构造。深层神经网络前向流传和反向流传过程。须要深层神经网络的起因。神经网络参加超参数。神经网络与人脑简略比照本篇内容对应吴恩达老师深度学习系列第2门课《Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization》。在第2门课中,吴恩达老师展开讨论和解说了如何优化神经网络模型,例如调整超参数,进步算法运行速度等等。 1.数据划分:训练 / 验证 / 测试集 1.1 深度学习实际迭代优化理论利用深度学习是一个迭代过程。 在构建一个神经网络的时候,咱们须要设置许多超参数,例如神经网络的层数(#Layers)、每个暗藏层蕴含的神经元个数(#Hidden Units)、学习速率(,Learning Rates)、激活函数(Activation Functions)的抉择等。实际上很难在第一次设置的时候就抉择到这些最佳的超参数,而是须要通过一直地迭代更新来取得。 循环迭代过程是如下这样的: ① 产生想法Idea,抉择初始的参数值,构建神经网络模型构造;② 通过代码Code实现上述想法;③ 通过试验Experiment验证这些超参数对应的神经网络的体现性能。④ 依据验证后果,咱们对超参数进行适当的调整优化,再进行下一次的Idea->Code->Experiment循环。通过很屡次的循环,一直调整超参数,选定最佳的参数值,从而让神经网络性能最优化。上述迭代过程中,决定整个训练过程快慢的关键在于单次循环所破费的工夫,单次循环越快,训练过程越快。而设置适合的训练集(Training sets)、验证集(Development sets)、测试集(Test sets)大小,能无效进步训练效率。上述数据局部来源于建设模型的过程中,咱们对于总体数据的划分: 训练集(Training Sets):用训练集对算法或模型进行训练过程。验证集((Development Sets):利用验证集(又称为简略穿插验证集,hold-out cross validation set)进行穿插验证,抉择出最好的模型。测试集(Test Sets):最初利用测试集对模型进行测试,获取模型运行的无偏预计(对学习办法进行评估)。1.2 前大数据时代划分形式在小数据量的时代,如100、1000、10000的数据量大小,能够将数据集依照以下比例进行划分: 无验证集的状况:70%、30%有验证集的状况:60%、20%、20%1.3 大数据时代划分形式而在现在的大数据时代,对于一个问题,咱们领有的数据集的规模可能是百万级别的,所以验证集和测试集所占的比重会趋向于变得更小。 对于验证集验证集的目标是为了验证不同的算法哪种更加无效,所以验证集只有足够大到可能验证大概2-10种算法哪种更好,而不须要应用20%的数据作为验证集。如百万数据中抽取1万的数据作为验证集就能够了。 对于测试集测试集的次要目标是评估模型的成果,如在单个分类器中,往往在百万级别的数据中,咱们抉择其中10000条数据也足以评估单个模型的成果。 咱们针对不同量级的大数据场景,能够采纳如下的训练集(Training sets)、验证集(Development sets)、测试集(Test sets)数据划分形式: 100万数据量:98%、1%、1%超百万数据量:99.5%、0.25%、0.25% (或者99.5%、0.4%、0.1%)1.4 数据划分倡议倡议验证集要和训练集来自于同一个散布(数据起源统一),能够使得机器学习算法变得更快并取得更好的成果。 假如你开发一个手机app,能够让用户上传图片,而后app辨认出猫的图片。在app辨认算法中,你的训练样本可能来自网络下载,而你的验证和测试样本可能来自不同用户的上传。从网络下载的图片个别像素较高而且比拟正规,而用户上传的图片往往像素不稳固,且图片品质不一。这种状况下验证集和测试集的作用就受影响了。 如果不须要用无偏预计来评估模型的性能,则能够不须要测试集。 Test sets测试集的指标次要是进行无偏预计。咱们能够通过Train sets训练不同的算法模型,而后别离在Dev sets上进行验证,依据后果抉择最好的算法模型。这样也是能够的,不须要再进行无偏预计了。如果只有Train sets和Dev sets,通常也有人把这里的Dev sets称为Test sets,咱们要留神加以区别。 ...

April 14, 2022 · 3 min · jiezi

关于深度学习:深度学习教程-深层神经网络

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/215申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 浅层神经网络 中咱们对以下内容进行了介绍: 神经网络的根本构造(输出层,暗藏层和输入层)。浅层神经网络前向流传和反向流传过程。神经网络参数的梯度降落优化。不同的激活函数的优缺点及非线性的起因。神经网络参数随机初始化形式本篇内容咱们将探讨深层神经网络。 1.深层神经网络 咱们在后面提到了浅层神经网络,深层神经网络其实就是蕴含更多隐层的神经网络。下图别离列举了不同深度的神经网络模型构造: 咱们会参考「隐层个数」和「输入层」对齐命名。如上图逻辑回归能够叫做1 layer NN,单隐层神经网络能够叫做2 layer NN,2个隐层的神经网络叫做3 layer NN,以此类推。所以当咱们提到L layer NN,指的是蕴含\( L-1\) 个隐层的神经网络。 上面咱们来理解一下神经网络的一些标记写法。以如下图的4层神经网络为例: ① 总层数用\( L\) 示意,\( L=4\) 输出层是第\( 0\) 层,输入层是第\( L\) 层② \( n^{[l]}\) 示意第\( l\) 层蕴含的单元个数,\( l=0,1,\cdots,L\) 下图模型中,\( n^{[0]}=n_x=3\) ,示意三个输出特色\( x_1\) 、\( x_2\) 、\( x_3\)下图模型中\( n^{[1]}=5\) ,\( n^{[2]}=5\) ,\( n^{[3]}=3\) ,\( n^{[4]}=n^{[L]}=1\)③ 第\( l\) 层的激活函数输入用\( a^{[l]}\) 示意,\( a^{[l]}=g^{[l]}(z^{[l]})\) ④ \( W^{[l]}\) 示意第\( l\) 层的权重,用于计算\( z^{[l]}\) ...

April 14, 2022 · 2 min · jiezi

关于深度学习:深度学习教程-浅层神经网络

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/214申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 神经网络根底 中咱们对以下内容进行了介绍: 二分类问题、逻辑回归模型及损失函数。梯度降落算法。计算图与正向流传及反向流传。向量化形式并行计算与提效。本篇内容咱们将从浅层神经网络动手,逐渐拓展到真正的神经网络模型常识学习。 1.神经网络示意 图示为两层神经网络,也能够称作单隐层神经网络(a single hidden layer neural network)。这就是典型的浅层(shallow)神经网络,构造上,从左到右,能够分成三层: 输出层(input layer):竖向重叠起来的输出特征向量。暗藏层(hidden layer):形象的非线性的中间层。输入层(output layer):输入预测值。留神:当咱们计算网络的层数时,通常不思考输出层。因而图中暗藏层是第一层,输入层是第二层。 有一些约定俗成的符号示意,如下: 输出层的激活值为\(a^{[0]}\),暗藏层产生的激活值,记作\(a^{[1]}\)。暗藏层的第一个单元(或者说节点)就记作\(a^{[1]}_1\),输入层同理。暗藏层和输入层都是带有参数\(W\)和\(b\)的,它们都应用上标[1]来示意是和第一个暗藏层无关,或者上标[2]来示意是和输入层无关。2.计算神经网络的输入2.1 两层神经网络 接下来咱们开始具体推导神经网络的计算过程。 咱们仍旧来看看咱们相熟的逻辑回归,咱们用其构建两层神经网络。逻辑回归的前向流传计算能够分解成计算\(z\)和\(a\)的两局部。 如果咱们基于逻辑回归构建两层神经网络,前向计算从前往后要做2次计算: 从输出层到暗藏层,对应一次逻辑回归运算。从暗藏层到输入层,对应一次逻辑回归运算。 在每层计算中,咱们留神对应的上标和下标: 咱们记上标方括号\(^{[ ]}\)示意layer,记下标示意第几个神经元。例如,\(a_i^{[l]}\)示意第\(l\)层的第\(i\)个神经元。留神,\(i\)从\(1\)开始,\(l\)从\(0\)开始。2.2 单个样本计算形式咱们将输出层到暗藏层的计算公式列出来: 后续从暗藏层到输入层的计算公式为: 上述每个节点的计算都对应着一次逻辑运算的过程,别离由计算\(z\)和\(a\)两局部组成。 2.3 向量化计算 咱们引入向量化思维晋升计算效率,将上述表达式转换成矩阵运算的模式,如下所示: 咱们这里特地留神一下数据维度: \(W^{[1]}\)的维度是\((4,3)\)\(b^{[1]}\)的维度是\((4,1)\)\(W^{[2]}\)的维度是\((1,4)\)\(b^{[2]}\)的维度是\((1,1)\)2.4 数据集向量化计算 下面局部提到的是单个样本的神经网络正向流传矩阵运算过程。对于\(m\)个训练样本,咱们也能够应用向量化矩阵运算的模式来晋升计算效率。模式上,它和单个样本的矩阵运算十分相似,比较简单。咱们记输出矩阵\(X\)的维度为\((n_x,m)\),则有: 上述公式中,\(Z^{[1]}\)的维度是\((4,m)\),4是暗藏层神经元的个数;\(A^{[1]}\)的维度与\(Z^{[1]}\)雷同;\(Z^{[2]}\)和\(A^{[2]}\)的维度均为\((1,m)\)。 咱们能够这样了解上述的矩阵:行示意神经元个数,列示意样本数目\(m\)。 3.激活函数 3.1 不同的激活函数与抉择在神经网络中,暗藏层和输入层都须要激活函数(activation function),后面的例子中咱们都默认应用Sigmoid函数\(\sigma(z)\)作为激活函数。理论咱们有不同的激活函数能够抉择,而且它们有各自的长处: (1) tanh 函数the hyperbolic tangent function,双曲正切函数 $$a = \frac{e^z - e^{-z}}{e^z + e^{-z}}$$ 长处:函数输入介于\((-1,1)\),激活函数的平均值就更靠近0,有相似数据中心化的成果。成果简直总比Sigmoid函数好(二元分类的输入层咱们还是会用Sigmoid,因为咱们心愿输入的后果介于\((0,1)\))。 毛病:当\(z\)趋紧无穷大(或无穷小),导数的梯度(即函数的斜率)就趋紧于0,这使得梯度算法的速度大大减缓。这一点和Sigmoid一样。 (2) ReLU函数the rectified linear unit,修改线性单元 ...

April 14, 2022 · 1 min · jiezi

关于深度学习:深度学习教程-神经网络基础

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/213申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 深度学习概论 中咱们对深度学习(Deep Learning)进行了简略介绍: 咱们以房价预测为例,对应解说了神经网络(Neural Network)模型构造和基础知识。介绍了针对监督学习的几类典型神经网络:Standard NN,CNN和RNN。介绍了「结构化数据」和「非结构化数据」2种不同类型的数据。剖析了近些年来深度学习热门,及其性能优于传统机器学习的起因(Data,Computation和Algorithms)。本节内容咱们开展介绍神经网络的根底:逻辑回归(Logistic Regression)。咱们将通过对逻辑回归模型构造的剖析,过渡到后续神经网络模型。(对于逻辑回归模型,大家也能够浏览ShowMeAI的文章 图解机器学习 | 逻辑回归算法详解 学习) 1.算法根底与逻辑回归逻辑回归(Logistic regression) 是一个用于二分类的算法。 1.1 二分类问题与机器学习根底 二分类就是输入\(y\)只有 {0,1} 两个离散值(也有 {-1,1} 的状况)。咱们以一个「图像识别」问题为例,判断图片是否是猫。辨认是否是「猫」,这是一个典型的二分类问题——0代表「非猫(not cat)」,1代表「猫(cat)」。(对于机器学习基础知识大家也能够查看ShowMeAI文章 图解机器学习 | 机器学习基础知识)。 从机器学习的角度看,咱们的输出\(x\)此时是一张图片,彩色图片蕴含RGB三个通道,图片尺寸为\((64,64,3)\)。 有些神经网络的输出是一维的,咱们能够将图片\(x\)(维度\((64,64,3)\))展平为一维特征向量(feature vector),失去的特征向量维度为\((12288,1)\)。咱们个别用列向量示意样本,把维度记为\(n_x\)。 如果训练样本有\(m\)张图片,那么咱们用矩阵存储数据,此时数据维度变为\((n_x,m)\)。 矩阵\(X\)的行\(n_x\)代表了每个样本\(x^{(i)}\)特色个数矩阵\(X\)的列\(m\)代表了样本个数。咱们能够对训练样本的标签\(Y\)也做一个规整化,调整为1维的状态,标签\(Y\)的维度为\((1,m)\)。 1.2 逻辑回归算法 逻辑回归是最常见的二分类算法(具体算法解说也可浏览ShowMeAI文章 图解机器学习 | 逻辑回归算法详解),它蕴含以下参数: 输出的特征向量:\(x \in R^{n_x}\),其中 \({n_x}\)是特色数量用于训练的标签:\(y \in 0,1\)权重:\(w \in R^{n_x}\)偏置: \(b \in R\)输入:\(\hat{y} = \sigma(w^Tx+b)\)输入计算用到了Sigmoid函数,它是一种非线性的S型函数,输入被限定在 \([0,1]\) 之间,通常被用在神经网络中当作激活函数(Activation Function)应用。 Sigmoid函数的表达式如下: $s = \sigma(w^Tx+b) = \sigma(z) = \frac{1}{1+e^{-z}}$ ...

April 14, 2022 · 2 min · jiezi

关于深度学习:实录-MegEngine-大-Kernel-卷积工程优化实践

本篇整顿自 3.19 日 “Large Kernel Makes CNN Great Again” 专题 Meetup 中《MegEngine 大 Kernel 卷积工程优化实际》分享。作者:王彪 | 旷视 MegEngine 异构计算组负责人。 视频回顾 01:10:55 中转 从卷积到矩阵乘矩阵乘(GEMM)具备计算密度大和易并行等低劣特点,传统畛域例如芯片产业和高性能计算畛域往往将 GEMM 作为 benchmark 并曾经将其优化到靠近硬件实践峰值。 为了取得更好的性能收益,im2col 算法将 GEMM 带进了卷积神经网络的工程优化畛域。Implicit GEMM 算法进一步解决了 im2col 固有的多余显存占用和冗余的前后解决问题,这在存储受限的硬件例如 GPU 上尤为重要,使得 GEMM 在卷积优化中的重要性进一步晋升。加之硬件厂商也开始越来越多的对矩阵乘提供硬件反对,例如各种 MMA 指令和 TensorCore 的退出,这些起因独特促使现有很多优化算法库曾经将 im2col/Implicit GEMM 作为其默认的卷积优化计划。 im2col 算法本文中假如卷积的输出 shape 为 (n, ic, ih, iw),kernel 为 (oc, ic, kh, kw),output 为 (n, oc, oh, ow)。im2col 算法的过程如下图所示,简略的将 kernel reshape 一下就失去了一个行 M = oc,列 K = ic*kh*kw 的矩阵记作矩阵 A。用 kernel 大小的立方体在 input 上做滑窗,每次将一个小立方体的数据依照 chw 的程序开展成一列。从上到下,从左到右滑残缺个 input 之后将会失去一个行 K = ic*kh*kw,列 N = n*oh*ow 的矩阵记作矩阵 B。此时咱们计算 GEMM(A, B) 就能够失去卷积的后果矩阵 C,其行 M = oc,列 N = n*oh*ow。 ...

April 13, 2022 · 3 min · jiezi

关于深度学习:深度学习模型GPU服务器的主要应用场景

什么是显卡? 置信很多人都认为这就是一个游戏工具,认为当初高性能的显卡难道只是为游戏而生。 其实目前不少公司曾经意识到GPU大规模并行计算带来的劣势,开始用弱小的GPU服务器进行各种方向的钻研,而这些钻研除了能给公司带来微小收益外,其研究成果也开始利用在咱们的日常生活中。 首先,GPU服务器有什么作用? GPU 减速计算能够提供不凡的应用程序性能,能将应用程序计算密集局部的工作负载转移到 GPU,同时仍由 CPU 运行其余程序代码,从用户的角度来看,应用程序的运行速度显著放慢。 了解 GPU 和 CPU 之间区别的一种简略形式是比拟它们如何解决工作。 CPU 由专为程序串行解决而优化的几个外围组成,而 GPU 则领有一个由数以千计得更小、更高效的外围(专为同时解决多重工作而设计)组成的大规模并行计算架构。 其次,GPU服务器的次要利用场景是什么? 深度学习模型: GPU服务器可作为深度学习训练的平台: 1.GPU 服务器可间接减速计算服务,亦可间接与外界连贯通信。 2.GPU 服务器和云服务器搭配应用,云服务器为主 GPU 云服务器提供计算平台。 3.对象存储 COS 能够为 GPU 服务器提供大数据量的云存储服务。 海量计算解决: GPU 服务器超强的计算性能可利用于海量数据处理方面的运算,如搜寻、大数据举荐、智能输入法等: 1、本来须要数天实现的数据量,采纳 GPU 服务器在数小时内即可实现运算。 2、本来须要数十台 CPU 服务器独特运算集群,采纳单台 GPU 服务器可实现。 最初,如何正确抉择GPU服务器? 抉择GPU服务器时首先要思考业务需要来抉择适宜的GPU型号。在HPC高性能计算中还须要依据精度来抉择,比方有的高性能计算须要双精度,这时如果应用P40或者P4就不适合,只能应用V100或者P100;同时也会对显存容量有要求,比方石油或石化勘探类的计算利用对显存要求比拟高;还有些对总线规范有要求,因而抉择GPU型号要先看业务需要。 当GPU型号选定后,再思考用什么样GPU的服务器。这时咱们须要思考以下几种状况: 第一、 在边缘服务器租用上须要依据量来抉择T4或者P4等相应的服务器,同时也要思考服务器的应用场景,比方火车站卡口、机场卡口或者公安卡口等;在核心端做Inference时可能须要V100的服务器,须要思考吞吐量以及应用场景、数量等。 第二、 须要思考客户自身应用人群和IT运维能力,对于BAT这类大公司来说,他们本人的经营能力比拟强,这时会抉择通用的PCI-e服务器;而对于一些IT运维能力不那么强的客户,他们更关注数字以及数据标注等,咱们称这类人为数据科学家,抉择GPU服务器的规范也会有所不同。 第三、 须要思考配套软件和服务的价值。 第四、 要思考整体GPU集群零碎的成熟水平以及工程效率,比方像DGX这种GPU一体化的超级计算机,它有十分成熟的从底端的操作系统驱动Docker到其余局部都是固定且优化过的,这时效率就比拟高。 作为国内品牌服务器提供商,服务器在线GPU机架式服务器领有大规模并行处理能力和无可比拟的灵活性。它次要利用于为计算密集型利用提供足够的解决能力。 GPU减速运算的劣势就在于它能够一边由CPU运行利用程序代码,一边由图形处理单元(GPU)解决大规模并行架构的计算密集型工作。服务器在线GPU服务器是医疗成像、播送、视频转码市场的现实抉择。 抉择GPU云服务器的准则

April 13, 2022 · 1 min · jiezi

关于深度学习:一个小目标的达成Milvus-10000-星

近日,开源我的项目 Milvus 在向量数据库征程上获得了新的里程碑——GitHub 10,000 星。尽管咱们认为 star 数不是评估开源我的项目品质的唯一标准,但还是感激每一位通过点星来反对 Milvus 我的项目的开发者。 自 Milvus 我的项目发表开源以来,已有两年半的工夫。刚开始很少有人晓得什么是向量数据库,更不分明如何应用向量数据库赋能 AI 利用。Milvus 致力于为人工智能定义和建设下一代数据库,咱们在我的项目中联合了 SOTA 算法和云原生技术,使得开发者能够通过 Milvus 向量数据库轻松构建 AI 利用。在 Milvus 中蕴含了大量优良的开源我的项目[1],咱们非常感激这些我的项目为 Milvus 今日的成就奠定了松软的根底。 咱们也非常感谢每一位社区成员独特创始了向量数据库这个全新的数据库类型,这是一件十分激动人心的事件。让咱们来一起回顾我的项目在成长旅程中获得的成就,诚挚的感激所有的我的项目开发者和贡献者: Milvus 做为 孵化我的项目[2]退出 LF AI & Data 基金会,与许多其余平凡的开源人工智能和大数据我的项目站在了一起。当初 Milvus 曾经是基金会的毕业我的项目[3]了 。咱们公布了两个次要版本:Milvus 1.0[4] 和 Milvus 2.0[5]。Milvus 的首篇论文在 SIGMOD 进行发表: Milvus: A Purpose-Built Vector Data Management System[6]。目前,咱们有超过 10,000 名社区成员,其中蕴含 220 名来自寰球的贡献者。至今有超过 1000 家企业用户[7]采纳 Milvus,其中不乏优良的头部企业。https://www.bilibili.com/vide...(Milvus 进化史可视化:来视频中找找你的 GitHub ID) 这些成就的达成须要感激每一位为 Milvus 我的项目做出过奉献的人。感激你们每一次的 Pull Request 提交、issue 报告、会议参加和对 Milvus 常识的分享与流传,你们在 Milvus 的倒退中表演了不可或缺的角色! ...

April 13, 2022 · 1 min · jiezi

关于深度学习:龙蜥社区成立DeepRec-SIG开源大规模稀疏模型深度学习引擎

龙蜥社区(OpenAnolis)(以下简称“龙蜥社区”)正式成立 DeepRec SIG,将携手龙蜥社区开发者一道,致力于保护 Anolis OS 上的 DeepRec 组件,并将稠密模型深度学习引擎引入龙蜥社区。 稠密模型是指在模型构造中离散特色计算逻辑占比拟高的一类深度学习模型的统称,其广泛应用于搜寻、广告、举荐等高价值业务中。当下支流开源深度学习框架,对稠密模型的反对有余。国内外公司在稠密场景应用的计划在系统性和全面性上存在着问题,技术复用上的难度导致无奈大面积推广,制约了不同场景下稠密模型的摸索和倒退。 DeepRec SIG 作为负责龙蜥操作系统上 DeepRec 相干开源软件包的保护,构建搜寻、举荐、广告场景模型的训练及预测生态的利器,现做如下介绍: DeepRec 介绍DeepRec(PAI-TF)是阿里巴巴团体对立的大规模稠密模型训练/预测引擎,广泛应用于淘宝、天猫、阿里妈妈、高德、淘特、AliExpress、Lazada 等,反对了淘宝搜寻、举荐、广告等外围业务,撑持着千亿特色、万亿样本的超大规模稠密训练。DeepRec 在分布式、图优化、算子、Runtime 等方面对稠密模型进行了深度性能优化,同时提供了稠密场景下特有的 Embedding 相干性能。 DeepRec 的劣势DeepRec 是基于 TensorFlow1.15、Intel-TF、NV-TF 构建的稠密模型训练/预测引擎,针对稠密模型场景进行了定制深度优化,次要蕴含以下三类性能优化: 1、模型成果DeepRec提供了丰盛的稠密性能反对,进步模型成果的同时升高稠密模型的大小,并且优化超大规模 下Optimizer 的成果。DeepRec 提供了动静弹性特色、动静弹性维度、自适应弹性特色、多 Hash Embedding、Embedding多级混合存储、AdamAsyncOptimizer 等性能,在内存占用、性能、模型成果等方面为业务带来理论的帮忙。 2、训练性能DeepRec 针对稠密模型场景在分布式、图优化、算子、Runtime 等方面进行了深度性能优化。其中: DeepRec 对不同的分布式策略进行了深度的优化,包含异步训练、同步训练、半同步训练等DeepRec提供了丰盛的针对稠密模型训练的图优化性能,包含主动流水线SmartStage、结构化特色、主动图 Fusion 等等DeepRec 中优化了稠密模型中数十个常见算子,并且提供了包含Embedding、Attention等通用子图的 Fusion 算子DeepRec 中 CPUAllocator 和 GPUAllocator 可能大大降低内存/显存的使用量并显著减速 E2E 的训练性能。在线程调度、执行引擎方面针对不同的场景提供了不同的调度引擎策略3、部署及Serving针对搜寻、举荐、广告场景中特有的部署和 Serving 的特点,DeepRec 反对 Online Deep Learning 的残缺链路,包含增量模型的导出、加载,Serving 的模型主动发现等。DeepRec 中反对 Embedding 多级混合存储,使得单机进行超大模型预测时防止分布式 Serving 带来的 latency 增大问题,进步大模型的预测性能的同时降低成本。 SIG 布局DeepRec 打算每隔 1-2 个月进行版本更新,后续公布的重点性能包含: ...

April 12, 2022 · 1 min · jiezi

关于深度学习:恒源云GpushareFAIR-CVPR2022新作DVT是个啥

文章起源 | 恒源云社区 原文地址 | 用于视频的可变形Transformer 原文作者 | 咚咚 hi,大家好啊!窗外的树 绿了,楼下的桃花 开了,春天,就这么滴的过来了…… 小编曾经居家办公(不能下楼)3个礼拜啦!敬请期待疯掉的小编~ 我的春游彻底没心愿了!!!说那么多有啥用呢?还不是得乖乖搬运社区文章!毕竟社区搭档们发帖是那么的勤快!Respect! 注释开始摘要引入主题:在视频分类畛域,视频Transformer最近作为一种无效的卷积网络替代品呈现。现存问题:大多数以前的视频Transformer采纳全局时空留神或利用手动定义的策略来比拟帧内和帧间的patch。这些固定注意力计划不仅计算成本高,而且通过比拟预约地位的patch,疏忽了视频中的静止动力学。解决方案:该论文介绍了可变形视频Transformer(DVT),它依据静止信息动静预测每个查问地位的一小部分视频Patch,从而容许模型依据帧间的对应关系来决定在视频中查看的地位。要害的是,这些基于静止的对应关系是从以压缩格局存储的视频信息中以零老本取得的。试验后果:在四个大型视频基准(Kinetics-400、Something-Something-V2、EPIC-KITCHENS和Diving-48)上的试验表明,该论文模型在雷同或更低的计算成本下实现了更高的精度,并在这四个数据集上取得了最优后果。 算法视频TRANSFORMER视频数据的输出大小个别能够示意为\( X\in R^{H×W×3×T} \) ,T示意帧数,3示意每一帧是RGB图像 因为应用的是Transformer架构,所以首先须要将输出数据转换为一个\( S \cdot T \) tokens,S示意每一帧中的patch个数,每个token能够示意为\( x_s^t \in R^D \) 。整个过程能够示意如下: 将每一帧图像进行非重叠宰割,生成S个patch。将每个patch投影到D个通道维度上。增加空间地位编码\( e_s \)和工夫编码\( e^t \)最终失去\( z_s^t = x_s^t + e_s + e^t \) 而后通过多头自注意力,layer norm(LN)和MLP计算,能够示意如下:其中具体的自注意力能够示意如下(应用单头进行简化阐明) 依据以往的视频Transformer算法,自注意力机制能够分为Global space-time attention和Divided space-time attention Global space-time attention 简略来说就是将时空联结起来进行注意力计算,公式如下: 其中注意力权重计算公式如下: 整个计算过程的计算复杂度为\( (S^2T^2) \),最大的问题就是计算量很大。 Divided space-time attention 顾名思义,就是将工夫和空间的注意力进行离开计算,用来缩小计算量 空间注意力计算公式如下:计算复杂度为\( O(S^2T) \)对应的工夫注意力计算公式如下: 计算复杂度为\( O(ST^2) \)须要留神的是,工夫注意力只对不同工夫帧上的同一个空间地位进行注意力计算!这就是其最大的问题,因为其没有思考到不同帧之间指标的静止。 ...

April 11, 2022 · 1 min · jiezi

关于深度学习:CPUvsGPU为什么要为游戏和图像密集型程序配置专用显卡

图形处理单元(或简称GPU): 会负责解决从PC外部传送到所连贯显示器的所有内容,无论你在玩游戏、编辑视频或只是盯着桌面的壁纸,所有显示器中显示的图像都是由GPU进行渲染的。 本文零碎极客将向大家介绍什么是GPU、它是如何工作的,以及为什么要为游戏和图像密集型应用程序配置专用显卡。 对普通用户来说,实际上不须要独立显卡就能够向显示器「提供」内容。像笔记本电脑或平板用户,通常CPU芯片都会集成GPU内核,也就是大家熟称的「核显」,这样就能够为对显示要求不高的低功耗设施提供更好的性价比。 正因如此,局部笔记本电脑、平板电脑和某些PC用户来说,要想将其图形处理器降级到更高级别也很艰难,甚至不太可能。 这就会导致游戏(和视频编辑等)性能不佳,只能将图形品质设置升高能力工作。对此类用户而言,只有在主板反对和闲暇空间足够的状况下,增加新显卡才可能把(游戏)显示体验进步到一个新的程度。 CPU vs GPU 既然CPU曾经提供显示外围了,如果咱们已有一颗弱小CPU,为什么还须要独自的GPU呢?简略地说,就是GPU的数字计算对依赖于它的游戏引擎和(像视频编辑这样的)密集型应用程序来说更为强劲,位于GPU板上的大量外围能够在单位工夫点解决所有此类过程。 尽管CPU和GPU都是以硅为根底的微型处理器,不过从实质上来说,两者的部署角色却是齐全不同的。 CPU是PC的大脑,用于解决各种简单的工作,GPU并不能无效地执行。而比特币工厂依赖于他们受信赖的GPU(被称为GPGPU–通用图形处理单元)来挖矿而不必CPU。 CPU和GPU就像人类的大脑和肌肉,前者可能解决大量不同类型的计算,而GPU的工作则是负责渲染图形和将所有可用外围聚焦于具体任务。 当在单个工作上须要大量简单图形和几何运算时,GPU会投入相应工作。 GPU厂商 目前市场上占主导地位的两大GPU厂商是AMD和Nvidia,AMD的前身就是赫赫有名的ATI,其Radeon品牌早在1985年就已公布,而Nvidia在1999年才公布了其首款GPU产品。 AMD于2006年对ATI进行了收买,目前在两个不同的畛域同Nvidia和Intel进行竞争。实际上在选购GPU产品时Nvidia和AMD并没有太大区别,齐全取决于用户的集体爱好。 继Nvidia公布的GTX 10系列推出一堆新产品后,AMD也以提供更实惠的价格与其竞争,并预计在不久的未来就会推出本人的高端图形解决方案。 通常状况下,此类科技厂商都会在高端产品上并行竞争和一较高下,此外Intel也在芯片中一直推动本人的图形解决方案,但用户通常还是会抉择A卡或N卡。 GPU工作 GPU目前已成为PC外部最弱小的组件之一,其性能大部分都来自于VRAM。 因为独立显卡应用的显示器内存独立于计算机内存,这些存储器模块容许疾速存储和接收数据,而不用再通过CPU路由到主板上插的内存。 尽管显卡内存与计算机内存类似,但却齐全不同,例如:反对DDR4内存的主板也可能会反对GDDR5 RAM的显卡。 显卡上的VRAM用于在卡上疾速存储和拜访数据,以及为显示器缓冲渲染帧。其还有助于升高影响屏幕上近似数据的「锯齿状边缘」以实现抗锯齿,使图像看起来更平滑。 GPU散热 要利用好GPU的原始设计效力必须有大量供电,大量用电就意味着大量发热。显卡(或处理器)产生的热量是以热设计功耗(或简称TDP)和瓦特为单位测量的。 但商家对产品的标称并不是间接所需的功耗值,例如新的GTX 1080标称为180W TDP等级,但这并不意味着它须要180W的功率。 之所以揭示大家关怀这个值是因为,具备较高TDP的GPU用到无限空气流动的紧凑空间中可能会导致散热问题。特地是对GPU超频的用户来说,须要有足够的冷却伎俩来解决减少的热量,能力让其稳固运行。 GPU术语 架构:GPU基于的平台(或技术)。个别由GPU厂商进行定义,如AMD 的Polaris架构。 显存带宽:它决定了GPU如何无效地利用可用的VRAM。显卡能够应用GDDR5内存,但如果没有无效地利用带宽依然会有瓶颈。 纹理填充率:指GPU在单位工夫内所能解决的纹理贴图的数量,单位是MTexels/S,由内核时钟乘以可用纹理映射单元(TMU)确定。 内核/处理器:显卡上可用的并行内核(或处理器)数。 外围时钟:与CPU的时钟速率相似,通常该值越高GPU则可能更快地工作。 SLI/CrossFire:SLI和CrossFire别离是Nvidia和AMD应用的技术,它们容许用户装置多块GPU卡并协同工作。 显卡解决图形问题和其余工作的泛滥外围都是专门设计的,弱小的显卡和GPU能够为游戏提供更高的保真度和分辨率,尽管它比CPU更弱小,但理论只能用于特定的应用程序。

April 11, 2022 · 1 min · jiezi

关于深度学习:低至6折这个GPU云服务器租用平台便宜又好用

GPU服务器,简略地说,指的是GPU的利用于视频编解码、深度学习、科学计算等多种场景的疾速、稳固、弹性的计算服务,咱们提供和规范云服务器统一的治理形式。 杰出的图形处理能力和高性能计算能力提供极致计算性能,无效解放计算压力,晋升产品的计算解决效率与竞争力。 GPU服务器有两个益处: 一、深度学习模型 应用GPU服务器为机器学习提供训练或者预测,作为深度学习训练的平台。 应用GPU服务器作为简略深度学习训练零碎,帮忙实现根本的深度学习模型。 二、简单的深度学习模型 GPU服务器作为深度学习训练的平台。联合云服务器 CVM提供的计算服务、对象存储。 现在,人们在工作的时候或者是深度学习的时候,都会抉择一GPU租赁的形式去达到本人的目的性。 深度学习,永远离不开“GPU”跑模型。 对于深度学习服务器,不少人都会遇到以下3个常见的问题: 1、算力不够 2、价格较贵 3、搭建深度学习环境麻烦 相对而言,GPU 云服务器还是比拟贵的,那么,如何抉择一款高性价比的GPU租赁平台? Finovy Cloud是行内高性价比的GPU算力平台,具备自建渲染农场,总 GPU 数量2000+,提供香港及中国边疆的渲染农场,反对渲染及深度学习应用场景,配套支流的软件,模板,集群性能,疾速晋升算力。 渲巨匠GPU算力平台能够减速您的AI深度学习、高性能计算、渲染测绘、云游戏、元宇宙等利用。高性价比,高稳定性,疾速部署,弹性租用,7x24技术支持,满足您所需。减速您的AI深度。 在Finovy Cloud上间接搭建深度学习开发环境进行训练,不仅平价还很好用。 近期,Finovy Cloud刚好处于机房扩容优惠,GPU 服务器 正在进行6折促销: 显卡RTX 3060 : 显卡RTX 3060Ti : 显卡RTX 3080 : 这次Finovy Cloud推出全新的三大显卡促销优惠,不仅性价比高,免费形式也很人性化,弹性算费,甚至能够按分钟、小时计算,关机/迁徙也不免费、定时关机、升降配、反对套餐转换等,大大晋升了实例操作的自由度。 另外,Finovy Cloud的GPU服务器租赁有几个劣势: 自有机房,超多算力多GPU渲染影视、动画、修建等多种场景可远程桌面,操作简略收费千兆网盘 如您想要理解具体的GPU租赁服务流程,欢送私信或留言,一起沟通交流。

April 8, 2022 · 1 min · jiezi

关于深度学习:基于深度学习的日志异常检测

云智慧 AIOps 社区是由云智慧发动,针对运维业务场景,提供算法、算力、数据集整体的服务体系及智能运维业务场景的解决方案交换社区。该社区致力于流传 AIOps 技术,旨在与各行业客户、用户、研究者和开发者们独特解决智能运维行业技术难题,推动 AIOps 技术在企业中落地,建设衰弱共赢的AIOps 开发者生态。前言学术论坛第一期,咱们便有幸邀请到了北大在读博士生, 云智慧智能研究院 算法钻研实习生黄同学作为主讲人,为咱们带来其对深度学习在日志异样检测畛域利用的了解,并分享了最新发表的论文, 上面让咱们一起来围观吧~ 异样检测异样检测分很多方向,包含视频异样检测、医疗异样检测等。异样检测在泛滥畛域都失去了的广泛应用。比方基于CV的异样检测,能够检测是否是恶性肿瘤。云智慧智能研究院次要在工夫序列异样检测、调用链异样检测与日志异样检测三个方向进行钻研。 指标的异样检测指标的异样检测分为业务指标异样检测与技术指标异样检测。工作指标就是与业务相干的指标,比方网站的浏览量,访问量,商品的购买量等都属于业务指标。技术指标次要包含电脑、服务器等设施的CPU使用率,内存的应用状况等。指标异样就是指业务指标或技术指标在短时间内产生突增的景象,比方一个网站的浏览量从每天大略500次访客,突增为10000次;物理内存产生突增等。而对指标异样的检测的次要就是对异样指标的检测。 调用链异样检测艰深来说当登录QQ时,点击登陆按钮当前,零碎就会去前端调用服务器,服务器又会去调用数据库,而后数据库收到调用指令后会对明码进行一个查看。所以整个登陆流程就是一个采纳request的一个调用关系,也就是调用链。而调用链的异样,能够分为两类,一类是构造异样,一类是内容异样。当在调用过程中,如果通常状况下是A调用C,C调用D的调用关系,然而忽然有一天A不去调用C而是间接调用了D,那就可能是C这个服务器产生了异样导致A没法调用,只能间接调用D。这种状况下咱们认为是调用链的调用构造产生异样。 内容异样就是通常状况下A调用C的响应工夫是5秒,比方有一天咱们发现A调用C的响应工夫破费了1min,那可能就是C的调用内容与平常不一样也就是产生了调用内容上的异样。 日志异样检测日志数据,属于半结构化的数据。因为日志数据的数据量十分微小,因而一旦产生日志异样,运维人员在大量的日志数据中查找异样就是一个工作量十分微小并且耗费老本的工作,因而将人工智能引入到日志异样检测中来缩小运维人员的工作量。 日志异样检测的特点日志异样检测首要的一个特点就是异样。 异样肯定绝对于失常来说,因而绝对于失常的样本数量而言,异样的数据样本是非常少的。那么在进行异样检测的过程中,如何对这些数据进行解决就是面临的一个比拟大的挑战。第二个特点就是对于日志而言,不同的零碎产生的日志格局不同。比方下图中HDFS的日志数据的第一项不是日期,然而Hadoop的第一项就是日期。因日志数据格式不同,在咱们想用一套比拟好的算法,对立地去解决一系列的问题时,就会面临肯定的挑战。第三个特点就是日志其实是一个半结构化的数据,同时还蕴含一些参数。如下图Apache日志样例数据的第三排和第四排,其实这两条日志数据是想表白同样的内容,只是参数数据不一样。尽管咱们读起来很容易,然而对于人工智能来说,电脑没有方法那么聪慧地去辨认,它十分可能会把这两条日志认为是齐全不一样的两个日志。所以如何解决这样的具备半结构化特色且参数不一样的数据,就成了日志异样检测所面临的一大问题。 日志解析因为日志异样检测具备上述特点,所以在日志异样检测之前咱们会有一个环节叫做日志解析。日志解析的目标就是把半结构化的数据处理为成结构化的,同时将参数提取进去。这时即便两条日志的参数不同,然而当把它都用星号来代替的时候他们就是一样的。咱们把这种“event template”称之为日志模板,最终人工智能就是对这个日志模板进行解决,电脑或者算法就能够辨认出哪些数据是同一类的。几十万条日志数据在通过日志解析后,就被对立成了几十条或者是几百条的日志模板,再通过辨认最终的日志模板的一个语义信息就能够明确日志的内容。 日志异样检测的办法传统办法:传统的日志异样检测次要有基于统计特色、基于关键词、基于聚类的办法。 基于统计特色的办法:当进行日志异样检测时,咱们能够采纳统计窗口日志数量的办法进行异样检测。比方能够将工夫窗口设定为10s,咱们如何判断在10s有没有产生异样呢?失常的状况下,假如咱们每10秒钟产生的日志的数量都是五条六条的数据量。然而忽然有一个10s,产生了十五条的日志。那就跟之前的那个日志数量相比,就是一个突增的异常现象,这时能够了解为异样导致日志零碎一直的提醒报错。这种异样就是一种简略的基于统计特色的异样检测办法。<!----> 基于关键词的异样检测:日志数据自身蕴含相干的语义信息,例如"error"和"failure"。当日志中呈现了这种关键词,咱们就把这种词汇提取进去,这样就能够捕获日志异样的一些信息。<!----> 基于聚类的异样检测:日志数据的日志信息都有肯定的特色,将一些类似的特色汇集在一起,而后分为几个类。比如说50万条日志信息,依据它特色的类似度,把它分成四个类:A类、B类、C类与D类。当呈现一条新的日志数据,我发现它不属于ABCD四类中的任一类。此时就认为这条日志数据为异样数据。深度学习办法:目前基于深度学习进行日志异样检测,从钻研方向上次要是有三种:基于监督学习、基于半监督学习与基于无监督学习的日志异样检测。当然在深度学习中还有强化学习,然而在日志异样检测畛域,强化学习的利用还没有失去一个宽泛的认可。 人工智能的利用面十分宽泛。深度学习只是人工智能蕴含的机器学习分支下的一个小分支。除此之外人工智能还蕴含很多别的分支,例如布局安顿,利用案例如滴滴打车,基于乘客和泛滥司机以后的地位,给乘客匹配哪辆车是最好的?其实人工智能在1950年左右就曾经开始被钻研了,然而那个时候的人工智能还尚未被市场认可,相干研究者广泛都找不到适合工作。随着咱们的计算资源和互联网数据呈几何式的增长,机器学习与深度学习迎来了它的春天。近些年来深度学习深刻到咱们生存中的方方面面,深度学习利用的钻研也是越来越火。 深度学习次要是蕴含三类:监督学习、半监督学习和非监督学习。其中最简略的是监督学习。 监督学习。对于每一个"log sequence"而言会有很多日志message。为了失去一个"log sequence",通常会有很多种办法,其中一种就是依照工夫窗口划分来失去"log sequence",比方10s一个距离就是把10s距离内产生的所有日志都归于一个"log sequence"。监督学习艰深点来说训练模型就像在做已有标准答案的试卷,日志数据能够比做训练时的题目,标签就是它的参考答案。咱们将通过做完题目当前一直跟标准答案进行比对,从而一直进步本人做题的程度和能力。而测试集就像对训练后果的阶段性成绩检测,相似于考试的办法去评判模型训练后果的好坏。这就是监督学习的一个次要的思维。<!----> 半监督学习。指的是咱们平时练习的材料中有一部分试题没有标准答案,一部分试题是有标准答案的。而没有参考答案的那些试卷的,也是蕴含常识信息,可能在进行真正考试的时候获得更好的问题。那么如何充分利用这些没有答案的练习试卷进行训练,就是半监督学习摸索的重点。<!----> 无监督学习。训练集没有标签,是学习材料只提供试题但没有标准答案的训练方法。就像老师在期末考试前会给同学发今年的试题,但这些试题没有答案。这个时候对于同学们而言这个试卷也不是齐全没有用,能够通过今年试卷题目捕获试卷的一些出题特点,从而应酬接下来的考试。这就是无监督学习的次要思维。 论文分享这篇论文是基于监督学习的深度学习提出的一种异样检测算法,创立了基于注意力机制的端到端深度模型Translog,用自然语言语料库对该模型进行了预训练,使其能够取得更好的语义嵌入向量,同时采纳编解码充沛捕捉日志模板的语义信息。 Translog模型的框架如下图所示,它首先通过日志解析的形式将所有的原始日志数据解析为相应的日志模板,这些日志模板再通过一个编码器,将日志模板中的语义信息充沛捕获,最初通过解码器输入后果"0"或者是"1","0"代表是日志数据是失常的,"1"代表是异样的,实质上是一个二分类的工作。 该模型的一个翻新点是编码器,编码器的工作原理如下图所示,encoder中 s1 代表一个日志模版,每个"log key sequence"有很多日志模板,咱们以"log key sequence"为输出单元。日志原始数据首先会通过一个预嵌入层,提取日志语义的程序信息,而后通过注意力模块、Residual模块和Layer Normalization模块。注意力模块次要检测日志中哪个语义日志模板对日志异样检测的贡献度高。Residual模块和 Layer Normalization 模块则是进一步对日志数据进行规范化,最初通过对这三个模块后果的屡次叠加,失去日志语义信息。那么日志原始数据通过编码器对日志语义信息进行编码后,就会失去"0"或者是"1"的输入后果。 为了验证模型的训练成果,别离在BGL、HDFS和 OpenStack三个实在的数据集上对模型进行试验,试验结果显示Translog模型在精确度、召回率和 F1 分数三个不同的一个指标上,都达到了一个比拟好的成果。 写在最初近年来,在AIOps畛域疾速倒退的背景下,IT工具、平台能力、解决方案、AI场景及可用数据集的迫切需要在各行业爆发。基于此,云智慧在2021年8月公布了AIOps社区, 旨在树起一面开源旗号,为各行业客户、用户、研究者和开发者们构建沉闷的用户及开发者社区,独特奉献及解决行业难题、促成该畛域技术倒退。 社区先后 开源 了数据可视化编排平台-FlyFish、运维治理平台 OMP 、云服务治理平台-摩尔平台、 Hours 算法等产品。 可视化编排平台-FlyFish: 我的项目介绍:https://www.cloudwise.ai/flyF... Github地址: https://github.com/CloudWise-... Gitee地址: https://gitee.com/CloudWise/f... ...

April 8, 2022 · 1 min · jiezi

关于深度学习:分享回顾-基于深度学习的神经语义搜索

 本文内容次要分为以下四局部: 神经搜寻的背景及劣势一、什么是神经搜寻? 神经搜寻 (Neural Search) 由 Jina AI 独创,能够了解为 Deep Learning for Search 的简称,是指借助深度学习技术,应用非结构化数据,搜寻非构造数据。 神经搜寻包含两个重要局部:信息搜寻及深度学习技术。 1、神经搜寻之信息搜寻提到搜寻,最直观的了解就是 Google、百度、Amazon 网站首页上的搜寻框,用户在搜寻框里输出关键词,搜寻零碎给用户返回和关键词匹配的相干内容。 实际上搜寻不仅仅是咱们当初看到的交互页面,它还包含其余场景,例如用搜寻实现一个聊天机器人,用户问一双鞋的格,聊天机器人返回一些相干信息。 搜寻的输出也能够是 PDF 文档,返回也是 PDF。PDF 里蕴含的信息不是简略的关键字,而是大段文本。相似的搜寻问题用传统搜寻办法难以解决。 此外还有听歌识谱,搜寻的输出是音乐片段,返回跟它最类似的音乐。或者输出一个对于足球的短视频,搜寻到和足球相干的短视频片段。 同样也能够输出一双鞋的图片,返回和这张图片类似的商品。如淘宝淘立拍,用户在手机上拍一张商品照片,能够间接从淘宝找到商品的链接信息。 应用神经搜寻技术,上述比较复杂的搜寻场景,就比拟容易实现。 上文中提到的图片、音频、视频、3D 模型等,都是非构造数据。与非结构化数据绝对应的,是结构化数据。 结构化数据:以罕用的数据库为代表,所有信息都是定义好的,能够间接进行疾速搜寻。 比拟常见的是以关系数据库为代表的数据,或 Excel 里所有值的含意都是定义好的,能够间接用 SQL 语句搜寻。 非结构化数据:没有明确定义好的、可供搜寻的结构化信息。 例如给定一张图片,在计算机中它表白的只是一个三通道的 RGB 数值,计算机无法了解这张图片外面蕴含的具体信息——它外面蕴含的是猫是狗,还是风光?它只是计算机中的数字而已,不能间接对非结构化数据进行搜寻。 2、神经搜寻之深度学习技术 利用深度学习技术,能够实现非结构化数据的搜寻。例如给定非结构化数据,借助深度神经网络模型,对非结构化数据进行转换,例如辨认图片的文字描述,或离散的文字标签。 借助深度神经网络,能够对图片进行特征提取。这个特色是一些浮点数组,外面次要应用的办法,是借助神经网络提取非结构化数据的要害特色,而后基于这个特色(结构化数据),采纳搜索算法进行搜寻辨认。 把非结构化数据转换成文字,也能够通过传统的文字搜寻技术,对视频音频进行检索。 转化成文字的办法存在人造劣势,咱们很难用文字齐全笼罩或表白出原始数据里表白的信息。例如给定一张图片,能够间接对图片类别打标签,如果图片上是一只狗,然而可能还蕴含一些详细信息,如狗的色彩、种类、年龄等,这些信息都很难用一段文字齐全表达出来。 咱们比拟推崇间接采纳要害特色的形式解决这种问题,因为如果把非结构化数据转换成一些特色,那么它的搜寻问题,就转变成了语义特色类似的搜寻问题。 给定一些猫猫狗狗的照片,对每个照片外面的猫猫狗狗做特色的二维形容。横轴是品种(是猫还是狗),代表像猫/狗的水平。纵轴示意可恶水平。每个图片都能够由二维特色来表白,每张图片都能够被表白成这个空间中的一个点。 如果搜寻一张小白狗的图片,如何搜寻最类似的一张狗的图片?咱们先形容小白狗的特色,它的特征值可能落到某个地位,而后通过找到它的最近邻来找到跟小白狗最类似的一张图片。 二、神经搜寻的劣势 传统的文本搜寻(右)给定一个关键词,对关键词的解决蕴含正则化、分词、找词根拼写错误查看、辨认实体类型、进行消歧等多个步骤,例如断定用户输出苹果,想搜的是水果还是手机 搜寻后果齐全依据特征向量与相关度来决定,只有特征向量提取的足够好,就能够通过特征向量之间的类似度,找到和它类似度最高的相干文档。不再局限于文本检索,所有能够向量化的物品,都能够通过神经搜寻计划实现搜寻,例如图片、视频甚至 3D 模型、音频等。只有神经网络能够提取特色,就能够用这样的技术实现简单类型数据的搜寻。更容易集成最新的深度学习算法和技术,提供丰盛的语义特色。神经搜寻的关键技术 神经搜寻过程:给定简单的非结构化数据神经网络对这些数据进行剖析提取要害特色,并存到数据库或索引里利用向量搜寻找到最类似的向量,返回给用户作为最终搜寻后果。 这里最重要的两个局部就是深度学习模型和向量搜寻这两个关键技术。 ...

April 7, 2022 · 2 min · jiezi

关于深度学习:最全讲解GPU技术架构知识

GPU的起源 GPU缩写为Graphics Processing Unit的,个别称为视觉处理单元。 GPU被宽泛用于嵌入式零碎、移动电话、个人电脑、工作站和电子游戏解决方案当中。 古代的GPU对图像和图形处理是非常高效率的,这是因为GPU被设计为很高的并行架构这样使得比通用处理器CPU在大的数据块并行处理算法上更具备劣势。 1985年 8月20日 ATi公司成立,同年10月ATi应用ASIC技术开发出了第一款图形芯片和图形卡,1992年 4月 ATi公布了 Mach32 图形卡集成了图形减速性能,1998年 4月 ATi被IDC评比为图形芯片工业的市场领导者,但那时候这种芯片还没有GPU的名称,很长的一段时间ATI都是把图形处理器称为VPU,直到AMD收买ATI之后其图形芯片才正式采纳GPU的名字。 NVIDIA公司在1999年公布GeForce 256图形处理芯片时首先提出GPU的概念。 从此NVIDIA显卡的芯片就用这个新名字GPU来称说。GPU使显卡削减了对CPU的依赖,并执行局部本来CPU的工作,尤其是在3D图形处理时。 GPU所采纳的核心技术有钢体T&L、立方环境材质贴图与顶点混合、纹理压缩及凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬体T&L技术可能说是GPU的标记。 对于GPU必须晓得的基本知识 图形处理单元(或简称GPU)会负责解决从PC外部传送到所连贯显示器的所有内容,无论你在玩游戏、编辑视频或只是盯着桌面的壁纸,所有显示器中显示的图像都是由GPU进行渲染的。 对普通用户来说,实际上不须要独立显卡就能够向显示器「提供」内容。像笔记本电脑或平板用户,通常CPU芯片都会集成GPU内核,也就是大家熟称的「核显」,这样就能够为对显示要求不高的低功耗设施提供更好的性价比。 正因如此,局部笔记本电脑、平板电脑和某些PC用户来说,要想将其图形处理器降级到更高级别也很艰难,甚至不太可能。 这就会导致游戏(和视频编辑等)性能不佳,只能将图形品质设置升高能力工作。对此类用户而言,只有在主板反对和闲暇空间足够的状况下,增加新显卡才可能把(游戏)显示体验进步到一个新的程度。 GPU工作流程 GPU目前已成为PC外部最弱小的组件之一,其性能大部分都来自于VRAM。因为独立显卡应用的显示内存独立于计算机内存,这些存储器模块容许疾速存储和接收数据,而不用再通过CPU路由到主板上插的内存。 尽管显卡内存与计算机内存类似,但却齐全不同,例如:反对DDR4内存的主板也可能会反对GDDR5 RAM的显卡。显卡上的VRAM用于在卡上疾速存储和拜访数据,以及为显示器缓冲渲染帧。其还有助于升高影响屏幕上近似数据的「锯齿状边缘」以实现抗锯齿,使图像看起来更平滑。 顶点解决:这阶段GPU读取形容3D图形外观的顶点数据并依据顶点数据确定3D图形的形态及地位关系,建设起3D图形的骨架。在反对DX8和DX9规格的GPU中,这些工作由硬件实现的VertexShader(定点着色器)实现。 光栅化计算:显示器理论显示的图像是由像素组成的,咱们须要将下面生成的图形上的点和线通过肯定的算法转换到相应的像素点。把一个矢量图形转换为一系列像素点的过程就称为光栅化。例如,一条数学示意的斜线段,最终被转化成阶梯状的间断像素点。 纹理帖图:顶点单元生成的多边形只形成了3D物体的轮廓,而纹理映射(texturemapping)工作实现对多变形外表的帖图,艰深的说,就是将多边形的外表贴上相应的图片,从而生成“实在”的图形。TMU(Texturemapping unit)即是用来实现此项工作。 像素解决:这阶段(在对每个像素进行光栅化解决期间)GPU实现对像素的计算和解决,从而确定每个像素的最终属性。在反对DX8和DX9规格的GPU中,这些工作由硬件实现的Pixel Shader(像素着色器)实现最终输入,由ROP(光栅化引擎)最终实现像素的输入,1帧渲染结束后,被送到显存帧缓冲区。 GPU散热 要利用好GPU的原始设计效力必须有大量供电,大量用电就意味着大量发热。显卡(或处理器)产生的热量是以热设计功耗(或简称TDP)和瓦特为单位测量的。但商家对产品的标称并不是间接所需的功耗值,例如新的GTX 1080标称为180W TDP等级,但这并不意味着它须要180W的功率。 之所以揭示大家关怀这个值是因为,具备较高TDP的GPU用到无限空气流动的紧凑空间中可能会导致散热问题。特地是对GPU超频的用户来说,须要有足够的冷却伎俩来解决减少的热量,能力让其稳固运行。 GPU术语 架构:GPU基于的平台(或技术)。个别由GPU厂商进行定义,如AMD 的Polaris架构。 显存带宽:它决定了GPU如何无效地利用可用的VRAM。显卡能够应用GDDR5内存,但如果没有无效地利用带宽依然会有瓶颈。 纹理填充率:指GPU在单位工夫内所能解决的纹理贴图的数量,单位是MTexels/S,由内核时钟乘以可用纹理映射单元(TMU)确定。 内核/处理器:显卡上可用的并行内核(或处理器)数。 外围时钟:与CPU的时钟速率相似,通常该值越高GPU则可能更快地工作。 SLI/CrossFire:SLI和CrossFire别离是Nvidia和AMD应用的技术,它们容许用户装置多块GPU卡并协同工作。 显卡解决图形问题和其余工作的泛滥外围都是专门设计的,弱小的显卡和GPU能够为游戏提供更高的保真度和分辨率,尽管它比CPU更弱小,但理论只能用于特定的应用程序。

April 7, 2022 · 1 min · jiezi

关于深度学习:盘点GPU三大应用市场

一、游戏渲染场景,对GPU需要旺盛 IDC数据显示,2020年游戏PC和显示器的出货量同比增长26.8%,达到5500万台。游戏笔记本电脑在2020年增长了创纪录的26.9%。与PC并行,游戏显示器在2020年也达到了新的高度,与2019年相比增长了77%以上,出货量达到了1430万台。 IDC预计2021年游戏显示器的销量将首次超过游戏台式机。即便游戏台式机逐步受到青眼,游戏笔记本电脑的显示器连贯率一直进步也意味着游戏监控器市场的五年复合年增长率预计将超过10%。IDC预计2025年寰球销量达到7290万,复合年增长率为5.8%。 游戏绘图是GPU的传统应用领域,为游戏开发者提供电影级画质的实时渲染;GPU并行计算的根底构造、能够执行海量数据计算;GPU访存速度快;GPU领有更高的浮点运算能力,对图形与媒体加工速度快; 挪动端AI芯片市场不止于智能手机,潜在市场还包含:智能手环/手表、VR/AR眼镜等市场。 在边缘计算场景,AI芯片次要承当推断工作,通过将终端设备上的传感器(麦克风阵列、摄像头等)收集的数据代入训练好的模型推理得出推断后果。因为边缘侧场景多种多样、各不相同,对于计算硬件的考量也不尽相同,对于算力和能耗等性能需求也有大有小。因而利用于边缘侧的计算芯片须要针对非凡场景进行针对性设计以实现最优的解决方案。 安防摄像头倒退经验了由模仿向数字化、数字化高清到当初的数字化智能方向的倒退,最新的智能摄像头除了实现简略的录、存性能外,还能够实现结构化图像数据分析。安防摄像头一天可产生20GB数据,若将全副数据回传到云数据中心将会对网络带宽和数据中心资源造成极大占用。 通过在摄像头终端、网络边缘侧加装AI芯片,实现对摄像头数据的本地化实时处理,通过结构化解决、要害信息提取,仅将带有要害信息的数据回传前方,将会大大降低网络传输带宽压力。 以后支流解决方案分为:前端摄像头设施内集成AI芯片和在边缘侧采取智能服务器级产品。 前端芯片在设计上须要均衡面积、功耗、老本、可靠性等问题,最好采取低功耗、低成本解决方案;边缘侧限度更少,能够采取可能进行更大规模数据处理工作的服务器级产品。 二、云端GPU应用 人工智能服务器通常搭载GPU、FPGA、ASIC等减速芯片,利用CPU与减速芯片的组合能够满足高吞吐量互联的需要,为自然语言解决、计算机视觉、语音交互等人工智能利用场景提供弱小的算力反对,曾经成为人工智能倒退的重要撑持力量相比于传统CPU服务器,在提供雷同算力状况下,GPU服务器在老本、空间占用和能耗别离为传统计划的1/8、1/15和1/8。 以后在云端场景下被最广泛应用的AI芯片是英伟达的GPU,次要起因是:弱小的并行计算能力(相比CPU)、通用性以及成熟的开发环境。2020年寰球AI服务器市场规模为122亿美元,预计到2025年寰球AI智能服务器市场将达到288亿美元,5年CAGR达到18.8%。 在AI开发中,因为深度学习模型开发及部署须要弱小算力反对,须要专用的芯片及服务器反对。开发者如抉择自购AI服务器老本过高。通过云服务模式,采取按需租用超算核心计算资源可极大升高我的项目期初资本投入同时也省却了我的项目开发期间的硬件运维费用,实现资本配置效率的最大化晋升。 寰球主动驾驶迈入商用阶段,将来可期。IDC最新公布的《寰球主动驾驶汽车预测报告(2020-2024)》数据显示,2024年寰球L1-L5级主动驾驶汽车出货量预计将达到约5425万辆,2020至2024年的年均复合增长率(CAGR)达到18.3%;L1和L2级主动驾驶在2024年的市场份额预计别离为64.4%和34.0%。只管目前L3-L5级主动驾驶技术的利用具备开拓性意义,L1-L2级主动驾驶将仍然是将来5年内带动寰球主动驾驶汽车出货量增长的最大细分市场。 我国汽车市场规模一直增长,主动驾驶由L2向L3过渡。中汽协数据显示,2021年1-3月,中国品牌乘用车共销售210.8万辆,同比增长81.5%,占乘用车销售总量的41.5%,占有率比上年同期晋升1.4个百分点。2020年1月份至9月份,L2级智能网联乘用车销售量达196万辆,占乘用车总销量的14.7%。 更有局部企业减速研发L3级主动驾驶车型,多地发展主动泊车、主动驾驶公交车、无人智能重卡等方面的示范利用。到2025年,我国PA(局部主动驾驶)、CA(有条件主动驾驶)级智能网联汽车销量占当年汽车总销量比例超过50%,C-V2X(以蜂窝通信为根底的挪动车联网)终端新车拆卸率达50%。 随着传感器、车载处理器等产品的进一步欠缺,将会有更多L3级车型呈现。而L4、L5级主动驾驶预计将会率先在关闭园区中的商用车平台上实现利用落地,更宽泛的乘用车平台高级别主动驾驶,须要随同着技术、政策、基础设施建设的进一步欠缺,预计至多在2025年~2030年当前才会呈现在个别路线上。 感知门路,短时解决海量数据。行车过程中依赖雷达等传感器对情理信息进行采集后,处理器每秒需实时数据解析几G量级数据,每秒能够产生超过1G的数据。对处理器的计算量要求较高。 主动布局,刹时反馈保障平安。解决剖析实时数据后,须要在毫秒的工夫精度下对行车门路、车速进行布局,保障行车过程平安,对处理器的计算速度要求较高。 兼具技术老本劣势,GPU为主动驾驶畛域支流。 目前汽车电子控制系统是分布式ECU架构,不同的信息娱乐、车身、车辆静止和能源总成零碎及其细分性能别离由不同独立的ECU单元进行独立管制,局部低档车型上的ECU数量超过100个。 将来,汽车电子操控零碎将会进一步向着集中化、软硬件解耦及平台化方向倒退,汽车将会由对立的超算平台对传感器数据进行解决、交融、决策最终实现高级别的主动驾驶性能。 三、海内GPU巨头Nvidia Nvidia:四大产品线平台,游戏业务和,数据中心业务快速增长 游戏业务:GeForceGPU、云游戏平台及相干产品设施;数据中心:包含Telsa系列的GPU产品、EGX&HGX&DGX终端产品为数据中心加速器、边缘计算、AI计算数据中心服务器GraceCPU;DPU:收买Mellanox,踊跃布局数据中心存储、传输DPU;业余显示:Quadro业余绘图工作站、RTX图形处理器、vGPU软件;汽车:DRIVEAGX为主动驾驶工作平台。Q3FY2022英伟达第三季度营收达71.03亿美元,同比增长50%。净利润为24.64亿0%美元,同比增长84%。其中游戏业务收入达32.2亿美元,较去年同期增长42%;数据中心业务收入为29.4亿美元,同比增长55%。业余可视化业务收入达5.77亿美元,同比增长144%;主动驾驶业务收入达1.35亿美元,同比增长8%。 Nvidia:GPU架构每,两年降级一次 Nvidia:推出CUDA软件堆栈,建设软硬件一体化生态 GPU通用计算方面的规范目前有OpenCL、CUDA、AMDAPP、DirectCompute。其中OpenCL、DirectCompute、AMDAPP(基于开放型规范OpenCL开发)是凋谢规范,CUDA是公有规范。 2006年,公司推出CUDA软件推展,推动GPU向通用计算转变,之后一直强化通用零碎生态构建。为开发者提供了丰盛的开发软件站SDK、反对现有的大部分机器学习、深度学习开发框架。推出的cuDNN、TensorRT、DeepStream等优化的软件也为GPU通用计算提供减速。 Nvidia:强劲的游戏业务提供,稳固现金流 数据中心次要产品为Tesla系列。通过将不同类型的GPU加速器与CPU、DDR等硬件产品组合以及软件开发,推出面向高性能计算HPC、人工智能DGX、边缘计算EGX等硬件产品。 软件产品NGC用于GPU减速的云平台服务,减速应用深度学习框架;虚构GPU次要用于在虚拟机上经营AI、深度学习和高性能计算。 Nvidia:数据中心业务继续,快速增长 2020年4月,Nvidia70亿美元实现对Mellanox的收买。造成NvidiaGPU+MellanoxRDMA+NvidiaCUDA整体解决方案,提供从人工智能计算到网络的端到端技术全堆栈产品。 受害于市场对公司新一代安培架构产品的需要,同时对话式AI、举荐零碎等上游场景的训练模型部署的增多。22财年Q3,公司数据中心业务收入为29.4亿美元,同比增长55%。 Nvidia:提供CPU+GPU+DPU,整体计划 交融了Mellanox的计算推了DPU的产品。BlueFieldDPU通过分流、减速和隔离各种高级网络、存储和平安服务,为云、数据中心或边缘等环境中的各种工作负载提供平安的减速基础设施。BlueFieldDPU将计算能力、数据中心根底性能的可编程性及高性能网络相结合,可实现十分高的工作负载。 GPC2021年推出了基于ARM架构的面向服务器市场的CPU,用于大型计算中心或者超级计算机等场景中,通过Nvlink实现CPU、GPU之间的大带宽链接和交互。将来数据中心将具备GPU+CPU+DPU整体解决方案。 Nvidia:主动驾驶业务,步入收获期 公司造成了分层解耦、全栈式的主动驾驶计划。同时推出了主动驾驶配套的仿真零碎、底层开发平台、服务平台解决方案、主动驾驶性能计划和人机替换计划等,笼罩了硬件+软件的一体化解决方案,放慢上游客户主动驾驶计算的测试与开发。 Q3FY22汽车业务收入为1.35亿美元,同比增长8%,环比降落11%。环比降落次要是受到汽车供应链缓和限度。 Nvidia:笼罩L2/5主动驾驶,利用场景 公司累计公布了7款主动驾驶芯片:TegraX1、TegraParker、TegraXavier、DriverXavier、DriveAGXOrin、Orin、Atlan等。 公司公布8款主动驾驶计算平台,包含DriverPX、DriverPX2、DriverPXXavier、DriverPXPegasus、DriverAGXXavier、DriberAGXPegasus、DriveOrin、PagasusRobotaxi。 随着Xavier和Orin主动驾驶计算平台的公布,公司新增笼罩L2/3级别的主动驾驶利用场景,目前曾经笼罩L2-L5级的主动驾驶的利用场景。 Nvidia:大算力芯片+计算平台+根底,软件构建主动驾驶平台 GTC2019推出NVIDIADRIVEAGXOrin,集成了170亿个晶体管并应用新的NVIDIAGPU和12核ARMCPU,性能是上一代Xavier的7倍,将于2022年投入量产。 DRIVEAGXOrin能够为从L2到L5的全自动驾驶开发提供兼容的架构平台。2021年4月13日公布最新一代超算力芯片Atlan,单芯片算力达1,000TOPS,可满足L5需要,预计2023年提供样品。 领有齐备软件开发生态(操作系统DriveOS+中间件DriveWorks+软件堆栈DriveAV),工具链稳固,凋谢水平高。 Nvidia:欲收买Arm翻新,服务器芯片生态 Nvidia的GPU在数据中心和工作站中渲染图像和视频,Arm凭借Cortex系列产品为CPU设计了蓝图,领有Mali的GPU系列。 一旦收买整合胜利Arm后,Nvidia提供将Arm的CPU与其GPU技术集成的机会,创立一个生态系统的服务器芯片,除了数据中心还能够减速进入生产设施和汽车畛域,将在2023年提供2500亿美元的指标市场。 Nvidia:Omniverse,软硬件,技术的集大成者 Omniverse蕴含5个重要组件:OmniverseConnect、Nucleus、Kit、Simulation和RTX。这些组件连同所连贯的第三方数字内容创作(DCC)工具,以及所连贯的其余Omniverse微服务,独特组成整个Omniverse生态系统。 OmniverseNucleus:Nucleus是连贯不同位臵的用户,实现3D资产交互和场景描的数据库引擎。连贯当前,负责建模、布局、着色、动画、照明、特效或渲染工作的设计师,能够合作创立场景。Connect被作为插件散发,使客户端应用程序能够连贯到Nucleus。Kit是一个用于构建原生Omniverse利用和微服务的工具包。 起源:本文整顿【驭势资本】

April 6, 2022 · 1 min · jiezi

关于深度学习:多任务学习中的网络架构和梯度归一化

在计算机视觉中的单任务学习曾经获得了很大的胜利。然而许多事实世界的问题实质上是多模态的。例如为了提供个性化的内容,智能广告零碎应该可能辨认应用的用户并确定他们的性别和年龄,跟踪他们在看什么,等等。多任务学习(Multi-Task Learning, MTL)能够实现这样的零碎,其中一个模型在多个工作之间调配权重,并在一次正向传递中产生多个推理。 多任务学习中的优化因为有多个工作同时运行所以MTL 的优化过程与个别的单任务模型有所不同,为了防止一项或多项工作对网络权重产生主导影响,应该认真均衡所有工作的联结学习。这里介绍了一种思考工作均衡问题的办法。 MTL 问题中的优化指标能够表述为 这里‘wi’是特定工作的权重,‘Li’是特定的损失函数,应用随机梯度降落来最小化上述指标,共享层“Wsh”中的网络权重更新为: 当工作梯度发生冲突时,或者说当一个工作的梯度幅度远高于其余工作时,网络权重更新可能不是最优的。这就须要在损失中设置针对于不同工作的权重,这样能力保障梯度幅度在各个工作间的绝对均衡。 梯度归一化 有一种称为梯度归一化 (GradNorm)[1] 的优化办法,通过使不同工作的梯度具备类似大小来管制多任务网络训练的办法。这样能够激励网络以雷同的速度学习所有工作。在展现这种办法之前,咱们将介绍相干的符号。 这里也为每个工作 i 定义了不同的训练率: GradNorm 旨在在多任务网络的训练过程中均衡两个属性: 1、均衡梯度幅度:均匀梯度被用作基线,能够依据该基线计算作业之间的绝对梯度大小。 2、在学习不同工作的速度之间找到一个很好的平衡点:应用了loss变化率(inversetrainingrate), 工作 i 的梯度幅度应该随着绝对变化率的减少而减少,从而刺激工作更快地训练。GradNorm 通过缩小以下损失来实现这些指标。 其中 是已增加到方程中的附加超参数。 设置“恢复力”的强度,能够使工作复原到一个一般的训练速率。在工作复杂性大导致工作之间的学习动静差别大时,应应用更大的 值来确保更好的训练率均衡。当问题更加对称时,须要较低的 值。 试验 这里应用了 NYUv2 的两种变体数据集。将每个视频的翻转和附加帧增加到规范 NYUv2 数据集中。咱们额定增加了 90,000 张照片,每张照片都蕴含单目深度预计, 外表法线预计, 关键点定位。这些额定的帧没有分段标签。所以就取得两个数据集:NYUv2+seg 和 NYUv2+kpts。这里将穿插熵用于宰割,将平方损失用于深度预计,将余弦类似度用于法线预计。 上表中看到 GradNorm = 1.5 进步了所有三个工作绝对于等权基线的性能,并且超过或匹配每个工作的单个网络的最佳性能。 为了展现 GradNorm 如何在更大数据集的状况下执行,还在 NYUv2+kpts 数据集上进行了宽泛的试验。 只管训练损失更高了,但GradNorm 通过对网络进行速率均衡将深度预计的测试误差缩小5%。并最终将深度的权重克制到了低于 0.10,并且关键点的误差也呈现了通向的趋势,这就是网络正则化的显著趋势。 试验表明:对于各种网络架构例如回归和分类工作,与单任务网络、固定比例的基线和其余自适应多任务损失均衡技术相比,GradNorm 进步了准确性并缩小了跨多个工作的适度拟合。 深度多任务学习架构本节将探讨可能同时学习[2]多个工作的网络架构。咱们将关注两种类型的深层多任务架构:以编码器为核心的架构和以解码器为核心的架构。 以编码器为核心的架构在编码阶段共享工作特色,而后用一组独立的特定工作头解决它们。他们在一个解决周期中间接预测来自雷同输出的所有工作输入。 然而以编码器为核心的架构无奈捕获工作之间的共性和差别,最近的一些钻研工作发现:首先应用多任务网络来进行初始工作预测,而后利用这些初始预测的个性来进一步改良每个工作的输入。这些MTL办法也在解码阶段共享或替换信息,这里将它们称为以解码器为核心的体系结构。 ...

April 6, 2022 · 1 min · jiezi

关于深度学习:使用分布外数据去除不需要的特征贡献提高模型的稳健性

深度神经网络 (DNN) 曾经倒退到当初曾经能够在计算机视觉和自然语言解决等许多工作上体现十分杰出。而当初次要的钻研是如何训练这些 DNN 以进步其准确性。准确性的次要问题是神经网络极易受到对抗性扰动的影响。 例如上面的图片,增加噪声之前和之后的两张图像对咱们来说仿佛雷同。但对于神经网络来说,左边的图像是一个齐全不同的对象——熊猫。增加到图像中的噪声是一种对抗性扰动,咱们将试图通过使这些神经网络不易受扰动来解决这个问题的训练方法将被称为对抗性训练。 因为最近提出的应用未标记散布 (UID) 数据的数据加强办法,对抗性训练的不足训练数据的问题已被分解决了。然而它还存在一些毛病:不足可用性和对伪标签生成器准确性的依赖。 为了补救这些毛病并进步对抗性和规范学习的泛化能力,论文提出了一种应用散布外 (OOD) 数据的数据加强办法:散布外数据加强训练 (OAT)。 什么是反抗训练?为了了解为什么须要散布外数据加强训练来进步 DNN 的准确性和效率,首先要理解对抗性训练是什么以及为什么它很重要。 对抗性训练是指蕴含对抗性攻打图像作为其训练数据集的训练过程。对抗性训练的指标是让 DNN 更加强壮——让机器学习模型更不容易受到扰动的影响。 半监督学习办法 在反抗训练中须要比规范训练更多的数据集。所以仅应用标记数据是不够的,应用标记和未标记数据的混合指的就是半监督学习办法。 监督学习:仅应用标记数据作为其数据集半监督学习:应用一些标记数据和大量未标记数据作为其数据集无监督学习:仅应用未标记的数据作为其数据集 强壮和非强壮特色 因为人工智能的次要工作是模仿人类智能,因而图像识别过程也应该模仿人类。辨别强壮特色和非强壮特色是不可或缺的,这是图像中两种有用的特色。 强壮的特色:人类能够感知的特色;与图像标签密切相关。 非强壮特色:人类无奈感知的特色;与图像标签的相关性较弱。 曾经证实,对抗性健壮性和规范准确性之间存在衡量关系。对抗性训练试图通过使非强壮特色不用于图像分类来解决这个问题。 散布外数据分类器的算法应该可能辨认扰动(不寻常的样本、离群值)。这是因为 (1) 谬误分类这些扰动样本的可能性很高,(2) 谬误分类的置信度很高。 散布外 (OOD) 数据十分靠近失常数据——其中的大多数在人眼中看起来齐全一样。这些 OOD 数据可能靠近失常数据(作为含糊的、受到对抗性攻打的输出),甚至属于尚未呈现在训练数据的新类别。 为什么这是必不可少的?例如, DNN 通常用于进一步用于诊断和医治致命疾病的基因组序列细菌鉴定。在过来的几十年中发现了新的细菌类别,咱们心愿应用DNN 对这些细菌进行分类,然而具备高性能的分类器也可能谬误地将某种疾病分类为另一种疾病,因为它是 OOD 数据——来自一个分类器尚未经过训练分类的全新类别。 与下面提到与熊猫的图像不同,即便它们被谬误地分类也不会造成很大的问题,而基因组和细菌被谬误地分类会导致很大的问题,这种实在的需要显示了 OOD 检测的重要性。 散布外数据加强训练论文中提出了散布外加强训练(OAT),这是对指标数据集 D_t 和 OOD 数据集 D_o 的并集的训练。 OOD 数据集 散布外加强训练 OAT 算法是一种基于数据加强的强壮训练算法,训练通过精心设计的损失,从额定的 OOD 数据中受害。OOD 数据与随机标签一起提供给训练过程。 为所有 OOD 数据样本调配一个对立的散布标签。通过这个过程,能够利用 OOD 数据进行监督学习并且无需额定开销。这样使得 OOD 数据的限制性远低于未标记的散发中 (UID) 数据。 ...

April 5, 2022 · 2 min · jiezi

关于深度学习:PhysicsInformed-DeepONet-for-Nonlinear-PDEs一种学习无穷维空间映射的方法

Physics-Informed DeepONet for Nonlinear PDEs:一种学习无穷维空间映射的办法 深度学习在CV上大获胜利之后,也开始在更多的畛域攻城掠地,一直地挑战各种传统办法。神经网络展现出了弱小的魔力,可能克服传统算法的运行速度较慢的艰难,然而也的确相应的实践剖析和长期的实际验证。 简介 一般而言,传统的偏微分方程求解器次要依赖无限插法法、有限元办法和伪谱法等,二分类的话就是有网格和无网格办法。以迭代的办法近似求解偏微分方程,这类传统办法可能严格地给出误差上下界,准确给出算法复杂度。这些办法曾经相当成熟了,大部分比拟实用的办法曾经被集成在商业求解软件中了(这里插一句,当初国防工业中大量须要懂有限元办法的人才)。传统求解器的次要毛病就是计算量特地大,只有有参数发生变化,就须要进行反复且巨量的计算,速度很难满足实时计算的要求。 深度学习求解微分方程其实是随同着神经网路的倒退,1995年的时候就有人证实了对于任意的润滑、部分Lipschitz的常微分方程,都存在一个神经网络以任意迫近精度对该方程进行迫近。DeepONet就是连续了这个思路对间断非线性算子进行迫近。 这里还介绍一下什么是Physics Informed,这个概念我的了解就是将物理先验交融到神经网络架构中去,艰深一点来讲就是将偏微分方程的束缚退出到loss项中来。原始版本的DeepONet有个问题就是,数据驱动的形式不肯定可能满足偏微分方程的束缚。然而Physics Informed形式也存在问题,就是在loss项中,偏微分方程的束缚会使边界条件及初始条件的束缚很难被满足,也就是所说的违反因果性了。初始条件和边界条件是主导偏微分方程的解,然而Physics Informed往往会使偏微分方程的束缚被隐形满足,然而冲破了初始条件和边界条件的束缚,违反了因果性这一实质要求。对于Physics- informed machine learning这个主题能够参考陆路博士的综述 Karniadakis, George Em, et al. "Physics-informed machine learning." Nature Reviews Physics 3.6 (2021): 422-440. 我这里也给出两个比拟重要的图。这张图示意网络偏置的产生起因这张图代表了数据与物理先验的关系,也即当物理先验较简单时,数据的产生会比拟艰难,须要协调数据驱动与物理先验之间的关系。 次要思路和办法 先总结一下目前对于深度学习求解PDE的两种支流思路: 间接学习无穷维空间之间的映射,也就是说间接将初始条件映射到对应的时空条件下,也就说我实质上是用深度神经网络学习了一个无穷维映射算子,这种办法的益处就是十分间接暴力,然而如果训练样本不够多的话,对于处于散布之外的解泛华性能是存疑的。这种思路的次要代表性工作就是DeepONet和FNO(傅里叶算子神经网络);自回归办法,相似于传统办法,应用迭代的思路进行求解,在一个较小的工夫距离内应用神经网络学习到增量变动,而后在整个时空区域进行迭代推动,最终失去指定时空条件下的解,这一类办法的泛化性能比拟好,然而计算量绝对比拟大,次要起因是迭代的办法须要大量的反复计算。外面有一个问题,就是积攒的误差如何进行修改,这类办法的代表性工作就是基于GNN(图神经网络)求解器; 这里也给出我目前调研到的次要办法 深度神经网络,也即本文要探讨的DeepONet及其衍生的一些系列算法,这类算法就比拟间接好了解,也是一部分研究者次要钻研的办法;图神经网络,图神经网络也是借鉴了传统有限元办法,应用离散化的办法将空间域建模为图网络,联合神经网络进行节点更新,也就是求解,目前来说是消息传递机制、傅里叶算子神经网络比拟霍;多尺度神经网络,这算是深度神经网络的一个分支,次要想要解决的是长时间尺度和大空间域的求解问题。Physics-Informed DeepONet 这一部分给出次要技术细节,这一块其实是最简略的,上面给出次要的两篇参考文献: Lu, Lu, et al. "Learning nonlinear operators via DeepONet based on the universal approximation theorem of operators." Nature Machine Intelligence 3.3 (2021): 218-229.Wang, Sifan, Hanwen Wang, and Paris Perdikaris. "Learning the solution operator of parametric partial differential equations with physics-informed DeepONets." Science advances 7.40 (2021): eabi8605. DeepONet的次要思路就上面两个非线性算子实践: 定理一:假设\(\sigma\)是一个非多项式函数,\(X\)是一个Banach空间,\(K_{1} \subset X\),\(K_{2} \subset \mathbb{R}^{d}\)别离是\(X\)和\(\mathbb{R}^{d}\)上的紧集,\(V\)是\(C\left(K_{1}\right)\)上的紧集,\(G\)是一个将\(V\)映射到\(C\left(K_{2}\right)\)的间断非线性算子。那么对于任意\( \epsilon > 0\),存在正整数\(m\)、\(p\)和\(n\),常数\(c_i^k\)、\(\xi _{ij}^{k}\)、\(\theta _{i}^{k}\)、\(\zeta _k\in \mathbb{R}\)、\(w_k \in \mathbb{R} ^d\)、\(x_j\in K_1\)、\(i=1,...,n \),\(k=1,...,p\),\(j=1,...,m\)使得 ...

April 4, 2022 · 2 min · jiezi

关于深度学习:计算机视觉的半监督模型Noisy-student-Model和Temporal-Ensembling

明天我将探讨一些在过来十年中呈现的次要的半监督学习模型。首先让咱们谈谈什么是半监督学习以及咱们为什么对它感兴趣! 假如咱们有一个大的标记图像数据集。咱们想应用这些数据来构建一个模型,进行图像分类的工作,解决这个问题的规范办法是构建卷积神经网络 (CNN)。CNN 已被证实在应用大型数据集进行训练时能够提供最先进的后果。 上面就是一个十分重要的问题,如果咱们没有大型标记数据集怎么办?例如咱们工作中的分类与当初的预训练的数据集例如imagenet没有交加,或者说咱们解决的具体的畛域没有大量公共标记数据。这样,咱们标记数据通常就需是手工实现的——但这个过程很低廉,而且也很耗时。 这就是半监督的劣势,咱们正在构建一个生成标签作为输入的模型,然而如果咱们不须要人工手动标记所有数据,而是只须要标记其中的一小部分,而后将其留给模型来确定其余的标签应该是什么,这样能够吗?事实证明,这个想法十分无效,并且多年来曾经开发了许多相似的计划。咱们明天要探讨的计划是Noisy student, -Model,和Temporal Ensembling Noisy Student Model Noisy Student是2019 年由 Xie 等人提出的 。该模型的工作原理如下: 首先,在手动标记的图像子集上训练“老师”模型。论文中形容的老师模型应用了 EfficientNet 架构。老师模型通过最小化穿插熵损失进行训练,并用于为每个未标记的图像推断“伪标签”。这些伪标签能够是软标签或硬标签的模式保留。(软标签示意为间断散布,而硬标签是独热编码)。 接下来,应用手动标记和伪标记数据训练“学生”模型。通过数据加强(特地是 RandAugment)用于向输出增加噪声;dropout 和stochastic depth用于向模。 而后,再应用最新的学生模型作为新老师,此过程会反复几次(通常为 3 次)。 嘈杂的学生模型产生了过后最先进的后果。它的性能优于它所基于的 EfficientNet 架构(88.4% 对 85.5%)以及之前最先进的 FixRes ResNeXt-101 WSL。 -Model 该模型由 Laine 等人在2016 年提出。该模型的工作原理如下: 遍历每个输出(标记和未标记的输出混合在一起)。对于每个输出,咱们计算该图像的两个随机加强。将这两个加强图像输出到咱们的卷积神经网络中,该网络产生两个输入向量。 -model 的核心思想是,为了标准模型并使其对噪声有弹性,咱们应该惩办它对同一图像的加强给出不同的预测。因而,除了通常用于此类图像分类工作的规范穿插熵损失(只为标记数据计算)外,咱们还依据两个输入向量之间的平方差在损失中增加了一个被称为样本的“一致性损失”的损失项。 数据点的最终损失是穿插熵损失(如果数据点被标记)和一致性损失的加权和。权重 w(t) 决定了一致性损失绝对于穿插熵损失的权重。在第一个 epoch 期间,w(t) = 0,因为咱们没有来自之前 epoch 的数据能够用来对未标记的点进行有意义的分类。随着模型的停顿,w(t) 遵循高斯曲线减少。 Temporal EnsemblingTemporal Ensembling与 -model 密切相关——事实上,它们是在同一篇论文中提出的。 -model 的一个问题是训练指标十分嘈杂,因为它们基于随机加强和单个模型评估。Temporal Ensembling不是对每个图像进行两次加强并比拟两次加强的预测,而是让跟踪指数挪动平均值并将其用作训练指标。为其计算单个加强和单个预测向量,而后将其与该挪动平均值进行比拟以取得最终的一致性损失。 Temporal Ensembling的工作形式与-model大致相同。以雷同的形式思考穿插熵损失,并且 w(t) 再次遵循高斯曲线。然而Temporal Ensembling的训练速度更快(因为咱们只须要对每个输出评估一次模型而不是两次),并且训练指标的噪声较小。 ...

April 4, 2022 · 1 min · jiezi

关于深度学习:圆桌实录-为什么不约而同选择了大-Kernel

在 3.19 日的 “Large Kernel Makes CNN Great Again” 专题 Meetup 中,咱们组织了一次圆桌探讨,心愿能通过探讨一些比拟有共性的问题,碰撞出更多新想法。本篇为文字实录,enjoy~\视频回顾见 01:42:40 Large Kernel Makes CNN Great Again嘉宾介绍主 持: 许怅然 | 旷视天元 MegEngine 负责人 嘉 宾: 刘 壮 | UC Berkeley 博士生,ConvNeXt 作者张祥雨 | 旷视研究院 Base Model 组负责人丁霄汉 | 旷视研究院 Base Model 组实习生、清华大学博士生王 彪 | 旷视天元 MegEngine 异构计算组负责人Q1: ConvNeXt 论文里提到用 7x7 Kernel 之后性能饱和,而 RepLKNet 里提到越大越好,两篇论文论断差异可能是因为什么?主持 – 许怅然 非常感谢大家能参加到这次圆桌,这次第一个问题是我集体想问的,在 ConvNeXt 外面其实提到了 7×7 Kernel 之后性能饱和,而 RepLKNet 恰恰相反—— Kernel 越大性能越好。导致两篇论文论断差异的起因是什么?只是上下游工作评估不一样吗,还是有什么别的起因? Q1: ConvNeXt 论文里提到用 7x7 Kernel 之后性能饱和,而 RepLKNet 里提到越大越好,两篇论文论断差异可能是因为什么?主持 – 许怅然 ...

April 2, 2022 · 5 min · jiezi

关于深度学习:CSCI1200

CSCI-1200 Data Structures — Spring 2021Homework 6 — Crossword BlackoutIn this homework we will work with concepts inspired by crosswords, however we will not be following all therules that would be required by a proper “American-style” or “British-style” crossword. As such, you shouldread the entire handout carefully. Crosswords are quite popular, so there is lots of material available online.You may not search for, study, or use any outside code related to crossword puzzles. You are welcome tofind additional puzzles to experiment with and try to solve by hand.The basic goal is to consider a two dimensional grid in which each square either contains a letter or a blacksquare, and find one or all boards that meet some requirements (described below) and have all other squaresblacked out. Any sequence of two or more squares touching is considered a word. In order for a HW6 solutionto be valid it must contain no words shorter than 3 letters, and all words must be in a provided dictionary(more on this later). Words only run in two directions, across (meaning left-to-right) and down (meaningtop-to-bottom). A letter in a square can belong to an across word, a down word, or both an across and downword. A letter in a square is never part of two or more across words at the same time, or two or more downwords at the same time. Finally, in a real crossword grid, all the words must be “connected”, and blacksquares must be placed to ensure symmetry, but neither of those are requirements for the baseline HW6.A full-size example puzzle (left) and solution (right) might look like:Source: https://www.sporcle.com/games...Crossword Blackout ArgumentsYour program will accept four (baseline) or five (extra credit) command line arguments. The extra creditwill be explained near the end of the handout, for now we focus on the baseline HW6 requirements.Execution looks like: ./a.out [dictionary file] [initial grid file] [solution mode] [output mode] [gc]Dictionary FileThe dictionary file consists of words that only use upper-case letters, with one word per line. For a solutionto be legal (allowed), all words in the solution must be in the dictionary file. Words in the dictionary areunique, and words can only appear up to one time per solution.Initial Grid FileThe initial grid file describes the puzzle to work with. There are three types of lines that appear in the input.There are no spaces in any of the lines. You should not make any assumptions about the order the differenttypes of lines will appear in the input. Black squares, represented by “#”, may appear in the input andoutput.• Comments: Comment lines start with “!” and should be ignored by your program• Length constraints: Constraint lines start with “+” followed by a positive integer.• Grid lines: Lines that are not comments and not constraint lines are one row of the input puzzle’sgrid. These are presented in order.Every puzzle should have one or more constraints which represent a required word length in the solution.Any legal solution must have one matching word per constraint, and every constraint must have a matchingword. For example if “+4” appears twice in the input file, then all legal solutions must have exactly two4-letter words.Solution ModeThe solution mode will either be one solution meaning you should only print up to one solution, or it will beall solutions meaning you should print all solutions that satisfy the inputs.Output ModeThe output mode will either be count only in which case you will only print the number of solutions youfound (just the first line of output from the example in the section below), or print boards in which case youshould print the count and print all solutions.Output FormattingAn example output for a puzzle with 3 solutions is:Number of solution(s): 3To ensure full credit on the homework server, please format your solution exactly as shown above. Solutionsmay appear in any order, but the first line must start with Number of solution(s): then a space and thenumber of solutions. Each solution should start with a line that says Board followed by one row of the boardper line, starting from the top row.Additional Requirements: Recursion, Order Notation, & Extra PuzzlesYou must use recursion in a non-trivial way in your solution to this homework. As always, we recommend youwork on this program in logical steps. Partial credit will be awarded for each component of the assignment.Your program should do some error checking when reading in the input to make sure you understand thefile format. IMPORTANT NOTE: This problem is computationally expensive, even for medium-sized puzzleswith too much freedom! Be sure to create your own simple test cases as you debug your program.Once you have finished your implementation, analyze the performance of your algorithm using order notation.What important variables control the complexity of a particular problem? The dimensions of the board (wand h)? The number of words in the dictionary (d)? The total number of spaces with a letter (l)? Thetotal number of blacked out spaces (b)? The number of constraints (c)? Etc. In your README.txt file writea concise paragraph (< 200 words) justifying your answer. Also include a simple table summarizing therunning time and number of solutions found by your program on each of the provided examples.You should include 1-3 new puzzles and at least 1 dictionary for each of your new puzzles that either helpedyou test corner cases or experiment with the running time of your program. Make sure to describe thesepuzzles in your README.You can use any technique we have covered in Lectures 1-14, Homework 1-5, and Lab 1-7. This means youcannot use STL pair, map, set, etc. on this homework assignment.You must do this assignment on your own, as described in the “Collaboration Policy & Academic Integrity”handout. If you did discuss this assignment, problem solving techniques, or error messages, etc. with anyone,please list their names in your README.txt file.NOTE: If you earn 7 points on the homework submission server for tests 3 through 10 by 11:59pm onWednesday, March 24, you may submit your assignment on Friday, March 26 by 11:59pm without beingcharged a late day.Extra CreditFor extra credit, your program should function the same as in the baseline case when given four arguments.However if a fifth argument is given, gc, then you should only print boards that are a “giant component”.What this means is that starting from any letter, you should be able to use a series of up, down, left, andright moves to reach all other letters in the board without having to go through a blacked out (“#”) square.Legal for baseline HW6, but not valid forextra credit if gc is given as 5th argument.There is no way to get from “LABRAT” to“RED” without touching a blacked out cell orusing a diagonal movement.Legal for baseline HW6 and extra credit, allletters can be reached by only going up, left,down, or right without having to use a blackedout cell. ...

April 2, 2022 · 6 min · jiezi

关于深度学习:GPU的工作原理显卡和CPU的关系像主仆

在GPU呈现以前,显卡和CPU的关系有点像“主仆”,简略地说这时的显卡就是画笔,依据各种有CPU收回的指令和数据进行着色,材质的填充、渲染、输入等。 较早的娱乐用的3D显卡又称“3D加速卡”,因为大部分坐标解决的工作及光影特效须要由CPU亲自解决,占用了CPU太多的运算工夫,从而造成整体画面不能十分流畅地体现进去。 那么,GPU的工作原理是什么? 简略的说GPU就是可能从硬件上反对T&L(Transform and Lighting,多边形转换与光源解决)的显示芯片,因为T&L是3D渲染中的一个重要局部,其作用是计算多边形的3D地位和解决动静光线成果,也能够称为“几何解决”。一个好的T&L单元,能够提供粗疏的3D物体和高级的光线特效;只不过大多数PC中,T&L的大部分运算是交由CPU解决的(这就也就是所谓的软件T&L),因为CPU的工作繁多,除了T&L之外,还要做内存治理、输出响应等非3D图形处理工作,因而在理论运算的时候性能会大打折扣,经常呈现显卡期待CPU数据的状况,其运算速度远跟不上明天简单三维游戏的要求。 即便CPU的工作频率超过 1GHz或更高,对它的帮忙也不大,因为这是PC自身设计造成的问题,与CPU的速度无太大关系。 GPU图形处理,能够大抵分成 5 个步骤,如下图箭头的局部。 别离为 vertex shader、primitive processing、rasterisation、fragment shader、testing and blending。 显卡和CPU的关系像“主仆”,GPU的工作原理是什么第一步,vertex shader。是将三维空间中数个(x,y,z)顶点放进 GPU 中。 在这一步骤中,电脑会在外部模拟出一个三维空间,并将这些顶点搁置在这一空间外部。接着,投影在同一立体上,也是咱们将看到的画面。同时,存下各点间隔投影面的垂直距离,以便做后续的解决。 这个过程就像是本地球观看星星个别。地球的天空,就像是一个投影面,所有的星星,不论远近皆投影在同一面上。本地球的咱们,抬起头来观看星星,分不出星星的远近,只能分辨出亮度。 GPU 所投影出的后果,和这个状况相似。 显卡和CPU的关系像“主仆”,GPU的工作原理是什么从地球所看到的星空,星星就像是投影到一球面上,除非应用特地的仪器,不然分不出星星和地球的间隔 第二步,primitive processing。是将相干的点链接在一起,以造成图形。在一开始输出数个顶点进入 GPU 时,程序会特地注记哪些点是须要组合在一起,以造成一线或面。就像是看星座的时候一样,将相干连的星星连起来,造成特定的图案。 第三步,rasterisation。因为电脑的屏幕是由一个又一个的像素组成,因而,须要将一条间断的直线,应用绘图的演算法,以方格绘出该直线。图形也是以此形式,先标出边线,再用方格填满整个立体。 第四步,fragment shader。将格点化后的图形着上色彩。所需着上的色彩也是于输出时便被注记。在玩耍游戏时,这一步相当消耗 GPU 的计算资源,因为光影的成果、物体外表材质皆是在这一步进行,这些计算决定着游戏画面的精密水平。因而在玩耍游戏时,调高游戏画面品质大幅减少这一步的计算累赘,升高游戏品质。 将一个三角形,用方格出现近似原始图案,并着上色彩。一块又一块的方格,就是显示器上的像素 最初一步,testing and blending。便是将第一步所取得的投影垂直距离取出,和第四步的后果一起做最初解决。在去除被会被其余较近距离的物体挡住的物体后,让剩下的图形放进 GPU 的输入内存。之后,后果便会被送到电脑屏幕显示。 GPU与DSP区别 GPU在几个次要方面有别于DSP(Digital Signal Processing,简称DSP(数字信号处理)架构。其所有计算均应用浮点算法,而且目前还没有位或整数运算指令。此外,因为GPU专为图像处理设计,因而存储系统实际上是一个二维的分段存储空间,包含一个区段号(从中读取图像)和二维地址(图像中的X、Y坐标)。此外,没有任何间接写指令。输入写地址由光栅处理器确定,而且不能由程序扭转。这对于天然散布在存储器之中的算法而言是极大的挑战。最初一点,不同碎片的处理过程间不容许通信。实际上,碎片处理器是一个SIMD数据并行执行单元,在所有碎片中独立执行代码。 只管有上述束缚,然而GPU还是能够无效地执行多种运算,从线性代数和信号处理到数值仿真。尽管概念简略,但新用户在应用GPU计算时还是会感到蛊惑,因为GPU须要专有的图形常识。这种状况下,一些软件工具能够提供帮忙。两种高级描影语言CG和HLSL可能让用户编写相似C的代码,随后编译成碎片程序汇编语言。Brook是专为GPU计算设计,且不须要图形常识的高级语言。因而对第一次应用GPU进行开发的工作人员而言,它能够算是一个很好的终点。 Brook是C语言的延长,整合了能够间接映射到 GPU的简略数据并行编程结构。经GPU存储和操作的数据被形象地比喻成“流”(stream),相似于规范C中的数组。外围(Kernel)是在流上操作的函数。在一系列输出流上调用一个外围函数意味着在流元素上施行了隐含的循环,即对每一个流元素调用外围体。Brook还提供了约简机制,例如对一个流中所有的元素进行和、最大值或乘积计算。 Brook还齐全暗藏了图形API的所有细节,并把GPU中相似二维存储器零碎这样许多用户不相熟的局部进行了虚拟化解决。用Brook编写的应用程序包含线性代数子程序、疾速傅立叶转换、光线追踪和图像处理。利用ATI的X800XT和Nvidia的GeForce 6800 Ultra型GPU,在雷同高速缓存、SSE汇编优化Pentium 4执行条件下,许多此类利用的速度晋升高达7倍之多。 对GPU计算感兴趣的用户致力将算法映射到图形根本元素。相似Brook这样的高级编程语言的问世使编程老手也可能很容易就把握GPU的性能劣势。拜访GPU计算性能的便利性也使得GPU的演变将继续下去,不仅仅作为绘制引擎,而是会成为个人电脑的次要计算引擎。

April 1, 2022 · 1 min · jiezi

关于深度学习:恒源云GpushareJupyterLabTensorBoard使用问题技巧大放送4

文章起源 | 恒源云社区 原文地址 | 【小技巧-工具篇】 1、JupyterLab/TensorBoard 如何应用?可参考JupyterLab文档、TensorBoard文档。 2、JupyterLab打不开或者响应慢怎么办?如果遇到JupyterLab页面响应特地迟缓或者打不开的状况,可登录实例后通过以下命令来重启JupyterLab supervisorctl restart jupyterlab不倡议通过JupyterLab页面间接运行较耗费资源的程序,因为该程序很可能会导致JupyterLab无响应或者运行迟缓问题,可通过tmux工具搁置在实例后盾运行。 3、tensorboard打不开或者响应慢怎么办?如果遇到tensorboard页面响应特地迟缓或者打不开的状况,可登录实例后通过以下命令来重启tensorboard supervisorctl restart tensorboard4、自定义镜像如何装置jupyterlab?自定义镜像登录实例后,执行如下命令,即可实现装置jupyterlab,装置实现后,可通过控制台关上jupyterlab页面 curl -OL "https://download.gpushare.com/download/custom_install"chmod u+x ./custom_install./custom_install jupyterlab5、自定义镜像如何装置tensorboard?自定义镜像登录实例后,执行如下命令,即可实现装置tensorboard,装置实现后,可通过控制台关上tensorboard页面 curl -OL "https://download.gpushare.com/download/custom_install"chmod u+x ./custom_install./custom_install tensorboard6、JupyterLab 要输出明码怎么办?通过终端执行 jupyter server list 命令能够失去 JupyterLab 的登陆 Token。 如下能够从执行后果内取得 Token 为 3fq593blw4afqjtqgdp3ldk5。 root@I15b96311d0280127d:~# jupyter server listCurrently running servers:http://0.0.0.0:8888/?token=3fq593blw4afqjtqgdp3ldk5 :: /7、TensorFlow 训练报 ptxas fatal 谬误当在 RTX 3000 系列显卡上应用 TensorFlow 2.4 For CUDA 11.0 时,训练会呈现下列正告。 W tensorflow/stream_executor/gpu/asm_compiler.cc:235] Your CUDA software stack is old. We fallback to the NVIDIA driver for some compilation. Update your CUDA version to get the best performance. The ptxas error was: ptxas fatal : Value 'sm_86' is not defined for option 'gpu-name'起因是该版本的 PTX compiler 不反对 8.6 compute capability。此报错为正告,不影响失常训练。 ...

April 1, 2022 · 1 min · jiezi

关于深度学习:狗尾巴的故事数智时代的第一性原理|科创人数智未来私董会

科创人·数智将来私董会第3期于2022年3月26日圆满举办,本次流动由科创人、北航投资、方云智能联结举办;微软(中国)首席技术官韦青老师负责本次流动主讲嘉宾,携手15位企业高级决策者围绕数智将来课题进行深度探讨。与会嘉宾从左至右顺次为:软体机器人科技CEO兼总经理 高少龙、Authing创始人兼CEO 谢扬、彩食鲜副总裁兼CTO 乔新亮、华映资本主管合伙人 章高男、和讯网副总裁兼CTO 杨扬、SegmentFault思否创始人兼CEO 高阳、微软(中国)CTO 韦青、北航投资总经理 王剑飞、汽车之家CTO 项碧波、某银行软件开发核心技术平台开发处处长、方云智能创始人兼CEO 于人、富士康科技团体CDO 史喆、弘玑Cyclone联结创始人兼首席策略官 吴迪、安声科技创始人兼CEO 刘益帆、真成投资董事总经理 杨晏慈流动主题为《共创数智思维,迎战简单时代》之《狗尾巴的故事——数智时代的第⼀性原理》。在这样一个“黑天鹅”“灰犀牛”层出不穷的简单时代下,如何造就和把握应答复杂性挑战的能力,是本系列流动探讨的初衷。流动中提到第四范式、量子信息、简单迷信、根源思维、三段论、贝叶斯实践等要害信息,既有工科视角下的方法论、案例和工程体系探讨,亦有形而上的哲科思维交换。韦青老师在做收场环节分享以下是本场流动中,提及的精彩观点>>o很主观的讲,软件行业每位大咖都是哲学家、人类学家,他们对computer language实质都有着十分粗浅的了解。oo人类文明体系中,过早达到人生巅峰是一件很悲惨的事,因为余生只剩回味;那些真正的大咖前辈,他们只要求本人每一天比昨天更提高一点。oo最早的数字化,就是把文字数字化。文字和语言极为重要,但古代很多人往往跳过了最根本的语言、文字数字化阶段,也疏忽了其本质和重要性。oo【康威定律】企业做数字化转型,要建中台、突破技术壁垒、技术烟囱,为什么?因为语言不对立。譬如任何做零碎产品的公司,它的产品表现形式会极大受到公司构造的影响,而不是与用户需要相吻合。oo真正在做企业治理时,要特地器重企业的思维对立,而思维对立的首先条件是语言的对立。一个简单的组织系统,它的产品和服务是由机构的组成来宰割的。因而当人们口口声声的说要买通数据墙时,其实真正要买通的是部门墙。oo麦克卢汉60年前就提出,广告、电子宣传媒介呈现后,人类曾经很难找到假相。咱们当下正经验的信息化到数字化转变,所接管到的新常识更多来自“朋友圈学习”。学习后果的好坏就关切到每个人的先天素质。oo中国文化特地心愿找答案、找专家、找巨匠,在我看来是极其危险的,因为当初进入了复杂性时代的开始,要打碎信息霸权。oo当初时代守业很容易,尽管有幸存者偏差,因为过来须要泡图书馆能力把握的常识,当初很容易把握。oo 迷信方法论,只能有限靠近事实真相,但永远不可能达到事实真相,能够用来证伪,但不能证实。oo只有死过的公司,才有资格真正活下来;那些咱们看到的亿万市值大公司,或者更多只是因为幸存者偏差而存活。oo正在产生的事件让我非常高兴,所有从头来过,从头开始学…自从咱们直立行走以来,这样的门曾经裂开了五、六次。这是活着最好的时代,简直所有你自认理解的货色都是错的。                               o---汤姆·斯托帕德《阿卡迪亚》oo写代码的工作肯定会被机器代替,然而通知机器怎么写性能和怎么搭建成无效架构的能力,这是人的特色,在我看来这种能力不是技术能力,而是工程能力。oo回归根源性思维,会发现牛顿三大定律其实就是哲学的数学原理;而咱们所认为高大上的哲学,实质是因为喜爱常识,进而深入研究出常识的根源;信息论的实质,是一种信息价值的数学掂量办法。oo数字化改革,是一个简单的巨系统工程。从思维范式到文化范式,再到组织范式、制度范式、绩效范式和最初的行为范式等方面均需有所变革。oo知与行、简略与简单、技术与兽性,充斥了矛盾与对立。但外围的矛盾是咱们心愿在确定性隐没的时代,用确定性的思维形式,造成基于确定后果的策略,以确定的办法,解决不确定的简单问题。oo咱们常常容易误会想分明、说明确、做到之间级别的不同。而最广泛呈现的是自认为想到了就能做到,而疏忽了咱们在进入一个无人区。无人区有一个最大的特点,即空想、假如没有任何作用,大概率前提下也没有任何根据,因为你没有前例可循。oo独行速众行远。这个时代进入了一个无人区,没有任何一个人提前带足设施和必要的资源走过沼泽地,所以大家结伴同行。oo只有进入无人区的人,才敢真正敢于说本人不晓得。因为大家都置信幸存者偏差,在这样一个不确定性时代,彼此能聚合到一起都是幸存者。 o《数智思维宣言》demo版 构建数智思维,应千年未有之简单变局。思维、智慧在语言维度的投影,是成体系的基础理论,以及高度形象的若干准则。流动邻近序幕,科创人为现场嘉宾放上本次流动的重中之重环节--《数智思维宣言》,旨在将新智慧、新思维凝练而成的准则积淀成篇,使之易于流传、易于赋能,指引行为、辅助决策,在旧范式崩解的时代,构建全新范式的思维底座。《数智思维宣言》由科创人和韦青老师独特发动,将来多期私董会中将交融更多志同道合者的智慧、观点和研究论断,进而造成一版具备行为指引或解决理论问题的共识性指导方针。最终将由所有参与者独特签订、发表。 【流动预报】科创人·数智将来私董会下期举办工夫暂定于2022年5月14日(周六),主题《转型的实证--幸存者偏差与盲人摸象》。以后预凋谢5个参会席位,仅面向CEO凋谢(审核制),报名可增加17801045882(同微信) 致每一位数智思维共创者本系列流动将以“系统论”、“控制论”与“信息论”的实践与宽泛的行业实际为根底,冲破技术的局限,从一个简单系统论的角度来与大家一起探讨如何以“想清、阐明、做到”的倒退逻辑,独特为即将来临的“数-智时代”的挑战和机会做好筹备。--微软(中国)首席技术官 韦青

April 1, 2022 · 1 min · jiezi

关于深度学习:BERTasservice-时隔三年突然更新这次连名儿都改了

 无需放心简单的实现细节,只需简略调用 API,就能够为文本和图像创立 SOTA 表征向量。从 BERT 到 BERT-as-service2018 年 9 月,Google 一篇 BERT 模型相干论文引爆全网:该自然语言模型,在机器浏览了解顶级程度测试 SQuAD1.1 中,连破 11 项 NLP 测试记录,两个掂量指标全面超过人类。 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 这不仅开启了 NLP 的全新时代,也标记着迁徙学习和预训练+微调的模式,开始进入人们的视线。 2018 年 10 月,BERT 公布仅一个月后,BERT-as-service 横空出世。用户能够应用一行代码,通过 C/S 架构的形式,连贯到服务端,疾速取得句向量。 BERT-as-service 2018 年公布时的架构 作为基于 BERT 的第一个微服务框架,BERT-as-service 通过对 BERT 的高度封装和深度优化,以不便易用的网络微服务 API 接口, 博得了 NLP 及机器学习技术社区的宽泛关注。 它简洁的 API 交互方式、文档写作格调,甚至连 README 排版,都成为之后泛滥开源我的项目的模板。 BERT-as-service 能够通过几行代码轻松取得句向量 如果说 BERT 是迁徙学习的里程碑,那么 BERT-as-service 的呈现,能够称得上是迁徙学习,在工程服务化的里程碑。 ...

March 30, 2022 · 2 min · jiezi

关于深度学习:云音乐隐性关系链的探索与实践

作者:左冯翊一、我的项目背景云音乐依靠音乐主站业务,衍生了不少翻新业务,如直播、播客和云村等。不论是音乐、直播还是播客等业务,都面临着如下两个冷启动的问题: 如何为新用户(或不沉闷用户)散发内容如何将新内容(或冷门内容)分发给用户每个业务都积淀了一些解决冷启动的办法,比拟常见的一种办法是引入用户在其余场景的行为数据,比方在直播冷启中,咱们会引入用户在音乐上的行为,如用户对歌曲的红心、珍藏、评论和分享等。 随着业务的一直倒退,越来越多的场景心愿能有一种成果比拟好、开发成本低、通用性比拟强的计划实用于解决云音乐各业务晚期和中期的冷启动。 咱们调研了冷启动的多种解决方案,如跨域举荐、新老用户分层、元学习和关系链传递等。 最初发现基于关系链的传递比拟适宜做成一种通用的根底计划,而且不少互联网产品(如微信视频号、拼多多等)也将其作为一种重要的冷启动办法。 然而云音乐没有显性的好友关系链,应该怎么做呢?隐性关系链就在这样的背景下诞生了。 那怎么构建用户的隐性关系链呢? 云音乐以内容(如歌曲、播客、直播和视频等)为外围,通过内容连贯人与人,用户基于内容进行评论、分享和点赞等产生了一系列行为。那么,咱们能够通过综合应用用户在云音乐各外围业务场景的行为数据,来学习用户的向量示意,而后基于向量的类似度,来刻画用户的隐性关系强弱。 基于以上背景,本我的项目的次要指标是通过交融用户在云音乐的全生态行为数据,来学习用户的向量示意,从而构建用户的隐性关系链。基于隐性关系链,实现不同的上游举荐工作,如用户冷启、内容冷启、类似召回和种子用户 Lookalike 等。 二、我的项目挑战我的项目遇到的挑战次要有: 第一、数据规模大 数据规模大次要体现在 3 个方面,业务多:云音乐的业务蕴含音乐、搜寻、直播等 10+ 业务;场景多:每个业务都有多个场景,如首页、评论页等 20+ 场景;行为多:用户的行为有点击、播放、关注等 20+ 行为。 针对这个问题,咱们对各业务数据状况做了一个摸底,这些用户行为数据的总量是很大的。综合思考模型训练效率和用户趣味的时效性等,咱们也没有必要应用全量的数据。因而,咱们对业务数据做了两方面的解决: 应用业务的外围数据。比方在音乐这个业务,咱们应用用户红心、珍藏、评论和分享对数据多了一些荡涤、限度和过滤等,无效缩小了数据量级通过以上的一些解决,咱们失去了一份品质比拟高的用户行为数据。 第二、如何建模 用户的隐性关系链,不是一个具体的业务场景,不足明确的 label,也不足明确的优化指标,因而咱们不能间接应用业务中的排序模型进行建模。另外,用户的行为高度异构,由用户和内容(指歌曲、直播、播客等)形成的图就是异构的,并且不仅蕴含异构的节点(用户和多种内容),而且蕴含异构的边(用户和内容的多种交互行为,比方点击、播放等)。 针对如何建模这个问题,咱们将在第三局部进行重点介绍。 第三、如何评估 后面说到,咱们不能间接应用排序模型,也就意味着咱们不能间接应用 auc 等排序指标。通过剖析和调研,咱们综合应用以下几种办法进行评估: 定性评估case 剖析。这种办法通过剖析用户行为序列的交加个数或者 Jaccard 系数等,来判断关系链是否靠谱。这种办法比拟直观,也具备肯定的可解释性。但其实也存在一个问题:如果模型断定两个用户的类似度是 0.8,他们的行为序列重合度是否就很高?不肯定。比方,用户 A 对歌曲 S1 和 歌曲 S2 有红心行为,而用户 B 对歌曲 S3 和 S4 有红心行为,且这几首歌曲是比拟相干的歌曲(比方这几首歌曲经常出现在很多其余用户的行为序列中,或者来源于同一个艺人等),只管他们的行为没有交加,咱们也能够认为这两个用户的趣味是有相似之处的。可视化剖析。咱们失去了用户的向量示意之后,能够通过 TensorFlow 的 Embedding Projector 等工具对 Embedding 进行可视化,而后察看具备雷同标签的用户是否聚到了一起,标签重合较少的用户是否是离开。定量评估上线试验。通过 u2u、u2u2i 等形式进行召回上线,依据线上收益进行评估。这种形式比拟间接,置信度比拟高,但试验老本也较高,应该先进行离线评估再确定是否上线试验。离线评测。把用户向量当成特色,输出到排序模型中,评估离线 AUC 或者 loss 等指标的收益;或者离线生成 u2i 的举荐列表,而后评估召回的准确率和召回率等。这两种离线评测形式绝对上线成本低一些,尽管不是间接对 u2u 进行评估,但也是一种可行的办法。第四、如何对外提供服务 用户的隐性关系链,是一个根底建设,为了不便各业务场景能疾速接入,咱们须要做成一个在线服务,其中就波及到一个问题:亿级别用户向量如何进行毫秒级类似检索? 云音乐参考业界的一些向量检索引擎框架(如 Faiss、milvus 和 Proxima 等),自研了 Nsearch,实现了大规模向量的高性能类似检索,反对高并发低延时、算法简单动静扩大和增量导入等。 ...

March 30, 2022 · 3 min · jiezi

关于深度学习:DocArray-x-Weaviate-打造高效的云端数据存储

Weaviate 作为 DocArray 中的 Document Store,能够使得 Document 在云端的解决和检索更加迅速。DocArray & Weaviate 大起底DocArray: Data structure for unstructured dataDocArray 是一种可扩大数据结构,完满适配深度学习工作,次要用于嵌套及非结构化数据的传输, 反对的数据类型包含文本、图像、音频、视频、3D mesh 等。 与其余数据结构相比: ✅ 示意齐全反对,✔ 示意局部反对,❌ 示意不反对 利用 DocArray,深度学习工程师能够借助 Pythonic API,无效地解决、嵌入、搜寻、举荐、存储和传输数据。 Weaviate:开源的向量搜索引擎Weaviate 是一个开源的向量搜索引擎,能够同时存储对象和向量,将向量搜寻和结构化过滤 (structured filtering) 相结合, 从而创立一个持重、故障答应 (fault-tolerant) 的搜索引擎。 同时,Weaviate 还提供开箱即用的云存储基础设施--Weaviate 集群服务 (Weaviate Cluster Service)。 Jina + Weaviate=? Jina + Weaviate,能碰撞出怎么的火花? 通过 Weaviate 创立云存储实例的办法包含两种: 本地启动 Weaviate 实例创立 Weaviate 云服务实例1、本地启动 Weaviate 实例想要在后端应用 Weaviate 存储服务,须要启动一个全新的 Weaviate 实例。能够通过创立 docker-compose.yml 实现,具体如下: ---version: '3.4'services: weaviate: command: - --host - 0.0.0.0 - --port - '8080' - --scheme - http image: semitechnologies/weaviate:1.11.0 ports: - "8080:8080" restart: on-failure:0 environment: QUERY_DEFAULTS_LIMIT: 25 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' PERSISTENCE_DATA_PATH: '/var/lib/weaviate' DEFAULT_VECTORIZER_MODULE: 'none' ENABLE_MODULES: '' CLUSTER_HOSTNAME: 'node1'...创立胜利后,就能够运行 docker compose 启动实例。 ...

March 29, 2022 · 2 min · jiezi

关于深度学习:特征工程基于梯度提升的模型的特征编码效果测试

为梯度晋升学习抉择默认的特色编码策略须要思考的两个重要因素是训练工夫和与特色示意相干的预测性能。Automunge库是解决表格数据罕用的库,它能够填充空值,也能够进行分类的编码和归一化等操作,默认的境况下Automunge对分类特色进行二值化解决,并对数值特色进行z-score归一化。本文将通过对一系列不同数据集进行基准测试来验证这些默认值是否是最优化的选项。 长期以来特色工程对深度学习利用的有用性始终被认为是一个已解决的否定问题,因为神经网络自身就是通用函数迫近器(Goodfellow et al., 2016)。然而即便在深度学习的背景下,表格特色也常常应用某种模式的编码进行预处理。Automunge (Teague, 2022a) 这个 python 库最后是为数字和分类特色的根本编码而构建的,例如 z-score 标准化和 one-hot 编码。在迭代开发过程中开始退出了残缺的编码选项库,包含一系列数字和分类特色选项,当初也包含主动的规范化、二值化、散列和缺失数据填充场景。只管这些编码选项可能对于深度学习来说是多余的,但这并不排除它们在其余模型中的效用,包含简略回归、反对向量机、决策树或本文的重点梯度晋升模型。 本文目标是展现梯度晋升模型下表格数据中的数字和分类特色的各种编码策略之间的基准测试钻研的后果。 梯度晋升梯度晋升 (Friedman, 2001) 是一种相似于随机森林 (Briemen, 2001) 的决策树学习范式 (Quinlan, 1986),通过递归训练迭代的指标以纠正前一次迭代的性能来晋升优化模型。在实践中个别都会应用 XGBoost 库 (Chen & Guestrin, 2016) 和 LightGBM (Ke et al, 2017) 来进行建模。 到目前为止梯度晋升还是被认为是 Kaggle 平台上表格模态比赛的获胜解决方案,甚至在用于基于窗口的回归时,它的效率也在更简单的利用(如工夫序列程序学习)中失去证实(Elsayed ,2022 ) .最近的表格基准测试论文中也阐明,梯度晋升可能依然在大多数状况下胜过简单的神经架构,如transformers (Gorishniy ,2021)。 传统观点认为,对于表格应用程序梯度晋升模型具备比随机森林更好的性能,但在没有超参数调整的状况下会减少适度拟合的概率(Howard & Gugger,2020)。与随机森林相比,梯度晋升对调整参数的敏感性更高,并且运行的参数数量更多,所以通常须要比简略的网格或随机搜寻更简单的调整。这样就呈现了各种不同的超参数搜寻的办法,例如一种可用的折衷办法是通过不同的参数子集进行程序网格搜寻(Jain,2016 ), Optuna 等黑盒优化库(Akiba ,2019 年)能够应用更自动化甚至并行化的办法进行超参数的搜寻,这也是行业钻研的一个沉闷的方向。 特色编码特色编码是指用于为机器学习筹备数据的特色集转换。特色编码筹备的常见模式包含数字特色标准化和分类特色的编码,只管一些学习库(catboost)可能承受字符串示意中的分类特色并进行外部编码,然而手动的进行分类特色的转换还是有必要的。在深度学习呈现之前,通常应用提取信息的代替示意来补充特色或以某种形式进行特色的组合来进行特色的裁减,这种特色工程对于梯度晋升学习来说还是能够持续应用的。所以本文的这些基准的目标之一是评估实际与间接对数据进行训练相比的益处。 特色编码的一个重要问题就是须要畛域常识,例如基于填充数值散布派生的 bin 与基于内部数据库查找提取 bin 来补充特色之间是否有很大的区别?在 Automunge 的状况下,外部编码库的编码基于固有的数字或字符串属性,并且不思考能够依据相干应用程序域推断出的相邻属性。(日期工夫格局的性能例外,它在自动化下主动提取工作日、营业时间、节假日等,并依据不同时间尺度的循环周期对条目进行冗余编码) 数字特色数值标准化在实践中最常被应用的,例如z-score。在实践中可能发现的其余变动包含mean scaling 和max scaling 。更简单的约定能够转换除尺度之外的散布形态,例如 box-cox 幂律变换(Box & Cox, 1964) 或Scikit-Learn 的分位数转换器qttf(Pedregosa ,2011),都能够将特色转换成一个更像高斯分布的个性集。数字归一化更罕用于线性模型,而不是树的模型,例如在神经网络中,它们的目标是跨特色进行归一化梯度更新,利用于数值特色的标准化类型仿佛会影响性能。 ...

March 23, 2022 · 2 min · jiezi

关于深度学习:凭什么-31x31-大小卷积核的耗时可以和-9x9-卷积差不多-文末附-meetup-直播预告

为什么是大 kernel 卷积?Transformer 目前在 CV 畛域愈发炽热,这份炽热促使着优良学者们思考一个更深层次的问题。局部学者认为 Transformer 之所以 work 更加实质的起因在于其大的感触野(论文中转)。依据无效感触野(ERF)实践,ERF 大小与 kernel 大小成正比关系,与模型深度的平方根也成正比关系。 所以通过重叠层数实现大感触野必然不如减少卷积 kernel 大小更高效。因而有学者提出超大 kernel 卷积的网络结构,并证实在指标检测和语义宰割等工作上超过 Swin Transformer 而且远超传统小卷积模型。 什么是大 kernel,什么是 depthwise 卷积?CNN 中最常见的卷积 kernel 大小有 2x2, 3x3, 5x5, 7x7 等,在本文中咱们将卷积 kernel 大小超过 9x9 的视作大 kernel,同时以下所有数据都是近似数据。咱们不难看出随着卷积 kernel 大小的减少,卷积的参数量和计算量都呈平方增长,这往往也是大家不喜爱用大 kernel 卷积的其中一个起因。为了取得大 kernel 卷积带来的收益的同时升高其计算量和参数量,咱们个别将大 kernel 卷积设计成 depthwise 卷积。如下图所示,depthwise 卷积通过逐通道(channel) 做卷积,能够将计算量和参数量升高到 Dense 卷积的 input channel 分之一。 大 kernel depthwise 卷积为什么值得优化?Roofline Model为了解释分明为什么大 kernel 值得优化这个问题,咱们须要借助 Roofline 模型的帮忙。如下图所示,Roofline 尝试解释一件非常简单的事件,即利用在特定计算设施下能达到多快的计算速度。 实践峰值 TP:形容了计算设施的性能下限,指的是一个计算设施每秒钟最多所能实现的浮点运算数,单位是 FLOPS。*最大带宽 B8:形容计算设施的带宽下限,指的是一个计算设施每秒最多所能实现的内存交换量,单位是 Byte/s。最大计算密度 IM:形容计算设施单位内存替换最多用来进行多少次运算,单位是 FLOPs/Byte。"Roofline" 指的是由计算设施实践算力峰值和最大访存带宽这两个参数所决定的“屋顶”状态。其中设施实践峰值决定“屋顶”的高度(蓝色线段),设施最大访存带宽决定了“屋檐”的斜率(红色线段)。Roofline 模型划分进去两个瓶颈区域,别离为 Compute Bound 和 Memory Bound。 ...

March 18, 2022 · 4 min · jiezi

关于深度学习:光谱分析实现了从光谱原理到光谱分析的过渡

仪器剖析和化学分析是分析化学中的两种分析方法。仪器剖析个别包含:电化学剖析、原子发射光谱、高效液相色谱、气相色谱、核磁共振光谱、原子吸收光谱、质谱、红外光谱、紫外可见光谱、其余仪器剖析,etc 。 仪器剖析和检测广泛应用于理论剖析中。与传统化学分析相比,仪器剖析具备灵敏度高、精密度好、系统误差稳固、准确度好、剖析速度快、剖析周期短、效率高、疾速等特点。另一方面,仪器的性能在很大水平上取决于开发人员的业余技术水平和综合常识素养和能力。同时,对运营商的综合素质也有很高的要求。综合比拟表明,仪器剖析具备显著的劣势,是将来的发展趋势。 仪器分析方法的倒退古代仪器剖析涉及面广,其中最罕用的办法是电化学剖析、光学剖析和色谱法。基于人们对物质光谱个性的了解,提出了剖析测定方法,即光学分析法。17世纪,牛顿将光谱划分为白小时。之后,科学家们开始钻研光谱。19世纪以前,人们曾经可能将物质与其特色谱线分割起来,并在此基础上提出了光谱定性分析的概念。在此基础上,德国化学家本森和物理学家基希霍夫独特设计制作了第一台光谱分析光谱仪,实现了从光谱原理到光谱分析的过渡,产生了新的分析方法——光谱分析。在19世纪后半叶,人们探讨了光谱定量分析的可能性。 1874年,洛克通过大量试验得出结论,光谱定量分析只能基于光谱线的强度。在20世纪,光谱线的强度是通过光电测量来测量的。起初,光电倍增管被用于光谱定量分析。同时,光谱分析中的另办法——排汇分光光度法也失去了倒退,它利用物质的吸收光谱。 分光光度计是一种在特定波长光下精确测量电磁能的设施。它利用光和能量的个性来辨认色彩,并确定光中每种色彩的含量。 光谱仪:光谱仪应用透镜将光束发送到棱镜中,棱镜将其分为每个波长。而后,波长选择器过滤掉指定的波长并将其发送到光度计。 光度计:光度计是检测排汇光子数量的设施的一部分,并将测量后果发送到数字显示器。 分光光度计基本上量化了给定物质反射或排汇光的水平,咱们偏向于认为这是更定性的。您可能认为将不通明产品描述为红色或蓝色,具备哑光或光泽的光泽。分光光度计使这种评估更进了一步,并将这些特色量化为能够测量和用于准确利用的货色,包含临床诊断、品质管制、产品设计和生化钻研。

March 17, 2022 · 1 min · jiezi

关于深度学习:自监督学习的知识点总结

本篇文章将对自监督学习的要点进行总结,包含以下几个方面: 监督学习与自监督学习自监督学习需要背地的动机NLP 和CV中的自监督学习联结嵌入架构比照学习对于数据加强的乏味察看非比照学习总结和参考监督学习与自监督学习监督学习:机器学习中最常见的办法是监督学习。在监督学习中,咱们失去一组标记数据(X,Y),即(特色,标签),咱们的工作是学习它们之间的关系。然而这种办法并不总是易于解决,因为- 训练通常须要大量数据,而标记数百万行数据既耗时又低廉,这就对许多不同工作的训练模型造成了瓶颈。以这种形式训练的模型通常十分善于手头的工作,但不能很好地推广到相干然而非雷同畛域内的工作。因为网络只专一于学习 X 的良好示意以生成之间的间接映射X 和 Y ,而不是学习 X 的良好通用示意,所以无奈转移到相似的其余工作。这种学习通常会导致对概念的十分浮浅的了解,即它学习了 X 和 Y 之间的关系(它优化了网络以学习这种映射),但它不了解 X 的理论含意或它背地的含意。 自监督学习 (Self-supervised learning / SSL):自监督学习也实用于(特色、标签)数据集,即以监督的形式,但它不须要人工正文的数据集。它的根本思维是屏蔽/暗藏输出的某些局部,并应用可察看的局部来预测暗藏的局部。正如咱们将在上面看到的,这是一个十分弱小的想法。然而咱们不称其为无监督学习是因为它依然须要标签,但不须要人工对其进行标注。 SSL的劣势是如果咱们手头有大量未标记的数据,SSL的形式能够让咱们利用这些数据。这样模型能够学习更弱小的数据底层构造的示意,并且这些示意比监督学习中学到的更广泛,而后咱们能够针对上游工作进行微调。 需要和动机在过来的 10 年里,深度学习获得了长足的提高。几年前被认为计算机仿佛不可能实现的工作(例如机器翻译、图像识别、宰割、语音辨认等)中,曾经达到/超过了人类程度的体现。在经验了十年的胜利故事之后,深度学习当初正处于一个关键点,人们曾经缓缓但必定地开始意识到以后深度学习办法的根本局限性。 人类和以后人工智能的次要区别之一是人类能够比机器更快地学习事物,例如仅通过查看 1-2 张照片来辨认动物,只需 15-20 小时即可学会驾驶汽车。人类如何做到这一点?常识!尽管咱们还不晓得常识是如何产生的,但却能够通过思考人类如何理论理解世界来做出一些有依据的猜想: 人类次要通过观察学习,很少通过监督学习。从婴儿出世的那一刻起(或者之前),它就一直地听到/看到/感觉到四周的世界。因而,产生的大部分学习只是通过观察。人类能够利用随着工夫的推移取得的常识(感知、静止技能、根底物理来帮忙导航世界等),而以后的 SOTA 机器却不能。自监督学习通过学习从未屏蔽局部预测数据的屏蔽局部来模拟的人类这部分的能力。 NLP 与CV中的 SSLNLP 中的个别做法是屏蔽一些文本并应用左近的文本对其进行预测。这种做法曾经有一段时间了,当初 SOTA 模型都是以这种形式进行训练,例如 BERT、ROBERTA XLM-R、GPT-2,3 等。在 NLP 中利用这种技术绝对容易,因为屏蔽词的预测只能取离散值,即词汇表中的一个词。所以咱们所要做的就是在词汇表中生成一个超过 10-20k 个单词的概率分布。 然而在计算机视觉方面,可能性是有限的。咱们在这里解决高维间断对象,例如,一个 10X10 的屏蔽图像块可能在单个通道上获取 255¹ 值,对于动起来的视频复杂性甚至更高(同样的逻辑也实用于语音辨认)。与 NLP 不同,咱们无奈对每一种可能性做出预测,而后抉择更高概率的预测。这仿佛是计算机视觉中一个辣手的问题。 孪生网络/联结嵌入架构这里把图像识别作为咱们运行的工作。SSL 会屏蔽一些随机图像块,而后尝试预测这些被屏蔽的块。因为咱们无奈对图像块中的每一种可能性进行预测,所以咱们只能应用类似度匹配。 联结嵌入架构。这两个神经网络能够完全相同,也能够局部共享,也能够齐全不同。 这个想法是训练一种孪生网络来计算两张图像之间的类似度,同时保障以下后果 - 类似/兼容的图像应该返回更高的类似度分数。不同/不兼容的图像应返回较低的类似度分数。第 1 点很容易实现 -能够用不同形式加强图像,例如裁剪、色彩加强、旋转、挪动等。而后让 孪生网络学习原始图像和加强图像的类似示意。在将模型输入与固定指标进行比拟的意义上,咱们不再进行预测建模,因为当初比拟的是模型的两个编码器的输入,这使得学习示意非常灵活。 然而第 2 点很麻烦。因为当图像不同时,咱们如何确保网络学习不同的嵌入?如果没有进一步的激励,无论输出如何,网络都能够为所有图像学习雷同的示意。这称为模式解体。那么如何解决这个问题? 比照学习 Contrastive Learning根本思维是提供一组负样本和正样本。损失函数的指标是找到示意以最小化正样本之间的间隔,同时最大化负样本之间的间隔。图像被编码后的间隔能够通过点积计算,这正是咱们想要的!那么这是否意味着计算机视觉中的 SSL 当初曾经解决了?其实还没有齐全解决。 ...

March 17, 2022 · 2 min · jiezi

关于深度学习:开发环境部署OPenvino下载和安装教程

1、软件装置筹备操作系统:Win10 64位Python版本:Python3.8下载地址:https://www.python.org/downloads/release/python-380/网盘地址:Python3.8网盘地址提取码:dwl7Cmake版本:3.18.0下载地址:https://cmake.org/files/v3.18/网盘地址:Cmake3.18网盘地址提取码:02tqOpenVino版本:2020.4.287链接:https://pan.baidu.com/s/1fTwR... 提取码:1w3q 2、软硬件要求Openvino对于部署的硬件有肯定要求,其要求形容如下:https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/system-requirements.htmlWin7零碎能够装置OpenVino,但在后续开发中调用OpenVino的库会报错,OpenVino官网只写了反对Win10,最好在Win10零碎上配置和部署win零碎下要求装有VS和cmake环境 3、装置步骤装置Openvino前先配置VS、cmake和python等环境。参考官网和网络上介绍的装置办法装置Openvino 4、环境变量配置长期环境变量配置OpenVino装置门路下有以后工具包运行环境变量,应用 cd /d 进入到装置门路:此办法只实用一次配置OpenVino的环境,敞开cmd的窗口后会删除环境变量,下次应用还须要再次运行setupvars.bat文件。 设置永恒环境变量将Openvino的装置门路和运行库增加到电脑的零碎变量中去进入环境变量设定窗口后,新建零碎变量而后在Path下增加要用的库的门路5、OpenVino文件介绍和Demo测试5.1 OpenVino文件介绍OpenVINO是一个Pipeline工具集,同时能够兼容各种开源框架训练好的模型,领有算法模型上线部署的各种能力,只有把握了该工具,你能够轻松的将预训练模型在Intel的CPU上疾速部署起来。 对于AI工作负载来说,OpenVINO提供了深度学习推理套件(DLDT),该套件能够将各种开源框架训练好的模型进行线上部署,除此之外,还蕴含了图片解决工具包OpenCV,视频解决工具包Media SDK,用于解决图像视频解码,前解决和推理后果后处理等。 在做推理的时候,大多数状况须要前解决和后处理,前解决如通道变换,取均值,归一化,Resize等,后处理是推理后,须要将检测框等特色叠加至原图等,都能够应用OpenVINO工具套件里的API接口实现。OpenVino装置门路下的文件介绍如下图: 5.2 Demo测试在cmd下运行demo_security_barrier_camera.bat文件,该程序次要是辨认汽车车牌和汽车色彩。

March 17, 2022 · 1 min · jiezi

关于深度学习:GAN-并不是你所需要的全部从AE到VAE的自编码器全面总结

说到计算机生成的图像必定就会想到deep fake:将马变成的斑马或者生成一个不存在的猫。在图像生成方面GAN仿佛成为了支流,然而只管这些模型在生成真切的图像方面获得了巨大成功,但他们的缺点也是非常显著的,而且并不是生成图像的全副。自编码器(autoencoder)作为生成的图像的传统模型还没有过期并且还在倒退,所以不要忘掉自编码器! GAN 并不是您所须要的全副当谈到计算机视觉中的生成建模时,简直都会提到GAN 。应用GAN的开发了很多许多惊人的应用程序,并且能够在这些应用程序中生成高保真图像。然而GAN的毛病也非常显著: 1、训练不稳固,常常会呈现梯度隐没、模式解体问题(会生成雷同的图像),这使得咱们须要做大量的额定工作来为数据找到适合的架构。 2、GAN 很难反转(不可逆),这意味着没有简略的办法能够从生成的图像反推到产生这个图像的噪声输出。例如:如果应用可逆生成模型进行生成的图像的加强,能够间接取得生成图像的特定输出,而后在正确的方向上略微扰动它这样就能够取得十分类似的图像,然而GAN做到这一点很麻烦。 3、GAN 不提供密度估计。也就是说能够生成图像但无奈晓得特定特色呈现在其中的可能性有多大。例如:如果对于异样检测来说密度估计是至关重要的,如果有生成模型能够通知咱们一只可能的猫与一只不太可能的猫的样子,咱们就能够将这些密度估计传递给上游的异样检测工作,然而GAN是无奈提供这样的预计的。 自编码器 (AE) 是一种代替计划。它们绝对疾速且易于训练、可逆且具备概率性。AE 生成的图像的保真度可能还没有 GAN 的那么好,但这不是不应用他们的理由! 自编码器还没有过期有人说:一旦 GAN 呈现,自编码器就曾经过期了。这在某种程度上是正确的, 但时代在提高GAN的呈现让自编码器的倒退有了更多的能源。在认真地钻研后人们曾经意识到 GAN 的毛病并承受它们并不总是最适宜的模型。,所以目前对自编码器持续进行更加深刻的钻研。 例如,一种被称为矢量量化变分自编码器 (Vector Quantized Variational AutoEncoder / VQ-VAE ) 的自回归 AE 宣称能够生成与 GAN 的品质相匹配的图像,同时不会有 GAN 的已知毛病,例如模式解体和不足多样性等问题。 应用 VQ-VAE-2 生成多样化的高保真图像”(链接:arXiv:1906.00446) 在论文中,作者通过生成渔民图像将他们的 AE 模型与 DeepMind 的 BigGAN 进行了比拟。能够看到 AE 生成的图像之间还是有多少变动的。 另外,在自编码器畛域另一个令人兴奋的钻研的例子是 VAE / GAN。这种混合模型应用 GAN 的鉴别器在典型的反抗训练中学到的常识来进步 AE 的生成能力。 “Autoencoding beyond pixels using a learned similarity metric”(arXiv:1512.09300) 在上图中作者应用他们的模型从学习的示意中重建一组图像,这是 GAN 无奈做到的,因为GAN不足下面说过的的可逆性。从图上看重建看起来很不错。 ...

March 16, 2022 · 3 min · jiezi

关于深度学习:开发环境部署Python38下载和安装教程

1、装置环境操作系统:Win7 64位Python版本:Python3.8下载地址:https://www.python.org/downloads/release/python-380/网盘地址:Python3.8网盘地址提取码:dwl7 2、装置步骤1、关上装置软件,依据需要抉择默认装置或自定义装置如果抉择默认装置地位,间接下一步直到装置实现。抉择自定义装置的话就依据须要抉择要装置的组件和批改装置的门路 批改自定义的装置组件和装置门路后,间接下一步直至装置胜利 3、环境变量配置Win7零碎和Win10零碎:

March 13, 2022 · 1 min · jiezi

关于深度学习:恒源云GpuShare医学图像分割MTUNet

咱们社区有新的技术分享小伙伴啦热烈欢迎作为一名合格的搬运工,我必须做点事件表白我的喜悦之情:搬运~搬运~立刻搬运~ 文章起源 | 恒源云社区 原文地址 | 新的混合Transformer模块(MTM) 原文作者 | 咚咚 摘要存在问题尽管U-Net在医学图像宰割方面获得了微小的胜利,但它不足对长期依赖关系进行显式建模的能力。视觉Transformer因为其固有的通过自留神(SA)捕获长程相关性的能力,近年来成为一种可代替的宰割构造。存在问题然而,Transformer通常依赖于大规模的预训练,具备较高的计算复杂度。此外,SA只能在单个样本中建模self-affinities,疏忽了整个数据集的潜在相关性论文办法提出了一种新的混合Transformer模块(MTM),用于同时进行inter-affinities学习和intra-affinities学习。MTM首先通过部分-全局高斯加权自留神(LGG-SA)无效地计算窗口外部affinities。而后,通过内部留神开掘数据样本之间的分割。利用MTM算法,结构了一种用于医学图像宰割的MT-UNet模型Method如图1所示。该网络基于编码器-解码器构造 为了升高计算成本,MTMs只对空间大小较小的深层应用,浅层依然应用经典的卷积运算。这是因为浅层次要关注部分信息,蕴含更多高分辨率的细节。MTM如图2所示。MTM次要由LGG-SA和EA组成。 LGG-SA用于对不同粒度的短期和长期依赖进行建模,而EA用于开掘样本间的相关性。 该模块是为了代替原来的Transformer编码器,以进步其在视觉工作上的性能和升高工夫复杂度 LGG-SA(Local-Global Gaussian-Weighted Self-Attention)传统的SA模块对所有tokens赋予雷同的关注度,而LGG -SA则不同,利用local-global自注意力和高斯mask使其能够更专一于邻近区域。试验证实,该办法能够进步模型的性能,节俭计算资源。该模块的具体设计如图3所示 local-global自注意力 在计算机视觉中,邻近区域之间的相关性往往比边远区域之间的相关性更重要,在计算留神图时,不须要为更远的区域破费雷同的代价。 因而,提出local-global自注意力。 上图stage1中的每个部分窗口中含有四个token,local SA计算每个窗口内的外在affinities。每个窗口中的token被aggregate聚合为一个全局token ,示意窗口的次要信息。对于聚合函数,轻量级动静卷积(Lightweight Dynamic convolution, LDConv)的性能最好。在失去下采样的整个特色图后,能够以更少的开销执行global SA(上图stage2)。其中\( X \in R^{H \times W \times C} \) 其中,stage1中的部分窗口自注意力代码如下: class WinAttention(nn.Module): def __init__(self, configs, dim): super(WinAttention, self).__init__() self.window_size = configs["win_size"] self.attention = Attention(dim, configs) def forward(self, x): b, n, c = x.shape h, w = int(np.sqrt(n)), int(np.sqrt(n)) x = x.permute(0, 2, 1).contiguous().view(b, c, h, w) if h % self.window_size != 0: right_size = h + self.window_size - h % self.window_size new_x = torch.zeros((b, c, right_size, right_size)) new_x[:, :, 0:x.shape[2], 0:x.shape[3]] = x[:] new_x[:, :, x.shape[2]:, x.shape[3]:] = x[:, :, (x.shape[2] - right_size):, (x.shape[3] - right_size):] x = new_x b, c, h, w = x.shape x = x.view(b, c, h // self.window_size, self.window_size, w // self.window_size, self.window_size) x = x.permute(0, 2, 4, 3, 5, 1).contiguous().view(b, h // self.window_size, w // self.window_size, self.window_size * self.window_size, c).cuda() x = self.attention(x) # (b, p, p, win, c) 对部分窗口内的tokens进行自注意力计算 return x聚合函数代码如下 ...

March 9, 2022 · 5 min · jiezi

关于深度学习:实时增量学习在云音乐直播推荐系统中的实践

作者:波克1. 直播业务背景1.1业务背景直播举荐业务是嵌入在云音乐 APP 中各个中央,其中就包含最大的几个场景歌曲播放页的直播模块、混合在评论中的评论页直播以及云音乐首页的首页六卡直播。 如下图所示,图 1.1 即为播放页上的直播模块;图 1.2 是云音乐首页中首页六卡直播模块;图 1.3 是歌曲评论页中的直播模块。 不同举荐位的直播承载着不同的内容使命,在首页咱们更偏向让新用户理解直播,让老用户疾速地进入直播间观看直播;在歌曲播放页的直播更偏向于举荐给用户与听歌行为相干、与歌曲相干的直播内容;在歌曲评论页,直播更像是另外一种状态的内容,是社交内容的补充。 同时,直播业务是云音乐的衍生品,其举荐不同于音乐举荐,次要体现为用户用意不明确、直播用户行为稠密、实时性要求高以及存在 debias。 本文次要聚焦于直播举荐零碎实时化,以场景的算法特色为切入点介绍直播场景的优化指标,从多个角度阐明为什么直播须要实时化。同时,本文概述了举荐零碎实时性的根本组成和根本解决方案。举荐零碎实时性次要由特色实时性、模型实时性和零碎实时性组成。具体地,本文也以云音乐直播场景的实时化演进来具体介绍咱们是如何去搭建整个直播实时化零碎,并解决实时化过程中带来的艰难与挑战。最初,本文也给出了在大规模场景下的线上成果和剖析。 1.2 场景算法特色大多数平台的直播场景,同时开播场次无限,对召回诉求不强,实质是一个对实时直播的精排或者粗排+精排的过程。 1.2.1 多指标在举荐场景中,用户的行为个别都不止一种,而且不同行为的产生有先后顺序和依赖关系。直播举荐场景就是这样一个相干型多指标场景,在哪里建模也都是一个多指标的过程,比方既要点击率又要在观看工夫长,又要转化率高,还有些粉丝亲密度的问题。图 3 是直播的举荐的整个多指标学习过程。 用户在首页浏览直播模块时,先会产生点击,而后进入直播间产生观看,当达到 30s 以上的时候,会产生一个指标工作:无效观看。可能这时用户会喜爱该主播,和主播产生互动,并关注这个主播,更甚者送礼物给主播。用户的每一种行为都能够成为多指标模型里的一个指标,像这种指标之间存在依赖关系的多指标模型就属于相干型的多指标模型。这样流程也能够转化为一张多指标关系图,那么每一个工作和指标就是咱们模型须要去学习的。 1.2.2 实时化相比于传统的个性化举荐每天更新用户的举荐后果, 实时举荐基于用户最近几秒的行为实时调整用户的举荐后果 。实时举荐零碎让用户当下的趣味立即反馈到了举荐后果的变动上,能够给用户所见即所得的视觉体验,它牢牢地抓住了用户的趣味,让用户沉迷在其中。直播举荐零碎更是对实时化需要十分高,大抵能够从几个角度来介绍,Item 举荐角度、数据指标、业务环境。 Item举荐角度直播举荐是对实时在线主播的排序,是存量主播的一小部分。从上面这张平台主播开播散布状况图(图 4)能够看出,咱们平台存量主播有百万量级,而当天开播主播只有万量级, 同时每个主播开播的时段不一,有凌晨、早上、下午、早晨,且每个时段开播主播咖位也不同,一般来说早晨开播主播更多,咖位更大。 直播举荐的 item 就是主播,是活的货物,这不同与歌曲举荐中的歌曲,信息流举荐中的图文或者视频,主播是一个一直变动的 item,如上面这张图能够看出用户每次进入直播间看到的直播内容和主播状态都不一样,主播可能在 pk、表演、聊天;而歌曲或者视频是一个齐全动态的 item,且每次举荐展现都是从头开始播放; 所以直播举荐的不仅仅是一个 item ,更是 status。 数据指标具体的主播实时效率也能体现这一问题,某一主播在同一天内不同时刻效率变动激烈,存在多个顶峰和低谷,这可能与主播过后体现的状态无关、也可能与直播内容相干。然而对于举荐零碎来说,零碎是利用历史的数据去拟合预估将来的趋势,如果零碎不够实时,无奈获取主播实时体现状况,那么零碎极有可能会对主播将来的趋势拟合呈现偏差,甚至可能是齐全相同的后果。 业务环境云音乐直播业务与其余业务非亲非故,牵一发而动全身。这是因为直播业务不是固定地位的举荐,例如首页直播收到音乐业务格调举荐的影响,会导致直播模块呈现在第3、6、7位。歌曲播放页的直播模块,会收到歌曲的影响,因为一个直播间在不同歌曲的效率是不一样的。所以一旦其余业务有所改变,都极有可能对直播业务的数据分布产生微小的变动。 所以不论是从举荐的 item 、主播数据指标还是大环境,直播举荐都急须要一个实时化的举荐零碎。 2. 举荐零碎的实时性举荐零碎实时化性由特色实时性、模型实时性和零碎实时化组成,须要利用特色实时化去实时获取数据散布;模型实时化去实时拟合数据分布;最初基于实时零碎去获取最新模型和数据。 抛开零碎实时来说,算法同学当然更关怀的是特色实时性和模型实时性。具体来说; 举荐零碎的更新速度越快,越可能反馈用户最近的用户习惯,越可能给用户进行越有时效性的举荐。举荐零碎更新的越快,模型更容易发现最新风行的数据 pattern,越可能让模型反馈找到最新的风行趋势。2.1 特色实时性举荐零碎依赖弱小的数据处理能力 零碎“实时”地收集模型所需的输出特色,使举荐零碎可能应用最新的特色进行预测和举荐用户 T-1 时刻产生的行为(播放某首歌、观看某个主播、打赏/付费),须要在T时刻实时反馈到训练数据中,提供模型学习 这是一个比拟常见的特色实时化的实现框架图,次要包含日志零碎、离线画像、实时画像,通过 storm、flink、kafka 实现实时数据的解决和传输, 并存储在 hbase 和 redis 中,最初落盘到 hdfs 中。实时样本的解决中间环节是通过快照零碎来解决样本的穿梭问题和一致性问题。 ...

March 9, 2022 · 3 min · jiezi

关于深度学习:论文导读CoAtNet是如何完美结合-CNN-和-Transformer的

这篇文章次要介绍 Z. Dai 等人的论文 CoAtNet: Marrying Convolution and Attention for All Data Sizes。(2021 年)。 2021 年 9 月 15 日,一种新的架构在 ImageNet 比赛中的实现了最先进的性能 (SOTA)。CoAtNet(发音为“coat”net)在宏大的 JFT-3B 数据集上实现了 90.88% 的 top-1 准确率。CoAtNet 在应用(绝对)较差的数据集 ImageNet-21K(13M 图像)进行预训练时,达到了 88.56% 的 top-1 准确率。 CoAtNet 中的“coat”来源于卷积和自注意力。我始终在致力弄清楚这件“外套”可能象征着什么,但还没有找到解决办法。不过这是一个十分适合的首字母缩略词。 CoAtNet 同时利用了卷积神经网络 (CNN) 和 Transformer 的超强能力,基于 MBConv 块和绝对自注意力将平移同变性(translation equivariance)、输出自适应加权(input-adaptive Weighting)和全局感触野(Global Receptive Field)交融在一起,构建了一个弱小的新架构家族。 Convolution的简略介绍和MBConv块在深入研究 CoAtNet 的架构之前,首先对 CNN 做一个简略的介绍,如果你相熟这部分能够跳过。CNN 源于 1980 年代对大脑视觉皮层的钻研,由两位诺贝尔奖获得者 David Hubel 和 Torsten Wiesel 进行。这两位科学家表明,神经元的部分感触野很小,它们只对视线的特定区域做出反馈,并且这些不同的区域可能会重叠。此外一些神经元只对特定模式(即水平线)作出反应,而一些神经元对特定简单模式作出反应而这些简单模式是低级模式的组合。受到这些想法的启发,1998 年Yann LeCun 引入了 LeNet 架构,该架构首次利用了卷积层和池化层。刚开始并未收到很大的关注,然而在几年之后AlexNet 的呈现让CNN在 ImageNet 较量中的取得了亮眼的体现。并且随着计算能力的进步使得CNN有了更大的倒退,计算机视觉钻研的很大一部分转向了 CNN,并且多年来引入了几个网络,例如 VGG、ResNet、Inception、EfficientNet、MobileNet 等。 ...

March 9, 2022 · 2 min · jiezi

关于深度学习:条件随机场CRF的详细解释

条件随机场(CRF)由Lafferty等人于2001年提出,联合了最大熵模型和隐马尔可夫模型的特点,是一种无向图模型,罕用于标注或剖析序列材料,如自然语言文字或是生物序列。近年来在分词、词性标注和命名实体辨认等序列标注工作中获得了很好的成果。 条件随机场是一类最适宜预测工作的判断模型,其中相邻的上下文信息或状态会影响以后预测。CRF 在命名实体辨认、词性标注、基因预测、降噪和对象检测问题等方面都有利用。 在本文中首先,将介绍与马尔可夫随机场相干的根本数学和术语,马尔可夫随机场是建设在 CRF 之上的形象。而后,将具体介绍并解释一个简略的条件随机场模型,该模型将阐明为什么它们非常适合程序预测问题。之后,将在 CRF 模型的背景下探讨似然最大化问题和相干推导。最初,还有一个过对手写辨认工作的训练和推理来演示 CRF 模型。 马尔可夫随机场马尔可夫随机场(Markov Random Field)或马尔可夫网络( Markov Network)是一类在随机变量之间具备无向图的图形模型。该图的构造决定了随机变量之间的相关性或独立性。 马尔可夫网络由图 G = (V, E) 示意,其中顶点或节点示意随机变量,边示意这些变量之间的依赖关系。 该图能够合成为 J 个不同的团(小的团体 cliques )或因子(factors),每个由因子函数 ⱼ 摆布,其范畴是随机变量 Dⱼ 的子集。对于 dⱼ 的所有可能值,ⱼ (dⱼ) 应该严格为正。 对于要示意为因子或团的随机变量的子集,它们都应该在图中相互连接。所有团的范畴的并集应该等于图中存在的所有节点。 变量的非归一化联结概率是所有因子函数的乘积,即 对于下面显示的 V = (A, B, C, D) 的 MRF,联结概率能够写为: 分母是每个变量可能取的所有可能的因子乘积的总和。它是一个常数示意,也称为配分函数,通常用Z。 Gibbs Notation还能够通过对对数空间中的因子函数进行操作,将关节示意为Gibbs 散布。应用 (dⱼ) = log ( (dⱼ)),能够用 Gibbs 表示法示意独特的边,如下所示。X 是图中所有随机变量的汇合。 函数也称为factor potentials。 这个公式很重要,因为本文将在前面应用 Gibbs 符号来推导似然最大化问题。 条件随机场模型让咱们假如一个马尔可夫随机场并将其分为两组随机变量 Y 和 X。 ...

March 8, 2022 · 2 min · jiezi

关于深度学习:参与中文API检视做MindSpore贡献者

API中文上线啦!须要你的检视!快提交Issue或PR,退出MindSpore奉献~参加中文API检视,做MindSpore贡献者奖品预览1.自选奖(30位) 200元京东自营商品额度! 2.激励奖(60位) 参加中文API检视,做MindSpore贡献者流动形式 流动工夫3月1日——3月31日 流动形式每周公布待检接口和以后排名信息,用户自行抉择检视中文文档,对照英文版(检视要点请从下方附件下载)。用户发现问题后,去MindSpore/mindspore仓提交Issue,并提交PR解决。Issue题目标准:【问题接口名称】【检视流动】简略形容用户每周汇总一次集体Issue和PR的链接,在论坛“流动体验”版块发帖。Issue和PR数总计前30名用户获自选奖。Issue和PR各前30名取得激励奖。自选奖与激励奖不可兼得。工夫 待检API 注意事项 2022.02.28-2022.03.06 mindspore mindspore.common.initializer mindspore.context mindspore.mindrecord mindspore.nn mindspore.nn.probability mindspore.ops 合入存在时间差,若同一个文件夹内,存在中英文混淆的状况,不属于BUG,无需提交PR。 不晓得如何提交issue或PR?看这里! gitee上提交PR和issue的流程和注意事项 留神,提交PR后还要时时关注PR下方的评论意见,确保优先合入哦! 本次PR负责人:无需指定,请依照issue题目标准提交即可。 注意事项请勿刷帖,刷帖一律删帖并做有效参加解决。Issue和PR需经确认合格前方可计入总数。请勿盗取别人截图或内容,一经发现做有效参加解决。同一问题按issue提交工夫确认优先级。*最终解释权归MindSpore团队所有。 权归MindSpore团队所有。 https://bbs.huaweicloud.com/f...

March 7, 2022 · 1 min · jiezi

关于深度学习:LazyProphet使用-LightGBM-进行时间序列预测

当咱们思考工夫序列的加强树时,通常会想到 M5 较量,其中前十名中有很大一部分应用了 LightGBM。然而当在单变量状况下应用加强树时,因为没有大量的外生特色能够利用,它的性能十分的蹩脚。 首先须要明确的是M4 较量的亚军 DID 应用了加强树。然而它作为一个元模型来集成其余更传统的工夫序列办法。在 M4 上公开的代码中,所有规范加强树的基准测试都相当蹩脚,有时甚至还达不到传统的预测办法。上面是Sktime 包和他们的论文所做的杰出工作[1]: 任何带有“XGB”或“RF”的模型都应用基于树的集成。在下面的列表中 Xgboost 在每小时数据集中提供了 10.9 的最佳后果!而后,然而这些模型只是Sktime 在他们框架中做过的简略尝试,而 M4 的获胜者在同一数据集上的得分是 9.3 分……。在该图表中咱们须要记住一些数字,例如来自 XGB-s 的每小时数据集的 10.9 和每周数据集中的树性模型的“最佳”后果:来自 RF-t-s 的 9.0。 从上图中就引出了咱们的指标:创立一个基于LightGBM并且适宜集体应用的工夫序列的疾速建模程序,并且可能相对超过这些数字,而且在速度方面可与传统的统计办法相媲美。 听起来很艰难,并且咱们的第一个想法可能是必须优化咱们的树。然而晋升树非常复杂,改变十分费时,并且后果并不一定无效。然而有一点益处是咱们正在拟合是单个数据集,是不是可从特色下手呢? 特色在查看单变量空间中树的其余实现时都会看到一些特色工程,例如分箱、应用指标的滞后值、简略的计数器、季节性虚构变量,兴许还有傅里叶函数。这对于应用传统的指数平滑等办法是十分棒的。然而咱们明天目标是必须对工夫元素进行特色化并将其示意为表格数据以提供给树型模型,LazyProphet这时候就呈现了。除此以外,LazyProphet还蕴含一个额定的特色工程元素:将点”连贯”起来。 很简略,将工夫序列的第一个点连接起来,并将一条线连贯到中途的另一个点,而后将中途的点连贯到最初一个点。反复几次,同时更改将哪个点用作“kink”(两头节点),这就是咱们所说的“连贯”。 上面张图能很好地阐明这一点。蓝线是工夫序列,其余线只是“连接点”: 事实证明,这些只是加权分段线性基函数。这样做的一个毛病是这些线的外推可能会呈现偏差。为了解决这个问题,引入一个惩办从中点到最初点的每条线的斜率的“衰减”因子。 在这个根底上加滞后的目标值和傅里叶基函数,在某些问题上就可能靠近最先进的性能。因为要求很少,因因而咱们把它称作“LazyProphet”。 上面咱们看看理论的利用后果。 代码这里应用的数据集都是开源的,并在M-competitions github上公布。数据曾经被宰割为训练和测试集,咱们间接应用训练csv进行拟合,而测试csv用于应用SMAPE进行评估。当初导入LazyProphet: pip install LazyProphet装置后,开始编码: import matplotlib.pyplot as pltimport numpy as npfrom tqdm import tqdmimport pandas as pdfrom LazyProphet import LazyProphet as lptrain_df = pd.read_csv(r'm4-weekly-train.csv')test_df = pd.read_csv(r'm4-weekly-test.csv')train_df.index = train_df['V1']train_df = train_df.drop('V1', axis = 1)test_df.index = test_df['V1']test_df = test_df.drop('V1', axis = 1)导入所有必要的包后将读入每周数据。创立 SMAPE 函数,它将返回给定预测和理论值的 SMAPE: ...

March 7, 2022 · 2 min · jiezi

关于深度学习:DAT-500S-–-Machine-Learning

DAT 500S – Machine Learning - Project GuidelinesFinal Goal: Optimize the portfolio of (experimental) varieties to be grown at the target farm. Information about the target farm is available in the evaluation dataset. The optimal portfolio can have at most 5 varieties of soybean. It is not necessary but you are welcome to use the methods you learn in prescriptive analytics class to construct the optimal portfolio. If you are not familiar with optimization, come up with a meaningful heuristics to construct the portfolio. An example heuristic approach was discussed in class on November 21, 2020.You are encouraged to divide the project work into three components: Descriptive Analytics, Predictive Analytics, and Prescriptive Analytics.I.Descriptive AnalyticsPerform an exploratory data analytics to unearth patterns in the given data to educate yourself about the given data. For example,1.Plot the latitudes and longitudes on a map to visualize the locations of farms. Identify where the target/evaluation farm is located. It should be noted that most of the farms are located in the Midwest of the US.2.Generate frequency distribution for varieties. Decide if you have enough data for each variety to build dedicated prediction models for every variety. 3.Check to see if there is any relationship between the locations and varieties. Explore if certain varieties are grown more often in some regions than in other regions.4.Look for patterns in weather variables. Explore relationships between locations and weather related variables.5.Plot the distribution of the yield variables. Based on the plot, what do you think a realistic goal for the optimal portfolio at the target farm? ...

March 5, 2022 · 6 min · jiezi

关于深度学习:3DCAT首届行业生态交流会升大科技CEO邱杰5G云渲染助力企业培训

3DCAT首届行业生态交流会 2021年12月17日下午,由深圳市瑞云科技有限公司主办,深圳市虚拟现实产业联合会协办的 云XR如何赋能元宇宙——3DCAT实时云渲染首届行业生态单干交流会 圆满闭幕 。此次流动围绕“云XR如何赋能元宇宙”这一行业热点话题,吸引了云XR畛域的多家头部企业及行业专家参加探讨。 在交流会现场,升大科技CEO 邱杰以“5G云渲染助力企业培训”为主题,从VR/AR教育内容制作行业角度进行了分享。 升大教育科技有限公司CEO 邱杰发表演讲以下为演讲实录: 大家好,早上我刚刚看到一篇文章,说:从全世界方面来说会有一个元宇宙,但这个元宇宙最终以什么样的模式、什么技术手段来构建,大家都不晓得。”对这个元宇宙大家有很高的预期,当初许多银行业务是在手机上办理,那么将来是不是就能够在元宇宙中办理?犹如咱们在《头等玩家》在《失控玩家》中见到的那种呢? 在现阶段咱们能够做很多事件,比方打造一个WEB2.5级别的”半元宇宙“。WEB1.0指的是当年最晚期的数字资产——网站,是第三方制作而成一个货色给用户去看,而咱们取得的路径就是通过互联网;到了WEB2.0,指的是像抖音、微博这样平台,与晚期内容不同,用户能够本人去评论、参加,甚至生产内容,曾经演变成了一个高度交互的互联网;实践上WEB3.0是每个人都能够有本人的互联网,短期内并不易事实。所以说目前,咱们所做的更像是打造一个WEB2.5时代的半元宇宙环境。 瑞云科技所作的事件对于整个元宇宙体系构建是很有帮忙的。其旗下3DCAT实时渲染云是一个三维及 XR 利用的托管运行平台,在云端提供弱小的图形实时渲染计算服务,反对海量用户同时平安拜访利用。 而升大教育专一于学校VR教育内容,从我司本身业务角度登程,头盔高度限制了大家在应用场景上的晦涩度、便当度。瑞云所做的云渲染帮忙产品上云,就能够带来更多便当,在任何中央都能够体验交互。例如,升大与深职院在2017年就有深度单干,制作的VR内容取得全国大赛一等奖,但这个实际点始终都是人工智能学院的某一个教室,只有在本地才能够应用的素材。自往年瑞云与深职院做完云渲染的5G环境部署之后,在深职院几个校区的地位都能够共享应用,这就是实时云渲染技术带来提高。 升大教育是做VR的高职学校、企业培训的内容公司。2017年承受HTC Vive种子轮投资,公司成立五年,领有高度海内背景的弱小内容制作团队,创始人团队的思路也始终是以内容来取胜。只管当初公司规模不大,但咱们做到在职教VR汽车/计算机/无人机畛域行业前三、全国汽车业余VR实训课程中标数全国第一。 咱们大部分客户都是学校,但逐渐也发现,尽管很多企业有VR化培训的需要,技术却是一大壁垒。一,企业端须要从根本上解决内容生产,须要定制化且具备实用性;二,不能用十分重型的体验环节,必须有瑞云这样的服务,把大量内容上云,使其在全国各地实现对立的散发和体验。这个对于现阶段构建元宇宙或web3.0是十分有意义的。 寰球企业培训市场逐步倒退,在此也跟大家分享下国外培训行业数据,整个VR教培市场属于高速增长的状态,Quest头盔已达到千万级出货量。据美国考察数据统计,将来十二个月美国将被XR影响最大的行业有:衰弱和医疗器械、教育、企业和职业培训、制造业、汽车业、市场营销、交通物流、批发电商等。 目前,企业培训存在难以实际操作、近程培训成果差、培训资源散布不均、考试模式落后、常识更新慢等痛点。面对以后企业培训痛点,升大教育所做的XR内容可提供身临其境的操作体验,VR多人在线性能能不便异地培训;通过多人在线实景性能,优良导师能被高效利用;VR能实现仿实在操的考试形式,并能收集信息即时提供反馈;UGC性能能实现新生成内容的主动存储及数据库的自动更新。 咱们心愿将来有可能让人高度参加、基于云渲染的,通过语音互动、VR沉迷式体验的这种交换形式呈现,谢谢大家!

March 3, 2022 · 1 min · jiezi

关于深度学习:AI算力加速之道

1 AI算力发展趋势1.1 人工智能实践:深度学习人工智能倒退至今并非一帆风顺, 从起步阶段到现今的深度学习阶段,数据、算法和算力形成了人工智能三大基本要素,独特推动人工智能向更高层次的感知、认知倒退。 1.2 第三次人工智能浪潮代表人物如前所述,以后人工智能凋敝离不开数据、算法和算力的独特倒退,在算法层面,深度学习三巨头Geoffrey Hinton、Yann LeCun和Yoshua Bengio对AI畛域的奉献无人不知、无人不晓,他们围绕神经网络重塑了AI; 数据层面,2007年李飞飞创立了世界上最大的图像识别数据库ImageNet,使人们意识到了数据对深度学习的重要性,也正是因为通过ImageNet辨认大赛,才诞生了AlexNet, VggNet, GoogleNet, ResNet等经典的深度学习算法。 前几次人工智能凋敝后又陷入低谷,一个外围的起因就是算力难以撑持简单的算法,而简略的算法成果又不佳。黄仁勋开办的NVIDIA公司推出的GPU,很好的缓解了深度学习算法的训练瓶颈,开释了人工智能的全新后劲。 1.3 计算力就是生产力在智慧时代,计算力就是生产力。什么是生产力,就是人类革新天然的能力,就是发明价值的能力。在这个表中,咱们有一个很乏味的发现。 在10年前,寰球市值最高的企业大部分是能源公司、金融企业,市值靠前的IT公司仅仅微软一家,那时候windows如日中天,office独步天下,属于集体PC时代。 到了以后,寰球最值钱的公司简直清一色的信息技术与服务公司,乏味的中央还不在这里,这前几名的公司正好也是寰球洽购服务器最多公司,仅亚马逊一家,2017年便洽购了寰球13%的云服务器。是海量的计算能力在为这些公司发明价值。 对于企业是这样子,对于国家也是如此。计算力之于智慧时代就像是电力之于电气时代,都是生产力的重要模式。 那么,咱们便能够通过计算力的状况,来剖析一个国家的经济倒退状况,就如同克强指数外面的电力可能掂量一个行业的倒退状况相似。据统计,国家GDP的数字与服务器的出货量,GDP与服务器采购额呈现出显著的正线性相关关系。 美国、中两国不仅GDP远远当先于日本和德国,每万亿GDP的服务器数量也远远高于他们,数字经济的奉献占比显著高于他们。 咱们国内各个省得状况,与此齐全相似,北、上、广、浙每万亿GDP的服务器出货量远大于其余省区,因而他们新旧动能转换的就快,倒退品质就跑在了后面。所以咱们能够说计算力曾经成为掂量社会和经济倒退程度的重要指标。 面对指数级增长的计算需要,计算技术、产品与产业也面临着新的挑战。具体来说,体现在以下三个方面,一个是多元化的挑战,也就是计算场景的简单、计算架构的多元;一个是巨量化的挑战,也就是由巨量模型、巨量数据、巨量算力及巨量利用引发的对现有计算机体系结构的挑战; 最初一个则是生态化的挑战,简略来说当初的智算处于群雄并起阶段,自成体系、生态离散,同时产业链上下游脱节。 第一个挑战是多元化。 咱们讲计算最要害的工作就是撑持业务,那么不同的业务类型,势必要求有不同的计算零碎来实现。例如针对传统的地震波模仿等科学计算,数值精度要求高,须要能到64位;而AI训练,则能够应用数值范畴大、精度低的16位浮点类型;对于AI推理,因为推理要求速度、耗能少,则能够在更低的数值精度下进行解决,如4位、甚至2位、1位整数类型。 也就是说AI的利用引入了新计算类型,从推理到训练,跨度更大,同时,数据量也从GB级到TB级、PB级一直晋升,类型从结构化到半结构化、非结构化更加简单多样。 不同数值精度的计算类型对于计算芯片指令集、架构的要求是不一样的,这样就导致之前咱们始终应用的通用CPU芯片曾经无奈满足这种多元化计算场景要求了,这也是计算芯片的品种越来越多的很重要的起因。 第二个挑战是巨量化。巨量化首先体现在模型参数多、训练数据量大。以自然语言解决为例,基于自监督学习的预训练模型衰亡后,模型精度随着模型尺寸及训练数据的减少而显著晋升。 20年GPT-3模型的参数量首次冲破千亿大关,达到了1750亿。依照以后的发展趋势,23年模型的参数量将冲破百万亿,也就是根本达到人脑神经突触数量,人脑的神经突触数量约125万亿。 巨量模型须要巨量内存。以后一颗GPU的板载高速内存容量为40GB,对于蕴含百万亿参数的巨量模型,仅是将这些参数平均分配到每个GPU内存中,就须要1万块GPU能力装得下。 思考到训练中须要额定的存储,实际上至多须要2万块GPU能力启动训练。现有AI芯片的架构曾经不足以撑持巨量模型的参数存储需要。 同时,巨量模型依赖海量数据的喂养,目前的AI算法实质上还是一种依赖质变的量变,很难从一种量变跳跃到另一种量变,例如最新的巨量模型须要万亿级的词量数据。海量数据须要海量存储。在超大规模集群中同时满足几万块AI芯片的高性能读取,对存储系统是个极大的挑战。 巨量化的第二个体现是计算力需要指数增长 深度学习自2011年衰亡至今,对算力的需要始终呈指数增长。每隔3.4个月,算力需要翻一倍。Petaflops*day代表以1P每秒的算力计算一天所用浮点计算量来度量算力。训练巨量模型须要微小算力:20年GPT-3的算力达到了3640PD,到23年巨量模型的算力需要将达到百万PD。 在当今世界最快的超算零碎上,实现百万PD的计算所需工夫约为2年。不同畛域须要不同类型的巨量模型:GPT-3以解决英文了解工作为主,为了满足不同语言,不同场景的精度要求,也要训练不同的巨量模型,这进一步加剧了对算力的需要。 如此宏大的算力需要给计算技术和产品带来了微小挑战。解决这样的挑战须要从体系结构、系统软件等各个领域发展翻新。 最初咱们来看一下智算面临的生态化的挑战,AI的技术链条、产业链条是脱节的。我想很多人会有这样的疑难,人工智能那么好,然而这货色怎么跟我的业务,跟我的客户利用场景联合起来呢,我想用AI技术做智能化转型,然而发现我这里没人懂算法,懂模型,也短少好用的AI开发平台。同时,那么多算法,模型,如何找到不同算法在利用中的最优组合。 懂这些的人,往往都集中在科研机构或者头部公司。这些中央集中了最优良的AI人才,但短少对传统行业的需要场景、业务法则的深刻了解,也拿不到最要害的业务数据去对模型进行训练,导致技术无用武之地。 埃森哲等咨询机构的调查报告也表明,70%以上的有技术的钻研机构、科技公司缺需要场景、缺畛域常识和数据,70%以上的行业用户缺技术人才、缺AI平台和实际能力。 2 AI减速技术介绍2.1 AI架构 通常用户对接触到的AI架构相干的信息是申请XX核CPU, XX张CPU卡,XXGB内存等资源,其对应AI架构的计算资源、存储资源和网络资源,理论的AI架构包含计算节点、治理节点、存储节点、计算网络、管理网络和客户端等。 如何进行计算资源的布局呢?秉持的准则是花最低的老本满足需要,同时思考到扩展性,比方有两种以上计算特色的业务,而且规模都不小,那么对应的计算节点类型也应有两种以上;如果极限需要规模远大于其它需要,那么能够缩小计算节点类型数量,以便未来一直扩大。 2.2 AI减速技术AI对计算的需要十分大,如何减速间接关系到生产效率和老本,上面介绍一下以后最新的一些AI减速技术。 2.2.1 计算(1)异构计算在GPU用于AI计算前,都是CPU承当计算工作,然而随着AI计算需要的急剧减少,CPU的计算效率难以满足需要,产生了“CPU+GPU”的异构计算架构,如下图右上角所示。 如下图右下角所示,GPU的计算效率是CPU的几倍~几十倍,为什么CPU和GPU的计算效率会有这么大的差别呢?次要是CPU和GPU的架构存在微小差别,如下图左下角所示,GPU的计算单元数量远远多于CPU的计算单元,所以GPU更适宜于大规模并行计算。 而CPU架构中Control和Cache单元面积则比GPU大得多,所以CPU更实用于不能高度并行的简单计算(比方代码中的if语句等)。 (2)NVLINK通信随着AI计算规模增大,例如大规模AI训练,须要多卡甚至多个节点同时参加一个工作的计算,其中一个关键点就是如何反对节点内GPU间的高速通信,以便他们能够作为一个微小的加速器相互协作。 尽管PCIe十分规范,然而带宽十分无限,如下图左上角所示,PCIe Gen3的实践带宽是32GB/s,PCIe Gen4的实践带宽是64GB/s,而实测带宽大略别离是24GB/s和48GB/s。 在AI训练中,没实现一轮计算,都要同步更新一次参数,也就是权系数,模型规模越大,参数规模个别也会更大,这样GPU之间通信(P2P)能力对计算效率影响就比拟大,如下图右上角所示,同样是8卡V100, NVLINK2.0架构相比PCIe架构性能晋升26%,NVLINK2.0 Next架构(全互联,任意两张卡间P2P通信带宽都是300GB/s)则相比PCIe架构晋升67%。 NVLINK是NVIDIA开发的一项高速GPU互联技术,当初曾经倒退到第三代(NVLINK3.0),如下图下半局部,从NVLINK1.0(P100)到NVLINK2.0(V100),再到NVLINK3.0(A100),带宽从160GB/s到300GB/s,再到600GB/s,NVLINK1.0和2.0的P2P通信不是全互联,也就是,任意两张GPU卡之间的通信带宽理论没有达到最大带宽,有的甚至还通过PCIe通信,这样节点内GPU P2P通信就产生了台阶。 而NVLINK3.0则实现了P2P全互联通信,任意两张卡之间的通信带宽是600GB/s,极大的晋升了节点内多卡计算效率。 (3)Tensor CoreV100的张量外围是可编程的矩阵乘法和累加单元,能够提供多达125 Tensor TFLOPS的训练和推理利用。V100蕴含640个Tensor Cores。每个张量核提供一个4x4x4矩阵解决数组,它执行操作D=a*B+C,其中a、B、C和D是4×4矩阵,如下图上部所示。矩阵乘法输出A和B是FP16矩阵,而累积矩阵C和D能够是FP16或FP32矩阵。 ...

March 2, 2022 · 1 min · jiezi

关于深度学习:Jina-AI-两周年-步履不停尽情施展

文章导读 2 月是 Jina AI 的生日月,寰球各地 Office 用妙不可言的在线游戏,以及美味的食物、欢快的合照,独特为 Jina AI 庆生~ 2020 年 2 月,新冠病毒开始肆虐寰球,世界各地都逐渐进入抗疫紧急状态中。简直在同一时间,Jina AI 正式成立。 就在上周五,咱们 2岁啦! 在过来两年中,咱们达成了不少小有成就的指标: 融资总额达 3900 万美元先后公布了 3 个 Jina 大版本GitHub Star 超 13.5K入选多个开源、AI、云原生等荣誉榜单……更多详情可参照:Jina AI'2021 | 开源有限,万物蓬勃 Jina AI 成立两周年之际,柏林、巴塞罗那、印度、北京、深圳等寰球各地办公室,都举办了小小的庆贺典礼~ 编辑切换为居中 Team Event Hour,各地共事通过 Zoom 在线玩 Gartic Phone (你画我猜) 2nd Anniversary 怎么能少得了蛋糕 ~ 寰球各办公室蛋糕一览,你 Pick 哪一款 除了近程接入的在线游戏和美味的食物,当然也少不了活跃有爱的团队合照~ Berlin Office Shenzhen Office Berlin Office Beijing Office 从成立之初,Jina AI 就保持多元化和包容性企业文化,崇尚 Make Every Moment Count。 ...

February 23, 2022 · 1 min · jiezi

关于深度学习:TensorBoard的最全使用教程看这篇就够了

机器学习通常波及在训练期间可视化和度量模型的性能。有许多工具可用于此工作。在本文中,咱们将重点介绍 TensorFlow 的开源工具套件,称为 TensorBoard,尽管他是TensorFlow 的一部分,然而能够独立装置,并且服务于Pytorch等其余的框架。 什么是 TensorBoard?TensorBoard 是一组用于数据可视化的工具。它蕴含在风行的开源机器学习库 Tensorflow 中。TensorBoard 的次要性能包含: 可视化模型的网络架构跟踪模型指标,如损失和准确性等查看机器学习工作流程中权重、偏差和其余组件的直方图显示非表格数据,包含图像、文本和音频将高维嵌入投影到低维空间TensorBoard算是蕴含在 TensorFlow中的一个子服务。TensorFlow 库是一个专门为机器学习利用程序设计的开源库。Google Brain 于 2011 年构建了较早的 DistBelief 零碎。随着其用户群的快速增长,它被简化并重构为咱们当初称为 Tensorflow 的库。TensorFlow 随后于 2015 年向公众公布。TensorBoard刚呈现时只能用于查看TensorFlow的指标和TensorFlow模型的可视化,然而起初通过多方的致力其余深度学习框架也能够应用TensorBoard的性能,例如Pytorch曾经摈弃了自家的visdom(听到过这个名字的人应该都不多了吧)而全面反对TensorBoard。 如何装置 TensorBoardTensorBoard 蕴含在 TensorFlow 库中,所以如果咱们胜利装置了 TensorFlow,咱们也能够应用 TensorBoard。要独自装置 TensorBoard 能够应用如下命令: pip install tensorboard须要留神的是:因为TensorBoard 依赖Tensorflow ,所以会主动装置Tensorflow的最新版 启动 TensorBoard1、本地启动TensorBoard 要启动 TensorBoard,关上终端或命令提示符并运行: tensorboard --logdir=<directory_name>将 directory_name标记替换为保留数据的目录。默认是“logs”。 运行此命令后,咱们将看到以下提醒: Serving TensorBoard on localhost; to expose to the network, use a proxy or pass –bind_allTensorBoard 2.2.0 at http://localhost:6006/ (Press CTRL+C to quit)这阐明 TensorBoard 曾经胜利上线。咱们能够用浏览器关上http://localhost:6006/查看。 ...

February 23, 2022 · 5 min · jiezi

关于深度学习:5分钟NLP快速实现NER的3个预训练库总结

在文本主动了解的NLP工作中,命名实体辨认(NER)是首要的工作。NER模型的作用是辨认文本语料库中的命名实体例如人名、组织、地位、语言等。 NER模型能够用来了解一个文本句子/短语的意思。它能够辨认文本中可能代表who、what和whom的单词,以及文本数据所指的其余次要实体。 在本文中,将介绍对文本数据执行 NER 的 3 种技术。这些技术将波及预训练和定制训练的命名实体辨认模型。 基于 NLTK 的预训练 NER基于 Spacy 的预训练 NER基于 BERT 的自定义 NER基于NLTK的预训练NER模型:NLTK包提供了一个通过事后训练的NER模型的实现,它能够用几行Python代码实现NER性能。NLTK包提供了一个参数选项:要么辨认所有命名实体,要么将命名实体辨认为它们各自的类型,比方人、地点、地位等。 如果binary=True,那么模型只会在单词为命名实体(NE)或非命名实体(NE)时赋值,否则对于binary=False,所有单词都将被赋值一个标签。 entities = []tags = []sentence = nltk.sent_tokenize(text)for sent in sentence: for chunk in nltk.ne_chunk(nltk.pos_tag(nltk.word_tokenize(sent)), binary=False): if hasattr(chunk,'label'): entities.append(' '.join(c[0] for c in chunk)) tags.append(chunk.label()) entities_tags = list(set(zip(entities,tags)))entities_df = pd.DataFrame(entities_tags)entities_df.columns = ["Entities","Tags"]输出示例文本: 后果如下: 基于 Spacy 的预训练 NERSpacy 包提供预训练的深度学习 NER 模型,可用文本数据的 NER 工作。Spacy 提供了 3 个经过训练的 NER 模型:en_core_web_sm、en_core_web_md、en_core_web_lg。 NER 模型能够应用 python -m spacy download en_core_web_sm 下载并应用 spacy.load(“en_core_web_sm”) 加载。 ...

February 21, 2022 · 2 min · jiezi

关于深度学习:可视化深度学习模型架构的6个常用的方法总结

可视化有助于解释和了解深度学习模型的内部结构。通过模型计算图的可视化能够弄清楚神经网络是如何计算的,对于模型的可视化次要包含以下几个方面: 模型有多少层每层的输出和输入形态不同的层是如何连贯的?每层应用的参数应用了不同的激活函数本文将应用 Keras 和 PyTorch 构建一个简略的深度学习模型,而后应用不同的工具和技术可视化其架构。 应用Keras构建模型import keras# Train the model on Fashion MNIST dataset(train_images, train_labels), _ = keras.datasets.fashion_mnist.load_data()train_images = train_images / 255.0# Define the model.model = keras.models.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(32, activation='relu'), keras.layers.Dropout(0.2), keras.layers.Dense(10, activation='softmax')])#Compile the modelmodel.compile( optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])Keras 内置可视化模型在 Keras 中显示模型架构的最简略就是应用 summary()办法 model.summary() 这个办法是keras内置的实现,他的原理很简略。就是遍历所有模型层并打印相干细节,如层的输出维度和输入维度、参数数量、激活类型等,咱们也能够用for训练遍历实现,代码如下: for layer in model.layers: print("Layer Name: " + layer.name) print("Type of layer: " + layer.__class__.__name__) print("Input dimesion: {}".format(layer.input_shape[1:])) print("Output dimesion: {}".format(layer.output_shape[1:])) print("Parameter Count: {}".format( layer.count_params())) try: print("Activation : " + layer.activation.__name__) print(" ") except: print(" ") ...

February 20, 2022 · 2 min · jiezi

关于深度学习:混合密度网络MDN进行多元回归详解和代码示例

在本文中,首先简要解释一下 混合密度网络 MDN (Mixture Density Network)是什么,而后将应用Python 代码构建 MDN 模型,最初应用构建好的模型进行多元回归并测试成果。 回归“回归预测建模是迫近从输出变量 (X) 到间断输入变量 (y) 的映射函数 (f) [...] 回归问题须要预测具体的数值。 具备多个输出变量的问题通常被称为多元回归问题 例如,预测屋宇价值,可能在 100,000 美元到 200,000 美元之间 这是另一个辨别分类问题和回归问题的视觉解释如下: 另外一个例子 密度DENSITY “密度” 是什么意思? 这是一个疾速的艰深示例: 假如正在为必胜客运送比萨。 当初记录刚刚进行的每次交付的工夫(以分钟为单位)。 交付 1000 次后,将数据可视化以查看工作体现如何。 这是后果: 这是披萨交付工夫数据分布的“密度”。均匀而言,每次交付须要 30 分钟(图中的峰值)。 它还示意,在 95% 的状况下(2 个标准差2sd ),交付须要 20 到 40 分钟能力实现。 密度品种代表工夫后果的“频率”。 “频率”和“密度”的区别在于: · 频率:如果你在这条曲线下绘制一个直方图并对所有的 bin 进行计数,它将求和为任何整数(取决于数据集中捕捉的察看总数)。 · 密度:如果你在这条曲线下绘制一个直方图并计算所有的 bin,它总和为 1。咱们也能够将此曲线称为概率密度函数 (pdf)。 用统计术语来说,这是一个丑陋的正态/高斯分布。 这个正态分布有两个参数: 均值 · 标准差:“标准差是一个数字,用于阐明一组测量值如何从平均值(平均值)或预期值中开展。低标准偏差意味着大多数数字靠近平均值。高标准差意味着数字更加扩散。“ 均值和标准差的变动会影响散布的形态。 例如: ...

February 19, 2022 · 4 min · jiezi

关于深度学习:使用折外预测oof评估模型的泛化性能和构建集成模型

机器学习算法通常应用例如 kFold等的穿插验证技术来进步模型的准确度。在穿插验证过程中,预测是通过拆分进去的不用于模型训练的测试集进行的。这些预测被称为折外预测(out-of-fold predictions)。折外预测在机器学习中施展着重要作用,能够进步模型的泛化性能。 在本文中,将介绍机器学习中的折外预测,次要包含以下几个方面: 折外预测是对不用于训练模型的数据进行的一种样本外预测。在对看不见的数据进行预测时,折外预测最罕用于预计模型的性能。折外预测可用于构建集成模型,称为重叠泛化或重叠集成。什么是折外预测?应用重采样技术例如 k-fold来评估机器学习算法在数据集上的性能是一种很常见的办法。k-fold 过程包含将训练数据集分成 k 组,而后在应用 k 组样本中的每一个作为测试集,而其余样本用作训练集。 这意味着训练和评估了 k 个不同的模型。这个过程能够总结如下: 1、随机打乱数据集。 2、将数据集分成 k 组。 3、对于每个独特的组:将该组作为一个保留数据用做测试,将残余的组作为训练数据集,在训练集上拟合模型并在测试集上进行评估,反复k次使得每一组保留数据都进行了测试。 4、最初预测时应用训练出的K个模型进行整合预测。 数据样本中的每个数据都被调配到一个独自的组中,并在整个过程中放弃在该组中。这意味着每个样本都有机会在 作为测试集保留至多1次,并作为训练集最多 k-1 次。折外预测是在重采样过程中对每组得保留数据(测试集)所做的那些预测。如果正确执行,训练数据集中的每个数据都会有一个预测。 折外预测的概念与样本外预测(Out-of-Sample )的概念间接相干,因为这两种状况下的预测都是在模型训练期间未应用的样本上进行的,并且都能够预计模型在对新数据进行预测时的性能。折外预测也是一种样本外预测,只管它应用了k-fold穿插验证来评估模型。 上面咱们看看折外预测的两个次要性能 应用折外预测进行模型的评估折外预测最常见的用处是评估模型的性能。应用诸如谬误或准确率之类的评分指标对未用于模型训练的数据进行预测和评估。相当用于应用了新数据(训练时不可见的数据)进行预测和对模型性能的预计,应用不可见的数据能够评估模型的泛化性能,也就是模型是否过拟合了。 对模型在每次训练期间所做的预测进行评分,而后计算这些分数的平均值是最罕用的模型评估办法。例如,如果一个分类模型,能够在每组预测上计算分类准确度,而后将性能预计为对每组折外预测预计的均匀分数。 上面能够通过一个小的示例展现应用折外预测的模型评估。首先,应用 scikit-learn 的make_blobs() 函数创立一个蕴含 1,000 个样本、两个类和 100 个输出特色的二元分类问题。 上面的代码筹备了一个数据样本并打印了数据集的输出和输入元素的形态。 from sklearn.datasets import make_blobs# create the inputs and outputsX, y = make_blobs(n_samples=1000, centers=2, n_features=100, cluster_std=20)# summarize the shape of the arraysprint(X.shape, y.shape)运行该示例会打印输出数据的形态,显示 1,000 行数据和 100 列或输出特色以及相应的分类标签。 下一步应用 KFold 来对数据进行分组训练 KNeighborsClassifier 模型。 ...

February 18, 2022 · 4 min · jiezi

关于深度学习:Jina-3-重磅发布3-大更新助力云原生神经搜索系统搭建

文章导读 Jina 3 已于昨日公布,与前两个大版本相比,Jina 3 有哪些重大更新?又将为神经搜寻带来哪些全新的应用体验?一起来看看吧! 2022 年第一个重磅音讯:Jina 3 来啦! 与前两个大版本相比,Jina 3 在云计算筹备和星散成方面, 有了显著改良,用户能够更轻松地实现我的项目从本地到云端生产环境的迁徙。 同时,Jina 3 的可扩展性和稳定性失去了重点优化, 通过重构整体架构和通信模块,使得 Executor 间的网络通讯更加稳固,并全面反对异步通信。 Jina 3 更新包含: 1、Executors:无需下载,反对云端运行同步公布 Jina 沙盒。 开发者无需从 Jina Hub 下载 Executor 或应用 Docker,只需通过 jinahub+sandbox://ExecutorName 即可在本地试用云端运行的 Executor。 这使得开发者得以更迅速地评估并找到适合的 Executor,无需下载或占用本地计算。 from docarray import Documentfrom jina import Flowflow = Flow().add(uses='jinahub+sandbox://Hello')with flow:docs = flow.post('/', inputs=Document(text='world'))print(docs.texts)2、Flows: 反对 k8s 和 Docker-compose提供 Kubernetes 和 Docker-compose 反对, 生成对应配置文件,帮忙开发者疾速部署: Kubernetes: * flow.to_k8s_yaml('./k8s_flow')用于生成 Kubernetes 部署配置文件。通过生成的配置文件,开发者能够快捷地应用 Kubernetes 部署 Jina。 Docker-compose: * flow.to_docker_compose_yaml() 用于生成 Docker-compose 配置文件。通过运行 docker-compose up,开发者能够便捷的在 Docker-compose 环境下部署 Jina。 ...

February 17, 2022 · 1 min · jiezi

关于深度学习:5分钟NLP从-Bag-of-Words-到-Transformer-的时间年表总结

本文不是 NLP 钻研的残缺列表,因为太多了无奈总结的这么残缺!然而本文对影响NLP钻研的一些重要的模型进行总结,并尽量让它简洁而不是简略,如果你刚刚进入NLP畛域,本文能够作为深入研究该畛域的终点。 Bag of Words (BOW) [1954]:计算文档中每个单词的呈现次数并将其用作特色。 TF-IDF [1972]:批改 BOW 分数,使罕见词得分高,一般词得分低。 Word2Vec [2013]:每个单词都映射到一个称为单词嵌入的高维向量,该向量捕捉其语义。词嵌入是通过神经网络在大型语料库上寻找词相关性来学习的。 RNN [1986]:RNNs 利用句子中的单词上下文计算文档嵌入。起初演变为 LSTM [1997] 以捕捉长期依赖关系,并演变为 Bidirectional RNN [1997] 以捕捉从左到右和从右到左的依赖关系。最初Encoder-Decoder RNNs [2014] 呈现了,其中一个 RNN 创立文档嵌入(即编码器),另一个 RNN 将其解码为文本(即解码器)。 Transformer [2017]:一种编码器-解码器模型,它利用注意力机制来计算更好的嵌入并更好地将输入与输出对齐。 BERT [2018]:双向 Transformer 应用掩蔽语言建模和下一句预测指标的组合进行预训练。它应用寰球关注。 GPT [2018]:第一个基于 Transformer 架构的自回归模型。起初演变成 GPT-2 [2019],这是在 WebText 上预训练的更大和优化的 GPT 版本,以及 GPT-3 [2020],在 Common Crawl 上预训练的更大和优化的 GPT-2 版本。 CTRL [2019]:相似于 GPT,但带有用于条件文本生成的控制代码。 Transformer-XL [2019]:它是一个自回归 Transformer,能够重用先前计算的暗藏状态来解决更长的上下文。 ALBERT [2019]:BERT 的轻量级版本,其中(1)下一句预测被句子程序预测取代,(2)参数缩小技术用于升高内存耗费和更快的训练。 RoBERTa [2019]:BERT 的更好版本,其中 (1) Masked Language Modeling 指标是动静的,(2) Next Sentence Prediction 指标被删除,(3) 应用 BPE 标记器 (4) 应用更好的超参数. ...

February 16, 2022 · 1 min · jiezi

关于深度学习:EfficientNetV2-通过NASScaling和FusedMBConv获得更小的模型和更快的训练

EfficientNetV2是由 Google Research,Brain Team公布在2021 ICML的一篇论文,它联合应用NAS和缩放,优化训练速度和参数效率。并且模型中应用新操作(如 Fused-MBConv)在搜寻空间中进行搜寻。EfficientNetV2 模型比EfficientNetV1的训练速度快得多,同时体积小 6.8 倍。 论文纲要如下: 了解和进步 EfficientNetV1 的训练效率NAS 和缩放Progressive LearningSOTA 比拟融化钻研了解和进步 EfficientNetV1 的训练效率1、应用十分大的图像尺寸进行训练很慢 EfficientNet 的大图像尺寸会导致大量内存应用。因为 GPU/TPU 上的总内存是固定的,因而应用较小的批大小,这会大大减慢训练速度。 FixRes (论文FixRes: Fixing the Train-Test Resolution Discrepancy)可用于通过应用更小的图像尺寸进行训练而不是推理。较小的图像尺寸会导致较少的计算量并反对较大的批量大小,从而将训练速度进步多达 2.2 倍,并且准确度还会有所提高。 2、Depth-wise卷积在模型的晚期层执行迟缓但在前期层是无效的 Fused-MBConv 在谷歌 AI 博客中提出, Fused-MBConv 将 MBConv 中的 depthwise conv3×3 和扩大 conv1×1 替换为单个惯例 conv3×3。 MBConv 和 Fused-MBConv 的构造 Fused-MBConv 逐步将 EfficientNet-B4 中的原始 MBConv 替换为 Fused-MBConv。 在晚期阶段 1-3 中利用时,Fused-MBConv 能够进步训练速度,而参数和 FLOP 的开销很小。 然而如果所有块都应用 Fused-MBConv(阶段 1-7),那么它会显着减少参数和 FLOP,同时也会减慢训练速度。 ...

February 16, 2022 · 2 min · jiezi

关于深度学习:Attention-Is-All-You-Need图像上使用

参考文章:Attention Is All You Need 用于NLP的解说 注意力机制(Attention)目标:是用于捕获图像的感触野。 TransformerTransformer的实质是一个Encoder-Decoder的构造。在encoder中,数据首先会通过一个叫做‘self-attention’的模块失去一个加权之后的特征向量 \(Z\) ,这个 \(Z\) 便是论文公式1中的\(Attention(Q,K,V)\): $$Attention(Q,K,V)=softmax((QK^T)/√(d_k ))V (1)$$ 失去 \(Z\) 之后,它会被送到encoder的下一个模块,即Feed Forward Neural Network。这个全连贯有两层,第一层的激活函数是ReLU,第二层是一个线性激活函数,能够示意为 $$FFN(Z)=max(0,ZW_1+b_1)W_2+b_2 (2)$$

February 12, 2022 · 1 min · jiezi

关于深度学习:CMSC-216-Project-3

CMSC 216 Project #3 Spring 2021Date due: Wednesday, March 3, 11:59:59 p.m.1 Introduction and purposeIn this project you will write some functions to manipulate the instructions of a fictional simple processor in a family ofnew CPUs being developed by the Banana computer company, to run all of its future devices. The CPU version used inthis project, named N2, has a limited set of instructions, is able to access just a small amount of memory, and is primarilyintended for use in embedded systems, like a toaster for example. (The computational needs of a toaster are not high.)One purpose of the project is to use the features of C covered recently– bit operators, arrays, and pointers– but anotherimportant objective is to introduce hardware and assembly language concepts, which will be revisited later in the course.Much of this project description explains the assembly and machine language concepts involved, as well as the hypotheticalN2 CPU. The description of the functions to write is just two and a half pages of this assignment.Although the amount of code to be written in this project is not large compared to some CMSC 132 projects moststudents should find it significantly harder than Projects #1 and #2, so start working on it right away. Before starting tocode, look at the public tests to see how the functions are called, and look at the definitions in the header file machine.hdescribed below. Also first study bit masking from lecture, which you need to understand very well, and if needed, askabout it in the TAs’ office hours before starting to code. Lastly, read the entire project completely and carefully beforestarting to code. You may need to read it several times while writing the project.Due to the size of the course it is not feasible for us to be able to provide project information or help via email/ELMSmessages, so we will be unable to answer such questions. You are welcome to ask any questions verbally during the TAs’online office hours (or during, before, or after online discussion section or lecture if time permits). However, you cannotwait to write projects in a course with nearly 550 students. If many students wait until the last few days to write orfinish projects– especially challenging ones– and have questions, the TAs will not be able to help everyone in office hours.If you are in office hours near when a project is due you may have to wait a long time, and may not even be able to get helpat all. This would not be the TAs’ fault; it would be because you waited until too late to do the project, given the size of thecourse. The only way to avoid this is starting on projects early, in case you do have to ask questions in office hours.1.1 Extra credit and number of submissionsIf you make only one submission for this project, it passes all the public tests, and it is made at least 48 hours beforethe on–time deadline (i.e., at least two days early), we will give you 10 extra–credit bonus points on the project. Inorder to make only one submission and have it pass all the public tests you will have to read this assignment very carefully,and throughly test your functions yourself, so you are confident of doing well on the secret tests, because if you find a buglater and want to submit again you won’t get the bonus points. You will also have to use good style all during your coding,because your single submission is of course the one that is going to be graded for style.However, as before, if you make too many submissions for this project you may again lose credit. The purpose of theextra credit and the point deductions for excess submissions is to motivate you to test your code thoroughly yourself.There really is little reason to make any submissions that don’t compile– you should be compiling your code yourselfand fixing problems before submitting. Other than right before the project deadline, there really is little reason to make anysubmissions that do not pass all of the public tests– you should be running your code on them yourself, comparing youroutput to the correct output as described in Appendix A.1, and fixing any problems, before submitting.(If for some reason your program passes all the public tests on Grace, but doesn’t work on the submit server whensubmitted, so you have to submit more than once– and this is not due to an error on your part– you can talk with meverbally in office hours about receiving the extra credit despite having more than one submission.)2 Machine details and background conceptsThis section explains many background concepts, while the following one describes the functions to be written.2.1 Hardware conceptsFor a program written in any computer language to be executed on a particular machine it must be translated to theinstructions that the machine’s processor can execute. These instructions are referred to as machine instructions, but weusually just say instructions. Instructions manipulate information in memory and also in the processor’s registers. Memory© 2021 L. Herman; all rights reserved 1is used to hold data, such as variables, and programs themselves are also stored in memory in modern systems. Registersare locations that store values like memory except they are internal to the CPU, so they are accessed much more quickly.Registers temporarily store values that instructions operate upon, as well as the results of instructions.The fundamental operation of any CPU is to get an instruction from memory, figure out what it says to do, perform thatoperation, and go on to get the next instruction; this is called the fetch–decode–execute cycle. (This is discussed in moredetail in the Bryant & O’Hallaron text.) Although the instruction sets of different processors vary widely, instructions canbe categorized by functionality, for example:computation instructions: These perform various arithmetic and logical operations.flow of control instructions: By default instructions are executed sequentially in memory, but there are instructions thataffect which instruction is executed next, for implementing conditionals and repetition, as well as function calls.data movement instructions: These transfer data values between memory and registers, between different registers, andsometimes between different memory locations.invoking the operating system: These instructions are used to do things like halt a program or to access parts of thehardware that user programs are not allowed to directly access, for example, I/O devices. Some instructions allowuser programs to make system calls to get the operating system to perform these types of tasks for them.2.2 Machine specificationsThe hypothetical N2 processor has a 32–bit (4 byte) word length, meaning that instructions, registers, and memory wordsare all 32 bits. (As mentioned in lecture, processors manipulate information in multibyte quantities called words.) Machinesthat use the N2 CPU are quite small, with very limited system resources. They have only 32768 bytes of memory, groupedas 8192 four–byte words (8192 × 4 = 32768). The first byte in memory has address 0. Memory addresses always referto bytes. Memory is only word–addressable, meaning that although each byte in memory has its own unique address, theCPU can only access memory in four–byte quantities, using the address of the first (or low–order) byte of a four–byte word.Consequently, the addresses that can be used to access memory are 0, 4, 8, etc., up to 32764. The value of a memory wordcan be interpreted as an instruction and executed, or treated as data.The N2 processor has 27 different instructions. It has seven registers, each of which as mentioned holds 32 bits. Theseare referred to using the names R0 through R6. The N2 has what is called a load/store architecture, which means that onlysome data movement instructions access memory. One of them loads a value from a memory location into a register andanother one stores a value from a register into a memory location, while all other instructions, including computations,operate upon values in registers and put their result into a register. So computation typically involves loading operandsfrom memory into registers, doing calculations with them, and storing the results from registers back into memory.One N2 register, R6, has a special purpose. It is the program counter, which always contains the memory address ofthe next instruction to be fetched and executed. A flow of control instruction can modify the program counter to causeexecution to jump to somewhere else in a program. All other instructions cause the program counter to be incrementedby 4. So unless specified by a flow of control instruction, the processor executes instructions sequentially in memory. R6cannot be directly modified, for example, by storing the result of a computation in it. (Instructions can use the value in R6,but not directly modify it.) The other registers may be used or modified by the various instructions.2.3 Hardware, components of instructions, and instruction formatSince the N2’s processor has a 32–bit word length, all instructions, just like all data, must fit into a 32–bit word. When a32–bit word is interpreted as an instruction, it is considered to consist of fields representing(a) an “opcode”, i.e., operationof the instruction, (b) an extension, whose use will be described below, (c) up to three registers used as operands by someinstructions, and (d) a memory address or constant/immediate field that holds either a memory address or a constant (literal)numeric operand for some instructions. The instruction format on the N2 processor is as follows:5 bits 3 bits 3 bits 3 bits 3 bits 15 bitsopcode extension register1 register2 register3 memory address or constant/literal valueThe fields have the following uses and functionality:opcode: An opcode uniquely identifies the operation that an instruction performs. Short names are used in assemblylanguage to refer to each type of instruction. (Recall that assembly instructions are just human–readable versions ofmachine instructions.) Since the N2 has 27 different opcodes, 5 bits are required to represent an opcode. Since 5 bitscan store 32 different values but the N2 only has 27 opcodes, five five–bit values do not correspond to valid opcodes.© 2021 L. Herman; all rights reserved 2extension: One instruction on the N2 has five different variants. For this instruction, a value in the extension field is used toindicate which variant an instruction represents. Not all values that can be stored in 3 bits represent valid extensions.register1, register2, register3: As Section 2.4 says, some instructions operate upon one register, others operate on tworegisters, and some have three register operands. These three fields of instructions contain numbers indicating theregisters that instructions use as operands. Since the N2 CPU has 7 registers, 3 bits can indicate any of them.Since 3 bits can store 8 different values but the N2 only has 7 registers, there is one value that can be in a registerfield that does not correspond to a valid register.address or constant: Some of the N2’s instructions have the address of a memory location as an operand. For example,an instruction may copy the value in memory location 216 to one of the registers, so 216 would be stored in thisfield of the instruction. One instruction (li) has a constant or literal value, typically called an immediate in assemblylanguage, as an operand. For example, an instruction may store the numeric value 250 in one of the registers, so 250itself would be encoded in the instruction.This field is 15 bits, which is why the N2 has 32768 bytes of memory (with addresses 0... 32767)– because 215 = ...

February 11, 2022 · 33 min · jiezi

关于深度学习:8个可以提高数据科学工作效率节省宝贵时间的Python库

在进行数据迷信时,可能会节约大量工夫编码并期待计算机运行某些货色。所以我抉择了一些 Python 库,能够帮忙你节俭贵重的工夫。 1、OptunaOptuna 是一个开源的超参数优化框架,它能够主动为机器学习模型找到最佳超参数。 最根本的(也可能是家喻户晓的)代替计划是 sklearn 的 GridSearchCV,它将尝试多种超参数组合并依据穿插验证抉择最佳组合。 GridSearchCV 将在先前定义的空间内尝试组合。例如,对于随机森林分类器,可能想要测试几个不同的树的最大深度。GridSearchCV 会提供每个超参数的所有可能值,并查看所有组合。 Optuna会在定义的搜寻空间中应用本人尝试的历史来确定接下来要尝试的值。它应用的办法是一种称为“Tree-structured Parzen Estimator”的贝叶斯优化算法。 这种不同的办法意味着它不是无意义的地尝试每一个值,而是在尝试之前寻找最佳候选者,这样能够节省时间,否则这些工夫会花在尝试没有心愿的替代品上(并且可能也会产生更好的后果)。 最初,它与框架无关,这意味着您能够将它与 TensorFlow、Keras、PyTorch 或任何其余 ML 框架一起应用。 2、ITMO_FSITMO_FS 是一个特征选择库,它能够为 ML 模型进行特征选择。领有的察看值越少,就越须要审慎解决过多的特色,以防止适度拟合。所谓“审慎”意思是应该标准你的模型。通常一个更简略的模型(更少的特色),更容易了解和解释。 ITMO_FS 算法分为 6 个不同的类别:监督过滤器、无监督过滤器、包装器、混合、嵌入式、集成(只管它次要关注监督过滤器)。 “监督过滤器”算法的一个简略示例是依据特色与指标变量的相关性来抉择特色。“backward selection”,能够尝试一一删除特色,并确认这些特色如何影响模型预测能力。 这是一个对于如何应用 ITMO_FS 及其对模型分数的影响的一般示例: >>> from sklearn.linear_model import SGDClassifier>>> from ITMO_FS.embedded import MOS>>> X, y = make_classification(n_samples=300, n_features=10, random_state=0, n_informative=2)>>> sel = MOS()>>> trX = sel.fit_transform(X, y, smote=False)>>> cl1 = SGDClassifier()>>> cl1.fit(X, y)>>> cl1.score(X, y)0.9033333333333333>>> cl2 = SGDClassifier()>>> cl2.fit(trX, y)>>> cl2.score(trX, y)0.9433333333333334ITMO_FS是一个绝对较新的库,因而它依然有点不稳固,但我依然倡议尝试一下。 ...

February 10, 2022 · 2 min · jiezi

关于深度学习:为什么交叉熵和KL散度在作为损失函数时是近似相等的

在本文中,咱们将介绍熵、穿插熵和 Kullback-Leibler Divergence [2] 的概念,并理解如何将它们近似为相等。 只管最后的倡议应用 KL 散度,但在构建生成反抗网络 [1] 时,在损失函数中应用穿插熵是一种常见的做法。这经常给该畛域的老手造成凌乱。当咱们有多个概率分布并且咱们想比拟它们之间的关系时,熵和 KL 散度的概念就会发挥作用。 在这里咱们将要验证为什么最小化穿插熵而不是应用 KL 散度会失去雷同的输入。所以咱们首先从正态分布中抽取两个概率分布 p 和 q。如图 1 所示,两种散布都不同,然而它们共享一个事实,即两者都是从正态分布中采样的。 熵熵是零碎不确定性的度量。直观地说它是从零碎中打消不确定性所需的信息量。零碎各种状态的概率分布 p 的熵能够计算如下: 穿插熵穿插熵是指存在于两个概率分布之间的信息量。在这种状况下,散布 p 和 q 的穿插熵能够表述如下: KL散度两个概率分布之间的散度是它们之间存在的间隔的度量。概率分布 p 和 q 的KL散度( KL-Divergence )能够通过以下等式测量: 其中方程右侧的第一项是散布 p 的熵,第二项是散布 q 对 p 的冀望。在大多数理论利用中,p 是理论数据/测量值,而 q 是假如散布。对于 GAN,p 是实在图像的概率分布,而 q 是生成的假图像的概率分布。 验证当初让咱们验证 KL 散度的确与应用穿插熵散布 p 和 q 雷同。咱们别离在 python 中计算熵、穿插熵和 KL 散度。 右侧的第二项,即散布 p 的熵能够被认为是一个常数,常数的导数是0,对反向流传不会有影响。因而咱们能够得出结论,最小化穿插熵代替 KL 散度会呈现雷同的输入,因而能够近似相等。 ...

February 9, 2022 · 1 min · jiezi

关于深度学习:恒源云社区大佬的论文小记FloodingX

文章起源 | 恒源云社区 原文地址 | Flooding-X: 超参数无关的 Flooding 办法 原文作者 | Mathor 所谓大佬,就是只有你肯挖,总有你不晓得的知识点在某个中央等着你来学习!往下看,这不就来了吗! 注释开始:ICML2020的论文《Do We Need Zero Training Loss After Achieving Zero Training Error?》提出了一种Flooding办法,用于缓解模型过拟合,详情能够看我的文章《咱们真的须要把训练集的损失降到零吗?》。这里简略过一下,论文提出了一个超参数\( b \),并将损失函数改写为 其中,\( b \)是事后设定的阈值,当\( \mathcal{L}(\boldsymbol\theta) \) > \( b \)时\( \tilde{\mathcal{L}}(\boldsymbol\theta)=\mathcal{L}(\boldsymbol\theta) \),这时就是执行一般的梯度降落;而\( \mathcal{L}(\boldsymbol\theta) \)<\( b \)时\( \tilde{\mathcal{L}}{(\boldsymbol\theta)} \)=2\( b \)-\( \mathcal{L}(\boldsymbol\theta) \),留神到损失函数变号了,所以这时候是梯度回升。因而,总的来说就是以\( b \)为阈值,低于阈值时反而心愿损失函数变大。论文把这个改变称为Flooding 这样做有什么成果呢?论文显示,在某些工作中,训练集的损失函数通过这样解决后,验证集的损失能呈现 “二次降落(Double Descent)”,如下图 咱们能够假如梯度先降落一步后回升一步,学习率为\( \varepsilon \),通过泰勒开展能够失去 其中,\( \boldsymbol{\theta}_{n} \)示意第\( n \)次迭代的参数,\( g(\boldsymbol{\theta}_{n-1})=\nabla_{\boldsymbol{\theta}}\mathcal{L}(\boldsymbol{\theta}_{n-1}) \)示意损失对参数\( \boldsymbol{\theta}_{n-1} \)的梯度。式(2)的后果相当于以\( \frac{\varepsilon^2}{2} \)为学习率、损失函数为梯度惩办\( |g(\boldsymbol{\theta})||^2=||\nabla_{\boldsymbol{\theta}}\mathcal{L}(\boldsymbol{\theta})||^2∣ \) 的梯度降落 ...

February 8, 2022 · 2 min · jiezi

关于深度学习:开工第一课-用-DocArray-搭建-fashion-search-引擎

DocArray 是由 Jina AI 近期公布的、实用于嵌套及非结构化数据传输的库,本文将演示如何利用 DocArray,搭建一个简略的服装搜索引擎。动工大吉,各位同学大家好哇! 咱们为大家精心筹备了一学就会的 Demo 以及开箱即用的工具,新的一年,让咱们借助这个无敌 buff,解决非结构化数据传输这个让人头疼的阻碍吧~ DocArray:深度学习工程师必备 libraryDocArray: The data structure for unstructured data.DocArray 是一种可扩大数据结构,完满适配深度学习工作,次要用于嵌套及非结构化数据的传输,反对的数据类型包含文本、图像、音频、视频、3D mesh 等。 与其余数据结构相比: ✅ 示意齐全反对,✔ 示意局部反对,❌ 示意不反对 利用 DocArray,深度学习工程师能够借助 Pythonic API,无效地解决、嵌入、搜寻、举荐、存储和传输数据。 在后续教程示例中,你将理解: 借助 DocArray,搭建一个简略的服装搜寻零碎;上传服装图片,并在数据集中找到类似匹配注:本教程所有代码都能够在 GitHub 下载。 手把手教你搭建一个服装搜寻零碎筹备工作:观看 DocArray 视频5min 买不了吃亏买不了受骗,反而会排除常识阻碍,为后续步骤做好筹备。 家养字幕君在线翻译中,预计本周公布中文字幕视频,英文视频见 Here。 from IPython.display import YouTubeVideoYouTubeVideo("Amo19S1SrhE", width=800, height=450)配置:设置根本变量,并依我的项目调整DATA_DIR = "./data"DATA_PATH = f"{DATA_DIR}/*.jpg"MAX_DOCS = 1000QUERY_IMAGE = "./query.jpg" # image we'll use to search withPLOT_EMBEDDINGS = False # Really useful but have to manually stop it to progress to next cell# Toy data - If data dir doesn't exist, we'll get data of ~800 fashion images from hereTOY_DATA_URL = "https://github.com/alexcg1/neural-search-notebooks/raw/main/fashion-search/data.zip?raw=true"设置# We use "[full]" because we want to deal with more complex data like images (as opposed to text)!pip install "docarray[full]==0.4.4"from docarray import Document, DocumentArray加载图片# Download images if they don't existimport osif not os.path.isdir(DATA_DIR) and not os.path.islink(DATA_DIR): print(f"Can't find {DATA_DIR}. Downloading toy dataset") !wget "$TOY_DATA_URL" -O data.zip !unzip -q data.zip # Don't print out every darn filename !rm -f data.zipelse: print(f"Nothing to download. Using {DATA_DIR} for data")# Use `.from_files` to quickly load them into a `DocumentArray`docs = DocumentArray.from_files(DATA_PATH, size=MAX_DOCS)print(f"{len(docs)} Documents in DocumentArray")docs.plot_image_sprites() # Preview the images图片预处理from docarray import Document# Convert to tensor, normalize so they're all similar enoughdef preproc(d: Document): return (d.load_uri_to_image_tensor() # load .set_image_tensor_shape((80, 60)) # ensure all images right size (dataset image size _should_ be (80, 60)) .set_image_tensor_normalization() # normalize color .set_image_tensor_channel_axis(-1, 0)) # switch color axis for the PyTorch model later# apply en massedocs.apply(preproc)图片嵌入!pip install torchvision==0.11.2 ...

February 8, 2022 · 2 min · jiezi

关于深度学习:使用DistilBERT-蒸馏类-BERT-模型的代码实现

机器学习模型曾经变得越来越大,即便应用经过训练的模型当硬件不合乎模型对它应该运行的冀望时,推理的工夫和内存老本也会飙升。为了缓解这个问题是应用蒸馏能够将网络放大到正当的大小,同时最大限度地缩小性能损失。 咱们在以前的文章中介绍过 DistilBERT [1] 如何引入一种简略而无效的蒸馏技术,该技术能够轻松利用于任何相似 BERT 的模型,但没有给出任何的代码实现,在本篇文章中咱们将进入细节,并给出残缺的代码实现。 学生模型的初始化因为咱们想从现有模型初始化一个新模型,所以须要拜访旧模型的权重。本文将应用Hugging Face 提供的 RoBERTa [2] large 作为咱们的老师模型,要取得模型权重,必须晓得如何拜访它们。 Hugging Face的模型构造 能够尝试的第一件事是打印模型,这应该让咱们深刻理解它是如何工作的。当然,咱们也能够深入研究 Hugging Face 文档 [3],但这太繁琐了。 from transformers import AutoModelForMaskedLMroberta = AutoModelForMaskedLM.from_pretrained("roberta-large")print(roberta)运行此代码后失去: 在 Hugging Face 模型中,能够应用 .children() 生成器拜访模块的子组件。因而,如果咱们想应用整个模型,咱们须要在它下面调用 .children() ,并在每个子节点上调用,这是一个递归函数,代码如下: from typing import Anyfrom transformers import AutoModelForMaskedLMroberta = AutoModelForMaskedLM.from_pretrained("roberta-large")def visualize_children( object : Any, level : int = 0,) -> None: """ Prints the children of (object) and their children too, if there are any. Uses the current depth (level) to print things in a ordonnate manner. """ print(f"{' ' * level}{level}- {type(object).__name__}") try: for child in object.children(): visualize_children(child, level + 1) except: passvisualize_children(roberta)这样取得了如下输入 ...

February 8, 2022 · 4 min · jiezi

关于深度学习:卷积自编码器中注意机制和使用线性模型进行超参数分析

新神经网络架构设计的最新进展之一是注意力模块的引入。首次呈现在在NLP 上的注意力背地的次要思维是为数据的重要局部增加权重。在卷积神经网络的状况下,第一个留神机制是在卷积块留神模型中提出的。其中留神机制分为两个局部:通道留神模块和空间留神模块。 空间留神模块通过将图像合成为两个通道,即最大池化和跨通道的均匀池化来创立特色空间的掩码。这一层是卷积层的输出,卷积层只利用一个放弃与输出雷同大小的滤波器。而后应用sigmoid激活创立从0到1的激活映射。生成的新的映射会按比例缩放输出,它通过缩放输出加强空间特色。 class SpatialAttention(Layer): ''' Custom Spatial attention layer ''' def __init__(self, **kwargs): super(SpatialAttention, self).__init__() self.kwargs = kwargs def build(self, input_shapes): self.conv = Conv2D(filters=1, kernel_size=5, strides=1, padding='same') def call(self, inputs): pooled_channels = tf.concat( [tf.math.reduce_max(inputs, axis=3, keepdims=True), tf.math.reduce_mean(inputs, axis=3, keepdims=True)], axis=3) scale = self.conv(pooled_channels) scale = tf.math.sigmoid(scale) return inputs * scale咱们能够将其增加到密集卷积块中,创立自编码器模型。还能够通过增加一个选项来查看注意力模块的是否存在 def MakeConvolutionBlock(X, Convolutions,BatchNorm=True,Drop=True,SpAttention=True,Act='relu'): ''' Parameters ---------- X : keras functional layer Previous layer in the model. Convolutions : int Number of convolutional filters. BatchNorm : bool, optional If True a batchnorm layer is added to the convolutional block. The default is True. Drop : bool, optional If true a Droput layer is added to the model. The default is True. SpAttention : bool, optional If true a SpatialAttention layer is added to the model. The default is True. Act : string, optional Controls the kind of activation to be used. The default is 'relu'. Returns ------- X : keras functiona layer Block of layers added to the model. ''' X = Conv2D(Convolutions, (3,3), padding='same',use_bias=False)(X) if SpAttention: X = SpatialAttention()(X) if BatchNorm: X = BatchNormalization()(X) if Drop: X = Dropout(0.2)(X) X=Activation(Act)(X) return X随着函数中不同参数的数量减少,间接其增加到下一个函数会有问题。所以能够在 python 中应用 kwargs 性能,它通过应用字典将关键字参数解包到一个函数中。只需将 kwargs 增加到应用与主构建块雷同的参数的函数中。 ...

January 31, 2022 · 2 min · jiezi

关于深度学习:5分钟NLP-SpaCy速查表

SpaCy 是一个收费的开源库,用于 Python 中的高级自然语言解决包含但不限于词性标注、dependency parsing、NER和类似度计算。它可帮忙构建解决和了解大量文本的应用程序可用于多种方向,例如信息提取、自然语言了解或为深度学习提供文本预处理。 SpaCy 诞生于2014年年中(并且到当初这么多年了,它仍然放弃着继续的更新),号称“Industrial-Strength Natural Language Processing in Python”,spaCy里大量应用了 Cython 来进步相干模块的性能,这个区别于学术性质更浓的Python NLTK,因而具备了业界利用的理论价值。 spaCy 简介 SpaCy 目前为各种语言提供与训练的模型和解决流程,并能够作为独自的 Python 模块装置。例如上面就是下载与训练的en_core_web_sm 的示例。 python -m spacy download en_core_web_sm请依据工作和你的文原本抉择与训练的模型。小的默认流程(即以 sm 结尾的流程)总是一个好的开始。 标记化标记化包含将文本宰割成单词、标点符号等。这是通过利用特定于每种语言的规定来实现的。 import spacynlp = spacy.load("en_core_web_sm")doc = nlp("The cat is on the table")for token in doc: print(token.text) # The# cat# is# on# the# table词性标注POS(词性)标记是指依据词的定义及其上下文对文本中的词进行分类,使其与特定的词性绝对应。 import spacynlp = spacy.load("en_core_web_sm")doc = nlp("The cat is on the table")for token in doc: print(f"{token.text} --- POS: {token.pos_}, {token.tag_}") # The --- POS: DET, DT# cat --- POS: NOUN, NN# is --- POS: AUX, VBZ# on --- POS: ADP, IN# the --- POS: DET, DT# table --- POS: NOUN, NNpos_ 属性蕴含简略的 UPOS 词性标记,而 tag_ 属性蕴含具体的 POS 标记。 ...

January 29, 2022 · 2 min · jiezi

关于深度学习:MindSpore图片分类之代码实现

摘要 在后面两次的分享中,咱们次要探讨了LeNet卷积神经网络,剖析了卷积、池化、全连贯这些操作运算的特点和用法,以及LeNet中每一层的计算和作用。在理解过该网络的原理后,那么本次咱们将通过应用MindSpore工具实现MNIST数据集的分类。 模型的结构对于一个残缺图片分类模型,通常有以下几个组成部分。 模型:假如一个样本图片信息是X(i),输入标签为Y,那么咱们须要建设基于输出X(i)和输入标签Y的表达式,也就是模型(model)。模型输入的Y是对实在样本的预测或预计,咱们通常会容许它们之间有误差。 模型训练:通过数据来寻找特定的模型参数值,使模型在数据上的误差尽可能小。这个过程叫作模型训练(model training)。上面咱们介绍模型训练所波及的3个因素。 训练数据:咱们通常应用一系列的实在数据,例如多个图片的实在标签和它们蕴含的不同像素数组。咱们心愿在这个数据下面寻找模型参数来使模型的预测后果更靠近实在标签。在机器学习术语里,该数据集被称为训练数据集(training data set)或训练集(training set),一个图片被称为一个样本(sample),其实在类别叫作标签(label),用来预测标签的因素叫作特色(feature)。特色用来表征样本的特点。 损失函数:在模型训练中,咱们须要掂量预测类别与实在类别之间的误差。通常咱们会选取一个非正数作为误差,且数值越小示意误差越小。 优化算法:当模型和损失函数模式较为简单时,最优解能够间接用公式表达出来。这类解叫作解析解(analytical solution)。然而,大多数深度学习模型并没有解析解,只能通过优化算法无限次迭代模型参数来尽可能升高损失函数的值。这类解叫作数值解(numerical solution)。 模型预测:模型训练实现后,咱们将模型参数在优化算法进行时的值别离记录。留神,这里咱们失去的并不一定是最小化损失函数的最优解,而是对最优解的一个近似。而后,咱们就能够应用学出的图片分类模型来估算训练数据集以外任意一张图片所属的类别了。这里的估算也叫作模型预测、模型推断或模型测试。 MindSpore代码实现咱们将在上面代码是应用MindSpore深度学习框架实现的,上面逐渐剖析咱们我的项目中所应用的数据、模型、损失函数、优化算法、模型验证。 3.1 数据集筹备 MNIST数据集(Mixed National Institute of Standards and Technology database)是大型手写数字数据库,蕴含60000个示例的训练集以及10000个示例的测试集,每个样本图像的宽高为28*28的灰度图。 上面提供了两种数据集的应用形式: (1)数据集曾经在同级文件夹目录下时,可执行下段代码解压应用。 def unzipfile(gzip_path): """unzip dataset fileArgs: gzip_path: dataset file path"""open_file = open(gzip_path.replace('.gz',''), 'wb')gz_file = gzip.GzipFile(gzip_path)open_file.write(gz_file.read())gz_file.close()(2)文件夹中还没有数据集的时候,须要下载应用。 def download_dataset(): """Download the dataset from http://yann.lecun.com/exdb/mnist/."""print("******Downloading the MNIST dataset******")train_path = "./MNIST_Data/train/"test_path = "./MNIST_Data/test/"train_path_check = os.path.exists(train_path)test_path_check = os.path.exists(test_path)if train_path_check == False and test_path_check ==False: os.makedirs(train_path) os.makedirs(test_path)train_url = {"http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz", "http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz"}test_url = {"http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz", "http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz"}for url in train_url: url_parse = urlparse(url) # split the file name from url file_name = os.path.join(train_path,url_parse.path.split('/')[-1]) if not os.path.exists(file_name.replace('.gz','')): file = urllib.request.urlretrieve(url, file_name) unzipfile(file_name) os.remove(file_name)for url in test_url: url_parse = urlparse(url) # split the file name from url file_name = os.path.join(test_path,url_parse.path.split('/')[-1]) if not os.path.exists(file_name.replace('.gz','')): file = urllib.request.urlretrieve(url, file_name) unzipfile(file_name) os.remove(file_name)3.2 数据加强 ...

January 26, 2022 · 4 min · jiezi

关于深度学习:MindSpore分类指标之精准率召回率和F值详解二

一、精准率和召回率 在上次的分享中,咱们提到了评测分类模型的意义和准确率、AUC/ROC两种评测办法。敌人们可能就会思考分类的工作多种多样,评测模型的性能只有这两种办法吗?当然还有。这次咱们就一起来认识一下精准率(Precision)、召回率(Recall),以及这两个联合组成的F值。 咱们还是通过混同矩阵来示意: 1.png 图1-混同矩阵 精准率 咱们从表达式开始: 2.png 图2-精准率表达式 联合混同矩阵和表达式来了解,首先从分母开始(TP+FP),在分类工作中的意义是预测为正类的样本数量,分子的意义是样本类别理论为正并被预测为正的数量,它们两个的比值咱们称为精准率,精准率是针对预测后其中一个类别的评测表达式。 这里咱们重点辨别一下和精准率(Precision)准确率(Accuracy),因为这两个名词的概念很容易凌乱。 3.png 图3-精准率和准确率 通过比照咱们可能发现,准确率的分母更大,作用域更广,精准率的分母小一些,作用域也小一些。所以作用更精准。 召回率 上面咱们看召回率的表达式: 4.png 图4-召回率表达式 在表达式中的分母(TP+FN),联合混同矩阵能够晓得代表的是实在类别为某一个类别的样本数量,分子则是实在类别与预测类别雷同的样本数量。 二、精准率和召回率场景剖析 在检索畛域中,精准率和召回率又被称为查准率和查全率。咱们联合一下事实场景来理解一下查准率和查全率的现实意义。 举例说明 假如明天放假了,好开心啊!买一包瓜子庆贺一下。假期里好无聊啊,将这一包瓜子拆开数一数有多少颗瓜子,一共1000颗瓜子。展现分类能力的时候到了,通过瓜子的各种特色,将全副的瓜子分成了800颗‘好’瓜子和200颗‘坏’瓜子两个类别。终于到了验证本人分类能力的时候了。将这两个类别的瓜子一个一个嗑开吃掉发现,在这一堆800个‘好’的瓜子中,有750个是真正好的,200颗‘坏’瓜子中有100个真正坏的瓜子。 那么咱们能够晓得了1000个瓜子中有750+(200-100)=850个好瓜子。应用精准率就是(750/800),现实意义能够了解为:在咱们分类好的一类样本中,有多少是实在属于这一类别,因而精准率也能够称为查准率。应用召回率能够示意为(750/(750+100)),现实意义就能够了解为:在某一类的样本中在分类后,仍旧被分为这一类别,所以也示意一类样本有多少被召回到原类别中,因而也能够称为召回率。 举荐零碎中的应用 因为这两种指标的性质,也会常常利用到举荐零碎我的项目中,比方一个简略的音乐举荐零碎,在积攒够一定量的用户数据后,咱们就能够依据用户的历史记录做画像。(如果数据不够,这就是冷启动问题了,冷启动的解决办法有很多种,这里就不过多拓展了,持续直奔咱们的主题)用户画像实现后,就该进行召回过程了,(这里的召回是依据用户画像在海量的音乐数据中将用户可能喜爱的音乐找进去,放入召回池中。这一过程称为召回)那么这里就能够用到精准率和召回率了。在这种场景下,精准率示意:在召回池的这批音乐中有多少是我喜爱的。召回率示意:在所有我喜爱的音乐中,有多少被召回了。当然在这种状况下,如果这两个指标的值越大,阐明这个举荐零碎越优良。 三、F值 下面咱们曾经大抵理解了精准率(Precision)和召回率(Recall)。那么咱们能够再思考一下,精准率高的时候召回率就高吗?召回率高的时候精准率就高吗?后果咱们会发现,这两个并没有太大的关系,所以无论繁多的应用其中的哪一个指标,都是不全面的。那么咱们就开始合体了。 5.png 图5-F值公式 所以在精准率和召回率呈现矛盾状况的时候,咱们就须要综合思考它们,最常见的办法就是F-Measure。当参数=1时,就是最常见的F1,公式示意为: 6.png 图6-F1值公式 F1分数是精准率和召回率的谐波平均值,而谐波平均值会给予较低的值更高的权重。因而,当召回率和精准度都很高时,分类器能力失去较高的F1分数。 四、总结 通过对下面三种分类指标的剖析,咱们会发现每个表达式都各有优劣,重要的是须要联合应用场景来抉择应用。比方咱们要对一批疑似患传染病的人群进行体检,那么这种状况咱们就要将召回率放在第一位了。如果在一些视频、音乐举荐中,就会将精准率作为规范。所以在大家理解完它们的个性后,明确怎么去抉择应用就是本篇文章的次要目标。 以上内容是集体的一些了解,心愿大家多多斧正探讨!

January 25, 2022 · 1 min · jiezi

关于深度学习:自然语言处理之句法分析

一. 摘要 在自然语言解决的一个重要分支畛域——机器翻译中,句法分析占据着外围的位置,句法分析也是自然语言解决的核心技术,是机器了解语言的要害局部。句法分析的次要工作是辨认出句子所蕴含的句法成分以及这些成分之间的关系,通常会以句法树来示意句法分析的后果。本次分享将介绍句法分析相干的技术。 二. 概述 句法分析是决定自然语言解决进度的要害局部。句法分析次要有一下两个阻碍:歧义和搜寻空间。自然语言区别于人工语言的一个重要特点就是它存在着大量的歧义景象。人们能够依附大量的先验常识无效的打消掉歧义,而在机器学习中,机器在示意和获取方面存在重大的有余,所以很难向人一样进行语句的歧义打消。句法分析是一个极为简单的工作,侯选树的个数会随着句子增多出现指数级别的增长,搜寻空间微小。因而,必须要有适合的解码器,才可能做到在规定的工夫内搜寻到模型定义的最优解。 句法分析是通过词语组合分析失去句法结构的过程,而实现该过程的工具或程序被称为句法分析器。句法分析的品种很多,这里咱们依据其偏重指标分为齐全句法分析和部分句法分析两种。两者的差异在于,齐全句法分析以获取整个句子的句法结构为目标;而部分句法分析只关注部分的一些成分。 句法分析中所用办法能够简略的分为基于规定和基于统计两个类别。首先基于规定的办法在解决大规模实在文本时,会存在语法规定笼罩无限的缺点。随着基于统计学习模型的句法分析办法衰亡,句法分析器的性能一直的进步。典型的就是PCFG,它在句法分析畛域失去了很宽泛的利用。统计句法分析模型实质上是一套面向候选树的评估办法,正确的句法树会被赋予一个较高的分值,对不合理的句法树则赋予较低的分值,最终将会抉择分值最高的句法树作为最终句法分析的后果。 三. 句法分析的数据集和评测办法 统计分析办法是离不开语料数据集和评估体系做根底的。 句法分析的数据集:统计学习办法须要语料数据的撑持,相较于分词和词性标注,句法分析应用的数据集更简单,它是一种树形的标注构造,已能够称为树库。 image.png 图1:句法树模型 英文宾州树库PTB(Penn TreeBank),是目前应用最多的树库,具备很好的一致性和标注准确率。中文的树库起步建设较晚,目前比拟驰名的有中文宾州树库、清华树库、台湾中研院树库。宾夕法尼亚大学标注的汉语句法树库是绝大多数中文句法分析钻研的基准语料库。 image.png 图2:树库汉语成分标记集 句法分析的评测办法:句法分析评测的次要工作是评测句法分析器生成的树结构与手工标注的树结构之间的类似度。次要通过两个方面评测其性能:满意度和效率。满意度指的是测试句法分析器是否适合某个特定的自然语言解决工作;而效率次要是比照句法分析器的运行工夫。 目前支流的句法评测办法是PARSEVAL评测体系,这是一种粒度适中、较为理想的评测办法,次要指标有准确率、召回率、穿插括号数。其中准确率示意剖析正确的短语个数在句法分析后果中占据的比例。也就是剖析后果中与规范句法树中相匹配的短语个数占剖析后果中所有短语个数的比例。召回率能够了解为剖析失去的正确短语个数占规范分析树全副短语个数的比例。穿插括号示意剖析失去的某一个短语的覆盖范围与规范句法分析后果的某个短语的覆盖范围存在重叠但不存在蕴含关系,即形成一个穿插括号。 四. 基于PCFG的句法分析 PCFG(Probabilistic Context Free Grammar)是基于概率的短语构造分析方法,是目前较成熟的句法分析模型,也能够认为是规定办法和统计办法的联合。 PCFG是一种生成式的办法,它的短语构造文法能够示意为一个五元组(X,V,S,R,P): X是一个无限词汇的汇合,其中的元素称为词汇或者终结符。 V是一个无限标注的汇合,称为非终结符汇合。 S称为文法的开始符号,并且蕴含于V。 R是有序偶对(,)的汇合,就是产生的规定集。 P代表每个产生规定的统计概率。 PCFG用于解决以下的问题: 1) 基于PCFG能够计算分析树的概率值。 2) 若一个句子有多个概率树,能够根据概率值对所有的分析树进行排序。 3) PCFG能够用于进行句法排歧,面对多个剖析后果抉择概率值最大的。 上面通过一个例子展现PCFG求解最优句法树的过程。首先有一个规定集: image.png 图3:PCFG规定集 其中第一列示意规定,第二列示意规定成立的概率。 给定句子S:astronomers saw stars with ears,通过PCFG和上述的规定集,失去如下两个句法树: image.png 图4:句法树展现图 而后计算两棵句法树的概率: P(T1) = S×NP×VP×V×NP×NP×PP×P×NP = 1.0×0.1×0.7×1.0×0.4×0.18×1.0×1.0×0.18 = 0.0009072 P(T2) = S×NP×VP×VP×V×NP×PP×P×NP = 1.0×0.1×0.3×0.7×1.0×0.18×1.0×1.0×0.18 = 0.0006804 比照两棵句法树的最终概率值,抉择T1作为最终的句法树。 五. 基于最大距离马尔可夫网络的句法分析 最大距离属于SVM(反对向量机)中的外围实践,而马尔可夫网络是概率图模型中一种具备肯定构造解决关系能力的算法。最大距离马尔可夫网络(Max-Margin Markov Networks)就是这两者的汇合办法,可能解决简单的结构化预测问题,尤为适宜用于句法分析工作。这是一种判别式的句法分析办法,次要是通过多个特色来打消剖析过程中的歧义。判别函数如下: ...

January 25, 2022 · 1 min · jiezi

关于深度学习:自然语言处理之文本向量化

一. 摘要 本次内容将分享文本向量化的一些办法。文本向量化的办法有很多,次要可分为以下两个大类:基于统计的办法、基于神经网络的办法。在自然语言解决的畛域中,文本向量化是文本示意的一种重要形式。文本向量化的次要目标是将文本示意成一系列可能表白文本语义的向量。无论是中文还是英文,词语都是表白文本处理的最根本单元。以后阶段,对文本向量化大部分的钻研都是通过词向量化实现的。 二. 向量化算法word2vec 词袋(Bag of Word)模型是最早的以语言为根本处理单元的文本向量化办法。上面咱们将通过示例展现该办法的原理。 例子:句子1:“我喜爱坐高铁回家”。;句子2:“中国高铁十分快”。 句子1分词:“我、喜爱、坐、高铁、回家”; 句子2分词:“中国、高铁、十分、块”。 根据上述两句呈现的词语,构建一个字典:{“我”:1,“喜爱”:2,“坐”:3,“高铁”:4,“回家”:5,“中国”:6,“十分”:7,“快”:8} 该字典中蕴含8个词,每个词都有惟一索引,并且它们呈现的程序是没有关联的,依据这个字典,咱们将上述两句从新表白为两个向量: [1,1,1,1,1,0,0,0] [0,0,0,1,0,1,1,1] 这两个向量共蕴含8个元素,其中第i个元素示意字典中第i个词语在句子中呈现的次数,因而BOW模型认为是一种统计直方图。在文本检索和解决中,能够通过该模型很不便的计算词频。该办法尽管简略,但却存在着三个大问题: 维度劫难:很显著,如果上述的字典中蕴含了9999个词语,那么每一个文本都须要用9999维的向量能力示意,如此高维度的向量很须要很大的计算力。 无奈利用词语的程序信息。 存在语义鸿沟的问题。 互联网的高速倒退,随之产生的是大量无标注的数据,所以目前的次要方向是利用无标注数据挖掘出有价值的信息。词向量(word2vec)技术就是利用神经网络从大量的无标注文本中提取有用的信息。 能够说词语是表白语义的根本单元。因为词袋模型只是将词语符号化,所以在词袋模型中是无奈蕴含任何语义信息的。所以如何通过“词示意”蕴含语义信息是该畛域的次要门槛。目前有散布假说的提出,为解决上述问题提供了实践根底。该假说的次要思维是:上下文类似的词,其蕴含的语义也类似。利用上下文散布示意语义的办法就是词空间模型 三. 神经网络语言模型 神经网络模型逐步在各个领域中失去蓬勃发展,应用神经网络结构词示意的最大长处是能够灵便的对上下文进行建模。神经网络词向量模型就是依据上下文与指标词之间的关系进行建模。 本次次要介绍一下神经网络语言模型(Neural Network Language Model,NNLM),可求解二元语言模型。NNLM模型间接通过一个神经网络构造对n元条件概率进行预计。NNLM模型的根本构造如下图1中所示: image.png 图1:NNLM模型构造 对于图1中的流程大抵可形容为:首先从语料库中收集一系列长度为n的文本序列Wi-(n-1),...,Wi-1,Wi,并且假如这些长度为n的文本序列组成的汇合为D,那么此时的NNLM指标函数可示意为: image.png 对于上述的表达式能够了解为:在输出词序列为Wi-(n-1),...,Wi-1的状况下,计算指标词Wi的概率。 在图1所示的神经网络语言模型是十分经典的三层前馈神经网络构造,其中包含三层:输出层、暗藏层和输入层。这里为了解决词袋模型数据稠密的问题,输出层的输出为低维度的、严密的词向量,输出层的操作就是将词序列Wi-(n-1),...,Wi-1中的每个词向量按程序拼接。可示意为: image.png 在输出层失去了通过计算的x之后,将x输出暗藏层失去h,再将h接入输入层就能够失去输入变量y,暗藏层变量h和输入变量y的计算表达式为: image.png 在下面表达式中H为输出层到暗藏层的权重矩阵,其维度为|h|×(n-1)|e|;U为暗藏层到输入层的权重矩阵,其维度为|V|×|h|,|V|示意的是词表的大小;b则是模型中的偏置项。NNLM模型中计算量最大的操作就是从暗藏层到输入层的矩阵运算Uh。输入的变量y则是一个|V|维的向量,该向量的每一重量顺次对应下一个词表中某一个词的可能性。用y(w)示意由NNLM模型计算失去的指标词w的输出量,并且为了保障输入y(w)的值为概率值,所以还须要对输入层进行归一化解决。个别的解决办法是在输入层之后退出softmax函数,就能够将y转成对应的概率值,具体表达式如下: image.png 因为NNLM模型应用的是低维紧凑的词向量对上下文进行示意,这很好的解决了词袋模型带来的数据稠密、语义鸿沟的问题。因而,NNLM模型是一种很好的n元语言模型,并且在另一个方面,在类似的上下文语境中,NNLM模型能够预测出类似的指标词,这是传统的模型所不具备的。例如,在预料中有A=“詹姆斯率领湖人队博得了总冠军”呈现过999次,而B=“浓眉哥率领湖人队博得了总冠军”只呈现了9次。那么如果是依据频率来计算概率的话,P(A)必定会远远大于P(B)的概率。然而比照看语料A和语料B惟一的区别在于詹姆斯和浓眉哥,这两个词无论是语义和所处的语法地位都是十分类似的,所以P(A)远大于P(B)就是不合理的。这里如果是采纳NNLM模型来计算的话,失去P(A)和P(B)的概率后果应该是大抵相当的,次要起因是NNLM模型采纳低维的向量示意词语,假设类似度词的词向量也大抵类似。 因为输入的y(w)代表上文中呈现词序列Wi-(n-1),...,Wi-1的状况下,下一个词wi的概率。那么在语料库D中最大化y(wi)的值,就是NNLM模型的指标函数。 image.png 个别能够应用随机梯度降落的优化算法对NNLM模型进行训练。在训练每一个batch时,会随机的从语料库D中抽取若干的样本进行训练,随机梯度降落的数学表达式为: image.png 其上述表达式中,符号示意为学习率参数,符号示意为模型中波及到的所有参数,包含NNLM模型中的权重、偏置以及输出的词向量。 四. 总结 本次的分享首先举例说明了应用一般词袋模型进行词向量操作的局限性,词向量办法面对的次要难题就是解决维度过高、语义鸿沟等问题。前面便次要接介绍了基于神经网络的词向量模型,通过根底的输出层、暗藏层、输入层的分局部介绍,形容了神经网络词向量模型。 以上是集体的一些见解,了解无限,欢送大家斧正探讨!

January 25, 2022 · 1 min · jiezi

关于深度学习:恒源云Teacher-Forcing训练小技巧来啦~

文章起源 | 恒源云社区 原文地址 | Teacher Forcing 原文作者 | Mathor 年底啦年底啦~要放假啦放假了~不整大活,搞点小内容分享一下吧! 注释开始本文次要介绍一下Teacher Forcing这个训练过程中的技巧 以Seq2Seq为例,在训练过程中,\( t_0 \) 时刻Decoder的输出是"<SOS>“,输入可能并不是正确的后果"the”,比方说输入了一个谬误的后果"like"。那么问题就来了,到了\( t_1 \)时刻,应该持续以正确的单词"the"作为输出,还是将上一时刻\( t_0 \)的输入"like"作为输出呢? 其实下面的问题,波及到两种齐全不同的训练形式 不论上一时刻输入是什么,以后时刻的输出总是规定好的,依照给定的target进行输出以后时刻的输出和上一时刻的输入,是有关联的。具体来说就是,以后时刻的输出就是上一时刻的输入如果要用比拟不太谨严的比喻来说,第一种训练形式相当于就是小明学习的时候旁边坐了一位学霸,当发现小明在做序列生成题目的时候, 每一步都把上一步的正确答案给他偷看。那么小明当然只须要顺着上一步的答案的思路,计算出这一步的后果就行了。这种做法,比起本人每一步都瞎猜, 当然可能无效的防止误差进一步放大,同时在学习后期还能通过学霸辅导的这种形式疾速学到很多的常识。然而第一种训练形式存在以下的问题: 在解码的时候生成的字符都会受到 Ground-Truth 的束缚,心愿模型生成的后果都必须和参考句一一对应。这种束缚在训练过程中缩小模型发散,放慢收敛速度。然而一方面也扼杀了翻译多样性的可能在这种束缚下,还会导致一种叫做 Overcorrect(矫枉过正) 的问题。例如:待生成句的Reference为: “We should comply with the rule.”模型在解码阶段中途预测进去:“We should abide”然而依照规定,将第三个ground-truth “comply” 作为第四步的输出。那么模型依据以往学习的pattern,有可能在第四步预测到的是 “with”模型最终的生成变成了 “We should abide with”事实上,“abide with” 用法是不正确的,然而因为ground-truth “comply” 的烦扰,模型处于矫枉过正的状态,生成了不通顺的语句如果应用第二种形式,其中只有一步预测错,前面的预测就会越来越跑偏,很难收敛 而Teacher Forcing正好介于上述两种训练方法之间。具体来说就是,训练过程中的每个时刻,有肯定概率应用上一时刻的输入作为输出,也有肯定概率应用正确的target作为输出 能够参考上面的伪代码 teacher_forcing_ratio = 0.5teacher_forcing = random.random() < teacher_forcing_ratioif teacher_forcing: passelse: pass

January 24, 2022 · 1 min · jiezi

关于深度学习:通过强化学习和官方API制作星露谷物语的自动钓鱼mod

这是一个我曾经断断续续地钻研了很长一段时间的我的项目。在此我的项目之前我从未尝试过批改游戏,也从未胜利训练过“真正的”强化学习代理(智能体)。所以这个我的项目挑战是:解决钓鱼这个问题的“状态空间”是什么。当应用一些简略的 RL 框架进行编码时,框架自身能够为咱们提供代理、环境和处分,咱们不用思考问题的建模局部。然而在游戏中,必须思考模型将读取每一帧的状态以及模型将提供给游戏的输出,而后相应地收集适合的处分,此外还必须确保模型在游戏中具备正确的视角(它只能看到玩家看到的货色),否则它可能只是学会利用谬误或者基本不收敛。 我的指标是编写一个能读取钓鱼小游戏状态并完满玩游戏的代理。指标的后果是应用官网 Stardew Valley 的 modding API 用 C# 编写一个主动钓鱼的mod。该模块加载了一个用 Python 训练的序列化 DQN 模型。所以首先要从游戏中收集数据,而后用这些数据用 Pytorch 训练一个简略的 DQN。通过一些迭代后,能够应用 ONNX 生成一个序列化模型,而后从 C# 端加载模型,并在每一帧中接管钓鱼小游戏的状态作为输出,并(心愿)在每一帧上输入正确的动作。 钓鱼迷你游戏这个代理是在SMAPI的帮忙下编写的,SMAPI是Stardew Valley官网的mod API。API容许我在运行时拜访游戏内存,并提供我所须要的所有去发明一个与游戏状态进行交互并实时向游戏提供输出的代理。 在钓鱼小游戏中,咱们必须通过点击鼠标左键让“鱼钩”(一个绿色条)与挪动的鱼对齐。鱼在这条竖线上无规律地挪动,鱼钩条与鱼对齐时,绿色条就会填满一些,如果鱼胜利逃离绿色条就会开始变空。当你填满绿色的条形图时,你会钓到鱼,当它绿条没有时鱼就跑了。 强化学习问题定义 所以这里只须要每帧从游戏内存中读取这些特定属性并将它们保留为在第 t 帧的状态。通过API咱们能够查看并从游戏内存中读取特定属性的代码,对于主动钓鱼,须要在钓鱼小游戏期间跟踪的 4 个变量。 “钩子”核心的地位、鱼的地位、钩子的速度和绿色条的填充量(这是处分!)。 游戏外部应用的名称有点奇怪,以下是读取它们的代码。 / Update State// hook positionbobberBarPos = Helper.Reflection.GetField<float>(bar, "bobberBarPos").GetValue();// fish positionbobberPosition = Helper.Reflection.GetField<float>(bar, "bobberPosition").GetValue();// hook speedbobberBarSpeed = Helper.Reflection.GetField<float>(bar, "bobberBarSpeed").GetValue();// amount of green bar filleddistanceFromCatching = Helper.Reflection.GetField<float>(bar, "distanceFromCatching").GetValue();前三个定义了咱们的状态: 这是模型能够在每一帧上能够获取的状态,要将其设置为强化学习问题还须要应用处分来领导训练。 处分将是绿色条的填充量,这是里的变量名称为 distanceFromCatching。 这个值的范畴从 0 到 1,正好非常适合作为处分。 ...

January 24, 2022 · 2 min · jiezi

关于深度学习:为神经网络选择正确的激活函数

咱们都晓得神经网络模型中应用激活函数的次要目标是将非线性个性引入到咱们的网络中,强化网络的学习能力。激活函数利用于暗藏层和输入层中每个节点的称为 z 的输出加权和(此处输出能够是原始数据或前一层的输入)。 在本篇文章中咱们将探讨神经网络中常见的激活函数,并应用可视化技术帮忙你理解激活函数的函数定义和不同的应用场景。 在看完本文章后,你能够将分明地理解何时应用哪种激活函数,并理解不同激活函数的定义。 神经网络中不同层的激活函数神经网络通常由三种类型的层组成:输出层、暗藏层和输入层。 输出层只保留输出数据,不执行任何计算。因而不须要应用激活函数。 在神经网络的暗藏层中须要应用非线性激活函数, 这是因为须要在网络中引入非线性来学习简单的模式。如果没有非线性激活函数,具备许多暗藏层的神经网络将成为一个微小的线性回归模型,这对于从事实世界数据中学习简单模式毫无用处。依据咱们在暗藏层中应用的激活函数的类型,神经网络模型的性能会有很大差别。 在神经网络的输入层内应用激活函数的抉择取决于咱们要解决的问题类型。 线性与非线性函数大多数激活函数是非线性的。然而有时也在神经网络中应用线性激活函数,例如在解决回归问题的神经网络模型的输入层中应用线性激活函数。 一个线性函数(称为 f)承受输出 z 并返回输入 cz,它是输出乘以常数 c。在数学上,这能够示意为 f(z) = cz。当 c=1 时,函数按原样返回输出,并且不对输出进行任何更改。二维空间中线性函数的图形是一条直线。 任何不是线性的函数都能够归类为非线性函数。非线性函数的图形不是一条直线。它能够是一个简单的模式,也能够是两个或多个线性组件的组合。 不同类型的激活函数上面将探讨神经网络中罕用的激活函数。 1、Sigmoid 次要特点: 也是逻辑回归模型中应用的逻辑函数。sigmoid 函数是一个 s 形图。这是一个非线性函数。sigmoid 函数将其输出转换为 0 到 1 之间的概率值。它将大的负值转换为 0,将大的正值转换为 1。对于输出 0,它返回 0.5。所以 0.5 被称为阈值,它能够决定给定的输出属于什么类型的两个类。用法: 晚期,Sigmoid 函数被用作 MLP、CNN 和 RNN 中暗藏层的激活函数。当初,sigmoid 函数仍在 RNN 中应用。咱们通常不将 sigmoid 函数用于 MLP 和 CNN 中的暗藏层,因为太慢了,咱们在那里应用 ReLU 或 Leaky ReLU。当咱们构建二进制分类器时,输入层必须应用 sigmoid 函数,其中输入被解释为类标签,具体取决于函数返回的输出的概率值。 当咱们应用 sigmoid 函数建设一个多标签分类模型时,其中每个互相蕴含的类都有两个后果。不要将此与多类分类模型混同。 因为以下毛病,咱们通常不在暗藏层中应用 sigmoid 函数。 ...

January 21, 2022 · 2 min · jiezi

关于深度学习:恒源云gpusharecomBytePair-Encoding算法超详细讲解

文章起源 | 恒源云社区 原文地址 | BPE 算法详解 原文作者 | Mathor Byte Pair Encoding在NLP模型中,输出通常是一个句子,例如"I went to New York last week.",一句话中蕴含很多单词(token)。传统的做法是将这些单词以空格进行分隔,例如['i', 'went', 'to', 'New', 'York', 'last', 'week']。然而这种做法存在很多问题,例如模型无奈通过old, older, oldest之间的关系学到smart, smarter, smartest之间的关系。如果咱们能应用将一个token分成多个subtokens,下面的问题就能很好的解决。本文将详述目前比拟罕用的subtokens算法——BPE(Byte-Pair Encoding) 当初性能比拟好一些的NLP模型,例如GPT、BERT、RoBERTa等,在数据预处理的时候都会有WordPiece的过程,其次要的实现形式就是BPE(Byte-Pair Encoding)。具体来说,例如['loved', 'loving', 'loves']这三个单词。其实自身的语义都是"爱"的意思,然而如果咱们以词为单位,那它们就算不一样的词,在英语中不同后缀的词十分的多,就会使得词表变的很大,训练速度变慢,训练的成果也不是太好。BPE算法通过训练,可能把下面的3个单词拆分成["lov","ed","ing","es"]几局部,这样能够把词的自身的意思和时态离开,无效的缩小了词表的数量。算法流程如下: 设定最大subwords个数$V$将所有单词拆分为单个字符,并在最初增加一个进行符</w>,同时标记出该单词呈现的次数。例如,"low"这个单词呈现了5次,那么它将会被解决为{'l o w </w>': 5}统计每一个间断字节对的呈现频率,抉择最高频者合并成新的subword反复第3步直到达到第1步设定的subwords词表大小或下一个最高频的字节对呈现频率为1例如 {'l o w </w>': 5, 'l o w e r </w>': 2, 'n e w e s t </w>': 6, 'w i d e s t </w>': 3}呈现最频繁的字节对是 e和s ,共呈现了6+3=9次,因而将它们合并 ...

January 20, 2022 · 5 min · jiezi

关于深度学习:gpusharecom基于去噪Transformer的无监督句子编码EMNLP-2021

文章起源 | 恒源云社区 原文地址 | 论文小记 原文作者 | Mathor 这几天忙里偷闲去社区看了看各位版主一开始发的文章。重点找了我最喜爱的版主Mathor的文章,认真一查,居然曾经发了90多篇,不愧是社区大佬本佬了! 想着看都看了,那就棘手搬运一下大佬的文章吧! 接下来跟着小编的脚步,一起看上来吧~ 注释开始EMNLP2021 Findings上有一篇名为TSDAE: Using Transformer-based Sequential Denoising Auto-Encoder for Unsupervised Sentence Embedding Learning的论文,利用Transformer构造无监督训练句子编码,网络架构如下所示:具体来说,输出的文本增加了一些确定的噪声,例如删除、替换、增加、Mask一些词等办法。Encoder须要将含有噪声的句子编码为一个固定大小的向量,而后利用Decoder将本来的不带噪声的句子还原。说是这么说,然而其中有十分多细节,首先是训练指标其中,\( D \)是训练集;\( x = x_1x_2\cdots x_l \)是长度为lll的输出句子;\( \tilde{x} \)是\( x \)增加噪声之后的句子;\( e_t \)是词\( x_t \)的word embedding;\( N \)为Vocabulary size;\( h_t \)是Decoder第\( t \)步输入的hidden state 不同于原始的Transformer,作者提出的办法,Decoder只利用Encoder输入的固定大小的向量进行解码,具体来说,Encoder-Decoder之间的cross-attention形式化地示意如下:其中,\( H^{(k)}\in \mathbb{R}^{t\times d} \)是Decoder第\( k \)层\( t \)个解码步骤内的hidden state;\( d \)是句向量的维度(Encoder输入向量的维度);\( [s^T]\in \mathbb{R}^{1\times d} \)是Encoder输入的句子(行)向量。从下面的公式咱们能够看出,不管哪一层的cross-attention,\( K \)和\( V \)永远都是\( s^T \),作者这样设计的目标是为了人为给模型增加一个瓶颈,如果Encoder编码的句向量\( s^T \)不够精确,Decoder就很难解码胜利,换句话说,这样设计是为了使得Encoder编码的更加精确。训练完结后如果须要提取句向量只须要用Encoder即可 ...

January 19, 2022 · 1 min · jiezi

关于深度学习:5分钟-NLP系列-11-个词嵌入模型总结

TF-IDF, Word2Vec, GloVe, FastText, ELMO, CoVe, BERT, RoBERTa 词嵌入在深度模型中的作用是为上游工作(如序列标记和文本分类)提供输出特色。在过来的十年中,曾经提出了很多种词嵌入办法,本片文章将对这些词嵌入的模型做一个残缺的总结 与上下文无关这类模型学习到的表征的特点是,在不思考单词上下文的状况下,每个单词都是独特的和不同的。 不须要学习 Bag-of-words(词袋):一个文本(如一个句子或一个文档)被示意为它的词袋,不思考语法、词序。 TF-IDF:通过获取词的频率(TF)并乘以词的逆文档频率(IDF)来失去这个分数。 须要进行学习 Word2Vec:经过训练以重建单词的语言上下文的浅层(两层)神经网络。Word2vec 能够利用两种模型架构中的任何一种:间断词袋 (CBOW) 或间断skip-gram。在 CBOW 架构中,模型从四周上下文词的窗口中预测以后词。在间断skip-gram架构中,模型应用以后词来预测上下文的四周窗口。 GloVe(Global Vectors for Word Representation):训练是在语料库中汇总的全局单词-单词共现统计数据上执行的,后果示意显示了单词向量空间的线性子结构。 FastText:与 GloVe 不同,它通过将每个单词视为由字符 n-gram 组成而不是整个单词来嵌入单词。此性能使其不仅能够学习生僻词,还能够学习词汇表外的词。 上下文相干与上下文无关的词嵌入不同,上下文相干的办法依据其上下文为同一个词学习不同的嵌入示意。 基于 RNN ELMO(Embeddings from Language Model):应用基于字符的编码层和两个 BiLSTM 层的神经语言模型来学习高低文化的词示意,能够学习情景化的单词示意。 CoVe(Contextualized Word Vectors):应用深度 LSTM 编码器,该编码器来自通过机器翻译训练的注意力seq2seq模型,将单词向量高低文化。 基于Transformers BERT(Bidirectional Encoder Representations from Transformers):在大型跨域语料库上训练的基于Transformers的语言示意模型。并应用掩码语言模型来预测序列中随机被遮蔽的单词,还通过下一句预测工作,用于学习句子之间的关联。 XLM(Cross-lingual Language Model):一种基于单语言语种的非监督办法来学习跨语种示意的跨语言模型,通过将不同语言放在一起采纳新的训练指标进行训练,从而让模型可能把握更多的跨语言信息。 RoBERTa (Robustly Optimized BERT Pretraining Approach):它建设在 BERT 之上并批改了要害超参数,移除了下一句预训练指标,并以更大的小批量和学习率进行训练。 ALBERT(A Lite BERT for Self-supervised Learning of Language Representations):它提出了参数缩小技术,以升高内存耗费并进步 BERT 的训练速度。 ...

January 19, 2022 · 1 min · jiezi

关于深度学习:使用图神经网络从稀疏数据中学习连续时间偏微分方程

这是一篇在2020年发表在ICLR的论文,论文应用图神经网络从稠密数据中学习间断工夫偏微分方程,文章提出的模型次要翻新点是容许任意空间和工夫离散化,也就是说在求解偏微分划分网格时,网格能够是不平均的,因为所求解的管制方程是未知的,在示意管制方程时,作者应用了消息传递的图神经网络进行参数化。 在许多零碎中偏微分方程至关重要。然而求解大多数偏微分方程长期以来始终是一项艰巨的工作,通常须要简单的数值求解技巧,尤其是当方程的参数或边界条件局部未知时。 图神经网络 (GNN) 因为在非欧几里得零碎建模中具备宽泛的适用性,所以能够为求解偏微分方程提供了新鲜而令人兴奋的概念。 在本文中,咱们将回顾一种应用图神经网络来示意偏微分方程中重要的工夫导数重量的办法。 一个常见的偏微分方程定义为, 其中零碎绝对于空间坐标 x 和工夫 t 的工夫演变取决于其本身及其绝对于空间坐标 x 的一阶或更高阶导数。 这种模式的偏微分方程是一大类迷信问题的根底,在声波、流体、热扩散等具备流传个性的零碎中有着宽泛的利用。 [1] 提出应用 GNN 迫近离散点网格的函数 F,将原方程用直线法(MOL)离散化,选取零碎域 中的 N 个节点,因而函数 F 为 在这些空间节点上离散化,能够示意为 其中 N(i) 是 xi 处相邻节点的一组索引,x{N(i)} 与 u{N(i)} 是 N(i) 中节点的地位和状态。 咱们将用 G=(V, E) 示意无向图,其中 V 作为顶点集,E 作为边集。为了构建这个图,首先对离散点应用Delaunay三角剖分,如果两个节点在至多一个三角形的同一边上则认为两个节点相邻节点,如下图所示 一组点的 Delaunay 三角剖分。绿色和橙色点被认为是街坊,因为它们共享雷同的边缘。起源[1] 而后通过应用神经网络的消息传递 (MPNN) 对函数 F 进行建模,通过K个图流传暗藏状态,每层 k 首先为每个节点 i 收集音讯,而后更新相应的节点状态, 其中、是DNN参数化的可微函数, 而后用最初一层图形来计算PDE, 为了监督模型的学习,应用均方误差观测状态和预计状态之间的差别。 与数据工夫距离较宽的纯离散工夫模型相比,这种办法的劣势在于它能够在间断工夫预测零碎的状态,同时在离散工夫学习零碎的状态。 a)热传导方程的绝对测试误差。b)实在和学习过的零碎动力学。起源[1] 这种进化机制在数学上由偏微分方程形容,图神经网络将这些机制形象为节点(或边)之间的信息流。论文中提到图神经网络将进一步推动科学研究和社会经济,因为它们与形容自然界和人类社会中宽泛存在的非欧几里得数据或零碎的天然构造相关性。 ...

January 18, 2022 · 1 min · jiezi

关于深度学习:深入了解-TabNet-架构详解和分类代码实现

Google公布的TabNet是一种针对于表格数据的神经网络,它通过相似于加性模型的程序注意力机制(sequential attention mechanism)实现了instance-wise的特征选择,还通过encoder-decoder框架实现了自监督学习。 表格数据是日常中用到的最多的数据类型。例如信用卡的欺诈检测:咱们提取交易、身份、产品和网络属性(并将它们放入一个大的特色表中,不同的机器学习模型能够轻松地应用这些特色进行训练和推理。基于决策树的模型(例如随机森林或 XGBoost)是解决表格数据的首选算法,因为它们的性能、可解释性、训练速度和鲁棒性都是目前最好的。 然而神经网络在许多畛域被认为是最先进的,并且在具备起码特色工程的大型数据集上体现特地好。咱们的许多客户都有大量交易量,深度学习是进步模型在欺诈检测方面性能的潜在路径。 在这篇文章中,咱们将深入研究称为 TabNet (Arik & Pfister (2019)) 的神经网络架构,该架构旨在可解释并与表格数据很好地配合应用。在解释了它背地的要害构建块和想法之后,您将理解如何在 TensorFlow 中实现它以及如何将其利用于欺诈检测数据集,如果你应用Pytorch也不必放心,TabNet有各种深度学习框架的实现。 TabNetTabNet 应用 Sequential Attention 的思维模拟决策树的行为。简略地说,能够将其视为一个多步神经网络,在每一步利用两个要害操作: Attentive Transformer 抉择最重要的特色在下一步解决通过Feature Transformer 将特色解决成更有用的示意模型最初应用Feature Transformer 的输入稍后用于预测。TabNet 同时应用 Attentive 和 Feature Transformers,可能模仿基于树的模型的决策过程。例如以下的成人人口普查支出数据集的预测,模型可能抉择和解决对手头工作最有用的特色,从而进步可解释性和学习能力。 Attentive 和 Feature Transformer 的要害构建块是所谓的 Feature Blocks,所以让咱们先来摸索一下。 Feature Block 特色块Feature Block由程序利用的全连贯(FC)或密集层和批量归一化(BN)组成。此外,对于Feature Transformer ,输入通过 GLU 激活层传递。 GLU(与 sigmoid 门相同)的次要性能是容许暗藏单元更深刻地流传到模型中并避免梯度爆炸或隐没。 def glu(x, n_units=None): """Generalized linear unit nonlinear activation.""" return x[:, :n_units] * tf.nn.sigmoid(x[:, n_units:])原论文在训练过程中应用了Ghost Batch Normalisation来进步收敛速度。如果你感兴趣,你能够搜寻下相干的介绍,但在本文中咱们将应用默认的BN层。 ...

January 17, 2022 · 3 min · jiezi

关于深度学习:Pytorch之SpatialShiftOperation的5种实现策略

Pytorch之Spatial-Shift-Operation的5种实现策略本文已受权极市平台, 并首发于极市平台公众号. 未经容许不得二次转载.原始文档(可能会进一步更新): https://www.yuque.com/lart/ug... 前言之前看了一些应用空间偏移操作来代替区域卷积运算的论文: 粗看: https://www.yuque.com/lart/ar... (CVPR 2018) [Grouped Shift] Shift: A Zero FLOP, Zero Parameter Alternative to Spatial Convolutions:(ICCV 2019) 4-Connected Shift Residual Networks(NIPS 2018) [Active Shift] Constructing Fast Network through Deconstruction of Convolution(CVPR 2019) [Sparse Shift] All You Need Is a Few Shifts: Designing Efficient Convolutional Neural Networks for Image Classification细看: Vision MLP之Hire-MLP Vision MLP via Hierarchical Rearrangement Hire-MLP: Vision MLP via Hierarchical Rearrangement:https://www.yuque.com/lart/pa...Visoin MLP之CycleMLP A MLP-like Architecture for Dense Prediction ...

January 16, 2022 · 15 min · jiezi

关于深度学习:论文推荐在早期训练阶段预测下游模型性能

预训练大规模深度神经网络(NN),并针对上游工作进行微调已成为深度学习畛域的现状。钻研人员面临的一个挑战是如何为给定的上游工作无效地抉择最合适的预训练模型,因为这个过程通常须要在模型训练中用于性能预测的低廉计算成本。 在新论文 Neural Capacitance: A New Perspective of Neural Network Selection via Edge Dynamics 中,来自 Rensselaer Polytechnic Institute、Thomas J. Watson 钻研核心和加州大学洛杉矶分校的钻研小组提出了一种针对上游工作的无效神经网络抉择的新框架。该办法利用模型的累积信息来预测模型的预测能力,在神经网络训练的晚期阶段这样做能够节俭资源。 该团队总结了他们的论断: 将神经网络训练看作是一个基于突触连贯的动静零碎,并首次从宏观角度钻研突触连贯的相互作用。提出了用于神经网络模型抉择的神经电容度量eff。基于5个基准数据集的17个预训练模型的试验结果表明,咱们的eff办法优于现有的学习曲线预测办法。在CIFAR10/CIFAR100/SVHN/Fashion MNIST/Birds上,依据训练前模型的性能,论文的办法比最佳基线进步了9.1/38.3/12.4/65.3/40.1%。 论文所提出的框架基于这样的思维,即神经网络训练期间的反向流传等效于突触连贯(边缘)的动静演变,并且收敛神经网络与由这些边缘组成的网络系统的均衡状态相关联。它还借鉴了以前的钻研,表明简单的事实世界零碎(例如动物-传粉媒介的相互作用和 COVID-19 的流传)能够用图网络进行示意。 钻研人员将 NN 训练视为突触连贯上的动静零碎并首次以宏观形式摸索这些突触连贯相互作用。他们提出“eff”作为表征生物和人工神经网络的通用神经电容度量(neural capacitance metric),能够为可训练权重构建线图并以与个别动静零碎雷同的模式重新制定训练动静零碎,使eff属性可能在训练过程的晚期阶段通过大量察看预测图神经网络的最终准确性。 该团队在 17 个预训练 ImageNet 模型上评估了他们的框架,包含 AlexNet、VGGs (VGG16/19)、ResNets (ResNet50/50V2/101/101V2/152/152V2)、DenseNets (DenseNet121/169/201)、MobileNets (MobileNet 和 MobileNetV2) ,Inceptions(InceptionV3,InceptionResNetV2)和Xception。他们还将基于 eff 的办法与其余各种模型排名基线进行了比拟。 在试验中,基于神经电容 eff 的办法优于以后的学习曲线预测办法,并在 CIFAR10/CIFAR100、SVHN、Fashion MNIST 和 Birds 数据集的最佳基线上获得了显着的绝对改良。 后果验证了 eff 作为基于晚期训练后果预测一组预训练模型的排名的无效指标。团队打算在将来摸索更多的相干钻研方向,例如简化邻接矩阵 P 以捕获突触连贯之间的依赖和互相交互,将框架扩大到 NAS 基准以抉择最佳子网络,以及设计一种高效的算法间接 基于 eff 优化 NN 架构。 ...

January 16, 2022 · 1 min · jiezi

关于深度学习:恒源云语音识别与语义处理领域之低资源机器翻译综述

文章起源 | 恒源云社区 原文地址 | 低资源机器翻译综述 原文作者 | 角灰 摘要神经机器翻译成果十分好,但须要大量的平行语料,因而有了低资源翻译的钻研。本文依照按数据的利用对低资源翻译分为3类: 利用单语数据利用辅助语言利用多模态数据 论断和将来方向目前还有如下凋谢问题: 在多语言迁徙学习中,尚不晓得应该用多少语言、哪些语言。在迁徙学习中如何解决未见过语言的词表如何高效抉择数轴语言双语词典十分有用且易得,目前的钻研次要用在源语言和目标语言上,如何用在多语言迁徙学习中的低资源和辅助语言上思考到多模态数据,语音有晋升翻译性能的后劲,同时也有许多限度,比方有同音异字目前在低资源翻译上取得成功的办法,或者有大量单语语料,或者有类似的富资源语言。如果两个都没有怎么办,如阿迪格语和锡伯语。2.利用单语数据 2.1 回译、前向翻译回译:用tgt2src的反向翻译模型将目标语言的单语语料t转换为源语言,从而失去伪平行数据Bp(tgt2src(t),t)。前向翻译:相同,用src2tgt的正向翻译模型将源语言的单语语料s转换为目标语言,从而失去伪平行数据Bp’(s, src2tgt(s))。将产生的伪数据Bp, Bp’和真的平行语料Dp混合后训练正向模型有助于性能晋升。除了应用术搜寻生成伪数据外,还有许多办法: (1)依据输入概率分布随机采样(2)在源语言增加噪声,再联合术搜寻生成(3)对术搜寻生成的句子事后增加标签随机采样和加噪声只在富资源语言上见效,而第三种预增加标签在富、低资源翻译上都体现最好。除此之外,在低资源翻译上,将目标语言拷贝到源语言也能进一步晋升翻译品质。 2.2 双向联结训练(1)思考到源语言和目标语言都很稀缺的状况,能够应用对偶学习,将源语言x经前向模型失去y’,再输出反向模型回译成x’,优化x和x’的重建损失。前面有人提出multi-agent进一步晋升对偶学习。,(2)直观上,更好的回译模型带来更好的伪数据,从而训练出更好的翻译零碎。应用迭代回译能够反复执行回译、训练的过程,从而使模型生成越来越高质量的句子,失去更好的NMT零碎,流程如下图: 2.3无监督NMT为解决零资源翻译的场景,罕用的步骤蕴含两个局部:(1)双语对齐,使模型能对齐两种语言:a.双语词嵌入b.降噪自编码器c.无监督统计机器翻译d.语言模型预训练(2)翻译晋升,通过迭代学习晋升翻译品质:a.迭代回译,见2.2b.过滤低质量的伪数据c.Loss种加正则,避免训练时忘记双语嵌入d.同时用统计、神经机器翻译模型进行回译 2.4语言模型预训练预训练语言模型能晋升对语言的了解和生成能力,而NMT同时须要这两种能力,按是否联结训练编码器和解码器分为两类:(1)拆散训练:如XLM(2)联结训练:如MASS,Bart,T5 2.5利用类似语料类似语料即波及雷同实体的不同语言单语语料,能够从中开掘隐含的平行语料。如LASER。 2.6利用双语词典加强(1)用于罕见词翻译(2)逐词翻译(3)基于词典,放大源语言和目标语言之间嵌入空间的差距 2.7 小结以上办法能够组合应用,如回译和联结训练 3. 利用辅助语言 3.1 多语言训练:低资源语言对与其余语言对在一个模型中联结训练长处:(1)较训练多个模型,多语言训练显著升高训练工夫,且容易保护(2)低资源语言能够受害于富资源语言(3)多语言模型有后劲做到零资源翻译相干工作可被分为:(1)参数共享(不共享、全副共享、局部共享)(2)针对低资源语言的设计a.辅助语言选择,尽量抉择同一语系的富资源语言b.训练样本均衡,用基于温度的办法均衡富、低资源语言,使得模型不再偏好富资源语言c.辅助语言词重排序:事后对辅助语言重排词的程序再进行翻译d.辅助语言的单语数据:用回译、跨语言预训练、元学习、无监督等办法晋升低资源语言模型(3)零资源翻译假如模型学过x和英文的双向翻译,y和英文的双向翻译,即便模型没见过x和y的平行语料,模型也能进行x和y的双向翻译。 3.2 迁徙学习:即先训练通常蕴含富资源语言对的父母NMT模型,而后微调低资源语言对。共享词汇表不适用于将事后训练的父模型迁徙到词汇表中有未见过文字的语言。为了解决这一问题,Kim等人提出学习未见语言和双语父模型的嵌入的跨语言线性映射。 3.3 枢轴翻译:抉择一种或多种枢轴语言作为源语言和目标语言之间的桥梁,利用源-枢轴和枢轴-指标数据来帮忙源目标语言的翻译。有如下三种形式:(1)间接联合源-枢轴和枢轴-指标模型,一一翻译(2)应用源-枢轴和枢轴-指标模型生成伪数据,用来训练源-指标模型(3)应用源-枢轴和枢轴-指标模型的参数,进行从源到目标语言的迁徙学习 4.利用多模态数据目前,图像-文本并行数据在NMT上的利用是无限的,因为这种图像-文本数据对于低资源语言来说总是很难收集。建设新的图像-文本数据集的一个可能的数据源是网站上的图像和相应的题目。对于只有语音而没有文本的语言,能够利用语音数据来进行翻译。 5.数据集 集体总结接下来我能够针对迁徙学习的词表映射、多语言模型的局部参数共享、对偶学习、元学习这几个方面持续研读。 参考A Survey on Low-Resource Neural Machine Translation

January 13, 2022 · 1 min · jiezi

关于深度学习:知识图普嵌入技术的极简教程KGE以及如何计算它们

图是我最喜爱应用的数据结构之一,它们能够使咱们可能示意简单的事实世界网络,如疾速交通系统(例如,公交路线、地铁等)、区域或寰球空中交通,或者人们的社交网络之类的相干事物。并且他们非常灵活,很容易被人类了解,然而为了让计算机“了解”和“学习”它们,咱们须要额定的一步(称为矢量化)。 这种解释可能过于简略,咱们将在自己的后续局部具体解释。 常识图谱有何特别之处?为了轻松了解常识图与其余图的不同之处,咱们设想一个具备不同级别的游戏,随着游戏的深刻,每个级别都会变得艰难。 Level 1:能够是一个简略的无向图,比方大学里的敌人群,敌人是节点,敌人之间的关系是边。这里咱们只有节点和边,没有什么太花哨的。 Level 2:在上一层的根底上减少一层信息,比方方向,这样咱们就失去有向图。一个简略的例子是城市范畴的公交网络。将公共汽车站视为节点,将公共汽车的路线视为边,每辆公共汽车都以特定的方向从一个站点挪动到另一个站点,这就是减少了方向信息。 Level 3:咱们采纳有向图并向节点和边增加多种属性。设想一下互联网上的社交网络,节点上的属性是用户所基于的社交网络类型。例如,它能够是 Twitter、Facebook 或 YouTube。边的属性能够是不同用户之间的交互类型,即关注(在 Twitter 的状况下)、敌人或关注(在 Facebook 的状况下)和订阅(在 YouTube 的状况下)。图的有向性在这里开始发挥作用,因为下面这些属性只能是单向的(互相关注就是有两条边)。例如,你能够关注 Elon Musk,但他可能不会在 Twitter 上关注你,这就是有一条向的边。 Level 4:上一级中的图中,不应用节点和边,而是应用三元组进行示意:三元组是常识图谱的构建块,它是由 3 个元素组成的元组,即:源节点(头)、关系和指标节点(尾)。 这就是咱们所说的常识图谱了,源节点和指标节点有时也被称为实体。 “常识图谱”一词的应用有点含混,因为常识图谱没有固定的定义,从狭义上讲能够将任何蕴含一些常识/重要信息的相当大的图称为常识图谱。这里的关键点是咱们将三元组作为常识图谱的根本组成部分。 常识图谱嵌入办法因为向量化或嵌入(实体的数字示意和图之间的关系示意)对于应用图作为机器学习算法的输出是必要的。咱们对常识图谱的解决形式与其余机器学习模型不同,所以咱们须要不同的技术来学习它们的数值示意(或嵌入)。生成常识图嵌入 (KGE) 的办法有多种,咱们能够大抵分为 3 个局部: 1、基于翻译的办法: 应用基于间隔的函数(在欧几里得空间中)用于生成嵌入。咱们能够建设一个简略的算法使头向量和关系向量的组合等于尾向量。它能够示意为 h + r ≈ t。这种算法称为 TransE。雷同算法还有其余版本,但对它的批改很少。一些示例包含 TransH、TransR、TransD、TransSparse 和 TransM。 2、基于合成的办法: 这是基于张量合成的想法,应用这种技术提出的初始算法是 RESCAL。三向张量以 n x n x m 的模式定义,其中 n 是实体的数量,m 是关系的数量。张量放弃值 1 示意实体之间存在关系, 0示意不存在则。 通过合成这个张量来计算嵌入。然而对于大型图这通常在计算上十分的费时所以呈现了很多基于 RESCAL 理念的 DistMult、HolE、ComplEx 和 QuatE 等算法优化解决计算量问题。 3、基于神经网络的办法: 神经网络当初在许多畛域都很风行,它们被用于查找KGE也就是很失常的事件了。Semantic Matching Energy它定义了一个能量(energy )函数,用于通过应用神经网络为三元组调配一个值。神经张量网络(Neural Tensor Network)应用能量函数,但它用双线性张量层代替了神经网络的规范线性层。 ...

January 13, 2022 · 1 min · jiezi

关于深度学习:Sophon联邦学习让数据发挥真正的价值

安全事件频发,各国相继出台数据安全和隐衷爱护条例 早在2018年3月17日,Facebook就曾被爆出数据泄露事件,8700万Facebook用户信息被泄露给数据分析公司Cambridge Analytica利用,违反了用户对于平台的信赖,造成公司市值在19、20日两日总计蒸发500亿美元。 同年5月,欧洲联盟出台了《通用数据保护条例》(General Data Protection Regulation,简称GDPR),对于波及收集、传输、保留及解决成员国个人信息的机构和组织提出了束缚措施。 2021年,《中华人民共和国数据安全法》和《中华人民共和国个人信息保护法》也于6月和8月相继公布,标记着我国在数据安全合规畛域有法可依,集体的信息将在法律监管根据下失去更加全面的爱护。 面对数据孤岛和数据保护条例,联邦学习技术来破局 法律法规的出台,并非意味着对数据的流通和企业间单干的禁锢,而是为数据因素市场提供更加通明、有序和平安的环境。 数据只有流动起来才会产生价值。就在前不久,上海数据交易所的成立为数据的流通带来新的模式和活力,企业能够对合规的数据产品进行挂牌和交易,从而爆发数据价值。星环科技作为上海数据交易所的首批签约数商,提供了蕴含联邦学习等工具集,反对数据流通服务。联邦学习是一种机器学习的框架,可能无效帮忙多个机构或合作方在满足用户数据隐衷爱护、数据安全及政府法规的要求下,进行平安合规的数据应用和机器学习建模,从而解决明文数据无奈出域、联结查问老本高、建模样本少、标签少、模型精度因为样本品质难以晋升等问题。 星环科技推出的Sophon FL联邦学习平台底层为分布式架构,应用差分隐衷、同态加密、不经意传输和可信计算等隐衷爱护机技术,达到数据不动模型动、数据可用不可见的成果。 Sophon FL反对对各方数据进行横向联邦学习(实用于特色趋同但样本不同的样本互补型企业)、纵向联邦学习(实用于样本趋同但特色不同的特色互补型企业)和迁徙学习(实用于样本和特色均不趋同的企业)。可视化界面操作便捷,让多个参与者都能够从高效的数据联结剖析、建模中获益。 Sophon 联邦学习平台,在政务民生与营销实际中大展身手 Sophon FL联邦学习平台已在政务、金融、营销等多个畛域落地。 在政务民生畛域,星环联邦学习软件Transwarp Sophon FL通过纵向联邦学习,联结居民用电数据与用水数据,生成群租房预测名单,为政府无效排查群租房提供了技术平台撑持。建模数据表明,联结训练模型比本地独自用电数据训练的模型AUC晋升10%以上(绝对值),赋能政务畛域更优决策。在联结建模过程中,水、电明文数据全程不出域,无效地爱护了集体数据隐衷信息。 在精准营销畛域,星环科技Sophon FL通过纵向联邦学习,帮忙企业平安引入了多方数据,丰盛用户特色维度,精密开掘指标用户,在节约推广老本的同时,无效晋升了客户转化率。该案例样本量高达亿级,指标维度近千个,间接解决训练样本有余与规范不对立的问题。 Sophon FL联邦学习平台作为一款成熟的商业软件产品,是国内首批通过信通院资质认证的联邦学习平台,并且通过信通院 “卓信大数据打算” 平安专项评估认证,反对多方在数据隐衷爱护的前提下进行AI合作。2021年12月,Sophon FL在政务民生与营销实际中的利用还曾荣获中国信通院和CCSA TC601独特评比的2021 “星河” 隐衷计算优良案例。 与此同时,星环科技还深度参加到联邦学习行业标准的撰写中,充沛了解行业场景,并借助权威认证的平台服务,在满足客户具体需要的同时,切实保障客户数据安全。

January 12, 2022 · 1 min · jiezi

关于深度学习:2022-年-1-月推荐阅读的四篇深度学习论文

自举元学习到深度学习的工夫序列预测,外推与泛化之间的关系与 Ridge Rider 摸索多样化最优 ‘Bootstrapped Meta-Learning’Flennerhag et al. (2021) | https://arxiv.org/pdf/2109.04... 元学习算法旨在主动发现演绎偏差,这容许在许多工作中疾速适应。经典示例包含 MAML 或 RL^2。个别状况下这些零碎是针对双层优化问题进行训练的,疾速的外部循环中只思考单个工作实例化,在第二个慢的内部循环,零碎通过对许多内循环的单个工作进行批处理来更新权重,零碎会主动发现和利用工作的底层构造。然而大多数状况下内部更新必须通过外部循环更新过程来流传梯度,所以会呈现两个问题:应该如何抉择内循环的长度?应用短长度会更容易优化,然而会导致视线过短;如果长度过长可能会呈现梯度隐没和爆炸的问题导致元指标可能体现不稳固。那么咱们如何能力克服这种短视和优化艰难呢?自举(Bootstrapped)元学习倡议通过运行外部循环稍长一点来构建所谓的自举指标,而后将由此产生的网络作为老师为视线较短的学生提供训练服务。与 DQN 相似,自举指标与计算图拆散,只是在损失计算中充当固定量。论文中说到,该办法基本上将元学习办法向前进行了推动,通过比拟专家和学生的度量能够进一步管制元指标的曲率。在一组测试的RL 试验中,作者表明,只管视线很短,但自举能够实现疾速的摸索适应,并且它优于具备较长视线的一般元梯度。与 STACX 元梯度代理一起,自举元梯度提供了一种新的 ATARI SOTA,也能够利用于多任务少样本学习。总而言之,这项工作为如何踊跃地进行元学习问题公式开拓了许多新视角。 ‘N-Beats: Neural Basis Expansion Analysis for Interpretable Time Series Forecasting’Oreshkin et al. (2020)| https://arxiv.org/abs/1905.10437 | https://github.com/ElementAI/... 传统的工夫序列预测模型,例如 ARIMA是来自金融计量经济学畛域,它依赖于趋势和季节性成分的拟合挪动平均线。这样的模型往往只有很少的参数,同时放弃清晰的可解释性。然而最近一段时间将循环神经网络与可微预测相结合的混合模型变得越来越风行。这种形式容许灵便的函数拟合,同时放弃更经典办法的演绎偏差,是否能够训练基于纯深度学习办法的预测者呢?在 N-Beats 中,作者介绍了一种用于单变量工夫序列预测的新网络架构,它在 M3、M4 和tourism 基准上建设了新的 SOTA。该架构由多个残差块堆栈组成,它们同时执行预测和逆推。各个堆栈的局部预测被合并到工夫范畴的最终预测中。单个预测块能够通过学习或固定为适合并且可解释的函数模式,例如能够是低维多项式或用于捕获季节性成分的趋势或周期函数。作者将他们的办法与集成技术相结合,合并在不同指标、输出窗口和随机初始化上训练的模型。作者还表明,随着增加更多堆栈,性能增益会饱和,并通过视觉剖析固定根底堆栈预测的确是可解释的。 ‘Learning in High Dimension Always Amounts to Extrapolation’Balestriero et al. (2021) | http://arxiv.org/abs/2110.09485 神经网络(NN)只能学习插值吗?Balestriero 等人认为:为了解决高维工作,神经网络必须进行外推。他们的推理依赖于插值的简略定义,也就是说只有数据点落入察看到的训练数据的凸包内就会产生插值。随着原始输出空间的维数线性增长该空间的体积以指数速度增长,这种景象通常被称为维度劫难(咱们人类在 3D 空间之外的几何直觉的可视化中苦苦挣扎)。如果数据位于低维流形上怎么办?那么是否有可能躲避维数劫难并仅用几个样本取得插值的办法呢?在一组综合试验中,作者表明:真正重要的不是流形的原始维度,而是所谓的本征维度(intrinsic dimension)——即蕴含数据流形的最小仿射子空间。他们表明对于常见的计算机视觉数据集,随着输出维数的减少,测试集样本蕴含在训练集的凸包中的概率迅速升高。作者还强调这种景象存在于神经网络嵌入或不同的降维技术中,在所有状况下当思考更多输出维度时,插值百分比都会升高。那么这能通知咱们什么呢?为了让神经网络胜利解决工作,它们必须在“外推”机制下运行!但并非所有人都像其他人一样概括。因而,这开启了对于这种特定的外推概念与更广泛的概括之间关系的新问题。例如,数据加强和正则化表演什么角色? ‘Ridge Rider: Finding Diverse Solutions by Following Eigenvectors of the Hessian’Parker-Holder et al. (2020) | https://arxiv.org/abs/2011.06505| https://colab.research.google... ...

January 12, 2022 · 1 min · jiezi

关于深度学习:使用-LSTM-进行多变量时间序列预测

在本文中咱们将应用深度学习办法 (LSTM) 执行多元工夫序列预测。 咱们先来理解两个主题—— 什么是工夫序列剖析?什么是 LSTM?工夫序列剖析:工夫序列示意基于工夫程序的一系列数据。它能够是秒、分钟、小时、天、周、月、年。将来的数据将取决于它以前的值。 在事实世界的案例中,咱们次要有两种类型的工夫序列剖析—— 单变量工夫序列多元工夫序列对于单变量工夫序列数据,咱们将应用单列进行预测。 正如咱们所见,只有一列,因而行将到来的将来值将仅取决于它之前的值。 然而在多元工夫序列数据的状况下,将有不同类型的特征值并且指标数据将依赖于这些特色。 正如在图片中看到的,在多元变量中将有多个列来对目标值进行预测。(上图中“count”为目标值) 在下面的数据中,count不仅取决于它以前的值,还取决于其余特色。因而,要预测行将到来的count值,咱们必须思考包含指标列在内的所有列来对目标值进行预测。 在执行多元工夫序列剖析时必须记住一件事,咱们须要应用多个特色预测以后的指标,让咱们通过一个例子来了解 - 在训练时,如果咱们应用 5 列 [feature1, feature2, feature3, feature4, target] 来训练模型,咱们须要为行将到来的预测日提供 4 列 [feature1, feature2, feature3, feature4]。 LSTM 本文中不打算具体探讨LSTM。所以只提供一些简略的形容,如果你对LSTM没有太多的理解,能够参考咱们以前公布的文章。 LSTM基本上是一个循环神经网络,可能解决长期依赖关系。 假如你在看一部电影。所以当电影中产生任何状况时,你都曾经晓得之前产生了什么,并且能够了解因为过来产生的事件所以才会有新的状况产生。RNN也是以同样的形式工作,它们记住过来的信息并应用它来解决以后的输出。RNN的问题是,因为突变隐没,它们不能记住长期依赖关系。因而为了防止长期依赖问题设计了lstm。 当初咱们探讨了工夫序列预测和LSTM实践局部。让咱们开始编码。 让咱们首先导入进行预测所需的库 import numpy as npimport pandas as pdfrom matplotlib import pyplot as pltfrom tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import LSTMfrom tensorflow.keras.layers import Dense, Dropoutfrom sklearn.preprocessing import MinMaxScalerfrom keras.wrappers.scikit_learn import KerasRegressorfrom sklearn.model_selection import GridSearchCV加载数据,并查看输入- df=pd.read_csv("train.csv",parse_dates=["Date"],index_col=[0])df.head() df.tail() ...

January 11, 2022 · 3 min · jiezi

关于深度学习:基于Dell工作站的Tensorflow-Keras-软件及环境配置

基于Dell工作站的Tensorflow & Keras 软件及环境配置1. 文档阐明本文档的配置曾经在Dell塔式工作站/Precision 7920中实现实测无效,如果型号(CUDA)型号不同,配置会有肯定的偏差,具体操作以及不同型号的版本问题会在下文出现。 2. 初始条件:在环境配置之前,下载以下软件。版本型号如下表。 对象/型号备注Dell塔式工作站/Precision 7920win10 专业版/ Nvidia Quadro P4000软件版本PycharmCommunity 2020.3Anaconda(x64, python 3.8 version)3.0Visual studio 2019community2.1 初始软件下载2.1.1 PycharmDownload Links: Pycharm Download 下载时全副勾选即可,无需其余操作。 2.1.2 AnacondaDownload Links: Anaconda Download在页面最底部能够发现带有python的Anaconda下载界面,点击下载即可。下载时全副勾选即可,无需其余操作。 2.1.3 Visual Studio 2019Download Links: VS2019 Download Q: 下载时可能会遇到的问题 下载进度条始终为 0,如下图所示 A: 解决办法能够参见以下链接VS无奈下载怎么办 批改DNS 为114.114.114.114 即可。 3. CUDA与CUDNN的下载与装置CUDA与CuDNN是与GPU相干的编程语言,下载版本与GPU型号无关。接下来将具体介绍CUDA如何下载以及下载什么版本。 3.1 CUDA下载在下载CUDA前,先查看本人电脑的CUDA反对版本,以Precision7920 为例,关上 Nividia Control Panel(控制面板)->Help(帮忙)->system information (零碎信息) -> Component(组件) 能够查看到本人的CUDA版本,Precision 7920的CUDA版本为10.1。(图中为集体笔记本型号,仅作为示意图,非工作站理论信息)接下来间接进入Nvidia官网下载CUDA 10.1。 CUDA Download Links: CUDA Download下载对应版本即可,装置环节全副勾选即可。(精简装置即可应用)下载完后,能够在Win+R -> cmd.exe 运行 nvcc --version 查看是否装置胜利。 ...

January 9, 2022 · 1 min · jiezi

关于深度学习:Transformer-架构逐层功能介绍和详细解释

多年来,深度学习始终在一直倒退。深度学习实际高度强调应用大量参数来提取无关咱们正在解决的数据集的有用信息。通过领有大量参数,咱们能够更容易地分类/检测某些货色,因为咱们有更多的能够分明地辨认的数据。 目前为止深度学习中,特地是在自然语言解决畛域的一个显着里程碑是语言模型的引入,它极大地提高了执行各种 NLP 工作的准确性和效率。 seq2seq模型是一种基于编码器-解码器机制的模型,它接管输出序列并返回输入序列作为后果。例如图像形容工作,输出给定的图像,输入则是为图像创立一个正当的形容。在这种状况下seq2seq 模型将图像像素向量(序列)作为输出,并逐字返回形容(序列)作为输入。 一些促成此类模型训练的重要 DL 算法包含RNN,LSTM,GRU。但随着工夫的推移这些算法的应用逐步隐没,因为复杂性和一些毛病会随着数据集大小的减少而重大影响性能。这其中的重要的毛病包含较长的训练工夫、梯度隐没问题(当咱们为大型数据集进一步训练模型时会失落无关旧数据的信息)、算法的复杂性等。 Attention is all you need在语言模型训练方面取代上述所有算法的爆发性概念之一是基于多头注意力的Transformer 架构。Transformer 架构最早是由谷歌在 2017 年的论文《Attention is all you need》中引入的。它受欢迎的次要起因是其架构引入了并行化。Transformer 利用了弱小的 TPU 和并行训练,从而缩小了训练工夫。 以下是被流传最宽泛的Transformer架构的可视化。 即便形象了很多的细节,整个架构看起来还是十分宏大。这张图中每一层依然暗藏着很多细节货色。咱们在这篇文章中会介绍每一层以及它在整个架构中的作用。 Transformer 是一个用于 seq2seq 模型的编码器-解码器模型,左侧是输出,右侧是输入。在 它外部应用的留神机制已成为语言模型的首要算法。 当初咱们开始具体介绍每一层的作用。咱们将应用带有简略句子“I am a student”及其法语翻译模式“Je suis étudiant”的语言翻译工作示例。 Embedding layer 输出嵌入是Transformer 编码器和解码器的第一步。机器无奈了解任何语言的单词,它只能辨认数字。所以咱们通过这一层失去了输出/输入中每个单词的嵌入,这些嵌入应用 GloVe 等办法很容易取得。对于这个嵌入值,咱们在句子中增加该词的地位信息(基于奇数或偶数地位呈现的不同值)以提供上下文信息。 Multi-Head Attention 多头注意力层由组合在一起的多个自注意力层组成。注意力层的次要目标是收集无关句子中每个单词与其余单词的相关性的信息,这样能够取得其在句子中的含意。上图形容了咱们句子中的每个单词如何依赖其余单词来提供含意。但要让机器了解这种依赖性和相关性并不是那么容易。 在咱们的注意力层中,咱们采纳三个输出向量,即查问(Q)、键(K)和值(V)。简略的说:查问就像在浏览器上搜寻的内容,浏览器会返回一组要匹配的页面它们就是是键,而咱们失去真正须要的后果是值。对于句子中的给定词(Q),对于它中的其余词(K),咱们失去它(V)对另一个词的相关性和依赖性。这种自我留神过程应用 Q、K 和 V 的不同权重矩阵进行了屡次激素按。因而就是多头留神层,作为多头注意力层的后果,咱们失去了多个注意力矩阵。 在架构中,咱们能够看到解码器中还有另外两个注意力层。 Masked multi-head attention 这是咱们解码器端的第一层注意力。但为什么它是Masked attention? 在输入的状况下,如果以后单词能够拜访它之后的所有单词,那么它不会学到任何货色。它会间接持续并倡议输入这个词。然而通过掩蔽咱们能够暗藏以后单词之后的单词,它将有空间来预测到目前为止对给定单词和句子来说什么单词是有意义的。它曾经有了以后单词的嵌入和地位信息,所以咱们应用它之前应用 Q、K 和 V 向量看到的所有单词让它变得有意义并找出最可能的下一个单词。 Encoder-Decoder attention 解码器端的下一个多头注意力层从编码器端获取两个输出(K,V),从解码器的前一个注意力层获取另一个(Q),它能够拜访来自输出和输入的注意力值。基于来自输出和输入的以后注意力信息,它在两种语言之间进行交互并学习输出句子中每个单词与输入句子之间的关系。 Residual layer ...

January 9, 2022 · 1 min · jiezi

关于深度学习:HR想拿高薪具备数据分析的能力是基本条件

上招聘网站搜寻HR职位,你会发现,只有是高薪的职位JD,无论是岗位要求还是任职资格,都明确要求候选人具备数据分析的能力,例如华为招聘的HR数据分析师职位:            除了华为这种大企业对 HR 有数据分析的要求,目前简直所有企业都不例外,很多更是开出月薪30k+的高薪,例如:      所以,具备数据分析能力在将来将是对HR的广泛要求,不会数据分析的HR,必然没有市场。 一、HR数据分析的必要性       业余的HR管理者在企业里作为不同的角色会面临不同的问题,对制订迷信的人力资源策略和正当的布局都有很多的盲点和阻碍。      作为企业管理者的战略伙伴,不足策略沟通的语言。必须从过来依附教训与感觉的决策形式向“用数据谈话,基于事实”的决策形式转变,以取得策略对话的权力。      作为一线经理的业务搭档,却因为资源配置问题变成博弈对手。必须建设迷信的人力资源布局模型,以防止因资源问题而与一线经理的博弈。      作为业余的HR管理者,却无奈对本身的工作绩效进行评估。必须建设一套零碎的、可量化的HR绩效评价体系,来进步咱们的工作效率,充沛展示HR的价值。       因而,只有建设一套可量化的人力资源数据分析系统,才能够从根本上解决HR面临的问题,从而晋升企业人力资源的科学管理程度。 二、HR数据分析的利用      整个人力资源体系是承接团体策略的重要局部,通过对人力资源战略规划来承接集团公司倒退的整体规划,以人力资源布局、员工关系治理、薪酬体系和组织性能划分为依靠,来晋升人力资源价值。根本人力剖析利用在Smartbi麦粉市场曾经提供了模板,蕴含5个局部:     01 人力资源构造剖析     人力资源布局首先要进行的便是人力资源构造剖析。所谓人力资源构造剖析也就是对企业现有人力资源的考察和审核,只有对企业现有人力资源有充沛的理解和无效的使用,人力资源的各项打算才有意义。      02 招聘数据分析     招聘剖析是人力资源剖析的重要环节,也是人力资源几大模块中十分重要的一个局部。招聘剖析能够更好地剖析各个招聘渠道状况,及时地把控招聘完成率。        03 培训剖析     企业培训是帮忙员工晋升的重要通道,组织培训能够加强公司的整体能力。而且,培训也是人力资源管理中的一大模块。剖析培训的场次、各个部门组织培训状况、培训满意度等指标,剖析培训的成果,能够为组织赋能。        04 人员效率剖析     人员效率是企业十分关注的一个局部,无论是职能部门还是执行部门的效率都是至关重要的。通过人均销售额、人均利润额等指标的监控,能够保障企业人力资源效率稳步晋升。      05 薪酬剖析     剖析薪酬有助于保护和促成公司外部偏心,给不同能力人才对应的工资。同时对企业人力资源优化有重要的意义,通过各个部门的薪酬散布散点图,查看调薪状况,若呈现不偏心问题,能够及时进行调整。  二、HR数据分析的意义      人力资源数据分析能够辅助人力资源策略的布局制订,让管理者对企业的人力资源情况有一个比拟深刻的理解,体现“人是第一生产力”的重要意义。      首先,能够晋升HR管理水平。HR继续一直地、动静地关注人力资源指标的变动状况,及时作出合乎企业策略和经营的决策,更好地领导和改良本人的工作。      其次,能够浮现HR治理问题。剖析人力资源部门的工作绩效,能够一直地调整与改良策略,浮现HR的工作问题,晋升HR在整个公司的位置与作用。      最初,能够保障HR治理奉献。HR从治理保障部门转变为价值发明部门,通过晋升员工集体绩效来改善组织绩效。 ...

January 5, 2022 · 1 min · jiezi

关于深度学习:MegEngine-Windows-Python-wheel-包减肥之路

作者:张浩龙 | 旷视科技 MegEngine 架构师写在之前本文的目标通过讲述在反对 MegEngine Windows Python wheel 过程中遇到的问题以及解决问题的流程,此文最初的解决办法可能不是最优,欢送留言斧正。过程中顺便科普一些对于 MegEngine 的构建以及构建时用到的根底货色,当然这些基础知识我置信是工程之道常常会用到的,包含但不限于: CMake编译、链接、符号暗藏,符号 export 等。此处先举荐一本 “老书”《程序员的自我涵养》,天然它没有 xxx 四库全书让人搜索枯肠,然而它外面的基础知识仍然是目前咱们和计算机“交换”中常常遇到的。Python wheel 包构建MegEngine 各平台反对状况cpp 推理反对状况: TEE:https://en.wikipedia.org/wiki... 训练: Python侧:目前官网公布的 wheel 包,只有 Windows-X64-CPU-CUDA,many Linux 64bit -X64-CPU-CUDA,MacOS-X64-CPU,其余的可本人编译,或者社区提单索取。cpp 侧训练反对状况和下面的 cpp 推理状况统一。从下面的状况,可看见 MegEngine 无论训练还是推理,还是各种硬件,还是各种 OS 都反对的十分全面,如有需要,无妨试用!!!! 遇到的问题为了全面的反对下面提到的 MegEngine 各个平台,各个 OS,期间或多或少会遇到一些问题,比方 Windows 平台上 Python wheel 包体积过大。 先看一下目前 MegEngine wheel 包体积大小,摘自 1.7 版本 pypi 其中因为 Linux 和 Windows 反对了 CUDA,所以包体积在 900MB 左右,这是一个失常的 size。 在之前 Windows CUDA 包体积在 1.7G 左右:这就是前面尝试剖析和修复的问题。 ...

January 5, 2022 · 5 min · jiezi

关于深度学习:使用Pandas-melt重塑DataFrame

重塑 DataFrame 是数据迷信中一项重要且必不可少的技能。在本文中,咱们将探讨 Pandas Melt() 以及如何应用它进行数据处理。 最简略的melt最简略的melt()不须要任何参数,它将所有列变成行(显示为列变量)并在新列值中列出所有关联值。 df_wide.melt() 这个输入通常没有多大意义,所以个别用例至多指定了 id_vars 参数。例如, id_vars = 'Country' 会通知 pandas 将 Country 保留为一列,并将所有其余列转换为行。 df_wide.melt( id_vars='Country',) 当初行数为 15,因为 Country 列中的每个值都有 5 个值(3 X 5 = 15)。 显示自定义名称“变量”和“值”是列名。咱们能够通过 var_name 和 value_name 参数指定自定义名称: df_wide.melt( id_vars='Country', var_name='Date', value_name='Cases') 指定多个 IDMelt() 最有用的个性之一是咱们能够指定多个 id 以将它们保留为列。例如,如果咱们想保留 Country、Lat 和 Long 作为列以便更好地参考: df_wide.melt( id_vars=['Country', 'Lat', 'Long'], var_name='Date', value_name='Cases') 指定melt的列Pandas的melt() 函数默认状况下会将所有其余列(除了 id_vars 中指定的列)转换为行。在理论我的项目中可能只关怀某些列,例如,如果咱们只想查看“24/01/2020”和“25/01/2020”上的值: df_wide.melt( id_vars=['Country', 'Lat', 'Long'], value_vars=["24/01//2020", "25/01//2020"], var_name='Date', value_name='Cases') Pandas melt咱们也能够间接从 Pandas 模块而不是从 DataFrame 调用melt()。然而,这些是雷同的。 ...

January 3, 2022 · 1 min · jiezi

关于深度学习:如何微调BERT模型进行文本分类

什么是BERT?BERT(Bidirectional Encoder Representations from Transformers)在各种自然语言解决工作中提供了最前沿的后果在深度学习社区引起了轰动。德夫林等人。2018 年在 Google 应用英文维基百科和 BookCorpus 开发了 BERT,从那时起,相似的架构被批改并用于各种 NLP 应用程序。XL.net 是建设在 BERT 之上的示例之一,它在 20 种不同工作上的体现优于 BERT。在了解基于 BERT 构建的不同模型之前,咱们须要更好地理解 Transformer 和注意力模型。 BERT 的根本技术冲破是应用双向训练的 Transformer 和注意力模型来执行语言建模。与晚期从左到右或双向训练相结合的文本序列的钻研相比,BERT 论文的发现表明,双向训练的语言模型能够更好地了解语言上下文。 BERT 应用注意力机制以及学习单词之间上下文关系的Transformer 。Transformer 由两个独立的局部组成 - 编码器和解码器。编码器读取输出文本,解码器为工作生成预测。与程序读取输出文本的传统定向模型相比,transformer 的编码器一次读取整个单词序列。因为 BERT 的这种非凡构造,它能够用于许多文本分类工作、主题建模、文本摘要和问答。 在本文中,咱们将尝试微调用于文本分类的 BERT 模型,应用 IMDB 电影评论数据集检测电影评论的情绪。 BERT 目前有两种可用的变体: BERT Base:12层,12个注意力头,768个暗藏和110M参数BERT Large:24 层,16 个注意力头,1024 暗藏和 340M 参数以下是 Devlin 等人的 BERT 架构图。 咱们曾经疾速理解了什么是BERT ,上面开始对 BERT 模型进行微调以进行情感剖析。咱们将应用 IMDB 电影评论数据集来实现这项工作。 微调前筹备首先,咱们须要从 Hugging Face 装置Transformer 库。 pip install transformers当初让咱们导入咱们在整个实现过程中须要的所有库。 ...

January 1, 2022 · 3 min · jiezi

关于深度学习:2021年Graph-ML热门趋势和主要进展总结

对于 Graph ML 来说2021年是重要的一年——成千上万的论文、有数的会议和研讨会......阐明这个畛域是在蓬勃的倒退。我将Graph ML 这一年的停顿进行结构化的展现,并重点介绍 趋势和次要提高。 无论您是在钻研细分的主题还是刚开始应用 Graph ML - 咱们都心愿这篇文章是一个很好的参考点。这个畛域太大了如果我错过了一些重要的货色,请在评论中通知咱们! Graph Transformers + Positional FeaturesGNN 在通常是稠密的图上运行,而 Graph Transformers (GT) 在全连贯图上运行,其中每个节点都连贯到图中的每个其余节点。一方面,这带来了节点 N 数量的 O (N²) 复杂度。另一方面,GT 不会蒙受适度平滑,这是长距离消息传递的常见问题。全连贯图意味着咱们有来自原始图的“真”边和从全连贯变换中取得的“假”边。咱们还须要一种办法来为节点注入一些地位特色,否则 GT 会落后于 GNN(如 Dwivedi 和 Bresson 的 2020 年论文所示)。 往年最引人注目的两个Graph Transformers模型可能是 SAN(Spectral Attention Nets)和 Graphormer。 Kreuzer、Beaini 等人的 SAN 应用了拉普拉斯算子的 top-k 特征值和特征向量,表明独自的谱特色(spectral features)能够辨别被 1-WL 测验确定是否同构的图。SAN 将光谱特色与输出节点特色连接起来,在许多分子工作上优于稠密 GNN。 Ying 等人的 Graphormer 采纳了不同的办法并应用了空间特色。节点特色丰盛了核心性编码(centrality encoding)——可学习的入度和出度嵌入。注意力机制有两个偏置项:1、节点 i 和 j 之间最短门路的间隔;2、取决于一条可用最短门路的边特色编码。 Graphormer实现了2021年Graph ML大满贯:OGB large Challenge和Open Catalyst Challenge图回归工作第一名!(以下将具体介绍这些挑战) ...

December 31, 2021 · 3 min · jiezi

关于深度学习:九章云极DataCanvas公司深度参编中国金融科技发展报告2021蓝皮书

12月18日,由北京区块链技术利用协会(BBAA)主办的“2021金融科技·监管科技·区块链蓝皮书发布会”胜利举办。《中国金融科技倒退报告(2021)》蓝皮书(以下简称“报告”)在会上正式公布。该报告作为每年更新出版的金融科技领域业余著述,极具前瞻性和行业影响力,备受业界注目。九章云极DataCanvas公司作为深耕金融行业多年的AI根底软件提供商,此次深度参加了该新版报告的编写工作。 《中国金融科技倒退报告(2021)》 《中国监管科技倒退报告(2021)》 《中国区块链倒退报告(2021)》 三部蓝皮书正式公布(图片起源:BBAA) 《中国金融科技倒退报告》系社会科学文献出版社出名系列著述,被评为“中国社会科学院翻新工程学术出版我的项目标识”,自2013年以来已间断出版九年。《中国金融科技倒退报告(2021)》聚焦于中国金融科技领域最新倒退状况,对应《金融科技(FinTech)倒退布局(2019—2021年)》,全面形容2021年中国金融科技各方面的倒退现状、达到成果、面临挑战及对发展趋势等。 本次报告由人民银行科技司司长李伟负责主编,并邀请相干金融机构、科技公司、钻研机构、专家学者独特参加。九章云极DataCanvas董事长方磊博士作为人工智能畛域科技公司的代表与业内专家受邀退出编委会参加报告编著。 报告次要包含七个局部,全面回顾了《金融科技布局2019-2021》公布三年内我国金融科技领域的政策、实践、技术、利用、监管等方面倒退现状,并对金融科技行业类型、散布与典型企业进行地图索引式形容。报告体现了我国金融科技领域研究者和实践者们的孜孜摸索与丰硕成果,为政策制定者与管理者、IT技术人员和对新技术有微小需要的行业特地是金融行业从业人员提供零碎业余的参考。 报告指出,“AI在金融利用过程中,随着AI芯片的国产化、开源框架的更新优化、算法模型的翻新冲破、数据协同平台的成熟,将来AI将助力金融业进一步晋升客户体验、优化外部经营、深入风险管理”。《中国金融科技倒退报告(2021)》蓝皮书(图片起源:BBAA) 在报告的第三局部“金融科技正当利用”中,九章云极DataCanvas公司、浦发银行及业内其余金融科技专家代表独特执笔“人工智能利用”章节,九章云极DataCanvas公司的“银行AutoML主动建模平台”全行级利用案例也作为主动机器学习在金融行业中利用的典型案例在该章节被收录。 九章云极DataCanvas联结创始人暨CTO尚明栋学生在蓝皮书发布会上发表《数据迷信平台如何赋能金融行业数字化降级》主题演讲,他指出,“决策智能化”时代曾经到来,随着金融行业中的企业数据智能体系、数字化基础设施的进一步欠缺,企业数智化降级之路亟需可能提供AI建模、实时剖析、低门槛高可用的新一代决策大脑代替传统的数据分析伎俩。AutoML主动机器学习正在成为解决AI普及化的核心技术,通过AutoML自动化建模能力联合业务团队的专业知识,实现自主模型开发,这将成为将来银行智能业务倒退的方向。 大会同期公布了“2021金融科技产业图谱”,九章云极DataCanvas公司入选“根底技术-人工智能”板块。中国市场正处于企业数智化转型的时代突破点,九章云极DataCanvas公司自主研发的“自动化、云原生、开源凋谢”的AI根底软件将进一步成为更多业务场景的智能决策基座,减速金融行业数智化降级的过程。

December 30, 2021 · 1 min · jiezi

关于深度学习:技术博客丨我用深度学习做个视觉AI微型处理器

作者:张强,Datawhale成员讲多了算法,如何真正将算法利用到产品畛域?本文将带你从0用深度学习打造一个视觉AI的微型处理器。文章含残缺代码,知识点绝对独立,欢送点赞珍藏,跟着本文做完,你也能够做一个本人的嵌入式AI小产品! 背景随着硬件尤其是显卡性能降级,以及Pytorch,TensorFlow深度学习框架日趋完善,视觉AI算法在多个畛域遍地开花,其中就包含嵌入式设施。这是一种微型处理器,它的要害单元就是外部小小的计算芯片。嵌入式设施和咱们日常用的电脑相比体积小,只蕴含必要外设。一些针对特定工作的嵌入式设施往往不会运载咱们罕用的比方Windows、Linux零碎,而是间接将代码烧录进去运行。 在嵌入式设施上尝试部署深度学习算法开始较早,1989年一家叫做ALVIVN的公司就将神经网络用在汽车上了。现如今,工程师们将其用在安防、机器人、主动驾驶等畛域。因而,懂得如何设计、训练算法,又能将其部署到边缘硬件产品上,能帮咱们实现许多产品的想法。 然而,视觉算法部署在产品中仍有许多难点,比方:(1)模型通常须要在CPU/GPU/NPU/FPGA等各种各样不同类型的平台上部署;(2)嵌入式算力/内存/存储空间都十分无限;跑在云端服务器上,须要实时联网又不很优雅;(3)模型训练时可能会应用不同的AI框架(比方Pytorch/TensorFlow等)、不同硬件(比方GPU、NPU),互相适配产生问题[1]。 因而笔者开始思考下列问题: 有什么亲民价格的芯片能解决部署视觉AI算法?如何将深度学习算法部署到嵌入式设施上?对第一个问题,在通过调研后,还真有这样的芯片,那就是嘉楠科技的K210芯片。一个芯片几十元,对应的开发板在某宝上两百多就能够买到。依据嘉楠官网的形容,K210具备双核 64-bit RISC-V RV64IMAFDC (RV64GC) CPU / 400MHz(可超频到600MHz),双精度 FPU,8MiB 64bit 片上 SRAM(6MiB通用SRAM+2MiB的AI专用SRAM)。对于这块芯片更具体的介绍能够参考[2] 。 市面上有许多搭载K210的开发板,笔者这里选了雅博一款性能较全的K210开发板,开始了嵌入式AI的折腾之路。 对于第二个问题,办法就多了,不同深度学习框架,不同硬件选型都决定着不同技术路线。基本路线能够为深度学习平台训练 -> 模型剪枝、量化 -> 参数转换 ->转换为硬件平台上能运行的模型。 对深度学习平台选型,笔者决定选用当下最风行的Pytorch平台。最初一步往往取决于这个硬件的生态,如果没有相干生态反对,可能须要手写C语言代码加载参数运行。调研发现,K210有一个深度网络优化平台NNCASE,能减速深度模型部署。 调研过程中发现在这块板子上部署模型大多数都是从Keras、TensorFlow开始训练并最终部署,而研究者罕用的Pytorch居然没有教程,于是明天就尝试来讲一讲。 接下来,咱们将从应用Pytorch训练手写体辨认的例子开始,买通从训练到嵌入式平台部署的流程。 01 应用Pytorch训练分类网络模型必要软件包装置 pip install tensorbay pillow torch torchvision numpy数据集获取一个AccessKey获取所有数据集。 咱们应用一个开源数据集平台:gas.graviti.com ,这个网站汇总了AI开发者常见的公开数据集,调用其SDK就能间接在线训练,而且许多数据集间接在国内网络下连贯间接应用,还是十分不便的。 a. 关上本文对应数据集链接 https://gas.graviti.com/datas...b. 右上角注册登录c. fork数据集 d. 点击网页上方开发者工具,获取应用SDK所需的AccessKey,获取到 AccessKey 后,将其存在我的项目根目录的gas_key.py里: KEY = "<Your-Key>"通过AccessKey能够上传数据、读取数据、应用数据,灵便对接模型开发和训练,与数据pipeline疾速集成。 e. AccessKey写入后就能够写代码读取数据了,读取后能够应用一行代码自行下载,或者能够开启缓存性能,在读取过后会主动将数据存储到本地。将下载后的数据放在data文件夹下: import numpy as np\from PIL import Image\\from tensorbay import GAS\from tensorbay.dataset import Dataset\from tensorbay.dataset import Segment\\def read_gas_image(data):\    with data.open() as fp:\        image = Image.open(fp)\    return np.array(image)\  \KEY = "用你的Key替换掉这个字符串"\# Authorize a GAS client.\gas = GAS(KEY)\# Get a dataset.\dataset = Dataset("MNIST", gas)\\# 开启上行语句在以后门路下的data目录缓存数据\# dataset.enable_cache("data")\\# List dataset segments.\segments = dataset.keys()\# Get a segment by name\segment = dataset["train"]\for data in segment:\    # 图片数据\    image = read_gas_image(data)\    # 标签数据\    label = data.label.classification.category怎么把这个数据集集成到Pytorch里呢?官网文档也为此写了不少例子[4]。笔者尝试过感觉挺不便,在为不同工作训练嵌入式AI模型时,只需更换数据集的名字,就能集成,不必再关上浏览器、期待下载以及解决很久了。有了数据集之后,咱们接下来用其训练一个分类任务模型。 深度网络模型选型联合硬件特点设计网络。 在思考硬件部署的工作时,网络的设计就要受到些许限度。 首先,大而深的模型是不行的,K210的RAM是6M,这意味着模型+程序都要烧到这个空间。当然咱们能够放到内存卡中,但实时性要受影响。 其次,还要思考AI编译器对特定算子的优化,以K210 NNCASE为例[3],其反对TFLite、Caffe、ONNX共三个平台的算子。 关上对应平台,可能到具体有哪些算子曾经实现了低层优化。能够看到对ONNX算子优化还是比拟多的。如果所选用的网络算子较新,抑或是模型太大,都要在本步多加思考与设计。 如果如果最初部署不胜利,往往须要回到这一步思考网络的设计。为了尽可能减少算子的应用,本文设计一个只基于卷积+ReLU+Pool的CNN: 代码文件名: models/net.py class Net(nn.Module):\    def __init__(self):\        super().__init__()\        self.conv1 = nn.Conv2d(1, 6, 5)\        self.relu1 = nn.ReLU()\        self.pool1 = nn.MaxPool2d(2)\\        self.conv2 = nn.Conv2d(6, 16, 5)\        self.relu2 = nn.ReLU()\        self.pool2 = nn.MaxPool2d(2)\\        self.conv3 = nn.Conv2d(16, 32, 4)\        self.relu3 = nn.ReLU()\\        self.conv4 = nn.Conv2d(32, 64, 1)\        self.relu4 = nn.ReLU()\\        self.conv5 = nn.Conv2d(64, 32, 1)\        self.relu5 = nn.ReLU()\\        self.conv6 = nn.Conv2d(32, 10, 1)\        self.relu6 = nn.ReLU()\\    def forward(self, x):\        y = self.conv1(x)\        y = self.relu1(y)\        y = self.pool1(y)\        y = self.conv2(y)\        y = self.relu2(y)\        y = self.pool2(y)\        y = self.conv3(y)\        y = self.relu3(y)\        y = self.conv4(y)\        y = self.relu4(y)\        y = self.conv5(y)\        y = self.relu6(y)\        y = self.conv6(y)\        y = self.relu6(y)\\        y = y.view(y.shape[0], -1)\\        return y网络训练设计好模型后,应用如下脚本进行训练。接下来脚本文件大抵浏览一下,明确其中的工作原理即可。 代码文件名: 1.train.py 留神将其中的ACCESS_KEY替成你本人的AccessKey。 from __future__ import print_function\import argparse\import torch\import torch.nn.functional as F\import torch.optim as optim\from torch.optim.lr_scheduler import StepLR\from models.net import Net\from PIL import Image\from torch.utils.data import DataLoader, Dataset\from torchvision import transforms\\from tensorbay import GAS\from tensorbay.dataset import Dataset as TensorBayDataset\\\class MNISTSegment(Dataset):\    """class for wrapping a MNIST segment."""\\    def __init__(self, gas, segment_name, transform, cache=True):\        super().__init__()\        self.dataset = TensorBayDataset("MNIST", gas)\        if cache:\            self.dataset.enable_cache("data")\        self.segment = self.dataset[segment_name]\        self.category_to_index = self.dataset.catalog.classification.get_category_to_index()\        self.transform = transform\\    def __len__(self):\        return len(self.segment)\\    def __getitem__(self, idx):\        data = self.segment[idx]\        with data.open() as fp:\            image_tensor = self.transform(Image.open(fp))\\        return image_tensor, self.category_to_index[data.label.classification.category] \\def create_loader(key):\    to_tensor = transforms.ToTensor()\    normalization = transforms.Normalize(mean=[0.485], std=[0.229])\    my_transforms = transforms.Compose([to_tensor, normalization])\\    train_segment = MNISTSegment(GAS(key), segment_name="train", transform=my_transforms)\    train_dataloader = DataLoader(train_segment, batch_size=4, shuffle=True, num_workers=0)\    test_segment = MNISTSegment(GAS(key), segment_name="test", transform=my_transforms)\    test_dataloader = DataLoader(test_segment, batch_size=4, shuffle=True, num_workers=0)\    return train_dataloader, test_dataloader\\\def train(args, model, device, train_loader, optimizer, epoch):\    model.train()\    for batch_idx, (data, target) in enumerate(train_loader):\        data, target = data.to(device), target.to(device)\        optimizer.zero_grad()\        output = model(data)\        loss = F.cross_entropy(output, target)\        loss.backward()\        optimizer.step()\        if batch_idx % args.log_interval == 0:\            print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(\                epoch, batch_idx * len(data), len(train_loader.dataset),\                       100. * batch_idx / len(train_loader), loss.item()))\            if args.dry_run:\                break\ \\def test(model, device, test_loader):\    model.eval()\    test_loss = 0\    correct = 0\    with torch.no_grad():\        for data, target in test_loader:\            data, target = data.to(device), target.to(device)\            output = model(data)\            test_loss += F.cross_entropy(output, target, reduction='sum').item()  # sum up batch loss\            pred = output.argmax(dim=1, keepdim=True)  # get the index of the max log-probability\            correct += pred.eq(target.view_as(pred)).sum().item()\\    test_loss /= len(test_loader.dataset)\\    print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(\        test_loss, correct, len(test_loader.dataset),\        100. * correct / len(test_loader.dataset)))\ \\def main():\    # Training settings\    parser = argparse.ArgumentParser(description='PyTorch MNIST')\    parser.add_argument('--batch-size', type=int, default=64, metavar='N',\                        help='input batch size for training (default: 64)')\    parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N',\                        help='input batch size for testing (default: 1000)')\    parser.add_argument('--epochs', type=int, default=14, metavar='N',\                        help='number of epochs to train (default: 14)')\    parser.add_argument('--lr', type=float, default=1.0, metavar='LR',\                        help='learning rate (default: 1.0)')\    parser.add_argument('--gamma', type=float, default=0.7, metavar='M',\                        help='Learning rate step gamma (default: 0.7)')\    parser.add_argument('--no-cuda', action='store_true', default=False,\                        help='disables CUDA training')\    parser.add_argument('--dry-run', action='store_true', default=False,\                        help='quickly check a single pass')\    parser.add_argument('--seed', type=int, default=1, metavar='S',\                        help='random seed (default: 1)')\    parser.add_argument('--log-interval', type=int, default=10, metavar='N',\                        help='how many batches to wait before logging training status')\    parser.add_argument('--save-model', action='store_true', default=False,\                        help='For Saving the current Model')\    args = parser.parse_args()\    use_cuda = not args.no_cuda and torch.cuda.is_available() \    torch.manual_seed(args.seed)\\    device = torch.device("cuda" if use_cuda else "cpu")\\    train_kwargs = {'batch_size': args.batch_size}\    test_kwargs = {'batch_size': args.test_batch_size}\    if use_cuda:\        cuda_kwargs = {'num_workers': 1,\                       'pin_memory': True,\                       'shuffle': True}\        train_kwargs.update(cuda_kwargs)\        test_kwargs.update(cuda_kwargs)\\    ACCESS_KEY = 'Accesskey-4669e1203a6fa8291d5d7744ba313f91'\    train_loader, test_loader = create_loader(ACCESS_KEY)\ \    model = Net().to(device)\    optimizer = optim.Adadelta(model.parameters(), lr=args.lr)\    scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma)\    for epoch in range(1, args.epochs + 1):\        train(args, model, device, train_loader, optimizer, epoch)\        test(model, device, test_loader)\        scheduler.step()\ \    if args.save_model:\        torch.save(model.state_dict(), "outputs/mnist.pt")\\\if __name__ == '__main__':\    main()运行形式: ...

December 30, 2021 · 2 min · jiezi

关于深度学习:MegEngine-端上训练让-AI-懂你更能保护你

作者:Lenny | 旷视科技 MegEngine intern刷购物 App 频频被“种草”、指纹识别一次比一次稳准快、美颜相机 get 你的爱好一键 P 图…… 在智能手机上,利用 AI 算法进行个性化举荐能大幅度晋升用户的体验。然而,想让 AI 更懂你,很多利用都须要将用户数据进行模型训练,饭馆举荐背地是举荐零碎、指纹识别是利用过往数据主动优化模型、聪慧的美颜相机背地是对用户行为的剖析。 在这种状况下,如何让 AI 算法更精准地了解用户爱好又能保障用户数据安全呢?一个直观的想法就是间接在手机上进行模型训练,这样既防止了数据传输可能带来的泄露危险,又能一直晋升模型性能。MegEngine 既能够在 GPU 上进行训练,又能够在挪动设施上进行推理,那两者联合一下,是不是能够在挪动设施上进行训练呢?答案是必定的。 那么接下来,就来看一下如何在 MegEngine 外面进行端上训练吧~ 依然是老规矩,拿 Mnist 数据集来进行试手,模型选用 LeNet。在咱们的内部测试中,调用端上训练接口的代码能够间接在手机上运行,并且成果和通用的 Python 训练接口齐全对齐。 回顾在 Pytorch、Tensorflow 等框架建设训练流程时候做的事件,咱们能够发现次要包含: 搭建模型;增加 Loss 与 Optimizer;导入数据集;设置学习率、训练轮数等超参数并训练。搭建模型模型的搭建其实是结构前向计算图的一个过程,通过调用算子,获取与输出绝对应的输入。 从 LeNet 的模型构造容易得悉,咱们须要调用 2 次卷积算子,2 次池化算子,1 次 Flatten 算子,2 次矩阵乘算子,以及若干次四则运算的算子。 在 MegEngine 中,算子只是负责执行运算的一个“黑盒子”,咱们须要提前设置好参数,而后将参数与数据一起“喂”给算子。如下图所示,数据永远是逐层进行传递的,且其 Layout 会被主动计算,而参数则须要咱们手动进行设置。 对于 LeNet 这种前馈神经网络,咱们只须要将后面算子的输入与下一组参数链接到下一个算子,就能够将计算过程连接起来。 因为此处代码比拟简短,这里给出一个简化版的代码示例。能够看出,其实和调用通用的 Python 接口写法差异不大,甚至是一一对应的,比方opr::Convolution对应nn.Conv2d, opr::MatrixMul对应nn.Linear,只是因为 C++ 语言个性和 Python 不同,所以写起来会有一些差别。 SymbolVar symbol_input = opr::Host2DeviceCopy::make(*graph, m_input); // 初始化输出数据SymbolVar symbol_conv = opr::Convolution::make(symbol_input, symbol_conv_weight, conv_param); // symbol_weighs[0] 即咱们提前设置好的卷积 filter 权重symbol_conv = opr::relu(symbol_conv + symbol_conv_bias); //加偏置之后激活SymbolVar symbol_maxpool = opr::Pooling::make(symbol_conv, pooling_param) .reshape({batchsize, fc_shape[0]}); //池化之后进行展平SymbolVar symbol_fc = opr::MatrixMul::make(symbol_maxpool, symbol_fc_weight) + symbol_fc_bias;symbol_fc1= opr::relu(symbol_fc); //通过矩阵乘运算结构全连贯层通过这种形式,咱们即能够将算子、数据与参数进行组合,构建出咱们须要的前向计算图。 ...

December 28, 2021 · 3 min · jiezi

关于深度学习:自回归模型PixelCNN-的盲点限制以及如何修复

前两篇文章咱们曾经介绍了自回归模型PixelCNNs,以及如何解决多维输出数据,本篇文章咱们将关注 PixelCNNs 的最大限度之一(即盲点)以及如何改良以修复它。 在前两篇文章中,咱们介绍了生成模型PixelCNN 概念并钻研了黑白 PixelCNN 的工作原理。PixelCNN 是一种学习像素概率分布的生成模型,将来像素的强度将由之前的像素决定。在以前的文章中,咱们实现了两个 PixelCNN,并留神到性能并不杰出。咱们也提到进步模型性能的办法之一是修复盲点问题。在这篇文章中咱们将介绍盲点的概念,探讨 PixelCNN 是如何受到影响的,并实现一种解决方案——Gated PixelCNN。 盲点PixelCNN 学习图像中所有像素的条件散布并应用此信息进行预测。PixelCNN 将学习像素从左到右和从上到下的散布,通常应用掩码来确保“将来”像素(即正在预测的像素右侧或下方的像素)不能用于给定像素的预测。如下图A所示,掩码将以后被预测的像素(这对应于掩码核心的像素)“之后”的像素清零。然而这种操作导致并不是所有“过来”的像素都会被用来计算新点,失落的信息会产生盲点。 要理解盲点问题,让咱们看上图B。在图B 中,深粉色点 (m) 是咱们要预测的像素,因为它位于过滤器的核心。如果咱们应用的是 3x3 掩码 (上图A.),像素 m 取决于 l、g、h、i。另一方面,这些像素取决于之前的像素。例如,像素g依赖于f、a、b、c,像素i依赖于h、c、d、e。从上图 B 中,咱们还能够看到,只管呈现在像素 m 之前,但从未思考像素 j 来计算 m 的预测。同样,如果咱们想对 q、j、n、o 进行预测,则永远不会思考(上图C橙色局部)。所以并非所有先前的像素都会影响预测,这种状况就被称为盲点问题。 咱们将首先看看pixelcnn的实现,以及盲点将如何影响后果。上面的代码片段展现了应用Tensorflow 2.0的PixelCNN实现掩码。 class MaskedConv2D(keras.layers.Layer): """Convolutional layers with masks. Convolutional layers with simple implementation of masks type A and B for autoregressive models. Arguments: mask_type: one of `"A"` or `"B".` filters: Integer, the dimensionality of the output space (i.e. the number of output filters in the convolution). kernel_size: An integer or tuple/list of 2 integers, specifying the height and width of the 2D convolution window. Can be a single integer to specify the same value for all spatial dimensions. strides: An integer or tuple/list of 2 integers, specifying the strides of the convolution along the height and width. Can be a single integer to specify the same value for all spatial dimensions. Specifying any stride value != 1 is incompatible with specifying any `dilation_rate` value != 1. padding: one of `"valid"` or `"same"` (case-insensitive). kernel_initializer: Initializer for the `kernel` weights matrix. bias_initializer: Initializer for the bias vector. """ def __init__(self, mask_type, filters, kernel_size, strides=1, padding='same', kernel_initializer='glorot_uniform', bias_initializer='zeros'): super(MaskedConv2D, self).__init__() assert mask_type in {'A', 'B'} self.mask_type = mask_type self.filters = filters self.kernel_size = kernel_size self.strides = strides self.padding = padding.upper() self.kernel_initializer = initializers.get(kernel_initializer) self.bias_initializer = initializers.get(bias_initializer) def build(self, input_shape): self.kernel = self.add_weight('kernel', shape=(self.kernel_size, self.kernel_size, int(input_shape[-1]), self.filters), initializer=self.kernel_initializer, trainable=True) self.bias = self.add_weight('bias', shape=(self.filters,), initializer=self.bias_initializer, trainable=True) center = self.kernel_size // 2 mask = np.ones(self.kernel.shape, dtype=np.float64) mask[center, center + (self.mask_type == 'B'):, :, :] = 0. mask[center + 1:, :, :, :] = 0. self.mask = tf.constant(mask, dtype=tf.float64, name='mask') def call(self, input): masked_kernel = tf.math.multiply(self.mask, self.kernel) x = nn.conv2d(input, masked_kernel, strides=[1, self.strides, self.strides, 1], padding=self.padding) x = nn.bias_add(x, self.bias) return x察看原始PixelCNN的接管域(下图2中用黄色标记),咱们能够看到盲点以及它是如何在不同层上流传的。在这本篇文章的第二局部,咱们将应用改进版的PixelCNN,门控PixelCNN,它引入了一种新的机制来防止盲点的产生。 ...

December 28, 2021 · 5 min · jiezi

关于深度学习:5个很少被提到但能提高NLP工作效率的Python库

本篇文章将分享5个很棒然而却不被常被提及的Python库,这些库能够帮你解决各种自然语言解决(NLP)工作。 ContractionsContractions它能够扩大常见的英语缩写和俚语。并且能够疾速、高效的解决大多数边缘状况,例如短少撇号。 例如:以前须要编写一长串正则表达式来扩大文本数据中的(即 don’t → do not;can’t → cannot;haven’t → have not)。Contractions就能够解决这个问题 pip install contractions应用样例 import contractionss = "ive gotta go! i'll see yall later."text = contractions.fix(s, slang=True)print(text)后果 ORIGINAL: ive gotta go! i’ll see yall later.OUTPUT: I have got to go! I will see you all later.文本预处理的一个重要局部是创立一致性并在不失去太多意义的状况下缩小单词列表。词袋模型和 TF-IDF 创立大型稠密矩阵,其中每个变量都是语料库中一个不同的词汇词。将缩略语进行还原能够进一步升高维度,还能够有助于过滤停用词。 Distilbert-Punctuator将失落的标点符号的文本进行断句并增加标点符号……听起来很容易,对吧?对于计算机来说,做到这一点必定要简单得多。 Distilbert-punctuator 是我能找到的惟一能够执行此工作的 Python 库。而且还超级准!这是因为它应用了 BERT 的精简变体。在联合 20,000 多篇新闻文章和 4,000 份 TED Talk 抄本后,对模型进行了进一步微调,以检测句子边界。在插入句尾标点符号(例如句号)时,模型还会适当地将下一个起始字母大写。 装置 pip install distilbert-punctuator这个库须要相当多的依赖项,如果只是想测试,能够在 Google Colab 上试用。 ...

December 27, 2021 · 3 min · jiezi

关于深度学习:使用-PyTorch-Geometric-在-Cora-数据集上训练图卷积网络GCN

图构造在事实世界中随处可见。路线、社交网络、分子结构都能够应用图来示意。图是咱们领有的最重要的数据结构之一。 明天有很多的资源能够教咱们将机器学习利用于此类数据所需的所有常识。曾经有很多学习无关图机器学习的相干实践和资料,特地是图神经网络,所以本文将防止在这里解释这些内容。如果你对该方面不太熟悉,举荐先看下CS224W,这会对你的入门有很大的帮忙。 本篇文章应用PyTorch Geometric来实现咱们须要的模型,所以首先就是装置 try: # Check if PyTorch Geometric is installed: import torch_geometricexcept ImportError: # If PyTorch Geometric is not installed, install it. %pip install -q torch-scatter -f https://pytorch-geometric.com/whl/torch-1.7.0+cu101.html %pip install -q torch-sparse -f https://pytorch-geometric.com/whl/torch-1.7.0+cu101.html %pip install -q torch-geometric装置实现后导入咱们须要的包 from typing import Callable, List, Optional, Tupleimport matplotlib.pyplot as pltimport numpy as npimport torchimport torch.nn.functional as Fimport torch_geometric.transforms as Tfrom torch import Tensorfrom torch.optim import Optimizerfrom torch_geometric.data import Datafrom torch_geometric.datasets import Planetoidfrom torch_geometric.nn import GCNConvfrom torch_geometric.utils import accuracyfrom typing_extensions import Literal, TypedDictCora 数据集Cora 数据集蕴含 2708 篇迷信出版物,分为七类之一。援用的网络由 5429 个链接组成。数据集中的每个出版物都由一个 0/1 值的词向量形容,该向量示意字典中对应单词是否存在。该词典蕴含1433个独特的单词。 ...

December 23, 2021 · 4 min · jiezi

关于深度学习:聊聊目标检测

配套视频链接:https://www.bilibili.com/vide... 首先,大家须要明确什么是指标检测。这样能力确定本人的工作是不是指标检测,以确保前面的内容能帮忙你解决问题。 指标检测,Object Detection。我一开始看到检测这个词,认为只是单纯检测出关怀指标在图片中的地位,起初发现是我太年老了。 检测,不仅须要找到图片上的所关怀的指标地位,同时还要辨认出这个指标是什么类别。正如这张图所示,指标检测找到了图片中关怀的三个类别物体的地位:狗,自行车和汽车。不仅找到了这些物体的地位,还辨认出检测地位的物体类别。 指标检测的利用场景很广,次要是把握指标两个字。指标的定义是依据咱们利用的场景进行定义的。比方在人脸检测场景中,咱们能够把人脸当作指标。在文字检测场景中,咱们能够把文字当作场景。像当初更多的科研钻研都是聚焦于天然场景中的指标检测,检测的指标次要就是生存中常见的物体类别,这类检测问题的特点是指标品种多,指标地位较为简单多样。 所以,如果指标检测模型可能在天然场景中的获得不错的成果,在绝大多数利用场景中都应该能获得不错,甚至更好的成果。这所有只须要咱们略微改变下网络模型,抉择适宜本人利用场景或者制作对应的数据集,就能够获得优良的检测后果。 本文由博客一文多发平台 OpenWrite 公布!

December 21, 2021 · 1 min · jiezi

关于深度学习:恒源云文本分类-文本数据增强1论文笔记

文章起源 | 恒源云社区(恒源云,专一 AI 行业的共享算力平台) 原文地址 | 文本数据加强 原文作者 | 角灰 最近在做新闻标题分类,找了篇数据加强的文章学习学习:一篇就够!数据加强办法综述本文实现了EDA(简略数据加强)和回译: 一. EDA1.1 随机替换 import randomimport jiebaimport numpy as npimport paddlefrom paddlenlp.embeddings import TokenEmbedding# 从词向量中按余弦类似度找与某个词的topk近义词def get_similar_tokens_raw(query_token, k, token_embedding): W = np.asarray(token_embedding.weight.numpy()) x = np.asarray(token_embedding.search(query_token).reshape(-1)) cos = np.dot(W, x) / np.sqrt(np.sum(W * W, axis=1) * np.sum(x * x) + 1e-9) flat = cos.flatten() # argpartition在k个地位放第k大的索引,右边比他小,左边比他大,复杂度仅o(n) # 取-k则在-k和他左边的为topk,对他们再排秩序就好了 indices = np.argpartition(flat, -k)[-k:] indices = indices[np.argsort(-flat[indices])] # 取负从大到小排 return token_embedding.vocab.to_tokens(indices)# 随机替换def random_replace(words,token_embedding,prob=0.1,max_change=3): change_num=0 for idx in range(len(words)): prob_i=prob*(len(words[idx])-0.5) # -0.5使得长度1的词概率乘2,不易选中 if random.uniform(0,1)<prob_i: # 词越长,越容易被替换 sim_words=get_similar_tokens_raw(words[idx],k=5,token_embedding=token_embedding) words[idx]=random.choice(sim_words) change_num+=1 if change_num>=max_change: break return words因为get_similar_tokens_raw一次只能取一个词的近义词较慢,于是改成了一次取多个词的近义词,成果如下: ...

December 21, 2021 · 3 min · jiezi

关于深度学习:九章云极DataCanvas公司实力荣登WISE-2021新经济之王年度硬核企业榜

近日,由36氪主办的「WISE2021新经济之王」峰会在上海举办,会上重磅公布「WISE 2021新经济之王」年度硬核企业榜,九章云极DataCanvas公司凭借在人工智能畛域AutoML、AutoDL等“硬核“技术实力和翻新利用荣获「WISE 2021新经济之王」前沿科技领域·年度硬核企业榜。 图片起源:36kr 本次「WISE2021新经济之王」年度硬核企业榜涵盖前沿科技、企业服务、金融科技等十大赛道,从产品创新力、经营衰弱度、渠道&行业位置、成长后劲&资本体现等综合维度登程,联合业余投资机构意见、36氪资深行业分析师的调研,对数百家参评企业进行综合举荐及意见反馈,经多轮遴选后,最终评比出「WISE 2021新经济之王」年度硬核企业。 36氪提到中国正处于新的时代转折点,前沿科技力量的崛起势不可挡。从2019年开始,VC和PE的投资重点就开始从互联网模式翻新转向To B畛域,到了2021年,以人工智能、先进制作、光电芯片、新资料等为代表的前沿科技领域更是备受关注。 随着人工智能迅猛发展,科技翻新始终是企业倒退的能能源。九章云极DataCanvas公司外围产品数据迷信平台将“自动化”使用在模型构建到生产化的各个环节中,使企业各部门人员实现协同开发,联合高并发的实时数仓,升高企业应用AI技术的门槛,晋升建模效率,为企业数智化降级提供新动能。作为国内当先的AI根底软件提供商,其开源了一系列的AutoML工具,率先冲破机器学习建模过程中“不平衡、概念漂移、泛化能力和大规模数据”的难点问题。 近年来人工智能技术继续下沉,九章云极DataCanvas公司使用AutoML、AutoDL等外围AI技术与泛滥行业细分的理论场景相结合,为政府、金融、通信、制作等泛滥行业客户提供从主动建模、模型经营到模型生产化的全生命周期服务,解决企业客户的数智化降级需要,实现各行业利用场景的落地并屡次入选爱剖析等权威机构公布的行业报告,其中九章云极DataCanvas公司助力国内某当先城商银行建设的“企业级AI中台建设项目” 更是斩获2021 IDC将来企业·将来智能领军者。 2021年,九章云极DataCanvas公司基于“云中云”策略,围绕各行业的当先客户群体,将AI能力嵌入到行业云、区域云、企业云、联盟云等千朵云中,满足不同云生态的需要,塑造千朵云生态的AI基础架构,减速实现企业智能化剖析和决策。 基于旧条件而生存的状态被突破,新经济也正在从商业模式翻新的“利用时代”迈向一个簇新的“硬核时代”。在硬核时代中,九章云极DataCanvas公司也将继续摸索“硬核”AI技术创新,以云原生、标准化的基础架构软件,实现更加灵便、高效的技术利用,赋能各行各业数智化降级。

December 20, 2021 · 1 min · jiezi