AI建模架构总结,欢迎指正!
恩达老师的笔记会一直持续更新,那么AI学习到最后,无非是要学会把理论知识付诸于实践,也就是所谓的建立模型并应用到商业或者公益实践中。
那么AI建模的步骤是怎样的呢?
我这里从前辈那里学习并总结了AI建模七部曲,今天分享给大家!
首先总结下,AI建模七部曲:
1. 准备数据
2. 数据预处理
3. 划分数据集
4. 配置模型
5. 训练模型
6. 评估优化
7. 模型应用
这个步骤是非常细分的了,如果等你轻车熟路了,应该可以再缩减,不过这里我就针对这七部分别来说明下,如果可以请认真听咯!
准备数据
这一步相对来说是最基础,也是最“艰难”的了。
为什么这么说呢?
首先,想建立一个模型,你要有数据集,那么在现在AI火爆的时代下,为了能更好的推广和壮大AI,很多公司(谷歌等)开源了很多非常优秀的数据集,大家可以在学习训练时,优先使用这些整理好的,因为这个更容易入门,更容易看到效果,
其次,如果真正是到了要自己制作的时候,那么这个工作量取决于你的模型的大小。当然,无论你的模型大小,你都要去“打标签”,意思也就是你要对数据进行标记,这样才能更好的告诉神经网络,应该如何分辨和学习!
然后就是打标签的方法了,这是一项非常细致和严谨的工作,应该有人听说过标注工程师这个职业,对,那个就是这个的衍生职业,是不是突然感觉到了这个任务的“重”。
不过我们一般使用的不会特别大的数据集,也是可以自己制作和处理的,一个大佬开源了一款标注工具: LabelImg’,这个还是非常好的,如果真正需要了可以了解下。还是细说下,方法包括:对整个文件打标签,对固定区域打标签,对数据截断打标签。
数据预处理
做好了数据准备,下一步就是做好数据的整齐划一,意思就是说你先收集了数据样本,做好了标签,后面就是要进行图片处理了,同样,如果是已经整理好的数据集,那么这个工作基本上是没有的,因为都是已经做好的。
如果是自己的话,那么这个工作是需要脑力劳动的,首先你要统一格式,调整格式,然后你要考虑灰度化,去噪平滑,还是均衡化,二值化,腐蚀等,当然如果你收集到的样本数量不够,那么也是有一种方法,可以让你的样本数量翻倍,这个方法包括水平翻转图像,随机裁剪,平移变换,颜色,光照变换等,但是前提是你要训练分辨学习的信息不要受到影响,这点很重要,一定要注意!
主要流程
做完了前面的数据准备和处理之后,才是我们主要的AI建模之旅!
这也是我们主要的建模过程:
1. 对已处理好的数据划分:分为训练集,测试集,有的还有验证集(也就是包含训练集和测试的一部分,两种数据都有的),他们的作用和名称一样简单易懂,训练是用来做训练网络的,测试就是测试训练好后的结果的,看下是否达到了我们训练的初衷与目标。
2. 配置模型:这一步就是通过你对数据的使用和处理,来考虑和决定使用哪一种网络模型和结构来进行训练,AI深度学习发展初期:LeNet, AlexNet, VGG-16,VGG-1,Yolo1/2/3等网络模型均是拔的过同时期头名的网络架构。这一步也是至关重要的一部,你要学会如何去设计符合自己需求的模型,前期是可以使用他人的网络模型和超参数设置,但是后期肯定要有自己的一套建模理念的。
对于超参数,这个多说一点,这个超参数指的就是在网络中不是硬性规定,可以人为设置的参数,这个东西很“玄乎”,至少在目前为止,没有一个很明确的定义,你不会看到说一个网络模型已经定义好了所有的超参数的,因为这都是要靠经验和积累去训练然后对比的。
3. 训练模型:如果做好了前期的数据集划分和模型配置,那么你就到了训练模型的一关,此关你要定义可以决定你训练结果和训练速度的两个关键指标:损失函数和优化器,损失函数是评价训练输出与你本来的标签之间差距的指标评估依据,优化器是影响网络训练快慢与训练梯度下降优劣,和是否会陷入鞍点等的关键武器。
4. 评估优化:训练结束后,那么在数据划分里的测试集就要派上用场了,这个是评估泛化能力的,所谓的泛化能力也就是测试准确度,或者说网络辨别学习能力的一个硬性指标。当然在测试后就可以得出结论了,然后对网络进行评估是否需要进一步调整优化或者是已经最优,应用于实践。这个过程就好比之前所讲的一个AI工程师,需要做的,有想法(idea) 写网络模型(code) 训练测试评估(experiment) 优化 再换想法(idea) 继续写网络模型(code)……
5. 模型应用:这个就很简单了,前面都结束后,下一步就是应用了,说着很容易,但是其实如果应用,怎么传入我们需要的数据,从何而来的数据?应用中采样也是一个实际性的问题,需要下点心思。
AI建模能力是一个需要项目实战才可以慢慢锻炼出的能力,所以了解了框架之后,慢慢培养自己的建模能力吧,其实这个并没有印象中的那么痛苦!
Come on! AI fighter!