文章目录
前言
这篇文章是李宏毅老师《机器学习2021》第2期视频(链接在这里(需要翻墙))的学习笔记。
上期有一个错误,在机器学习第二步中,我说视频是2022年,其实是2021年的,不过应该并不影响理解。
正文
第2期视频,仍然使用预测观看人数这个案例,介绍了神经网络或深度学习的基础模式。
顺便感叹一下,李宏毅老师的教学是真的好,神经网络用了几年了,激活函数、神经元和感知机等概念倒是很熟,但是从这个角度理解神经网络还是头一次,有种豁然开朗拨云见日的感觉。
如果你已经对神经网络有基本的了解,却还懵懵懂懂为什么要这样做,为什么有效,这期视频会解答一部分疑惑。如为什么要引入激活函数等。
具体来说,这一期视频在上一期视频的基础上,对线性回归模型进行改造,引入更加复杂的神经网络模型,继续预测观看人数,从而介绍了神经网络的基本思想、流程和概念,并对深度学习和神经网络的关系做了说明。
这篇文章剩余部分结构如下:
- 定义新模型。使用sigmoid函数,拟合更加复杂的曲线。
- 定义损失函数。
- 优化参数。
- 其他模型及改进,介绍神经网络和深度学习。
定义新模型
如何拟合复杂曲线?
上一期视频我们用线性回归模型对频道观看人数做预测,虽然有一点效果,但线性回归模型对于复杂的真实世界来说,有些太过简单。真实的数据,不可能总是呈现出同一个方向的向上或向下,有时会出现一些曲折,如下图:
如上图所示,红色的曲线是一条有两个转折点的折线,且三段红色的线其斜率各不相同,有上有下。在这种情况下,仅凭单一的直线很难拟合出红色曲线,就像图中的三条蓝线都无法很好的拟合红色线。
为了能够更好的拟合红色曲线,我们需要一组更复杂的蓝色曲线,如下图所示。这一组蓝色曲线加上一个常数就可以拟合红色曲线。在下图中我们可以看到,有一条完全平行于x轴的蓝色平行线,这条线代表常数。
如上图,我们引入一种三段的蓝色曲线,来模拟红色曲线。上图中,蓝色曲线一开始是平行于x轴(且取值为0,因为已经有常数蓝色曲线了),到达第一个转折点(即红色线段的起点)时,蓝色线段以斜率 b b b上升,显然这个斜率和红色曲线第一段的斜率相同,即二者平行。可以很明显的看出,在这一段中,蓝色曲线加上已有的常数,就会与红色曲线的第一段重合。而过了红色曲线的第一段后,蓝色曲线保持峰值不变,与x轴平行。
到这里,第一条(不包括常数)蓝色曲线的任务就完成了,我们引入第二条蓝色曲线,如下图。在这张图中,我们引入了第二条蓝色曲线,同样的,这条蓝色曲线也是有两段平行线和一段斜线组成。不同的是,第二条蓝色曲线一开始平行,在红色曲线的第一个转折点处开始下降,且平行于第二段红色曲线。第二条蓝色曲线同样是从0开始下降,很明显,第二条曲线和第一条曲线以及常数相加,就会和红色曲线重合。
同样地,我们还可以引入第三条曲线,去拟合第三段红色曲线,最终的结果如下图:
由图中可以看出,0-3四条曲线(编号见图的右边)相加,就可以很好的拟合红色曲线。用这种方式,只要有足够多的蓝色折线,我们几乎可以拟合任何类型的数据,即使红色的曲线不是完全的折线段,而是某种有高有低的曲线,我们也可以近似的选取一些点将红色曲线段化曲为直,如下图:
sigmoid函数
直观的分析结束了,我们需要用数学的方式表达上述过程。蓝色折线通常被称作hard sigmoid,这种蓝色折线虽然很好,但是在实际使用中我们并不想用分段函数的方式来表示他。为了简化流程,我们使用sigmoid函数拟合他,sigmoid函数公式如下:
s i g m o i d ( b + w x 1 ) = 1 1 + e − ( b + w x 1 ) sigmoid(b+wx_1) = \frac{1}{1+e^{-(b+wx_1)}} sigmoid(b+wx1)=1+e−(b+wx1)1
很容易看出sigmoid函数的取值范围是0—1之间,因此还需要乘上常数 c c c,就可以近似表示蓝色折线,最终函数形式如下:
y = c s i g m o i d ( b + w x 1 ) y = c sigmoid(b+wx_1) y=csigmoid(b+wx1)
这个函数的图像如下,可以看出他很好的近似了蓝色折线。如果想要调整它的形状,只需要调节 c c c、 b b b和 w w w三个参数即可,也就是说他们三个就是未知参数。
本期模型
而今天我们的任务(预测观看人数),不管真实的观看数据是什么样的曲线,我们都可以用若干上述函数拟合逼近,因此本期视频的初步模型形式如下,可能需要解释一下的是后半部分,选用了若干sigmoid曲线的加总模拟数据。至于使用多少个sigmoid曲线,这是一个用户自己决定的超参数。
y = b + ∑ c i s i g m o i d ( b i + w i x 1 ) y=b+\sum{c_i}sigmoid(b_i+w_ix_1) y=