根据现实情况,Linear Models 是要进化的
进化的原因
假设Linear Model 为 y = b + wx (就是一条线性直线)
不管怎么改变参数w or参数b, 都是线性直线,即随着x的不断增加,y也会呈线性形式变化
以天数x与观看视频人数y来说明的话,随着天数的增肌,视频观看人数y也呈线性形成改变
但是,现实情况并不是这样的,如下图:红色线是真实的数据变化
但对于Linear Model 来说,你不管怎么改变参数b and w,都无法构成红色线结构
所以说,Linear Models是有限制的,而这种限制情况的专业名词:Model Bias (与model 里的b不是一个含义)
那怎样才能构成与真实情况(红色线分布)一样的变化图呢?
我们要写一个更复杂的、更有弹性的有未知参数的Function(Model)
如何写呢?
观察红色曲线,会发现,红色曲线可由多个小部分组成,如下图:
而关于红色曲线也叫作Piecewise Linear Curves,他由constant + sum of a set of 组成
且如何表示呢?
可以用一个Sigmoid的Function 来 替代,近似表示 如下图:
而sigmoid Fuction 中的参数,对于图像的影响如下图:
开始进化,新model生成
将现实情况的曲线进行表示,如下图所示:
将抽象的New Model 具体化
首先,假设数据只有3个
j:1,2,3 表示第j个feature
i:1,2,3 表示第i个sigmoid(即表示那个蓝色曲线)
: 第一天
: 第二天
: 第三天
首先具体化model中的 如下图:
如果用线性代数表示的话,如下图:(注:图中只是表示方式不同,其含义是相同的)
整个model的表示如下图:
介绍未知参数Function参数含义和表示形式
将所有的未知参数拉成并合并成一条向量,该向量中的元素来自于未知参数中的元素
所以用统称我们所有的未知参数 ---- 目的是为了表达方便
将New Model应用到机器学习step2 and step3
step2:计算Loss(
)
L = Loss()
是所有未知参数的统称,可以把
、
```当成Loss函数的自变量
step3:对New Model进行优化
、
···是L的自变量
···是L自变量某点的值
g是对所有未知参数(自变量)在某点微分数值的集合,也可以表示为
使用Batch思想进行学习
Batch思想应用
针对每个batch 训练出所对应的损失函数
然后使用这些来迭代进行损失函数L的优化
每次小优化就是一次update,经过多次update最终得到最优未知参数解
将所有的优化完成之后,算一个epoch
为什么用Batch思想呢?
首先,batch是个自定义参数,根据batch含量不同,一次epoch所进行的update也不同
我猜测,使用batch所优化的准确度更高,效率更高!
因为,如果batch是1,说明一次epoch就相当于用整个训练集优化一次得到
而使用batch时,一次epoch可以优化多次,一次epoch就能优化得到 i = N/batch
那么只有这一种激活函数sigmoid来构造红色曲线吗?
不是的!
激活函数有很多种,sigmoid只是其中的一种。
常用的激活函数有sigmoid、ReLU···
此处只讲该两种激活函数,他们直接有什么区别呢?(ReLU > sigmoid)
这两个函数之间的关系: ReLU可以表示Sigmoid
其中需要两个ReLU 表示一个Sigmoid
激活函数重复多次
激活函数重复多次,其Model训练结果更好,误差值越低
每个激活函数叫Neuron
多个激活函数构成Neuron Network
但Neuron Network 过时了,升级为新的名字:Deep Learning
相同的东西,不同的命名
为什么要进行深度呢?
使得模型Model预测的更准确,误差值更低。
Ps:但并不是hidden layer 越多越好,当出现了过拟合时,此时layers只会起到阻碍的作用,因此应选择layers之前的即可。