指所有训练数据完成一次前向和后向传递, 与batch大小有关.
多层感知器, 是一种前向结构的人工神经网络, 映射一组输入向量到一组输出向量. MLP可以被看作是一个有向图, 由多个的节点层所组成, 每一层都全连接到下一层. 除了输入节点, 每个节点都是一个带有非线性激活函数的神经元(或称处理单元). 一种被称为反向传播算法的监督学习方法常被用来训练MLP. MLP是感知器的推广, 克服了感知器不能对线性不可分数据进行识别的弱点.
若每个神经元的激活函数都是线性函数, 那么, 任意层数的MLP都可被约简成一个等价的单层感知器.
实际上, MLP本身可以使用任何形式的激活函数, 譬如阶梯函数或逻辑乙形函数(logistic sigmoid function), 但为了使用反向传播算法进行有效学习, 激活函数必须限制为可微函数. 由于具有良好可微性, 很多S函数, 尤其是双曲正切函数(Hyperbolic tangent)及逻辑函数, 被采用为激活函数.
卷积核的种类(也就是宽度)对应了网络的宽度, 卷积层数对应了网络的深度. 这两者对网络的拟合都有影响. 但是在现代深度学习中, 大家普遍认为深度比广度的影响更加高.
tensorflow 使用一种叫 tensor 的数据结构去展示所有的数据, 我们可以把 tensor 看成是 n 维的 array 或者 list. 在 tensorflow 的各部分图形间流动传递的只能是tensor.
rank 就是 tensor 的维数.
例如我们所说的标量(Scalar):
s = 8
维数为 0, 所以它的 rank 为 0.
例如矢量(Vector):
v = [1, 2, 3]
, rank 为 1.
标注出图像中每个像素点的对象类别, 要求不但给出具体目标的位置, 还要描绘物体的边界, 如图像分割、语义分割、边缘检测等等.
基于深度学习主要的做法有两种:
- 基于图像分块:利用像素、超像素块周围小邻域进行独立的分类. (在分类网络中使用全连接层, 固定图像块尺寸)
- 基于全卷积网络:对图像进行pixel-to-pixel 的预测, 可以得到任意大小的图像分割结果, 而且不需要对每个图像块进行分类, 速度快. 重要的两点:卷积层上采样、skip connection结构
https://www.cnblogs.com/fanhaha/p/7810419.html
The goal of semantic segmentation is to predict a class for each pixel. The architecture above shows the “patch-wise” approach (Ciresan et al. 2012).
While a CNN for classification outputs the probability of the entire image belonging to each class in question, a CNN for segmentation assigns a label to each pixel (or “voxel” if the image is 3D). An early approach to segmentation was to run patches of pixels, centered around the pixel of interest, through a CNN classifier (Ciresan et al. 2012). Doing this for each pixel produces the segmented image. Following Akkus et al. (2017), we will call this “patch-wise” segmentation. Although relatively simple, this approach is currently one of the most common for MRI segmentation tasks.
FCN文章中多次强调, FCN是一个end-to-end的.
end-to-end概念:输入是原始数据, 输出是想要的最终结果.
举例:
- R-CNN不是end-to-end, 因为还要单独进行region proposal.
- Faster R-CNN是end-to-end, 因为region proposal也包含在系统中.
- YOLO是end-to-end.
有些翻译叫“反卷积”(deconvolution), 但不合适. “转置卷积”(transposed convolution)这个翻译更恰当.
在FCN的后期, 使用转置卷积结构进行“上采样”.
FCN论文中的解释:卷基的forward、backward操作对调, 就是转置卷积. 即转置卷积的forward就是普通卷积的backward, 转置卷积的backward就是普通卷积的forward.
对于转置卷积有两种理解:
但是实际上转置卷积存在“棋盘效应”,更推荐使用双线性插值上采样外加普通卷积操作。
- Github: Convolution arithmetic(各种卷积、反卷积示意图, 非常推荐)
- Transposed convolution arithmetic
- 知乎文章:反卷积层/转置卷积层--transposed convolution arithmetic
- 知乎提问:如何理解深度学习中的deconvolution networks?
- 知乎提问:怎样通俗易懂地解释反卷积?
- 反卷积与棋盘效应
- 『计算机视觉』棋盘效应
什么是监督学习、无监督学习、强化学习、弱监督学习、半监督学习、多示例学习?
随着机器学习问题不断深入人心,人们也将现实中遇到不同的问题分为不同的学习方式,其中,最基础的应属监督学习,无监督学习和强化学习了。
- 监督学习(supervised learning):已知数据和其一一对应的标签,训练一个智能算法,将输入数据映射到标签的过程。监督学习是最常见的学习问题之一,就是人们口中常说的分类问题。比如已知一些图片是猪,一些图片不是猪,那么训练一个算法,当一个新的图片输入算法的时候算法告诉我们这张图片是不是猪。
- 无监督学习(unsupervised learning):已知数据不知道任何标签,按照一定的偏好,训练一个智能算法,将所有的数据映射到多个不同标签的过程。相对于有监督学习,无监督学习是一类比较困难的问题,所谓的按照一定的偏好,是比如特征空间距离最近,等人们认为属于一类的事物应具有的一些特点。举个例子,猪和鸵鸟混杂在一起,算法会测量高度,发现动物们主要集中在两个高度,一类动物身高一米左右,另一类动物身高半米左右,那么算法按照就近原则,75厘米以上的就是高的那类也就是鸵鸟,矮的那类是第二类也就是猪,当然这里也会出现身材矮小的鸵鸟和身高爆表的猪会被错误的分类。
- 强化学习(reinforcement learning):智能算法在没有人为指导的情况下,通过不断的试错来提升任务性能的过程。“试错”的意思是还是有一个衡量标准,用棋类游戏举例,我们并不知道棋手下一步棋是对是错,不知道哪步棋是制胜的关键,但是我们知道结果是输还是赢,如果算法这样走最后的结果是胜利,那么算法就学习记忆,如果按照那样走最后输了,那么算法就学习以后不这样走。
- 弱监督学习(weakly supervised learning):已知数据和其一一对应的弱标签,训练一个智能算法,将输入数据映射到一组更强的标签的过程。标签的强弱指的是标签蕴含的信息量的多少,比如相对于分割的标签来说,分类的标签就是弱标签,如果我们知道一幅图,告诉你图上有一只猪,然后需要你把猪在哪里,猪和背景的分界在哪里找出来,那么这就是一个已知若标签,去学习强标签的弱监督学习问题。
- 半监督学习(semi supervised learning):已知数据和部分数据一一对应的标签,有一部分数据的标签未知,训练一个智能算法,学习已知标签和未知标签的数据,将输入数据映射到标签的过程。半监督通常是一个数据的标注非常困难,比如说医院的检查结果,医生也需要一段时间来判断健康与否,可能只有几组数据知道是健康还是非健康,其他的只有数据不知道是不是健康。那么通过有监督学习和无监督的结合的半监督学习就在这里发挥作用了。
- 多示例学习(multiple instance learning):已知包含多个数据的数据包和数据包的标签,训练智能算法,将数据包映射到标签的过程,在有的问题中也同时给出包内每个数据的标签。多事例学习引入了数据包的概念,比如说一段视频由很多张图组成,假如1000张,那么我们要判断视频里是否有猪出现,一张一张的标注每一帧是否有猪太耗时,所以人们看一遍说这个视频里有猪或者没猪,那么就得到了多示例学习的数据,1000帧的数据不是每一个都有猪出现,只要有一帧有猪,那么我们就认为这个包是有猪的,所有的都没有猪,才是没有猪的,从这里面学习哪一段视频(1000张)有猪哪一段视频没有就是多事例学习的问题。