目录
Part1 基本概念
在机器学习中,形如、、这样的模型都称为线性模型,这些模型都是把输入的特征 x 乘上一个权重,再加上一个偏置就得到预测的结果。
一般线性模型局限性
对于线性模型,x1 跟 y 的关系就是一条直线,随着 x1 越来越高,y 就应该越来越大。设定不同的 w可以改变这条线的斜率,设定不同的 b 可以改变这一条蓝色的直线跟 y 轴的交叉点。但是无论如何改 w 跟 b,它永远都是一条直线,永远都是 x1 越大,y 就越大,前一天观看的次数越多,隔天的观看次数就越多。但现实中也许在 x1 小于某一个数值的时候,前一天的观看次数跟隔天的观看次数是成正比;也许当 x1 大于一个数值的时候,x1 太大,前天观看的次数太高,隔天观看次数就会变少;也许 x1 跟 y 中间,有一个比较复杂的、像红色线一样的关系。但不管如何设置 w 跟 b,永远制造不出红色线,永远无法用线性模型制造红色线。这一限制被称为模型偏差
Hard Sigmoid 函数
Hard Sigmoid 函数的特性是当输入的值,当 x 轴的值小于某一个阈值(某个定值)的时候,大于另外一个定值阈值的时候,中间有一个斜坡。所以它是先水平的,再斜坡,再水平的。
sigmoid函数
因为Hard Sigmoid 函数是分段函数,所以直接写出其表达式有些复杂,所以使用sigmoid函数进行逼近
为了简洁,去掉了指数的部分,蓝色函数的表达式为y = cσ(b + wx1)
调整这里的 b、w 和 c 可以制造各种不同形状的 Sigmoid 函数:如果改 w,就会改变斜率,就会改变斜坡的坡度。如果改了 b,就可以把这一个 Sigmoid 函数左右移动;如果改 c,就可以改变它的高度。所以只要有不同的 w 不同的 b 不同的 c,就可以制造出不同的 Sigmoid 函数,把不同的Sigmoid 函数叠起来以后就可以去逼近各种不同的分段线性函数;分段线性函数可以拿来近似各种不同的连续的函数。
ReLU函数
c ∗ max(0, b + wx1)
ReLU或sigmoid函数都被称为激活函数
分段线性模型
上述例子中的红色曲线可以看成一个常数再加上一群 Hard Sigmoid 函数。
寻找过程在书中与视频中有详细讲解,这里不再赘述
即便是像上图一样的曲线,也可以通过先找点将其划分为分段线性曲线,再用sigmoid函数进行拟合,拟合的精度与找的点的数量有关,并且分段数越多,所需的sigmoid函数也越多
Part2 使用上述更灵活的模型进行机器学习
step1 确定模型
为方便起见,取下述例子
注意sigmoid函数个数也是超参数
r就是sigmoid函数括号中Σ展开后的结果,将其用矩阵方式表示如上图所示
step2 计算损失
这里的损失除了自变量由b、w变为θ(本质上相同),其他的与之前提到的一致,不再赘述
step3 最优化
未知的参数有常数b、c、sigmoid函数中的b、sigmoid函数中的w,损失函数与他们均有关
将他们拼成一个向量θ,再分别求偏导计算梯度
然后在不断更新θ的值直到梯度为0向量(几乎不可能)或训练次数到达指定次数停止
实际上更新θ的过程会将所有的训练数据分为若干个批量(batch),每个batch都会算出各自的损失函数,走完所有的batch称为一个回合(epoch)
Part3 深度学习
层数过多会导致过拟合(overfitting),在特征上损失减小,在未知预测的数据上损失增大