2021李宏毅机器学习之Regression

Piecewise Linear Curves

 Linear 的 Model,也许太过简单了,我们可以想像说 x1 跟 y,也许它中间有比较复杂的关係,对 Linear 的 Model 来说,x1 跟 y 的关係就是一条直线,随著 x1 越来越高,y 就应该越来越大,你可以设定不同的 w,改变这条线的斜率,你可以设定不同的 b,改变这一条蓝色的直线,跟 y 轴的交叉点,但是无论你怎麼改 w 跟 b,它永远都是一条直线,永远都是 x1 越大,y 就越大,前一天观看的人数越多,隔天的观看人数就越多.
在这里插入图片描述
 但也许现实并不是这个样子.

  • 也许在 x1 小於某一个数值的时候,前一天的观看人数跟隔天的观看人数是成正比,

  • 也许当 x1 大於一个数值的时候,这个物极必反,过了一个假设 x1 太大,前天观看的人数太高,那隔天观看人数就会变少,也说不定

  • 也许 x1 跟 y 中间,有一个比较复杂的,像这个红色线一样的关係
    但你不管怎麼摆弄w 跟 b,你永远製造不出红色那一条线,你永远无法用 Linear 的 Model,製造红色这一条线,显然 Linear 的 Model 有很大的限制,这一种来自於 Model 的限制,叫做 Model 的 Bias,那其实我们刚才在课堂一开始的时候也叫做,也说 b 叫做 Bias,那这个地方有一点,在用词上有一点 Ambiguous,所以特别强调说,这个东西叫做 Model 的 Bias,跟 b 的这个 Bias 不太一样,它指的意思是说,没有办法模拟真实的状况.
     所以我们需要写一个更复杂的,更有弹性的,有未知参数的 Function,
    在这里插入图片描述
     我们可以观察一下红色的这一条曲线,它可以看作是一个常数,再加上一群蓝色的这样子的 Function
    在这里插入图片描述
    ​ 这个蓝色的 Function,它的特性是

  • 当输入的值,当 x 轴的值小於某一个这个 Flash Hold 的时候,它是某一个定值,

  • 大於另外一个 Flash Hold 的时候,又是另外一个定值,

  • 中间有一个斜坡

 所以它是先水平的,然后再斜坡,然后再水平的,那它其实有名字,它的名字我们等一下再讲,这边我们因為它是蓝色的 Function,我们就先叫它蓝方吧 这样子,好 那所以呢 这个红色的线啊,它可以看作是一个常数项加一大堆的蓝方,好 那这个常数项,它的值应该要有多大呢,你就看这一条红色的线啊,它跟 x 轴的交点在哪裡,好 那这个常数项呢,就设跟 x 轴的交点一样大

那怎麼加上这个蓝色的 Function 以后,变成红色的这一条线?
在这里插入图片描述
蓝线“1”Function 斜坡的起点,设在红色 Function起始的地方,然后第二个,斜坡的终点设在第一个转角处,你刻意让这边这个蓝色 Function 的斜坡,跟这个红色 Function 的斜坡,它们的斜率是一样的,这个时候如果你把 0 加上 1,你就可以得到红色曲线

 然后接下来,再加第二个蓝色的 Function,你就看红色这个线,第二个转折点出现在哪裡, 所以第二个蓝色 Function,它的斜坡就在红色 Function 的第一个转折点,到第二个转折点之间,你刻意让这边的斜率跟这边的斜率一样,这个时候你把 0加 1+2,你就可以得到两个转折点这边的线段,就可以得到红色的这一条线这边的部分

 然后接下来第三个部分,第二个转折点之后的部分,你就加第三个蓝色的 Function,第三个蓝色的 Function,它这个坡度的起始点,故意设的跟这个转折点一样,这边的斜率,故意设的跟这边的斜率一样,好 接下来你把 0加 1+2+3 全部加起来,你就得到红色的这个线。

 所以红色这个线,可以看作是一个常数,再加上一堆蓝色的 Function
