中科北纬(北京)科技有限公司

010-5289 6043

中科北纬(北京)科技有限公司

工程案例

Project cases

工程案例

网站首页 > 工程案例

天枢(Learth)第二讲:模型训练——如何当一名“厨子”?

2021-11-19 10:01:25 18 发布:中科北纬

在介绍本篇文章之前呢,我们先来回顾一下上篇文章的内容。“天枢(第一讲)”主要为大家介绍了深度学习遥感样本库的建设原则和方法,以及天枢为遥感行业内零AI基础的用户提供了自主训练高精度神经网络的平台。在这样一个架好的“炼丹炉”面前,不会“法术”的我们也能炼出丹药,so tm crazy? 没错,“炼丹炉”内的“六丁神火”已经给您燃起,人人都可以上手操作成为“炼丹师”;当然了,要想炼出绝世好丹也并非那么容易,这就要求炼丹师们最好懂点“法术”了。


举一个现实场景中的例子,大家都见过或者品尝过很多的美食。那么一道美食在呈现之前无疑需要具备三个必不可少的条件——“厨具、食材、菜谱”。 有人说,那厨师呢?没错,这三个条件提供给任何一个普通人,我相信只要Ta不silly,时间久点也可以做出一道菜,只是做出来的菜总感觉缺了点什么,所以经常会出现忙碌了两个小时的陈师傅最后决定还是拿起手机点了份外卖这样的局面。而换作一名厨师或者家庭主厨,通过一顿秀操作,三下五除二的就可以弄出一桌佳肴来,不仅节省了大量的时间,而且做出来的菜色香味俱全,让人垂涎欲滴。然而厨师不可能靠一桌美食就能俘获全天下的胃,就比如北方的厨师去到了南方,很有可能不会得到南方人的喜爱。这也不怪厨师,因为地域饮食文化、食材的生长季节及生长环境等差异,众口难调。但是厨师会凭借着自己丰富的行业经验,只要给他一份当地的菜谱和食材,就能很快的制作出符合当地口味的美食。


当然,这里并不是教大家如何成为一名厨师。其实神经网络训练的原理也是如此,只是操刀的不再是厨师,而是AI算法工程师 (会数学的厨师?谁说的站出来!),只不过一个研究味觉,一个研究视觉,其实也一样,因为我们可以类比一下:“菜谱=算法,食材=样本,厨具=GPU”。而今天这篇文章,小编主要带来一些关于遥感神经网络训练的知识普及和经验分享,也希望能助大家早日成为一名略懂点“法术”的“炼丹师”。


深度学习与传统的机器学习区别?


“深度学习”一词在近两年来高频次的出现在各大博客和朋友圈当中,相信大家早已经耳濡目染了。我们都知道,深度学习是机器学习的子集,机器学习又是人工智能的子集,所以深度学习自然也属于人工智能。那么深度学习为什么突然如此火爆?与传统的机器学习相比,它们有何不同呢? 这里小编结合自己的学习经历,梳理出以下几点:


#01  特征工程

传统的机器学习需要人工去提取特征(浅层特征),深度学习则不需要,而且深度学习算法尝试从数据中学习到高级特征。例如训练一个识别猫的模型,机器学习不仅要给出猫的照片和位置信息,还需要人工手动去分析出猫与其它类别最易于区分的那些特征并告诉机器;而深度学习只需要猫的照片和位置信息即可。



#02  数据依赖性

深度学习适合处理大数据,而数据量比较小的时候,用传统的机器学习方法也许更适合,随着数据量的增大,深度学习的优势越会发挥出来。


#03  硬件依赖性

深度学习十分地依赖高端的硬件设施,深度学习中涉及到很多的矩阵运算,深度学习离不开GPU,因为GPU就是专门为矩阵运算而设计的,可以优化这些矩阵运算操作。相反,传统的机器学习随便一台电脑就可以训练。


#04  解决问题思路

当使用传统的机器学习算法解决问题时,通常建议将问题分解为不同的部分,分别解开这些问题,然后将它们组合起来得到结果。相反,深度学习主张从头到尾的解决问题。


#05  执行时间

传统的机器学习一般训练时间短,深度学习训练时间长,因为有很多参数和矩阵计算。


#06  可解释性

传统的机器学习一般具有可解释性,即得出的结果,可以通过清晰的规则来理解;而深度学习不具有可解释性,很多时候它得出的结果,我们并不能明白其背后的原理,甚至它已经超越了正常人类的思维模式。


深度学习神经网络训练流程  

其实真正的模型训练也并非大家所想的那样复杂,只是我们经常在网上被一些AI专业术语和“乱七八糟”的数学公式给吓到。而一旦掌握了训练的核心原理,再加上已经有很多的科学家以及算法工程师们帮助我们搭建好了开源的底层框架、设计好了各种精巧的网络结构,就像套公式一样,人人都可以自己训练模型。但是这样一个“黑匣子”究竟是怎样运作之后然后得出一个神奇的东西——“模型”出来的呢? 不知道大家是不是和小编一样,心里总是有种不通透感,为缓解大家心里的这种不通透感,不妨让我们一起来了解一下神经网络训练的大体流程:


1.数据预处理,制作样本

-如何进行遥感数据的预处理以及遥感样本制作请参见“天枢第一讲”“遥感数据处理流程”等历史文章


