首页 AI学术青年与开发者社区

【中文字幕】卡耐基梅隆大学 2018 秋季《深度学习导论》Bhiksha Raj 领衔主讲

开课时间:9月27日开始正式发布,更新节奏视官网课程而定
开课时长:28讲视频

depth matters

相比于布尔门来说,阈门更加重要。

若限制MLP的深度D,则需要指数级别的单元。

————————————————

MLP作为classifier:

实际就是找到一个复杂的决策边界,边界内得到1,边界外得到0.

感知机只能具有线性边界。

一个隐藏层的MLP只能组成凸的多边形。

所以,无法得出非凸的边界。

随着不断增加边的数量,将会得到一个圆柱体,圆柱体内部的和为N,然后很快减小到N/2。

含有一个隐藏层的MLP,可以对任意一个分类器任意精度的边界建模,但是这将需要指数数量的神经元,神经元数量将接近无限。

上述阐述了deep的重要性。

——————————————————

MLP是一个通用布尔机器/通用分类函数/是一个两层或者一个隐层的通用分类器。

更深的网络需要更少的神经元。

————————————————————

优化depth/width

若第一层隐含层的感知机数量减少一半,则会丢失很多信息。没有方法可以从不完全的输入信息中恢复。

每一层必须足够宽,来捕获那一层所需要的信息。

一旦达到sigmoid阈值函数的饱和区,所有信息都丢失了,所以保留的信息,仅仅是离边界不是很远的信息。

现代神经网络很少用sigmoid(更饱和),在前面的层中,实际上不会传递信息。在最后一层,可以用sigmoid。

并不是说,sigmoid或者阈值函数是很差的激活函数,只是说,使用这些,你将会需要更多的神经元。

总结:提升网络容量的不同方法:deeper and wider。

使用分层的激活函数。如果在前面丢失了信息,后面的层中,将无法恢复。因此,应该尽可能不在前面的层中丢失信息。但是,简单地线性传递所有信息,也不能实现任何东西,实际上应该在每一个点上都做出决定。

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

仿射和线性有什么区别?

线性:

f(ax+by)=af(x)+bf(y)(过原点)

仿射:

具备基本的线性特质,但是不穿过原点。是一个变形的线性超平面。

————————————————————

多层感知器:

一个网络很“深”的含义是:

有向图具有源和接收器。从源到接收器的最长路径就是图的深度。

如果我要用超过2个神经元来处理输入,就称之为一个深度网络。

————————————————————

可以组合任意布尔函数,只需要使用一个隐层。一层感知机就是普通的布尔函数。

————————————————————

MLP的多层神经元可以称为通用布尔函数。

它可以构造任意布尔函数。两层网络(一层隐含层)就可以组成任意一个布尔函数。

why deep?

如果只用一个隐藏层single,需要:

在一个隐含层中,至少需要2的N-1次方个感知机,可以表达一个布尔函数。

如果使用multiple layer呢?

N个变量的XOR可能需要3(N-1)个感知机。

所以,这就是deep的意义所在。

更好的表达:只需要2 * logN

————————————————————

网络的深度取决于函数。

如果固定了网络深度D,复杂度就变成指数型的了。若不固定网络深度D,复杂度就是线性的。

————————————————————

————————————————————

 

 

 

 

 

 

 

 

[展开全文]

近些年来,深度卷积神经网络(DCNN)在图像分类和识别上取得了很显著的提高。回顾从2014到2016这两年多的时间,先后涌现出了R-CNN,Fast R-CNN, Faster R-CNN, ION, HyperNet, SDP-CRC, YOLO,G-CNN, SSD等越来越快速和准确的目标检测方

R-CNN是较早地将DCNN用到目标检测中的方法。其中心思想是对图像中的各个候选区域先用DCNN进行特征提取并使用一个SVM进行分类,分类的结果是一个初略的检测结果,之后再次使用DCNN的特征,结合另一个SVM回归模型得到更精确的边界框。

[展开全文]

如何定义现代计算机的架构呢?

冯诺伊曼结构

当前的神经网络模型都属于连接机器。

————————————————————

里程碑之一:

兴奋性突触:能够激发神经元的突触,如果有足够的刺激,它们就会被激发。

抑制性突触:当一些信号传递过来,这个不会被激发,不管传递过来的是什么。

————————————————————

感知机模型:

simplified mathematical model

模型思想:如果你有一些输入元素进入一个网络单元,这个单元会以权重组合的方式操作这些输入。如果权重组合超过了一个阈值,这个神经元就会被激发,否则就不会被激发。

