《Neural Networks for Machine Learning》学习二

前言

课程地址:https://www.coursera.org/learn/neural-networks/home/week/1‘’
【Lecture 2】百度云下载地址:链接:http://pan.baidu.com/s/1nvMynhR 密码:ru3y

神经网络架构概览

前馈神经网络(Feed-Forward neural network)

在实际应用中最为常见

——第一层是输入,最后一层是输出

——如果隐单元多于一层,我们称为“深度”神经网络

它们计算了一系列的转换(参数),可改变样本之间的相似度

——每一层的活跃神经元是其下层(below)活跃神经元的非线性函数


循环神经网络(Recurrent Network)

连接图中具有有向环

——意味着沿着箭头,可能回到了最初的出发点

可以有复杂的动态特性,这使得它们很难训练

——寻找有效率的训练方法是当前比较热门的一个研究

它们更具有生物学真实性(biologically realistic)


循环神经网络具有多个隐藏层,而且是具有隐单元->隐单元(hidden->hidden)连接丢失的一个特殊的案例

为序列建模的循环神经网络

循环神经网络是为序列数据建模比较自然(nature)的一种方法

——等价于每一个时间片就具有一个隐藏层的非常深的网络

——除了在每一个时间片使用相同的权重外,还在每个时间片接受输入

在隐藏层具有为长时间序列记忆信息的能力

——就是使用这个潜力(potential)去训练网络比较难


循环神经网络所能做的一个实例

※IIya Sutskever(2011)训练了一个特殊的循环神经网络,可以预测一个序列的下一个字符

※使用来自英文的维基百科中具有五亿(half a billion)字符的一个字符串训练了很久,就可以生成新的text文档

——生成的方法是预测下一个字符的概率分布,然后从这个分布中采样一个字符出来

——下面介绍它生成的一个text文档。请注意它到底知道多少事情

※IIya Sutskever的循环神经网络生成的文档(每个时间点生成一个字符)


对称连接神经网络(Symmetrically connected network)

与循环神经网络类似,但是单元之间的连接是对称的(每个方向具有相同的权重)

——John Hopfield(和其他人)认识到对称神经网络比分析一个循环神经网络更简单

——对于他们所能做的也有很多限制,因为违背了能量函数(energy function)

※比如它们不能模拟循环

具有对称连接的神经网络称为“Hopfield nets”

具有隐层的对称连接神经网络

这些称为“玻尔兹曼机(Boltzmann Machine)”【终于Hinton老爷子在第二节课忍不住把成名作拿出来了】

——比Hopfield nets更具有能力
——比循环神经网络差点

——具有非常“漂亮”的简单地学习方法(难道是吉布斯采样?对比散度?)

第一代神经网络

统计模式识别的标准范例

1.将原始输入向量转换为激活特征向量

——手写案例中使用常识或者经验来定义特征

2.学习如何为激活特征加权重,去获取单独的梯度量(single scalar quantity)

3.如果这个量超过某个阈值,就可以决定输入向量是目标类别的一个正向激励样本,感觉就是说如果大于阈值,就说这个样本是属于这个类别的。

标准感知器结构



感知器历史

