Monday, October 29, 2012

NN Course Lecture 3



第一个部分
学习线性神经元的权值
1.第一个问题
在开头介绍本节课内容时,先讲了线性神经元与感知器很相似。接着说,其中区别在于 感知器力求权值集在不断迭代过程中,接近理想值。而线性神经元力求输出不断接近理想值。


2.第二个问题
谈到的是为啥感知器学习算法不能用于含有隐藏层的NN。
原因,含有隐藏层的NN 的权值(向量)组成的集合不一定是凸(convex)的。
指出原因之后,又给出两个小结。
And to prove that when they're learning something is improving, we don't use the same kind of proof at all.
一个是,在证明学习在“进步”的方式上,不再采用证明感知器的方法。
另一个是,多层NN不使用感知器学习算法。也不存在多层感知器的概念,说到感知器就是指只有 输入层 和 输出层 的那种简单NN。


3.对于多层 NN,需要一个不同于感知器的方法来让学习 “演进”。

4.以输出是否不断接近理想值来判断 学习是否在进步。这种判断方法对于那些solution set不是凸集的问题也是适用的。这和感知器学习是不同的。在感知器学习中,即便被训练的权值越来越接近理想的权值集,输出作为一个整体可能会不断远离理想值。最后引出 a linear neuron with a squared error measure.

5.linear neuron 在电子工程领域也被成为 linear filter。

6.输出值是一个实数值,用线性表达式累加值表示。

7.用squared distance来表征 输出值与目标值的差距。称之为error。error是所有训练样本的误差平方和。

8.线性神经元的学习目标是不断减小此error。

9.第三个问题
为啥不能用分析的方法(分析法,就是解方程法吗?是不是更应该翻译成解析法?)解决此学习问题。(为每个输入case建立一个方程然后解方程。)
1)第一种回答:scientific answer,希望采用一种人脑神经真正采用的方法。人脑也许不会是靠解一堆符号化的方程来学习的。
2)第二种回答:engineering answer,希望找到一种能解决多层,非线性 NN 学习问题的通用方法。分析型的方法依赖此问题必须满足:(1)是线性的(方程可解,且容易解)和(2)以平方距离作为 “差距”(或错误) 衡量手段。但是 基于迭代的方法虽然效率上低一些,但是却更容易推广到多层,非线性等这些更复杂的场合。

10.学习过程中,只是关注 output与target 越来越接近,不保证 某个weight值会在某几次迭代中,离理想值(正确值)越来越远。

11.第四个问题
迭代学习过程是否可以得到正确的解?也许没有完美解。如果将学习率设置得足够小(也就是学习的歩子放得很小),就可以尽可能的接近最好的解。

12.第五个问题
收敛的速度问题。如果输入的维度之间是高度相似的,则会很慢。比如,输入中的ketchup和chips的数量总是一样的,就很难决定两者的价格。

13.online delta rule 和 用于感知器学习的规则 的区别
在感知器学习中,只是在感知器犯错的时候,更新weight值。而在 online delta rule 是每一步(每一次迭代)都变化。这也是引入学习率因子的原因。

第二部分
Lecture 3b The error surface for a linear neuron
1.线性 NN 的error表面,在weight空间基础上扩展出来。

2.可以想象一个3维的空间,平面两个坐标分别是两个weight值 w1 和 w2, 垂直向上的是 E。
这样,纵截面切下来得到的是一个抛物线。而横截面与error surface相切得到的是椭圆。

3.比较在线学习和批量学习的区别
(一种最简单的)batch learning走的是垂直于表面切线方向的方式。(steepest descent)
而“在线学习”走的是一种之字形路线。行进的路线由约束曲线(由输入集合决定)决定。(zig-zags around the direction of steepest descent)

4.细长形的 weight 椭圆会造成学习过程非常慢


第三部分
Learning the weights of a logistic output neuron
1.介绍对数输出的神经元(S函数作为激活方程)
2.delta rule x*(t-y)
3.external term y(1-y), this is so-called "slope of logistic".

第四部分
The backpropagation algorithm
此部分介绍如何学习多层网络。

1.问啥需要隐藏层?
very limited in input-output mapping they can model.

2.方法采用 persturbing weights

3. what's ‘activity’?


第五部分
How to use the derivatives computed by the backpropagation algorithm
1.Converting error derivatives into a learning procedure
后向传播是一种计算 error差分 dE/dw 的有效的方法。
但是如何使用这写计算出来的 误差差分 值有学问。考虑两方面的问题:一个是优化问题 How do we use the error derivatives on individual cases to discover a good set of weights? 另一个是泛化问题 How do we ensure that the learned weights work well for cases we did not see during training?

2.优化问题又包括两个方面
(1)How often to update the weights
(2)How much to update

3.在泛化问题中,要避免 过拟合。
If the model is very flexible it can model the sampling error really well. This is a disaster.


从上面看出,讲过度拟合是在说到泛化问题时讲的。因为过度拟合会把采样错误也拟合得很好,导致模型的不正确,进而导致无法泛化。
避免过度拟合的方法有以下这些。
–  Weight-decay
–  Weight-sharing
–  Early stopping
–  Model averaging
–  Bayesian fitting of neural nets
–  Dropout
–  Generative pre-training


No comments:

Post a Comment