李宏毅2020机器学习1

1. 简介

机器学习就是自动找函式
机器学习:

  • 语音识别,f(一段声音)=“How are you”
  • 图片识别,f(一张图片)=“Cat”
  • 下围棋,f(一张围棋图片)=“5-5”
  • 对话系统,f(“How are you?”)=“I am fine.”

你想找什么样的函式?机器怎么找出你想要的函式?即 Gradient Descent;函式的Loss,机器会自动找出Loss最低的函式

  • Regression ---- 回归,输出一个数值
  • Classification ---- 二分类,input->f->Yes or No
  • RNN ---- 二分类,input -> f -> 正面 or 负面
  • CNN ---- Multi-class Classification,多分类,input->f->Class 1, Class 2, … Class N
  • Seq2seq ---- Generation,生成
  • GAN
  • Unsupervised Learning ---- 非监督学习,例如 Auto-encoder
  • Anomaly Detection ---- 训练机器知道“我不知道”
  • Transfer Learning(Domain Adversarial Learning) ---- 处理不同的输入数据
  • Explainable AI ---- 可解释
  • Adversarial Attack ---- 攻击AI
  • Network Compression ---- 网络简化
  • Meta Learning ---- Learn to learn,让机器学习如何学习
  • Life-long Learning ---- 终身学习
  • Reinforcement Learning ---- 强化学习

2. 规定

2.1. 环境

建议linux或macOS
python 3.6.8
pyenv

2.2. Kaggle

机器学习平台

3. Regression

回归:PM2.5预测、股票预测、自动驾驶、推荐系统

3.1. Model

a set of function
y = b + w ⋅ x y = b + w \cdot x y=b+wx w w w:weight, b b b:bias 可以是任意值,因此 y 为一组函式

3.2. 准备训练数据 Training Data,定义损失函数Loss

Loss: input – a function,output – how bad it is
L ( f ) = L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 L(f) = L(w, b) = \sum _{n=1}^{10} (\hat{y}^n - (b + w \cdot x_{cp}^n))^2 L(f)=L(w,b)=n=110(y^n(b+wxcpn))2

3.3. Gradient Descent

线性回归基础版本
线性回归动态学习率adagrad版本
动态学习率能提高学习速度
局部最小值:线性回归中不用担心局部最小值,因为 loss function L is convex (凸函数)

3.4. Overfitting 过拟合

从最简单的线性方程开始,然后用二次方程,三次方程演示过拟合
模拟过拟合

3.5. Regularization 正则化

y = b + ∑ w i x i L = ∑ n ( y ^ n − ( b + ∑ w i x i ) ) 2 + λ ∑ ( w i ) 2 y=b+\sum w_i x_i \\ L = \sum _n (\hat{y}^n - (b+\sum w_i x_i))^2 + \lambda \sum (w_i)^2 y=b+wixiL=n(y^n(b+wixi))2+λ(wi)2 The function with smaller w i w_i wi are better. 参数越接近0,方程越平滑
为什么平滑的方程比较好?平滑方程受噪声的影响比较小
λ \lambda λ 的值需要调整,才能获得较好的模型
注意:正则化并没有将3.4中的过拟合纠正过来,暂时不知道原因

4. 误差从哪来?

Bias(偏差)、Error(误差)、Variance(方差)

5. 梯度下降法

通过画出Loss的曲线,来判断如何调整学习率,通常情况下,lr随迭代次数逐渐变小
lr不应该one-size-fits-all,每个参数应该有自己的lr
调整学习率:自适应学习率—adagrad
W t + 1 ← W t − η t δ t g t = W t − η ∑ i = 0 t ( g i ) 2 g t η t = η t + 1 δ t = 1 t + 1 ∑ i = 0 t ( g i ) 2 W^{t+1} \leftarrow W^{t} - \frac{\eta^t}{\delta^t} g^t = W^t - \frac{\eta}{\sqrt{\sum_{i=0}^t(g^i)^2}}g^t \\ \eta^t = \frac{\eta}{\sqrt{t+1}} \\ \delta^t = \sqrt{\frac{1}{t+1} \sum_{i=0}^t(g^i)^2} Wt+1Wtδtηtgt=Wti=0t(gi)2 ηgtηt=t+1 ηδt=t+11i=0t(gi)2 adagrad后面学习非常慢,可以使用 adam

Stochastic Gradient Descent: 随机梯度下降法,仅随机选取一个样本,来计算梯度值

