1 线性回归
线性回归其实就是高中讲过的那种回归,但是不同的是线性回归在神经网络这里大多使用梯度下降来计算参数
w
,
b
w,b
w,b,而高中讲的是使用最小二乘法。
线性回归想解决的问题也是回归问题,公式:
y
=
w
x
+
b
y=wx+b
y=wx+b
也可以写成:
h
θ
(
x
)
=
θ
x
h_\theta(x) =\theta x
hθ(x)=θx
用图形表示的话:
L
o
s
s
=
1
2
∑
i
(
y
i
^
−
y
i
)
2
Loss = \frac{1}{2} \sum_i{(\hat{y_i}-y_i)^2}
Loss=21i∑(yi^−yi)2
一个线性回归的输出点
y
y
y更像是一个没有激活的神经元,因此在pytorch里的普通神经网络层叫做nn.Linear(input, output, bias=True)。
2 Logistic回归
与线性回归相比,Logistic回归结构只是在其基础上多了一个激活的过程。
公式:
h
θ
(
x
)
=
1
1
+
e
−
θ
T
x
h_\theta(x) = \frac{1}{1+e^{-\theta^T x}}
hθ(x)=1+e−θTx1
用图形表示的话:
粉色代表一个非线性化过程。因为Logistic回归输出结果在(0,1)之间,往往用这个值做二分类,当输出
y
>
0.5
y>0.5
y>0.5时,代表1类;当输出
y
≤
0.5
y \leq 0.5
y≤0.5时,代表0类。
这里面除了结构的区别之外,还有一个地方有区别,那就是损失函数的表达式不同。因为Loss此时和
θ
\theta
θ的关系非线性程度较大,如果还使用平方差损失函数的话,就会比较麻烦(不是不行)。因此在Logistic回归中损失函数的公式为交叉熵:
L
o
s
s
=
−
y
l
o
g
(
h
θ
(
x
)
)
−
(
1
−
y
)
l
o
g
(
1
−
h
θ
(
x
)
)
Loss = -ylog(h_\theta(x))-(1-y)log(1-h_\theta(x))
Loss=−ylog(hθ(x))−(1−y)log(1−hθ(x))
这里用到了真实值
y
y
y只有两个取值
0
,
1
0,1
0,1,使得计算过程得到了高效的转化。
一个线性回归的输出点
y
y
y更像是一个激活的神经元。这里有一个细节,Logistic回归翻译成汉语应该是对数几率回归,而不是逻辑回归。
3 总结
Logistic回归相当于在线性回归的基础上,多了一个sigmoid激活函数。因为结构上的这个区别,导致了以下两点主要的区别: