Machine Learning
Looking for Function
机器学习就是让机器具备寻找一个函数的能力

Different types of Functions:
Regression(回归): 函数输出一个数值

Classification(分类): 函数从设定好的选项选择出正确的一个, 即分类


Structured Learning: 产生一些有结构的物件(让机器学会创造)
- create something with structure(image, document)
1 A Case Study
机器如何找到一个函数,以预测YouTube频道流量为例,分为三个步骤
Function with Unknown Parameters
写出带有未知参数的表达式:$y = b + wx_1$ (Model) (基于 domain knowledge 进行猜测)
$y$: 明日的观看人数
$x_1$: 今日的观看人数 (feature)
$w, b$: 未知参数 (weight, bias)
Define Loss from Training Data
Loss 也是一个函数 $L(b, w)$, 输入是 Model 里的参数
- 用来评价 $b, w$ 取值的好坏
- how good a set of values is
例如 $L(0.5k, 1)\quad y=0.5k+1x_1$
- 从训练集中已有的数据计算Loss
- 真实值为 label


此处使用 MAE 计算 $e$, 根据情况不同选择不同方法
最终计算出等高线图 Error Surface

Optimization
$w^{\ast}, b^{\ast} = arg \min\limits_{w, b}L $
- 找到能让损失函数值最小的参数
具体方法: Gradient Descent(梯度下降), 假设只有 $w$ 一个未知数
随机选取初始值 $w_0$
计算在 $w=w_0$ 的时候, $w$ 这个参数对 $L$ 的微分是多少, 即斜率
不断根据微分(梯度)的方向,改变参数的值, 斜率为负就增加 $w$, 反之减少
改变的大小取决于:
斜率的大小
学习率的大小**(超参数)**
- hyperparameters: 使用者自己决定的值
什么时候停下来?
- 自己设置上限(超参数)
- 理想情况:微分值为0(极小值点),不会再更新 -> 有可能陷入局部最小值,不能找到全局最小值
- 事实上:局部最小值不是真正的问题

推广到多个参数


2 Linear Model(线性模型)
根据周期性,修改模型 -> 考虑前7天,甚至更多天的值

2.1 Piecewise Linear Curve(分段线性曲线)
线性模型太过简单,有很多限制,称为 Model Bias,需要更复杂的模型
红色的曲线可以看作是 一个常数再加上一群 Hard Sigmoid 函数。Hard Sigmoid 函数的特性是当 x 轴的值小于某一个阈值且大于另外一个定值阈值的时候,中间有一个斜坡。
所有红色的线,即分段线性曲线(piecewise linear curve)可以看作是一个常数项加一大堆的蓝色函数(Hard Sigmoid)

即使 x 跟 y 的关系不是分段线性曲线,也可以在曲线上面,先取一些点,再把这些点连起来,变成一个分段线性曲线。如果点取的够多或点取的位置适当,分段线性曲线就可以逼近这一个连续的曲线

所以可以用分段线性曲线去逼近任何的连续的曲线,直接写 Hard Sigmoid 不是很容易,但是可以用 Sigmoid 函数来逼近 Hard Sigmoid,Sigmoid 函数的表达式为
$$
y=c\frac{1}{1+e^{-(b+wx_1)}}
$$
简写为
$$
y=\textcolor{red}{c}\ sigmoid(b+wx_1)
$$
当 x 趋近于无穷大,y 趋近于 c;x 趋近于无穷小,y 趋近于 0
