2019-03-29 15:03:55 weixin_43145361 阅读数 677
  • Fast.ai 深度学习实战课程「中文字幕」

    本课程由 Jeremy Howard 教授开设,共8节。目的是让大家在不需要深入研究高水平数学问题的情况下,学习如何建立先进的深度学习模型。 Jeremy Howard 教授结合自己参加 Kaggle 大赛并夺魁的经验认为,传统学院派的教学方式对于大多数学习者来说已经不适用,应该以问题为引导,以实践为驱动,尽快切入到核心理论和核心工具的使用上,掌握深度学习优模型的构建方法。

    17497 人正在学习 去看看 AI100讲师

这是作者经过几周的学习自己总结的深度学习的知识体系,这些知识基本是深度学习的部分必要知识,如果缺少某项知识,会对深度学习有所影响,建议对这些内容进行全面的理解。工具类,一般都是基于Python的库,当然也可以使用其他的语言进行。但是Python其简洁易用,能够极大地减少研究者的时间(通常我们认为研究者的时间比机器运行时间更宝贵),所以被广泛使用在人工智能领域。
在这里插入图片描述

理论基础

理论基础包括六块内容。

  • 初等数学
    基本的数学知识,包括代数学、方程和几何等基本的数学公式和表达的常识。
  • 高等数学
    主要是极限、微积分及一些高等数学的思想和理念。
  • 线性代数
    大学线性代码的相关内容,是卷积和神经网络的基础。
  • 概率与数理统计
    这一块在很多深度学习的内容,如分类,回归等算法中都会大量涉及。
  • 数值分析
    即数据理论在实际中的应用,如回归,降维等都会大量涉及。
  • 卷积神经网络
    这方面内容是深度学习的基础。

工具

  • Python 语言
    即 Python编程语言,作用实现的最基本工具。对很多人来说, Python编程语言拥有强大的吸引力。从1991年面世以来, Python, Perl, Ruby等语言成为最流行的解释型语言, Python和Ruby从2005年之后格外流行
    可以基于众多web框架,比如Rails (Ruby)和Django (Python)进行网站搭建。在解释型语言中,由于历史和文化上的原因, Python发展出了一个大型活跃的科学计算及数据分析社区。在过去十年里, Python已经从一个最前沿或者说“后果自负”的科学计算语言,成为数据科学、机器学习和学术/工业界通用软件开发等领在数据科学、交互式计算以及数据可视化等领域, Python经常被拿来和其他开源或商业。
  • NumPy 库
    NumPy(Numerical Python) 是Python中用于表示矩阵的基础,是Python能够进行人工智能的数据计算的基石。其底层使用C语言实现,所以可以以Python的简洁达到C语言的执行效率。
  • SciPy 库
    提供了强大的矩阵计算的功能。和 NumPy 一起,提供了强大了矩阵表示和计算功能。
  • pandas 库
    提供了一些高级数据结构和函数。从而能够和上面两个一起满足绝大部分的人工智能计算的需求。
  • matplotlib 库
    这是目前最流行的用于数据可视化的库。可以将各类数据依据一定的规则进行图形的展示
  • scikit-learn
    这是2010年才上线的基于BCD协议的一个开源项目。提供了深度学习六大领域的一些模型和算法,能够方便且免费地对其进行扩展。

深度学习的主要内容 [1]

  • 分类
    识别一个对象属于哪个分类。
    Identifying to which category an object belongs to.
  • 回归
    预测一个连续的属性与哪个值对应。
    Predicting a continuous-valued attribute associated with an object.
  • 聚集
    自动将对象进行分组合并到集合中。
    Automatic grouping of similar objects into sets.
  • 降维
    降低矩阵的维度,从而减少计算量加快计算速度。
    Reducing the number of random variables to consider.
  • 模型选择
    比较、确认和选择参数和模型。
    Comparing, validating and choosing parameters and models.
  • 预处理
    特征分离和标准化。
    Feature extraction and normalization.

参考文献
[1] scikit-learn 官网, https://scikit-learn.org/stable/

