深度学习----初窥门径笔记

深度学习这么火,自己也想搞一搞,就学习了台湾李宏毅教授写的《1天搞懂深度学习》,300多页的英文PPT。
给出李宏毅教授的课程地址:http://speech.ee.ntu.edu.tw/~tlkagk/index.html
给出300页PPT的地址:链接:http://pan.baidu.com/s/1nv54p9R 密码:3mty
学习时候的git地址:http://git.oschina.net/xuea/deeplearning

什么是深度学习?

深度学习的最终目的是获取一个多层的复杂函数,这个函数可以对输入的值做出相对正确的输出。
比如:
输入一个小猫的图片,函数经过运算输出“这是一只猫”;
输入一个小狗的图片,函数经过运算输出“这是一只狗”;

但是,用单个简单函数很难得到这样的效果,那么聪明的人类就想到了:人的大脑神经网络不是简单构成复杂的实例吗?人的大脑神经元对正确的事情做出正向激励,然后神经元突触更快地释放,然后许许多多的神经元连结起来,就对这个复杂的世界可以做出相对正确的判断了。

如何模拟神经网络?

一个简单的函数就是一个神经元:
神经元
然后许许多多的神经元构成一个网络:
神经网络.png
就这样,so easy。

然后我们在说明其中的一些细节:
1、神经元中有个Activation Function激活函数,用来加速训练等,激活函数可以出现在任何一层,但不是每一层都必有。
常用激活函数:Sigmoid Function (s型函数)
sigmod函数

2、神经网络从左到右依次为输入层、各个层合起来的隐层,输出层。然后,输出层之后还可以有个Softmax Layer,可以对输出结果进一步的调整。

3、那么要有多少层呢?每层多少个神经元呢?
作者曰:尝试+直觉,目前没有太好的办法自动调整,这也是一个科研的前进方向

4、思考:与adaboost区别?
adaboost 弱分类器辅以权重得到一个强分类器,加权的投票机制。“三个臭皮匠在一起思考问题,然后投票”。
而感觉deepLearning的可以把臭皮匠放入每一个隐层,然后作为下一层臭皮匠的输入,最后得到一个整体最优,某种组合状态下最优的分类器。

如何调整参数?

深度学习的最终目的是获取一个最优的函数,那么函数的参数调整也就是重中之重了。
1、梯度下降法gradient descent
特征:简单,通常使用,未必全局最优,可能局部最优
Learning Rate 学习率,很重要的一个参数。我的理解是:调参的时候,参数变化率,调参一般不是按照常量增大减小,而是按照变化率计算下一个参数,然后测试效果,所以学习率就是参数变化的幅度。幅度太大,容易跨过,幅度太小,容易太慢。
为了能够使得梯度下降法有较好的性能,我们需要把学习率的值设定在合适的范围内。学习率决定了参数移动到最优值的速度快慢。如果学习率过大,很可能会越过最优值;反而如果学习率过小,优化的效率可能过低,长时间算法无法收敛。

2、Backpropagatio反向传播
特征:BP神经网络,一种有效的计算 dl\dw的方法
建立网络的目的是要拟合一个非线性函数,最终效果是整个网络就是一个函数。函数的参数便是里面的权重,所以主要目的就是如何训练得到这些参数。一般都是建立一个目标函数O,然后优化它,因为它和权重w有关,所以利用梯度下降法,来更新权重,所以BP最终的目的就是是在设法求dO/dw

实验

本实验用的python框架keras,给我文档地址:
中文文档:http://keras-cn.readthedocs.io/en/latest/
英文文档:https://keras.io/
http://keras-cn.readthedocs.io/en/latest/for_beginners/concepts/#_1 这个文档更适合新手

本实验是一个识别手写数字的程序,具体的实验代码及过程请参考本人的git,参考PPT及本人调试后的代码可以很快运行起来。
http://git.oschina.net/xuea/deeplearning

调整实验以获取较优的结果

1、选择合适的loss失败率
合适的失败率
成功率瞬间由 0.66 上到 0.94

2、Mini-batch 即SGD

model.fit(x_train, y_train, batch_size=100, nb_epoch=20)

3、新的激活函数

# model.add(Activation("sigmoid"))
model.add(Activation("relu"))

正确率提升到0.98

4、合适的学习率
5、引入动量

optimizer=Adam()

正确率提升到0.98

神经网络的变种

1、Convolutional Neural Network (CNN) 卷积神经网络
广泛应用在图像处理方面,阿尔法狗也用
2、Recurrent Neural Network (RNN) 循环神经网络
有记忆的神经网络 用于语义分析挺好

下一波潮流

  • Supervised Learning 有监督的学习:
    • Ultra Deep Network 超深网
    • Attention Model 注意力模型
  • Reinforcement Learning 强化学习
  • Unsupervised Learning 无监督学习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值