3.28-预测本频道观看课程(上/下)

机器学习的两个功能:回归regression和分类classification。回归带有预测性质。

机器学习三个步骤

1.定义输入输出,function,这个由输入X得出输出Y的函数式里面,比如是简单的y=wx+b,那么w就叫权重,b就叫bias偏差值。

2.如何衡量w,b这两个未知数取值的好坏,会定义一个loss指标,loss一定是真实的y值与预测出来的y'之间的差值,可以是绝对差值|y-y'|,他叫MAE(mean ac error),也可以是(y-y')²,叫做MSE(mean square error),或者是其他形式定义出来的loss。

3.optimization优化,寻找最小的loss值,及其对应的w,b。

——那么如何用loss值的大小来判断选择出最好的w,b,就有一种方法叫Gradient descent梯度下降法,原理就是:比如先不管b值,画出loss关于不同w值的曲线,那么任务就是得到最小loss时的w值,就随机选取一个w0,然后计算出这一点的斜率,然后向某个方向移动一点距离,这个距离就是微分与学习率的成绩,学习率是一个超参数,是由人定义的。

——这个移动有两种停止方式:一是人为设置次数,达到次数就停止。二是当斜率为零,那么乘积也为零,就不会再移动了。但是由于极值和最值的关系,找到的不一定是最优解。

——如果是w,b同时计算,那么就是分别为横竖轴,然后内容是loss的等高线图,任选一点做起始,同时计算w,b方向的斜率和微分,然后就可以确定具体的移动方向,

——还可以加入一些domain knowledge领域知识,比如参数和什么有关。

——以上问题是回归方面的,linear问题。


上面的例子是一个简单的线性回归问题,简单到只有一组(w,b),但是实际中的曲线肯定不会这么简单,那么这里就有一种A/D的分解的思想。首先模拟信号只要取样的点足够多,那么就可以用数字信号来代替。曲线分段分的足够多,就可以用一系列的直线段代替,那么一条复杂的曲线就可以写成常数+一系列(w,b)表示的直线段。在这里,这个直线段为了能够融洽的相加而不跳数值,他必须是这样的,所以用sigmoid function来代替它。(很有趣,又用曲线来代替直线了)S系函数长得像S,它在x正无穷时等于C,负无穷时等于0.那么这个折线就叫做hard sigmoid

下图是sigmoid函数的各个参数的性质,w是权重,改变陡度。b是bias,偏差,改变位置。C是x在正无穷时候的值,所以决定了高度。


有了sigmoid函数,就可以把上面的三个步骤难度升级。

1.这时候的式子就非常复杂了,不局限于直线,可以是任意加入了领域知识的曲线,这里的领域知识相当于给了一组(w,b)给X,让(b+wx)是一个整体,甚至这里的W是矩阵。把sigmoid这个过程写作σ(也都做sigmo),然后还有初始bias的b,和决定σ高度的C,这里的C由于对应多个σ,所以也是数组/矩阵。那么式子就长这样。从y=wx+b升级了。

2.为了让loss更好与上述那些unknown的参数挂钩,把那些参数排成一竖条叫做θ,θ是一个矩阵,包含了所有的未知参数。那么即L(θ)

就是loss的函数式。然后把每一个x带进去算出来的y'与y的差值e加起来,就是L。(这里loss也升级难度了,不再是一个x对应的偏差值,而是所有的x代一遍之后偏差值的总和,假设x有N个)

3.那么由于未知参数的增加,从(w,b)变成了一组θ向量,有多少个参数,就是几维向量。梯度下降的复杂度也增加了,但还是先去一组θ0,然后计算g。n是学习率。但是在实际操作中就几乎不可能找到g为零的时候了,一般是因为到了设置的更新次数后停下来的。

实际操作中,也不会每次都用所有的N个x来计算下一个L和θ1,如图,会把N随机分为几个batch,完全随机,不是按顺序的,但是是等长的,这个长度叫做batch size,是人规定的大小。然后用某个batch中的B个x来算L,然后L直接决定了g,所以每一次的移动都将不再是基于同一组x,而是有当前的batch决定。然后把所有的batch都看过一次就叫做1 epoch,每次更新θ叫做1update。


之前被sigmoid代替掉的折线hard sigmoid其实也不是非得被代替,也有数学表达式可以表达,可以看作两个rectified linear的相加,这个rectified linear叫修正线性,就是一个折线,写作max(0,b+wx)取值只有两种选择,0和b+wx之中取max,也就是当b+wx小于0时它为0 ,当b+wx>0时他就是b+wx。

如图当两个rectified linear叠加之后就是一个hard sigmoid,他被叫做ReLU。这里的sigmoid和max在机器学习中被叫做activation function激活函数


前面提到的升级版的第一步,利用领域知识,给x加了一组(w,b),这其实就是一层(1 layer),它得到的结果其实还可以再次走一遍(w,b),或者说加第二个领域知识,这就是2layer了,这个也是人来规定的。如图,第一层的结果是a,如果让a再来一次(w,b),就是两层,得到的是a'。

并且这里的曲线/折现就叫做Neuron神经,整个两层就叫做,Neuron Network。这个是旧的叫法,新的叫法其实就叫hidden layer,很多个层一起,就叫Deep Learning。

     


下面是同样数据的简易版本和升级版本的真实与预测结果对比图,可以明显看到少了延迟,最底点的地方也差不多都吻合了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值