卷积神经网络 (CNN)(TensorFlow)
卷积神经网络(convolutional neural network,CNN
)是一类强大的、为处理图像数据而设计的神经网络。基于卷积神经网络架构的模型在计算机视觉领域中已经占主导地位,当今几乎所有的图像识别、目标检测或语义分割相关的学术竞赛和商业应用都以这种方法为基础。
卷积神经网络(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
),绝大部分论文都是采用这样的一个结构。你可以说我们从头到尾按照这样的结构都是可以的,但是这个世界上论文写的那么多。如果你从头读到尾的话,从时间上可能不划算。适合你的文章可能就是那么一小部分。你需要快速的找到适合你的文章,然后对其进行精读。下面给大家介绍一种方法,就是“怎么样花三遍阅读一篇论文”。
为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。通常,我们需要做两件重要的事:1
.获取数据;2
.将数据读入计算机后对其进行处理。如果没有某种方法来存储数据,那么获取数据是没有意义的。首先,我们介绍n
维数组,也称为张量(tensor
)。使用过Python
中NumPy
计算包。无论使用哪个深度学习框架,它的张量类(在MXNet
中为ndarray
,在PyTorch
和TensorFlow
中为Tensor
)都与Numpy
的ndarray
类似。但深度学习框架又比Numpy
的ndarray
多一些重要功能:首先,GPU
很好地支持加速计算,而NumPy
仅支持CPU
计算;其次,张量类支持自动微分。这些功能使得张量类更适合深度学习。
深度与交叉网络(DCN
)旨在有效地学习显式的、有边界的交叉特征,你已经知道大而稀疏的特征空间极难训练。通常我们执行特征工程,包括设计交叉特征,这是非常具有挑战性且效率低下的。虽然在这种情况下可以使用其它神经网络,但这并不是最有效的办法。深度与交叉网络是专门为应对这一挑战而设计的。在深入了解DCN
之前,我们首先花一点时间回顾一下,什么是特征交叉?假设我们正在构建一个推荐系统来向客户销售搅拌机,那么我们客户过去的购买历史记录,例如购买的香蕉和购买的烹饪书籍或地理特征都是单一特征。如果一个人同时购买了香蕉和烹饪书籍,那么该客户将更有可能点击推荐的搅拌机。购买的香蕉和购买的烹饪书籍的组合被称为特征交叉,它提供了除单个特征之外附加交互信息。你可以添加更多交叉特征。在真实的推荐系统当中,我们通常拥有大而稀疏的特征空间,因此,在这种情况下识别有效的特征,通常需要执行特征工程或详尽的搜索,这是非常低效的。