在这里插入图片描述
 你现在这个 Curves 啊,它是有很多线段所组成的,它是有很多锯齿状的线段所组成的,这个叫做 Piecewise Linear 的 Curves,那你会发现说这些 Piecewise Linear 的 Curves,你有办法用常数项,加一大堆的蓝色 Function 组合出来,只是他们用的蓝色 Function 不见得一样,你要有很多不一样的蓝色 Function,加上一个常数以后,你就可以组出这些 Piecewise Linear 的 Curves。那如果你今天 Piecewise Linear 的 Curves 越复杂,也就是这个转折的点越多啊,那你需要的这个蓝色的 Function 就越多.
在这里插入图片描述
 讲到这边有人可能会说,那也许我们今天要考虑的 x 跟 y 的关係不是 Piecewise Linear 的 Curves ,也许它是这样子的曲线,那就算是这样的曲线,也无所谓,我们可以在这样的曲线上面,先取一些点,再把这些点点起来,变成一个 Piecewise Linear 的 Curves,而这个 Piecewise Linear 的 Curves 跟原来的曲线,它会非常接近,如果你今天点取的够多,或你点取的位置适当的话,这个 Piecewise Linear 的 Curves,就可以逼近这一个,连续的这一个曲线,就可以逼近这一个不是 Piecewise Linear,它是有角度的 有弧度的这一条曲线。

 所以我们今天知道一件事情,你可以用 Piecewise Linear 的 Curves,去逼近任何的连续的曲线,而每一个 Piecewise Linear 的 Curves,又都可以用一大堆蓝色的 Function 组合起来,也就是说,我只要有足够的蓝色 Function 把它加起来,我也许就可以变成任何连续的曲线
 以今天,假设我们的 x 跟 y 的关係,它也许非常地复杂,那也没关係,我们就想办法写一个带有未知数的 Function,这个带有未知数的 Function 它表示的,就是一堆蓝色的 Function,加上一个 Constant,那我们接下来要问的问题就是,这一个蓝色 Function,它的式子应该要怎麼把它写出来呢?

在这里插入图片描述
 也许你要直接写出它 没有那麼容易,但是你可以用一条曲线来理解它,用一个 Sigmoid 的 Function,来逼近这一个蓝色的 Function,那 Sigmoid Function,它的式子长的是这个样子的:
y = c 1 1 + e − ( b + w x 1 ) y=c \frac{1}{1+e^{-(b+wx_1)}} y=c1+e(b+wx1)1
 它的横轴输入是 x1,输出是 y,输入的 x1,我们先乘上一个 w,再加上一个 b,再取一个负号,再取 Exponential,再加 1,这一串被放在分放在,放在分母的地方
 把 1 除以 1 加上 Exponential -b+wx1,前面 你可以乘上一个 Constant 叫做 c,好 那

  • 如果你今天输入的这个 x1 的值,趋近於无穷大的时候,那 e − ( b + w x 1 ) e^{-(b+wx_1)} e(b+wx1)这一项就会消失,那当 x1 非常大的时候,这一条这边就会收敛在这个高度是 c 的地方
  • 那如果今天 x1 负的非常大的时候,分母的地方就会非常大,那 y 的值就会趋近於 0.

 所以你可以用这样子的一个 Function逼近这一个蓝色的 Function,那这个东西它的名字叫做 Sigmoid,Sigmoid,如果你要 硬要翻成中文的话,可以翻成 S 型的,所以 Sigmoid Function 就是 S 型的 Function,因為它长得是 有点像是 S 型的哦,所以叫它 Sigmoid Function,那这边我们之后都懒得把 Exponential 写出来,我们就直接写成这个样子:
y = c ∗ s i g m o i d ( b + w x 1 ) y=c*sigmoid(b+wx_1 ) y=csigmoid(b+wx1)
 就是 y 等於 c 倍的 Sigmoid,然后这个括号裡面放 b + w x 1 b+wx_1 b+wx1,然后这个 b + w x 1 b+wx_1 b+wx1,实际上做的事情,就是把它放在 Exponential 的指数下,前面加一个负号,然后 1+Exponential 的 − ( b + w x 1 ) -(b+wx_1) (b+wx1) 放在分母的地方,然后前面乘上 c,就等於 y
