Machine Learning - 1

2026/08/26

Machine Learning - 1

总结:Machine Learning ≈ Looking for Function

focues on: Deep Learning Basic

types of Machine Learning:

基础模型:Linear Model

Linear models Training steps:

  1. Create Function with Unknown Parameters

    $$ \require{enclose} y = b + wx \quad \enclose{circle}{1} \\ a = c \quad \enclose{circle}{2} \\ \text{b:bias w:weight} \quad \enclose{circle}{3} $$
  2. Define Loss from Training Data:how good a set of values is. Loss Function:$L(b,w)$.

    $$ \require{enclose} \begin{align} e_n &= |y_n - \hat{y}_n| \quad \text{mean absolute error(MAE/均绝对值差)} \quad \enclose{circle}{1} \\ \text{or} \quad e_n &= (y_n - \hat{y}_n)^2 \quad \text{mean square error(MSE/均方差)} \quad \enclose{circle}{2} \\ L(b,w) &= \frac{1}{N} \sum_{n=1}^{N} e_n \quad \enclose{circle}{3} \end{align}$$
  3. Optimization

    $$w^*,b^* = arg min_{w,b} L$$

    Gradient Descent

    a. Pick randomly an initial value $w^0$, $b^0$

    b. Compute

    $$ \require{enclose} \begin{align} \frac{\delta L}{\delta w} |_{w=w^0} \quad \enclose{circle}{1} \\ \frac{\delta L}{\delta b} |_{b=b^0} \quad \enclose{circle}{2} \\ w^1 = w^0 - n \frac{\delta L}{\delta w}|_{w=w^0} \quad \enclose{circle}{3} \\ b^1 = b^0 - n \frac{\delta L}{\delta b}|_{b=b^0} \quad \enclose{circle}{4} \\ \text{说明:n 表示学习率,是一个 hyperparameter} \quad \enclose{circle}{5} \end{align}$$

    c. Update $w$, $b$ iteratively

  4. 总结

$$ \require{enclose} \begin{align} y = b + wx \quad \enclose{circle}{1} \\ L(b,w) = |y_1 - y_1^1| + ... + y_n-y_n^n = \sum_{i=1}^{n}|y_i - (b + wx_i)| \quad \enclose{circle}{2} \\ \text{a set of datas} \quad \enclose{circle}{3} \end{align} $$

`疑惑点1:梯度函数和方向导数是如何确定梯度是最大的变化方向?

解答:(泰勒公式与拉格朗日中值定理)。查询了很多资料只是单纯的套入公式,这几个定理日后再深入学习,现在有点不好理解。`

1.梯度算出来的就是方向导数中变化最快的,沿着梯度增高最快,反着梯度方向减少越快; 2.泰勒公式展示为什么一个曲线函数可以用多项式函数表示。

参考资料:1.Dr. Trefor Bazett:Directional Derivatives 2.马同学:解释泰勒公式

疑惑点2:为什么多features是$w_1x_1+w_2x_2$这种一阶相加的模型呢?

解答:概括就是为了简单。泰勒一阶展开($x$)简单,相加性假设($w_1x_1+w_2x_2$)也简单。这个是拿来学习的,真实情况往往不是这样的,因为$x_1$,$x_2$互相之前可能存在协同、抑制等作用。

机器学习框架(ML framework):Other Models(sigmoid/ReLU)

总结就是:goal curve = constant + sum of piecewise linear curves

Sigmoid Function

goal curve = constant + sum of sigmoid function

$$ \require{enclose} \begin{align} y &= c \cdot \frac{1}{1+e^{-({b+wx_1)}}} \quad \enclose{circle}{1} \\ &\text{c:改变高度 b:中心左右移动 w:改变斜坡坡度} \quad \enclose{circle}{2} \\ &= c \cdot \operatorname{sigmoid}(b+wx_1) \quad \enclose{circle}{3} \\ &= c \cdot \sigma(b+wx_1) \quad \enclose{circle}{4} \end{align} $$

n sigmoid and j features:

$$ \require{enclose} \begin{align} y &= b + \sum_{i=1}^{n} c_i \operatorname{sigmoid}(b_i+ \sum_jw_{ij}x_j) \quad \enclose{circle}{1} \\ &\text{i: no. of sigmoids} \quad \enclose{circle}{2} \\ &\text{j: no. of features} \quad \enclose{circle}{3} \end{align}$$