2019-05-21 16:32:26 weixin_40922555 阅读数 88
  • Fast.ai 深度学习实战课程「中文字幕」

    本课程由 Jeremy Howard 教授开设,共8节。目的是让大家在不需要深入研究高水平数学问题的情况下,学习如何建立先进的深度学习模型。 Jeremy Howard 教授结合自己参加 Kaggle 大赛并夺魁的经验认为,传统学院派的教学方式对于大多数学习者来说已经不适用,应该以问题为引导,以实践为驱动,尽快切入到核心理论和核心工具的使用上,掌握深度学习优模型的构建方法。

    17497 人正在学习 去看看 AI100讲师

深度学习应用在计算机视觉上。核心人物是猫还是车树
一张图片用三维数组表示
3001003 三个色彩通道 RGB计算机
看来是矩阵的形式,图像由像素点组成的,数组中每个元素都是像素点,每个像素点的取值范围【0,255】,像素点越大,亮度越高
做深度学习的任务步骤,跟机器学习是一样的。
1,收集数据 给定标签
2,训练一个分类器(神经网络)区别,分类0,1
3,测试,评估

k近邻算法作为深度学习的过渡
通过指定K值看距离谁比较近,谁的数目越多,属于谁
步骤
k近邻算法不需要训练。代码如下:

曼哈顿距离 欧几里得距离比较常用 前者没有平方开根号

当所有参数确定之后才能去用测试集!!非常宝贵!!
调节参数用交叉验证,把训练集分成5分,其中的一份是验证集。如下图:
在这里插入图片描述
为了保险起见,分成5分:1234 5;2345 1;1235 4;1345 2;1245 3.。
比如只拿1作为验证集,说不定1当中的数据存在误差或异常值,使得最终结果偏低。比如只拿5这个数据,可能它的数据比较简单,使得结果偏高。所以综合在一起,进行5次迭代,求sum,继续求一个平均值。通过交叉验证的方式来消除一些偏高或偏低的结果,用交叉验证而不是经验进行模型的建立。

K近邻结果不准确
因为把大部分背景考虑进来了。比如汽车和飞机图片中都有蓝天,结果就可能不准确。某些场景下k近邻不准确。下图中就是欧式距离与原始图片都是100,但是明显三个图是不一样的。所以用神经网络来进行分类。
在这里插入图片描述

神经网络
彩色图颜色通道等于3 灰度图是1,用输入和权重组合,来输出得分值 判断属于哪一个类别。
图像时32 32 3也就是3072.(1)首先转换成列向量 30721,得到的输出比如有10类,得到的是属于某一类的概率值,为101向量。所以什么样的参数才能和输入的30711的向量组合才能得到101的概率值向量呢?
WX=H
W:103072
X:3072
1
H:101
X有3072个像素点,W也是有3072个像素点,但是这是一组权重值,每一组权重值和X相乘,得到一个概率值。W一组权重参数是一个行向量,和一个列向量相乘,得到一组得分值,十个W行向量得到十组向量。再加上b 10
1。大的权重值使得结果偏大 小的权重值使得结果偏小。当前的模型认为某一个像素点他的影响程度比较大,对应的权重值就比较大。权重值不仅有大小也有正负。这个特征是积极消极作用通过正负号决定。
如下 得到了三个得分值:哪个类别得分值大,就判断属于哪个类别
权重矩阵输入和最终得分

用权重参数和输入进行线性组合。线性分类就是先找到这样一个决策边界,通过W找到倾斜程度,b确定与y轴的交点。
上图的输入样本得到一个得分值,但是是错误的类别预测错误。如何解决?这个错误呢?
损失函数
+1是定义的容忍程度

通过对比正确分类和错误分类的差值,再加1,表示容忍程度,数值越大容忍程度越大。然后与0进行比较。比0大就是有损失,比0小无损失。都是用错误的减去正确的得到结果+1。错误分类与正确分类结果差的越多 损失值越大。

