Yckkk!!


  • 首页

  • 归档

  • 标签

  • 公益404

2017-8-30-LSTM

发表于 2017-08-30

突然看到一篇关于RNN和LSTM的讲解非常清晰而且看着很舒服的文章
http://www.jianshu.com/p/9dc9f41f0b29
下面的图片也都来自那篇文章

下面为RNN循环神经网络的标准模型

下面为LSTM的结构图,LSTM分为忘记门,输入层门和输出层门

对比可以看的出LSTM为一种特殊的循环神经网络,上面的图为最标准
的LSTM,LSTM有不同变体,其中一个流形的 LSTM 变体,就是由
Gers & Schmidhuber (2000) 提出的,增加了一个peephold的链接

当然可以增加部分的peephold链接,也可以增加全部

还有一种改动较大的变体是 Gated Recurrent Unit (GRU),
这是由 Cho, et al. (2014) 提出。它将忘记门和输入门合成了一个单一的
更新门。同样还混合了细胞状态和隐藏状态,和其他一些改动。最终的模型
比标准的 LSTM 模型要简单,也是非常流行的变体。

2017-7-25-梯度下降法

发表于 2017-07-25
在学习<<Tensorflow实战google学习框架>>这本书中,对于神经网络的误差

反向传播算法中,让我再一次加强了对梯度下降法求解使损失函数J()取得最小的
参数的求解。
关于梯度下降法,在最核心的神经网络结构——BP神经网络中也有应用,这也
说明深度学习是建立在多层神经网络的基础上的,之前看BP神经网络对梯度下降法
不是很理解,就看了吴恩达的斯坦福机器学习视频,里面关于梯度下降算法讲的非
常仔细,在此,我简单的做下笔记。
再联系最经典的神经网络架构

设输入为Xi,权值参数为W,ps:图片是百度找的,大概就是这样的模型。
那么函数h(X)=X0+w1x1+w2x2…
那么评估hw(X)函数 J(w) 然后再对J(w)求偏导,也就是梯度下降,再经过迭代
找出最优解或者局部最优解或者相对最优解
本来想打出来但是很多符号不太好打,所以我在百度找了一份讲的比较清晰的。
大家可以参考一下
http://blog.csdn.net/shijing_0214/article/details/51923547

当然,除了不一定能达到全局最优外,梯度下降算法的另一个缺点就是计算时间

太长。为了加速训练过程,可以使用随机梯度下降算法。这个算法优化的不是在全部
训练数据上的损失函数,而是在每一轮迭代中,随机优化某一条训练数据上的损失函数
。这样每一轮参数更新速度也就大大加快了。但是问题也很明显:在某一条数据上
损失函数更小并不代表在全部数据上损失函数更小,于是使用随机梯度下降优化得到的神经网络甚至可能没法达到局部最优。
为了综合梯度下降算法和随机梯度下降算法的优缺点。。可以采用折中的方法。
每次计算一小部分训练数据的损失函数。这一小部分数据被称为一个batch。通过矩阵
运算,每次在一个batch上优化神经网络的参数并不会比单个数据慢太多。
另一方面,可以大大减小收敛所需的迭代次数。

在Tensorflow中的实现大致遵循以下过程。

batch_size = n

#每次读取一小部分数据作为当前的训练数据来执行反向传播算法。
x = tf.placeholder(tf.float32,shape=(batchsize,2),name=’x-input’)
y
= tf.placeholder(tf.float32,shape=(batch_size,1),name=’y-input’)

#定义神经网络结构和优化算法。
loss=…
train_step=tf.train.AdamOptimizer(0.001).minimize(loss)

#训练神经网络。
with tf.Session() as sess:

#参数初始化。
...
#迭代更新参数。
for i in range(steps):
#准备batch_size个训练数据。一般将所有的训练数据随机打乱之后再选取可##以得到的优化效果。
current_X,current_Y = ...
sess.run(train_step,feed_dict={x:current_X,y_:current_Y})

