当前位置:首页 >> 信息与通信 >>

学习笔记-神经网络


九、Deep Learning 的常用模型或者方法 9.1、AutoEncoder 自动编码器 Deep Learning 最简单的一种方法是利用人工神经网络的特点,人工神经网络 (ANN)本身就是具有层次结构的系统,如果给定一个神经网络,我们假设其输出与输 入是相同的,然后训练调整其参数,得到每一层中的权重。自然地,我们就得到了输入 I 的几种不同表示(每一层代表一种表示),这

些表示就是特征。自动编码器就是一种 尽可能复现输入信号的神经网络。为了实现这种复现,自动编码器就必须捕捉可以代表 输入数据的最重要的因素,就像 PCA 那样,找到可以代表原信息的主要成分。 具体过程简单的说明如下: 1)给定无标签数据,用非监督学习学习特征:

在我们之前的神经网络中,如第一个图,我们输入的样本是有标签的,即(input, target),这样我们根据当前输出和 target(label)之间的差去改变前面各层的参数, 直到收敛。但现在我们只有无标签数据,也就是右边的图。那么这个误差怎么得到呢?

如上图,我们将 input 输入一个 encoder 编码器,就会得到一个 code,这个 code 也就是输入的一个表示,那么我们怎么知道这个 code 表示的就是 input 呢?我们加一 个 decoder 解码器, 这时候 decoder 就会输出一个信息, 那么如果输出的这个信息和一 开始的输入信号 input 是很像的(理想情况下就是一样的),那很明显,我们就有理由 相信这个 code 是靠谱的。所以,我们就通过调整 encoder 和 decoder 的参数,使得重 构误差最小,这时候我们就得到了输入 input 信号的第一个表示了,也就是编码 code 了。因为是无标签数据,所以误差的来源就是直接重构后与原输入相比得到。

2)通过编码器产生特征,然后训练下一层。这样逐层训练: 那上面我们就得到第一层的 code, 我们的重构误差最小让我们相信这个 code 就是 原输入信号的良好表达了,或者牵强点说,它和原信号是一模一样的(表达不一样,反 映的是一个东西)。那第二层和第一层的训练方式就没有差别了,我们将第一层输出的 code 当成第二层的输入信号,同样最小化重构误差,就会得到第二层的参数,并且得 到第二层输入的 code,也就是原输入信息的第二个表达了。其他层就同样的方法炮制 就行了(训练这一层,前面层的参数都是固定的,并且他们的 decoder 已经没用了,都 不需要了)。

3)有监督微调: 经过上面的方法, 我们就可以得到很多层了。 至于需要多少层 (或者深度需要多少, 这个目前本身就没有一个科学的评价方法)需要自己试验调了。每一层都会得到原始输 入的不同的表达。当然了,我们觉得它是越抽象越好了,就像人的视觉系统一样。 到这里,这个 AutoEncoder 还不能用来分类数据,因为它还没有学习如何去连结 一个输入和一个类。它只是学会了如何去重构或者复现它的输入而已。或者说,它只是 学习获得了一个可以良好代表输入的特征,这个特征可以最大程度上代表原输入信号。 那么,为了实现分类,我们就可以在 AutoEncoder 的最顶的编码层添加一个分类器(例 如罗杰斯特回归、SVM 等),然后通过标准的多层神经网络的监督训练方法(梯度下 降法)去训练。 也就是说,这时候,我们需要将最后层的特征 code 输入到最后的分类器,通过有 标签样本,通过监督学习进行微调,这也分两种,一个是只调整分类器(黑色部分):

另一种: 通过有标签样本, 微调整个系统: (如果有足够多的数据, 这个是最好的。 end-to-end learning 端对端学习)

