1.2 神经网络基础1
2018.02.16-2018.02.18三天时间本人将陆续学习吴恩达(Andrew Ng)教授的深度学习课程第一部分神经网络和深度学习第二周神经网络基础的内容,下面是该专题第一天的学习笔记:
0. 引言
0.1 神经网络是如何遍历一个由m个样本组成的数据集呢?
一般情况下,要遍历一个有m个样本的数据集我们的习惯是用for循环进行遍历,而神经网络算法中并不需要直接使用for循环就可以遍历训练数据集中的所有样本数据。
0.2 为什么神经网络的计算过程可以分为正向传播和反向传播两个分开的过程?
神经网络计算过程一般采用正向过程(forward pass)或正向传播步骤( forward propagation step)和反向过程(backward pass)或反向传播步骤(backward propagation step) 两个独立的过程进行学习。
上述两个问题Andrew均通过logistic回归(logistic regression)算法来进行阐释。
1. 二分分类Binary Classification
logistic回归(logistic regression)是一个用于二分分类的算法。下面以识别图片中是否有猫为例进行说明:用一个标签标记一张图片是否有猫,结果只有两种:如果有猫,则输出结果为1;如果不是猫咪,则输出结果为0。这个输出结果标签记为y。
要想使用计算机进行图像识别,首先我们需要了解计算机中是如何存储一张图片的呢?
要想使用计算机进行图像识别,首先我们需要了解计算机中是如何存储一张图片的呢?
图1 图片的特征向量说明在计算机中,将一张图片保存成三个独立矩阵,各个矩阵分别代表了图片的红、绿、蓝三个颜色通道,即RGB值。图片的大小决定了矩阵的行列数,如图片是
64px*64px
的,则用三个64*64
的矩阵来代表图片的RGB亮度值。
在神经网络计算过程中,需要用特征向量(feature vector)来代表每个矩阵,输入特征向量的维度nx=矩阵行数矩阵列数3,一个图片的特征向量依次为红、绿、蓝三个矩阵从上到下、从左到右数字的遍历。
图2 一张图片的特征向量 二分分类问题的目标是:训练出一个分类器,它以图片的特征向量x作为输入,并预测输出的结果标签y是1还是0,也就是预测图片中是否有猫。下面我们用数学的形式来对训练样本进行抽象化表示:
1) 一个单独的样本用(x,y)
表示,x
是nx的特征向量,标签y
的值为0或1,则样本个数为m的训练集可表示为
{(x(1),y(1)),{(x(2),y(2)), ... , {(x(m),y(m)) },为了便于对数据集的用途进行区分,mtrain表示训练集的样本数,mtest表示测试集的样本数。
2) 在进行神经网络计算过程中,将训练样本的输入表示为一个nx*m的矩阵X,在Python中表示为:X.shape=(nx, m)。
注意:为了方便神经网络运算,将每个样本的特征向量均作为列向量进行存储。
3) 同理,训练样本输出标签y也需要用一个1*m的矩阵来表示,为了方便计算,这里每个输出标签y也作为列向量进行存储。在Python中表示为:Y.shape=(1, m)。
要实现神经网络时,良好的符号表达习惯能够将不同训练样本的数据联系起来。
图3 符号化表达识别图片中的猫的输入输出