李宏毅 机器学习与深度学习【2022版】 01

一、基本概念

(1)机器学习就是找一个函数
(2)深度学习是找一个函数,这个函数是神经网络Neural Network

函数的输入可以是:vector、Matrix、Sequence

函数按输出类型划分任务类型:
(1)Regression回归: 函数输出是一个标量(属于连续区间)
(2)Classification分类: 给定一些类别选项,函数输出一个正确的选项。
(3)Structured Learning结构化学习: 创造有结构的东西,例如输出document、image

二、深度学习内容总览

(1)Supervised Learning监督学习:用带标签labels的数据,作为训练数据Training Data,给模型训练。
(2)Self-supervised Learning自监督学习: 如果没法为每个任务收集大量带标签的数据,可以先用无标签unlabeled的数据,进行预训练Pre-train,发展通用知识,比如将一个图片换个背景颜色、旋转个方向,然后再进行训练,让它判断是否为同一张图片。当预训练好后,其在下游任务Downstream Tasks,也会表现很好。其中Pre-trained Model又叫Foundation Model
(3)Generative Adversarial Network生成对抗网络: 收集大量的输入数据x,以及标签y,不需要它们成对的关系,机器自己把它们的关系找出来。
(4)Reinforcement Learning强化学习: 在不知道怎么给数据打标签时,比如下围棋,人类也不知道下一步下在哪,但知道它的结果的好坏,就可以用RL技术。
(5)Anomaly Detection异常检测: 比如训练数据是猫和狗,给模型一头猪,它需要拥有回答我不知道的能力。
(6)Explainable AI可解释性AI: 模型不仅需要告诉我们答案,还要告诉我们为什么它知道答案是这样。
(7)Model Attack模型的攻击:比如一张图片里稍微改一点,模型分类的打完完全不同。
(8)Domain Adaptation域适应: 比如让模型识别数字,训练数据都是黑白的,但是测试数据Testing Data是彩色的,模型的正确率会暴跌,可以用域适应来解决该问题。
(9)Network Compression模型压缩: 将巨大的模型压缩小一些。
(10)Life-long Learning终身学习: 机器不能一直学习不同的任务,而变得无所不能。 Life-long Learning会解释该原因。
(11)Meta learning元学习: 学习如何学习

三、预测YouTube播放量的模型

这是一个回归问题。
需要以下步骤:

1、假设一个含有未知参数的函数式

该假设的函数式,即为模型model
这里先假设为线性模型: y = b + w x 1 y=b+wx_1 y=b+wx1,
  其中 y y y为预测值, x 1 x_1 x1为特征feature
   b , w b,w b,w为未知参数,需要从data中学习, w w w为权重weight b b b为偏置bias

2、根据Training Data定义一个 Loss

Loss是关于 b , w b,w b,w的函数,即 L ( b , w ) L(b,w) L(b,w),它是用来评价参数 b , w b,w b,w的好坏的。
L o s s :   L = 1 N ∑ n e n Loss:\ L=\frac 1 N\sum\limits_ne_n Loss: L=N1nen
e = ∣ y − y ^ ∣ e=|y-\hat y| e=yy^, L L L是mean absolute error (MAE),
e = ( y − y ^ ) 2 e=(y-\hat y)^2 e=(yy^)2, L L L是mean square error (MSE),
  其中 y ^ \hat y y^表示真实值

有位置参数 b , w b,w b,w值,构成的坐标轴,画出的Loss等高线图,叫做Error Surface
在这里插入图片描述

3、最优化Optimization

w ∗ , b ∗ = arg ⁡ min ⁡ w , b L w^*,b^*=\arg\min\limits_{w,b}L w,b=argw,bminL
这里用梯度下降法Gradient Descend
为了方便学习,这里先只考虑 w w w
①随机选取一个初始值: w 0 w^0 w0

②计算 ∂ L ∂ w ∣ w = w 0 \left.\frac {\partial L} {\partial w}\right|_{w=w^0} wL w=w0

   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
  其中, η \eta η为学习率 learning rate,是一个超参数。
超参数是在机器学习中,需要自己设定的参数值,而不是通过训练数据中学习到的参数。

在这里插入图片描述
③以此方法迭代更新参数 w w w
在这里插入图片描述
不用担心局部极小值点问题,因为在线性回归中,loss函数是凸的,没有局部极小值点。

我们应该同时考虑参数 w , b w,b w,b,方法同上:
①随机选取一个初始值: w 0 , b 0 w^0,b^0 w0b0
②计算梯度 ∂ L ∂ w ∣ w = w 0 , b = b 0 \left.\frac {\partial L} {\partial w}\right|_{w=w^0,b=b^0} wL w=w0,b=b0
      ∂ L ∂ b ∣ w = w 0 , b = b 0 \left.\frac {\partial L} {\partial b}\right|_{w=w^0,b=b^0} bL w=w0,b=b0