一旦监督训练完成, 这个网络就可以用来分类了。 神经网络的最顶层可以作为一个 线性分类器,然后我们可以用一个更好性能的分类器去取代它。 在研究中可以发现, 如果在原有的特征中加入这些自动学习得到的特征可以大大提 高精确度,甚至在分类问题中比目前最好的分类算法效果还要好! AutoEncoder 存在一些变体,这里简要介绍下两个: Sparse AutoEncoder 稀疏自动编码器: 当然,我们还可以继续加上一些约束条件得到新的 Deep Learning 方法,如:如果 在 AutoEncoder 的基础上加上 L1 的 Regularity 限制(L1 主要是约束每一层中的节点 中大部分都要为 0,只有少数不为 0,这就是 Sparse 名字的来源),我们就可以得到 Sparse AutoEncoder 法。

如上图,其实就是限制每次得到的表达 code 尽量稀疏。因为稀疏的表达往往比其 他的表达要有效(人脑好像也是这样的,某个输入只是刺激某些神经元,其他的大部分 的神经元是受到抑制的)。 Denoising AutoEncoders 降噪自动编码器: 降噪自动编码器 DA 是在自动编码器的基础上,训练数据加入噪声,所以自动编码 器必须学习去去除这种噪声而获得真正的没有被噪声污染过的输入。因此,这就迫使编 码器去学习输入信号的更加鲁棒的表达,这也是它的泛化能力比一般编码器强的原因。 DA 可以通过梯度下降算法去训练。

9.2、Sparse Coding 稀疏编码 如果我们把输出必须和输入相等的限制放松, 同时利用线性代数中基的概念, 即O = a1*Φ1 + a2*Φ2+….+ an*Φn, Φi 是基,ai 是系数,我们可以得到这样一个优化问题: Min |I – O|,其中 I 表示输入,O 表示输出。 通过求解这个最优化式子, 我们可以求得系数 ai 和基 Φi, 这些系数和基就是输入的 另外一种近似表达。

因此,它们可以用来表达输入 I,这个过程也是自动学习得到的。如果我们在上述 式子上加上 L1 的 Regularity 限制,得到:

Min |I – O| + u*(|a1| + |a2| + … + |an |) 这种方法被称为 Sparse Coding。通俗的说,就是将一个信号表示为一组基的线 性组合,而且要求只需要较少的几个基就可以将信号表示出来。“稀疏性”定义为:只有 很少的几个非零元素或只有很少的几个远大于零的元素。要求系数 ai 是稀疏的意思就 是说:对于一组输入向量,我们只想有尽可能少的几个系数远大于零。选择使用具有稀 疏性的分量来表示我们的输入数据是有原因的,因为绝大多数的感官数据,比如自然图 像, 可以被表示成少量基本元素的叠加, 在图像中这些基本元素可以是面或者线。 同时, 比如与初级视觉皮层的类比过程也因此得到了提升(人脑有大量的神经元,但对于某些 图像或者边缘只有很少的神经元兴奋,其他都处于抑制状态)。 稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量来更高效 地表示样本数据。虽然形如主成分分析技术(PCA)能使我们方便地找到一组“完备”基 向量,但是这里我们想要做的是找到一组“超完备”基向量来表示输入向量(也就是说, 基向量的个数比输入向量的维数要大)。超完备基的好处是它们能更有效地找出隐含在 输入数据内部的结构与模式。然而,对于超完备基来说,系数 ai 不再由输入向量唯一确 定。因此,在稀疏编码算法中,我们另加了一个评判标准“稀疏性”来解决因超完备而导 致的退化(degeneracy)问题。(详细过程请参考:UFLDL Tutorial 稀疏编码)

比如在图像的 Feature Extraction 的最底层要做 Edge Detector 的生成,那么这里 的工作就是从 Natural Images 中 randomly 选取一些小 patch,通过这些 patch 生成能 够描述他们的“基”, 也就是右边的 8*8=64 个 basis 组成的 basis, 然后给定一个 test patch, 我们可以按照上面的式子通过 basis 的线性组合得到,而 sparse matrix 就是 a,下图中 的 a 中有 64 个维度,其中非零项只有 3 个,故称“sparse”。 这里可能大家会有疑问,为什么把底层作为 Edge Detector 呢?上层又是什么呢? 这里做个简单解释大家就会明白,之所以是 Edge Detector 是因为不同方向的 Edge 就 能够描述出整幅图像,所以不同方向的 Edge 自然就是图像的 basis 了……而上一层的 basis 组合的结果, 上上层又是上一层的组合 basis…… (就是上面第四部分的时候咱们 说的那样) Sparse coding 分为两个部分: 1)Training 阶段:给定一系列的样本图片[x1, x 2, …],我们需要学习得到一组基[Φ1, Φ2, …],也就是字典。

