Machine Learning Techniques 笔记:2-13 Deep Learning

类神经网络有一层一层的神经元,它们的作用就是帮我们萃取出资料中的模式,把这些模式当作特征。我们又怎么决定神经元的权重呢?我们有backprop这个核心的工具,它可以帮助我们计算梯度,就可以用之前学过的梯度下降法来更新每个神经元的权重,所以整个类神经元的核心就是一层层的神经元,以及它们的连接关系。

那么,我们用多少个神经元,多少层?神经元的结构又将如何?

类神经网络中决定使用哪种结构是非常核心,但又是非常困难的问题。

浅浅的,简单结构:效率高。在浅浅的有限层里面,放置足够多的神经元,理论上也可以做很多事情。

深深的,复杂结构:花很多的力气去训练,如果放很多的层,理论上可以做很多的事情。

Deeplearning:在语音识别,图像识别的应用中很有效率。

比如做手写辨识:辨识1或5,首先萃取各个不同部位的特征,大概写了哪些短短的笔画,将这些短短的笔画在组合成复杂的笔画,最后才进行辨识。 每一层都可以代表不同的物理意义。

越多层就可以表示越多不同的特征,每一层做的事情就会更加简单。

如果中间只有一层时,则这一层做的事情就会很多。

每一层只做一点点事情,只要有足够多的层,到了最后,逐步做到复杂的事情。

Deep Learning Challenges:比较难于确定网络的架构,模型的复杂度比较高,容易困在局部最佳点,计算复杂度比较高,怎么办?

解决结构上的问题,除了用validation以外,还要结合研究者对于问题本身的理解。如类神经网络,只连接附近的像素点,如果距离太远,则不会被连接。用附近的像素,来决定高维的事情

模型复杂度:用足够多的data,或者用regulization。 dropout:神经元坏掉的时候,还可以得到很好的输出。

困难的优化问题:起始点的选择非常重要,谨慎选择初始点,而不是随机选择。避免局部最优

计算复杂度:更加先进的硬件架构,如GPU

更重要的突破:regulization,与pretraing,使得deep learning取得很大的进步。


权重逐层决定。always 通过backprop逐步优化权重。


第一层:由原来的像素变成简单的笔画,而不是什么样的数字,以及怎么做分类。

基于刚才的简单架构,我们如何做pre-train,帮我们的权重设定初始值呢?

权重的意义:在类神经网络及深度学习中,权重代表了我们该如何做特征转换,或者说如何让我们的资料换成不同的表现形式encoding,最后再看用什么样的学习方式。即做完pre-train之后,是不清楚资料在后面将如何被使用的,即不知道第2,3,……层 之后发生的事情。

这样:第一层只需要保留原始资料的特征即可,保持足够的代表性,表现力,可以轻易的重建原始data,information pre-serving。

d个输入----》d个输出,使得转换前后,结果类似

autoencoder:原来,d个维度,中间:d quota,输出:d个维度, 逼近没有做转换的data。

蓝色的w,编码; 右边红色的w,解码

今天的identity function,完全不做任何转换,写个programing就可以完成,为什么还要逼近它,有什么好处?

如果今天真的能得到这些事情,必然依赖于之前的hidden structure(比如数字识别时,数字的笔画),如果通过这种学习方式,得到潜藏的结构,是否可以用这些潜藏的结构做特征转换?

这些潜藏的结构,告诉我们用何种结构能够更加有效的表示原始资料。

用unsupervised learning,看那边比较稠密,那边比较稀疏,从而得知data 落在编码器比较稠密的地方,还是稀疏的地方?

从而选出那些是典型的点,那些是离群点?

d quota < d,原来的data可以映射到低维空间

做autoencoder:不需要看label y,只需要知道大部分x的特征长什么样就可

简单的autoencoder:输入输出神经元数量相同,中间稍微少一点,加上一些regulization等,用没有label的点学习,会得到一些权重,这些权重可能会让我们把encoding,decoding的动作做的很好。在deep learning中,只是把它当作pre-training的步骤

一个合理的pre-training是采用autoencoder

两两交接处,需要计算的effort。

如何用regulizaration控制模型的复杂度?

加上一些条件,少一些限制条件?

overfit的原因: 杂讯越多,资料越少,越容易overfit

当模型复杂度与资料数量确定是,能够做的事情只有如何防堵杂讯。

如果:datacleaning,丢掉杂讯大的资料,会让结果更好

另一种方式,我们往data里面增加杂讯?

一个好的autoencoder,应该在给他data后,使得输入与输出看起来差不多。如果我们给它一些难度(data+noise),如果足够robust,有污染的input,仍然能够得到pure output。

输入:紫色的x quota,输入红色的pure x

如:扫描软件:输入有变形,但输出已经得到修正

用人工的杂讯告诉机器,我需要的模型长什么样子

如果设计人工的资料,hint:也是一种regularization,让机器知道,到底想让哪一类资料处理的更好。

Hyperbolic Tangent 双曲正切

拿掉第0维,假设中间的d quota 小于d, d quota 为压缩的维度

Ein:看过的data中,输入x 与 输出x的square error。

让I-Gama,0越多越好

最佳化的gama:最多只能塞dquota个1,其它均为0

最小化留下来的维度 ===最大化拿掉的维度

PCA:data 投影到某一方向上后,在该方向上data的变化量越大越好

v的长度为1,得到的lamada即为最佳解



猜你喜欢

转载自blog.csdn.net/f2157120/article/details/80638133