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,循环神经网络)是一种具有短期记忆能力的神经网络模型,可以处理任意长度的序列,在自然语言处理中的应用非常广泛,比如机器翻译.文本生成.问答系统 ...
随机推荐
- selenium 用autoIT上传下载文件
一.下载安装AutoIT 下载并安装AutoIT,下载链接:https://www.autoitscript.com/site/autoit/ AutoIT安装成功后,可以在开始菜单下看到AutoIT ...
- 并发 错误 java.lang.IllegalMonitorStateException: current thread not owner 分析
public class ThreadTest implements Callable<String> { public String call() throws Exception { ...
- Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() .根据首字母对应VERBOSE,DEBUG,INFO, WA ...
- SSH远程登陆docker容器
环境: Ubuntu 16.04(mac osx的VMware Fushion环境) 任务: Ubuntu 16.04通过SSH登陆docker(目的是为了运行在其他服务器的Jenkins访问dock ...
- 【HackerRank】Closest Numbers
Sorting is often useful as the first step in many different tasks. The most common task is to make f ...
- IPU VPU GPU的关系
转:https://blog.csdn.net/dragon101788/article/details/78404669 Video graphics system[IPU, VPU and GPU ...
- 【鸟哥的Linux私房菜】笔记3
正确地开机 最好不要使用root账号登陆!GNOME图形界面 View items as a list X WindowShell 文本交互界面bash是Shell的名称,Linux的默认壳程序就是b ...
- Docker容器技术-镜像分发
一.镜像分发 1.镜像及镜像库的命名方式 指定镜像名称和标签的方法: 在狗偶见镜像时 通过docker tag命令 [root@bogon ~]# cd identidock/ [root@bogon ...
- 线性代数:Ax=b的解
n列的矩阵A,当且仅当向量b是列空间C(A)的一个向量时,Ax=b有解. C(A)的零空间是N(A),N(A)正交补是A的行空间C(T(A)), 依据上一章的结论,任何Rn向量可以表示为r+n,其中n ...
- SQLite3时间函数小结
import sqlite3 conn = sqlite3.connect('/tmp/sqlite.db') cur = conn.cursor() 接下来干嘛呢?建一张表吧.这里需要注意的是,SQ ...