Datawhale X 李宏毅苹果书 AI夏令营
第 1 章 机器学习基础
定义:
机器学习,顾名思义,机器具备有学习的能力。具体来讲,机器学习就是让机器具备找一个函数的能力。……比如语音识别,机器听一段声音,产生这段声音对应的文字。我们需要的是一个函数,该函数的输入是声音信号,输出是这段声音信号的内容。这个函数显然非常复杂,人类难以把它写出来,因此想通过机器的力量把这个函数自动找出来。 ——《深度学习详解》
任务的分类:
-
回归任务 —— 填空题 —— 输出没有明确的范围
-
函数的返回值是一个 数值或标量 。
-
如:预测PM2.5、预测观看次数
-
-
分类任务 —— 选择题 —— 输出有明确的范围
-
人事先准备好一些选项,让机器做选择题,从设定好的选项里面选择一个当作输出。
-
如:邮件的分类、AlphaGo下围棋
-
-
结构任务 —— 创作题 ——输出有明确的格式
- 产生一个有结构的物体
- 如:让机器画一张图,写一篇文章(目前的各种AI,如 ChatGPT)
机器学习的过程(训练)
1、写一个带有未知参数的函数
对于明显能抽象出数学函数的问题,如 回归任务 而言。这一步是将 具体的问题 抽象成一个 带有未知参数的数学函数 的过程。可以依据 前置的数据 来大致判断 函数的类型
如:对预测未来观看次数的问题,可以写出函数:y = b + wx1 。
其中 y = b + wx1 这一 带有未知参数的函数 称为 模型 ,x1 称为 特征 ,w 称为 权重 ,b 称为 偏置
思考:
- 对于那些不能明确抽象出数学函数的问题,如分类任务与结构任务,要如何写一个带有未知参数的函数?
总体上还是按照 机器学习过程的三个步骤 ,但是在选择的模型上有所区别,如:对于分类任务而言,会选择 逻辑回归模型 ,它将输入特征通过线性组合后通过sigmoid函数转换为概率。;而对于结构任务,模型可能需要设计成 能够生成或修改数据结构的形式 。
2、定义损失
通过枚举 w 与 b 的可能值并带入到 模型 中,然后利用 训练数据 进行损失的计算,即计算 预测值 与 实际值 之间的 差距e
差距e 可采用: 平均绝对误差:|y1-y| 、 均方误差:(y1-y)2 、 交叉熵 等方式计算
接着用 自己定义的损失函数 计算损失,如
L 越大,代表现在这一组参数越不好,L 越小,代表现在这一组参数越好。
最后可以依据 损失L 画出 等高线图 ,这个等高线图称为 差误表面 ,如下图(取自《深度学习详解》)
思考:
- 交叉熵是什么?
交叉熵主要是 分类任务 中的损失函数,它衡量的是 模型预测的概率分布与真实标签的概率分布之间的差异 其数学表达式为:
( y 是真实的标签概率分布, p 是模型预测的概率分布。)
- 差距e的计算,什么时候采用哪种有判断方式吗?
选择哪种误差函数通常基于问题的性质、模型的假设以及优化目标。
均方误差(MSE): (y1-y)2 适用于回归问题,其中模型预测值与真实值之间的差异被平方后平均。MSE对异常值敏感,适合于数据分布较为均匀的情况。
交叉熵误差:适用于分类问题,特别是在概率输出的模型中,如神经网络。交叉熵损失函数衡量的是预测概率分布与真实标签分布之间的差异。
Hinge损失:适用于支持向量机(SVM),它关注于决策边界与最近的数据点之间的距离。
对数损失:适用于逻辑回归,它是交叉熵损失的一种特殊情况,适用于二分类问题。
3、解最优化
寻找能使 损失L 最小的 w 和 b。
方法:梯度下降
对 未知参数 同时求导数,然后对每个未知参数不断更新,直到找到 损失L最小 的点
更新方式:
(η 为 学习率,是自己设定的超参数)
思考:
- 如何规避局部最小值?
增加随机性:通过使用随机初始化、随机梯度下降等方法,可以帮助模型跳出局部最小值,并有机会找到更优的解
尝试不同初始值:进行多次训练,使用不同的初始点或不同的参数设置,以增加找到全局最小值的机会
调整学习率:适当调整学习率的大小,使其能够更好地适应不同区域的变化,从而有机会跳出局部最小值
使用动量法:动量法可以帮助模型在参数空间中更好地探索,有助于跳出局部最小值。
自适应学习率算法:如AdaGrad、RMSprop等,它们可以自适应地调整学习率,有助于模型逃离鞍点区域
二阶优化算法:考虑使用二阶优化算法,如牛顿法、拟牛顿法等,它们利用二阶导数信息来指导搜索方向,有助于更好地处理鞍点问题
正则化:添加正则化项有助于引导算法绕过平坦区,寻找到具有更好泛化能力的解