李宏毅机器学习/深度学习—机器学习基本概念
目录
Ⅰ 函数的类型
- Regression(回归): The function outputs a scalar.
- Classification(分类): Given options(classes),the function outputs the correct one.
- Structured Learning(结构化学习):create something with structure(image,document)
Ⅱ 深度学习的步骤(以预测播放量为例)
eg: 预测YouTube明天观看人数
2.1 定义含未知参数的函数
- 这一步骤在 Deep Learning 中通常表现为建立Model。
- 在这里定义了一个线性模型,要根据前一天的观看人数来预测后一天人数
- w→weight(权重)b→bias(偏置)x→feature(特征)y→label(标签)

2.2 定义一个损失函数(Loss)
- Loss is a function of parameters
- Loss: how good a set of values is.

Loss :
loss函数可自己定义,以下常见三类:MAE、MSE、交叉熵
L is mean absolute error (MAE)平均绝对误差
L is mean square error(MSE)均方误差
- 如果y和y^都是概率分布 → 交叉熵(Cross-entropy)。当我们要比较两个概率分布之间的差异时,我们会使用交叉熵这一概念。
-
误差曲面(error surface)
用来可视化损失函数随模型参数变化而变化的一种方式。 -

2.3 优化 Optimization
- argmin:使后面的公式最小的参数
使用梯度下降的方法进行优化
梯度下降 Gradient Descent
先拿一个参数举例,假设未知的参数只有 w,我们现在要找到一个 w 来使 Loss 最小。步骤如下:
1. 随机找一个 w
2. 计算微分是多少

负数则增大w,正数则减小w,那么步伐多大呢?
-
是 learning rate(学习速率)(自己设定的),
- 机器学习中需要自己设定的叫hypeparameters(超参数)
3. 迭代更新 w
- 何时停止:①达到了设定次数 ②微分算出来是0
- 存在明显的弊端:全局最小值(global minima)、局部最小值(Local minima)
但全局最小值与局部最小值的问题并不是最主要的,最常见的。其实是学习率!

如果带上参数 b,步骤相同


上面的三个步骤其实都是在进行训练!下面展示了该模型训练后其实在预测效果上并不好
\

2.4 改进1: 使用前一段时间的播放量来预测明天的播放量
那么我们要做的是改进模型,如何修改依旧来自于domain knowledge,下面展示了从通过前一天观看人数来预测改成了前一周、前28天、前56天,效果有所提升。

2.5 改进2: 采用非线性函数表达式
model bias:线性模型太过简单、具有很大的限制
如何避免?用更复杂的函数
线性函数都可以用一段一段的函数组成,即可用常数+若干个蓝色函数表示。

分段线性曲线 Piecewise Linear Curve

sigmoid Function

改变参数,调整w、b、c来逼近Piecewise Linear Function

最终公式

2.5.1 定义未知参数的函数
新的函数表达式如下
矩阵形式

神经网络形式
2.5.2 定义损失函数(同上)

2.5.3 优化(同上)
将w每一个行,b,c,常数写为一个长向量,
使用梯度下降法(同上面)进行优化
可以将长向量分为很多短向量,依次用梯度下降法
每更新一个参数叫1update ,所有的batch算完叫1epoch


Sigmoid函数可以换成ReLU函数,两个都是Activation Function(激活函数),ReLU函数效果可能更好

2.5.3 改进3:多层神经网络
上面讲的是单层神经网络。而深度学习中的“深度”指的是多层的神经网络。了解了单层神经网络的基本原理之后,要想实现多层神经网络就很简单了,只需要将第i层的输出作为第i+1层的输入即可实现

我们来看看在这个案例中,使用多层的神经网络有什么效果吧

从上图我们可以看到,网络层数在1-3之间时,随着层数增加,测试集损失值在逐渐下降。但是,到第4层的时候,测试集的损失值反而上升了。我们把这种现象称为“过拟合”。
过拟合:模型过于复杂,学到了很多噪声,导致训练集loss下降,但是验证集loss上升
更多推荐
所有评论(0)