Liner Model 太过简单,不能拟合复杂的关系
可能出现如下情况:
如何写更复杂的有未知参数的函数?
红色function 可以看作 一个常数 + 一群蓝色的function
曲线也可以通过取适当的点然后把这些点连接起来形成一个 Piecewise Liner(分段) 的 Curves,所以可以通过足够多的 蓝色的 function 加起来形成任何的曲线。
通过 sigmoid function 来逼近 蓝色的 function
sigmoid Function:S 形的 function
当 为正时, 趋近于 ∞ 时,sigmoid 趋近于 , 为负时,…,sigmoid 趋近于 。
通过调整 、 和
所以 0、1、2、3 这 4 条蓝色的 function 都可以用 来表示,只是对应的 、 和 不同,所以红色的 function
所以可以通过 调整 、 和
有弹性的有未知参数 function
从 线性的
推广到 分段 曲线 function
这里只有
而 在上一个 blog 最后 推广到可能具有周期性,所以可以通过 多个 feature 来改造函数,然后再对具有多个 feature 的函数进行推广,就有
推广为
相当于从多个 feature 与 有一个线性关系推广为多个 feature 与
代表多个 ,而
表示 再 第 个 sigmoid 里面乘 给 第 个 feature 的
可以用以下向量与矩阵关系表示这个乘法关系
所以
所以用线性代数表示为:
将未知参数 、、、展开成 这样就完成了 ML 的第一步
Loss 还是同样的方法,带入一组 然后求得 并且求与 的差值,来判断这组
第三步 Optimization 的方法也没有变化
对所有的 求 微分,然后得到一个向量
在实际的程序中,需要把大 data 随机分成多个 batch,然后对每一个 batch 进行计算 ,更新 (一个 epoch),每一次更新参数(一个batch)叫做一次 update
batchsize 也是 hyperparameter
通过 Relu 来逼近 蓝色的 function
需要先用 Relu 拟合 Hard sigmoid
sigmoid 与 Relu 统称为 activation function
我们可以重复多次 进行如下扩展:
多个 layer