在这里插入图片描述
 所以我们可以用这个 Sigmoid Function,去逼近一个蓝色的 Function,那其实这个蓝色的 Function,比较常见的名字就叫做,Hard 的 Sigmoid 啦,只是我本来是想说一开始,我们是先介绍蓝色的 Function,才介绍 Sigmoid,所以一开始说它叫做 Hard Sigmoid,有一点奇怪,所以我们先告诉你说,有一个 Sigmoid Function,它可以逼近这个蓝色的 Function,那这个蓝色的 Function,其实通常就叫做 Hard 的 Sigmoid.

 那我们今天我们需要各式各样不同的,蓝色的 Function,还记得吗,我们要组出各种不同的曲线,那我们就需要各式各样合适的蓝色的 Function,而这个合适的蓝色的 Function 怎麼製造出来呢
在这里插入图片描述
y = c 1 1 + e − ( b + w x 1 ) y=c \frac{1}{1+e^{-(b+wx_1)}} y=c1+e(b+wx1)1
 我们就需要调整这裡的 b 跟 w 跟 c,你就可以製造各种不同形状的 Sigmoid Function,用各种不同形状的 Sigmoid Function,去逼近这个蓝色的 Function.

  • 如果你今天改 w w w 你就会改变斜率你就会改变斜坡的坡度
  • 如果你动了 b b b你就可以把这一个 Sigmoid Function 左右移动
  • 如果你改 c c c 你就可以改变它的高度

 所以你只要有不同的 w 不同的 b 不同的 c,你就可以製造出不同的 Sigmoid Function,把不同的 Sigmoid Function 叠起来以后,你就可以去逼近各种不同的,Piecewise Linear 的 Function,然后 Piecewise Linear 的 Function,可以拿来近似各种不同的 Continuous 的 Function
在这里插入图片描述
 所以假设我们要把红色的这条线,它的函数写出来的话,那可能长什麼样子呢?
 我们知道说红色这条线 就是 0加 1+2+3,而这个 123 啊,它们都是蓝色的 Function,所以它们的函式 就是有一个固定的样子,它们都写做 ( b + w x 1 ) (b+wx_1 ) (b+wx1),去做 Sigmoid 再乘上 c1,只是 1 跟 2 跟 3,它们的 w 不一样,它们的 b 不一样,它们的 c 不一样,如果是第一个蓝色 Function,它就是 w1 b1 c1,第二个蓝色 Function,我们就说它的,它用的是 w2 b2 c2,第三个蓝色 Function,我们就说它用的是 w3 b3 c3,好 那我们接下来呢,就是把 0 跟 123 全部加起来以后,我们得到的函式,就长这一个样子
y = b + ∑ i c i s i g m o i d ( b i + w i x 1 ) y = b + \sum_i {c_isigmoid(b_i+w_ix_1 )} y=b+icisigmoid(bi+wix1)
 我们把 1+2+3 加起来,然后 Summation 裡面呢,就是 ci 乘上 Sigmoid,bi+wi 乘上 x1,所以这边每一个式子,都代表了一个不同蓝色的 Function,Summation 的意思,就是把不同的蓝色的 Function 给它加起来,就是这边 Summation 的意思.
 以我们今天就写出了一个这样子的 Function,如果我们假设裡面的 b 跟 w 跟 c,它是未知的,它是我们未知的参数,那我们就可以设定不同的 b 跟 w 跟 c,设定不同的 b 跟 w 跟 c,我们就可以製造不同的蓝色的 Function,製造不同的蓝色的 Function 叠起来以后,就可以製造出不同的红色的 Curves,製造出不同的红色的 Curves,就可以製造出不同的 Piecewise Linear 的 Curves,就可以去逼近,各式各样不同的 Continuous 的 Function
在这里插入图片描述
 所以我们其实有办法写出一个,这个非常有弹性的,有未知参数的 Function,它长这个样子就是 Summation 一堆 Sigmoid,但它们有不同的 c 不同的 b 不同的 w,好 那所以本来我们是 Linear 的 Model,y 等於 b+w 乘上 x1,它有非常大的限制,这个限制叫做 Model 的 Bias,那我们要如何减少 Model 的 Bias 呢?
 我们可以写一个更有弹性的,有未知参数的 Function,它叫做 y = b + ∑ i c i s i g m o i d ( b i + w i x 1 ) y=b + \sum_i {c_isigmoid(b_i+w_ix_1 )} y=b+icisigmoid(bi+wix1) 本来这边是 b + w x 1 b+wx_1 b+wx1,这边变成 b i + w i x 1 b_i+w_ix_1 bi+wix1,然后我们有很多不同的 bi,有很多不同的 wi,它们都通过 Sigmoid 都乘上 ci,把它统统加起来再加 b 等於 y,我们只要带入不同的 c 不同的 b 不同的 w,我们就可以变出各式各样,就可以组合出各式各样不同的 Function
在这里插入图片描述
 那我们刚才其实已经进化到,不是只用一个 Feature,即 X 1 X_1 X1,我们可以用多个 Feature我们这边用 j 来代表 Feature 的编号
 举例来说刚才如果要考虑前 28 天的话,j 就是 1 到 28,考虑前 56 天的话,j 就是 1 到 56,那如果把这个 Function,再扩展成我们刚才讲的上面这个,比较有弹性的 Function 的话那也很简单,我们就把 Sigmoid 裡面的东西换掉,本来这边是
y = b + ∑ j w i x j y=b+\sum_j{w_ix_j} y=b+jwixj
 那这边呢,就把这一项放到这个括号裡面,改成
y = b + ∑ i c i s i g m o i d ( b i + ∑ j w i j x j ) y = b + \sum_i {c_isigmoid(b_i+\sum_j w_i{_j} x_j )} y=b+icisigmoid(bi+jwijxj)
 把本来放在这边的东西放到 Sigmoid 裡面,然后呢这个每一个 Sigmoid 的 Function 裡面呢,都有不同的 bi 不同的 w i j w_i{_j} wij,然后取 Sigmoid 以后乘上 ci 就全部加起来,再加上 b 就得到 y,我们只要这边 ci bi 跟 w i j w_i{_j} wij 在放不同的值,就可以变成不同的 Function.

 那如果讲到这边你还是觉得有点抽象的话,如果你看这个式子觉得有点头痛的话,那我们用比较直观的方式,把这个式子实际上做的事把它画出来,我们先考虑一下 j 就是 1 2 3 的状况,就是我们只考虑三个 Feature,举例来说 我们只考虑前一天 前两天,跟前三天的 Case.

  • 所以 j 等於 1 2 3,那所以输入就是 x1 代表前一天的观看人数,x2 两天前观看人数,x3 三天前的观看人数
  • 每一个 i 就代表了一个蓝色的 Function,只是我们现在每一个蓝色的 Function,都用一个 Sigmoid Function 来比近似它
     那这边呢,这个 1 2 3 就代表我们有三个 Sigmoid Function,那我们先来看一下,这个括号裡面做的事情是什麼
    在这里插入图片描述
     每一个 Sigmoid 都有一个括号,第一个 Sigmoid i 等於 1 的 Case ,就是把
  • x1 乘上一个 Weight 叫 w 11 w_{11} w11
  • x2 乘上另外一个 Weight 叫 w 12 w_{12} w12
  • x3 再乘上一个 Weight 叫做 w 13 w_{13} w13
  • 全部把它加起来,不要忘了再加一个 b
    b 1 + w 11 x 1 + w 12 x 2 + w 13 x 3 b_1+w_{11} x_1+w_{12} x_2+w_{13} x_3 b1+w11x1+w12x2+w13x3
     这个得到的式子就是这个样子,所以这边我们 w i j w_{ij} wij ,来代表在第 i 个 Sigmoid 裡面,乘给第 j 个 Feature 的 Weight,第一个 Feature 它就是 w11,第二个 Features 就是乘 w12,第三个 Feature 都是乘 w13,所以三个 Features1 2 3,这个 w 的第二个下标就是 123,w 的第一个下标代表是,现在在考虑的是第一个 Sigmoid Function,那我们有三个 Sigmoid Function,
    在这里插入图片描述

 第二个 Sigmoid Function,它在括号裡面做的事情就是把 x1 乘上 w21,把 x2 x2 乘上 w22,把 x3 x3 乘上 w23,统统加起来再加 b2

