本文是Deep Learning Specialization系列课程的第1课《Neural Networks and Deep Learning》中Logistic Regression as a Neural Network部分的学习笔记。
内容包括:
- 逻辑回归和二进制分类
- 损失函数、代价函数和梯度递减法
- 计算图
- 正向传播和反向传播
- 向量化
1. 逻辑回归和二进制分类
逻辑回归(Logistics Regression)是用来处理二进制分类(Binary Classification)的一个算法,比如简单的是猫(1)或不是猫(0)的图像分类问题。
对一张RGB图片,计算机是以像素来存储的,假如输入的是一个6464的RGB图片,其总共大小为6464*3=12288。 那么输入数据x的维度就是nx = 12288
。
二进制分类,就是输入图片(将其转换为向量x
),通过一个分类方法,来判断这个图片上的内容(输出y
)。
这里单个训练数据就是(x, y), 其中,x是 n x n_x nx维的特征向量,y是1或0的标注数据。
当训练数据集有m个时,训练数据就可表示为
{ ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , … , ( x ( m ) , y ( m ) ) } \{
{(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), …, (x^{(m)}, y^{(m)})}\} {
(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))}
此时训练数据集中的X
就是 n x ∗ m n_x*m nx∗m维度的矩阵了,而Y
是 1 ∗ m 1*m 1∗m维度的矩阵。
逻辑回归
继续上面的二进制分类问题,当我们输入x
(比如说转变为特征向量的图片),得到 y ^ \hat y y^,这个 y ^ \hat y y^是这个标注结果y
的一个概率,即 p ( y = 1 ∣ x ) p(y=1 | x) p(y=1∣x)。
这里,x
仍是一个 n x n_x nx维度的特征向量。
对于线性回归问题,这里会涉及到两个参数:w
和b
,其中w
是和x
同维度的向量,b
是一个实数(也成为偏置,bias)。最后的方程式是:
y ^ = w T ∗ x + b \hat y = w^T * x + b y^=wT∗x+b
由于 y ^ \hat y y^是 y=1
的概率,对上面的公式,我们应该加一个函数将其限定在(0, 1)这个区间内,这个函数就叫做激活函数(Activate Function),比如sigmoid、relu函数。
输出: y ^ = σ ( w T ∗ x + b ) \hat y = \sigma (w^T * x + b) y^=σ(wT∗x+b)
sigmoid函数: σ ( z ) = 1 / ( 1 + e − z ) \sigma (z) = 1 / (1 + e^{-z}) σ(z)=1/(1+e−z)
一般情况下,我们会把w
和b
分开来处理,但可能有些研究会将其合并为统一的参数。
2. 损失函数和代价函数
由于我们的训练数据一般是一个数据集,因此针对某一个数据时,一般在对应的参数右上角加一个 ( i ) (i) (i)来标记,如:
- 输入: { ( x ( 1 ) , y ( 1 ) ) , . . . , ( x ( m ) , y ( m ) ) } \{ {(x^{(1)}, y^{(1)}),..., (x^{(m)}, y^{(m)})}\} { (x(1),y(1)),...,(x(m),y(m))}
- 输出: y ^ ( i ) \hat y^{(i)} y^(i)
则逻辑回归函数为:
y ^ ( i ) = σ ( w T ∗ x ( i ) + b ) \hat y^{(i)} = \sigma (w^T * x^{(i)} + b) y^(i)=σ(wT∗x(i)+b) where σ ( z ( i ) ) = 1 / ( 1 + e − z ( i ) ) \sigma (z^{(i)}) = 1 / (1 + e^{-z(i)}) σ(z(i))=1/(1+e−z(i))
损失函数(Loss Function)
损失函数(Loss Function)是为了量测输出值 y ^ \hat y y^是有多接近标注数据y
,表示为 ℓ ( y ^ , y ) \ell (\hat y, y) ℓ(y^,y),这里使用log函数,而不是平方误差(因为平方误差会得到带有多个局部最优值的优化问题。 因此,通过梯度下降法可能找不到全局最优值)。
ℓ