「深度神经网络」(deep neural network)具体是怎样工作的?
来源:互联网 发布:用友网络股票 编辑:程序博客网 时间:2024/05/14 23:55
多层的好处是可以用较少的参数表示复杂的函数。
在监督学习中,以前的多层神经网络的问题是容易陷入局部极值点。如果训练样本足够充分覆盖未来的样本,那么学到的多层权重可以很好的用来预测新的测试样本。但是很多任务难以得到足够多的标记样本,在这种情况下,简单的模型,比如线性回归或者决策树往往能得到比多层神经网络更好的结果(更好的泛化性,更差的训练误差)。
非监督学习中,以往没有有效的方法构造多层网络。多层神经网络的顶层是底层特征的高级表示,比如底层是像素点,上一层的结点可能表示横线,三角; 而顶层可能有一个结点表示人脸。一个成功的算法应该能让生成的顶层特征最大化的代表底层的样例。如果对所有层同时训练,时间复杂度会太高; 如果每次训练一层,偏差就会逐层传递。这会面临跟上面监督学习中相反的问题,会严重欠拟合。
2006年,hinton提出了在非监督数据上建立多层神经网络的一个有效方法,简单的说,分为两步,一是每次训练一层网络,二是调优使原始表示x向上生成的高级表示r和该高级表示r向下生成的x'尽可能一致。方法是
1,首先逐层构建单层神经元,这样每次都是训练一个单层网络。
2,当所有层训练完后,hinton使用wake-sleep算法进行调优。将除最顶层的其它层间的权重变为双向的,这样最顶层仍然是一个单层神经网络,而其它层则变为了图模型。向上的权重用于”认知“,向下的权重用于”生成“。然后使用Wake-Sleep算法调整所有的权重。让认知和生成达成一致,也就是保证生成的最顶层表示能够尽可能正确的复原底层的结点。比如顶层的一个结点表示人脸,那么所有人脸的图像应该激活这个结点,并且这个结果向下生成的图像应该能够表现为一个大概的人脸图像。Wake-Sleep算法分为醒(wake)和睡(sleep)两个部分。
2.1,wake阶段,认知过程,通过外界的特征和向上的权重(认知权重)产生每一层的抽象表示(结点状态),并且使用梯度下降修改层间的下行权重(生成权重)。也就是“如果现实跟我想像的不一样,改变我的权重使得我想像的东西就是这样的“。
2.2,sleep阶段,生成过程,通过顶层表示(醒时学得的概念)和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念“。
由于自动编码器(auto-encoder,即上面说的神经网络。广义上的自动编码器指所有的从低级表示得到高级表示,并能从高级表示生成低级表示的近似的结构,狭义上指的是其中的一种,谷歌的猫脸识别用的)有联想功能,也就是缺失部分输入也能得到正确的编码,所以上面说的算法也可以用于有监督学习,训练时y做为顶层网络输入的补充,应用时顶层网络生成y'。
在监督学习中,以前的多层神经网络的问题是容易陷入局部极值点。如果训练样本足够充分覆盖未来的样本,那么学到的多层权重可以很好的用来预测新的测试样本。但是很多任务难以得到足够多的标记样本,在这种情况下,简单的模型,比如线性回归或者决策树往往能得到比多层神经网络更好的结果(更好的泛化性,更差的训练误差)。
非监督学习中,以往没有有效的方法构造多层网络。多层神经网络的顶层是底层特征的高级表示,比如底层是像素点,上一层的结点可能表示横线,三角; 而顶层可能有一个结点表示人脸。一个成功的算法应该能让生成的顶层特征最大化的代表底层的样例。如果对所有层同时训练,时间复杂度会太高; 如果每次训练一层,偏差就会逐层传递。这会面临跟上面监督学习中相反的问题,会严重欠拟合。
2006年,hinton提出了在非监督数据上建立多层神经网络的一个有效方法,简单的说,分为两步,一是每次训练一层网络,二是调优使原始表示x向上生成的高级表示r和该高级表示r向下生成的x'尽可能一致。方法是
1,首先逐层构建单层神经元,这样每次都是训练一个单层网络。
2,当所有层训练完后,hinton使用wake-sleep算法进行调优。将除最顶层的其它层间的权重变为双向的,这样最顶层仍然是一个单层神经网络,而其它层则变为了图模型。向上的权重用于”认知“,向下的权重用于”生成“。然后使用Wake-Sleep算法调整所有的权重。让认知和生成达成一致,也就是保证生成的最顶层表示能够尽可能正确的复原底层的结点。比如顶层的一个结点表示人脸,那么所有人脸的图像应该激活这个结点,并且这个结果向下生成的图像应该能够表现为一个大概的人脸图像。Wake-Sleep算法分为醒(wake)和睡(sleep)两个部分。
2.1,wake阶段,认知过程,通过外界的特征和向上的权重(认知权重)产生每一层的抽象表示(结点状态),并且使用梯度下降修改层间的下行权重(生成权重)。也就是“如果现实跟我想像的不一样,改变我的权重使得我想像的东西就是这样的“。
2.2,sleep阶段,生成过程,通过顶层表示(醒时学得的概念)和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念“。
由于自动编码器(auto-encoder,即上面说的神经网络。广义上的自动编码器指所有的从低级表示得到高级表示,并能从高级表示生成低级表示的近似的结构,狭义上指的是其中的一种,谷歌的猫脸识别用的)有联想功能,也就是缺失部分输入也能得到正确的编码,所以上面说的算法也可以用于有监督学习,训练时y做为顶层网络输入的补充,应用时顶层网络生成y'。
- 「深度神经网络」(deep neural network)具体是怎样工作的?
- 「深度神经网络」(deep neural network)具体是怎样工作的?
- 「深度神经网络」(deep neural network)具体工作流程
- 「深度神经网络」(deep neural network)具体工作流程
- 神经网络与深度学习(四)- Deep Neural Network
- 深度神经网络(Deep Neural Network, DNN)
- How to train your Deep Neural Network(如何训练你的深度神经网络)
- 神经网络与深度学习第四周-Deep Neural Network
- 用matlab训练数字分类的深度神经网络Training a Deep Neural Network for Digit Classification
- 深度学习FPGA实现基础知识10(Deep Learning(深度学习)卷积神经网络(Convolutional Neural Network,CNN))
- Deep Learning(深度学习)Convolutional Neural Networks卷积神经网络
- Deep Learning(深度学习)Convolutional Neural Networks卷积神经网络
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.2
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.3
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)
- 深度神经网络如何看待你,论自拍What a Deep Neural Network thinks about your #selfie
- 神经网络与深度学习第四周-Building your Deep Neural Network
- S3C2440 裸机时钟RTC
- 程序员学习资料书籍
- 将Python程序打包成可执行文件或service
- MINA服务端与C++客户端通讯(1)
- 关于在虚拟机上的Ubuntu与宿主机共享问题
- 「深度神经网络」(deep neural network)具体是怎样工作的?
- MB1A、MB1B、MB1C、MB11、MIGO的区别解析
- 二叉树的非递归遍历
- Android开发中的多线程编程技术
- 智能交通系统(ITS)
- 关于库位“参与MRP运算”与“不参与运算”相互变动的注意事项
- 最近感兴趣的东西
- USTC1002
- ZOJ 1542 Network