残差网络 (ResNet)(TensorFlow)
随着我们设计越来越深的网络,深刻理解“新添加的层如何提升神经网络的性能”变得至关重要。更重要的是设计网络的能力,在这种网络中,添加层会使网络更具表现力,为了取得质的突破,我们需要一些数学基础知识。
随着我们设计越来越深的网络,深刻理解“新添加的层如何提升神经网络的性能”变得至关重要。更重要的是设计网络的能力,在这种网络中,添加层会使网络更具表现力,为了取得质的突破,我们需要一些数学基础知识。
在2014
年的ImageNet
图像识别挑战赛中,一个名叫GoogLeNet
的网络架构大放异彩。GoogLeNet
吸收了NiN
中串联网络的思想,并在此基础上做了改进。这篇论文的一个重点是解决了什么样大小的卷积核最合适的问题。毕竟,以前流行的网络使用小到
LeNet、AlexNet
和VGG
都有一个共同的设计模式:通过一系列的卷积层与汇聚层来提取空间结构特征;然后通过全连接层对特征的表征进行处理。AlexNet
和VGG
对LeNet
的改进主要在于如何扩大和加深这两个模块。或者,可以想象在这个过程的早期使用全连接层。然而,如果使用了全连接层,可能会完全放弃表征的空间结构。网络中的网络(NiN
)提供了一个非常简单的解决方案:在每个像素的通道上分别使用多层感知机。
虽然AlexNet
证明深层神经网络卓有成效,但它没有提供一个通用的模板来指导后续的研究人员设计新的网络。与芯片设计中工程师从放置晶体管到逻辑元件再到逻辑块的过程类似,神经网络架构的设计也逐渐变得更加抽象。研究人员开始从单个神经元的角度思考问题,发展到整个层,现在又转向块,重复层的模式。使用块的想法首先出现在牛津大学的视觉几何组(visual geometry group
)的VGG
网络中。通过使用循环和子程序,可以很容易地在任何现代深度学习框架的代码中实现这些重复的架构。
在LeNet
提出后,卷积神经网络在计算机视觉和机器学习领域中很有名气。但卷积神经网络并没有主导这些领域。这是因为虽然LeNet
在小数据集上取得了很好的效果,但是在更大、更真实的数据集上训练卷积神经网络的性能和可行性还有待研究。事实上,在上世纪90
年代初到2012
年之间的大部分时间里,神经网络往往被其他机器学习方法超越,如支持向量机(support vector machines
)。在计算机视觉中,直接将神经网络与其他机器学习方法进行比较也许不公平。这是因为,卷积神经网络的输入是由原始像素值或是经过简单预处理(例如居中、缩放)的像素值组成的。但在使用传统机器学习方法时,从业者永远不会将原始像素作为输入。在传统机器学习方法中,计算机视觉流水线是由经过人的手工精心设计的特征流水线组成的。对于这些传统方法,大部分的进展都来自于对特征有了更聪明的想法,并且学习到的算法往往归于事后的解释。
卷积神经网络(convolutional neural network,CNN
)是一类强大的、为处理图像数据而设计的神经网络。基于卷积神经网络架构的模型在计算机视觉领域中已经占主导地位,当今几乎所有的图像识别、目标检测或语义分割相关的学术竞赛和商业应用都以这种方法为基础。
介绍神经网络时,我们关注的是具有单一输出的线性模型。在这里,整个模型只有一个输出。注意,单个神经网络(1)接受一些输入;(2)生成相应的标量输出;(3)具有一组相关参数(parameters
),更新这些参数可以优化某目标函数。然后,当考虑具有多个输出的网络时, 我们利用矢量化算法来描述整层神经元。像单个神经元一样,层(1)接受一组输入,(2)生成相应的输出,(3)由一组可调整参数描述。当我们使用softmax
回归时,一个单层本身就是模型。然而,即使我们随后引入了多层感知机,我们仍然可以认为该模型保留了上面所说的基本架构。对于多层感知机而言,整个模型及其组成层都是这种架构。整个模型接受原始输入(特征),生成输出(预测),并包含一些参数(所有组成层的参数集合)。同样,每个单独的层接收输入(由前一层提供),生成输出(到下一层的输入),并且具有一组可调参数,这些参数根据从下一层反向传播的信号进行更新。
回想一下softmax
回归的模型架构。该模型通过单个仿射变换将我们的输入直接映射到输出,然后进行softmax
操作。如果我们的标签通过仿射变换后确实与我们的输入数据相关,那么这种方法确实足够了。但是,仿射变换中的线性是一个很强的假设。例如,线性意味着单调假设:任何特征的增大都会导致模型输出的增大(如果对应的权重为正),或者导致模型输出的减小(如果对应的权重为负)。例如,如果我们试图预测一个人是否会偿还贷款。我们可以认为,在其它条件不变的情况下,收入较高的申请人比收入较低的申请人更有可能偿还贷款。但是,虽然收入与还款概率存在单调性,但是它们不是线性相关的。收入从0增加到5万,可能比从100万增加到105万带来更大的还款可能性。处理这一问题的一种方法是对我们的数据进行预处理,使线性变得更合理,如使用收入的对数作为我们的特征。然而我们可以很容易找出违反单调性的例子。
通常,机器学习实践者用“分类”这个词来描述两个有微妙差别的问题:1.我们只对样本的“硬性”类别感兴趣,即属于哪个类别;2.我们希望得到“软性”类别,即得到属于每个类别的概率。这两者的界限往往很模糊。其中的一个原因是:即使我们只关心硬类别,我们仍然使用软类别的模型。我们从一个图像分类问题。假设每次输入是一个one-hot encoding
)。读热编码是一个向量,它的分量和类别一样多。类别对应的分量设置为1,其它所有分量设置为0,在我们的例子中,标签(1,0,0)
对应于猫,(0,1,0)
对应于鸡,(0,0,1)对应于狗:
一篇论文大体结构包括标题(title
),标题之后是作者,然后是论文的摘要(abstract
),之后是论文的介绍,就是导言(intro
),导言之后可能是你相关工作。比较重要的一部分是你提出的算法(algorithm
),你的算法之后,当然你需要证明你算法是很棒的,所以你需要做一些实验(experment
)。最后是你的结论(conclusion
),绝大部分论文都是采用这样的一个结构。你可以说我们从头到尾按照这样的结构都是可以的,但是这个世界上论文写的那么多。如果你从头读到尾的话,从时间上可能不划算。适合你的文章可能就是那么一小部分。你需要快速的找到适合你的文章,然后对其进行精读。下面给大家介绍一种方法,就是“怎么样花三遍阅读一篇论文”。