学习机器学习有一阵子了,已经了解了不少机器学习的算法和知识,甚至前面训练了一些demo模型,现在是时候整体的整理一下我的知识了。
还是从学习三要素开始,WHAT,WHY,HOW
机器学习是一种人工智能的分支,其目标是通过对数据进行学习,使计算机系统能够从数据中学习并改进,并且掌握一些规律,而无需显式地进行编程。
分类:将实例分到预定义的类别中。
例如:
回归:预测连续值输出。
例如:
聚类:将数据集中的实例分成相似的组。
例如:
降维:减少数据维度,保留最重要的信息。
例如:
最常见的两种监督式学习任务是分类和回归。
被标记的训练数据集是指每个实例都有对应的标签或输出结果的数据集。
无监督式学习任务包括聚类、降维、关联规则学习和异常检测。
强化学习算法,]包括深度强化学习算法,来让机器人在尝试中学习如何最大化累积奖励。
聚类算法
监督式学习
在线学习区别于这个批量学习,批量学习指的是训练整体数据集,所谓在线学习,就是支持增量。它可以逐步接收新数据并自动适应,缺点是可能会有知识遗忘。
在核外学习中,数据量太大以至于无法一次性加载到内存中,因此需要在有限的内存空间下进行模型训练和处理。这种情况下,通常采用分块加载数据的方式,每次从存储介质中读取一部分数据到内存中,进行模型训练或预测,然后释放内存,再加载下一部分数据,如此往复,直到处理完整个数据集。这个在QA机器人中有实战,数据集包含数十几万条文本记录,无法一次性加载到内存中,所以将数据集分成多个较小的块,每个块包含一部分文本记录。然后,模型可以逐块加载数据,进行训练。在每个训练步骤中,模型只使用当前块中的数据,而不是整个数据集。
基于实例的学习算法。这类算法不会显式地建立模型来描述数据的内在结构,而是通过将新实例与训练集中的实例进行比较,并基于相似度来做出预测或分类。
模型参数是由学习算法自动学习得到的(如梯度下降算法中优化代价模型中的参数),而超参数通常是在训练之前手动设定的(如步长,训练次数)
搜索的是模型的参数空间,以找到最优的参数值来最小化损失函数。这些算法的目标是通过对模型参数的调整来拟合训练数据,并尽可能地泛化到新的未见数据。最常使用的策略之一是梯度下降算法,之前曾经用过预测房价,原理很清楚,通过沿着损失函数的负梯度方向更新模型参数,以使损失函数逐步减小。
数据质量、过拟合、欠拟合和解释模型的预测结果等问题
如果模型在训练数据上表现很好但在新实例上的泛化能力很差,可能的原因包括过拟合、数据集不够代表性以及模型选择不当。解决方案可能包括增加训练数据、简化模型。
测试集是用来评估模型性能的数据集,使用测试集是为了估计模型在新数据上的泛化能力。
在后面的几个学习中,我们引入了验证集,引入验证集的目的是验证集的目的是用来调整模型的超参数,以提高模型的性能,并且防止过拟合训练数据。、
导致模型在测试集上过拟合从而模型的泛化能力差。
交叉验证是一种通过将数据集划分为多个子集,轮流使用其中一部分作为验证集来评估模型性能的方法。它比单一验证集更好,因为可以更充分地利用数据,并且对模型性能的评估更加稳健。
现在我已经对这段时间的学习有一个整体的概念上的整理了,后面我的方向和之前算法demo有所不同,我决定通过现有的python机器学习框架对深度学习(包括机器学习)有一个全面的学习,从而能够解决实际的我们需要面对的问题和挑战。