文章目录

  • ​​人脸识别​​
  • ​​one-shot学习​​
  • ​​siamese network(计算相似度)​​
  • ​​triplet loss​​
  • ​​三元组数据集的选择​​
  • ​​人脸验证与二分类​​
  • ​​神经网络风格迁移​​
  • ​​内容 + 风格 = 新图片​​
  • ​​CNN特征可视化​​
  • ​​代价函数​​
  • ​​内容代价函数​​
  • ​​风格代价函数​​
  • ​​封装代价函数​​
  • ​​一维到三维卷积推广​​
  • ​​1D​​
  • ​​3D​​


本文属于笔记的第一个版本,只记录了核心思想。

人脸识别

人脸识别和人脸验证问题,人脸验证通常验证一个人的照片与输入的id是否是同一个人,属于一对一问题。人脸识别要比人脸验证难得多,人脸识别是一个一对多的问题。假如你的人脸识别准确率为99%,识别100个人就可能有一个人的识别出错。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经风格转换

one-shot学习

人脸识别问题一个挑战就是我们需要解决一次学习问题(一个人一张照片),一种方法是直接将图片放入卷积网络,利用softmax输出分类是哪个人,这种方法显然不灵活,当新增一个人模型还需要增加分类重新学习,并且随着人数增多,模型的分类也会增多。
我们构建一个similarity函数,吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_代价函数_02,输出两张照片的差异值,我们希望训练的网络,同一个人的差异特别小,不同人的差异越大越好,用差异的阈值来判别是否是同一个人。

siamese network(计算相似度)

将两个输入放入有相同参数的神经网络,得到两个128维的向量,然后定义编码之差的范数吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_深度学习_03,具有相同参数的神经网络就是我们要训练的参数。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_代价函数_04

我们要训练的目标就是当是同一个人时,使上述的范数越小越好,当训练的目标不是同一个人时,范数越大越好。

triplet loss

方法之一:定义三元组损失函数

我们需要比较Anchor和Positive的距离与Anchor和Negative的距离。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_深度学习_05


我们希望有如下式子

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_代价函数_06


然后对表达式做一点修改,防止出现0<=0,增加的吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_代价函数_07间隔。此外,间隔吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_代价函数_07增大还可以增强模型的准确性。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经网络_09


然后定义损失函数:

只要左式小于等于0,损失函数就为0,如果没有达到目标,即损失函数为正,就需要最小化损失函数来达到使损失函数为0的结果。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_深度学习_10

三元组数据集的选择

关于A P N,N不要随机选择,应该选择与A相近的N,这样神经网络才能竭尽全力使NA的距离变大,神经网络可以学到更多东西。

人脸验证与二分类

我们还可以将人脸识别问题当成一个二分类问题。分类网络的输入如下图蓝色公式,如果是相同的人输出为1,如果是不同的人输出为0。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_深度学习_11


下图公式表示另一种分类网络的输入方式,叫做卡方公式。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_人脸识别_12

神经网络风格迁移

内容 + 风格 = 新图片

内容图片Content与风格图片Style训练获得生成图片Generated image

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_深度学习_13

CNN特征可视化

可视化捕捉的特征:选择一层layer将训练集经过神经网络,选择一个单元节点,找出哪些图片最大程度激活了这个的单元,并可视化其图片块。

可以发现,卷积网络每一层可以检测到的特征趋于复杂,即由浅层到深层,检测到的特征越来越具体。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经网络_14

代价函数

要构建一个神经风格迁移系统,首先为生成的图像定义一个代价函数,通过最小化代价函数,可以生成我们想要的任何图像。

假设G为生成图像,C是内容图像,S是风格图像。我们将代价函数分为两部分

内容代价吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_人脸识别_15和风格代价吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经风格转换_16

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_人脸识别_17

算法运行:首先随机初始化生成图像G,然后使用梯度下降对代价函数最小化。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经网络_18

内容代价函数

假如隐藏层很小,他会在像素上非常接近生成图片的像素;如果很深,假如图片有狗,他就会生成一只狗。所以实际中,代价层l不会太浅也不会太深。通常选择在网络的中间层。
我们要衡量一个内容图片和生成图片在内容上的相似度,我们令吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经网络_19表示图片C和G的l层的激活函数值,如果这两个激活值相似,则认为内容相似
吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_代价函数_20

风格代价函数

风格代价通过衡量风格图像S和生成图像G的风格矩阵的距离。

风格矩阵表现为l层各通道间的相关性,因而风格矩阵的维度吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经网络_21为通道数。风格矩阵的计算方式为下图,吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经网络_22通道的所有高度和宽度的对应数值相乘并加和。

风格矩阵在线性代数又称为Gram。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_代价函数_23


下图手写体表示风格图像和生成图像的风格矩阵计算方式

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经网络_24


风格矩阵计算的是两个通道的激活项数值乘积,因为如果两个通道的激活项都很大,那么吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经风格转换_25也会变得很大,如果他们不相关,那么吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经风格转换_25就会很小。然后将S和G带入风格代价函数中计算,得到两个矩阵间的误差,然后加一个F(Frobenius范数),也就是两个对应矩阵元素相减的平方和。

最后我们获得对l层定义的代价函数,两个图像S和G之间的范数再乘一个归一化常数吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_代价函数_27

我们也可以对多层卷积网络使用风格代价函数,并配置不同的权重,这样就可以学到类似边缘的低级特征以及后面的高级特征。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经风格转换_28

封装代价函数

采用梯度下降法或者其他梯度更新方法,优化算法得到生成图像G

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_神经风格转换_29

一维到三维卷积推广

1D

当应用于1D数据,与2D数据类似,这时我们只需要1x5维度的过滤器,一次做卷积,如下图,我们可以获取一个10x1的结果数据。

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_深度学习_30

3D

如下图,3D与2D并无太大区别,相当于增加一个维度,而过滤器可能为4维。CT医疗扫描是3D数据的一个实例

吴恩达深度学习 第四课 第四周 人脸识别和神经风格转换_人脸识别_31

参考第四周 特殊应用:人脸识别和神经风格转换