Tiny Room

机器学习

📅2024/7/18
⏱️2.815 min
🏷️
ML机器学习深度学习神经网络AI

机器学习基本流程

Machine Learning 在干什么:寻找一个function

Machine Learning 的 traning

  • 写出带有未知量的 model function
  • 定义 loss function
  • optimization:逼近需要的函数

线性函数只能是 linear 的,无法逼近复杂的函数,所以存在较大的 model bias,但是如果使用分段线性函数,并且分段足够多,就能逼近任何一个函数

这种类线性函数,统称为 activation function,我们可以使用 sigmoid 函数,或者 ReLU 函数
通过改变参数的值,可以调整 activation function 的伸缩变化

sigmoid=11+e(b+wx)sigmoid=\frac{1}{1+e^{-(b+wx)}}

ReLU=max(0,b+wx)ReLU=max\left( 0,b+wx \right)

我们将特征进行加权求和之后,经过多个激活函数得到的结果进行加权求和,得到新的预测值

因此,我们定义新的模型函数

y=b+i(ci+sigmoid(bi+jwijxj))y=b+\sum_{i}\left (c_{i}+sigmoid\left( b_{i}+\sum_{j}w_{ij}x_{j} \right)\right)

我们可以用矩阵和向量来简写上述模型

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

将需要训练的参数向量展开放在一个新的向量 θ\boldsymbol{\theta} 中,我们新的优化方式就变成了求 θ=argminθL\boldsymbol{\theta}^{*}=arg\min_{\boldsymbol{\theta}}L

在实际 traing 中,我们会将 N 维的 feature 随机分成若干 batch,每次 Batch 进行一次 θ\boldsymbol{\theta} 的 update,所有 batch 都进行了一次叫做一个 epoch

参数的训练方法,叫做 gradient descent 梯度下降

训练过程问题

batch

momentum

learning rate

learning rate 也是一个需要调整的超参数,如果 learning rate 太小,在平缓的地方就会下降很慢,如果 learning rate 太大,很容易走的太快没法收敛

所以,我们希望学习率可以自动调整,将 learning rate η\eta 改为 ησit\frac{\eta}{\sigma_{i}^{t}},这个整体就 parameter independent

θit+1θitησitgit\theta_{i}^{t+1} \leftarrow\theta _{i}^{t}-\frac{\eta}{\sigma_{i}^{t}}g_{i}^{t}

如何计算 σ\sigma?

root of square

σit=1t+1i=0t(gt)2\sigma_{i}^{t}=\sqrt{ \frac{1}{t+1}\sum_{i=0}^{t}(g_{t})^{2} }

但是

RMSProp

σit=α(σit1)2+(1α(git)2)\sigma_{i}^{t}=\sqrt{ \alpha (\sigma_{i}^{t-1})^{2}+(1-\alpha(g_{i}^{t})^{2}) }

adam=RMSProp+momentum

l. rate sechduling

η\eta 变为与时间相关,ηt\eta^{t},RAdam 中使用

  • learning rate decay
  • warm up
    • 一种解释是 σ\sigma 本质上是基于以往数据的统计结果,所以在开始的时候希望 l. rate 小一点,收集更多的历史数据
    • 在 residual network 和 transfomer 中都有使用

总结

momentum + l. rate sechduling + RMSProp

θitθit1ηtσitmit\theta_{i}^{t}\leftarrow\theta_{i}^{t-1}-\frac{\eta^{t}}{\sigma_{i}^{t}}m_{i}^{t}

Terminology

分享这篇文章

相关文章