2.1 Binary Classification
逻辑回归 模型一般用来解决二分类(Binary Classification) 问题
二分类就是输出y只有{0,1}两个离散值(也有{-1,1}的情况)
彩色图片包含RGB三个通道。例如该cat图片的尺寸为(64,64,3)
在神经网络模型中,首先要将图片输入x(维度是(64,64,3))转化为一维的特征向量(featurevector) 。方法是每个通道一行一行取,再连接起来。则转化后的输入特征向量维度为(12288,1)。此特征向量x是列向量,维度一般记为n x n_x n x
如果训练样本共有m张图片,那么整个训练样本X组成了矩阵,维度是(n x n_x n x ,m),n x n_x n x 代表了每个样本X ( i ) X^{(i)} X ( i ) 特征个数,列m代表了样本个数,输出Y组成了一维的行向量,维度是(1,m)
2.2 Logistic Regression
逻辑回归中,预测值y ^ = P ( y = 1 ∣ x ) \hat y=P(y=1 | x) y ^ = P ( y = 1∣ x ) 表示为1的概率,取值范围在[0,1]之间
使用线性模型,引入参数w和b。权重w的维度是(n x n_x n x ,1),b是一个常数项
逻辑回归的预测输出可以完整写成:
y ^ = S i g m o i d ( w T x + b ) = σ ( w T x + b ) \hat y = Sigmoid(w^Tx+b)=\sigma(w^Tx+b) y ^ = S i g m o i d ( w T x + b ) = σ ( w T x + b ) Sigmoid函数的一阶导数可以用其自身表示:
σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma'(z)=\sigma(z)(1-\sigma(z)) σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ))
2.3 Logistic Regression Cost Function
单个样本的cost function 用Loss function 来表示,使用平方误差(squared error) :
L ( y ^ , y ) = 1 2 ( y ^ − y ) 2 L(\hat y,y)=\frac12(\hat y-y)^2 L ( y ^ , y ) = 2 1 ( y ^ − y ) 2 逻辑回归一般不使用平方误差来作为Loss function。原因是这种Loss function一般是non-convex的。
non-convex函数在使用梯度下降算法时,容易得到局部最小值(localminimum),即局部最优化。而最优化的目标是计算得到全局最优化(Global optimization),因此一般选择的Loss function应该是convex的
构建另外一种Loss function(针对单个样本),且是convex的:
L ( y ^ , y ) = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ) L(\hat y,y)=-(ylog\ \hat y+(1-y)log\ (1-\hat y)) L ( y ^ , y ) = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ )) 当y=1时,L ( y ^ , y ) = − log y ^ L(\hat y,y)=-\log \hat y L ( y ^ , y ) = − log y ^ ,如果y ^ \hat y y ^ 越接近1,L ( y ^ , y ) ≈ 0 L(\hat y,y)\approx 0 L ( y ^ , y ) ≈ 0 ,表示预测效果越好;如果y ^ \hat y y ^ 越接近0,L ( y ^ , y ) ≈ + ∞ L(\hat y,y)\approx +\infty L ( y ^ , y ) ≈ + ∞ ,表示预测效果越差
当y=0时,L ( y ^ , y ) = − log ( 1 − y ^ ) L(\hat y,y)=-\log(1- \hat y) L ( y ^ , y ) = − log ( 1 − y ^ ) ,如果y ^ \hat y y ^ 越接近0,L ( y ^ , y ) ≈ 0 L(\hat y,y)\approx 0 L ( y ^ , y ) ≈ 0 ,表示预测效果越好;如果y ^ \hat y y ^ 越接近1,L ( y ^ , y ) ≈ + ∞ L(\hat y,y)\approx +\infty L ( y ^ , y ) ≈ + ∞ ,表示预测效果越差
Cost function 是m个样本的Loss function 的平均值,反映了m个样本的预测输出y ^ \hat y y ^ 与真实样本输出y的平均接近程度:
J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) = − 1 m ∑ i = 1 m [ y ( i ) l o g y ^ ( i ) + ( 1 − y ( i ) ) l o g ( 1 − y ^ ( i ) ) ] J(w,b)=\frac1m\sum_{i=1}^mL(\hat y^{(i)},y^{(i)})=-\frac1m\sum_{i=1}^m[y^{(i)}log\ \hat y^{(i)}+(1-y^{(i)})log\ (1-\hat y^{(i)})] J ( w , b ) = m 1 i = 1 ∑ m L ( y ^ ( i ) , y ( i ) ) = − m 1 i = 1 ∑ m [ y ( i ) l o g y ^ ( i ) + ( 1 − y ( i ) ) l o g ( 1 − y ^ ( i ) )] 2.4 Logistic Regression Gradient Descent
对单个样本而言,逻辑回归Loss function 表达式如下:
y ^ = a = σ ( z ) \hat y=a=\sigma(z) y ^ = a = σ ( z ) L ( a , y ) = − ( y log ( a ) + ( 1 − y ) log ( 1 − a ) ) L(a,y)=-(y\log(a)+(1-y)\log(1-a)) L ( a , y ) = − ( y log ( a ) + ( 1 − y ) log ( 1 − a )) 计算该逻辑回归的反向传播过程:
d a = ∂ L ∂ a = − y a + 1 − y 1 − a da=\frac{\partial L}{\partial a}=-\frac ya+\frac{1-y}{1-a} d a = ∂ a ∂ L = − a y + 1 − a 1 − y d z = ∂ L ∂ z = ∂ L ∂ a ⋅ ∂ a ∂ z = ( − y a + 1 − y 1 − a ) ⋅ a ( 1 − a ) = a − y dz=\frac{\partial L}{\partial z}=\frac{\partial L}{\partial a}\cdot \frac{\partial a}{\partial z}=(-\frac ya+\frac{1-y}{1-a})\cdot a(1-a)=a-y d z = ∂ z ∂ L = ∂ a ∂ L ⋅ ∂ z ∂ a = ( − a y + 1 − a 1 − y ) ⋅ a ( 1 − a ) = a − y d w 1 = ∂ L ∂ w 1 = ∂ L ∂ z ⋅ ∂ z ∂ w 1 = x 1 ⋅ d z = x 1 ( a − y ) dw_1=\frac{\partial L}{\partial w_1}=\frac{\partial L}{\partial z}\cdot \frac{\partial z}{\partial w_1}=x_1\cdot dz=x_1(a-y) d w 1 = ∂ w 1 ∂ L = ∂ z ∂ L ⋅ ∂ w 1 ∂ z = x 1 ⋅ d z = x 1 ( a − y ) d w 2 = ∂ L ∂ w 2 = ∂ L ∂ z ⋅ ∂ z ∂ w 2 = x 2 ⋅ d z = x 2 ( a − y ) dw_2=\frac{\partial L}{\partial w_2}=\frac{\partial L}{\partial z}\cdot \frac{\partial z}{\partial w_2}=x_2\cdot dz=x_2(a-y) d w 2 = ∂ w 2 ∂ L = ∂ z ∂ L ⋅ ∂ w 2 ∂ z = x 2 ⋅ d z = x 2 ( a − y ) d b = ∂ L ∂ b = ∂ L ∂ z ⋅ ∂ z ∂ b = 1 ⋅ d z = a − y db=\frac{\partial L}{\partial b}=\frac{\partial L}{\partial z}\cdot \frac{\partial z}{\partial b}=1\cdot dz=a-y d b = ∂ b ∂ L = ∂ z ∂ L ⋅ ∂ b ∂ z = 1 ⋅ d z = a − y 则梯度下降算法可表示为:
w 1 : = w 1 − α d w 1 w_1:=w_1-\alpha\ dw_1 w 1 := w 1 − α d w 1 w 2 : = w 2 − α d w 2 w_2:=w_2-\alpha\ dw_2 w 2 := w 2 − α d w 2 b : = b − α d b b:=b-\alpha\ db b := b − α d b 2.5 Gradient descent on m examples
m个样本的Cost function 表达式如下:
z ( i ) = w T x ( i ) + b z^{(i)}=w^Tx^{(i)}+b z ( i ) = w T x ( i ) + b y ^ ( i ) = a ( i ) = σ ( z ( i ) ) \hat y^{(i)}=a^{(i)}=\sigma(z^{(i)}) y ^ ( i ) = a ( i ) = σ ( z ( i ) ) J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) = − 1 m ∑ i = 1 m [ y ( i ) l o g y ^ ( i ) + ( 1 − y ( i ) ) l o g ( 1 − y ^ ( i ) ) ] J(w,b)=\frac1m\sum_{i=1}^mL(\hat y^{(i)},y^{(i)})=-\frac1m\sum_{i=1}^m[y^{(i)}log\ \hat y^{(i)}+(1-y^{(i)})log\ (1-\hat y^{(i)})] J ( w , b ) = m 1 i = 1 ∑ m L ( y ^ ( i ) , y ( i ) ) = − m 1 i = 1 ∑ m [ y ( i ) l o g y ^ ( i ) + ( 1 − y ( i ) ) l o g ( 1 − y ^ ( i ) )] Cost function 关于w和b的偏导数可以写成和平均的形式:
d w 1 = 1 m ∑ i = 1 m x 1 ( i ) ( a ( i ) − y ( i ) ) dw_1=\frac1m\sum_{i=1}^mx_1^{(i)}(a^{(i)}-y^{(i)}) d w 1 = m 1 i = 1 ∑ m x 1 ( i ) ( a ( i ) − y ( i ) ) d w 2 = 1 m ∑ i = 1 m x 2 ( i ) ( a ( i ) − y ( i ) ) dw_2=\frac1m\sum_{i=1}^mx_2^{(i)}(a^{(i)}-y^{(i)}) d w 2 = m 1 i = 1 ∑ m x 2 ( i ) ( a ( i ) − y ( i ) ) d w m = 1 m ∑ i = 1 m x m ( i ) ( a ( i ) − y ( i ) ) dw_m=\frac1m\sum_{i=1}^mx_m^{(i)}(a^{(i)}-y^{(i)}) d w m = m 1 i = 1 ∑ m x m ( i ) ( a ( i ) − y ( i ) ) d b = 1 m ∑ i = 1 m ( a ( i ) − y ( i ) ) db=\frac1m\sum_{i=1}^m(a^{(i)}-y^{(i)}) d b = m 1 i = 1 ∑ m ( a ( i ) − y ( i ) ) 算法流程如下所示:
Copy J=0; dw1=0; dw2=0; db=0;
for i = 1 to m
z(i) = wx(i)+b;
a(i) = sigmoid(z(i));
J += -[y(i)log(a(i))+(1-y(i))log(1-a(i));
dz(i) = a(i)-y(i);
dw1 += x1(i)dz(i);
dw2 += x2(i)dz(i);
db += dz(i);
J /= m;
dw1 /= m;
dw2 /= m;
db /= m;
经过每次迭代后,根据梯度下降算法,w和b都进行更新:
w 1 : = w 1 − α d w 1 w_1:=w_1-\alpha\ dw_1 w 1 := w 1 − α d w 1 w 2 : = w 2 − α d w 2 w_2:=w_2-\alpha\ dw_2 w 2 := w 2 − α d w 2 w m : = w m − α d w m w_m:=w_m-\alpha\ dw_m w m := w m − α d w m b : = b − α d b b:=b-\alpha\ db b := b − α d b 在深度学习中,样本数量m通常很大,使用for循环会让神经网络程序运行得很慢。应该尽量避免使用for循环操作,而使用矩阵运算,能够大大提高程序运行速度
2.6 Vectorizing Logistic Regression’s Gradient Output
db可表示为:
d b = 1 m ∑ i = 1 m d z ( i ) db=\frac1m \sum_{i=1}^mdz^{(i)} d b = m 1 i = 1 ∑ m d z ( i ) dw可表示为:
d w = 1 m X ⋅ d Z T dw=\frac1m X\cdot dZ^T d w = m 1 X ⋅ d Z T 单次迭代,梯度下降算法流程如下所示:
Copy Z = np.dot(w.T,X) + b
A = sigmoid(Z)
dZ = A-Y
dw = 1/m*np.dot(X,dZ.T)
db = 1/m*np.sum(dZ)
w = w - alpha*dw
b = b - alpha*db
2.7 Explanation of logistic regression cost function(optional)
y ^ \hat y y ^ 可以看成是预测输出为正类(+1)的概率:
y ^ = P ( y = 1 ∣ x ) \hat y=P(y=1|x) y ^ = P ( y = 1∣ x ) 当y=1时:
p ( y ∣ x ) = y ^ p(y|x)=\hat y p ( y ∣ x ) = y ^ 当y=0时:
p ( y ∣ x ) = 1 − y ^ p(y|x)=1-\hat y p ( y ∣ x ) = 1 − y ^ 整合到一个式子:
P ( y ∣ x ) = y ^ y ( 1 − y ^ ) ( 1 − y ) P(y|x)=\hat y^y(1-\hat y)^{(1-y)} P ( y ∣ x ) = y ^ y ( 1 − y ^ ) ( 1 − y ) 进行log处理:
l o g P ( y ∣ x ) = l o g y ^ y ( 1 − y ^ ) ( 1 − y ) = y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) log\ P(y|x)=log\ \hat y^y(1-\hat y)^{(1-y)}=y\ log\ \hat y+(1-y)log(1-\hat y) l o g P ( y ∣ x ) = l o g y ^ y ( 1 − y ^ ) ( 1 − y ) = y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) 上述概率P(y|x)越大越好,加上负号,则转化成了单个样本的Loss function ,越小越好:
L = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ) L=-(y\ log\ \hat y+(1-y)log(1-\hat y)) L = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ )) 对于所有m个训练样本,假设样本之间是独立同分布的,总的概率越大越好:
m a x ∏ i = 1 m P ( y ( i ) ∣ x ( i ) ) max\ \prod_{i=1}^m\ P(y^{(i)}|x^{(i)}) ma x i = 1 ∏ m P ( y ( i ) ∣ x ( i ) ) 引入log函数,加上负号,将上式转化为Cost function :
J ( w , b ) = − 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) = − 1 m ∑ i = 1 m [ y ( i ) l o g y ^ ( i ) + ( 1 − y ( i ) ) l o g ( 1 − y ^ ( i ) ) ] J(w,b)=-\frac1m\sum_{i=1}^mL(\hat y^{(i)},y^{(i)})=-\frac 1m\sum_{i=1}^m[y^{(i)}\ log\ \hat y^{(i)}+(1-y^{(i)})log(1-\hat y^{(i)})] J ( w , b ) = − m 1 i = 1 ∑ m L ( y ^ ( i ) , y ( i ) ) = − m 1 i = 1 ∑ m [ y ( i ) l o g y ^ ( i ) + ( 1 − y ( i ) ) l o g ( 1 − y ^ ( i ) )]