加油,明天继续学习tensorflow.

2017-7-20-最小生成树(普里姆算法和克鲁斯卡尔算法)

发表于 2017-07-20

所谓的最小生成树是:在给定的一个带权的无向连通图,如何选取一棵生成树,
使树上所有边上权的总和最小。

求最小生成树的算法一般有普里姆算法和克鲁斯卡尔算法。

普里姆算法:
图的存贮结构采用邻接矩阵.此方法是按各个顶点连通的步骤进行,需要用一个顶点集合,开始为空集,以后将以连通的顶点陆续加入到集合中,全部顶点加入集合后就得到所需的最小生成树 .
方法:从指定顶点开始将它加入集合中,然后将集合内的顶点与集合外的顶点所构成的所有边中选取权值最小的一条边作为生成树的边,并将集合外的那个顶点加入到集合中,表示该顶点已连通.再用集合内的顶点与集合外的顶点构成的边中找最小的边,并将相应的顶点加入集合中,如此下去直到全部顶点都加入到集合中,即得最小生成树.

克鲁斯卡尔算法:
图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间.
方法:将图中边按其权值由小到大的次序顺序选取,若选边后不形成回路,则保留作为一条边,若形成回路则除去.依次选够(n-1)条边,即得最小生成树.(n为顶点数)

下面插入在网上找到的关于这两个算法的图,一看就明了了

转自http://blog.csdn.net/weinierbian/article/details/8059129/
感觉他说的很清晰明了,大家可以看看。

2017-7-17-将进酒

发表于 2017-07-17
                将进酒
                          李白
君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。

字符串匹配的KMP算法

发表于 2017-07-17
刚看完数据结构与算法,看到里面的字符串匹配的KMP算法,在参考里阮一峰老师的blog后,

发现还是很好理解,
大家对KMP感兴趣的可以看看原文
http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html
其中最主要的就是对于部分匹配值额理解,其实也很简单,只要你理解了他定义的前缀和后缀的概念,
然后对应找到匹配值个数多少就好了。
我觉得关于学习,最主要的还是要学会在网上自己查找资料,很多过来人整理的资料都能让我们豁然开朗。

重新搭建了我的博客。Staring

发表于 2017-07-16
###刚刚使用github和jekyll搭建好博客,关于搭建和模板选择上遇到的问题和解决方法

注册并搞好了博客界面,大家有不懂的,可以百度下,很多都有详细的方法。另外可以参考下这篇,
每一步都写的很详细https://www.zhihu.com/question/59088760 。不过他的系统是windows的
所以其实相对还是麻烦一些,如果你和我一样也是linux系统那么更加方便,关于jekyll的安装和git
的安装都是几条命令的事情,百度上一查一大堆这种回答。还有在搭建过程中我意外的看到了一个jekyll
中文的网址,里面关于jekyll的各个文件及文件夹的功能和使用都讲的很详细,大家可以看看,
http://jekyll.com.cn/docs/home/
在看了那么多的模板后,我还是选择了最最最简单直接低调的一种,大家可以参考下,
喜欢的话可以fork  。https://yck666.github.io/ 
最后是希望能一起进步,一起学习。####



上面那些是之前使用github和jekyll搭建github博客写的。第二次搭建blog发现还是很有收获的,为这次

是使用hexo来搭建博客,hexo更加的方便快速,在有了第一次经验后根据百度便能很快的搞定,而且满意程度
比用jekyll搭建的还高,hexo不仅提供了不错的主题,而且在修改布局方面也是非常的方便。另外附上大神的
帖子,不仅让为成功完成,而且很有收获。
http://blog.csdn.net/tx874828503/article/details/51577815

杨长

杨长

6 日志
6 标签
RSS
Github 新浪微博
© 2017 杨长
由 Hexo 强力驱动
主题 - NexT.Pisces