感知机模型
如何划分?——找一条直线
表格形式:
图像形式:
分类的目的就是找到将训练数据划分为两类的那条线(即图中虚线)
怎么找到那条直线——找权重向量
图中虚线是使权重向量成为法线向量的直线。
设权重向量为
w
\bm{w}
w,那么虚线的表达式为:
w
⋅
x
=
0
\bm{w} · \bm{x}=0
w⋅x=0
与
w
\bm{w}
w成直角的向量有很多,他们连成了一条直线。
怎么找到权重向量
训练数据的准备
接下来根据参数向量
x
\bm{x}
x来判断图像是横向还是纵向。定义如下判别函数:
f
w
(
x
)
=
{
1
(
w
⋅
x
≥
0
)
−
1
(
w
⋅
x
<
0
)
f_{\bm{w}}(\bm{x})= \left\{ \begin{array}{lr} 1&(\bm{w}·\bm{x}≥0)\\ -1&(\bm{w}·\bm{x}<0) \end{array} \right.
fw(x)={1−1(w⋅x≥0)(w⋅x<0)
因此,我们假设权重向量
w
\bm{w}
w如图所示,则参数向量
x
\bm{x}
x处于下图阴影部分时,内积为负,权重向量与参数向量不相似,返回-1。
当参数向量
x
\bm{x}
x处于下图阴影部分时,内积为正,权重向量与参数向量相似,返回1。
在此基础上,我们定义权重向量的更新表达式:
w
:
=
{
w
+
y
(
i
)
x
(
i
)
(
f
w
(
x
(
i
)
)
≠
y
(
i
)
)
w
(
f
w
(
x
(
i
)
)
=
y
(
i
)
)
\bm{w}:= \left\{ \begin{array}{lr} \bm{w}+y^{(i)}\bm{x}^{(i)}&(f_w(x^{(i)})≠y^{(i)})\\ \bm{w}&(f_w(x^{(i)})=y^{(i)}) \end{array} \right.
w:={w+y(i)x(i)w(fw(x(i))=y(i))(fw(x(i))=y(i))
f
w
(
x
(
i
)
)
≠
y
(
i
)
f_w(x^{(i)})≠y^{(i)}
fw(x(i))=y(i)表示判别函数的结果不准确,
f
w
(
x
(
i
)
)
=
y
(
i
)
f_w(x^{(i)})=y^{(i)}
fw(x(i))=y(i)则表示结果准确。因此参数
w
\bm{w}
w的更新只在判别函数结果不准确时进行。
怎么更新参数
w
\bm{w}
w呢?
y
(
i
)
y^{(i)}
y(i)是常数1或-1,表示方向。因此
w
+
y
(
i
)
x
(
i
)
\bm{w}+y^{(i)}\bm{x}^{(i)}
w+y(i)x(i)只是向量的加减法。
以下为将相似判定为不相似后的参数
w
\bm{w}
w更新情况:
更新后的参数
w
+
x
(
1
)
\bm{w}+\bm{x}^{(1)}
w+x(1)与
x
(
1
)
\bm{x}^{(1)}
x(1)更相似。
如何解决多分类问题
感知机是一种线性二分类模型,不过可以解决多分类问题。具体怎么实现,值得探讨。
逻辑回归
如何划分?——比较属于某类的概率
图像为纵向的概率是80%、为横向的概率是20%。那么这个图像归入纵向类。
如何表示单条数据的分类概率?——sigmoid函数
假设变量向量
x
\bm{x}
x是横向图像的概率是
f
θ
(
x
)
f_{\bm{\theta}}(\bm{x})
fθ(x),那么有:
P
(
y
=
1
∣
x
)
=
f
θ
(
x
)
P(y=1\space|\space\bm{x})=f_{\bm{\theta}}(\bm{x})
P(y=1 ∣ x)=fθ(x)
进而可得判别函数:
y
=
{
1
(
f
θ
(
x
)
≥
0.5
)
0
(
f
θ
(
x
)
<
0.5
)
y=\left\{ \begin{array}{lr} 1&(f_{\bm{\theta}}(\bm{x})≥0.5)\\ 0&(f_{\bm{\theta}}(\bm{x})<0.5) \end{array} \right.
y={10(fθ(x)≥0.5)(fθ(x)<0.5)
那么
f
θ
(
x
)
f_{\bm{\theta}}(\bm{x})
fθ(x)到底可以是个什么函数呢?——sigmoid函数
f
θ
(
x
)
=
1
1
+
e
−
θ
T
x
f_{\theta}(\bm{x})=\frac{1}{1+e^{-\bm{\theta}^T\bm{x}}}
fθ(x)=1+e−θTx1
说明:
① 设横向的值为1,纵向的值为0
② x \bm{x} x为变量向量, θ \bm{\theta} θ为参数向量。 f θ ( x ) f_{\bm{\theta}}(\bm{x}) fθ(x)为参数 θ \bm{\theta} θ情况下输入变量 x \bm{x} x对应的概率。
③ 设 θ T x \bm{\theta}^T\bm{x} θTx为横轴, f θ ( x ) f_{\bm{\theta}}(\bm{x}) fθ(x)为纵轴,那么它的图形是这样的。
④ 0 < f θ ( x ) < 1 0<f_{\bm{\theta}}(\bm{x})<1 0<fθ(x)<1
⑤ θ T x = 0 \bm{\theta}^T\bm{x}=0 θTx=0时, f θ ( x ) = 0.5 f_{\bm{\theta}}(\bm{x})=0.5 fθ(x)=0.5
于是,我们进一步将判别函数简化为:
y
=
{
1
(
θ
T
x
≥
0
)
0
(
θ
T
x
<
0
)
y=\left\{ \begin{array}{lr} 1&({\bm{\theta}}^T\bm{x}≥0)\\ 0&(\bm{\theta}^T\bm{x}<0) \end{array} \right.
y={10(θTx≥0)(θTx<0)
为了便于理解,我们设:
θ
=
[
θ
0
θ
1
θ
2
]
=
[
−
100
2
1
]
,
x
=
[
1
x
1
x
2
]
\bm{\theta}= \begin{bmatrix} \begin{matrix} \theta_0\\ \theta_1\\ \theta_2 \end{matrix} \end{bmatrix}= \begin{bmatrix} \begin{matrix} -100\\ 2\\ 1 \end{matrix} \end{bmatrix}, \bm{x}= \begin{bmatrix} \begin{matrix} 1\\ x_1\\ x_2 \end{matrix} \end{bmatrix}
θ=
θ0θ1θ2
=
−10021
,x=
1x1x2
则有:
如何表示多条数据的分类概率?——似然函数
为了求得正确的参数
θ
\bm{\theta}
θ而定义目标函数,进行微分,然后求参数的更新表达式,这种算法就称为逻辑回归
对于
P
(
y
=
1
∣
x
)
=
f
θ
(
x
)
P(y=1\space|\space\bm{x})=f_{\bm{\theta}}(\bm{x})
P(y=1 ∣ x)=fθ(x)
y
=
1
y=1
y=1的时候,我们希望概率
P
(
y
=
1
∣
x
)
P(y=1|\bm{x})
P(y=1∣x)(图像为横向)是最大的
y
=
0
y=0
y=0的时候,我们希望概率
P
(
y
=
0
∣
x
)
P(y=0|\bm{x})
P(y=0∣x)是最大的
因此可以得到
我们假定所有的训练数据都是互不影响、独立发生的,这种情况下整体的概率就可以用下面的联合概率来表示。
L
(
θ
)
=
∏
i
=
1
n
P
(
y
(
i
)
=
1
∣
x
(
i
)
)
y
(
i
)
P
(
y
(
i
)
=
0
∣
x
(
i
)
)
1
−
y
(
i
)
L(\bm{\theta})=\prod_{i=1}^n P(y^{(i)}=1\space|\space \bm{x}^{(i)})^{y^{(i)}} P(y^{(i)}=0\space|\space \bm{x}^{(i)})^{1-y^{(i)}}
L(θ)=i=1∏nP(y(i)=1 ∣ x(i))y(i)P(y(i)=0 ∣ x(i))1−y(i)
当
y
(
i
)
=
1
y^{(i)}=1
y(i)=1 时,联合概率包含
P
(
y
(
i
)
=
1
∣
x
(
i
)
)
P(y^{(i)}=1\space|\space \bm{x}^{(i)})
P(y(i)=1 ∣ x(i));
当
y
(
i
)
=
0
y^{(i)}=0
y(i)=0 时,联合概率包含
P
(
y
(
i
)
=
0
∣
x
(
i
)
)
P(y^{(i)}=0\space|\space \bm{x}^{(i)})
P(y(i)=0 ∣ x(i))。
包含的都是每个独立判别事件成功的概率。
因此,我们要找出使联合概率
L
(
θ
)
L(\bm{\theta})
L(θ)最大的参数
θ
\bm{\theta}
θ。这里的目标函数
L
(
θ
)
L(\bm{\theta})
L(θ)也被称为似然。因此我们要最大化似然函数。
如何最大化似然函数?
如果直接对似然函数
L
(
θ
)
L(\bm{\theta})
L(θ)微分,因为它是联合概率,而概率都是小于1的数,连乘值会越来越小,当值过小时,编程会出现精度问题。因此我们要对似然函数进行对数化处理。
log
L
(
θ
)
=
log
∏
i
=
1
n
P
(
y
(
i
)
=
1
∣
x
(
i
)
)
y
(
i
)
P
(
y
(
i
)
=
0
∣
x
(
i
)
)
1
−
y
(
i
)
log
L
(
θ
)
=
∑
i
=
1
n
(
y
(
i
)
log
P
(
y
(
i
)
=
1
∣
x
(
i
)
)
+
(
1
−
y
(
i
)
)
log
P
(
y
(
i
)
=
0
∣
x
(
i
)
)
)
log
L
(
θ
)
=
∑
i
=
1
n
(
y
(
i
)
log
f
θ
(
x
)
+
(
1
−
y
(
i
)
)
log
(
1
−
f
θ
(
x
)
)
)
\begin{align*} &\log L(\bm{\theta})=\log \prod_{i=1}^n P(y^{(i)}=1\space|\space\bm{x}^{(i)})^{y^{(i)}}P(y^{(i)}=0\space|\space\bm{x}^{(i)})^{1-y^{(i)}}\\ &\phantom{\log L(\bm{\theta})}=\sum_{i=1}^{n}{(y^{(i)} \log P(y^{(i)}=1\space|\space\bm{x}^{(i)})+(1-y^{(i)}) \log P(y^{(i)}=0\space|\space\bm{x}^{(i)}))}\\ &\phantom{\log L(\bm{\theta})}=\sum_{i=1}^{n}{(y^{(i)} \log f_{\bm{\theta}}(\bm{x})+(1-y^{(i)})\log (1- f_{\bm{\theta}}(\bm{x})}))\\ \end{align*}
logL(θ)=logi=1∏nP(y(i)=1 ∣ x(i))y(i)P(y(i)=0 ∣ x(i))1−y(i)logL(θ)=i=1∑n(y(i)logP(y(i)=1 ∣ x(i))+(1−y(i))logP(y(i)=0 ∣ x(i)))logL(θ)=i=1∑n(y(i)logfθ(x)+(1−y(i))log(1−fθ(x)))
接下来开始微分
令
u
=
log
L
(
θ
)
u=\log L(\bm{\theta})
u=logL(θ),
v
=
f
θ
(
x
)
v=f_{\bm{\theta}}(\bm{x})
v=fθ(x),
w
=
θ
T
x
w=\bm{\theta}^T\bm{x}
w=θTx
∂
u
∂
θ
j
=
∂
u
∂
v
⋅
∂
v
∂
w
⋅
∂
w
∂
θ
j
\begin{align*} &\frac{\partial u}{\partial \theta_j}=\frac{\partial u}{\partial v}·\frac{\partial v}{\partial w}·\frac{\partial w}{\partial \theta_j} \end{align*}
∂θj∂u=∂v∂u⋅∂w∂v⋅∂θj∂w
∂
u
∂
v
=
∂
∂
v
∑
i
=
1
n
(
y
(
i
)
log
v
+
(
1
−
y
(
i
)
)
log
(
1
−
v
)
)
A
B
=
∑
i
=
1
n
(
y
(
i
)
v
−
1
−
y
(
i
)
1
−
v
)
\begin{align*} &\frac{\partial u}{\partial v}=\frac{\partial}{\partial v}\sum_{i=1}^{n}{(y^{(i)} \log v+(1-y^{(i)}) \log(1-v))}\\ &\phantom{AB}=\sum_{i=1}^{n}{(\frac{y^{(i)}}{v}-\frac{1-y^{(i)}}{1-v})}\\ \end{align*}
∂v∂u=∂v∂i=1∑n(y(i)logv+(1−y(i))log(1−v))AB=i=1∑n(vy(i)−1−v1−y(i))
∂
v
∂
w
=
∂
∂
w
(
1
1
+
e
−
w
)
A
B
=
e
w
(
e
w
+
1
)
2
A
B
=
v
(
1
−
v
)
\begin{align*} &\frac{\partial v}{\partial w}=\frac{\partial}{\partial w}(\frac{1}{1+e^{-w}})\\ &\phantom{AB}=\frac{e^w}{(e^w+1)^2}\\ &\phantom{AB}=v(1-v) \end{align*}
∂w∂v=∂w∂(1+e−w1)AB=(ew+1)2ewAB=v(1−v)
∂
w
∂
θ
j
=
∂
∂
θ
j
(
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
.
.
.
+
θ
n
x
n
)
∂
w
∂
θ
j
=
x
j
\begin{align*} &\frac{\partial w}{\partial \theta_j}=\frac{\partial}{\partial \theta_j}(\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n)\\ &\phantom{\frac{\partial w}{\partial \theta_j}}=x_j \end{align*}
∂θj∂w=∂θj∂(θ0+θ1x1+θ2x2+...+θnxn)∂θj∂w=xj
综上所述
∂
log
L
(
θ
)
∂
θ
j
=
∑
i
=
1
n
(
y
(
i
)
−
f
θ
(
x
(
i
)
)
)
x
j
(
i
)
\begin{align*} &\frac{\partial \log L(\bm{\theta})}{\partial \theta_j}=\sum_{i=1}^{n}(y^{(i)}-f_{\bm{\theta}}(\bm{x}^{(i)}))x_j^{(i)} \end{align*}
∂θj∂logL(θ)=i=1∑n(y(i)−fθ(x(i)))xj(i)
最小化时要按照与微分结果的符号相反的方向移动,而最大化要按照与微分结果的符号相同的方向移动,因此
θ
j
:
=
θ
j
−
η
∑
i
=
1
n
(
f
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\theta_j:=\theta_j-\eta\sum_{i=1}^{n}(f_{\bm{\theta}}(\bm{x^{(i)}})-y^{(i)})x_j^{(i)}
θj:=θj−ηi=1∑n(fθ(x(i))−y(i))xj(i)
如何解决线性不可分问题?
直线不能分类→用曲线可以分类
将
w
=
θ
T
x
w=\bm{\theta}^T\bm{x}
w=θTx变成曲线,那么只需要增加
x
x
x的次数即可。
例如:
θ
=
[
θ
0
θ
1
θ
2
θ
3
]
=
[
0
0
1
−
1
]
,
x
=
[
1
x
1
x
2
x
1
2
]
\bm{\theta}= \begin{bmatrix} \begin{matrix} \theta_0\\ \theta_1\\ \theta_2\\ \theta_3 \end{matrix} \end{bmatrix}= \begin{bmatrix} \begin{matrix} 0\\ 0\\ 1\\ -1 \end{matrix} \end{bmatrix}, \bm{x}= \begin{bmatrix} \begin{matrix} 1\\ x_1\\ x_2\\ x_1^2 \end{matrix} \end{bmatrix}
θ=
θ0θ1θ2θ3
=
001−1
,x=
1x1x2x12