【李宏毅机器学习2021春】01-机器学习基本概念介绍

文章介绍了机器学习的基本任务,包括回归、分类和结构化学习。通过YouTube点击人数预测的例子,阐述了模型定义、损失函数和优化过程,特别是梯度下降法。讨论了模型的修改,如周期模型和分段模型,以及ReLU函数在处理非线性问题中的作用。最后提到了过拟合的概念,并指出深度学习中的反向传播技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01 - 机器学习基本概念介绍

1. 机器学习的基本任务

1.1 Regression 回归

如,输入过去的数据,对未来的数据进行预测。对数据进行拟合的过程叫做回归。

1.2 Classifiation 分类

给出选项,函数输出正确的选项。

如,下棋,输入每一步,预测下一步。

1.3 Structured Learning 结构化学习

Create something with structure(image, document)。

输出是一个有结构的事物,如计算机画一张图,写一篇文章等。

结构化预测或结构化(输出)学习是监督学习技术的总称,涉及预测结构化对象,而不是标量离散或实际值。

2 以YouTube点击人数预测为例介绍机器学习的运作过程

2.1 函数定义 function

机器学习找函数的过程,分为三个步骤,第一个步骤是写出一个带未知参数的函数 f f f,其能预测未来点击次数。比如写成

y = b + w x 1 y=b+wx_{1} y=b+wx1

b b b w w w 是未知的。带有未知的参数(parameter)的函数称为模型(model)。模型在机器学习里面,就是一个带有未知的参数的函数, 特征(feature). x 1 x_{1} x1是这个函数里面已知的,它是来自于油管后台的信息,2 月 25号点击的总人数是已知的,而 w 跟 b 是未知的参数。

w w w 称为权重(weight), b b b 称为偏置(bias)。

2.2 损失函数的定义loss

2.2.1 案例

loss: 预测值跟真实值之间的关系。

如每天的误差设定为

e n = ∣ y − y ^ ∣ e_{n}=|y-\hat y| en=yy^

总误差设定为

L O S S : L = 1 N ∑ n e n LOSS: L=\frac{1}{N} \sum_{n}e_{n} LOSS:L=N1nen

2.2.2 一些概念

  • LOSS:带有参数的函数 L ( b , w ) L(b,w) L(b,w),表示一组值的好坏
  • e = ∣ y ^ − y ∣ e = |\hat y-y| e=y^y 平均绝对误差 MAE = mean absolute error
  • e = ( y ^ − y ) 2 e = (\hat y-y)^{2} e=(y^y)2 均方误差 MSE = mean square error
  • 有些任务中y和yhat是概率分布,这个时候可能会选择交叉熵(cross entropy)
  • Error Surface 误差曲面:调整w和b,组合计算loss,可以画出等高线图。

2.3 优化 Optimization

w ∗ , b ∗ = arg ⁡ min ⁡ w , b L w^{*},b^{*}=\arg \min_{w,b} L w,b=argw,bminL

找出最好的一组w和b使得L最小

2.3.1 Gradient Descent 梯度下降

  • 一个参数下的情况
    1. 随便选一个初始的 w 0 w^{0} w0
    2. 计算 ∂ L ∂ w ∣ w = w 0 \frac{\partial L}{\partial w}|_{w=w^{0}} wLw=w0 (斜率为负,需要增加w;斜率为正,需要降低w)
    3. 得到 w 1 w^{1} w1 ,公式为

w 1 ⇐ w 0 − η ∂ L ∂ w ∣ w = w 0 w^{1} \Leftarrow w^{0}-\eta\frac{\partial L}{\partial w}|_{w=w^{0}} w1w0ηwLw=w0

  • 两个参数下的情况
    1. 随便选一个初始的 w 0 w^{0} w0, b 0 b^{0} b0
    2. 计算 ∂ L ∂ w ∣ w = w 0 \frac{\partial L}{\partial w}|_{w=w^{0}} wLw=w0 ∂ L ∂ b ∣ b = b 0 \frac{\partial L}{\partial b}|_{b=b^{0}} bLb=b0
    3. 得到 w 1 w^{1} w1, b 1 b^{1} b1

