【机器学习】李宏毅 - 02 回归

回归

00. 机器学习总览

机器学习的本质就是寻找到一个合适的函数表达式(Function),主要类别如下:

Regression : 函式输出是一个标量。

Classification :给定一系列类别( classes ),函式输出一个正确的类别。

Structured Learning :产生有结构的图像或文件。

01. 案例导入

任务:根据一个频道过往所有的资讯,来预测网络频道流量

步骤:

1.1 写出一个带有未知参数的函数表达式

→ \rightarrow 模型 y = b + w x 1 y=b+wx_1 y=b+wx1

  • y y y是我们要预测的东西 → \rightarrow 预测的流量

  • x 1 x_1 x1是这个频道前一天的总流量 → \rightarrow 数值

  • b b b w w w是未知的参数,透过资料去找出 → \rightarrow 未知参数

  • 猜测 → \rightarrow 未来流量是前一天的流量乘以 w w w再加 b b b

    猜测是基于对该问题的本质的了解,不一定是对的。 (基于 Domain knowledge

名词定义:

Feature :函数中我们已知的信息,如上式 x 1 x_1 x1

Weight( w w w) :未知参数,和特征直接相乘

Bias( b b b):未知参数,直接加和

1.2 根据训练集中数据定义损失函数

损失函数 L ( b , w ) L(b,w) L(b,w)的输入是模型内部的 参数,如这里是 w w w, b b b

  • 损失(Loss)越大,代表这一组参数越不好,反之则越好、越精准。

  • 计算方法:根据 w , b w,b w,b的组合,来求估测值和实际值(label)之间的距离。

    • MAE (mean absolute error)平均绝对误差

    • MSE (mean square error)均方误差

    • Cross-entropy 交叉熵

      应用于 y , y ^ y,\hat{y} y,y^是概率分布的情况。

名词定义:

Error Surface:用不同的参数输入,计算损失(Loss),画出等高线图。

1.3 优化

求解最优化问题:找到能让损失函数的值最小的参数。

w ∗ , b ∗ = arg ⁡ min ⁡ w , b L w^*,b^*=\arg\min_{w,b}L w,b=argminw,bL

  • 具体方法:梯度下降(Gradient Descent)

2 调整模型

模型 y = b + w x 1 y=b+wx_1 y=b+wx1的预测结果总结:

  1. 在训练集上预测性能好,在未知数据集上预测性能差,泛化能力差。

  2. 观察真实数据后发现,原有模型忽略了数据本身的周期性性质,需要调整原有模型。

调整后的模型 y = b + Σ j = 1 7 的倍数 w j x j y=b+\Sigma_{j=1}^{7的倍数}w_jx_j y=b+Σj=17的倍数wjxj,我们称之为线性模型(Linear model)见03.线性模型。

02. 梯度下降法

单参数 w w w

  1. 随机选取一个初始点 w 0 w^0 w0

    在这里插入图片描述

  2. 计算在 w = w 0 w=w^0 w=w0时, w w w对函数Loss的微分(斜率)

在这里插入图片描述

如果蓝色虚线斜率<0(Negative),左高右低,则我们应增加 w w w的值,使得Loss的值变小。

如果蓝色虚线斜率>0(Positive),左低右高,则我们应减小 w w w的值,使得Loss的值变小。

总结:向比较低的地方移动。

  1. 根据微分(梯度)的方向,改变参数的值

    改变时的步长大小取决于:

    a. 斜率的大小

    b. 学习率 η \eta η 的大小(超参数)

    名词定义:

    Hyperparameter(超参数) :机器学习中需要自己设定的东西。

  2. 重复2,3步,不断更新 w w w

  3. 停止的条件

    a. 自己设置上限(超参数)

    b. 理想情况:微分值是0,极小值点,参数不会再更新 → \rightarrow 有可能陷入局部最小值

    在这里插入图片描述

    事实上:局部最小值不是真正的问题/痛点!

    缺陷:

    • 问题1:局部最优(Stuck at local minima)
    • 问题2:等于0(Stuck at saddle point)
    • 问题3:趋近于0(Very slow at the plateau)

多参数 w , b w,b w,b

类似单参数的方法步骤,使得损失函数的值最小。
在这里插入图片描述

03. 线性模型

根据周期性修改模型 → \rightarrow 考虑 前7天或更多星期的数据

缺陷:一个模型无法模拟真实的情况,有局限性。Model Bias

解决方法:提出一个更复杂、更有弹性、有未知参数的函数表达式。

04. 分段线性曲线(Piecewise Linear Curves)

  1. 模型定义

    由多段锯齿状的线段所组成的线 → \rightarrow 看作一个常数,再加一堆蓝色的函数 ( Hard Sigmoid

    我们用一条曲线来近似描述这条蓝色曲线:Sigmoid函数(S型的function)。

    sigmoid的个数就是神经网络中的一层的neuron节点数(使用几个sigmoid是 超参数

    在这里插入图片描述

    Sigmoid: y = c 1 1 + e − ( b + w x 1 ) y=c\frac{1}{1+e^{-(b+wx_1)}} y=c1+e(b+wx1)1

    调整 w , b , c w,b,c w,b,c,可以得到不同的sigmoid函数来逼近蓝色曲线,通过求和,最终近似不同的连续函数(Continuous Function)。

    • 改变 w w w → \rightarrow 改变斜率/坡度
    • 改变 b b b → \rightarrow 左右移动
    • 改变 c c c → \rightarrow 改变高度

在这里插入图片描述

总结

  1. 可以用 Piecewise Linear 的 Curves,去 逼近任何的连续的曲线
  2. 每一个 Piecewise Linear 的 Curves,都可以用 一大堆蓝色的 Function加上一个常量组合 起来得到
  3. 只要有 足够的蓝色 Function 把它加起来,就可以变成任何连续的曲线
  4. 利用若干个具有不同 w , b , c w,b,c w,b,c的Sigmoid函数与一个常数参数的组合,可以模拟任何一个连续的曲线(非线性函数)

​ 拓展到多个特征:

y = b + ∑ i c i sigmoid ( b i + ∑ j ( w i j x j ) ) y=b+\sum_i c_i \text{sigmoid}(b_i+\sum_j(w_{ij}x_j)) y=b+icisigmoid(bi+j(wijxj))

  • j = 1 , 2 , 3 j=1,2,3 j=123 : x 1 x_1 x1代表前一天的流量, x 2 x_2 x2代表两天前的流量,…
  • 每一个 i i i代表了一个蓝色函数
  • w i j w_{ij} wij:第 i i i个sigmoid给第 j j j个特征的权重

​ 转化为矩阵计算+激活函数形式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 写出损失函数

  2. 优化

    梯度下降

05. 批训练 (Batching training)

每次更新参数时,只使用 1个batch 里的数据计算Loss,求取梯度,更新参数

在这里插入图片描述

名词解释

Update :每次更新一次参数叫做一次 Update,

Epoch :把所有的 Batch 都看过一遍,叫做一个 Epoch

  1. 使用较小的BatchSize,在更新参数时会有噪声 => 有利于训练

    在这里插入图片描述

  2. 使用较小的BatchSize,可以避免过拟合 => 有利于测试

在这里插入图片描述

06. 模型变型

ReLU(Rectified Linear Unit,线性整流单元)

在这里插入图片描述

多加几层 => 做几次 => 超参数

07. 深度学习

在这里插入图片描述
警惕过拟合!
解决方法:引入正则项

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值