稀疏编码是 k-means 算法的变体,其训练过程也差不多(EM 算法的思想:如果要 优化的目标函数包含两个变量,如 L(W, B),那么我们可以先固定 W,调整 B 使得 L 最 小,然后再固定 B,调整 W 使 L 最小,这样迭代交替,不断将 L 推向最小值。EM 算法 可以见我的博客:“从最大似然到 EM 算法浅解”)。 训练过程就是一个重复迭代的过程,按上面所说,我们交替的更改 a 和 Φ 使得下 面这个目标函数最小。

每次迭代分两步: a)固定字典 Φ[k],然后调整 a[k],使得上式,即目标函数最小(即解 LASSO 问题)。 b)然后固定住 a [k],调整 Φ [k],使得上式,即目标函数最小(即解凸 QP 问题)。 不断迭代,直至收敛。这样就可以得到一组可以良好表示这一系列 x 的基,也就是 字典。 2)Coding 阶段:给定一个新的图片 x,由上面得到的字典,通过解一个 LASSO 问题 得到稀疏向量 a。这个稀疏向量就是这个输入向量 x 的一个稀疏表达了。

例如:


相关文章:
学习笔记-神经网络
学习笔记-神经网络_信息与通信_工程科技_专业资料。九、Deep Learning 的常用模型或者方法 9.1、AutoEncoder 自动编码器 Deep Learning 最简单的一种方法是利用人工...
学习笔记之人工神经网络
学习笔记之人工神经网络_计算机软件及应用_IT/计算机_专业资料。摘抄的神经网络笔记简介: 人工神经网络(artificial neural network,缩写 ANN) ,简称神经网络(neural ne...
神经网络学习笔记
神经网络学习笔记_计算机硬件及网络_IT/计算机_专业资料。神经元学习笔记 1 神经网络学习笔记 发表于 2016/4/14 22:41:51 3754 人阅读 分类: machine-learning ...
神经网络学习笔记及R实现
神经网络学习笔记及R实现_计算机软件及应用_IT/计算机_专业资料。对神经网络进行了简要描述,并对神经网络中所涉及到的内容进行了具体阐述,并给出了R语言的具体实现...
神经网络实用工程学习笔记
神经网络实用工程学习笔记_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 神经网络实用工程学习笔记_计算机软件及应用_IT/计算机_专业...
Matlab神经网络自学笔记
Matlab神经网络自学笔记_计算机软件及应用_IT/计算机_专业资料。Matlab 神经网络自学...layrecnet - 分层递归神经网络。 linearlayer - 线性神经层。 lvqnet - 学习...
人工神经网络学习总结笔记
人工神经网络学习总结笔记主要侧重点: 1. 概念清晰 2. 进行必要的查询时能从书本上找到答案 第一章:绪论 1.1 人工神经网络的概述 “认识脑”和“仿脑” :...
神经网络心得
神经网络心得_学习总结_总结/汇报_应用文书。人工神经网络学习心得时间如白马过隙,很快八周的人工神经网络学习即将结束,仿佛 昨天才刚刚开始学习这门课程,在这段时间...
Deep Learning(深度学习)学习笔记整理(网上资料汇总)
Deep Learning(深度学习)学习笔记整理(网上资料汇总)_计算机软件及应用_IT/计算机...深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一 种深度...
神经网络读书笔记-李肖
神经网络读书笔记-李肖_IT/计算机_专业资料。首先从书本上了解了神经网络的起源,然后重点学习了几种经典的神经网络,并比较了各种神经网络模型的优缺点。再查阅文献,...
更多相关标签: