线性模型
不断迭代更新模型。
领域知识:对于问题的理解
线性模型:把输入的特征x乘上一个权重,再加上一个偏置
分阶段线性曲线
分阶段线性曲线:一个常数加上一群其他函数(Hard Sigmoid 函数)
在一个曲线上取足够多或一定量位置适当的点,则可使分阶段性曲线逼近该连续曲线
则只要有足够多的函数组合起来,就可以变成任何的连续曲线
Hard Sigmoid函数:输入的值x小于某个定值而大于另一个定值时,函数图像会有一个斜坡(即,先水平,再斜坡,再水平)
Sigmoid函数:当值足够大时,会收敛再高度为c的地方,如果n负的非常大的时候,分母变大,y值趋近于0。于是可以用这个函数来逼近 Hard Sigmoid函数
y
=
c
1
1
+
e
−
(
b
+
w
x
1
)
y = c\frac{1}{1+e^{-(b+wx_1)}}
y=c1+e−(b+wx1)1
只有 w跟b两个参数的前提之下,可以穷举所有可能的跟b的值,所以在参数很少的情况下。甚至可能不用梯度下降,不需要优化的技巧。但是参数非常多的时候,就不能使用穷举的方法,需要梯度下降来找出可以让损失最低的参数。
模型变形
修正线性单元ReLU:ReLU的图像有一个水平的线,走到某个地方有一个转折的点,变成一个斜坡。
c
∗
m
a
x
(
0
,
b
+
w
x
1
)
c * max(0,b+wx_1)
c∗max(0,b+wx1)
max(0,b + wx) 是指看 0跟b+wx:谁比较大,比较大的会被当做输出。
通过w,b,e可以挪动其位置和斜率。把两个ReLU叠起来就可以变成Hard的Sigmoid,想要用ReLU,就把Sigmoid的地方,换成max(0, b + wr)。
2个ReLU -> 1个Hard Sigmoid
1个Sigmoid -> 1个Hard Sigmoid
激活函数:类似于Sigmoid或ReLU的函数
反向传播:选训练时在没有看过的数据上表现好一点的模型。
机器学习框架
测试集:只有x没有y。{xN+1, xN+2,…,xN+M}
训练集:训练模型。{(x1,y1),(x2,y2),…,(xN,yN)}
训练步骤:
- 写函数:写一个带有未知数θ的函数(代表一个模型里面所有的未知参数)
- 定义损失:输入一组参数判断参数的好坏
- 选取最优:找一个θ,让损失的值越小越好。损失最小的θ为θ*,ʘ* = argmin L