RNN、LSTM、Char-RNN 学习系列(一)
RNN、LSTM、Char-RNN 学习系列(一)
zoerywzhou@gmail.com
http://www.cnblogs.com/swje/
作者:Zhouw
2016-3-15
版权声明:本文为博主原创文章,未经博主允许不得转载。
转载请注明出处:http://www.cnblogs.com/swje/p/5279349.html
作者是深度学习的初学者,经由导师指导,稍微学习了解了一下RNN、LSTM的网络模型及求导,打算在这里分享一下,欢迎各种交流。
2016-03-15看到的博客、参考文档:
从NN到RNN再到LSTM(附模型描述及详细推导)——(一)NN、
从NN到RNN再到LSTM(附模型描述及详细推导)——(二)RNN、
从NN到RNN再到LSTM(附模型描述及详细推导)——(三)LSTM。
Softmax回归:http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92
反向传播算法的解释:Principles of training multi-layer neural network using backpropagation:http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html
近期的学习体会:
1、Softmax分类器:解决多分类问题。
当训练过程中,我们想要improve 某目标字符的置信度并降低其他字符的置信度时,通常的做法是使用一个交叉熵损失函数,这相当于在每个输出向量使用Softmax分类器,将下一个出现的字符的索引作为一个正确的分类。一旦损失进行了反向传播并且RNN权值得到更新,在输入相同的情况下,下一个正确的字符将会有更高的分数。
2、前向传播(Forward propagation):依次按照时间的顺序计算一次。
反向传播(Back propagation):从最后一个时间将累积的残差传递回来。
3、 符号 "
" 的含义:
本身是一个向量,它的第
个元素
是
对
的第
个分量的偏导数。
4、激活函数(activation function):是用来加入非线性因素的,因为线性模型的表达能力不够。激活函数不是指它去激活什么,而是指如何把“激活的神经元的特征”通过函数把特征保留并映射出来。
常见的激活函数有:
- sigmoid函数:S型函数。特征比较复杂或者相差不是很大,需要更细微的分类判断时,效果好。
- tanh:是设置一个值,大于0.5的通过为1,不然为0。特征相差明显是效果好,在循环过程中不断扩大特征效果显示出来。
- ReLU:简单粗暴,大于0的留下,否则一律为0。取max(0,x),不断试探如何用一个大多数为0的矩阵来尝试表达数据特征。
5、问答区域
- 问:训练好的网络怎么使用?
- 答: 用来给新数据分类。
- 问:神经网络通过什么方法训练?
- 答:可以用BP算法,前向传播:从第一层到最后一层(last layer)跑一遍。
6、Dropout参数(@char-rnn模型):指模型训练时随机让网络某些隐含层节点的权重不工作,不工作的节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已)。
训练神经网络模型时,如果训练样本比较少,为了防止模型过拟合,Dropout可以作为一种trick供选择。
7、Boosting 方法:为了提高弱分类算法的准确度:构造预测函数序列,then combine 之。
Adaboost 算法:将容易找到的识别率不高的弱分类算法提升为识别率很高的强分类算法。给定一个弱的学习算法和训练集,在训练集的不同子集上,多次调用弱学习算法,最终按加权方式联合多次弱学习算法的预测结果得到最终学习结果。
RNN、LSTM、Char-RNN 学习系列(一)的更多相关文章
- 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...
- 学习Tensorflow的LSTM的RNN例子
学习Tensorflow的LSTM的RNN例子 基于TensorFlow一次简单的RNN实现 极客学院-递归神经网络 如何使用TensorFlow构建.训练和改进循环神经网络
- [NL系列] RNN & LSTM 网络结构及应用
http://www.jianshu.com/p/f3bde26febed/ 这篇是 The Unreasonable Effectiveness of Recurrent Neural Networ ...
- 实现Bidirectional LSTM Classifier----深度学习RNN
双向循环神经网络(Bidirectional Recurrent Neural Networks,Bi-RNN),Schuster.Paliwal,1997年首次提出,和LSTM同年.Bi-RNN,增 ...
- 深度学习原理与框架-递归神经网络-RNN网络基本框架(代码?) 1.rnn.LSTMCell(生成单层LSTM) 2.rnn.DropoutWrapper(对rnn进行dropout操作) 3.tf.contrib.rnn.MultiRNNCell(堆叠多层LSTM) 4.mlstm_cell.zero_state(state初始化) 5.mlstm_cell(进行LSTM求解)
问题:LSTM的输出值output和state是否是一样的 1. rnn.LSTMCell(num_hidden, reuse=tf.get_variable_scope().reuse) # 构建 ...
- github上虽然已经有实现好的Char RNN
前言 学习RNN的时候很多人应该都有看过Andrej Karpathy写的The Unreasonable Effectiveness of Recurrent Neural Networks,使用基 ...
- 这可能是国内最全面的char RNN注释
char RNN代码来源于https://github.com/hzy46/Char-RNN-TensorFlow 前言 本人在学习char RNN的过程中,遇到了很多的问题,但是依然选择一行代码一行 ...
- 使用Keras进行深度学习:(五)RNN和双向RNN讲解及实践
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 笔者:Ray 介绍 通过对前面文章的学习,对深度神经网络(DNN) ...
- TensorFlow之RNN:堆叠RNN、LSTM、GRU及双向LSTM
RNN(Recurrent Neural Networks,循环神经网络)是一种具有短期记忆能力的神经网络模型,可以处理任意长度的序列,在自然语言处理中的应用非常广泛,比如机器翻译.文本生成.问答系统 ...
随机推荐
- Java里的4种引用类型
Java语言中,除了基本数据类型外,其他的都是指向各类对象的对象引用:Java中根据其生命周期的长短,将引用分为4类. 1 强引用 特点:我们平常典型编码Object obj = new Object ...
- 深入struts2.0(六)--ActionProxy类
1.1 ActionProxy接口以及实现 ActionProxy在struts框架中发挥着很关键的数据. 通过webwork和xwork交互关系图能够看出.它是action和xwork中间的 ...
- sql语句备份/导入 mysql数据库或表命令
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qq1355541448/article/details/30049851
- Springboot入门2-配置druid
Druid是Java语言中最好的数据库连接池,在连接池之外,还提供了非常优秀的监控功能. 下面来说明如何在 Spring Boot 中配置使用Druid 1.添加Maven依赖 (或jar包) < ...
- A除以B (20)
时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整 ...
- 关于SIM800C MINI V4.0 V4版本 5v供电模块重启问题
现象描述 模块不停重启,发送AT时候能看到,不停的回复Call Ready 或者SIM卡确认没问题,但是NET指示灯一直不能进入3秒闪烁的状态. 1.内核要求 SIM800C内核要求需要电源有瞬间有2 ...
- [不常用] - CSRF(跨站点请求伪造)
CSRF,Cross Site Request Forgery,即跨站点请求伪造. 这种攻击是指,在用户正常登录系统以后,攻击者诱使用户访问一些非法链接,以执行一些非法操作. 比如:如果删除用户操 ...
- linux systemctl 指令 —— 阮一峰
Systemd 指令 原文链接如果有效,请点击原文链接查看.原文:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.ht ...
- Mycat实现Mysql数据库读写分离
Linux和Windows环境下搭建Mycat数据读写分离 前提需要:1.服务器装有JVM虚拟机,就是JDK.2.两个Mysql数据库已经实现主从复制,参考:https://www.cnblogs.c ...
- yield 表达式形式的应用
import random foods=['banana','apple','peach','grape','pear'] def deco(func): def wrapper(*args,**kw ...