Logistic Regression
逻辑回归(Logistic Regression,简称 LR)虽然名为 “回归”,但实际上是一个分类问题。它主要用于二分类,通过逻辑函数 ——Sigmoid 函数来实现。显然,Sigmoid 函数的值域在 (0, 1) 之间。通常,以 0.5 作为阈值,当函数值低于 0.5 时,将观察到的输入集分类为 “0” 类,反之则为 “1” 类。Sigmoid 函数呈现出典型的 S 形曲线。
逻辑回归分类器旨在从输入训练数据的特征中学习一个二分类模型。该模型将输入特征的线性组合作为变量,即
θ
0
+
θ
1
x
1
+
,
…
,
+
θ
n
x
n
=
∑
i
=
1
n
θ
i
x
i
\theta_0+\theta_1x_1+,\ldots,+\theta_nx_n= \sum_{i=1}^n \theta_ix_i
θ0+θ1x1+,…,+θnxn=∑i=1nθixi,其中
x
0
x_0
x0 始终为 1。我们也可以将其表示为
θ
T
x
\theta^Tx
θTx。将其代入 Sigmoid 函数,得到如下预测模型:
h
θ
(
x
)
=
g
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}
hθ(x)=g(θTx)=1+e−θTx1
逻辑回归最终将组合变量映射到 (0, 1) 区间,以确定输入特征所属的类别。
为了训练这样一个逻辑模型,我们需要构建一个合理的损失函数。但在此之前,我们首先定义类别(0 或 1)的概率如下:
P
(
y
=
1
∣
x
;
θ
)
=
h
θ
(
x
)
P
(
y
=
1
∣
0
;
θ
)
=
1
−
h
θ
(
x
)
\begin{equation} \begin{aligned}&P(y=1\mid x;\theta)=h_\theta(x)\\&P(y=1\mid 0;\theta)=1-h_\theta(x)\end{aligned}\end{equation}
P(y=1∣x;θ)=hθ(x)P(y=1∣0;θ)=1−hθ(x)
这意味着对于一组表示为
x
i
x_i
xi 的输入特征及其相应的标签 ,在
x
i
x_i
xi 条件下
y
i
=
1
y_i = 1
yi=1 的概率为
p
i
p_i
pi ,因此
y
i
=
0
y_i = 0
yi=0 的概率为
1
−
p
i
1-p_i
1−pi。 因此,我们可以将这两种情况结合起来,得到一个统一的概率函数:
P
(
y
)
∣
x
;
θ
)
=
(
h
θ
(
x
)
)
y
(
1
−
h
θ
(
x
)
)
1
−
y
P(y)\mid x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y}
P(y)∣x;θ)=(hθ(x))y(1−hθ(x))1−y
此外,对于 m 个输入特征
x
1
,
x
2
,
.
.
.
.
.
.
,
x
m
x_1, x_2, ...... , x_m
x1,x2,......,xm,联合概率就是在每个
x
i
x_i
xi 条件下
y
i
y_i
yi 的概率的乘积,如下所示:
L
(
θ
)
=
∏
i
=
1
m
P
=
(
y
i
∣
x
i
;
θ
)
=
∏
i
=
1
m
(
h
θ
(
x
i
)
)
y
i
(
1
−
h
θ
(
x
i
)
)
1
−
y
i
L(\theta)=\prod_{i=1}^{m}{P=(y_i\mid x_i;\theta)}=\prod_{i=1}^{m}(h_\theta(x_i))^{y_i}(1-h_\theta(x_i))^{1-y_i}
L(θ)=i=1∏mP=(yi∣xi;θ)=i=1∏m(hθ(xi))yi(1−hθ(xi))1−yi
逻辑回归(LR)的目的是获得一组最优的参数集
θ
\theta
θ ,使得
L
(
θ
)
L(\theta)
L(θ)达到最大值。其取对数形式,得到
l
(
θ
)
l(\theta)
l(θ) 如下:
l
(
θ
)
=
log
L
(
θ
)
=
∑
i
=
1
m
(
y
i
log
h
θ
(
x
i
)
+
(
1
−
y
i
)
log
(
1
−
h
θ
(
x
i
)
)
)
l(\theta)=\log{L(\theta)}=\sum_{i=1}^m \Big(y_i\log h_\theta(x_i)+(1-y_i)\log \big(1-h_\theta(x_i)\big)\Big)
l(θ)=logL(θ)=i=1∑m(yiloghθ(xi)+(1−yi)log(1−hθ(xi)))
如果我们将
l
(
θ
)
l(\theta)
l(θ) 视为损失函数,训练逻辑回归问题应该使用梯度上升的方式,因为
l
(
θ
)
l(\theta)
l(θ) 越大越好。如果我们想要最小化损失函数(以符合主流的机器学习训练方法),可以简单地使用其负数,即
J
(
θ
)
=
−
1
m
∗
l
(
θ
)
J(\theta)=-\frac{1}{m}*l(\theta)
J(θ)=−m1∗l(θ),并且可以使用梯度下降来进行参数优化:
θ
j
:
=
θ
j
−
α
δ
δ
θ
j
J
(
θ
)
\theta_j:=\theta_j-\alpha\frac{\delta}{\delta_{\theta_j}}J(\theta)
θj:=θj−αδθjδJ(θ)
其中:
δ
δ
θ
j
J
(
θ
)
=
−
1
m
∑
i
=
1
m
(
y
i
1
h
θ
(
x
i
)
δ
δ
θ
j
h
θ
(
x
i
)
−
(
1
−
y
i
)
1
1
−
h
θ
(
x
i
)
δ
δ
θ
j
h
θ
(
x
i
)
)
=
−
1
m
∑
i
=
1
m
(
y
i
1
g
(
θ
T
x
i
)
)
−
(
1
−
y
i
)
1
1
−
g
(
θ
T
x
i
)
)
δ
δ
θ
j
g
(
θ
T
x
i
)
=
−
1
m
∑
i
=
1
m
(
y
i
1
g
(
θ
T
x
i
)
)
−
(
1
−
y
i
)
1
1
−
g
(
θ
T
x
i
)
)
g
(
θ
T
x
i
)
(
1
−
g
(
θ
T
x
i
)
)
δ
δ
θ
j
θ
T
x
i
=
−
1
m
∑
i
=
1
m
(
y
i
(
1
−
g
(
θ
T
x
i
)
)
−
(
1
−
y
i
)
g
(
θ
T
x
i
)
)
x
i
j
=
−
1
m
∑
i
=
1
m
(
y
i
−
g
(
θ
T
x
i
)
)
x
i
j
=
−
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
)
x
i
j
\begin{aligned}&\frac{\delta}{\delta_{\theta_j}}J(\theta)=-\frac{1}{m}\sum_{i=1}^m \Big(y_i\frac{1}{h_\theta(x_i)}\frac{\delta} {\delta_{\theta_j}}h_\theta(x_i)-(1-y_i)\frac{1}{1-h_\theta(x_i)}\frac{\delta}{\delta_{\theta_j}}h_\theta(x_i)\Big)\\&=-\frac{1}{m}\sum_{i=1}^m \Big(y_i\frac{1}{g(\theta^Tx_i)})-(1-y_i)\frac{1}{1-g(\theta^Tx_i)}\Big) \frac{\delta}{\delta_{\theta_j}}g(\theta^Tx_i)\\&=-\frac{1}{m}\sum_{i=1}^m \Big(y_i\frac{1}{g(\theta^Tx_i)})-(1-y_i)\frac{1}{1-g(\theta^Tx_i)}\Big) g(\theta^Tx_i)\big(1-g(\theta^Tx_i)\big)\frac{\delta}{\delta_{\theta_j}}\theta^Tx_i\\ &=-\frac{1}{m}\sum_{i=1}^m \Big(y_i\big(1-g(\theta^Tx_i)\big)-(1-y_i)g(\theta^Tx_i)\Big)x_i^j\\&=-\frac{1}{m}\sum_{i=1}^m\Big(y_i-g(\theta^Tx_i)\Big)x_i^j\\&=-\frac{1}{m}\sum_{i=1}^m\Big(h_\theta(x_i)-y_i)\Big)x_i^j \end{aligned}
δθjδJ(θ)=−m1i=1∑m(yihθ(xi)1δθjδhθ(xi)−(1−yi)1−hθ(xi)1δθjδhθ(xi))=−m1i=1∑m(yig(θTxi)1)−(1−yi)1−g(θTxi)1)δθjδg(θTxi)=−m1i=1∑m(yig(θTxi)1)−(1−yi)1−g(θTxi)1)g(θTxi)(1−g(θTxi))δθjδθTxi=−m1i=1∑m(yi(1−g(θTxi))−(1−yi)g(θTxi))xij=−m1i=1∑m(yi−g(θTxi))xij=−m1i=1∑m(hθ(xi)−yi))xij
Vectorization
参数优化过程可以进行向量化,这在全同态加密(FHE)中非常重要。我们可以使用以下过程进行向量化:
首先,我们将 m 个输入向量 重新构造成针对每个观测特征的更细粒度的特征矩阵,输出类别
y
y
y 和参数集
θ
\theta
θ 也类似处理:
每个特征
x
i
x_i
xi 和参数集
θ
\theta
θ 的线性组合可以表示为矩阵 - 向量乘法。得到的矩阵
A
A
A 作为 Sigmoid 函数
g
g
g 的输入:
E
E
E 是观测标签
y
y
y (0 或 1)与通过 Sigmoid 函数根据
x
x
x 得到的预测概率之间的误差(或损失)。因此,最终的优化过程如下所示:
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
)
x
i
j
=
θ
j
−
α
1
m
∑
i
=
1
m
e
i
x
i
j
=
θ
j
−
α
1
m
x
j
T
E
\theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^m\big(h_\theta(x_i)-y_i)\big)x_i^j=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^me_ix_i^j=\theta_j-\alpha\frac{1}{m}x^{jT}E
θj:=θj−αm1i=1∑m(hθ(xi)−yi))xij=θj−αm1i=1∑meixij=θj−αm1xjTE
Implementation
后续会介绍,使用Poseidon同态加密库实现 Logistic Regression。