机器学习与深度学习
机器学习(Machine Learning,ML)
概述
机器学习,顾名思义,机器具备有学习的能力。具体来讲,机器学习就是让机器具备找一个函数的能力。函数,也就是模型,或者模式。简单来说,机器学习让计算机从大量数据中找到模式,并基于这些模式做出预测或决策。
分类
机器学习有多种任务类型,每种任务类型对应不同的问题和应用场景:
监督学习(Supervised Learning)
监督学习是一种训练模型的方法,使用标记好的数据集进行训练。每个输入数据都有相应的输出(标签),模型通过学习输入与输出之间的关系来进行预测。
监督学习的任务类型
分类(Classification):用于将输入数据分为两个或多个离散类别。
有逻辑回归、KNN、决策树、随机森林(多个决策树的集成)SVM、朴素贝叶斯等。
适用于如邮件分类(将邮件分为“垃圾邮件”和“非垃圾邮件”)。图像识别(根据图像的特征将其分类为不同类别),医学诊断(根据病人的症状和检测结果,将其分类为不同的疾病类型)等方面。
回归(Regression):用于预测连续的数值输出。
有多元线性回归、决策树回归、随机森林回归、支持向量回归(SVR)等
适用于如房价预测(根据房子的面积、位置等特征预测房子的价格)股票价格预测(根据历史数据和市场趋势预测股票的未来价格)销售预测(根据历史销售数据预测未来销售额)等方面。
结构化学习
机器不只是要做选择题或输出一个数字,而是产生一个有结构的物体,比如让机器画一张图,写一篇文章。这种叫机器产生有结构的东西的问题称为结构化学习。
无监督学习(Unsupervised Learning)
无监督学习是使用未标记的数据集进行训练。模型的目标是发现数据中的隐藏模式或结构。
半监督学习(Semi-Supervised Learning)
半监督学习介于监督学习和无监督学习之间。它使用少量标记数据和大量未标记数据进行训练,适用于标记数据难以获取或昂贵的情况。
强化学习(Reinforcement Learning)
强化学习通过与环境互动来学习最佳策略。模型(代理)通过在环境中采取行动获得奖励或惩罚,目的是最大化累积奖励。
自监督学习(Self-Supervised Learning)
自监督学习是一种无监督学习的变种,模型利用数据中的内在结构为自己生成标签,然后通过这些标签进行训练。
迁移学习(Transfer Learning)
迁移学习利用在一个任务中学到的知识来帮助解决另一个相关任务。它在源任务和目标任务之间共享知识。
深度学习(Deep Learning)
深度学习是机器学习的一个子领域,它主要通过模拟人脑的神经网络结构来学习和处理数据。深度学习的核心是深度神经网络(Deep Neural Networks),这些网络由多个层次的人工神经元组成,能够自动提取和学习数据中的复杂特征。
案例(视频的点击次数预测)
在这个案例中,我们以预测视频观看次数为目标,通过机器学习的方式找到一个合适的函数来进行预测。整个过程可以分为三个主要步骤:模型定义、损失函数定义、参数优化。
步骤 1:模型定义
模型定义是机器学习中的第一个步骤,它的核心是选择一个适当的函数形式来描述预测任务。在这个案例中,我们定义了一个简单的线性模型:
其中:
- y是我们希望预测的值,即今天(2月26日)的观看次数。
- x1 是前一天(2月25日)的观看次数,这是已知的输入特征。
- w和 b是模型的未知参数,分别称为权重(weight)和偏置(bias)。
在这个模型中,我们假设今天的观看次数和昨天的观看次数有某种线性关系。这个假设基于领域知识,认为过去的观看行为可能对未来的观看次数有一定的影响。
步骤 2:损失函数定义
第二步是定义损失函数(Loss Function),损失函数用于衡量模型预测值与实际值之间的差距。在本案例中,我们使用的是均方误差(Mean Absolute Error, MAE)作为损失函数。损失函数的形式为:
其中:
- yi是第 i天的实际观看次数。
- 是根据模型预测的第 iii 天的观看次数。
- N是训练数据的总天数。
损失函数的值代表模型在训练数据上的平均预测误差,值越小,说明模型的预测越准确。
估测值与实际值之间差距的几种计算方法:
-
平均绝对误差(MAE):计算估测值 y^与实际值 y之间的绝对差值。
-
均方误差(MSE):计算估测值 y^与实际值 y之间的平方差。
-
交叉熵(Cross Entropy):用于估测值与实际值都为概率分布的情况。
文中提到,通过调整不同的参数 w和 b,可以计算出不同参数组合下的损失值,并用等高线图表示损失表面(error surface)。图中越偏红色系表示损失越大,参数组合越差;越偏蓝色系表示损失越小,参数组合越好。
举例来说,w=−0.25,b=−500时损失较大,不符合实际情况,而 w=0.75,b=500时估测较准确。当 w接近 1,b为较小值时,预测最精准。该段话的核心内容是讨论在机器学习过程中如何通过不同参数组合来优化模型预测精度。
步骤 3:参数优化
第三步是参数优化,即通过调整模型的参数 w和 b,使损失函数达到最小值。这通常通过梯度下降(Gradient Descent)等优化算法来实现。梯度下降的基本原理是根据损失函数对参数的导数(梯度)来调整参数的值,使得每次更新都朝着使损失减少的方向前进。
具体来说,参数更新的规则是:
其中:
- η是学习率(Learning Rate),决定了每次参数更新的步长大小。
- 和是损失函数对 www 和 bbb 的偏导数,表示损失函数随参数变化的方向和速率。
梯度下降
在实际的计算中,梯度下降算法会迭代地更新参数,直到损失函数收敛到一个较小的值或达到预设的最大迭代次数。需要注意的是,梯度下降可能会陷入局部最小值(local minima),而非全局最小值(global minima),但对于许多实际应用来说,这种情况对结果影响不大。
梯度下降算法的基本概念
- 梯度下降是一种迭代优化算法,旨在通过不断调整模型参数来最小化损失函数 LLL。
- 该算法基于损失函数对参数的梯度(或微分)来更新参数,通常以如下方式进行:
- 其中,η是学习率,决定了每次参数更新的步长。
参数更新的终止条件
- 固定迭代次数:在设定的最大迭代次数(如 100 万次)后停止参数更新。这是一个超参数。
- 梯度为零:当计算出的梯度为零时,参数将停止更新。这种情况通常意味着已经达到了一个极值点(局部最小值、鞍点或全局最小值)。
局部最小值与全局最小值
- 局部最小值(Local Minima):这是损失函数在某一特定区域内的最低点,但不是整个函数的最低点。梯度下降可能会陷入局部最小值,使参数更新停滞。
- 全局最小值(Global Minima):这是损失函数的绝对最低点,使得模型的误差最小。找到全局最小值通常是优化的最终目标。
- 尽管梯度下降有可能陷入局部最小值,但在实际应用中,这种情况并不常见。更常见的挑战是找到一个足够好的解,而不是严格的全局最小值。
多参数梯度下降
- 当涉及多个参数时,梯度下降的过程与单参数情况类似。
- 对每个参数分别计算梯度,并根据梯度调整所有参数。
- 在深度学习框架(如 PyTorch)中,这些微分计算是自动完成的。
实际应用中的参数更新
- 算法从随机初始化的参数开始,逐步计算各参数的梯度。
- 根据梯度,决定参数更新的方向和幅度。学习率 η决定了每次更新的步长。
- 反复进行参数更新,直到达到某个停止条件(如迭代次数上限或梯度为零)。
影响梯度下降优化过程的因素
- 学习率的选择:学习率太大可能导致训练不稳定,太小则收敛速度太慢。
- 局部极小值和鞍点:虽然局部最小值是一个潜在问题,但在高维空间中,鞍点更常见,它们同样可能使梯度下降停滞。
- 多参数的复杂性:随着参数数量增加,优化过程变得更加复杂,需要更多的计算资源和更好的算法来确保有效的收敛。