如何通过编程去实现一个逻辑回归?
事实上,在你实现一个神经网络的过程中,编程技巧是非常重要的。
例如,当你的训练集有m个样本的时候,一种最普通的方式是使用一个循环来遍历所有的样本。
然而,在学习完本节的课程后,你将会学到一些更优雅且高效的方法。
此外,在本节课中,我们还将会讲解神经网络的训练过程中为什么会用到前向传播和反向传播,以及前向传播与反向传播表示的含义。
为了使本节内容更加容易理解,我们将以逻辑回归为例,来讲解之前的知识点。
相信即使你之前对逻辑回归有一定的了解,你也能从本课程中学到一些不一样的知识。
下面就开始本节课的学习吧!
问题描述
逻辑回归是一个用于二分类的算法。
现在我们来看这样一个二分类的问题:给你一副图片,你需要判断这副图片中的内容是不是猫。如果是猫的话,输出为1,否则输出为0。
我们用x表示输入图像,用y表示输出的标签。
对于上面这副图像,我们需要用一个三个矩阵来表示该图像。三个矩阵分别对应着R、G、B图像。
假设我们输入图像的大小为64*64,那么我们的整个输入图像的存储大小为3*64*64。
为了将整个图像作为一个输入向量,我们需要对该图像进行转换,转换最终的结果将会得到一个长度为64*64*3=12288的向量。
此时,我们认为我们输入向量的长度为12288。记作n
x
=12288。
目前,我们需要设计的一个二分类器就是接收一个长度为12288的特征向量x,并得到一个预测结果y(可以是0或者1)。
数学符号
现在,让我们来梳理一下本课程会涉及到的一些数学符号。
一对训练Case我们记作是(x, y),其中x表示的输入特征向量,y表示的是输出标签。
训练集的规模使用小写字母m来表示。
即(x
1
, y
1
)表示第一对训练用例,(x
2
, y
2
)表示第二对训练用例...(x
m
, y
m
)表示第m对训练用例。
此外,我们用大写的X表示整个训练集。
其中,x
1
,x
2
,x
m
分别表示X的第1列、第二列和第m列。且每个x的长度为n
x
。即X的大小为n
x
*m。在Python代码中:
- X.shape = (nx, m)
接下来,我们讨论一下输出。为了与输入一致,我们同样需要定义一个大写字母Y。
其中,Y是由y
1
,y
2
...y
m
组成。即Y的大小为1*m。即