Regression
股票预测系统:input过去十年股票起伏资料,output股市明天的平均值
自动驾驶车辆:input sensor感受到的信息,output方向盘的角度
推荐系统:商品A的特性、商品B的特性,output购买可能性
具体案例:预测宝可梦的CP值
找一个f,input某一只宝可梦,output这只宝可梦进化后的CP值是多少(是一个scalar)
一种宝可梦用 x x x表示,则:
x c p x_{cp} xcp宝可梦进化前的CP值
x s x_{s} xs宝可梦的属于的物种
x h p x_{hp} xhp宝可梦的生命值
x w x_{w} xw宝可梦的重量
x h x_{h} xh宝可梦的高度
y y y进化后的CP值
假设 y = b + w ⋅ x c p y=b+w\cdot x_{cp} y=b+w⋅xcp , w w w和 b b b是参数可以是任意值,但从常理可以判断 w w w和 b b b不能同时为负值
这样模型称为线性模型
y = b + ∑ w i x i y=b+\sum w_{i} x_{i} y=b+∑wixi
其中
x i x_i xi:feature(特征值),输入的宝可梦的不同属性
w i w_i wi:weight(权重)
b b b:bias(偏移量)
收集trainning data
x i x^i xi:用上标来表示一个完整的object的编号
y ^ i \widehat{y}^{i} y i :代表function的输出,^ 所代表的是实际观察的真实值
图中十个蓝色的点代表十只宝可梦,x轴为进化前的CP值,y轴为进化后的CP值, ( x c p n , y ^ n ) \left(x_{c p}^{n}, \hat{y}^{n}\right) (xcpn,y^n)代表着第n只宝可梦进化前的CP值和进化后的CP值。
为了衡量function set中的某个function的好坏,定义了一个Loss function L,
L ( f ) = L ( w , b ) \mathrm{L}(f)=\mathrm{L}(w, b) L(f)=L(w,b)
Loss function实际上在衡量一组参数的好坏
如何衡量一个模型的好坏呢?用真正的数值减去预测的数值,然后平方,作为估测的误差(Estimation error),来衡量模型的好坏。
L ( f ) = L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 L(f)=L(w, b)=\sum_{n=1}^{10}\left(\widehat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)^{2} L(f)=L(w,b)=n=1∑10(y n−(b+w⋅xcpn))2
如果 L ( f ) L(f) L(f)越大,说明该function表现得越不好; L ( f ) L(f) L(f)越小,说明该function表现得越好
在该例子中我们用估测误差来表示Loss function,
L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 \mathrm{L}(w, b)=\sum_{n=1}^{10}\left(\hat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)^{2} L(w,b)=n=1∑10(y^n−(b+w⋅xcpn))2
在 L ( f ) L(f) L(f)的图像中,
一个点代表着一个模型对应的 w w w 和 b b b ,每个点都代表一个function,而该点的颜色对应着的 L ( f ) L(f) L(f)
越偏蓝色表示function越好,即 L ( f ) L(f) L(f)最低的一个function
这个function set里面,挑选一个最好的function,用公式表示就是
f ∗ = arg min f L ( f ) f^{*}=\arg \min _{f} L(f) f∗=argfminL(f)
或是
w ∗ , b ∗ = arg min w , b L ( w , b ) = arg min w , b ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 \begin{aligned} w^{*}, b^{*} &=\arg \min _{w, b} L(w, b) \\ &=\arg \min _{w, b} \sum_{n=1}^{10}\left(\hat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)^{2} \end{aligned} w∗,b∗=argw,bminL(w,b)=argw,bminn=1∑10(y^n−(b+w⋅xcpn))2
f ∗ f^{*} f∗或者 w ∗ , b ∗ w^{*}, b^{*} w∗,b∗就是使 L ( f ) L(f) L(f)最小的
我们使用gradient descent(梯度下降法)解决这个问题,gradient descent的厉害之处在于,只要 L ( f ) L(f) L(f)是可微分的,gradient descent都可以拿来处理这个 L ( f ) L(f) L(f),找到表现比较好的parameters
假设 L ( w ) L(w) L(w) 只有一个参数 w w w,找一个 w w w 使 L ( w ) L(w) L(w) 最小, w ∗ = arg min w L ( w ) w^{*}=\arg \min _{w} L(w) w∗=argminwL(w)
步骤如下:
随机选取一个 w 0 w^0 w0
计算 L L L 在 w = w 0 w=w^{0} w=w0 的位置的微分,即 d L d w ∣ w = w 0 \left.\frac{d L}{d w}\right|_{w=w^{0}} dwdL∣∣w=w0 ,意义就是切线斜率
根据斜率的大小来增加或者减小 w w w 的值
w w w 移动的step size取决于两点
计算移动后 w 1 w^1 w1 的微分值
重复步骤2、3、4,直到微分为0,找到local minima,此时可能图像中可能会出现比这个点更小的值为global minima
但在linear regression上,是没有local minima的
推广到两个参数: w ∗ , b ∗ = arg min w , b L ( w , b ) w^{*}, b^{*}=\arg \min\limits_{w, b}L(w, b) w∗,b∗=argw,bminL(w,b)
步骤如下:
随机选取两个初始值 w 0 w^0 w0 和 b 0 b^0 b0
计算在这两个点上的偏微分 ∂ L ∂ w ∣ w = w 0 , b = b 0 \left.\frac{\partial L}{\partial w}\right|_{w=w^{0}, b=b^{0}} ∂w∂L∣∣w=w0,b=b0 , ∂ L ∂ b ∣ w = w 0 , b = b 0 \left.\frac{\partial L}{\partial b}\right|_{w=w^{0}, b=b^{0}} ∂b∂L∣∣w=w0,b=b0
更新 w 0 w_0 w0 和 b 0 b_0 b0
w 1 ← w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 w^{1} \leftarrow w^{0}-\left.\eta \frac{\partial L}{\partial w}\right|_{w=w^{0}, b=b^{0}} w1←w0−η∂w∂L∣∣w=w0,b=b0 , b 1 ← b 0 − η ∂ L ∂ b ∣ w = w 0 , b = b 0 b^{1} \leftarrow b^{0}-\left.\eta \frac{\partial L}{\partial b}\right|_{w=w^{0}, b=b^{0}} b1←b0−η∂b∂L∣∣w=w0,b=b0
重复步骤2、3
这里的gradient就是梯度 ∇ L = [ ∂ L ∂ ψ ∂ L ∂ b ] gradient \nabla L=\left[\begin{array}{l}\frac{\partial L}{\partial \psi} \\ \frac{\partial L}{\partial b}\end{array}\right]_{\text {gradient }} ∇L=[∂ψ∂L∂b∂L]gradient
在 L ( w , b ) L(w, b) L(w,b) 图像中
在linear regression里,loss function实际上是convex的,是没有local optimal,随便找一个点,根据gradient descent最终找出来的,都会是同一组参数,就不会出现下图这种情况
L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 ∂ L ∂ w = ∑ n = 1 10 2 ( y ^ n − ( b + w ⋅ x c p n ) ) ( − x c p n ) ∂ L ∂ b = ∑ n = 1 10 2 ( y ^ n − ( b + w ⋅ x c p n ) ) ( − 1 ) \begin{gathered} L(w, b)=\sum_{n=1}^{10}\left(\widehat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)^{2} \\ \frac{\partial L}{\partial w}=\sum_{n=1}^{10} 2\left(\widehat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)\left(-x_{c p}^{n}\right) \\ \frac{\partial L}{\partial b}=\sum_{n=1}^{10} 2\left(\widehat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)(-1) \end{gathered} L(w,b)=n=1∑10(y n−(b+w⋅xcpn))2∂w∂L=n=1∑102(y n−(b+w⋅xcpn))(−xcpn)∂b∂L=n=1∑102(y n−(b+w⋅xcpn))(−1)
训练集的平均误差为31.9
测试集的平均误差为35.0
为了进一步优化,重新设计模型
如果我们令高次项的系数 w i w_i wi 为0,则可以将高次项转化为低次项,如图所示的高次式将低次式包含在内。因此可以解释随着次数的增加在训练集上的表现的Average Error是不断减小的
但是在testing data上,model从第三次开始,error非但不会减小,反而会暴增
复杂的model在training上有好的结果,而在testing的结果反而更差,这种情况被称为Overfitting过拟合。
当我们选出更多只的宝可梦时,发现CP值还受物种 x s x_s xs的影响
if x s = Pidgey : y = b 1 + w 1 ⋅ x c p if x s = Weedle : y = b 2 + w 2 ⋅ x c p if x s = Caterpie : y = b 3 + w 3 ⋅ x c p if x s = Eevee : y = b 4 + w 4 ⋅ x c p \begin{array}{ll} \text { if } x_{s}=\text { Pidgey }: & y=b_{1}+w_{1} \cdot x_{c p} \\ \text { if } x_{s}=\text { Weedle }: & y=b_{2}+w_{2} \cdot x_{c p} \\ \text { if } x_{s}=\text { Caterpie }: & y=b_{3}+w_{3} \cdot x_{c p} \\ \text { if } x_{s}=\text { Eevee }: & y=b_{4}+w_{4} \cdot x_{c p} \end{array} if xs= Pidgey : if xs= Weedle : if xs= Caterpie : if xs= Eevee :y=b1+w1⋅xcpy=b2+w2⋅xcpy=b3+w3⋅xcpy=b4+w4⋅xcp
改写成Linear model
分别得到了在training data和testing data上测试的结果:
但观察图中有点还是不能正好fit在直线上
将血量(HP)、重量(Weight)、高度(Height)也加入到模型中
if x s = Pidgey : y ′ = b 1 + w 1 ⋅ x c p + w 5 ⋅ ( x c p ) 2 if x s = Weedle : y ′ = b 2 + w 2 ⋅ x c p + w 6 ⋅ ( x c p ) 2 if x s = Pidgey : y ′ = b 3 + w 3 ⋅ x c p + w 7 ⋅ ( x c p ) 2 if x s = Eevee : y ′ = b 4 + w 4 ⋅ x c p + w 8 ⋅ ( x c p ) 2 \begin{array}{ll} \text { if } x_{s}=\text { Pidgey }: & y^{\prime}=b_{1}+w_{1} \cdot x_{c p}+w_{5} \cdot\left(x_{c p}\right)^{2} \\ \text { if } x_{s}=\text { Weedle }: & y^{\prime}=b_{2}+w_{2} \cdot x_{c p}+w_{6} \cdot\left(x_{c p}\right)^{2} \\ \text { if } x_{s}=\text { Pidgey }: & y^{\prime}=b_{3}+w_{3} \cdot x_{c p}+w_{7} \cdot\left(x_{c p}\right)^{2} \\ \text { if } x_{s}=\text { Eevee }: & y^{\prime}=b_{4}+w_{4} \cdot x_{c p}+w_{8} \cdot\left(x_{c p}\right)^{2} \end{array} if xs= Pidgey : if xs= Weedle : if xs= Pidgey : if xs= Eevee :y′=b1+w1⋅xcp+w5⋅(xcp)2y′=b2+w2⋅xcp+w6⋅(xcp)2y′=b3+w3⋅xcp+w7⋅(xcp)2y′=b4+w4⋅xcp+w8⋅(xcp)2
写成线性模型
y = y ′ + w 9 ⋅ x h p + w 10 ⋅ ( x h p ) 2 + w 11 ⋅ x h + w 12 ⋅ ( x h ) 2 + w 13 ⋅ x w + w 14 ⋅ ( x w ) 2 y=y^{\prime}+w_{9} \cdot x_{h p}+w_{10} \cdot\left(x_{h p}\right)^{2}+w_{11} \cdot x_{h}+w_{12} \cdot\left(x_{h}\right)^{2}+w_{13} \cdot x_{w}+w_{14} \cdot\left(x_{w}\right)^{2} y=y′+w9⋅xhp+w10⋅(xhp)2+w11⋅xh+w12⋅(xh)2+w13⋅xw+w14⋅(xw)2
结果发生了过拟合的现象
Regularization则是在原来的Loss function的基础上加上了一项 λ ∑ ( w i ) 2 \lambda \sum\left(w_{i}\right)^{2} λ∑(wi)2
我们期待参数 w i w_i wi 越小甚至接近于0的function
因为参数值接近0的function,是比较平滑(当今天的输入 x i x_i xi 有 Δ x i \Delta x_{i} Δxi变化的时候,如果 w i w_i wi 越小越接近于0,Output对输入的变化是比较不敏感的)
λ值越大代表考虑smooth的那个regularization那一项的影响力越大,我们找到的function就越平滑
不考虑b是因为b不会影响曲线的平滑