一、算法基础与逻辑回归
1、二分类问题
目标是训练出一个分类器,输入是图片的特征向量x。预测输出的结果标签y是1还是0,也就是图片中是否有猫。
符号规定:
(训练集由m个训练样本构成)
输入的特征向量x(n维向量)
X(nx,m)
标签y(0或1)
权重w(n维向量)
偏置b∈R(一个实数)
2、逻辑回归算法:
s
=
σ
(
w
T
x
+
b
)
=
σ
(
z
)
=
1
1
+
e
−
z
s=\sigma \left( w^Tx+b \right) =\sigma \left( z \right)=\frac{1}{1+e^{-z}}
s=σ(wTx+b)=σ(z)=1+e−z1
σ
(
)
是
s
i
g
m
o
i
d
函数
\sigma()是sigmoid函数
σ()是sigmoid函数
3、逻辑回归的损失函数
1)损失函数的作用:为了训练logistic回归模型的参数w、b定义了损失函数,用于衡量预测结果和真实值之间的差距。
2)损失函数:均方差损失、对数损失(在逻辑回归中用)
(在逻辑回归中,不使用均方差损失函数而使用对数损失的原因:要得到一个凸的损失函数,梯度下降法才能找到全局最优值,如果得到非凸的损失函数,它会有多个局部最优解,梯度下降法可能找不到全局最优值,给优化带来困难)
二、梯度下降法
1、梯度下降法更新w b值
当cost function是一个凸函数,只有一个全局最优点,由梯度下降的参数更新公式:
w
:
=
w
−
α
d
J
(
w
,
b
)
d
w
w : =w-\alpha \frac{dJ\left( w,b \right)}{dw}
w:=w−αdwdJ(w,b)
b
:
=
b
−
α
d
J
(
w
,
b
)
d
b
b : =b-\alpha \frac{dJ\left( w,b \right)}{db}
b:=b−αdbdJ(w,b)
使用cost function衡量参数w b在训练集上的效果,找到cost function尽可能小的w和b
三、计算图
前向传播:从输入到输出,从左到右,由神经网络计算得到预测值输出的过程——预测
反向传播:从输出到输入,基于cost function 对参数w b计算梯度的过程(梯度下降法)——求导
四、逻辑回归中的梯度下降法
1、单个训练样本的logistic回归的梯度下降法
使用一个训练样本
(
x
(
i
)
,
y
(
i
)
)
\left(x^{\left( i \right)},y^{\left( i \right)} \right)\\
(x(i),y(i))反向传播计算梯度:
对于a的导数:
d
J
d
a
=
d
a
=
−
y
a
+
1
−
y
1
−
a
\frac{dJ}{da}=da=-\frac{y}{a}+\frac{1-y}{1-a}\\
dadJ=da=−ay+1−a1−y
对于z的导数:
d
J
d
z
=
d
z
=
a
−
y
\frac{dJ}{dz}=dz=a-y\\
dzdJ=dz=a−y
对于w1,w2,b的导数
d
J
d
w
1
=
d
w
1
=
x
1
⋅
d
z
\frac{dJ}{dw_1}=dw_1=x_1\cdot dz\\
dw1dJ=dw1=x1⋅dz
d
J
d
w
2
=
d
w
2
=
x
2
⋅
d
z
\frac{dJ}{dw_2}=dw_2=x_2\cdot dz\\
dw2dJ=dw2=x2⋅dz
d
J
d
b
=
d
b
=
d
z
\frac{dJ}{db}=db=dz\\
dbdJ=db=dz
再梯度下降得到参数更新公式
w
1
:
=
w
1
−
α
d
J
(
w
1
,
b
)
d
w
1
w_1 : =w_1-\alpha \frac{dJ\left( w_1,b \right)}{dw_1}
w1:=w1−αdw1dJ(w1,b)
w
2
:
=
w
2
−
α
d
J
(
w
2
,
b
)
d
w
2
w_2 : =w_2-\alpha \frac{dJ\left( w_2,b \right)}{dw_2}
w2:=w2−αdw2dJ(w2,b)
b
:
=
b
−
α
d
J
(
w
,
b
)
d
b
b : =b-\alpha \frac{dJ\left( w,b \right)}{db}
b:=b−αdbdJ(w,b)
2、训练集(m个训练样本)的logistic回归的梯度下降法
与单个训练样本的区别:用for循环遍历m个样本,加和后,除以m取平均
这里有两个for循环,分别是
1)遍历m个样本 2)遍历所有特征w1 w2等
五、向量化
向量化在logistic回归上实现一次迭代:解决了两个for循环
伪代码:(课程里)
但多次迭代,仍然需要使用for循环