机器学习 lecture1 基本概念

台大李宏毅老师的机器学习课程学习笔记

视频资源BV1Wv411h7kN

机器学习的定义

机器学习:让机器具备寻找“函数”的能力

eg:语音识别、图片识别,找到一个“对应”

“函数”的分类

回归 regression:输出是数值(scalar)的函数,输入可以是一些相关的指数

分类 classification:从给定的类别中选择并输出类别

alphago本质上是分类问题

structured learning:创造结构化的新内容

简单机器学习的步骤

  1. 写出带有未知参数的函数

    $y=b+wx_{1}\ \ ···\ model$
    $\\ x, y\ \ ···\ feature$
    $\\ w\ \ ···\ weight$
    $\\ b\ \ ···\ bias$

    • based on domain knowledge
    • $w$ 和 $b$ 就是未知参数
  2. 通过训练数据定义损失函数

    loss is a function of parameters

    • 常见的损失函数

      $L=\frac{1}{N}\sum\limits_{n}e_{n}$

      $e=|y-\hat{y}|\ \ ···\ MAE$

      $e={(y-\hat{y})}^{2}\ \ ···\ MSE$

      $y$ 和 $\^{y}$ 是概率时使用交叉熵

    • 20221018153531

  3. 最佳化——梯度下降法

    $w^{*}, b^{*} = arg \min\limits_{w,b}L$

    20221018154520

    • 存在全局最优和局部最优的问题(但其实无关紧要——“does local minima truly cause the problem?”

    • 20221018155613

深度学习:更复杂的情况

model bias:linear models are too simple… we need more sophiscated models

  • 如何拟合复杂的曲线函数?

    通过一个常数与多个简单折线和来进行拟合,就可以拟合较为复杂的折线(piecewise linear curve

    20221018162704

    而任何复杂的曲线都可以用若干的分段线性函数来拟合。

    20221018162735

  • 那如何表示简单折线?(称简单函数为激活函数

    使用sigmoid函数来拟合。

    20221018162420

    通过调整sigmoid函数的参数就可以改变简单折线的形状。

    20221018163043

  • 最终……

    20221018163242

深度学习步骤

  1. 写出带有位置参数的函数

    $y = b + \sum\limits_{i}c_{i}\ sigmoid(b_{i}+\sum\limits_{j}w_{ij}x{i})$,用图像表示后结合线代化简得:

    20221018164706

    由于使用多条sigmoid曲线对原曲线进行拟合,因此黑色层有多个节点,每个节点对应一条简单曲线;每条简单曲线反映的是y和所有x之间的关系(无法用二维平面内的曲线表示了,因为这里有多个自变量x),因此每个黑色节点会连接所有的x节点。

    向量形式的表示:

    $y = b + \textbf{c}^{T} \sigma(\textbf{b} +\textbf{W}\textbf{x})$

    $\textbf{x}(向量)\ \ ···\ feature$
    $\textbf{c}^{T}(向量),\textbf{b}(向量),\textbf{W}(矩阵)\ \ ···\ unknown\ parameters$

    还有一个没看懂的地方——$\theta$到底是啥啊

    20221018185800

  2. 通过训练数据定义损失函数

    $L(\theta)$,其中$\theta$表示所有位置参数的组合

  3. 最佳化(反向传播)

    $\theta^{*} = arg \min\limits_{\theta}L$

  • 由于这里的$\theta$真的变成了多元函数,所以求出的偏导向量也就真的变成了“梯度”用以下降:

    2022101819041320221018190547

    实际操作的时候,每次迭代计算损失函数的时候不会使用所有的样本数据,而是把大量数据分割成小块的数据(batch),每个batch迭代一次,完成一轮遍历后记为一个epoch,一个epoch中有多少次迭代也是手动设置的超参

    20221018191229

再复杂一点……

20221018192127

  • 增加层数即可(层数也是超参 xs)

Yeah, it’s not fancy enough

所以起一个炫酷的名字:

神经网络

然而神经网络也被玩烂了怎么办捏?

那就叫深度学习吧。

下课!


机器学习 lecture1 基本概念
http://eskildmk.github.io/2022/10/17/机器学习-pt-1-基本概念/
作者
MK
发布于
2022年10月17日
许可协议