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

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

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

 

 

神经网络就相当于一个黑盒子,可以通过构建这个盒子,实现语言识别、视频描述、游戏决策。

起源:联结主义。

信息储存在神经元与神经元的连接中。

[展开全文]

这一节的内容是课程介绍。

神经网络就相当于一个黑盒子,可以通过构建这个盒子,实现语言识别、视频描述、游戏决策。

起源:联结主义。

信息储存在神经元与神经元的连接中。

 

[展开全文]

Neural Network is modelling the brain.

- group of Perceptorns, Multi-layer Perceptorn can slove XOR problem.

 

How to train this complex model ?

 

 

 

[展开全文]

Neural Networks

1. Introduction

- Neural Networks are taking over!

  - Speech Recognition

  - Machine Translation

  - Image segmentation and recognition

  - AlphaGo, AlphaZero

  - image to text

 

So what are neural networks??

-  Connectionist Machines

 

[展开全文]

 

  • 神经网络的应用:

图像理解;语音识别;游戏智能;

  • 输入与输出之间的联系(函数);

大脑:神经元连接;

信息存在于神经元的连接当中;

 

[展开全文]

链式求导法则

对所有值进行求和运算。

标量不用关心顺序。

有了这些值以后,就可以反向计算。

误差反向传播:

从后向前计算导数。从后进入网络,反向传播误差导数。

先计算输出神经元的导数,然后计算感知器放射输入的导数。

[展开全文]

vector notation:

Y表示网络最终的输出,即网络的响应。

使用一个阈值函数,比如sigmoid函数,计算y=1的概率。

若是multi-class output:one-hot表示(包含一个1,其他元素都是0):

输出是向量。

softmax层。

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

误差反向传播:

我们会使用链式法则,来计算误差的梯度。

二分类问题:

收敛度量方式:

如果你想要1 0,网络输出是0 1,怎么办?

所以我们经常使用交叉熵来提高效率。

分两种情况:

1、d和y相等;2、d和y不相等。

d是desired output;y是实际输出。

1、当输出的期望d和与样本点实际的标签y相同的时候,散度函数Div(y,d)=0。

2、另d=1,y=0,

-dlogy=-1 * log(0)=-1 * (负无穷)=正无穷

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

多分类问题:

需要累加所有的-d * logy,当y和d相同的时候,散度函数Div(y,d)=0;当y和d不同的时候,假设每个分类结果完全不一样的时候,Div(y,d)的结果为无穷大。

只需要计算某一个类的偏导数,其他不用关心。

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

训练集中所有样本点散度的平均值,就是总误差。

在梯度下降中,每次迭代时,需要用到平均误差来修正其中的变量。在每次迭代中,需要利用上一次迭代的权重以及误差的偏导数来修正更新权重值。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]
琦舞 · 2019-02-23 · 4.2 反向传播 0

回顾:

给定training set of input-output pairs:

就可以得到这整个数据集中的平均经验误差,然后取得最小值。这是最小化优化问题。

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

定义导数:

微小变化会在多大程度上影响输出?

若X是一个向量,dx指的是X在每一个方向上的变化。

公式在课件中。

关于梯度的定义。可以定义为行向量(通常),sometimes也可以定义为列向量。

1、把斜率为0作为判断是否达到最小值的依据,是不够充分的。

2、我们真正可以用来检查是否达到最大值和最小值的方法是,首先找到那些导数值为0的点,在这些点中,找到驻点,检查二次导数,若二次导数为正,说明该点是最小值;若为负,则是最大值。

PS:驻点是什么?函数值在这一点停止变化,在驻点前后,函数值的改变的方向会发生变化,要么是先减后增,要么是先增后减。

3、因为函数存在拐点。二阶导数会在拐点处变为0。若某个点,导数为0,则并不一定是极小值点。

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

对于多变量函数,如何计算驻点?

你要计算梯度的每一项是否都是0。如果有一部分为0,另外一些不是0,那么函数在某一些方向上,还是会变化。