在20世纪60年代早期(1960's)被Frank Roseblatt 变换形式(popularised)

——开始具有好的(powerful)学习算法

——有大量的声明称他们可以学习去干什么

在1969年,Minsky和Papert出版了一本书叫做“Perceptrons”,分析它们能做什么以及他们的限制

——很多人认为这些限制是所有神经网络模型共有的

感知学习过程在如今依旧被广泛使用,即使是那些具有数以百万计特征的巨大特征向量的任务中

二值阈值神经元(决策单位)

McCulloch-Pitts(1943)

——第一次从其他神经元计算输入的加权和(加上一个偏置)【应该就是所谓的wx+b】

——如果加权和超出0,就输出一个1


如何像学习权重一样使用相同的规则去学习偏置

一个阈值等价于具有一个负的偏置(negative bias)【自我感觉训练的时候这个负不负无所谓吧,反正都是自动学习的,不管你怎么初始化】

我们可以通过使用一个小技巧去避免必须为偏置指定一个单独的学习规则

—— 一个偏置完全等价于在输入行的一个额外的激活值为1对应的一个权重【比较拗口,我的理解就是,这样wx就等于wx+b了】

——这样我们就可以学习一个偏置,这时候这个偏置就像一个权重了


感知器收敛过程:训练二值输出神经元作为分类器的情况

在每一个输入向量的尾部增加一个额外值1,“偏置”权重在这个成分上的阈值是负(minus)的,现在我们可以忘掉这个阈值。

可以使用任何策略去保证每一个训练样本都会被丢到网络中训练

——如果输出单元是正确的,就单独留下权重

——如果输出单元是错误的,且输出为0,就将输入向量加到权重向量

——如果输出单元是错误的,且输出为1,就将输入向量从权重向量中减去

这保证了寻找到一组权重,能够为所有的训练样本得到正确的答案(如果有这样的集合存在的话)

感知器的几何角度观点

注意

如果是非数学专业的,这一部分可能比前面难点

——你需要使用很长时间去学习接下来的两部分

如果你没有尝试过在高维空间中思考超平面(hyper-planes),那么现在就是学习的时机。

在14维空间中处理超平面,可视化3D空间以及大声对自己说“十四”,每个人都做~~~【这是闹哪出?o(╯□╰)o】

※记住从13维到14维会比从2维到三维有额外的复杂度。

权重空间

这个空间中对于每一个权重都是一维

空间中的每一个点就是由所有权重合起来代表

假如我们去掉了阈值,那么每一个训练案例就可以被一个通过原点(origin)的超平面所表示

——权重必须在超平面的一侧,以获取正确答案

每一个训练样本都定义了一个平面,比如下图的黑线

——平面过原点,并且垂直于输入向量

——平面的一侧是错误的,因为权重与输入向量向量的内积(数量积scalar product)具有错误的迹象(sign)


可行解(feasible solutions)锥(cone)

【PS】cone应该是翻译成锥吧,看网上dual cone翻译成数学名词“对偶锥”

为了让训练案例都得到正确解,我们需要找到位于所有平面的正确侧的一个点

——可能根本没有这样的点

如果有任何权重对于所有的案例都有正确解,那么它们将位于一个超锥,且顶点在原点

——所以两个好的权重向量的平均也是好的权重向量

※这是一个凸问题(convex)



为什么学习会有效

为什么学习过程会有效?——第一个尝试

思考可行权重向量(feasible weight vector)和当前权重向量(current weight vector)的平方距离

——有用的要求:每次感知器发生错误的时候,学习算法就将当前权重向量朝所有的可行权重向量移动

可能也会有问题:下图的黄点就是可能不会被接近的可行向量


考虑到由一个边缘(margin)规定的可行区域的“丰富的可行(generously feasible)”权重向量至少与定义每一个约束平面(constraint plane)的输入向量长度一样大。

——感知器每一次发生错误,到所有丰富的可行权重向量间平方距离经常减少了至少更新向量的长度(贴一下这句话的原话: the squared distance to all of these generously feasible weight vectors is always decreased by at least the squared length of the update vector)


非正式的收敛证明示意

※感知器每次出错,当前权重向量就会朝着与“丰富可行”区域的每一个权重向量平方距离减少的方向移动

※平方距离减小了至少输入向量的平方长度(原话:The squared distance decreases by at least the squared length of the input vector)

※所以当经过有限(finite)出错以后,权重向量应该会稳定在可行区域(如果这个区域存在的话)

感知器不能做什么

感知器的限制

如果允许手动选择特征并且假设你使用了足够的特征,你几乎可以做任何事情。

——对于二值输入向量,我们可以为每一个指数级的二值向量有一个单独的特征单元,因此我们可以在二值输入向量上做任意的可能的判别工作。

※这种类型的查找表(table look-up)不会发生

一旦手工编码特征被决定,感知器的学习能力将会受到极大限制

二值阈值不能做什么

二值阈值输出单元不能指出两个由一位编码(single bit)的特征相同!

正样本(相同):(1,1)->1;(0,0)->1

负样本(不同):(1,0)->0;(0,1)->0

四个输入输出对给定了四个不平等的(inequalities)推断,是不可能被同时满足的




二值阈值神经元无法做的事情的几何视角

想想一下由一个输入向量组成坐标轴的“数据空间(data-space)”

——每个输入向量是空间中的一个点

——权重向量在数据空间中定义了一个超平面

——权重平面是垂直于权重向量的,是不过原点的,与原点的距离就是阈值的大小


判别循环(wrap-around)变化(translation)的简单模式

※假设我们使用像素作为特征

※一个二值阈值单元是否能判别具有相同像素点数目的不同模式?

——如果模式不循环转变!


关于二值决策无法判别具有相同像素数的模式的证明草图(假设循环转换)

对于模式A,使用所有可能转换的训练案例

——模式A中每个像素会被4种不同的转换所激活

——因此所有的被这些模式的决策单元接受的输入是所有权重总和的四倍

对于模式B,使用所有可能转换的训练案例

——模式B中每个像素被4中不同的转移所激活

——因此所有的被这些模式的决策单元接受的输入是所有权重总和的四倍

但是为了正确判别,模式A的每一个单独案例必须为决策单元提供比模式B的每个案例更多的输入。

——如果样例数目总和是相同的,那么上述情况就不太可能了。

为什么感知器的这种结果是灾难性的(devastating)

模式识别的关键在于识别模式,不论是何种转变(despite transformations like translation)

Mnisky和Papert's 的“组不变性定理(group invariance theorem)”指出在转变形成一个组的时候,感知器学习不能很好学习的(原文:the part of a Perceptron that learns cannot learn to do this if the transformations form a group)。

——具有循环特性的转换就能形成一个组

为了处理这种转换,感知器就需要使用多个特征单元去识别信息子模式(informative sub-patterns)的转变

——所以模式识别比较“狡猾(tricky)”的部分必须使用手动编码特征探测器的方法去解决,而非使用学习过程

具有隐藏单元的学习

没有隐单元的神经网络非常受限于他们所能学习到的模型的输入-输出映射

——更多的线性单元层根本没啥用,因为依旧是线性的

——修正输出为非线性(non-linerities)的并不足以弥补

我们需要多层具有自适应能力和非线性的隐单元。但是我们如何去训练这种网路呢?

——我们需要一种有效率的方法去调整(adapt)所有权重,并仅仅关注最后一个单元层。这很难。

——学习连接到隐单元的权重等价于学习特征。

——这还是比较难的,比因为没有人直截了当地告诉我们隐单元应该干啥



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

入门 | 初学者必读:解读14个深度学习关键词

作者:Matthew Mayo 机器之心编译 参与:Xuwen Wang、Chen Chen 微信公众号:(almosthuman2014)授权转载,禁止二次转载,点此为原文链接 本文介绍了包括 LSTM、ANNS、生物神经元、反向传播、多元感知…

深度 | 一篇文章带你进入无监督学习:从基本概念到四种实现模型(附论文)

作者:Eugenio Culurciello 机器之心编译 参与:李亚洲、武竞 微信公众号:(almosthuman2014)授权转载,禁止二次转载,点此为原文链接 这是今年 6 月份普渡大学副教授 Eugenio Culurciello 写的一篇…

【caffe-Windows】微软官方caffe之 Python接口配置及图片生成实例

前言 发现许多代码还是用python写的,所以还是配置一下接口吧,虽然博主不会Python,咳咳。在这里使用的python安装包是anaconda2,注意使用Python2.7版本的那个安装包。 官网地址:https://www.continuum.io/downloads …

判别模型的玻尔兹曼机论文源码解读

前言 三号要去参加CAD/CG会议,投了一篇关于使用生成模型和判别模型的RBM做运动捕捉数据风格识别的论文。这段时间一直搞卷积RBM了,差点把原来的实验内容都忘记了,这里复习一下判别式玻尔兹曼机的训练流程。 国际惯例,贴几个链接…

Jacobian矩阵和Hessian矩阵

原文转自:http://jacoxu.com/?p146 1. Jacobian 在向量分析中, 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式. 还有, 在代数几何中, 代数曲线的雅可比量表示雅可比簇:伴随该曲线的一个代数群, 曲线可以嵌入其中. 它们全部都…

为什么梯度下降法对于非线性可分数据有效

前言 晚上逛微博看到的,顺便拿过来翻译一下,做做笔记 国际惯例,来个原文链接: 原文地址:Why is gradient descent robust to non-linearly separable data? PDF拷贝:http://download.csdn.net/detail/…

卷积RBM源码解读

前言 卷积RBM相对RBM来说具有很多优势,详细的我也不说了,看文章就行。主要还是为了加深自己对细节部分的理解吧。 国际惯例,贴几个链接 卷积RBM的创始人Honglak Lee:http://web.eecs.umich.edu/~honglak/hl_publications.html#…

c语言:递归法求n的阶乘|练习题

一、题目 输入一个数n&#xff0c;用递归法求n的阶乘 二、思路分析 1、因为n!(n-1)!*n,所以&#xff0c;可以选择用递归法 三、代码截图【带注释】 四、源代码【带注释】 #include <stdio.h> //思路&#xff1a; //因为n!(n-1)!*n,所以&#xff0c;可以选择用递归法 int…

【caffe-Windows】cifar实例编译之model的生成

参考&#xff1a;<span style"font-family: Arial, Helvetica, sans-serif;">http://blog.csdn.net/chengzhongxuyou/article/details/50715455</span> 准备工作 按照之前的教程&#xff0c;成功生成过caffe&#xff0c;并且编译整个caffe.sln项目工程&a…

机器学习性能改善备忘单:32个帮你做出更好预测模型的技巧和窍门

文章来源&#xff1a;大数据文摘 作者 | Jason Brownlee 选文 | Aileen 翻译 | 姜范波 校对 | 寒小阳 机器学习最有价值(实际应用最广)的部分是预测性建模。也就是在历史数据上进行训练&#xff0c;在新数据上做出预测。 而预测性建模的首要问题是&#xff1a; 如何才能得…

【caffe-Windows】新层添加——LSTM

前言 原始的【caffe-Windows】是没有LSTM层的&#xff0c;维护以后的caffe的windows版本也懒得配置了&#xff0c;因为大部分文章的代码还是基于老版caffe。其实大部分的添加层方法都可以参考本博客&#xff0c;仅限Windows。 需要的文件有&#xff1a; 1. 原始的caffe-Wind…

【caffe-Windows】关于LSTM的使用-coco数据集

前言 建议大家使用Linux&#xff0c;因为Linux下的配置就没这么麻烦&#xff0c;各种make就行啦。Linux用户请绕道&#xff0c;因为此博客只针对Windows&#xff0c;可能比Linux麻烦很多倍。 在caffe-Windows新增LSTM层以后&#xff0c;相信很多人和我一样很好奇如何使用这一…

【caffe-Windows】关于LSTM的简单小例子

前言 这里主要是看到了一个简单的LSTM例子&#xff0c;比上一个coco简单很多&#xff0c;所以在这里记录一下&#xff0c;便于后续的分析&#xff0c;参考博客在上一篇文章的末尾提到过&#xff1a;Recurrent neural nets with Caffe 需要说明的是这个例子也并非原原本本的使…

概率有向图模型

1. 前言 主要参考书籍《深度学习导论及案例分析》、维基百科“贝叶斯网络”、老笨妞的博客、PRML中文翻译&#xff0c;重点还是概念的掌握和几个小理论的推导&#xff0c;比较枯燥。加入了自己的一些简单理解。 个人感觉概率有向图模型最大的意义在于&#xff1a;一个特定的有…

概率无向图模型

1. 前言 前面看了概率有向图模型&#xff0c;必然对无向图模型也要研究一下。而且这个概率无向图模型对学习RBM有很大的帮助&#xff0c;它关系到能量函数的来源&#xff0c;所以还是看看吧。参考资料依旧是概率有向图模型中参考的三个资料。 有向图将一组变量上的联合概率分…

softmax理论及代码解读——UFLDL

前言 看了各种softmax以后迷迷糊糊的&#xff0c;还是研究一下UFLDL的教程稳点。当然还是得参考挺多教程的&#xff1a;UFLDL-softmax 、Softmax的理解与应用 、Logistic 分类器与 softmax分类器 、详解softmax函数以及相关求导过程 、Exercise:Softmax Regression 。 【UFLDL…

二值RBM与实值RBM理论及代码解读

1. 前言 虽然推导过二值形式的RBM&#xff0c;但是对于可见层为实值的输入还是半知半解的。最近写个深度学习相关综述&#xff0c;看了一些关于RBM的文献&#xff0c;这里做一下对比总结。但是不倾向于对实值RBM的推导&#xff0c;而是相关代码的实现。 2. RBM回顾 RBM是具有…

【caffe-Windows】添加工程-以classification为例

前言 兴趣所向&#xff0c;研究一下如何在caffe工程之外建立一个属于自己的工程&#xff0c;这里以分类为例&#xff0c;将classification.cpp提取出来&#xff0c;然后调用相应的三方库和libcaffe.lib进行编译。这里比较建议有一丢丢C功底的同志参考学习&#xff0c;主要涉及…

MKL学习——数学运算库安装调试

前言 最近要用C折腾一些东西&#xff0c;涉及到矩阵运算&#xff0c;看了一下网上推荐的数学库&#xff0c;貌似MKL还是蛮不错滴&#xff0c;放到VS2013里面试试 国际惯例&#xff0c;来波地址 blas, cblas, openblas, atlas, lapack, mkl性能对比 Compiling and Linking I…

MKL学习——向量操作

前言 推荐两个比较好的教程: BLAS (Basic Linear Algebra Subprograms) LAPACK for Windows 命名规范 BLAS基本线性代数子程序的函数命令都有一定规范&#xff0c;便于记忆 <character> <name> <mod> () character 定义的是数据类型 s实数域&#…