Feature Scaling: 特征缩放,让不同的特征有相同的比例;多个特征分布的区间非常不同时,建议进行特征缩放。特征缩放的方法很多,常见的有:
x i r ← x i r − m i δ i x_i^r \leftarrow \frac{x_i^r - m_i}{\delta_i} xirδixirmi r 表示第几个样本, i 表示第几个维度 : 均值表示为 m i m_i mi ,标准差表示为 δ i \delta _i δi
标准化处理后,所有维度均值为0,方差为1
泰勒级数:
h ( x ) = ∑ k = 0 ∞ h ( k ) ( x 0 ) k ! ( x − x 0 ) k h(x) = \sum_{k=0}^\infty \frac{h^{(k)}(x_0)}{k!} (x-x_0)^k h(x)=k=0k!h(k)(x0)(xx0)k x x x 很接近 x 0 x_0 x0 时: h ( x ) ≈ h ( x 0 ) + h ′ ( x 0 ) ( x − x 0 ) h(x) \approx h(x_0) + h^{'}(x_0)(x-x_0) h(x)h(x0)+h(x0)(xx0)
泰勒级数可以扩展到多参数
梯度下降法的限制:局部最小值、鞍点的微分值都为0

8. 深度学习优化

一些数学符号:

  • θ t \theta _t θt : t 时刻的模型参数
  • g t g_t gt : θ t \theta _t θt 的梯度
  • m t + 1 m_{t+1} mt+1 : 动量

优化内容:找一个参数 θ \theta θ, 对于所有样本,使得Loss最小

On-line vs Off-line: 看到一个样本还是所有样本

优化器(Optimizers):
SGD(1847年): Start at position θ 0 \theta ^0 θ0, Compute gradient at θ 0 \theta ^0 θ0, Move to θ 1 = θ 0 − η ∇ L ( θ 0 ) \theta ^1 = \theta ^0 - \eta \nabla L(\theta ^0) θ1=θ0ηL(θ0), Compute gradient at θ 1 \theta ^1 θ1, Move to θ 2 = θ 1 − η ∇ L ( θ 1 ) \theta ^2 = \theta ^1 - \eta \nabla L(\theta ^1) θ2=θ1ηL(θ1) … Stop until ∇ L ( θ t ) ≈ 0 \nabla L(\theta ^t) \approx 0 L(θt)0

SGD with Momentum(SGDM)(1986年): Start at point θ 0 \theta ^0 θ0, Movement v 0 = 0 v^0=0 v0=0; Compute gradient at θ 0 \theta ^0 θ0, Movement v 1 = λ v 0 − η ∇ L ( θ 0 ) v^1 = \lambda v^0 - \eta \nabla L(\theta^0) v1=λv0ηL(θ0), Move to θ 1 = θ 0 + v 1 \theta ^1=\theta ^0 + v^1 θ1=θ0+v1; Compute gradient at θ 1 \theta ^1 θ1, Movement v 2 = λ v 1 − η ∇ L ( θ 1 ) v^2 = \lambda v^1 - \eta \nabla L(\theta^1) v2=λv1ηL(θ1), Move to θ 2 = θ 1 + v 2 \theta ^2=\theta ^1 + v^2 θ2=θ1+v2; Movement not just based on gradient, but previous movement.

(下面三个优化器采用动态学习率)

Adagrad(2011年): θ t = θ t − 1 − η ∑ i = 0 t − 1 ( g i ) 2 g t − 1 \theta_t = \theta_{t-1} - \frac{\eta}{\sqrt{\sum_{i=0}^{t-1}(g_i)^2}}g_{t-1} θt=θt1i=0t1(gi)2 ηgt1
RMSProp(2013年): θ t = θ t − 1 − η v t g t − 1 \theta_t = \theta_{t-1} - \frac{\eta}{\sqrt{v_t}}g_{t-1} θt=θt1vt ηgt1, v 1 = ( g 0 ) 2 v_1=(g_0)^2 v1=(g0)2, v t = a v t − 1 + ( 1 − a ) ( g t − 1 ) 2 v_t=a v_{t-1} + (1-a)(g_{t-1})^2 vt=avt1+(1a)(gt1)2; 此方法与 Adagrad 仅分母不同
Adam(2015年): SGDM 变形 + RMSProp---- SGDM[ θ t = θ t − 1 − η m t ; m t = β 1 m t − 1 + ( 1 − β 1 ) g t − 1 \theta_t=\theta_{t-1}-\eta m_t;m_t=\beta_1 m_{t-1} + (1-\beta _1)g_{t-1} θt=θt1ηmt;mt=β1mt1+(1β1)gt1] + RMSProp[ θ t = θ t − 1 − η v t g t − 1 \theta_t = \theta_{t-1} - \frac{\eta}{\sqrt{v_t}}g_{t-1} θt=θt1vt ηgt1, v 1 = ( g 0 ) 2 v_1=(g_0)^2 v1=(g0)2, v t = β 2 v t − 1 + ( 1 − β 2 ) ( g t − 1 ) 2 v_t=\beta_2 v_{t-1} + (1-\beta_2)(g_{t-1})^2 vt=β2vt1+(1β2)(gt1)2] = Adam[ θ t = θ t − 1 − η v ^ t + ε m ^ t \theta_t = \theta_{t-1} - \frac{\eta}{\sqrt{\hat{v}_t} + \varepsilon} \hat{m}_t θt=θt1v^t +εηm^t; m ^ t = m t 1 − β 1 t \hat{m}_t=\frac{m_t}{1-\beta_1 ^t} m^t=1β1tmt, v ^ t = v t 1 − β 2 t \hat{v}_t=\frac{v_t}{1-\beta_2 ^t} v^t=1β2tvt, β 1 = 0.9 , β 2 = 0.999 , ε = 1 0 − 8 \beta_1 = 0.9, \beta_2=0.999, \varepsilon=10^{-8} β1=0.9,β2=0.999,ε=108]

真实应用中,大部分模型使用的优化器是 SGDM(稳定) 或 Adam(训练快)

L2 regularization: L l 2 ( θ ) = L ( θ ) + γ ∣ ∣ θ ∣ ∣ 2 L_{l_2}(\theta) = L(\theta) + \gamma ||\theta||^2 Ll2(θ)=L(θ)+γθ2

Shuffling
Dropout
Gradient noise

建议:
SGDM: Computer vision(image classification、segmentation、object detection)
Adam: NLP(QA、machine translation、summary)、Speech synthesis、GAN、Reinforcement learning

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值