​ 第三个 Sigmoid 呢,第三个 Sigmoid 在括号裡面做的事情,就是把 x1 x2 x3,分别乘上 w31 w32 跟 w33 再加上 b3

 我们现在為了简化起见,我们把括弧裡面的数字,用一个比较简单的符号来表示,所以这一串东西我们当作 r1,这一串东西我们当作 r2,这一串东西我们叫它 r3.
在这里插入图片描述
 写成矩阵的形式:
在这里插入图片描述
 如果你熟悉线性代数的话,简化成矩阵跟向量的相乘,把 x1 x2 x3 拼在一起变成一个向量,把这边所有的 w 统统放在一起变成一个矩阵,把 b1 b2 b3 拼起来变成一个向量,把 r1 r2 r3 拼起来变成一个向量,那这是三个式子,你就可以简写成,有一个向量叫做 x,这个 x 乘 1个矩阵叫做 w,这个 w 裡面有 9 个数值就是这边的 9 个 w,就是这边的 9 个 Weight,x 先乘上 w 以后再加上 b 就得到 r 这个向量,那这边做的事情跟上边做的事情是一模一样的,没有半毛钱的不同,只是表示的方式不一样而已,
在这里插入图片描述
 那把它改成线性代数比较常用的表示方式,x 乘上矩阵 w 再加上向量 b,会得到一个向量叫做 r
在这里插入图片描述
 在这个括号裡面做的事情就是这麼一回事,把 x 乘上 w 加上 b 等於 r,r 呢就是这边的 r1 r2 r3,这是 r1 r2 r3,好 那接下来这个 r1 r2 r3 哪,就要分别通过 Sigmoid Function,好 分别通过 Sigmoid Function,因為我们实际上做的值就是,做的事情就是把 r1 取一个负号,再乘 再做 Exponential 再加 1,然后把它放到分母的地方,1 除以 1+Exponential 负 r1 等於 a1,然后同样的方法由 r2 去得到 a2,把 r3 透过 Sigmoid Function 得到 a3,所以这边这个蓝色的虚线框框裡面做的事情,就是从 x1 x2 x3 得到了 a1 a2 a3,
在这里插入图片描述
 接下来呢,我们这边呢有一个简洁的表示方法,是我们用 r 通过一个,叫做这个 Sigmoid 的 Function,我们用这个东西,我们这边呢用这个符号呢,来代表通过这个 Sigmoid 的 Function,然后呢 所以我们得到了 a 这个向量,就把 r1 r2 r3 分别通过 Sigmoid Function,但我们直接用这个符号来表示它,然后得到 a1 a2 a3
在这里插入图片描述
 接下来我们这个 Sigmoid 的输出,还要乘上 ci 然后还要再加上 b,如果你要用向量来表示的话,a1 a2 a3 拼起来叫这个向量 a,c1 c2 c3 拼起来叫一个向量 c,那我们可以把这个 c 呢,作 Transpose,好 那 a 呢 乘上 c 的 Transpose 再加上 b,好再加上 b 我们就得到了 y
在这里插入图片描述
 它整体而言做的事情就是 x 输入是 x,我们的 Feature 是 x 这个向量,x 乘上矩阵 w 加上向量 b 得到向量 r,再把向量 r 透过 Sigmoid Function得 到向量 a,再把向量 a 跟乘上 c 的 Transpose 加上 b 就得到 y。
 所以这是上面这件事情,如果你想要用线性代数的方法来表示它,用向量矩阵相乘方法来表示它,欸 就长得一副这个样子,那这边的这个 r 就是这边的 r,这边的 a 就这边的 a,所以我们可以把这一串东西,放到这个括号裡面,再把这个 a 呢 放到这裡来,所以把相同的东西併起来以后,整体而言就是长这个样子,上面这一串东西,我们觉得比较这个,比较有弹性的这个 Function,如果你要线性代数来表示它的话,就是下面这个式子啦
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值