吴恩达深度学习——2.1 二分分类

本周我们会学习神经网络编程的基础知识,当要构建一个神经网络,有些技巧是相当重要的。例如,m个样本的训练集,你可能会习惯性地去用一个for循环,来遍历这m个样本。事实上,实现一个神经网络,如果要遍历整个训练集,并不需要直接使用for循环。这周的课程,你会学到如何做到。还有就是,在神经网络的计算过程中,通常有一个正向过程,或者叫正向传播过程,接着会有一个反向步骤,,也叫做反向传播过程。为什么神经网络的计算过程可以分为前向传播和反向传播两个分开的过程。本周课程中,会用logistic回归来阐述,以便你可以更好地理解。

神经网络编程基础——二元分类

吴恩达深度学习——2.1 二分分类_第1张图片
logistic回归是一个用于二分分类的算法,我们从一个问题开始。这里有一个二分分类的例子,加入你有一张图片作为输入,你想识别出此图的标签,如果是猫,输出1。如果不是,则输出0,我们用y来表示输出的结果标签。
吴恩达深度学习——2.1 二分分类_第2张图片来看一张图片,在计算机中是如何表示的,计算机保存一张图片,要保存三个独立矩阵,分别对应图片中的红、绿、蓝三个颜色通道。如果输入图片是64x64像素的,就有三个64x64的矩阵,分别对应图片中红、绿、蓝三种像素的亮度。为了方便表示,这里用三个小矩阵,它们是5x4的,并不是64x64的。要把这些像素亮度值放进一个特征向量中,就是要把这些像素值都提出来,放进一个特征向量x。为了把这些像素值取出放入特征向量,就要像下面这样定义一个特征向量x,以表示这张图片。我们把所有的像素值都取出来,例如255,231这些,直到列完所有的红色像素。接着是绿色通道的255,134,202等等。最后得到一个很长的特征向量,把图片中所有的红、绿、蓝像素强度值都列出来。如果图片是64x64的,那么向量x的总维度就是64x64x3,因为这是三个矩阵的元素数量。对于这个例子,数字是12288,把它们乘起来,这就是结果,我们用 n x = 12288 n_x=12288 nx=12288来表示输入的特征向量x的维度,有时候为了简洁,会直接用小写的 n = n x = 12288 n=n_x=12288 n=nx=12288来表示输入的特征向量的维度。

在二分分类问题中,目标是训练出一个分类器,它以图片的特征向量x作为输入,预测输出的结果标签y是1还是0。也就是预测图片中是否有猫,现在我们看看在后面的课程中需要用到的一些符号。

用一对 ( x , y ) (x,y) (x,y)来表示一个单独的样本,x是 n x n_x nx维的特征向量,标签y值为0或1。训练集由m个训练样本构成。 ( x ( 1 ) , y ( 1 ) ) (x^{(1)},y^{(1)}) (x(1),y(1))表示样本1的输入和输出, ( x ( 2 ) , y ( 2 ) ) (x^{(2)},y^{(2)}) (x(2),y(2))表示样本2的输入和输出,一直到 ( x ( m ) , y ( m ) ) (x^{(m)},y^{(m)}) (x(m),y(m))表示样本m的输入和输出,这就表示整个训练集。

用小写的字母m来表示训练样本的个数,有时候为了强调,这是训练样本的个数,可以写作 m = m t r a i n m=m_{train} m=mtrain。当说到测试集时,我们会用 m t e s t m_{test} mtest来表示测试集的样本数。最后用更紧凑的符号来表示训练集,我们定义一个矩阵,用大写的X表示,它由训练集中的 x 1 x_1 x1 x 2 x_2 x2这些组成,像这样写成矩阵的列,把 x ( 1 ) x^{(1)} x(1)放进矩阵的第一列, x ( 2 ) x^{(2)} x(2)是第二列,一直到 x ( m ) x^{(m)} x(m)是第m列,最后得到矩阵X。这个矩阵有m列,m是训练集的样本数,这个矩阵的高度记为 n x n_x nx。要注意的是,有时候矩阵X的定义,训练样本作为行向量堆叠,而不是这样列向量堆叠。构建神经网络时,一般用第一种约定形式,这会让构建过程简单许多。
吴恩达深度学习——2.1 二分分类_第3张图片
现在回顾一下,X是一个 n x × m n_x\times m nx×m的矩阵,当你用python实现的时候,你会看到X.shape,这是一条python命令用来输出矩阵的维度,表示X是一个 n x × m n_x\times m nx×m的矩阵。这就是如何将训练样本,即输入x用矩阵表示。

吴恩达深度学习——2.1 二分分类_第4张图片
那输出标签y呢?同样,为了方便,构建一个神经网络,将y标签放到列中,我们定义Y是 y ( 1 ) y^{(1)} y(1) y ( 2 ) y^{(2)} y(2)一直到 y ( m ) y^{(m)} y(m),这里y是一个 1 × m 1\times m 1×m矩阵。同样地,在python中,Y.shape等于 ( 1 , m ) (1,m) (1,m),表示这是一个 1 × m 1\times m 1×m矩阵。

在后面的课程,要实现神经网络时,你会发现,好的惯例符号能够将不同训练样本的数据联系起来,这里说的数据,不仅有x和y,还会有之后其它的量。将不同的训练样本数据取出来放到不同的列上,就像刚刚我们处理x和y那样。这门课中,在logistic回归和神经网络,要用到的符号就是这些了。

你可能感兴趣的:(吴恩达深度学习)