梯度是一个向量,是唯一能使函数值增加最快的方向。

Hessian矩阵:

对有多个输入参数的函数定义二阶偏导数,就是Hessian矩阵。对角线上的元素是对单个输入变量的二阶偏导数。

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

总结:如何找到极大极小值?

首先找到梯度为0的点的集合。然后计算这些候选点的Hessian矩阵,如果这个函数的Hessian矩阵是对称矩阵。如果矩阵的某个特征向量的特征值是正数,那么沿着这个特征向量的方向,将会得到极小值点。如果某个特征向量的特征值是负数,那么沿着这个方向,将会得到极大值点。

通俗点的解释就是:我们抵达了某个点,它的梯度为0,如果它是极小值点的话,那么Hessian矩阵的每一个特征值都必须是正数。

如果你想得到最大值点,需要计算Hessian矩阵,计算量大。

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

实际中,给定一个初始猜测的X0,一步步迭代后,我们最终会到达导数为0的点,也就是说,一直迭代到函数值不再减小,那么导数就可以变为0。

初始化时,应该选择函数值不为0的点。

如果梯度为正,我们沿着梯度的负方向改变。

总结:

开始迭代后,你可以检查梯度是否为0,或函数值的改变量(两次迭代之间)在变小,直到一个特定的阈值。

表示网络的函数,必须对每一个参数都可微。这样就可以用梯度下降来最小化误差。

 

 

 

 

[展开全文]
琦舞 · 2019-02-23 · 4.1 反向传播 0

更复杂的决策边界问题:

五边形问题。

NP难问题,给出一个问题,很简单就能够证明,要想得到一个答案,是不可行的。

理论可行,计算上不可行。

回到分类问题上,如果修改一点权重,是否是在向正确的方向移动呢?是否在朝着提升效果的方向上移动呢?当然不会!因为输出是一个符号函数,也许可以改变整个W,但是这个输出不会改变!当穿越训练实例时,才是改变输出的唯一方式!

larger problem时,也是一样:

输出是一个阶跃,直到穿越了一个实例,才会发生变化。因此,对于W的小调整,并不会告诉你输出发生了什么变化。所以感知机的规则不适合这里。

另外一个问题:正负线性不可分。

解决solution:

知道反馈,并调整参数。需要找到一个合适的激活函数,来替代当前的符号函数。可能需要一些更平滑的激活函数,这种函数可微分,在任何地方都具有非零导数。=>sigmoid

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

引入可微分激活函数:

sigmoid可微。当x改变多少,y就改变多少。把W增加一点点,可以得到Y的相应变化。

Y对于X和W是可微的。

w/输入的微小变化,会在多大程度上改变Y。整个网络都是可微的,包括它的所有参数和所有输入。

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

最小化期望误差:

在实际中,某些X的发生频率更高,另外一些X未出现过。我们希望更多地关注X更可能发生的地方,更少地去关注X不太可能发生的地方。换句话说,对于每一个X,不仅仅希望最小化误差,还根据X的概率来对这些误差进行加权。出现的概率大,则对最后结果影响的概率大。

针对训练数据,计算经验误差,这其实就是优化问题。

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

总结:

多组合优化问题:使用非零导数的连续激活函数,使我们能够估计网络参数。

定义网络输出之间的可区分散度。对于训练实例的期望输出,散度函数必须是可微分的,如果不是的话,即使整个网络是可微的,也会使网络崩溃。如果误差是不可微的,那我们就不能根据参数的调整,得到误差的变化趋势。

 

 

 

 

 

 

 

[展开全文]

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

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

前馈网络:

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

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

 

问题:

如何量化误差?

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

对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远离这个负例。

 

 

 

 

 

 

 

[展开全文]

进入小组观看课程

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

SMART Lab学习小组

成员:1泡泡:0

点击观看
生物医学小分队

成员:163泡泡:67

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

成员:278泡泡:160

点击观看