机器学习入门(二)—— 模型训练篇:监督学习

背景

随着 LLM 的快速发展,越来越多的工程师多多少少会接触到一些机器学习的相关知识。
本系列将会由浅入深的介绍,机器学习的入门知识。
感谢,李沐老师的斯坦福课程《实用机器学习》
主要还是站在巨人的肩膀上,快速了解这个方向的一些必要知识。

上一篇,我们讲到了机器学习数据方面的知识,今天我们来聊一聊模型训练的重要学习方法:监督学习。

机器学习里常见算法:

机器学习常见算法

一些基本概念:

  • 模型(Model)

简单来说就是,给定输入,输出预测。

Eg:内容理解:文章内容 -> 文章标签

  • 损失函数(Loss)

简单来说,模型预测出来的结果,与真实的结果,怎么去计算他们的差别。

其值越小,代表模型预测结果越接近实际结果。在训练模型时,需要通过不断调整模型参数来最小化损失函数的值。

常见的损失函数包括均方误差、交叉熵等。

  • 目标函数(Objective Function)

目标函数是数学中用来衡量模型优劣的一个函数,常出现在最优化问题中。

它是描述“最优化问题”的核心,表示要优化的参数与目标之间的关系。

在机器学习中,目标函数通常用来帮助模型优化并找到最佳的模型参数,以使模型在给定数据集上达到最佳的性能,比如最小化误差、最大化准确率等。

  • 优化(Optimization)

简单来说就是调参。把模型里可以学习的参数,在使用中找到最佳值。

优化目标函数,使训练集里算出的损失函数最小。

  • 过拟合(overfitting):

模型在训练数据集上表现得过于优秀,以至于它几乎“记住”了训练数据的所有细节。即模型过于复杂,以至于它已经学习到了训练数据的一些特定的噪声和异常,而在新的、未见过的数据上的表现很差。(理解能力/泛化能力差)

举例:一个学生,死记硬背历年真题,考历年原题时满分,但考新试卷时分数不理想。

  • 欠拟合(underfitting):

模型不能在训练集上获得足够低的误差。即模型复杂度低,模型在训练集上表现较差,无法学习到数据背后的规律。

泛化误差\训练误差
Normal,很理想 有 Bug?看代码
过拟合(Overfitting)(训练集可能太细化) 欠拟合(underfitting)(没有理解信息)

因此,一般模型的复杂程度,要与数据的复杂程度相匹配。

简单的数据 => 简单的模型
复杂的数据 => 复杂的模型

以此,来解决相对泛化的误差。

  • 模型复杂程度:
    一般来说,越训练越复杂。

简单模型/复杂模型

  • 数据复杂度:
    • 样本数量,以及样本的元素(20x20,100x100,1k x 1k)
    • 有无特殊结构,空间/时间。
    • 多样性大,数据复杂。

监督学习(Supervised Learning)

监督学习是工业界最常见的学习方法。
确定标号,在已打标的数据基础上,训练出一个模型。这个模型的任务就是给数据预测标号。

不同场景下,监督学习模型的选择:

监督学习

决策树(Decision Trees)

决策树

树形结构:可决策,可回归。

优势:

  1. 可解释性好,可回归。常常用于银行/贷款/保险等等领域,面对客诉,可找到决策的原因。

  2. 方便处理“数值”和“类别”上的特征。

劣势:

  1. 不稳定,因为是不断分裂产生的树。如果上层节点的数据里有噪音,对下层结构影响比较大。
    解决办法:集成学习(后面会详细介绍)。

  2. 数据复杂时,容易产生复杂的树。造成过拟合(模型在训练数据上表现得过于优秀,以至于无法很好地泛化到未见过的测试数据或新的场景)。
    解决办法:

    • 训练的时候,遇到过拟合,停下来,让叶子节点不继续分裂。
    • 不停,先生成完整的树,对树进行剪枝、正则化等策略。
  3. 树结构不太好并行,部署线上后,性能吃亏。

因为树结构不稳定,因此决策树进行了升级,
变成多棵树,也就是下面要介绍的“随机森林”。

*随机森林(Random Forest)

