Datawhale X 李宏毅苹果书 AI夏令营
线性模型
线性分段曲线的机器学习过程
现实中的数据一般不会是呈递增或递减型的直线,大多数都是折线或者曲线,而对于这些而言,基础的线性模型:y = b + wx1 显然就有点不适用了,所以我们需要 线性分段曲线 即 分段函数 。
而对于这些分段函数,我们可以选用 sigmoid函数 :
来实现。 sigmoid函数 的个数由我们自己决定,数量越多,图像越接近曲线
sigmoid函数 的图像为:
对于 sigmoid 的不同的参数的作用:
1、写出带未知参数的函数
单特征
这样我们就可以由原来的 线性模型 得到 分段线性模型
即:
对于 分段线性模型 的每一段都是由 大量前置数据 所得到的规律,而得出每一段的 sigmoid函数 然后各段相加而得到最终的 预测模型
- 以上所述皆是 只考虑一个特征 的情况,即 只依据 今天的数据 对 明天的数据 进行预测 。但有时候这样的预测误差会比较大
- 所以为了减小误差,我们可以 考虑多个特征的情况 ,即 依据 前多天的数据 对 明天的数据 进行预测
多特征
依据 各特征 得出 多特征的sigmoid函数 ,下面以三个特征为例
由 线性模型 得出 每一段的线性模型
即:
wij 代表在第 i 个 Sigmoid 里面,乘给第 j 个特征的 权重
由此得出:
至此得出 各sigmoid函数的参数
然后便可以推出 多特征的分段线性模型函数 (如下图)
上式还可以写成 矩阵形式
-
各段sigmoid的参数:
- 一般形式为:
- 一般形式为:
-
sigmoid函数:
-
分段线性模型:
2、损失函数的定义
现在未知的参数( W, b, c T, b )很多了,再把它一个一个列出来太累了,所以直接用 θ 来统设所有的参数,所以损失函数就变成 L(θ)。
先给定 θ 的值,再把一种特征 x 代进去,得到估测出来的 y,再计算一下跟真实的标签之间的误差 e。把所有的误差通通加起来,就得到损失。
3、优化
方法如之前,使用 梯度下降法 来 寻找最优解 ,如下图:
但在实际使用梯度下降的时候,会把 N 个数据随机分成一组一组的 批量(batch) ,然后拿一个批量算出来的 L1,L2,L3 来计算梯度。
把所有的批量都看过一次,称为一个 回合(epoch) 。
模型变形
分段线性模型 除了能看成上述的 sigmoid函数 的合成外,我们还可以将其看成 修正线性单元(ReLU) 的加总。
因此表示一个 Hard Sigmoid 不是只有一种做法。在机器学习里面,Sigmoid 或 ReLU 称为激活函数 。当然还有其他常见的激活函数,但 Sigmoid 跟 ReLU 是最常见的激活函数,其中 ReLU 更好
修正线性单元(ReLU)
其对应的公式为:
max(0*, b* + wx1) 是指看 0 跟 b + wx1 谁比较大,比较大的会被当做输出
其图像为:
但需要注意:
- 2 个 ReLU 才能够合成一个 Hard Sigmoid ,而 sigmoid函数 则只需要一个便能合成 Hard Sigmoid
深度学习
Sigmoid 或 ReLU 称为神经元,很多的神经元称为 神经网络 人脑中就是有很多神经元,很多神经元串起来就是一个神经网络,跟人脑是一样的。人工智能就是在模拟人脑
将同样的事情再反复地多做几次(如:从 x 变成 a,就是把 x 乘上 w 加 b,再通过 Sigmoid函数 ),就形成一层一层的递深,每一层,称为 隐藏层 ,很多的隐藏层就 深 ,这套技术称为深度学习。