2020-01-06 11:04:01 renyuzhuo0 阅读数 36
  • Fast.ai 深度学习实战课程「中文字幕」

    本课程由 Jeremy Howard 教授开设,共8节。目的是让大家在不需要深入研究高水平数学问题的情况下,学习如何建立先进的深度学习模型。 Jeremy Howard 教授结合自己参加 Kaggle 大赛并夺魁的经验认为,传统学院派的教学方式对于大多数学习者来说已经不适用,应该以问题为引导,以实践为驱动,尽快切入到核心理论和核心工具的使用上,掌握深度学习优模型的构建方法。

    17497 人正在学习 去看看 AI100讲师

image

还是这一张图,我们前几天见过了,人工智能包括机器学习,机器学习包括深度学习,那究竟什么是深度学习呢?我们先看一张图:

image

图中在以 x 轴和 y 轴组成的坐标系中,有一些点,可以看到,其中有一些是白点,有一些是黑点,这些点可以用(x,y)这样的坐标表示,我们现在要做的任务就是根据 x 和 y 这些点的坐标,找到一些规律,或者是找到一个比较好的办法、公式等去描述这些点,你是否可以根据找到的规律或者公式,判断这个点是白点还是黑点。

你已经看出来了,从左上到右下,可以画一条线,线的右上方是黑色的点,线的左下方是白色的点,没错,你可能很容易就求出这条线,但是这样描述这个问题,不够好,看下面的图:

image

除了上面那条线外,我们还可以画一条与其垂直的线,就像上图中间这样,同时我们把坐标系也转换一下,原始的坐标系不够“好”,我们将新的两条垂直的线定义为新的 x 轴和 y 轴,这时就得到了上图中的图三,这次是不是就漂亮了一些。这两个坐标系的转换比较简单,坐标的(x,y )的转换也是很简单,在后来的坐标系中,我们可以得出结论,x 大于零是黑点,x 小于零是白点。如果这是问题的一部分,这样的坐标系也会很大的简化问题。

这是一种类型的数据转换,也是比较简单的一种。我们把这种转换包装成一个盒子,我们输入一个点的坐标值,这个盒子经过上述的转换,会告诉我们结果是黑点还是白点。

上面就是一种概念上的“学习”,下面我们分析什么叫做“深度学习”。机器学习中很典型的问题就是手写数字识别,即一张手写数字的图片上,这个手写数字是几,在深度学习的模型中,会有如下的一个网络模型:

image

歪歪扭扭的一个数字图片,给了一个黑盒子,最后给出的结果是手写数字 4,这是如何得出来的结果呢?我们在这个黑盒子中,会对图片进行一些信息提取处理和加工,然后根据处理的结果进行判定,但是这个过程是复杂的,一次信息提取和加工达不到要求,因此会一步一步深入加工和处理,每处理一次,原始信息被更改的越大,信息变形越大越模糊,但是对结果有用的判定信息越来越多,将这种处理分成好多层,最终会得到最后的结果,如下图:

image

我们知道,在整个数据流中,本质上都是一些数字,不同的层次上,设置的权重数值是不一样的,因此每一层处理处的结果也是不一样的,并且会逐步接近最终的结果:

image

对于最终判定出来的结果,我们还要确定这个结果是否是正确的,这就涉及到了数据集的概念。数据集就是一些已经标记好的数据,比如十万张手写数字图片,每个图片上具体是数字几,要有人工提前标记好,这样,我们通过这个网络得出的结果与人工标记好的结果进行对比,我们就很容易得出这个网络是否是一个有效的网络,这样就可以得出一个分数或正确率,这下图中就是 Loss score:

image

有了这个 Score 究竟有什么用的?我们假设分数高代表正确率高,那么我认为设置不同权重或参数的网络,最后分数高的参数设置的比分数低的参数设置的更好或更有效,因此我可以认为我通过调整参数,就可以提高最终的正确率,这在很多情况下是一个繁琐无聊简单但是很有意义的工作,一般这种工作作为程序员都会把它交给系统去做,这就引出了下面的模型,即反馈信号,我把最终的结果反馈给中间层的参数去进行调参,直到最终的结果达到预期要求或阈值,这时的参数就是满足需求的参数,要固定下来,这就是网络训练出来的模型,下次拿来一张图片,在这个模型下,得出的结果,就有 Loss score 概率是正确的。