其中如果, L ( w , b ) = ∑ n = 1 N ( y ^ n − ( b + w ⋅ x n ) ) 2 {L(w,b)=\sum\limits_{n=1}^{N}(\hat y^n-(b+w \cdot x^n))^2} L(w,b)=n=1N(y^n(b+wxn))2,则
∂ L ∂ w = ∑ n = 1 N 2 ( y ^ n − ( b + w ⋅ x n ) ) ( − x n ) {\frac {\partial L} {\partial w}=\sum\limits_{n=1}^N2(\hat y^n-(b+w\cdot x^n))(-x^n)} wL=n=1N2(y^n(b+wxn))(xn)
∂ L ∂ b = ∑ n = 1 N 2 ( y ^ n − ( b + w ⋅ x n ) ) ( − 1 ) {\frac {\partial L} {\partial b}=\sum\limits_{n=1}^N2(\hat y^n-(b+w\cdot x^n))(-1)} bL=n=1N2(y^n(b+wxn))(1)

然后,
   w 1 ← w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 {w_1\leftarrow w^0-\eta \frac {\partial L} {\partial w}|_{w=w^0,b=b^0}} w1w0ηwLw=w0,b=b0
   b 1   ← b 0   −   η ∂ L ∂ b ∣ w = w 0 , b = b 0 {b_1\ \leftarrow b^0\ -\ \eta \frac {\partial L} {\partial b}|_{w=w^0,b=b^0}} b1 b0  ηbLw=w0,b=b0
③以此方法迭代更新参数 w , b w,b w,b
在这里插入图片描述

4、测试集验证模型性能

前三步为在训练集训练模型的步骤,模型还需在测试集检验性能。测试集是没给模型训练时看过的数据。用测试集上的数据,去求 L o s s Loss Loss值。

5、线性模型特征维度提升

前四步可以构成一个模型训练测试的完成过程。我们发现播放量以七天为一个周期,上下波动,为了进一步降低 L o s s Loss Loss值。将特征维度设为7,模型变为: y = b + ∑ j = 1 7 w j x j y=b+\sum\limits_{j=1}^{7}w_jx_j y=b+j=17wjxj
我们按此思路,维度可以进一步提高到28、56,训练集上的 L o s s Loss Loss随之进一步降低,但测试集的 L o s s Loss Loss会随着维度增高,先是降低,但降到一定程度,并不会继续降低。

6、非线性模型

线性模型太简单,如下如,无论怎么调账 b , w b,w b,w,也很难拟合出一个比较好的函数,线性模型有严重的局限性,我们称之为Model Bias。这时候我们需要将模型变得更复杂更柔性,这就需要用非线性模型。因为模型更复杂,它可能包含的函数集合就越大,就能在训练集上从中挑选出error更小的模型。
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
这样,可以通过调整参数 w , b , c w,b,c w,b,c,来得到各种形状的sigmoid function。


在这里插入图片描述

模型: y = b + w x 1 → y = b + ∑ i c i s i g m o i d ( b i + w i x 1 ) {y=b+ wx_1 \rightarrow y=b+\sum\limits_ic_i sigmoid(b_i+w_ix_1)} y=b+wx1y=b+icisigmoid(bi+wix1)

提高特征维度:
y = b + ∑ j w j x j → y = b + ∑ i c i s i g m o i d ( b i + ∑ j w i j x j ) {y=b+\sum\limits_j w_jx_j \rightarrow y=b+\sum\limits_ic_i sigmoid(b_i+\sum\limits_jw_{ij}x_j)} y=b+jwjxjy=b+icisigmoid(bi+jwijxj)


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
即,模型的位置参数,组成一个向量,统称为 θ {\boldsymbol {\theta}} θ


定义 L o s s \bf Loss Loss:
模型函数确定后, L o s s Loss Loss和前文一样, L = 1 N ∑ n e n L=\frac 1 N\sum\limits_ne_n L=N1nen

新模型优化:

在这里插入图片描述
以此方法,不断计算梯度,迭代更新参数。

这里我们可以把训练数据分成一个个的batch,按下图进行训练:

在这里插入图片描述
另,我们把一次参数更新,叫做一次update。例:
10,000 examples (N = 10,000), Batch size is 10 (B = 10),在一个epoch中,有1,000 updates

7、ReLU

在这里插入图片描述

