吴恩达深度学习第四课——卷积神经网络(第四周)

4.1什么是人脸识别?(What is face recognition?)
人脸验证(face verification)和人脸识别(face recognition)。
关于人脸验证问题(一对一):如果你有一张输入图片,以及某人的ID或者是名字,这个系统要做的是,验证输入图片是否是这个人。有时候也被称作1对1问题,只需要弄明白这个人是否和他声称的身份相符。
关于人脸识别问题(一对多):人脸识别问题比人脸验证问题难很多。
吴恩达深度学习第四课——卷积神经网络(第四周)_第1张图片
4.2 One-Shot学习(One-shot learning)
人脸识别所面临的一个挑战就是你需要解决一次学习问题,这意味着在大多数人脸识别应用中,你需要通过单单一张图片或者单单一个人脸样例就能去识别这个人。
吴恩达深度学习第四课——卷积神经网络(第四周)_第2张图片
要让人脸识别能够做到一次学习,为了能有更好的效果,你现在要做的应该是学习Similarity函数。详细地说,你想要神经网络学习这样一个用d表示的函数,它以两张图片作为输入,然后输出这两张图片的差异值。如果你放进同一个人的两张照片,你希望它能输出一个很小的值,如果放进两个长相差别很大的人的照片,它就输出一个很大的值。所以在识别过程中,如果这两张图片的差异值小于某个阈值(它是一个超参数),那么这时就能预测这两张图片是同一个人,如果差异值大于阈值,就能预测这是不同的两个人,这就是解决人脸验证问题的一个可行办法。具体过程如下图所示。
吴恩达深度学习第四课——卷积神经网络(第四周)_第3张图片
4.3 Siamese 网络(Siamese network)
上一小节中你学到的函数的作用就是输入两张人脸,然后告诉你它们的相似度。实现这个功能的一个方式就是用Siamese网络。
如下图所示,建立一个人脸识别系统的方法就是,如果你要比较两个图片的话,例如这里的第一张和第二张图片,你要做的就是分别把第一张图片和第二张图片喂给有同样参数的同样的神经网络,然后得到两个不同的128维的向量(由网络深层的全连接层计算出来的)。
吴恩达深度学习第四课——卷积神经网络(第四周)_第4张图片
x ( 1 ) x^{(1)} x(1) x ( 2 ) x^{(2)} x(2)的距离定义为这两幅图片的编码之差的范数, d ( x ( 1 ) , x ( 2 ) ) = ∣ ∣ f ( x ( 1 ) ) − f ( x ( 1 ) ) ∣ ∣ 2 2 d(x^{(1)},x^{(2)})=||f(x^{(1)})-f(x^{(1)})||^2_2 d(x(1),x(2))=f(x(1))f(x(1))22。对于两个不同的输入,运行相同的卷积神经网络,然后比较它们,这一般叫做Siamese网络架构。吴恩达深度学习第四课——卷积神经网络(第四周)_第5张图片
上图情况为一般情况。如果你改变这个网络所有层的参数,你会得到不同的编码结果,你要做的就是用反向传播来改变这些所有的参数,以确保满足这些条件。

4.4 Triplet 损失
要想通过学习神经网络的参数来得到优质的人脸图片编码,方法之一就是定义三元组损失函数然后应用梯度下降。
1、三元组损失函数
为了应用三元组损失函数,你需要比较成对的图像。你要做的通常是看一个 Anchor 图片,你想让Anchor图片和Positive图片(Positive意味着是同一个人)的距离很接近。然而,当Anchor图片与Negative图片(Negative意味着是非同一个人)对比时,你会想让他们的距离离得更远一点。
此时会出现一个情况,如果所有图像的f都是一个零向量,那么总能满足这个方程。所以为了确保网络对于所有的编码不会总是输出0,也为了确保它不会把所有的编码都设成互相相等的,该式子加入了一个超参数a,它的作用是拉大了Anchor和Positive 图片对和Anchor与Negative 图片对之间的差距。
吴恩达深度学习第四课——卷积神经网络(第四周)_第6张图片
总之,假设A,P,N是三张图片,其中A和P是同一个人,A和N不是同一个人。损失函数定义如下。只要这个损失函数小于等于0,网络不会关心它负值有多大。
吴恩达深度学习第四课——卷积神经网络(第四周)_第7张图片
当绿色下划线部分大于0时,通过最小化这个损失函数达到的效果就是使这部分成为0,或者小于等于0。
吴恩达深度学习第四课——卷积神经网络(第四周)_第8张图片
下图为一个10000个图片的训练集中整个网络的代价函数J。
吴恩达深度学习第四课——卷积神经网络(第四周)_第9张图片
2、如何选择A,P,N
如果随机选择的图片,A和N比A和P差别很大的概率很大,这样网络并不能从中学到什么。
吴恩达深度学习第四课——卷积神经网络(第四周)_第10张图片
吴恩达深度学习第四课——卷积神经网络(第四周)_第11张图片
3、小结
吴恩达深度学习第四课——卷积神经网络(第四周)_第12张图片

  • 训练这个三元组损失需要取训练集,然后把它做成很多三元组。
  • 定义了这些包括A、P和N图片的数据集之后,你还需要做的就是用梯度下降最小化我们之前定义的代价函数J,这样做的效果就是反向传播到网络中的所有参数来学习到一种编码,使得如果两个图片是同一个人,那么它们的d就会很小,如果两个图片不是同一个人,它们的 d就会很大。

4.5 人脸验证与二分类(Face verification and binary classification)
Triplet loss是一个学习人脸识别卷积网络参数的好方法,还有其他学习参数的方法,让我们看看如何将人脸识别当成一个二分类问题。
吴恩达深度学习第四课——卷积神经网络(第四周)_第13张图片
该方法是选取一对神经网络,选取Siamese网络,使其同时计算这些嵌入,比如说128维的嵌入(编号1),或者更高维,然后将其输入到逻辑回归单元,然后进行预测,如果是相同的人,那么输出是1,若是不同的人,输出是0。这就把人脸识别问题转换为一个二分类问题,训练这种系统时可以替换Triplet loss的方法。
吴恩达深度学习第四课——卷积神经网络(第四周)_第14张图片
上图为预测值y^。
吴恩达深度学习第四课——卷积神经网络(第四周)_第15张图片
总之,如上图所示,该方法把人脸验证当作一个监督学习,创建一个只有成对图片的训练集,不是三个一组,而是成对的图片,目标标签是1表示一对图片是一个人,目标标签是0表示图片中是不同的人。利用不同的成对图片,使用反向传播算法去训练神经网络,训练Siamese神经网络。

4.6 什么是神经风格迁移?(What is neural style transfer?)
利用右边照片的风格来重新创造原本的照片
吴恩达深度学习第四课——卷积神经网络(第四周)_第16张图片
4.7 CNN特征可视化(What are deep ConvNets learning?)

后面的内容我有时间再看吧,没错,我又挖坑了。。
第四周 特殊应用:人脸识别和神经风格转换(转载)

你可能感兴趣的:(笔记,神经网络)