DeepLearning三步骤
-
定义一组函数(就是函数集)其实就是神经网络(neural network)
-
判断函数的好坏(loss function)从function set中选取一个最小的Loss function
-
选择一个最好的函数
一个neural network其实就是一个function,经过一层一层的计算最后得到最后的结果
不同的情况采用不同的神经网络框架
-
真实财产(例如房地产和在线广告):标准的神经网络
-
图像领域:CNN
-
序列数据(语音和文字):RNN或者RNNs
-
更复杂的应用(无人驾驶等):复杂或者是混合的神经网络架构
神经网络简述
常见的三种神经网络:标准神经网络,CNN(卷积神经网络),RNN(循环神经网络)
CNN适用于解决图像问题,RNN适用于解决一维序列数据问题。
结构化数据:数据的数据库,每个特征都有清晰的定义;
非结构化数据:例如音频,原始音频以及图像等。
二元分类
每张彩色图片对应着红绿蓝三种颜色通道,那么如果需要保存一张图片的话,就需要存储三个矩阵,分别对应三个颜色。
-
如果图片大小为64x64像素,那么就有三个64x64的矩阵,分别对应图片中红、绿、蓝三种像素的强度值
-
为了把这些像素值放到一个特征向量中,需要把这些像素值提取出来,放入一个特征向量 x 。
首先把所有的像素都取出来,如果图片的大小为64x64像素,那么向量 x 的总维度,将是64乘以64乘以3,这是三个像素矩阵中像素的总量。在这个例子中它为12,288。现在我们用 nx=12,288 ,来表示输入特征向量的维度。有时候为了简洁,会直接用小写的 n 来表示输入特征向量 x 的维度。(n表示的是向量X的长度而不是特征)
符号定义
在这个系列课程里使用到的一些定义如下:
-
x :表示一个 nx 维数据,为输入数据,维度为 (nx, 1) ;
-
y :表示输出结果,取值为 (0, 1) ;
-
(x(i), y(i)) :表示第 i 组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据;
-
X = [x(1), x(2), ..., x(m)] :表示所有的训练数据集的输入值,放在一个 nx × m 的矩阵中,其中 m 表示样本数目;
-
Y = [y(1), y(2), ..., y(m)] :对应表示所有训练数据集的输出值,维度为 1 × m 。
-
一对(x, y) 来表示一个单独的样本, x 代表 nx 维的特征向量, y 表示标签(输出结果)只能为0或1。
定义训练集由 m 个训练样本组成时,有:
-
(x(1),y(1)) 表示第一个样本的输入和输出
-
(x(m),y(m)) 表示最后一个样本
-
有时为了强调这是训练样本的个数,会写作 Mtrain
-
当涉及到测试集的时候,我们会使用 Mtest 来表示测试集的样本数
X.shape=(nx,m) #说明x这是一个nx*m维的矩阵 Y.shape=(1,m) #说明y是一个1*m维的矩阵
Logistic Regression
Logistic Regression其实就是给定一个x,输出的是y^,代表着当x满足条件时y等于1(例如图片的话,y=1则代表着是这个类型的图片)的概率为多大,y^其实就是概率值。
那么其实就是要得到y^的值为多大。如果采用y^=wT*x+b(其中w是一个参数向量)输出的结果可能是个负数或者是大于1的,这显然在概率中不成立。所以采用σ函数作用于wT*x+b上,则y^=σ(wT*x+b),其中z=wT*x+b。
σ(z)就可以用下面这张图片来表示:g(z)就表示σ(z)
图像如下图所示:
因为要保证y^是个非负数,所以采用上图的函数来计算y^。
所以当使用logistic的时候那么需要做的就是学习调整w和b,使得y^变成一个好的估计
y^=σ(wT*x+b)(其中z=wT*x+b)的另一种表示:
当X0=1的时候,X是一个nx+1维的向量。
y^=σ(θT*X),θ=[θ0,θ1,......θnx]T,其中θ0就是等于b,θ1,......θnx就是等于w。
Logistic Regerssion cost function
损失函数是定义在单个训练样本上的,也就是就算一个样本的误差,用L表示
代价函数是定义在整个训练集上面的,也就是所有样本的误差的总和的平