向量表示:

$$\left\{ \begin{array}{l} y = b + c^Ta \\ a = \sigma(r) \\ r = b + wx \end{array} \right.$$

疑惑点3:为什么多个features的x_j是放入sigmoid函数内部的呢,而不是一个sigmoid表示一个feature?

解答:暂时不太理解

ReLU

Rectified Linear Unit(ReLU) 可以用两个 ReLU 函数曲线表示一个hard sigmoid 函数曲线。所以可以用两倍数量的 ReLU 来替换 sigmoid 函数。

$$y=c \cdot max(0,b+wx)$$

训练步骤

1.定义机器学习的框架的模型:

$$ \require{enclose} \begin{align} y &= b + \sum_{i=1}^{n} c_i \operatorname{sigmoid}(b_i+ \sum_jw_{ij}x_j) \quad \enclose{circle}{1} \\ \text{or} \quad y &= b + \sum_{i=1}^{2n} c_i \operatorname{max}(0,b_i+ \sum_jw_{ij}x_j) \quad \enclose{circle}{2} \\ &\text{i: no. of sigmoids} \quad \enclose{circle}{3} \\ &\text{j: no. of features} \quad \enclose{circle}{4} \end{align}$$

通过向量简化表示如下:

$$ \require{enclose} \begin{align} y = b_1 + c^t \sigma(b_2+wx) \quad \enclose{circle}{1} \\ or \quad y = b_1 + c^t \max(0,b_2+wx) \quad \enclose{circle}{2} \\ b_1:一个数值;b_2:一个向量,w 表示一个矩阵 \quad \enclose{circle}{3} \\ b_1,c^t,b_2和w共同组成未知数集合,可以用 \theta 表示全部的未知参数集合 \quad \enclose{circle}{4} \end{align} $$

2.定义损失函数 L($\theta$):

总结就是 Loss $L = \frac{1}{N}\sum_{n=1}^N{e_n}$

3.最优化(Optimization),即寻找

$\theta^* = \operatorname{arg} \operatorname{min}_{\theta}L$

3.1. Pick randomly initial values $\theta^0$

3.2. 通过梯度下降寻找更好的的$\theta^1$

$$ \require{enclose} \begin{align} gradient = \nabla{\theta^0} \quad \enclose{circle}{1} \\ \text{or} \quad g = \left[ \begin{matrix} \frac{\delta{L}}{\delta{\theta_1}}|_{\theta=\theta^0} \\ \frac{\delta{L}}{\delta{\theta_2}}|_{\theta=\theta^0} \\ ... \\ \frac{\delta{L}}{\delta{\theta_n}}|_{\theta=\theta^0} \\ \end{matrix} \right] \quad \enclose{circle}{2} \\ \text{梯度gradient可以用g表示,通过微分可以算出梯度} \quad \enclose{circle}{3} \end{align}$$

3.3. 然后计算$\theta^1:$

$$\begin{align} \boldsymbol{\theta}^1 \leftarrow \boldsymbol{\theta}^0 - \eta\left.\nabla L(\boldsymbol{\theta})\right|_{\boldsymbol{\theta}=\boldsymbol{\theta}^0} \end{align}$$

3.4. 通过 3.2和3.3迭代,最终计算出满意的 $\theta$,即 $\theta^*$

其他

  1. Overfitting:训练的 Loss 低(训练效果好),但是没训练的 Loss 高(实际效果不行)
  2. 实际训练时一般会按照 batch 进行参数更新,一个 batch 的数据训练完更新一次参数
  3. 全部训练数据训练为一个 epoch
  4. hyperparameters 表示自己自定义的参数,比如学习率 n、features 的数量、sigmoid 的数量、训练 batch 的大小、训练周期epoch 的大小和 layer 的层数属于 hyperparameters
  5. Neuron: 一个 sigmoid 或者 ReLU 就是一个神经元
  6. Neural Network: 多个 neuron 串联组成的 model 就是神经网络。
  7. Layer(hidden layer):把 $\sigma$ 输出作为 x,即作为新的 $\sigma(b+wx)$ 中的 x,就嵌套多了一层。
  8. Deep Learning:多层的 Hidden Layer 就叫做深度学习
  9. Deep Learning 分层:
    • input layer
    • hidden layer
    • output layer

思考