image

上面这个过程,就是典型的深度学习网络工作过程原理。对于一个网络,我们最初设置的参数是一个随机的值,大量的数据输入网络,网络通过反馈的机制,就会训练出一个效果还不错的模型。这样我们就可以理解一个问题,为什么神经网络是在近些年才大规模发展起来的,因为我们以前没有足够“好”的数据,近些年随着互联网的飞速发展,尤其是一些巨头公司,掌握着海量的优质数据,则进行学习训练出的模型自然会更加有效,同时由于这个过程繁琐而运算量极大,因此也是近些年硬件性能提高后提供了条件。

一般情况下,进行深度学习的网络叫做神经网络,这明显是一个生物学上的词汇,但其实人类大脑的思考过程与计算机中的神经网络,并没有那么明显的相像之处,这个问题就不深究了,了解一下就好了。

现在你理解了什么叫深度学习了吗?理解什么叫神经网络了吗?
公众号原文

2017-12-15 22:36:03 shenxiaolu1984 阅读数 7756
  • Fast.ai 深度学习实战课程「中文字幕」

    本课程由 Jeremy Howard 教授开设,共8节。目的是让大家在不需要深入研究高水平数学问题的情况下,学习如何建立先进的深度学习模型。 Jeremy Howard 教授结合自己参加 Kaggle 大赛并夺魁的经验认为,传统学院派的教学方式对于大多数学习者来说已经不适用,应该以问题为引导,以实践为驱动,尽快切入到核心理论和核心工具的使用上,掌握深度学习优模型的构建方法。

    17497 人正在学习 去看看 AI100讲师

本文尝试用最简明直白的图示,帮助理解和记忆Receptive Field的计算方法。

什么是Receptive Field?

在CNN中,第n层特征图中一个像素,对应第1层(输入图像)的像素数,即为该层的Receptive Field,简称RF。

基本思路

网络第1层输入,第n层输出。
k层和第k+1层之间的滤波器,其尺寸为fk,步长为sk

为书写简洁,此处用一维尺寸代替二维。

采用递归的思路:

  • rk表示第n层特征图中的一个像素,对应第k层特征图的像素数。
  • 从最深一层倒序向前计算,r1即为第n层的RF。

计算方法

最深一层本身的一像素和自己一一对应:rn=1
这里写图片描述

假设已经计算出,最深一层一个像素对应第k+1层的rk+1个像素。

现在的问题是,它对应多少个k层像素?换言之,红色部分有多长?

这部分由两部分组成:

  • 蓝色:每段长度为本层滤波器步长sk,共有rk+11段。
  • 绿色:每段长度为滤波器一半尺寸fk/2,左右各有一段。

于是有:

rk=(rk+11)sk+fk

2019-09-06 17:19:55 OpenSceneGraph 阅读数 553
  • Fast.ai 深度学习实战课程「中文字幕」

    本课程由 Jeremy Howard 教授开设,共8节。目的是让大家在不需要深入研究高水平数学问题的情况下,学习如何建立先进的深度学习模型。 Jeremy Howard 教授结合自己参加 Kaggle 大赛并夺魁的经验认为,传统学院派的教学方式对于大多数学习者来说已经不适用,应该以问题为引导,以实践为驱动,尽快切入到核心理论和核心工具的使用上,掌握深度学习优模型的构建方法。

    17497 人正在学习 去看看 AI100讲师

基于深度学习的医学图像分割模型研究_曹祺炜

1.基于改进的3D-FCN+CRF以及MS-CapsNetGAN实现脑肿瘤图像分割

图像语义分割,简单而言就是给定一张图片,对图片上的每一个像素点分类,不同颜色代表不同类别。图像分割的主要步骤:图像预处理、数据准备以及图像特征提取、分类器分类和后期处理。前端使用FCN进行特征粗提取,后端使用CRF/MRF优化前端的输出,最后得到分割图。

  • FCN-全卷积网络

此处的FCN主要使用了三种技术:卷积化(Convolutional),上采样(Upsample),跳跃结构(Skip Layer)。

