PaddlePaddle、Tensoflow、PyTorch三个框架里最熟的是PaddlePaddle,在上面花的时间也最多,回顾来看,其实也投入了不少冗余的时间。写这篇文章希望能帮助到正在学习PaddlePaddle的同学们。
1. 学习AI最冗余的时间其实在数学,8年前开始学习机器学习的时候从李航的《统计学习方法》和周志华的《机器学习》两本书开始,没有配套的代码或者环境帮助理解,非常吃力,进而认为数学功底不够,把大学的《数学分析》、《线性代数及其应用》、《概率论与数理统计》重学了一遍,花了很多的时间,厚积薄发当然有帮助,不过当下的框架已经非常好用,不需要自己去实现底层的数学逻辑,飞桨AI Studio星河社区-人工智能学习与实训社区上有一篇课程把所有需要了解的数学知识做了一个梳理,可惜翻了半天没找出来,但总之如果不是做底层的同学不需要在数学上花太多的时间。
2. PaddlePaddle的好处是拿来即用,组网、前向函数、梯度更新、反向传播,有点AI八股文的意思,不过从最朴素的编程逻辑角度了解下具体是怎么工作的非常有价值,推荐飞桨AI Studio星河社区-人工智能学习与实训社区这节课程仔细学习下,再复杂的网络也是类似的原理。百度持续在升级培训课程,目前这个链接的是百度《零基础实践深度学习》的2.3版,留意下如果有版本更新,选择最新的版本学习。
3. 八股文的好处是无论什么网络编程逻辑都是一致的,1) 模型设计-> 2)准备数据 -> 3)训练设置 -> 4)应用部署 -> 5)模型评估
5. 模型设计,关键是要选择与目标任务相关的模型,比如基于时间序列来预测(比如股价预测),最好的模型是循环神经网络RNN;计算机视觉,最好的模型是卷积神经网络CNN;自然语言处理则自然是当下最热门的Transformer(如GPT就是基于此模型),留意每种模型下面还有很多不同基于类似思路的不同子模型,如CNN下面就有LeNet、AlexNet、VGGNet、GoogLeNet、ResNet等。
6. 接着,模型设计还涉及到激活函数的选择,关键意思就是数据从网络的上个节点传到当前节点后通过什么函数计算后再传到下个节点,PaddlePaddle里最常用的是ReLu、Sigmoid、Tanh和Softmax四个函数,可以自行百度查询,都是非常简单的高中数学里会涉及到的函数。
7. 再接着,模型设计还涉及到损失函数的选择,关键意思就是模型通过整个网络基于训练数据训练一轮后和真实结果对比来判断当前训练结果的准确程度,PaddlePaddle最常用的是均方误差、平方误差、交叉熵损失等。第6、7点里不同的目标任务会有不同的激活函数和损失函数推荐,问下文心一言都可以得到答案。
8. 模型设计还涉及到优化算法的选择,关键意思是训练一轮后准确度肯定很低,这个时候就要更新网络中每个节点的参数以使得准确度能够提高。如何更新?一个是学习率,即更新的幅度有多大,另一个是更新的算法,两者相乘就是具体的更新值了。更新算法也就是优化算法主要有SGD(随机梯度下降)、Adam、Momentum等。
9. 准备数据顾名思义就是准备训练数据集、测试数据集,逻辑很简单,不过真实案例中会涉及到数据清洗、异步加载等话题,比如模型会更偏好数字类型的数据,如果原始数据是文本,就要考虑如何将其转换为数字,再比如模型会天然给更大的数字更高的重视,需要将之缩放(或者归一)到-1~1或者0~1之间等。
7. 训练设置,具体训练模型让数据沿着配置好的网络一遍遍的跑直到达到期待的结果。这里涉及到的问题是如何提高训练的效率,比如有10万条训练数据,选练完一轮再去更新参数再训练第二轮...训练的时间可能就要很长,考虑将10万条数据分成若干个批次,一个批次训练网去更新参数基于第二个批次训练第二轮效率就会提高。另一个是可以指定CPU还是GPU以及分布式训练等来提高效率。
8. 应用部署,训练完达到期待效果的模型可以保存为模型文件用于真实数据的调用(也就是推理),这里会有很多种不同的调用方式,比如通过Web API调用、服务器本地调用、手机调用等,并因此而带来如何压缩模型、优化推理效率等。
9. 模型评估,评估模型的有效性。涉及些比较有意思的话题比如准确率、召回率、F1分数、ROC曲线等,其实关键意思很简单,举个例子,100个动物里,95只是羊,5只不是,AI模型识别到91只羊,其中90只真的是羊,另外1只不是羊,那么准确率就是90/91,召回率就是90/95。
学习PaddlePaddle大致就是以上框架,当然里面每个环节都可以深度展开许多细节,不过啥学习不都是从粗到细,从整体到局部嘛!
标签:训练,AI,模型,PaddlePaddle,学好,更新,学习,深度 From: https://blog.csdn.net/m0_66899341/article/details/144942180