目录
摘要
本周学习了机器学习的基本概念以及机器学习的三个步骤,包括定义含有未知参数的函数,定义损失函数以及使用梯度下降法进行参数优化。并且学习了解决模型偏差的方法,以及神经网络的结构。最后学习了反向传播来更新参数。
Abstract
This week, I learned the basic concepts of machine learning and the three steps involved in machine learning, which include defining a function with unknown parameters, defining a loss function, and using gradient descent to optimize the parameters. I also learned about methods to address model bias and the structure of neural networks. Finally, I learned about backpropagation for updating the parameters.
一、机器学习概述
1.1 机器学习的基本概念
机器学习是一种人工智能领域的方法,通过使用计算机来寻找能够解决实际应用需求的复杂函数,这些函数往往难以由人类直接找到或明确定义。
在语音识别领域中,计算机找到一个复杂的函数,将一段语音信号作为函数的输入,该函数的输出的输出就是这段语音的文字内容。
1.2 函数的类型
- regression(回归):函数的输出是一个数值。
- classification(分类):函数的输出是一个类别。
- structured learning:函数的输出是一个结构,例如图像,文档等。
二、机器学习的步骤
2.1 定义一个含有未知参数的函数
在下图中,定义了一个函数
y
=
b
+
w
x
1
y = b + wx_{1}
y=b+wx1,该函数被称为模型(Model)。模型中包含两个未知参数
w
w
w和
b
b
b,分别表示权重(weight)和偏置(bias)。输入变量
x
1
x_{1}
x1 被称为特征(feature),它作为函数的输入。
2.2 定义一个损失函数
损失函数分为两种,分别为MAE和MSE。本例中使用的是MAE,
e
=
∣
y
−
y
^
∣
e=|y-\hat{y} |
e=∣y−y^∣。损失函数可以度量真实值(lable)和预测值之间的差距。当损失函数越小时,预测值就越接近真实值,模型的精度越高。
2.3 参数优化
找到使损失函数最小的参数,就是参数优化的过程。参数优化使用的是梯度下降法。
梯度下降法:
- L中有参数 w w w和 b b b,以参数 w w w为例。随机取 w 0 w^{0} w0,在 w = w 0 w=w^{0} w=w0处对 w w w取偏导
- 求出偏导后,计算 w 0 − η d L d w w^{0} -\eta \frac{\mathrm{d} L}{\mathrm{d} w} w0−ηdwdL,计算结果为新参数 w 1 w^{1} w1
- 重复上述过程,直到取到使损失函数最小的 w w w为止。
在参数优化的过程中,可能参数优化到损失函数的值仅仅达到了Local minima,而没有达到global minima。
在预测youtube隔天流量的案例中,还可以用前一段时间的流量来预测隔天的流量情况,可以使预测结果更加准确。
上图中的四个函数表达式分别表示用前1,7,28,56天的播放量预测明天的播放量。
L
L
L表示结果在训练集上的损失值,
L
′
{L}'
L′表示结构在预测集上的损失值。可以看出,随着时间的增加,训练集和预测集上的损失值也在越来越小,但是到了28天之后,损失值与58天的相差不大。
三、对线性模型的优化
3.1 Model bias(模型偏差)
下图的红色折线是预测隔日流量的图像,该视频创作者账号的访问量每天是有所起伏的。图中的蓝色直线是使用线性模型预测的图像。然而,使用线性模型来预测未来的流量趋势存在一定的限制,我们将其称为模型偏差(Model bias)。
3.2 模型偏差的解决方法
如下图所示,红色的折线可以用一定数量的函数加上常量表示出来。第一条蓝色折线从起始点到转折点和红色曲线的第一段起始点到转折点的斜率相同,将其加上一个常量值后就可以与红色折线重合。第二、三段折线也是如此。即:red curve = constant + sum of a set of bule curve(function)。
若真实趋势的图像是一段曲线,也可以用上述方法,将其分解成很多段的折线。
上述的蓝色折线可以用sigmoid函数来逼近。
在sigmoid函数中,如果输入
x
1
x1
x1的值趋于无穷大时,
y
y
y的值会趋于
c
c
c,而
x
1
x1
x1的值趋于无穷小,
y
y
y的值趋于0。改变sigmoid函数中
w
w
w的值,函数的斜率就会发生变化;改变
b
b
b的值,函数的水平位置会左右移动;而改变
c
c
c的值,函数的高度将会发生改变。
综上所述,红色的折线就可以用函数
y
=
b
+
∑
i
c
i
s
i
g
m
o
i
d
(
b
i
+
w
i
x
1
)
y=b+\sum_{i}^{} c_{i}\mathrm{sigmoid} (b_{i}+w_{i}x_{1})
y=b+∑icisigmoid(bi+wix1)来表示。
当有多个特征(feature)时,可以将函数表达式扩展成下图的形式。
如下图所示,共有三个特征,三个sigmoid函数。
在该函数表达式中,
x
x
x是特征,
W
W
W,
b
b
b,
c
T
c^{T}
cT和
b
b
b是未知参数,将未知参数拼成一个长向量,称为
θ
\theta
θ。
3.3 新模型的损失函数
计算出
θ
\theta
θ中的值,计算方式与之前类似。将
x
x
x的值输入得到
y
y
y,将
y
y
y与
y
^
\hat{y}
y^对比得到
e
e
e,即可得到Loss函数。
3.4 新模型的参数优化
参数优化的具体过程也与之前介绍的类似。使用梯度下降法求出使
L
L
L最小的
θ
\theta
θ值。
但是在更新参数的时候,一般不会一次计算所有的数据。如图所示,整个数据集的大小为
N
N
N,将
N
N
N随机分为多个batch,然后分别对每个batch计算
L
L
L的值。其中,对一个batch更新一次参数成为一次update,将所有batch全部更新一次叫做一个epoch。
3.5 模型的其他变形
ReLU函数如下图所示。
使用ReLU函数来替代之前的sigmoid函数。
在之前计算的基础上,将刚才的输出当作输入,重复上述过程做新的运算。就形成了一个神经网络模型。在模型中,一个sigmiod函数或者ReLU函数叫做一个神经元(Neuron),多个神经元组成了一个神经网络。第一次做运算的神经元处于同一层(layer)。
在神经网络模型中,刚开始随着层数的增加,模型预测的精准度也随之提高。增加到第四层时,虽然在训练集上,模型的精准度比第三层高,但是在测试集上,精准度反而下降,出现了“过拟合”。
四、深度学习
4.1 全连接前馈网络(Fully Connect Feedforward Network)
将多个Logistic Regression按照不同的方式连接起来,即一个Neural Network,其中,每个Logistic Regression被称为一个Neural。
如下图所示,Neural Network的输入被称为输入层(input layer),最后一层被称为输出层(output layer),在输入层和输出层之间被统称为隐藏层(hidden layers)。
4.2 反向传播
如下图所示,模型的total loss为:
L
(
θ
)
=
∑
n
=
1
N
C
n
(
θ
)
L(\theta )=\sum_{n=1}^{N}C^{n}(\theta)
L(θ)=∑n=1NCn(θ),在函数的左右两边对某一个参数做偏微分
在loss function中,
C
C
C对
w
w
w的偏导为:
∂
C
∂
w
=
∂
z
∂
w
∂
C
∂
z
\frac{\partial C}{\partial w}=\frac{\partial z}{\partial w}\frac{\partial C}{\partial z}
∂w∂C=∂w∂z∂z∂C,其中
∂
z
∂
w
\frac{\partial z}{\partial w}
∂w∂z为Forward pass,
∂
C
∂
z
\frac{\partial C}{\partial z}
∂z∂C为Backward pass。当求Forward pass时,看
w
w
w前连接的input是什么,微分后的
∂
z
∂
w
\frac{\partial z}{\partial w}
∂w∂z就是什么。
总结
经过一周的学习,我了解了机器学习的基本概念,也了解了如何使用梯度下降法去优化参数,使模型的预测更加准确。