由众多决策树组成的一种集成学习方法,输出是对问题最佳答案的共识。随机森林可用于分类或回归。

森林很好理解,就是多棵决策树。

那么,“随机” 又是怎么随机的?

  1. 训练集”随机(对应到 MySQL,就是随机抽行,可重复,每棵树可能抽到同样的行)

  2. 特征”随机(对应到 MySQL,就是随机抽列,不可重复,每棵树不能一次抽同个特征列)

就是在抽取训练集****/特征的时候,随机的抽,让每棵树拿到的训练集&特征集合尽可能都不一样。

导致,每个树的预测结果也会产生差异。

比如:

  • 分类场景,随机抽整列特征,训练出多个决策树,进行投票。
  • 回归场景,对每个树的结果求和,取平均数。

*梯度提升决策树(GBDT,Gradient Boosting Decision Trees)

一种迭代的决策树算法,由多棵决策树组成。每棵树都试图纠正前一棵树的错误。
默认情况下,梯度提升决策树中没有随机化,而是用到了强预剪枝。

GBDT 的两个核心是“决策树”和“梯度提升”:

  • 决策树:GBDT使用的是回归决策树,每个叶子节点都对应一个预测值。

  • 梯度提升:在每一轮迭代中,新的决策树的生成是为了减小上一轮迭代产生的预测误差。这个过程就像在函数的误差曲线上沿着负梯度方向下降,逐步逼近函数的最小值。

简单来说,梯度提升采用连续的方式构造树,每棵树都试图纠正前一棵树的错误。

GBDT 在许多实际问题中都有非常好的表现,包括搜索排名、CTR预估等等。

决策树-小结:
决策树/随机森林/梯度提升决策树,在能用的情况下,往往是工业界的第一选择。
首先,树比较简单,不用太多的调参。
其次,结果还不错,虽然不是最优解,但是能快速达到上线水平(比较重要)。

线性模型(Linear Methods)

基本算法

w 代表权重,x 代表特征,b 代表偏移。

其中 “权重w” 和 “偏移b” 是可以调整的参数。

那么怎么找到每个特征最佳的 权重w,以及 偏移b 呢?

目标函数(Objective Function)

  • 回归场景:
回归

X 是训练样本,有 N 个。每一个 Xi 是一个长度为 P 的向量。
做转至NxP,变成一个矩阵(N 行 P 列)。
Y 代表真实数值,也是有 N 个。

目标:减少平均 均方误差(MSE)指每个样本的平均平方损失。MSE是反映估计量与被估计量之间差异度的一种度量。
L:目标函数,w,b 是期望求解的最优值。X/Y是训练参数。可以学习参数的 w(权重) 和 b(偏移)
每一个样本上:Y是真实数值,<xi,w> + b 代表模型的预测,两者相减求绝对值,再求平方。
再把所有样本加起来,做求和, 再平均。

  • 分类场景:

输出变向量,向量的长度就是类别的个数。向量里的每一个值代表,对应每个类别的概率(置信度)。
值越高代表这个类别的概率越高,同理,越低代表这个类别的概率越低。

X 代表每个特征,wi 代表每个特征的预测全中,再加上偏移量 b。
这样就得到每个样本基于每个特征的概率的 O 向量。

Label y 代表真实的值,当某个样本确定是某第 i 个分类下时,为 1(有点像独热编码)

求平均均方误差:O向量 - 真实标签

预测时,属于分类就是每个特征概率最大的那个值。

这样带来的问题?

因为是对每个分类的预测结果都做平方误差,导致学习成本比较高。
相当于要求模型在正确分类的得分要接近 1,不正确的分类得分要趋近 0。
其实,只要让我们的模型关心正确的那个分类的得分足够大即可,其他分类不太关心

软最大化回归(Softmax Regression)

将 1~m 个向量 O(存了每个特征的概率) 丢进 Softmax 这个操作子,得到一个 y^ ,y^还是一个向量。
y^ = 向量O算指数/所有O 向量的指数,导致所有 1~m 个 所有 y^ 加起来 = 1。

y => 是真实的预测结果,类似独热编码,只有一个 1,其他都是 0。

