NTU ML2023Spring Part2.1 基础知识

License: CC BY-NC-SA 4.0

机器学习的任务是什么?考虑几个常见的任务:输入一段语音,输出语音中的文字;输入一张图片,输出图片中的内容;输入棋局局面,输出下一步怎么走。总结一下就是找到一个函数。

几个常见的任务:

  • Regression

    输出一个标量。

  • Classification

    输出一个 enum 中的类型。(例如 Yes/No,或棋盘上落子的位置)

  • Structured Learning

    输出一些带结构的东西(更复杂)

    例如 text to image,或写一篇文章

Model:一个这样的函数,带有一些参数(Parameter)。

如何找到一个函数?

  • 根据对该领域知识的理解先确定函数的大致类型(有点类似于数学中求回归方程的时候用一次函数还是二次函数拟合)

  • 设计 loss 函数(输入为 Model 的 Parameter,输出一般是标量)。loss 越低代表 parameter 越好。(loss 可以是负的)

    用不同参数得到的 loss 的等高线图就是 error surface.

  • 对参数进行优化(optimization)

    在这门课中只会用到 gradient descent. 基本原理就是在 error surface 上沿着地形较低的地方走一步,重复多次。步长即 learning rate,是超参数之一。超参数就是要自己调的参数(有点像模拟退火里的退火率,反正就是玄学调参)。

让 loss 最小的参数值叫 global minima,极小值处叫 local minima。

模型的更改往往伴随 domain knowledge 的加深。模型也许无法拟合真实数据(例如线性回归拟合二次函数就会有较大的差距),这种现象叫 model bias。

显然 linear model 是不够复杂的,那怎样的 model 足够复杂呢?

其实加上 ReLU 函数(\(f(x) = \dfrac{x + |x|}{2}\))就够了。注意到曲线可以用折线拟合,而折线可以由一堆 ReLU 函数(与线性函数的复合)之和表示。当然 sigmoid(\(f(x) = \dfrac{1}{1+\exp(-x)}\))也是可以的。

然后我们就有比较复杂的模型了。为了简化表示,可以用向量与矩阵描述:

  • 假设是 regression 问题,输入一堆数,输出一个数

  • \(\mathbf{x}\) 是 feature(输入)

  • \(y\) 是输出

  • \(\mathbf{r} = \mathbf{b} + W \mathbf{x}\)

  • \(a_i = sigmoid(r_i)\)(即 \(\mathbf{a} = sigmoid(\mathbf{r})\)

  • \(y = \mathbf{a} \cdot \mathbf{c} + b_1\)

如何进行 Gradient descent?

  • 将训练资料随机分成若干个 batch

  • 对某个 batch 算出 loss

  • 更新参数(称为一次 update)

  • 重复上面两步直到所有 batch 都看过,整个过程叫一个 epoch

  • 训练若干个 epoch 直到你不想训练

为什么叫 deep learning?因为神经网络有很多层,比较 deep。

posted @   383494  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示