对机器学习的一些理解

机器学习本质上是从数据中学习规律,并利用这个规律对未知数据进行预测的过程。这个过程可以分解为几个关键部分:模型目标优化

一、模型:我们用什么去拟合世界?

模型是我们对现实世界的一种数学抽象。选择什么样的模型,取决于我们要解决什么问题。

  1. 回归问题(预测连续值)

    • 首选:线性回归 。当我想预测一个具体的数值(比如房价、销量)时,线性回归是我最常用的工具。它的思想非常直观:找到一个线性关系 Y = WX + b,使得预测值尽可能接近真实值。为了防止这个简单的模型过于复杂而"死记硬背"训练数据(过拟合),我通常会引入正则化 。L1正则化(Lasso)能让一些不重要的特征权重直接变为0,实现特征选择;L2正则化(Ridge)则让所有权重都均匀地变小,使模型更平滑。有时,我会结合两者,使用弹性网络(Elastic Net)
  2. 分类问题(预测离散标签)

    • 二分类的利器:逻辑回归(Logistic Regression) 。虽然名字里有"回归",但它是不折不扣的分类模型。它的核心是Sigmoid函数 ,能将线性输出的分数映射到(0,1)区间,解释为属于正类的概率。它的推导基于伯努利分布

    • 多分类的推广:Softmax回归 。当类别超过两种时,逻辑回归就力不从心了。这时我会用Softmax回归,它是逻辑回归的自然延伸,其模型基于多项式分布。Softmax函数能将一个K维的任意实数向量"压缩"成另一个K维的正实数向量,且这些数的和为1,完美地表示了多分类的概率分布。

  3. 更复杂的模型

    • 支持向量机(SVM):它的目标很优雅,就是寻找一个"最胖"的超平面(间隔最大化)来分隔数据,这被认为能获得最好的泛化能力。对于线性不可分的数据,我会借助**核函数(Kernel Trick)这把利器,将数据映射到高维空间,使其变得线性可分,而计算成本却依然保持在低维空间。

    • 决策树与集成学习:单个决策树(如ID3, C4.5, CART)简单易懂,但容易过拟合。在实践中,我几乎总是使用集成方法:

      • Bagging(如随机森林) :我通过有放回抽样生成多个不同的训练子集,并行地训练多个弱模型(如决策树),然后通过投票或平均得到最终结果。这种方法能有效降低模型方差,防止过拟合。

      • Boosting(如AdaBoost, GBDT, XGBoost) :与Bagging不同,Boosting是串行生成的。我会更关注上一轮被分错的样本,给它们更大的权重,让后续的模型重点学习这些"难点"。AdaBoost通过改变样本权重,而GBDT和XGBoost则是通过拟合上一轮模型的负梯度(残差)​ 来逐步改进。XGBoost更是做了大量工程优化,并使用了二阶泰勒展开 ,使得它在效率和效果上都非常出色。Boosting能同时降低偏差和方差

二、目标:如何衡量模型的好坏?------ 损失函数与代价函数

定义了模型,下一步就是定义如何衡量模型的"错误"。这就是损失函数和代价函数(损失函数的平均值)的作用。

  1. 均方误差(MSE) :这是我做回归 任务时的标准选择。它计算的是预测值与真实值之差的平方的平均值。从概率角度看,它等价于在假设噪声服从高斯分布 下的最大似然估计(MLE)

  2. 交叉熵损失(Cross-Entropy Loss) :这是我做分类任务,特别是当模型最后一层是Sigmoid或Softmax时的首选。你提供的资料里重点讨论了它。

    • 为什么不用MSE做分类 ​ :这是一个关键问题。当配合Sigmoid函数使用时,MSE的梯度中会包含Sigmoid的导数 σ'(z)。而Sigmoid函数在两端饱和区梯度非常小,这会导致梯度更新缓慢,学习效率极低。

    • 交叉熵的优势 :交叉熵损失完美地避开了这个问题。它的梯度中不包含 σ'(z),只与误差 (a - y)直接相关。误差越大,梯度越大,权重更新越快;误差越小,更新越慢。这非常符合直觉,极大地加快了训练速度。

  3. 最大似然估计(MLE)与最大后验概率(MAP)

    • MLE ​ 是频率学派的代表思想。我的目标是找到一组参数,使得在当前参数下,观测到已有数据(样本)的概率最大。可以简单理解为"模型导向",即什么样的模型最可能产生出我手上的数据。

    • MAP ​ 是贝叶斯学派的思想。它在MLE的基础上,加入了参数的先验概率 。我的目标是找到在已知数据的条件下,参数最可能的值。可以理解为"参数导向",即考虑到参数本身可能有的分布,哪个参数值最靠谱。

三、优化:如何找到最优的模型参数?

有了模型和目标,现在的问题就变成了一个数学优化问题:如何找到那组让损失函数最小的参数W和b。

  1. 梯度下降法(Gradient Descent):这是最核心的优化算法。我的思路是沿着当前点的梯度反方向(即下降最快的方向)走一小步,逐步逼近最低点。

    • 批量梯度下降(BGD):我用整个训练集计算梯度,方向准确,但速度慢。

    • 随机梯度下降(SGD):我每次只用一个样本计算梯度,速度快,但噪声大,收敛不稳定。

    • 小批量梯度下降(MBGD):这是我在实际中最常用的折中方案,每次用一个小批量的样本,兼顾了效率和稳定性。

  2. 梯度下降的"升级版"

    • Momentum(动量):模拟物理中的动量,让参数更新时不仅考虑当前梯度,还保留一部分之前更新的方向。这有助于加速收敛并减少震荡。

    • 自适应学习率算法(如AdaGrad, RMSprop, Adam) :这些算法为每个参数自适应地调整学习率。对于频繁更新的参数,给予较小的学习率;对于不频繁的参数,给予较大的学习率。Adam​ 结合了Momentum和自适应学习率的优点,是目前最流行、效果最好的优化器之一。

相关推荐
Juicedata8 小时前
JuiceFS 企业版 5.3 特性详解:单文件系统支持超 5,000 亿文件,首次引入 RDMA
大数据·人工智能·机器学习·性能优化·开源
Piar1231sdafa8 小时前
蓝莓目标检测——改进YOLO11-C2TSSA-DYT-Mona模型实现
人工智能·目标检测·计算机视觉
愚公搬代码8 小时前
【愚公系列】《AI短视频创作一本通》002-AI引爆短视频创作革命(短视频创作者必备的能力)
人工智能
数据猿视觉8 小时前
新品上市|奢音S5耳夹耳机:3.5g无感佩戴,178.8元全场景适配
人工智能
蚁巡信息巡查系统8 小时前
网站信息发布再巡查机制怎么建立?
大数据·人工智能·数据挖掘·内容运营
AI浩8 小时前
C-RADIOv4(技术报告)
人工智能·目标检测
Purple Coder8 小时前
AI赋予超导材料预测论文初稿
人工智能
Data_Journal8 小时前
Scrapy vs. Crawlee —— 哪个更好?!
运维·人工智能·爬虫·媒体·社媒营销
云边云科技_云网融合8 小时前
AIoT智能物联网平台:架构解析与边缘应用新图景
大数据·网络·人工智能·安全
码农水水9 小时前
得物Java面试被问:消息队列的死信队列和重试机制
java·开发语言·jvm·数据结构·机器学习·面试·职场和发展