这个非常简单的结构是非常全能的。

Rosenblatt提出一种学习算法:

如果目前输出与期望输出不匹配,这两者的差异将会与当前输入相乘,并加到当前的权重上面。这种学习规则非常流行,在机器学习中,无时无刻都会用到。

感知机无法解决异或XOR问题。

单独的感知机单元的计算能力有限。但是如果组织成网络,计算能力就会非常强!

上述均是布尔学习模型。但我们的大脑不是布尔机器,我们的大脑输入基于各种实数。

————————————————————

感知机是可以处理实数输入的。

可以使用简单的线性函数模拟出布尔函数,而且可以通过对各种布尔函数的组合来构建无限的可能来完成给定的布尔型任务。

一旦你知道其工作原理,就能够构建任意复杂的布尔函数。

————————————————————

complex decision boundaries:如何设计网络?

应该把复杂的形状,拆解为多个一般性的基本凸函数图形,这样就能让每个子网络处理一个凸函数图形,然后将它们组合起来,来形成任意的复杂决策边界。

处理图像分类的情况:也是如此,神经网络的作用就是学习到这两个向量领域在高维的分界线。

————————————————————

总结:多层感知机能够连接多个计算模型以此来耦合复杂的布尔函数,但它本质上还是布尔模型,只是通过各种不同的线性函数的组合来实现这一点。

MLP能代表任意形状决策边界,MLP可以用来分类数据。

————————————————————

MLP——regression

如果想要的输出是连续的实数,而不是之前的布尔型0或者1,应该怎么做?

可以对任意函数进行建模。我们可以将这个函数理解为序列函数。可以让隐含层的感知机两两配对,每一对来配合某个阶跃函数在某个区域内的高度。然后以从左到右的顺序,总能得到一个输出值。甚至!可以让这种近似来得更加精确,即,让每个区间更窄,产生更多的区间。

总结:MLP作为连接型计算模型,是可以用来处理分类任务的,MLP同样可以用来对连续型函数进行建模。

神经网络其实就是多层感知机(MLP)。

MLP具有一定的记忆机制,目前看到的都是MLP的前向feedforward工作,但是,有一些循环网络,这种网络的某个单元输出会回到单元本身。

对神经网络进行计算:对概率分布进行计算等等。

AI任务只是一些能被神经网络建模的函数。

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

我们的认知是基于什么产生的?

所有的一切都是依赖于神经元之间的连接来决定如何工作的。

神经网络可以根据不同的输入,产生不同的输出。

神经网络如何存储信息?如何学会存储信息?

[展开全文]

这里从导数讲到梯度,梯度是y随着x的变化最快增长的方向的表达,有了梯度就可以去逼近求解函数的极值点。

这里利用梯度下降的迭代方法来逼近极值点,这个算法一般肯定会找到一个局部极值,不一定是最小值。如果要求解全局最小,可以利用二阶导数的hassin矩阵去去除鞍点,但是这种计算量大。或者可以在函数的构造上下功夫,让函数是个凸函数。

本节用了很长的时间在讲述导数已经梯度的意义,而在最后得出结论和方法,并且列出了多个不同的激活函数及其导数情况。

[展开全文]
fogo · 2019-01-27 · 4.1 反向传播 1

第二课笔记:本节课主要介绍了神经网络的发展历史。起源于对大脑神经元的模仿,最开始只是简单的单独感知机模型,可以完成与或非布尔运算,但是不能完成异或运算。之后将感知机组成网络,多层感知机就出现了!多层感知机可以联结多个计算模型以此来耦合复杂布尔函数。之后的发展便是从布尔型机器,到可以处理实数,从硬阈值到软阈值,至此MLP(多层感知机)可用于图像分类,甚至是复杂函数的拟合。

所谓往往越简单的越是强大!小小的感知机在组成MLP后,会有很强大的功能。

[展开全文]

 一个MLP进行拟合函数或者分类边界的过程,会变为一个组合优化的问题,在各种组合中找到符合目标的组合。那么如何优化呢?

这里如果继续用感知机的规则,首先出现的问题是w的微调整并不会影响原有的符号函数结果,即无法获知反馈情况,这时需要使用其他的激活函数来代替原有的符号函数。此时就解决了一个调整-结果告知的机制,能够获取调整的方向已经量度。这里的激活函数是平滑可微可导的,这本身就以为着激活函数可以捕捉输入和输出对应的微小变化和方向。这个过程就是非线性数据解析,如果MLP没有这样的操作,那么MLP无论多少层最后还是和一层一样。

