内积
分类需要寻找一条以权重向量为法向量的直线,设法向量为 w,那么直线的表达式可以通过向量的内积表示为:
实向量空间的内积是各相应元素乘积的和。
w⋅x=i=1∑nwixi=0
内积的另一种写法:
w⋅x=∣w∣⋅∣x∣⋅cosθ
要使内积为0,意味着 θ=90∘ 或者 θ=270∘。
感知机
感知机是接受多个输入后将每个值与各自的权重相乘,最后输出总和的模型。
内积是衡量向量之间相似程度的指标。结果为正,说明二者相似;为 0 则二者垂直;为负则说明二者不相似。
分类的判别函数:
假设两个分类的标签(值)为 1
和 -1
,
fw(x)={1−1(w⋅x≥0)(w⋅x<0)
更新权重的表达式可以写为
w:={w+y(i)x(i)w(fw(x(i))=y(i))(fw(x(i))=y(i))
这说明更新表达式只有在判别函数分类失败的时候才会更新参数值。
虽然有加法和减法的区别,但它们的做法都是在分类失败时更新权重向量,使得直线旋转相应的角度。像这样重复更新所有的参数,就是感知机的学习方法。
线性可分
感知机的缺点是它只能解决线性可分的问题,像这样不能用直线分类的就不是线性可分:
既然有单层,就会有多层,实际上多层感知机就是神经网络了。
逻辑回归
与回归的时候类似,我们也定义一个 fθ(x):
fθ(x)=1+exp(−θ⊤x)1
这个叫做 sigmoid
函数。
几个重要的特性:
- θ⊤x=0 时,fθ(x)=0.5
- 0<fθ(x)<1
因为这个取值范围,所以它可以作为概率来使用。
把函数的输出解释为“在给出数据 x 时候,样本属于类别 1
”的条件概率,即:
fθ(x)=P(y=1∣x)
根据 sigmod
的性质,有:
y={10(fθ(x)≥0.5)(fθ(x)<0.5)⟹y={10(θ⊤x≥0)(θ⊤x<0)
我们称直线 θ⊤x=0 就是决策边界。
为了求得正确的参数 θ 而定义目标函数,进行微分,然后求参数的更新表达式,这种算法就叫逻辑回归。
似然函数
假定所有的训练数据都是互不影响、独立发生的,这种情况下整体的概率就可以用下面的联合概率来表示:
L(θ)=i=1∏nP(y(i)=1∣x(i))y(i)P(y(i)=0∣x(i))1−y(i)
这个函数叫做似然函数(Likelihood)。
这个表达式利用了任何数字的 0 次方都是 1 的特性,其实乘起来有一个 P(y∣x) 是 0。
现在考虑的是联合概率,我们希望概率尽可能大,所以要最大化。我们可以认为似然函数 L(θ) 中,使其值最大的参数 θ 能够最近似地说明训练数据。
对数似然函数
直接对似然函数进行微分有点困难,在此之前要把函数变形一下,取对数就可以了:
logL(θ)=logi=1∏nP(y(i)=1∣x(i))y(i)P(y(i)=0∣x(i))1−y(i)=i=1∑n(logP(y(i)=1∣x(i))y(i)+logP(y(i)=0∣x(i))1−y(i))=i=1∑n(y(i)logP(y(i)=1∣x(i))+(1−y(i))logP(y(i)=0∣x(i)))=i=1∑n(y(i)logP(y(i)=1∣x(i))+(1−y(i))log(1−P(y(i)=1∣x(i))))=i=1∑n(y(i)logfθ(x(i))+(1−y(i))log(1−fθ(x(i))))⟸log(ab)=loga+logb⟸log(ab)=bloga⟸P(y(i)=0∣x(i))=1−P(y(i)=1∣x(i))⟸P(y=1∣x)=fθ(x)
然后要对似然函数做微分:
logL(θ)=i=1∑n(y(i)logfθ(x(i))+(1−y(i))log(1−fθ(x(i))))
∂θj∂logL(θ)=∂θj∂i=1∑n(y(i)logfθ(x(i))+(1−y(i))log(1−fθ(x(i))))
使用复合函数:
uv=logL(θ)=fθ(x)=1+exp(−θ⊤x)1
链式法则启动:
∂θj∂u=∂v∂u⋅∂θj∂v
第一部分:
∂v∂u=∂fθ(x)∂logL(θ)=∂v∂i=1∑n(y(i)logv+(1−y(i))log(1−v))=i=1∑n(vy(i)−1−v1−y(i))⟸代入fθ(x)=v⟸log(x)=x1,注意−v中的负号
第二部分:
插播 sigmod
函数的导数: dxdσ(x)=σ(x)(1−σ(x))
∂θj∂v=v(1−v)∂θj∂θ⊤x=v(1−v)xj⟸θ⊤x看成一个元
结合一下:
∂θj∂u=i=1∑n(vy(i)−1−v1−y(i))⋅v(1−v)xj(i)=i=1∑n(y(i)−v)xj(i)=i=1∑n(y(i)−fθ(x(i)))xj(i)
因为我们需要最大化似然函数的值,所以参数要与微分结果同方向移动,所以更新参数的表达式为,:
θj:=θj+ηi=1∑n(y(i)−fθ(x(i)))xj(i)
可以取个反,这样就跟回归的时候一样了:
θj:=θj−ηi=1∑n(fθ(x(i)−y(i)))xj(i)