机器学习概念与类别
机器学习,顾名思义,机器具备有学习的能力。具体来讲,机器学习就是让机器具备找一个函数的能力。随着要找的函数不同,机器学习有不同的类别。
机器具备找函数的能力以后,它可以做很多事。比如语音识别,机器听一段声音,产生这段声音对应的文字。
机器学习类别:
- 回归(Regression)
- 分类(Classification)
- 结构化学习(Structure Learning)
:::info
机器不只是要做选择题或输出一个数字,而是产生一个有结构的物体,比如让机器画一张图,写一篇文章。这种叫机器产生有结构的东西的问题称为结构化学习。
:::
找函数的三个步骤
机器学习找函数的过程,分为三个步骤。
- 写出一个带有未知参数的函数f,如:y = b + w*x1
- 第二个步骤是定义损失(loss),损失也是一个函数 L = 1 N ∑ n e n L = \frac{1}{N} \sum_{n}^{} e_{n} L=N1∑nen
估测的值和实际的值之间的差距,有不同的计算方法,如:
- 平均绝对误差
- 均方误差
- 交叉熵
误差表面:
- 解一个最优化问题
梯度下降(gradient descent)是经常会使用优化的方法
我们可以想像说有一个人站在这个地方,他左右环视一下,算微分就是左右环视,它会知道左边比较高还是右边比较高,看哪边比较低,它就往比较低的地方跨出一步。
这一步的步伐的大小取决于两件事情:
- 这个地方的斜率
- 另外,学习率 (learning rate) η也会影响步伐大小。
为什么损失可以是负的?
不断地移w的位置,最后会停下来。往往有两种情况会停下来:
- 一开始就设定好要移动的次数
- 理想的情况,计算到微分值等于0的时候
优化过程:
把w跟b更新的方向结合起来就是一个向量,就是红色的箭头。
线性模型
输入的特征x 乘上一个权重,再加上一个偏置就得到预测的结果,这样的模型称为线性模型(linear model),如:y = b + w*x1。
上面的例子的模型是y = b + w*x1, 这个模型预测的值与真实值相比如下图所示:
:::warning
问题1:为什么蓝色的线几乎就是红色的线往右平移一天?
前一天观看人次乘以0.97,加上100 加上100,就是隔天的观看人次。机器几乎就是拿前一天的观看人次来预测隔天的观看人次。隔天的值和前一天的值差别不大,并且模型是一个线性模型。
:::
真实的数据规律:它是有周期性的,它每隔7 天就会有两天特别低(周五和周六),两天观看的人特别少,每隔7 天,就是一个循环。目前的模型只能考虑一天的,不符合实际的规律,所以修改模型。通常一个模型的修改,往往来自于对这个问题的理解,即领域知识。
- 模型2(考虑7天): y = b + ∑ j = 1 7 ω j x j y = b + \sum_{j=1}^{7} \omega _{j} x_{j} y=b+∑j=17ωjxj
- 模型3(考虑28天): y = b + ∑ j = 1 28 ω j x j y = b + \sum_{j=1}^{28} \omega _{j} x_{j} y=b+∑j=128ωjxj
- 模型4(考虑56天): y = b + ∑ j = 1 56 ω j x j y = b + \sum_{j=1}^{56} \omega _{j} x_{j} y=b+∑j=156ωjxj
模型结果:
分段线性曲线
线性模型的局限性:
线性模型只能表示出蓝色的直线,而无法表示出红色的线。
构建红色的曲线需要引入Hard Sigmoid 函数,红色的曲线可以看作是一个常数再加上一群Hard Sigmoid 函数。
分段曲线可以逼近任何连续曲线
Sigmoid 函数逼近Hard Sigmoid
用Sigmoid 函数来逼近Hard Sigmoid,把不同的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
使用Hard Sigmoid函数来合成红色
用梯度下降更新参数
将上面的三个式子展开为:
一开始要随机选一个初始数值
θ
0
\theta _{0}
θ0,接下来计算每一个未知的参数对L 的微分,得到向量g,即可以让损失变低的函数。
分批量进行梯度下降:
模型变形
训练数据与未看过的数据之间效果比较:
改进模型:
深度学习架构
过拟合
使用4次ReLU的结果:
但4 层在训练数据上,损失是100,在没有看过2021 年的数据上,损失是440。在训练数据上,3 层比4 层差,但是在没看过的数据上,4 层比较差,3 层比较好。在训练数据和测试数据上的结果是不一致的,这种情况称为过拟合(overfitting)。
机器学习/深度学习训练过程(三步骤)