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

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

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

1⃣.感知机一般包含的元素

  1. 输入
    要求输入的是实值
  2. 仿射&线性
    放射函数满足f(ax+by)=af(x)+bf(y)f(ax+by)=af(x)+bf(y),这就意味着仿射函数一定穿过原点但是线性函数就不一定穿过原点
  3. 偏置
  • 类似一个阈值来激活感知机
  • 偏置也可以视为一个权重只不过对应的输入元素视为1
  1. 激活函数
    激活函数并非一定要是阈值函数。激活函数包括阶跃函数、sigmoid、tanh、Relu等

2⃣前馈神经网络

重点是没有循环在信号传播的过程中永远不会返回前面一个信号。这就相当于所有的计算都是单向的非循环的。当然循环神经网络也是非常重要的

3⃣有了神经网络如何使得神经网络能够按照特定的规则进行执行

学习神经网络的过程就是决定参数值的过程这个过程实际上就是使得神经网络能够输出我们想要的函数。前提是我们的这个神经网络有能力构建我们的目标函数。

0) 训练神经网络的结果可能得到的函数不是唯一的如何衡量所得到的函数好坏就需要指定一定的度量方式

1在实际中衡量预测值与真实值之间的差距并非只有一种度量方式重要的是多次之间的差异不能存在抵消的情况

2神经网络在逼近函数的过程中我们提供的数据不能是函数中每一个点的值这就意味着我们的训练样本实际上一个抽样的样本

样本训练过程中要求一个x只能对应一个唯一的输出值

4⃣多层感知机

感知机实际上就是寻找到一个超平面将正负样本进行分开其中权重与超平面是一个正交的关系在更新权重的过程中采取的策略就是权重方向指向正样本远离负样本。

在整个更新权重的过程中修正权重W的次数是有限的不会超过(R/γ)^2,其中R是最远的那个训练样本的距离γ是训练样本与超平面最近的距离.

 

 

 

 

 

 

 

[展开全文]

通过增加深度,减少神经元的个数。

激活函数并不一定是阈值函数。

前馈网络:

一些输入数据被输入,通过运算符在这些单元上进行运算,他们的输出会在之后这些单元上进行运算,一直这样直到最后,信号永远不会返回到前面的任何单元。单向的/非循环的。

学习一个网络,就是指学习一个网络上的参数。(权重和偏置)

 

问题:

如何量化误差?

与误差的正负无关;误差的正负不能抵消。然后计算积分。

对g(x)抽样,得到输入-输出pair对。这些项中可能包含噪声。

PS:若对于一个特定的输入X,会得到不同的输出,这样,你从样本中学习到的关系,并不是独一无二的,就需要用噪声来重塑。

假设,关联是唯一的。对于任意一个X,都有唯一的D与之对应。

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

找到一个超平面,分离0/1点。

超平面通过零点,因此是线性的

=>进一步延伸,向量X的每一个元素与向量W正交。

=>W是一个向量,这个向量与平面上的每一个X正交。这个平面是所有X点的集合,这些点与W是垂直的。

=>|w| * |X| * cos 何时为正?W和X的夹角介于-90到+90之间时。

=>整个感知机算法,都是基于这两个简单的记号,1、w和平面正交;2、对于类别为正的实例,你想让W指向这个实例;对于负的实例,你想让W尽量远离这个实例。

 

算法:initial W,不管初始值是什么,都可以计算W和训练实例的内机,它们中的一部分会被正确分类,对于这些,不需要做任何事情;我们唯一需要调整W的时刻就是,当遇到一些实例被错误分类的时候。对这些被错误分类的实例来说,我们已经有了实际输出,就是对于每个训练实例的sign(W^T x),假设输出被错误分类了,该如何修正W呢?

只需要在实例被错误分类的时候,更新W。

如果正例被分到了错误的一边,我需要让W加上这个X,让W靠近这个正例;如果负例被分到了正确的一边,我需要让W减去这个X,让W远离这个负例。

 

 

 

 

 

 

 

[展开全文]

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

 

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

 

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

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

 

[展开全文]

本节课主要讲了,MLP的训练问题,即给定数据(样本)后确定网络参数的问题。

整个过程个人认为就是一个函数拟合的过程。

老师在讲解分类问题时,将参数以向量的形式表达,理解起来直观形象,十分巧妙。

[展开全文]

为了通过神经网络,拟合指定的目标函数,

1)建立散度(偏差)的公式;

2)从目标函数中抽样,因为目标函数大多数时候也是未知的。

 

合适权重的原理:

1)权重向量与边界超平面正交;

2)权重向量靠近分类为正的方向。

 

更新权重的方法:

1)Xi分类为正,在W上添加Xi向量;

2)Xi分类为负,在W上减去Xi向量;

同时,划分边界与W保持正交

 

 

 

[展开全文]

参照部分网上资料,自己写了个感知机算法的python实现,https://github.com/hktxt/NoAdmittance/blob/master/PLA.ipynb

[展开全文]

# 第二遍学习:

1.神经网络是通用函数的逼近器。

  • 可以建模任何布尔函数
  • 可以建模任何分类边界
  • 可以建模任意连续值函数模型

如果网络满足最小约束,也就是使用较少的参数你逼近拟合函数,效果未必那么好!

2.感知机,一般情况下:

  • 输入时实数,是输入的放射组合
  • 偏置b,感知机阈值的偏置
  • 激活函数,是一个非必须的阈值函数。最早用的是阶跃函数,如果我们将他替换为更为平滑的激活函数,例如,sigmoid和relu就可以用于图像处理等等。
  • 因此,激活函数,未必是阈值函数。

3.偏置可以和放射项拼在一起,更加简洁。

4.前馈网络,输出不会反馈回输入。单向计算是单向的。非循环的。

5.网络的参数是权重和偏置。

6.已知一个目标函数,构建网络的过程就是,你拟合接近,最小化误差的过程。(网络学习)

7.从样本学习到的关系,并非是独一无二的。

8.Rosebaltt

9.阈值,直线,超平面。

10.感知机最早的模型可以理解为一个符号函数。

11.感知机的权重W与正样本的cos值是正,与负样本的cos值为负。因此,根据这个对W进行修正,就可以达到训练的效果。W+X,这的X是错误样本,就会将分类平面向正确方向靠拢。

12.如果数据线性可分,以上方法可以在有限的步数只能完成更新。(R/r)^2;

[展开全文]

只有一个隐藏层的神经网络也可以拟合任意函数,但是隐藏层所需要的神经单元可能是无限多个。故为了降低神经元的数量,我们可以考虑增加神经网络的层数。如果我们限定了神经网络的深度,那么需要的神经元个数的上限是多少?无限大。所以当你在AC0级的基础上建立一个固定深度的神经网络的时候,理论上,神经元的个数并没有一个上限。并且这个网络可以很好地构成任一函数。

但是接下来,假设我们有这样一个网络,如果这个网络足够深,但我限制每一层中神经元的个数,那么这个神经网络是否绝对可以拟合任一函数呢?确实不能。所以当我提到一个神经网络足够用的时候,意味着它的层数足够深,并且每一层的神经元数目足够。这整个网络可以模拟一个具体的函数了。现在我们谈论的是模拟一个具体函数的能力,并不是意味着仅仅它才可以模拟这个函数。

我们应该怎样设计一个神经网络去计算着一个特定的函数?第一个问题就是我们如何使用一堆数字来表示我们的输入和输出。神经网络的基本结构是感知机,它数学公式是:z=权重×输入的结果+偏置项。这样就得到一个关于输入的仿射组合。

其次是如何构建一个神经网络来执行必要的函数。激活函数,这个函数用来处理输入的仿射组合,并且激活函数在大多数情况下可以将它看做一个感知机,因为它最初被定义为一个阈值函数或是正弦函数。(每次提到感知机的时候,你应该能想到输入数据的仿射组合,而这些输入数据是输入到激活函数中去的,即all输入×权重+偏置)。但这样写有些麻烦,每次都得加b,有个简单的方法即在输入向量里添加1,设想它就是输入变量里的一个额外部分,这样偏置就直接变成了这里的权重,z=all输入×权重。

前馈网络:输入的数据在第一层被运算,得到的结果传到第二层继续运算,一直到最后一层。信号永远不会返回到前面的任何单元,它是单向的、非循环的。

分歧函数告诉了网络输出值和每个x对应的真实想要的值之间的差值。

学习一个神经网络就和确定网络参数是一样的,这些需要确定的参数就是网络所需要的权重和误差。用来对目标函数进行建模。在实际中,不会知道g(x)的函数定义,所以我们将根据画出输入输出训练实例,并估计网络的参数,来使用这些实例来对输入输出关系进行拟合。

最简单的多层感知机模型实际上并没有多层的概念,甚至也没有层,就是一个感知机模型。我们有很多实例,在数轴中就是一个个蓝色红色的点点,我们需要通过这些数据学习能够产生不同输出的权重w和偏置项b,这样就可以找到一个超平面,来完美分开蓝色和红色的点。

[展开全文]

进入小组观看课程

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

SMART Lab学习小组

成员:1泡泡:0

点击观看
生物医学小分队

成员:163泡泡:67

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

成员:278泡泡:160

点击观看