对 y^和 y 做交叉熵,让模型使 H(y,y^) = - log y^ y 足够小 => 就能让模型预测正确的那个分类只够大。

*小批量随机梯度下降(SGD,Mini-batch Stochastic gradient descent)

一种优化神经网络模型的算法。它在每一次迭代时不是将整个训练集作为一个批次进行更新,而是将训练集分成若干个小批次(mini-batch),每次只更新一个小批次的数据。
这样做可以减少计算量,节省训练时间。
同时,它也可以在一定程度上避免梯度更新的方向产生过大的波动,从而使得训练过程更加稳定。

  • W 是模型的参数,把偏移 b(批量大小) 写进向量,Nt 就是学习率。
  • 随机取 W1,
  • 反复增加 t,直到模型收敛(收敛就是目标函数在某个样本里的平均损失不再下降,趋向平衡)。
    • 随机采样N个样本,这个样本的大小等于批量大小 b。
    • 新权重 Wt+1 = 旧权重 Wt - Nt 学习率 * 目标函数L的导数。

优势:

  • 大部分的机器学习问题都可以用 SGD 来求最优解(除了决策树)。

劣势:

  • 超参数 b,Nt 需要选择,比较难找。

核方法(Kernel Machines)

一种基于核函数的非线性机器学习方法。
在这种方法中,原始数据被映射到高维空间中,并且在高维空间中使用线性方法进行分类或回归。由于非线性特征空间的复杂性,可以使用核函数在原始空间中计算点积,从而大大简化了计算复杂度。
在机器学习任务中,包括支持向量机(SVM)和核岭回归(KRR)等方法都使用了核方法。

神经网络(Neural Networks)

神经网络更懂机器学习,比人工提取特征,效果要好。

但要比人工提取特征的数量和计算量,要高几个数量级(>1000倍)。

提供大量的数据,用随机梯度下降来不断学习。

多层感知机(MLP,Multiayer Perceptron)

刚介绍的:线性模型(全连接层)可以理解单层感知机。
多个全连接层+激活函数就变成了多层感知机(非线性模型)。

激活函数:是一个非线性的函数
对每个元素做 sigmoid(x) = 1/(1+(-x)的指数)=> 0~1 之间的一个数。
ReLu = max(x, 0) => 大于 0 为本身,否则为 0。

卷积神经网络(CNN,Convolutional Neural Networks)

CNN 的结构通常由多个卷积层、池化层(汇聚层)和全连接层构成。网络的输入层通常是一种原始图像或其他类型的信号,其特征会在网络的多个层中自动学习并逐步抽取。
为了解决:MLP 导致参数过多的训练问题。MLP 每一层都有输入和输出,输入和输出的权重都需要去学习和调参。成本很高。

本地性:输入 N x N => 窗口 K x K(k < N),学习时,不在和输入 N x N 相关,而是和窗口 K x K 相关。

卷积核:参数共享,K x K 的权重,被称为卷积的核(Kernel)。

  • 让模型的卷积参数不再依赖输入和输出的大小,而是基于窗口去学习。

汇聚层:Pooling Layer,增加鲁棒性。
汇聚层会在每次在 K x K 的窗口中计算一个平均值/最大值,

循环神经网络(RNN,Recurrent Neural Networks)

引子:在自然语言处理场景,MLP 解决不了可变的参数问题(因为需要固定输入和输出)。虽然可以用 One-Hot 来描述语句的词频,但是会丢失时序。所以引入了循环神经网络的概念。

RNN 在 MLP 的基础上,加了一个通道,这个通道记录了之前所有的会话信息。

多了 Ht-1 和 Ht,上一时刻的 Ht-1 加激活函数 => Ht

  • 忘掉输入,抑制 Xt,认为 Xt 不重要时(比如都是空格,介词等等,没有名词和动词)。
  • 忘掉过去,抑制 Ht-1,新的开始。(比如新句子和之前Ht-1无关,或者已经过去很长时间了)

Bi-RNN

双向 RNN,既从左往右看,也从右往左看(阿拉伯语)。
为了更好的理解上下文。

Deep RNN

类似 MLP

下一节,我们重点介绍下:变换器 (Trasformer)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容