卷积化即是将普通的分类网络丢弃全连接层,换上对应的卷积层即可。上采样即是反卷积,框架不同名字不同,Caffe和Kera里叫Deconvolution,而tensorflow里叫conv_transpose。忽略连接结构的作用就在于优化结果,因为如果将全卷积之后的结果直接上采样得到的结果是很粗糙的,所以作者将不同池化层的结果进行上采样之后来优化输出。

  • MRF-马尔科夫随机场

随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。举词性标注的例子:假如我们有一个十个词形成的句子需要做词性标注。这十个词每个词的词性可以在我们已知的词性集合(名词,动词...)中去选择。当我们为每个词选择完词性后,这就形成了一个随机场。

马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,和与其不相邻的位置的赋值无关。继续举十个词的句子词性标注的例子:如果我们假设所有词的词性只和它相邻的词的词性有关时,这个随机场就特化成一个马尔科夫随机场。比如第三个词的词性除了与自己本身的位置有关外,只与第二个词和第四个词的词性有关。 

  • CRF-条件随机场

CRF是马尔科夫随机场的特例,它假设马尔科夫随机场中只有和两种变量,一般是给定的,而一般是在给定的条件下我们的输出。这样马尔科夫随机场就特化成了条件随机场。在我们十个词的句子词性标注的例子中,是词,是词性。因此,如果我们假设它是一个马尔科夫随机场,那么它也就是一个CRF。

对于CRF,我们给出准确的数学语言描述:设与是随机变量,是给定时的条件概率分布,若随机变量构成的是一个马尔科夫随机场,则称条件概率分布是条件随机场。

è¿éåå¾çæè¿°
①条件随机场保留了隐含马尔可夫模型的一些特性,比如图中的y1,y2,..y1,y2,..等状态的序列还是一个马尔可夫链。
②在图中,顶点x1,y1x1,y1代表一个个随机变量,顶点之间的弧代表他们之间的依赖关系,采用概率分布P(x1,y1)来描述。
③它的特殊性在于变量之间要遵守马尔可夫假设,即每个状态的转移概率只取决于相邻的状态,这一点,它和贝叶斯网络相同。不同之处在于贝叶斯网络是有向图,而条件随机场是无向图,

2.图像分割结果评判标准:

除对分割结果定性分析之外,对分割结果的定量比较显得更为重要。Dice 相似系数(Dice  Similarity  Coefficient,  DSC)法被广泛应用于评估图像分割算法性能的度量,此外,准确率(Accuracy)、精确度(Precision)、召回率(Recall)、过分割率、欠分割率(Under-segmentation  Error,  UE)、真阳性率(True  Positive  Rate,  TPR)和阳性预测值(positive  predictive  value,  PPV)等指标也经常被用作评估算法的分割结果。 精确率指的是输出结果中正确像素点占总像素点的比例,召回率指的是正确像素点占传统人工分割结果中的比例,精确率与召回率的调和均值用 F1-score 表示,F1-score 值越高,则说明算法的分割效果越好,当 F1-score=1 时,表示试验所得的结果与参考标准一致。

https://blog.csdn.net/woshisunwen/article/details/84308996

3.图像分割方法的分类:基于阈值/边缘/区域/活动轮廓模型/模糊聚类算法/数学形态学/神经网络的图像分割

 基于神经网络的图像分割:

通常,CNN 由卷积,池化和完全连接的神经网络层组成。卷积层利用空间相关性在输入图像中,通过共享滤波器内核权重来计算每个特征映射。池化层允许减少每个输入要素图的尺寸,同时保留最相关的要素响应。每个 CNN 层的输出通常馈送到非线性激活功能。使用非线性激活函数允许我们在输入图像和期望输出之间建模非常复杂的映射。