这样的话,在MLP中如果W改变了一点,最终会在激活函数里面计算出Y对应改变多少,而y的输入为z,z=W.X。并且在这个过程中,网络层次和微分分解正好对应(前一层是后一层的输入),那么此时y可以感知全网所有wi的微小变化。

这时候接下来的任务就是利用这种感知能力去优化参数,即让误差最小就可以,这里可以看前面讲的那个散度函数的定义。 最后这个散度函数在计算的时候只需要对样本空间的误差期望进行计算,求出最小值去代替原有散度函数。

 

[展开全文]

   布尔函数到阈值电路,到实函数,其实都可以使用MLP来表达,其中当深度被限制的时候,宽度就需要指数级别,因此优化深度变得很重要。

如何理解深度优化,从理解MLP可以对真是输入进行通用分类说起,MLP可以为真实输入提供一个复杂的决策边界。单层感知机只能表达一个线性的边界判别,对于复杂的情况无能为力。此时就需要进行组合,增加深度去组合,就是扩展深度。

但是在此之前,还是去理解下为什么只使用一层隐藏层能表达任意决策边界,但是是不可行的。因为此时需要无数个感知器才可行,去无限的近似目标边界。具体看课程的多边形到圆柱的演化,此时边界的确定,可以通过指数量的圆柱去填充近似表达。

不可行则通过增加层数(深度),接下来的问题是如何优化设定层数和层节点?一系列的例子说明,更深的网络需要更少的节点(神经元),其实深度学习中一直有更深更窄会更好的说法,而固定深度往往是不太满意的。

 

接下来要解决的是MLP去表达一个连续的实值问题,还是可以转换到几何意义的近似表达,类似微分的区域抽取(圆柱)来表达填充,就可以得到任意数值的MLP表达。而在输出时,使用激活函数,可以将输入值核定到一个具体的区间内。

 

MLP设定为一定深度的结构后,那么激活函数和节点数量如何设定,这个结构是有效的?这里MLP实际是个数据的过滤器,逐层的去保留边界内的数据,这个过程其实就是一种搜索过程,在原来的整个输入空间中找到决策边界对应的空间。那么合适的阈值控制激活函数会达到不同的过滤性质。过滤的好坏一般是考虑下层不需要进行信息恢复,即激活过程没有信息的损耗。比如sigmod函数会将边界内大部分信息有效保留,但是在下层会将这些信息进行距离化,则需要恢复,并且还有部分信息的丢失。此时只捕捉边界的激活函数会更好,比如RL。

 

那么有了激活函数的过滤,MLP的深度和节点都可以被优化减少,因为向前的信息是逐渐减少的。就是说,好的激活函数会减少层数和节点数。

最后总结来说,结构的充分性,即MLP网络的容量的设定是由宽度、深度和激活函数来决定的,而网络的容量是一致捕获能力的表达,在不同模式不同区域中去将空间划分为多少个不同的凸包,但是这里没有更好的范式去描述网络的容量,但是这个网络容量确实可以模拟事物,尤其去提升这个网络容量。

 

[展开全文]

 上次课的内容:有效MLP的结构需要合适的深度和宽度才能拟合逼近相关函数。

 

那么怎么设计一个MLP去表示一个函数?首先需要的是将输入和输出转换成两组数字,所以第一个问题是如何用数据表达输入,如何用数据表示我们想要的结果。如果这个问题解决,接下来的问题就是如何设计一个网络来将这些输入转化为输出。

 

先来看如何设计一个网络来执行必要的函数。现在假设有个网络能确定表达对应的函数,且网络结构是逐层传递,那么此时这个网络未知的参数是节点(神经元)的所有权重和偏置。那么接下来的问题就是如何自动化的求解这些参数。这里如何假定参数给定了一些值,则此时网络会构造出一个函数,那么这个函数会和对应的目标函数产生误差。那么尝试最小化误差(是个散度,非负的)的这个过程就是网络参数的求解过程。其中在计算误差的时候,没有必要对所有的值进行计算,这里对函数变量进行抽样(从样本空间得到某些输入和输出对)测算,这个过程实际就是一个拟合过程。

但是这里有个问题,实际上目标函数g(x)多数是不知道的,而仅仅是个数据集。理解这个过程,从理解一个感知机分类器开始。

 

[展开全文]

进入小组观看课程

更多 >>
以下为该课程相关学习小组,您可以选择任意小组加入学习课程并交流

SMART Lab学习小组

成员:1泡泡:0

点击观看
生物医学小分队

成员:163泡泡:67

点击观看
CUM 11-485/785 NLP学习小组

成员:278泡泡:160

点击观看