李宏毅课程笔记(机器学习基础

机器学习的分类

从输出角度分类

  • Regression(回归):输出是一个值
  • Classification(分类):做选择题(需要准备好答案)
    用n维单位向量来表示一类
    SoftMax: y i ′ = l n ( y i ) ∑ l n ( y i ) y_i'=\frac{ln(y_i)}{\sum ln(y_i)} yi=ln(yi)ln(yi)
    在两个Class的情况下softmax等价于两个sigmoid
  • Structured Learning:产生一个有结构的

机器学习的训练过程

Loss

  • MAE(mean absolute error)
  • MSE(mean square error)
  • Cross-Entropy(交叉熵)(用于output和label都是概率分布的情况)
    e r r o r = − ∑ i y ^ l n y ′ error=-\sum_i\hat{y}lny' error=iy^lny
    最小化交叉熵等价于最大化相似性
  • 实际上可以是你想设定的任何值
    Error Surface

优化

梯度下降(Gradient Descent)
1、选择参数初始值(可以不是随机的)
2、根据loss的梯度下降的方向选择优化方向(可能会陷入局部最优)
3、根据loss的梯度和学习率(超参数)决定参数值的变化幅度

loss得不到下降的原因

梯度为零的点统称为Critical Point,包含以下两类点

  • Local Minima/Local Maxima局部最优,是一个“假问题”,因为在极高维空间中很少有Local Minima
  • Saddle Point
    判断Critical Point的类型的方法:
    对L( θ \theta θ)做泰勒展开到二阶导项(Hessian矩阵),根据H来判断Critical Point的形状。若H正定,则为Local Minima;若H负定,则为Local Maxima;其他情况均为鞍点。
    若为鞍点,则一定有一个最差的方法,即可以将H的负特征值所对应的特征向量作为本轮更新的方向

避免/逃离saddle point的方法

用更小的Batch Size:小的batch能获得更好的test accuracy,一种解释是,小batch的多次更新能避免进入Sharp Minima,而sharp minima在训练集和测试集有mismatch的时候会有更大的偏差。
大batch size可以在使用了平行运算技术时有更优的训练效率。
如何用大batch获得好的训练效率且兼有小的batch的优点
使用Momentum(动量)来逃离鞍点

克服震荡

客制化学习率

知乎:各类优化器

  • Root Mean Square(Adagrad)
    η i t = η 1 t + 1 ∑ j = 0 t ( g i j ) 2 \eta_i^t=\frac{\eta}{\sqrt{\frac{1}{t+1}\sum^t_{j=0}{(g_i^j)^2}}} ηit=t+11j=0t(gij)2 η
  • RMS Prop
Learning Rate Scheduling
  • LR Decay
  • Warm Up
    一种解释是,warm up使得客制化的学习率能代表对周围环境的反馈
    进阶版RAdam

平坦化问题空间:feature归一化

BN:激活函数为sigmoid时放在激活函数前,其他情况也可放在激活函数后
其他归一化方法

Linear Model

把feature乘上weight加上bias作为输出
来自model的限制:Model Bias

Piecewise Linear Model

激活函数(Activation Function)

Sigmoid Function(S型

几个Sigmoid也是超参数
用于限制所修饰的子函数的作用范围
y = c 1 1 + e − ( w x i + b ) y=c\frac{1}{1+e^{-(wx_i+b)}} y=c1+e(wxi+b)1
c改变高度,w改变斜率,b左右移动

ReLU:Rectified Linear Unit

y = c ∗ m a x ( 0 , b + w x ) y=c*max(0, b+wx) y=cmax(0,b+wx)

hard-sigmoid:两个ReLU

训练

将全集随机分成多个Batch,每一个Batch分别Update所有的参数;每个Batch都训练一遍叫一个epoch
为什么要分batch?
批大小也是超参数

为什么要Deep,而不是Fat?

Residual Net:152层Layer
理论上足够多的ReLU/Sigmoid就可以模拟任何函数,为什么不扩展层内神经元个数而要叠加多层?

Overfitting(过拟合)

弹性较大的模型容易出现Overfitting(第三课讲)
解决方法:
1、增加更多的资料
2、选择合适的模型
2.1 更少的参数
2.2 共用参数(CNN)
2.3 更少的特征
2.4 Early Stopping
2.5 Dropout
2.6 Regularization

Mismatch

Backpropagation(反向传播)

如何确定是Model-Bias还是Optimization影响训练结果不够好?

使用较小(LinearModel)/较简单(SVM)的模型,先对Loss的范围有一个估计

N-fold Cross Validation

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值