w 1 ⇐ w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 b 1 ⇐ b 0 − η ∂ L ∂ b ∣ w = w 0 , b = b 0 w^{1} \Leftarrow w^{0}-\eta\frac{\partial L}{\partial w}|_{w=w^{0},b=b^{0}}\\b^{1} \Leftarrow b^{0}-\eta\frac{\partial L}{\partial b}|_{w=w^{0},b=b^{0}} w1w0ηwLw=w0,b=b0b1b0ηbLw=w0,b=b0

  • 影响步长大小的两个因素

    1. 斜率:斜率越大跨步就大
    2. 学习率 η \eta η (learning rate): 学习率越大跨步越大,一次改变一点点。这种需要自己设定的数值称为超参数(hyperparameter)。
  • 关于局部最优和全局最优的问题
    在一些书里可以看到
    global minima 全局最优
    local minima 局部最优

  • loss可以为负吗?
    loss是自定义的,如果定义为绝对值,就不为负值,如果定义为普通函数,就可以为负值。

  • 梯度下降什么时候会停?

    1. 失去耐心,比如设定更新一百万次就停止更新(这里的一百万次也是HyperParameter)
    2. 理想停止,即通过参数的调整,发现微分值正好为0,说明达到了理想状况
  • 关于超参数

    • 所有需要考虑的参数都是超参数
    • 如,学习率、步长、loss函数、batch大小等等等等
    • 甚至sigmoid函数的数量也是一个超参数

2.4 修改模型

2.4.1 周期模型

考虑到领域知识(domain knowledge),我们发现点击人数是以一周为一个周期,周期性的进行变化,所以需要将模型修改为周期性表示。

请添加图片描述

新的模型如下所示,相当于有7个weight来衡量一个周期的信息

y = b + ∑ j = 1 7 w j x j y = b+\sum_{j=1}^{7} w_{j}x_{j} y=b+j=17wjxj

2.4.2 分段模型

对于非线性模型,永远无法用线性模型来制造,出现巨大的偏差,称为模型的偏差(model bias)。所以需要更复杂、更灵活、有未知参数的函数来逼近非线性模型。

bias\ model bias(inductive bias)\ variance 之间的区别

  • model bias = inductive bias 归纳偏置 (虽然中文名大多称为归纳偏置,但感觉叫 归纳偏见\归纳偏好 更合适?)。指机器学习算法在学习过程中对数据的偏好或倾向,影响其学习的结果。或是说指机器学习算法在从数据中归纳规律时,所依赖的先验假设,偏好或限制。

    比如CNN在识别猫狗图像时具有这种inductive bias 那么它会倾向于首先检测图像中的边缘和纹理特征,然后使用这些局部特征来推断整个图像的类别,并且会在学习过程中优先考虑不同位置的相同特征,而不是考虑特征的绝对位置。参考知乎

    inductive bias 的意义或作用是使得学习器具有了泛化的能力。

    一些表示inductive bias的方法:

    1. the chioce of model architecture
    2. the selection of features
    3. the type of regularization applied to the model

    在实践中,通常使用具有不同inductive bias的模型架构的组合,并使用交叉验证和正则化等计数来减轻inductive bias对模型性能的影响。

  • bias 模型偏差 。 指样本拟合出的模型的输出结果的期望与样本真实结果的差距,简单讲就是样本上拟合的好不好。(想要bias表现好,即得到low bias,需要需杂化模型,增加模型参数,但容易过拟合(overfitting),导致点很分散,增加variance)

  • variance 方差。 指样本上训练的模型在测试集中的表现,(想要得到low variance,需要简化模型,减少模型参数,但这样容易欠拟合(unfitting),点偏离中心)

  • Error = Bias^2 + Variance + Noise

参考

请添加图片描述

分段线性曲线(piecewise linear curve),即红色函数,可以看成一个常数+一堆蓝色函数,其中蓝色函数称为Hard Sigmiod,它的特性是,x轴的值小于某个阈值或大于某个阈值时,中间有个斜坡(先水平,再斜坡,再水平)。分段线性曲线越复杂,转折的点越多,所需的蓝色函数就越多。

请添加图片描述

分段线性曲线可以逼近任何一个有角度有弧度的曲线。x和y的关系非常复杂也没关系,可以想办法写一个带有未知数的函数的函数来逼近曲线。直接写Sigmoid不是很容易,但可以用一条曲线来理解它,用Sigmoid函数来逼近Hard Sigmoid,表达式为:

y = c 1 1 + e − ( b + w 1 ) y=c\frac{1}{1+e^{-(b+w_{1})}} y=c1+e(b+w1)1

x1趋近于无穷大时,e这一项会消失,x1非常大的时候,这一条就会收敛在高度为c的地方,如果x1负的非常大,分母的地方就非常大,y会趋近于0.

对于其它值固定,改变不同的参数,sigmoid函数的变化如下:

请添加图片描述

对于前面红色函数,可以用不同的sigmoid函数来表示,即

c 1 s i g m o i d ( b 1 + w 1 x 1 ) c 1 s i g m o i d ( b 2 + w 2 x 2 ) c 1 s i g m o i d ( b 3 + w 3 x 3 ) c_{1}sigmoid(b_{1}+w_{1}x_{1})\\c_{1}sigmoid(b_{2}+w_{2}x_{2})\\c_{1}sigmoid(b_{3}+w_{3}x_{3}) c1sigmoid(b1+w1x1)c1sigmoid(b2+w2x2)c1sigmoid(b3+w3x3)