2.将制作完成的样本数据输入神经网络(每个神经元先输入值加权累加再输入激活函数作为该神经元的输出值)正向传播,得到“得分”

-对应天枢中模型框架选择、批处理大小设置


3.将“得分”输入误差函数loss function(正则化惩罚,防止过度拟合),与真值(人脑模型)比较得到误差,多个误差求和,通过误差判断神经网络识别程度(损失值越小越好)


4.通过反向传播(反向求导,误差函数和神经网络中每个激活函数都要求,最终目的是使误差最小)来确定梯度向量

-对应天枢中学习率大小设定、学习率策略选择


5.最后通过梯度向量来调整每一个权值,向“得分”使误差趋于0或收敛的趋势调节

-对应天枢中优化策略选择


6.重复上述过程直到设定次数或损失误差的平均值到达最低点,不再下降

-对应天枢中训练轮数设定


怎么样,是不是很简单?而且天枢平台将“黑匣子”里的这些超参数以及最终训出来的结果指标、损失函数全都可视化展示,时刻直观监视着模型训练全流程。所以总结起来,用天枢训练模型就像把大象装进冰箱一样简单。


 输入样本数据,明确训练需求,选择对应的需求模块


 创建训练任务,设置训练超参数,提交任务,即可等待最终结果


 利用验证集对模型进行评估,满意再发布,不满意再迭代


 发布的模型,直接应用解译


遥感深度学习模型训练经验  

开篇也提到,想要训练一个高精度的模型也并非那么容易,在满足基本算力条件的前提下,模型训练的两大实质核心内容为:样本的制备与算法的调优。若想训练出高精度模型,两者相辅相成,缺一不可。而文章开篇厨师的例子也说明了,没有一个模型能够满足于整个遥感行业内所有业务规则和场景的精度需求,相较于酸甜苦辣咸等味觉上的感知,不同的卫星源、地形地貌、季节、气象条件、人类活动、成像算法等产生的视觉差异因素则显得更加复杂。而我们所说的模型效果差,其实也就是模型欠拟合或者过拟合,所以整个模型训练中主要有以下几点影响因素:


样本的选择

收集更多更全的样本。例如想要识别建筑物,理论上我们如果能收集到全国所有类型的建筑物样本交给机器学习是最好的,模型泛化性会越强;但这明显不现实,因为它涉及的维度太多(不同的影像分辨率、城村房屋结构差异等),数据量太大,所以就需要人工来初步降维。那么如何有效的人工降维呢? 即细化业务需求,只准备有特征代表性的样本。 比如我们只想要识别北京城区的建筑物,而且后期主要参考影像是高分2号卫星0.8米分辨率的影像。那么这时候我们就可以省去一些代表性没那么强的例如农村建筑、其它省市建筑、2米分辨率影像等类型样本,将重点样本放在北京城区、0.8米分辨率影像的建筑物上,即最终的样本特征尽可能涵盖北京所有建筑的样式、类型、颜色等。这也是在样本不充足的情况下最佳的选择。所以最终模型的难度决定了所需样本量的多少,模型越简单,模型收敛所需的样本量就越少,而模型越复杂,模型收敛所需的样本量就越多。


深度学习框架的选择

目前在科研和工业领域用的较多的深度学习开源框架主要有国外的PyTorch,TensorFlow,以及国内的PaddlePaddle、Jittor、MegEngine等。如何选择一个合适的框架,与现有编程平台、技能整合的难易程度、数据处理生态整合的紧密程度、对数据量及硬件的要求、平台的成熟程度等因素都有着密切关系,没有好坏,只有适不适合。但在如今激烈的国际贸易战之下,还是希望国产品牌能够得到大家更多的关注和支持。


数据增强

对样本进行旋转、平移、颜色变换、裁剪、仿射变换,加入随机噪声等方式,以此来增加样本数量和泛化性。天枢平台所依赖的国产开源PaddlePaddle深度学习框架就提供了大量的数据增强方式,方便了我们增加样本数量。


模型的选择

模型选择建立在对问题的理解、对数据的理解、对各种模型的理解的基础之上,结合经验和不断的尝试,以选择最适合的模型获得更高的准确率。天枢平台已经自研并集成了大、中、小三个模型,在训练前可根据不同的数据量和模型复杂程度进行选择。


合理的调参

深度学习算法是由参数驱动的,适当的调整迭代轮数、学习率大小等超参数(超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据),会使模型更快的找到最优值。


结语  

深度学习模型训练是一个费时间,考验技巧的过程。模型训练中有梯度弥散,过拟合等各种痛点,正是为了解决这些问题,不断涌现出了各种设计精巧的网络结构。我们不必像AI算法工程师们那样不仅要学习网络结构的设计方式,还得掌握它们的设计思想。正所谓“前人栽树,后人乘凉”,天枢平台已经研发并集成了多个精巧的网络结构和网络模型,大大降低了AI模型训练的门槛,基于这些网络框架和模型,再按照样本库的建设原则去准备样本,我们就可以轻松的训练出特定场景的模型。

“菜谱”已附上,恭迎各位“厨师”带上“食材”,来到“天枢厨房”大展身手,制作出自己喜欢的“美食”吧。



下篇文章会为大家带来模型训练实战分享,关注公众号不迷路,敬请期待!


其他案例

-->