CNN 的一个缺点是当卷积特征被馈送到网络的完全连接层时,图像的空间信息丢失。然而,空间信息对于语义分割任务尤其重要。因此,Long 等人提出全卷积网络FCN 克服这个限制。在 FCN 中,CNN 的最终密集连接层由转置卷积层代替,以便将学习的上采样应用于网络内的低分辨率特征映射。该操作可以在执行语义分割的同时恢复输入图像的原始空间维度。类似的网络结构已成功应用于医学成像中的语义分割任务和生物医学图像的分割。从共聚焦显微镜等模式扩展到 3D 生物医学成像数据或磁共振成像。在典型的 FCN 架构中,可以利用跳过连接来连接网络的不同级别,以便保留更接近原始图像的图像特征。这有助于网络实现更详细的分割结果。 

https://blog.csdn.net/caoniyadeniniang/article/details/76014526

4.模糊聚类算法FCM(FCM算法是目前比较流行的一种模糊聚类算法)

  • (1)基于模糊关系的分类法:其中包括谱系聚类算法(又称系统聚类法)、基于等价关系的聚类算法、基于相似关系的聚类算法和图论聚类算法等等。它是研究比较早的一种方法,但是由于它不能适用于大数据量的情况,所以在实际中的应用并不广泛。
  • (2)基于目标函数的模糊聚类算法:该方法把聚类分析归结成一个带约束的非线性规划问题,通过优化求解获得数据集的最优模糊划分和聚类。该方法设计简单、解决问题的范围广,还可以转化为优化问题而借助经典数学的非线性规划理论求解,并易于计算机实现。因此,随着计算机的应用和发展,基于目标函数的模糊聚类算法成为新的研究热点。
  • (3)基于神经网络的模糊聚类算法:它是兴起比较晚的一种算法,主要是采用竞争学习算法来指导网络的聚类过程。

5.体素

体素是体积元素(Volume Pixel)的简称,包含体素的立体可以通过立体渲染或者提取给定阈值轮廓的多边形等值面表现出来。一如其名,是数字数据于三维空间分割上的最小单位,体素用于三维成像、科学数据与医学影像等领域。

体素成像是一种在二维图像显示器上显示体数据的方法。这些体数据可能是在三维空间物体采样的结果,例如人脑的磁共振图像。通过体素成像,三维空间采样点的集合可以转换成计算机二维屏幕上有意义的图像。体素成像与传统图形显示方法的思想截然不同,它的最大特点就在于放弃了传统图形学中体由面构造这一约束,在不构造物体表面几何描述的情况下直接对体数据进行显示,采用体绘制光照模型直接从三维数据场中绘制出各种物理量的分带晴况,也就是说,直接研究光线穿过三维体数据场时的变化,得到最终的绘制结果。能够描述物体内部结构是体素成像最大的优势。

6.胶囊网络

解决了CNN的问题:CNN的组件的朝向和空间上的相对关系对它来说不重要,它只在乎有没有特征。还有就是池化层:不仅减少了参数,还可以避免过拟合。但是,它的确抛弃了一些信息,比如位置信息。同一物体,尽管拍摄的角度不同,但你的大脑可以轻易的辨识这是同一对象,CNN却没有这样的能力。所以,CapsNet应运而生。

例如输入一张手写字的图片。首先对这张图片做了常规的卷积操作,得到ReLU Conv1;然后再对ReLU Conv1做卷积操作,并将其调整成适用于CapsNet的向量神经元层PrimaryCaps,而不是以往的标量神经元。

神经网络和胶囊网络区别: 神经网络每个神经元输出的是一个标量,胶囊网络输出是一个向量。所谓胶囊就是一个向量,它可包含任意个值,每个值代表了当前需要识别的物体的一个特征。结合之前对传统CNN的学习,我们知道,卷积层的每个值,都是上一层某一块区域和卷积核完成卷积操作,即线性加权求和的结果,它只有一个值,所以是标量。而我们的胶囊网络,它的每一个值都是向量,也就是说,这个向量不仅可表示物体的特征、还可以包括物体的方向、状态等。

PrimaryCaps到DigitCaps层的传播也就是CapsNet和以往CNN操作的最大区别。DigitCaps中一共10个向量,每个向量中元素的个数为16。对这10个向量求模,求得模值最大的那个向量代表的就是图片概率最大的那个分类。因为胶囊网络中:用向量模的大小衡量某个实体出现的概率,模值越大,概率越大。

 

没有更多推荐了,返回首页