对于周期为一周的函数可以表示为**(这里还不太明白,为什么要设置i行j列的权重)**

y = b + ∑ i c i s i g m o i d ( b i + ∑ j w i j x j ) y=b+\sum_{i}c_{i}sigmoid(b_{i}+\sum_{j}w_{ij}x_{j}) y=b+icisigmoid(bi+jwijxj)

在sigmoid函数内的参数,可以表示为

r 1 = b 1 + w 11 x 1 + w 12 x 2 + w 13 x 3 . . . r1 = b1 + w11x1 + w12x2 + w13x3\\... r1=b1+w11x1+w12x2+w13x3...

通过矩阵和向量的关系,可以得到较为简单的写法

r = b + W x r=b+Wx r=b+Wx

sigmoid函数可以简写为

a = σ ( r ) a =\sigma (r) a=σ(r)

则上述函数可以表示为

y = b + c T σ ( b + W x ) y = b + c T a y=b+c^{T}\sigma (b+Wx)\\y=b+c^{T}a y=b+cTσ(b+Wx)y=b+cTa

对于损失函数,之前是 L ( w , b ) L(w,b) L(w,b),但未知参数太多,一一列举过于复杂,可以直接用 θ \theta θ来代替,即损失函数变为 L ( θ ) L(\theta) L(θ)

下一步是优化 θ \theta θ,对于

θ = [ θ 1 θ 2 . . . ] \theta=\begin{bmatrix} \theta_{1}\\ \theta_{2}\\ ... \end{bmatrix} θ= θ1θ2...

需要找到损失最小的一组 θ \theta θ,要找到 θ 让损失越小越好,可以让损失最小的一组 θ \theta θ称为 θ ∗ \theta^{*} θ。一开始要随机选一个初始的数值 θ0。接下来计算每一个未知的参数对 L 的微分,得到向量 g,即可以让损失变低的函数。

g = ▽ L ( θ 0 ) g = [ ∂ L ∂ θ 1 ∣ θ = θ 0 ∂ L ∂ θ 2 ∣ θ = θ 0 . . . ] g=\bigtriangledown L(\theta_{0})\\ g=\begin{bmatrix} \frac{\partial L}{\partial \theta_{1}}|_{\theta=\theta_{0}}\\ \frac{\partial L}{\partial \theta_{2}}|_{\theta=\theta_{0}}\\ ... \end{bmatrix} g=L(θ0)g= θ1Lθ=θ0θ2Lθ=θ0...

对于更新过程,矩阵表示如下

请添加图片描述

文字表述如下

请添加图片描述

实际在做梯度的时候,会把N笔数据随机分成一个一个batch,每个batch里有B笔数据。本来把所有的数据拿出来算一个损失,现在拿很多个batch算多个损失,每个batch计算的损失记为 L n L_{n} Ln以区分 L L L。所以实际上每次会先选一个batch,用该批量计算 L 1 L_{1} L1。根据 L 1 L_{1} L1来计算梯度,再用梯度来更新参数;接着使用下一个batch,计算 L 2 L_{2} L2,再次计算梯度并更新参数。(batch大小也是一个hyperparameter)

请添加图片描述

2.4.3 ReLU函数

ReLU=Rectified Linear Unit,修正线性单元

对于激励函数,不一定要把Hard Sigmiod换成Soft Sigmoid。一个Hard Sigmoid可以看作是两个ReLU的加总,其对应的公式为

c ∗ max ⁡ ( 0 , b + w x 1 ) c*\max(0,b+wx_{1}) cmax(0,b+wx1)

请添加图片描述

使用ReLU函数可以制造更复杂的曲线。接着可以通过增加层数来反复多做几次运算,可以显著降低误差。

请添加图片描述

经过预测后,发现在红圈位置的预测值偏差过大,因为这里涉及到一些经验问题(当天是除夕)。

2.4.4 小结

Sigmoid函数或ReLU称为神经元neuron,很多神经元称为神经网络neural network。每一层称为隐藏层hidden layer,很多的隐藏层就“深”,称为深度学习。

请添加图片描述

但4 层在训练数据上,损失是 0.1k,在没有看过 2021 年的数据上,损失是 0.44k。在训练数据上,3 层比 4 层差,但是在没看过的数据上,4 层比较差,3 层比较好。在训练数据和测试数据上的结果是不一致的,这种情况称为过拟合(overfitting)。

另外深度学习的训练会用到反向传播(BlackPropagation,BP),以后会概述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值