最近想学RBM(限制玻尔兹曼机),找来Hinton在coursera上的神经网络课程,首先复习Hopfield网络吧。
Hopfield Nets with hidden Unit
https://class.coursera.org/neuralnets-2012-001/lecture/125
简单来说,就是用隐藏节点的状态来表达输入节点的信息,用能量来表示The badness of the interpretation 如下图所示:
举例来说,二维图像里的一条边,在三维世界里可能对应无数条边,
如果将图像上每一条可能的线段都用一个“2D-Line”单元表示,这些单元就形成了一个集合,且任何一个特定的图片只能激活这个集合中一个很小的子集。
如果将场景中每一条可能的3D线段都用一个“3D-Line”单元表示,每一个“2D-Line”单元都可能是很多“3D-Line”单元的投影,我们可以用已被激活的“2D-Line”单元将其对应的“3D-Line”单元激活,由于我们一次只能看到一条直线,因此我们让这些“3D-Line”单元竞争。(图中红线表示竞争关系)
当两个“3D-Line”单元表示的直线在三维世界中相交,就让这两个单元相互Support对方,也就是在他们之间加入一条连接。
如果他们之间形成了right angle,我们就加入一条强连接。
现在我们有了这样一个网络,它记录了现实世界中的线段是如何连接的,以及他们是如何投影到图像上的。
给这个网络一个图像,它将形成对这个图像的一个interpretation。
然而,对于一个图像,我们可以有不同的interpretation,(比如对于纳克方块,就可以有两种理解,纳克方块是个有歧义性的图,一种诠释方式是在一个较高位置看透明立方体的俯视图,另一种诠释方式是在一个较低位置看透明立方体的仰视图。)
我们用低的能量状态来表达一个好的interpretation
问题一:如何避免能量函数陷入局部极值
问题二:如何学习节点之间的权值(输入节点与隐藏节点、隐藏节点与隐藏节点)
Using stochastic units to improv search
https://class.coursera.org/neuralnets-2012-001/lecture/127
这堂课,主要讲如何通过增加噪声来避免陷入局部极值。
Hopfield Nets的决策总是使得能量函数减小,这样就容易陷入局部极小点。
我们可以用随机噪声来避免陷入局部极小点,
开始时,加入大量的噪声,这样可以很容易的通过能量的屏障(barrier)
然后慢慢减小噪声,这样整个系统最终进入一个deep minimun,这个过程就是“模拟退火(simulated annealing)”,这个算法和Hopfield Nets是同一时期提出的。
那么,温度是怎样影响转移概率(transition probability)的呢?如图所示
当温度高时,系统能很容易从局部极小穿过能量屏障,但是跳出deep minimun的概率也较大。
当温度低时,跳出局部极小的概率变小了,但是两概率的比率变的更好了,公式如下:
模拟退火算法是对陷入局部最小值的搜索算法的一种改进。
它是导致玻尔兹曼机出现的一个思想。
但是它和玻尔兹曼机主要思想还有很大的分歧,所以此课程不会对它进行过多介绍,从此我们都将每个二进制随机单元的