sigmoid: y = b + ∑ i c i s i g m o i d ( b i + ∑ j w i j x j ) {y=b+\sum\limits_ic_i sigmoid(b_i+\sum\limits_jw_{ij}x_j)} y=b+icisigmoid(bi+jwijxj)
ReLU: y = b + ∑ 2 i c i max ⁡ ( 0 , b i + ∑ j w i j x j ) {y=b+\sum\limits_{2i}c_i \max(0, b_i+\sum\limits_jw_{ij}x_j)} y=b+2icimax(0,bi+jwijxj)
注:我们把 Sigmoid 和 ReLU 函数,称之为激活函数。


可以增加更多的隐层 hidden layers,效果更好。
在这里插入图片描述


在这里插入图片描述
但是并不是说越深越好,会造成过拟合Overfitting,过拟合就是在训练数据表现更好,在未见的数据却更差。

四、深度学习概述

Neuron之间不同的连接,会产生不同的结构。

1、Fully Connect Feedforward Network

在这里插入图片描述
这里激活函数为sigmoid

如果还不知道参数,只是定出了网络结构,就是定义了一个函数集合,即模型。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
写成这种矩阵运算的好处是,可以用GPU加速。


在这里插入图片描述

2、举例:数字识别

这是一个分类问题。
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
我们需要决定一个网络结构,使得一个好的函数,在我们定义的函数集合里。然而我们往往只能通过经验和直接来找出这个网络结构,当然也有一些方法来自动决定网络结构。


在这里插入图片描述


在这里插入图片描述
接下来可以用梯度下降的方法进行参数优化。

3、Universal Approximation Theorem

万能逼近定理:紧凑域上任何连续函数,都可以通过一个隐藏层的神经网络来近似,且神经元数量越多,近似程度越高。

4、反向传播backpropagation

由于神经网络的参数十分庞大,所以我们利用反向传播算法可以高效地计算它的梯度。

链式法则:
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
∂ z ∂ w 1 = x 1 {\frac {\partial z} {\partial w_1}=x_1} w1z=x1
∂ z ∂ w 2 = x 2 {\frac {\partial z} {\partial w_2}=x_2} w2z=x2
偏导计算规律是:连接权重的输入值。


在这里插入图片描述


在这里插入图片描述
由于已知激活函数,所以很容易求 ∂ a ∂ z {\frac {\partial a} {\partial z}} za。如果后面接的网络比较复杂,求 ∂ C ∂ a {\frac {\partial C} {\partial a}} aC应用链式法则是比较复杂的。


所以我们可以换个思路,构建一个虚拟的网络,仿照前向传播求导方法,但方向是从前往后求导。
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

5、正则化 Regularization

如果模型定义为 y = b + ∑ w i x i y=b+\sum w_ix_i y=b+wixi,
损失函数我们可以定义为:
   L = ∑ n ( y ^ n − ( b + ∑ w i x i ) ) 2 + λ ∑ ( w i ) 2 L=\sum\limits_n(\hat y^n-(b+\sum w_ix_i))^2+\lambda \sum(w_i)^2 L=n(y^n(b+wixi))2+λ(wi)2,
这样定义损失函数,可以是模型函数更平滑。因为 w i w_i wi会尽可能小,当 x i x_i xi的产生变化量 Δ x i \Delta x_i Δxi w i Δ x i w_i\Delta x_i wiΔxi也会尽可能小,进而 Δ y \Delta y Δy会尽可能小,函数就会更平滑。
正则化是用来解决过拟合问题的。因为当函数更平滑,就可以减少输入的噪声影响。


在这里插入图片描述

6、神奇宝贝属性分类

这是一个分类问题。
在这里插入图片描述


将分类问题,按照回归问题做,会出现如下问题:
在这里插入图片描述

  由于更接近1,被认为是class 1,更接近-1,被认为是class 2。当出现一些远大于1的样本点时,分类边界会移动到它认为远大于1的样本点也接近1的位置。
  另外,在多分类问题中,比如1表示class 1, 2表示class 2, 3表示class 3…这样会让模型认为class 1与class 2更接近,class 2与class 3更接近,实际上它们无关联关系。


对于二分类问题:

在这里插入图片描述


我们可以假设模型是一个概率分布,这样不在训练数据内的样本,也不会是概率为零:
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
μ \mu μ决定里这个分布的最高点位置, Σ \Sigma Σ决定了分布的离散程度。确定了这两个参数,就确定了该高斯分布。


这里用最大似然估计来求该参数:
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

7、逻辑回归

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
两种方法,获得的w和b是不同的。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


生成模型的优点:
①假设一个概率分布,可以需要更少的训练数据。
②假设一个概率分布,可以对噪音更鲁棒。
③先验概率和后验概率可以来自不同的数据源,被估计。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
注:右下角的横纵坐标画反了。


在这里插入图片描述

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值