机器学习
机器学习基本流程
Machine Learning 在干什么:寻找一个function
Machine Learning 的 traning
- 写出带有未知量的 model function
- 定义 loss function
- optimization:逼近需要的函数
线性函数只能是 linear 的,无法逼近复杂的函数,所以存在较大的 model bias,但是如果使用分段线性函数,并且分段足够多,就能逼近任何一个函数
这种类线性函数,统称为 activation function,我们可以使用 sigmoid 函数,或者 ReLU 函数
通过改变参数的值,可以调整 activation function 的伸缩变化
sigmoid=1+e−(b+wx)1
ReLU=max(0,b+wx)
我们将特征进行加权求和之后,经过多个激活函数得到的结果进行加权求和,得到新的预测值
因此,我们定义新的模型函数
y=b+i∑(ci+sigmoid(bi+j∑wijxj))
我们可以用矩阵和向量来简写上述模型
y=b+cTσ(b+Wx)
将需要训练的参数向量展开放在一个新的向量 θ 中,我们新的优化方式就变成了求 θ∗=argminθL
在实际 traing 中,我们会将 N 维的 feature 随机分成若干 batch,每次 Batch 进行一次 θ 的 update,所有 batch 都进行了一次叫做一个 epoch
参数的训练方法,叫做 gradient descent 梯度下降
训练过程问题
batch
momentum
learning rate
learning rate 也是一个需要调整的超参数,如果 learning rate 太小,在平缓的地方就会下降很慢,如果 learning rate 太大,很容易走的太快没法收敛
所以,我们希望学习率可以自动调整,将 learning rate η 改为 σitη,这个整体就 parameter independent
θit+1←θit−σitηgit
如何计算 σ?
root of square
σit=t+11∑i=0t(gt)2
但是
RMSProp
σit=α(σit−1)2+(1−α(git)2)
adam=RMSProp+momentum
l. rate sechduling
将 η 变为与时间相关,ηt,RAdam 中使用
- learning rate decay
- warm up
- 一种解释是 σ 本质上是基于以往数据的统计结果,所以在开始的时候希望 l. rate 小一点,收集更多的历史数据
- 在 residual network 和 transfomer 中都有使用
总结
momentum + l. rate sechduling + RMSProp
θit←θit−1−σitηtmit
Terminology