• 1.1-回归


    一、模型model

    • 一个函数function的集合:

      • 其中wi代表权重weight,b代表偏置值bias
      • 𝑥𝑖可以取不同的属性,如: 𝑥𝑐𝑝, 𝑥ℎ𝑝, 𝑥𝑤,𝑥

      𝑦 = 𝑏 + ∑ w i x i 𝑦=𝑏+∑w_ix_i y=b+wixi

    • 我们将𝑥𝑐𝑝拿出来作为未知量,来寻找一个最优的线性模型Linear model:
      y = b + w ∙ X c p   y = b + w ∙Xcp~ y=b+wXcp 

    二、较好的函数function

    • 损失函数Loss function 𝐿:

      • L的输入Input是一个函数 f ,输出output则是一个具体的数值,而这个数值是用来评估输入的函数 f 到底有多坏

      • y ^ n \widehat{y}^n y n代表真实值,而 f ( x c p n ) f(x^n_{cp}) f(xcpn)代表预测值, L ( f ) L(f) L(f)代表真实值与预测值之间的总误差
        L ( f ) = ∑ n = 1 10 ( y ^ n − f ( x c p n ) ) 2 L(f)=\sum_{n=1}^{10}(\widehat{y}^n-f(x^n_{cp}))^2 L(f)=n=110(y nf(xcpn))2

      • 将函数 f 用w,b替换,则可以写成下面这样
        L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 L(w,b)=\sum_{n=1}^{10}(\widehat{y}^n-(b+w \cdot x^n_{cp}))^2 L(w,b)=n=110(y n(b+wxcpn))2

      • 当 L 越小时,则说明该函数 f 越好,也就是该模型越好。在下图中的每一个点都代表一个函数 f

        image-20220802195837029

    三、最好的函数function

    • 梯度下降Gradient Descent:就是求最好函数的过程

    • $f^{} 代表最好的函数 f u n c t i o n , 代表最好的函数function, 代表最好的函数functionw{*},b{}:$代表最好的权重weight和偏置值bias

      f ∗ = a r g m i n f L ( f ) f^{*} =arg \underset{f}{min} L(f) f=argfminL(f)

      w ∗ , b ∗ = a r g m i n w , b L ( w , b ) w^{*},b^{*}=arg \underset{w,b}{min} L(w,b) w,b=argw,bminL(w,b)

      = a r g m i n w , b ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 =arg \underset{w,b}{min}\sum_{n=1}^{10}(\widehat{y}^n-(b+w \cdot x^n_{cp}))^2 =argw,bminn=110(y n(b+wxcpn))2

    3.1 一维函数

    下图代表Loss函数求梯度下降(Gradient Descent)的过程,首先随机选择一个 w 0 w^{0} w0。在该点对w求微分,如果为负数,那么我们增大 w 0 w^{0} w0的值;如果为正数,那么我们减小 w 0 w^{0} w0的值。

    • w ∗ = a r g m i n w L ( w ) w^{*}=arg\underset{w}{min}L(w) w=argwminL(w)
    • w 0 = − η d L d w ∣ w w^{0}=-\eta\frac{dL}{dw}|_{w} w0=ηdwdLw,其中 η 代表学习率:Learning rate,意味着每次移动的步长(step)
    • w 1 ← w 0 − η d L d w ∣ w = w 0 w^{1}\leftarrow w^{0}-\eta\frac{dL}{dw}|_{w=w^{0}} w1w0ηdwdLw=w0 w 1 w1 w1代表初始点 w 0 w^{0} w0要移动的下一个点,就这样一直迭代(Iteration)下去,最终就会找到我们的局部最优解:Local optimal solution

    image-20220802204819209image-20220803225229903image-20220803225255771

    3.2 二维函数

    • 对二维函数$Loss $ L ( w , b ) L(w,b) L(w,b)求梯度下降: [ ∂ L ∂ w ∂ L ∂ b ] g r a d i e n t
      [LwLb]" role="presentation" style="position: relative;">[LwLb]
      _{gradient}
      [wLbL]gradient
    • w ∗ , b ∗ = a r g m i n w , b L ( w , b ) w^{*},b^{*}=arg \underset{w,b}{min} L(w,b) w,b=argw,bminL(w,b)
    • 随机初始化 w 0 , b 0 w^{0},b^{0} w0,b0,然后计算 ∂ L ∂ w ∣ w = w 0 , b = b 0 \frac{\partial L}{\partial w}|_{w=w^{0},b=b^{0}} wLw=w0,b=b0 ∂ L ∂ b ∣ w = w 0 , b = b 0 \frac{\partial L}{\partial b}|_{w=w^{0},b=b^{0}} bLw=w0,b=b0
      • w 1 ← w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 w^{1}\leftarrow w^{0}-\eta\frac{\partial L}{\partial w}|_{w=w^{0},b=b^{0}} w1w0ηwLw=w0,b=b0
      • b 1 ← b 0 − η ∂ L ∂ b ∣ w = w 0 , b = b 0 b^{1}\leftarrow b^{0}-\eta\frac{\partial L}{\partial b}|_{w=w^{0},b=b^{0}} b1b0ηbLw=w0,b=b0
    image-20220803232007155

    3.3 局部最优解和全局最优解

    • 公式化(Formulation) ∂ L ∂ w \frac{\partial L}{\partial w} wL和$
      \frac{\partial L}{\partial b}$:

      • L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 L(w,b)=\sum_{n=1}^{10}(\widehat{y}^n-(b+w \cdot x^n_{cp}))^2 L(w,b)=n=110(y n(b+wxcpn))2
      • ∂ L ∂ w = 2 ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) ( − x c p n ) \frac{\partial L}{\partial w}=2\sum_{n=1}^{10}(\widehat{y}^n-(b+w \cdot x^n_{cp}))(-x^{n}_{cp}) wL=2n=110(y n(b+wxcpn))(xcpn)
      • ∂ L ∂ b = 2 ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) \frac{\partial L}{\partial b}=2\sum_{n=1}^{10}(\widehat{y}^n-(b+w \cdot x^n_{cp})) bL=2n=110(y n(b+wxcpn))
    • 在非线性系统中,可能会存在多个局部最优解:

      image-20220804074208523

    3.4 模型的泛化(Generalization)能力

    • 将根据loss函数找到的最好模型拿出来,分别计算它在训练集(Training Data)和测试集(Testing Data)上的均方误差(Average Error),当然我们只关心模型在测试集上的具体表现如何。

      • y = b + w ∙ x c p y = b + w ∙x_{cp} y=b+wxcp Average Error=35.0
    • 由于原来的模型均方误差还是比较大,为了做得更好,我们来提高模型的复杂度。比如,引入二次项(xcp)2

      • y = b + w 1 ∙ x c p + w 2 ∙ ( x c p ) 2 y = b + w1∙x_{cp} + w2∙(x_{cp)}2 y=b+w1xcp+w2(xcp)2 Average Error = 18.4
    • 继续提高模型的复杂度,引入三次项(xcp)3

      • y = b + w 1 ∙ x c p + w 2 ∙ ( x c p ) 2 + w 3 ∙ ( x c p ) 3 y = b + w1∙x_{cp} + w2∙(x_{cp})2+ w3∙(x_{cp})3 y=b+w1xcp+w2(xcp)2+w3(xcp)3 Average Error = 18.1
    • 继续提高模型的复杂度,引入三次项(xcp)4,此时模型在训练集上的均方误差变得更小了,但测试集上的反而变大了,这种现象被称为模型的过拟合(Over-fitting)

      • $y = b + w1∙x_{cp} + w2∙(x_{cp})2+ w3∙(x_{cp})3+ w4∙(x_{cp})4 $ Average Error = 28.8
    image-20220804085429768

    3.5 隐藏的因素(hidden factors)

    • 当我们不仅仅只考虑宝可梦的cp值,将宝可梦的物种因素也考虑进去的话,在测试集上的均方误差降低到了14.3

    image-20220804085728883image-20220804085825281

    • 当我们继续考虑其他的因素,比如每只宝可梦的身高Height,体重weight,经验值HP。模型此时变得更加复杂了,让我们来看看它在测试集上的具体表现如何,非常不幸模型再次出现过拟合。
    image-20220804090313298

    3.5 正则化(Regularization)

    • 为了解决过拟合的问题,我们需要重新设计一下损失函数 L,原来的损失函数只计算了方差,而没有考虑到含有干扰的输入对模型的影响。因此我们在 L 后面加上一项: λ ∑ ( w i ) 2 \lambda \sum (w_i)^2 λ(wi)2 ,以此来提高模型的泛化能力,使模型变得更加平滑,降低模型对输入的敏感(Sensitive)

      • 重新设计的损失函数 L : L ( f ) = ∑ n ( y ^ n − ( b + ∑ w i x i ) ) 2 + λ ∑ ( w i ) 2 L(f)=\underset{n}{\sum}(\widehat{y}^n-(b+\sum w_ix_i))^2+\lambda \sum (w_i)^2 L(f)=n(y n(b+wixi))2+λ(wi)2
    • 很显然根据下面的实验,我们取得了更好的表现, 当 λ = 100 时, T e s t E r r o r = 11.1 当\lambda=100时,Test Error = 11.1 λ=100时,TestError=11.1

    image-20220804093414880
  • 相关阅读:
    [python][flask] Flask 图片上传与下载例子(支持漂亮的拖拽上传)
    JavaScript中的短路表达式
    干货分享:超级浏览器使用感受
    初步了解nodejs语法和web模块
    设计模式学习(八):桥接模式
    Java编程之道:巧妙解决Excel公式迭代计算难题
    selenium上传文件时打开指定本地文件路径
    QT c++ 将浮点数数组转换成 QByteArray
    基于晶体结构算法优化概率神经网络PNN的分类预测 - 附代码
    javaScript排他tab页
  • 原文地址:https://blog.csdn.net/weixin_46227276/article/details/126163712