做者 | Ryan Shrott
编译 | Sambodhi
编辑 | Vincent
AI前线出品| ID:ai-front
AI 前线导语:最近,加拿大国家银行首席分析师 Ryan Shrott 在分享吴恩达在 Coursera 上发布的深度学习课程的前三门课的学习心得后,日前再次分享了他完成的第四门课的学习心得。算法
吴恩达的机器学习课程在 Coursera 平台上已上线 5 年左右,该门课程是国内,乃至全球许多机器学习爱好者、专家学者的入门课程。整门课程深刻浅出、简洁易懂。数据库
8 月 9 日,吴恩达又宣布 deeplearning.ai 在 Coursera 平台上开设系列全新深度学习课程,包括神经网络和深度学习概述、神经网络参数调整及优化、如何搭建机器学习项目、卷积神经网络、神经网络序列模型。从课程设置上来看,涵盖了深度学习的基础理论和简单实操。这也是 deeplearning.ai 三大项目的第一个项目。微信
截止目前(2017 年 11 月 22 日),Coursera 上可用的课程是:网络
第四门课的内容是教授如何构建卷积神经网络并用它来处理图像数据。架构
Ryan Shrott 目前完成了第四门课,他表示,吴恩达在解释不少优化计算机视觉任务所需了解的复杂概念上有抽丝剥茧讲得通俗易懂的能力。他很喜欢这门课程中的如何用风格转换器创造艺术图像这一部份内容,好比将 Claud Monet(19 世纪法国印象派画家)的绘画风格和任何图像结合起来进行艺术创做,以下图所示:app
下面是 Ryan Shrott 学习以后,用 Leonid Afremov(1955-,白俄罗斯现代印象派画家)的做品《雨中的女人》(Rain Princess )的风格创做的艺术做品,你彻底能够尝试:less
在本文中,Ryan Shott 为咱们解读了第四门课的 12 堂重要的课程。AI 前线在本文的基础上亦作了一些批注,方便读者理解并掌握一些概念,在深度学习少走弯路。机器学习
第 1 课:为何计算机视觉迅速崛起?函数
大数据和算法的发展促使智能系统的测试偏差收敛到贝叶斯最优偏差,这就使得人工智能在全部领域中表现,超越了人类的水平,包括天然感知任务。开源软件 TensorFlow 使你可以使用迁移学习(teansfer learning)实现可以快速检测任何物体的目标检测系统。经过迁移学习,你只需 100~500 个样本就可让系统运行良好。手动标记 100 个样本也并不是很大的工做量,所以你能够快速获得最简可行产品。布局
第 2 课:卷积如何工做?
吴恩达解释了如何实现卷积操做,并展现如何对图像进行边缘检测。还介绍了其余滤波器,如索贝尔(Sobel)滤波器,它将更多的权重赋予边缘的中心像素。吴恩达还提到:滤波器的权重不该手工设计,而应该用登山算法来习得,如梯度降低(gradient descent)。
第 3 课:为何要使用卷积网络?
卷积网络在图像识别任务中为什么如此有效,吴恩达给出了几个哲学缘由。他介绍了两个具体缘由。第一个缘由是参数共享(parameter sharing)。这是基于图像某一部分有效的特征探测器在图像中另外一部分可能也有用的想法。例如,边缘检测器对图像中多个部分可能有用。参数共享所需的参数数量不多,以及稳健的平移不变性( translation invariance)。平移不变性是照片中的猫进行移位、旋转后仍然识别为猫的关键因素。
第二个缘由是链接的稀疏性。这个概念是指每一个输出层只是少许输入的函数(特别是滤波器尺寸的平方)。这就大大减小了网络中的参数数量,从而加快训练速度。
第 4 课:为何使用填充?
填充(padding)一般用于卷积过程当中,保持输出数据的尺寸与输入数据一致。它也用来使图像边缘附近的帧对输出的贡献同图像中心附近的帧同样多。
第 5 课:为何使用最大池化?
实证研究代表,最大池化(max pooling)在 CNN 中很是有效。经过对图像进行下采样,咱们减小了参数的数量,缩放或者方向变化(如平移、旋转)时,可以保持特征不变。
第 6 课:经典网络结构
吴恩达展现了三种经典网络架构,包括 LeNet-五、AlexNet 和 VGG-16。他的大意是,高效的网络一般具备这样的层:不断扩大的通道规模和不断降低的宽度、高度。
第 7 课:残差网络为何有效?
对普通网络而言,因为梯度降低和爆炸,训练偏差并不会随着层数增长而单调递减。这些网络具备前馈跳过链接,使你训练极其庞大的网络而不会出现性能降低的状况。
第 8 课:使用迁移学习
在 GPU 上开始训练像 inception 的大型网络可能须要花上几个礼拜,咱们应该须要下载与训练网络的权重,并从新训练最后的 softmax 层(或最后几层),这将大幅缩短训练时间。缘由是靠前的层倾向于全部图像中的概念相关,例如边缘和曲线。
第 9 课:如何在计算机视觉竞赛获胜
吴恩达说,你应该独立的训练几个网络,平均它们的输出结果来得到更好的性能。数据加强技术(data augmentation),如随机裁剪图像、水平翻转、垂直翻转,也有助于提高性能。最后,你应该使用开源的实现和与训练的模型来启动项目,而后针对你的应用的参数进行微调。
第 10 课:如何实现目标检测
吴恩达解释了图像中特征点检测(landmark detection)的概念。总的说来,这些特征点是你训练输出样本的一部分。经过一些巧妙的卷积操做,你能够获得一个输出值,告诉你这个目标在某些区域的几率及目标的位置。他还解释了如何使用交除并(intersection over union,IoU)公式评估目标检测算法的有效性。最后,吴恩达将全部这些内容整合在一块儿,讲解了著名的 YOLO 算法。
第 11 课:如何实现人脸识别
人脸识别(face recognition)是一次性的学习问题,由于您可能只有一个样本图像来识别该人。解决的办法是学习一个类似性函数,给出两个图像之间的差别程度。因此若是图像是同一我的的话,函数将输出一个较小的数值,若是是不一样的人则输出较大的数值。
人脸识别包括图像摄取、人脸定位、图像预处理、以及人脸识别(身份确认或者身份查找)。系统输入通常是一张或者一系列含有未肯定身份的人脸图像,以及人脸数据库中的若干已知身份的人脸图象或者相应的编码,而其输出则是一系列类似度得分,代表待识别的人脸的身份。
目前人脸识别的算法能够分类为:
吴恩达给出的第一个解决方案,叫暹罗网络(siamese network),该方案是在同一个网络中,分别输入两我的的图像,而后比较它们的输出。若是输出类似,则代表这两我的的图像可能来自同一我的。基于这种想法来训练网络:若是输入图像是同一我的的,那么编码距离相对较小。
吴恩达给出的第二个解决方案是三重损失法(triplet loss method)。这个想法是,你的图像有三个维度:Anchor(A)、Positive(P) 和 Negative(N),训练网络以后,A 和 P 的输出距离远小于 A 和 N 的输出距离。
第 12 课:如何使用神经风格迁移创做艺术做品
吴恩达讲解了如何将内容和风格相结合生成一个图像。示例以下图所示:
神经风格迁移的关键是要理解卷积网络中每一层学习的视觉表征。原来就是靠前的层学习简单的特征,如边缘;靠后的层则学习复杂的目标,如面孔、足部和汽车等。
要构建一个神经风格迁移图像,你只需定义一个成本函数(cost function),这是一个内容和风格类似点的凸组合(convex combination)。详细地说,这个成本函数这样表示:
凸组合是一类特殊的线性组合,是若干个点的某种特定意义下的非负线性组合。
其中,G 是生成的图像,C 是内容图像,S 是风格图像。这个学习算法简单地使用梯度降低,使与生成图像 G 相关的成本函数最小化。
步骤以下:
结论
学完这门课程以后,你将会对大量计算机视觉文献有直觉理解。课后做业让你动手将这些方法付诸实践。尽管学完这门课你并不能成为计算机视觉领域的专家,但这门课却有可能会让你在计算机视觉领域中开启潜在的思路或者事业。
参考资料
[1] Deep Learning Specialization
https://www.coursera.org/specializations/deep-learning
[2] Deep Learning Specialization by Andrew Ng — 21 Lessons Learned
[3] Computer Vision by Andrew Ng — 11 Lessons Learned
towardsdatascience.com/computer-vi…
引导语:更多的干货内容请关注微信AI前线:ID:ai-front