逻辑回归与线性回归都是一种广义线性模型。逻辑回归假设因变量
y
y
y 服从伯努利分布,而线性回归假设因变量
y
y
y 服从高斯分布。 因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过 Sigmoid 函数引入了非线性因素,因此可以轻松处理二分类问题。
我们拿垃圾邮件二分类(C1(正常),C2(垃圾))举例,需要找到一个概率
p
(
C
1
∣
x
)
p(C1∣x)
p(C1∣x),当
p
(
C
1
∣
x
)
>
0.5
p(C1∣x)>0.5
p(C1∣x)>0.5 时候是分类C1,当
p
(
C
1
∣
x
)
<
0.5
p(C1∣x)<0.5
p(C1∣x)<0.5的时候的分类是C2。
import numpy as np
def sigmoid(z):
return 1/(1+np.exp(-z))
这样,通过 σ ( z ) \sigma(z) σ(z) 函数的转换和帮助,你可以用逻辑回归来得到一个概率输出了。一般我们将 Logistic 的计算结果用小写字母 z z z 来表示。
比如说有一个训练集
当这个概率
L
(
w
,
b
)
L(w,b)
L(w,b) 最大的时候,这个时候的
w
w
w 和
b
b
b 就是最优解。
w
∗
,
b
∗
=
a
r
g
m
a
x
w
,
b
L
(
w
,
b
)
=
a
r
g
m
i
n
w
,
b
−
l
n
L
(
w
,
b
)
w^*,b^* =arg\mathop{max}\limits_{w,b}L(w,b)=arg\mathop{min}\limits_{w,b}-lnL(w,b)
w∗,b∗=argw,bmaxL(w,b)=argw,bmin−lnL(w,b)
然后又可以得到
假设真实分布是
p
p
p ,预测分布是
q
q
q。
H ( p , q ) = − ∑ p ( x ) l n ( q ( x ) ) H(p,q)=-\sum p(x)ln(q(x)) H(p,q)=−∑p(x)ln(q(x))
容易得出,如果他们的分布一样,那么交叉熵为0。
我们可以定义损失函数为交叉熵的和:
L
(
f
)
=
∑
C
(
f
(
x
n
)
,
y
^
n
)
L(f)=\sum C(f(x^n),\hat{y}^n)
L(f)=∑C(f(xn),y^n)
其中,
C
(
f
(
x
n
)
,
y
^
n
)
=
−
[
y
^
n
l
n
f
(
x
n
)
+
(
1
−
y
^
n
)
l
n
(
1
−
f
(
x
n
)
)
]
C(f(x^n),\hat{y}^n)=-[\hat{y}^nlnf(x^n)+(1-\hat{y}^n)ln(1-f(x^n))]
C(f(xn),y^n)=−[y^nlnf(xn)+(1−y^n)ln(1−f(xn))]
对
−
l
n
L
(
w
,
b
)
-lnL(w,b)
−lnL(w,b) 做微分可以得到
∂
(
−
l
n
L
(
w
,
b
)
)
∂
w
i
=
∑
n
−
(
y
^
n
−
f
w
,
b
(
x
n
)
)
x
i
n
\frac{\partial(-lnL(w,b))}{\partial{w_i}}=\sum\limits_{n}-(\hat{y}^n-f_{w,b}(x^n))x_i^n
∂wi∂(−lnL(w,b))=n∑−(y^n−fw,b(xn))xin
上式表明,目前的数值与目标差距越大,更新的值也会越大,
与线性回归比较一下:
将之前的两类分类算法进行比较
原理与二分类一样
假设有三个类别
C
1
,
C
2
,
C
3
C_1,C_2,C_3
C1,C2,C3
softmax做的事情就是它们进行exponential(指数化),将exponential 的结果相加,再分别用 exponential 的结果除以相加的结果。
我们同样可以利用交叉熵来比较得到的概率分布与真实的概率分布之间的差异程度
假设这样一种情况
我们没有办法用一条直线把它们分开。
那么我们可以用一个特征转换的办法:(虽然不是很容易找到一个合适的特征转换)
x
1
′
:
d
i
s
t
a
n
c
e
t
o
[
0
0
]
x^{'}_1:distance\ to\begin{bmatrix}0\\0\end{bmatrix}
x1′:distance to[00]
x
2
′
:
d
i
s
t
a
n
c
e
t
o
[
1
1
]
x^{'}_2:distance\ to\begin{bmatrix}1\\1\end{bmatrix}
x2′:distance to[11]
cascading logistic regression models(级联逻辑回归模型)
Cascading logistic regression models就是一种转换的普遍适用的方法。
可以将很多的逻辑回归接到一起,就可以进行特征转换。
上图中,利用逻辑回归
Z
1
Z_1
Z1 和
Z
2
Z_2
Z2 进行特征转换,然后对
x
1
′
x^{'}_1
x1′ 和
x
2
′
x^{'}_2
x2′ 再用一个逻辑回归
Z
Z
Z 进行分类。
上面的例子经过这样的转换后,可以得到分类的结果
一个逻辑回归的输入可以来源于其他逻辑回归的输出,这个逻辑回归的输出也可以是其他逻辑回归的输入。把每个逻辑回归称为一个 neuron(神经元),把这些神经元连接起来的网络,就叫做 neural network(神经网络)。
我们可以利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。例如我们要实
现 XNOR 功能(输入的两个值必须一样,均为 1 或均为 0),即:
X
N
O
R
=
(
x
1
A
N
D
x
2
)
O
R
(
N
O
T
x
1
)
A
N
D
(
N
O
T
x
2
)
)
XNOR=(x_1 AND x_2 )OR (NOT x_1) AND (NOT x_2))
XNOR=(x1ANDx2)OR(NOTx1)AND(NOTx2))
首先构造一个能表达
(
N
O
T
x
1
)
A
N
D
(
N
O
T
x
2
)
(NOT x_1) AND (NOT x_2)
(NOTx1)AND(NOTx2) 部分的神经元。
然后将表示 AND 的神经元和表示
(
N
O
T
x
1
)
A
N
D
(
N
O
T
x
2
)
(NOT x_1) AND (NOT x_2)
(NOTx1)AND(NOTx2) 的神经元以及表示 OR 的神经元进行组合:
我们就得到了一个能实现 XNOR 运算符功能的神经网络。
按这种方法我们可以逐渐构造出越来越复杂的函数,也能得到更加厉害的特征值。
这就是神经网络的厉害之处。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- cepb.cn 版权所有 湘ICP备2022005869号-7
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务