机器学习的本质就是寻找到一个合适的函数表达式(Function),主要类别如下:
Regression : 函式输出是一个标量。
Classification :给定一系列类别( classes ),函式输出一个正确的类别。
Structured Learning :产生有结构的图像或文件。
任务:根据一个频道过往所有的资讯,来预测网络频道流量
步骤:
→ \rightarrow → 模型 y = b + w x 1 y=b+wx_1 y=b+wx1
y y y是我们要预测的东西 → \rightarrow → 预测的流量
x 1 x_1 x1是这个频道前一天的总流量 → \rightarrow → 数值
b b b 和 w w w是未知的参数,透过资料去找出 → \rightarrow → 未知参数
猜测 → \rightarrow → 未来流量是前一天的流量乘以 w w w再加 b b b
猜测是基于对该问题的本质的了解,不一定是对的。 (基于 Domain knowledge)
名词定义:
Feature :函数中我们已知的信息,如上式 x 1 x_1 x1
Weight( w w w) :未知参数,和特征直接相乘
Bias( b b b):未知参数,直接加和
损失函数 L ( b , w ) L(b,w) L(b,w)的输入是模型内部的 参数,如这里是 w w w, b b b。
损失(Loss)越大,代表这一组参数越不好,反之则越好、越精准。
计算方法:根据 w , b w,b w,b的组合,来求估测值和实际值(label)之间的距离。
MAE (mean absolute error)平均绝对误差
MSE (mean square error)均方误差
Cross-entropy 交叉熵
应用于 y , y ^ y,\hat{y} y,y^是概率分布的情况。
名词定义:
Error Surface:用不同的参数输入,计算损失(Loss),画出等高线图。
求解最优化问题:找到能让损失函数的值最小的参数。
w ∗ , b ∗ = arg min w , b L w^*,b^*=\arg\min_{w,b}L w∗,b∗=argminw,bL
模型 y = b + w x 1 y=b+wx_1 y=b+wx1的预测结果总结:
在训练集上预测性能好,在未知数据集上预测性能差,泛化能力差。
观察真实数据后发现,原有模型忽略了数据本身的周期性性质,需要调整原有模型。
调整后的模型 y = b + Σ j = 1 7 的倍数 w j x j y=b+\Sigma_{j=1}^{7的倍数}w_jx_j y=b+Σj=17的倍数wjxj,我们称之为线性模型(Linear model)见03.线性模型。
如果蓝色虚线斜率<0(Negative),左高右低,则我们应增加 w w w的值,使得Loss的值变小。
如果蓝色虚线斜率>0(Positive),左低右高,则我们应减小 w w w的值,使得Loss的值变小。
总结:向比较低的地方移动。
根据微分(梯度)的方向,改变参数的值
改变时的步长大小取决于:
a. 斜率的大小
b. 学习率 η \eta η 的大小(超参数)
名词定义:
Hyperparameter(超参数) :机器学习中需要自己设定的东西。
重复2,3步,不断更新 w w w
停止的条件
a. 自己设置上限(超参数)
b. 理想情况:微分值是0,极小值点,参数不会再更新 → \rightarrow → 有可能陷入局部最小值
事实上:局部最小值不是真正的问题/痛点!
缺陷:
根据周期性修改模型 → \rightarrow → 考虑 前7天或更多星期的数据
缺陷:一个模型无法模拟真实的情况,有局限性。Model Bias
解决方法:提出一个更复杂、更有弹性、有未知参数的函数表达式。
模型定义
由多段锯齿状的线段所组成的线 → \rightarrow → 看作一个常数,再加一堆蓝色的函数 ( Hard Sigmoid )
我们用一条曲线来近似描述这条蓝色曲线:Sigmoid函数(S型的function)。
sigmoid的个数就是神经网络中的一层的neuron节点数(使用几个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
调整 w , b , c w,b,c w,b,c,可以得到不同的sigmoid函数来逼近蓝色曲线,通过求和,最终近似不同的连续函数(Continuous Function)。
总结
- 可以用 Piecewise Linear 的 Curves,去 逼近任何的连续的曲线
- 每一个 Piecewise Linear 的 Curves,都可以用 一大堆蓝色的 Function加上一个常量组合 起来得到
- 只要有 足够的蓝色 Function 把它加起来,就可以变成任何连续的曲线
- 利用若干个具有不同 w , b , c w,b,c w,b,c的Sigmoid函数与一个常数参数的组合,可以模拟任何一个连续的曲线(非线性函数)
拓展到多个特征:
y = b + ∑ i c i sigmoid ( b i + ∑ j ( w i j x j ) ) y=b+\sum_i c_i \text{sigmoid}(b_i+\sum_j(w_{ij}x_j)) y=b+∑icisigmoid(bi+∑j(wijxj))
写出损失函数
优化
梯度下降
每次更新参数时,只使用 1个batch 里的数据计算Loss,求取梯度,更新参数
名词解释:
Update :每次更新一次参数叫做一次 Update,
Epoch :把所有的 Batch 都看过一遍,叫做一个 Epoch
ReLU(Rectified Linear Unit,线性整流单元)
多加几层 => 做几次 => 超参数