ML&DL原理
文章平均质量分 69
机器学习,深度学习偏算法本身的文章
outsider0007
github:https://github.com/colin0000007
展开
-
tensorflow实现seq2seq:完整部分
完整源码地址:https://github.com/colin0000007/seq2seq源码中我将实现封装为了2个类,一个BasicSeq2SeqModel,一个AttentionSeq2SeqModel。前者包含了bi-rnn,beam search等特效,后者只是多了attention。下面详细讲讲BasicSeq2SeqModel。1.训练数据seq2seq数据分为源序列,目...原创 2019-07-03 15:54:29 · 3019 阅读 · 0 评论 -
tensorflow实现seq2seq模型细节(5):如何实现带attention的beam search,tensorflow构建独立的计算图(子图),推理图加载训练图的参数达到参数共享
为什么会有这样的问题,在对encoder构建attention时,训练时传入到AttentionWrapper的参数和解码时是不一样的。构造attention的方法: def build_rnn_layer_attention(self,encoder_output,decoder_layer,decoder_num_units,src_seq_len): #sca...原创 2019-05-17 22:34:35 · 1140 阅读 · 0 评论 -
tensorflow实现seq2seq模型细节(4):tensorflow nmt中的attention(scaled luong 和 normed bahdanau)和optimizer
1.attentionTensorflow的nmt教程中这样提到:Attention: Bahdanau-style attention often requires bidirectionality on the encoder side to work well; whereas Luong-style attention tends to work well for diffe...原创 2019-05-17 22:21:18 · 780 阅读 · 2 评论 -
tensorflow实现seq2seq模型细节(3):inference推理阶段解码方法,beam search 和 greedy以及解决使用beam search出现key error的错误
1.贪婪法这种策略很简单,输入source后,decoder需要生成target,传入<s>作为序列的开始,生成下一个字符,直接选取概率最大的作为结果,用当前节点的结果作为下一个节点生成的输入,直到生成</s>结束。2.beam search参考https://www.zhihu.com/question/54356960/answer/1389900...原创 2019-05-17 16:42:14 · 1447 阅读 · 0 评论 -
tensorflow实现seq2seq模型细节(2):tf.contrib.seq2seq.sequence_loss
查看tensorflow源码其内部sequence_loss如果未指定softmax_loss_function使用的sparse_softmax_cross_entropy_with_logits你也可以自己实现这个seq_loss:使用这个tf.contrib.seq2seq.sequence_loss只需要传入masks。而单独使用这需要显式的写代码定义mask对sparse_sof...原创 2019-05-17 16:38:46 · 3741 阅读 · 0 评论 -
tensorflow实现seq2seq模型细节(1): tf.nn.dynamic_rnn和tf.nn.bidirectional_dynamic_rnn,双向rnn encoder的输出连接方式
tf.nn.dynamic_rnn:将单向的rnn沿时间序列展开outputs, state = tf.nn.dynamic_rnn(cell=multi_rnn_cell, inputs=data, dtype=tf.float32)Outputs...原创 2019-05-17 16:34:11 · 871 阅读 · 0 评论 -
用tensorflow实现一个简单的ResNet,体会ResNet的简单有效。
完整代码已经放置在GitHub:https://github.com/colin0000007/Simple-ResNetResNet全称residual neural network。主要是解决过深的网络带来的梯度弥散,梯度爆炸,网络退化的问题。下面是ResNet一个单元的结构,单元中有多少个layer应该是我们自己决定。从图片中很容易看出ResNet做了什么,就只是把输入x和网...原创 2019-07-15 11:39:23 · 1657 阅读 · 0 评论 -
CNN不要关心模板/filter的参数怎么来,attention不要关心权重怎么来的。神经网络不要关心参数怎么来的。
一些个人想法。在刚开始学习CNN的时候,很好奇filter的参数是怎么来的。看视频过程中也有人问。实际上我们并不需要关心filter中的参数,只要能做梯度下降,那么我们的目标就是使得loss下降。而filter中的参数自然会变得更有利于loss下降。至于filter卷积后是在提取什么特征,这完全需要我们自己下定义。最近复习attention机制,讲attention的例子时会给人一种权重是事先...原创 2019-04-20 16:36:03 · 959 阅读 · 0 评论 -
为什么sigmoid会造成梯度消失?
这里仅仅做一些数学上的简单分析,首先看sigmoid的公式:它的导数:的图像如下:也就是说任何输入都会被缩放到0到1,如果隐层的所有layer都使用sigmoid,除了第一层的输入,最后一层的输出,其他层的输入输出都是0到1,看看的完整图像:z大概在-5到5之间,才有值,而除第一层隐层的输入都在0到1之间,所以的图像如下:最终取值大概0.2到0.25之间,下...原创 2019-03-25 22:06:12 · 17662 阅读 · 1 评论 -
深度学习初步,全连接神经网络,MLP从原理到实现(三)实现部分,用java实现MLP
原理部分完全参照另外2篇:深度学习初步,全连接神经网络,MLP从原理到实现(一)原理部分,反向传播详细解释和实际计算例子深度学习初步,全连接神经网络,MLP从原理到实现(二)原理部分,过拟合,激活函数,batchsize和epochs,训练DL模型的建议说明:这个实现全部用java实现,依赖矩阵运算库jblas和画图的一个库jfree(不需要画学习率衰减曲线的可以不用这个库),无论是预...原创 2019-03-25 17:15:33 · 2071 阅读 · 0 评论 -
深度学习初步,全连接神经网络,MLP从原理到实现(二)原理部分,过拟合,激活函数,batchsize和epochs,训练DL模型的建议
其他两篇:深度学习初步,全连接神经网络,MLP从原理到实现(一)原理部分,反向传播详细解释和实际计算例子深度学习初步,全连接神经网络,MLP从原理到实现(三)实现部分,用java实现MLP1.激活函数(1)SigmoidSigmoid将所有输入压缩到0到1之间,这样造成的问题是,当随着神经网络的层次加深时,特征的变化由于sigmoid而慢慢衰减。这样会造成靠近输入层的梯度很...原创 2019-03-25 16:30:54 · 4006 阅读 · 0 评论 -
深度学习初步,全连接神经网络,MLP从原理到实现(一)原理部分,反向传播详细解释和实际计算例子
其他两篇:深度学习初步,全连接神经网络,MLP从原理到实现(二)原理部分,过拟合,激活函数,batchsize和epochs,训练DL模型的建议深度学习初步,全连接神经网络,MLP从原理到实现(三)实现部分,用java实现MLP下面的内容主要是李宏毅老师的机器学习课程,加上自己的整理和补充,文章有点长,有一定的ml基础,认真读就能搞懂,数学部分建议自己手写推导。如果对反向传播部分没有理...原创 2019-03-25 12:05:58 · 10931 阅读 · 0 评论 -
理解线性代数,矩阵运算,行列式
说明:看了3blue1brown的线性代数本质所以做点笔记,部分图片来自3blue1brown符号:R^n代表n维向量空间,(x1,x2,x3...xn)代表n维空间中的一个向量1.基,线性空间,线性相关,线性无关向量:在二维空间中,向量表示为也就是起点(0,0)到一个坐标(x,y)连线就可以构成一个向量,并且指向(x,y)拓展到n维空间也是一样的,只是没有几何上的直观理解基:在我们熟悉的x,...原创 2018-05-27 14:32:26 · 12754 阅读 · 0 评论 -
协方差,协方差矩阵,相关系数
1.协方差定义: X,Y为两个随机变量,则它们的协方差值为: 这个公式的推导很简单,在特定的样本数据下,E(X),E(Y)都是常值,又由方差的性质E(A+B)=E(A)+E(B)可以展开为:Cov(X,Y) = E(XY+E[X]E[Y]-E[X]Y-E[Y]X) =E(XY)+E(E[X]E[Y])-E(E[X]Y)-E(E[Y]X) ...原创 2018-05-26 15:33:16 · 20027 阅读 · 2 评论 -
java实现监督学习隐马尔科夫模型/HMM用于中文分词
之前写过,只是为了复习下,监督学习版本的写起来也很简单,参数只是统计,核心是维特比算法。代码以及数据全部在一个java文件中。地址:https://github.com/colin0000007/supervised-hmm...原创 2019-07-26 20:15:19 · 669 阅读 · 0 评论 -
算法细节:关于CRF和最大熵模型中计算模型期望和先验期望的公式理解(最大熵模型/CRF条件随机场的实现细节)
如果只是简单看看条件随机场和最大熵模型的原理。我打赌绝大多数人没有意识到我下面提到的公式是这个意思。自己实现算法涉及到细节时稀里糊涂写出来,最近看到一个最大熵模型的实现想不通的时候,才慢慢想明白为什么这样写。正文:之前看条件随机场的时候计算特征函数模型期望是下面这样的公式:计算先验模型期望时看到这样的公式:式子中有先验分布,实现算法时,p(x)和p(x,y)对于先验分布的遍...原创 2018-12-22 22:44:04 · 1687 阅读 · 8 评论 -
基于监督学习的隐马尔科夫模型(HMM)实现中文分词
因为语料是分好词来训练的,所以代码写起来还算简单,HMM的参数pi,A,B训练只是做一个简单的统计工作反倒是写维特比算法时出了一些问题,因为之前都是纸上谈兵,真正写这个算法才发现之前有的地方没有搞明白!!维特比的算法大致如下:注:下面[]中代表下标在计算δ[t](i)是需要遍历δ[t-1](j),j遍历所有的隐状态,找到一个隐状态使得δ[t](i)最大,计算完所有的δ后是一个观...原创 2018-07-16 20:54:52 · 4933 阅读 · 6 评论 -
逻辑回归python实现
1.问题使用线性回归怎么解决分类问题?这就是逻辑回归要做的事情,并且逻辑回归可以计算出概率2.模型以及求解(线性)给出一组m个样本数据,每个样本数据有n个特征,并且带有标记0或者1,代表属于哪一类,为了把输入的参数代入到预测函数后始终是一个0到1之间的数,这样我们可以把0,1看做两个类别, 引入sigmod函数 1/(1+e^-t) 这个函数的函数值始终是在0到1之间让s...原创 2018-08-09 10:48:53 · 41485 阅读 · 2 评论 -
PCA原理以及python实现(另外说说SVD奇异值分解)
说明:大部分内容摘自这个链接http://blog.codinglabs.org/articles/pca-tutorial.html,由于没联系到博主,若侵权,望谅解,联系我删除,我觉得原文写得非常好所以分享到这里,算法实现部分以及第3点还有少点杂七杂八的是我自己写的。一.基于最大可分性来解释PCA(1)简单说明对于原有的数据我们希望降维后能够尽量的离散,这样能保留原有信息,方...转载 2018-08-10 21:57:11 · 7286 阅读 · 2 评论 -
自己开发的一个自然语言处理java开源库CONLP(适合nlp初学者)
CONLP自己开发的一个自然语言处理java库,后期可能会加入机器学习的一些模型,不限于nlp。 项目地址:https://github.com/colin0000007/CONLP 欢迎关注 CONLP是瞎取的名字,暂定。 1.介绍一个通用的隐马模型的java实现,包括一阶(bigram),和二阶模型(trigram)的,二阶模型目前没有使用平滑处理,并在此基础上实现了一阶和...原创 2018-09-10 12:44:12 · 3102 阅读 · 3 评论 -
CRF++/CRF/条件随机场的特征函数模板
由于最近想实现CRF,学完了理论后就开始怎么想怎么实现,想参照CRF++的开源实现,但首先要解决的怎么理解特征模板,所以写了此文,主要参考了2篇文章,在此感谢。http://www.52nlp.cn/%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D%E5%85%A5%E9%97%A8%E4%B9%8B%E5%AD%97%E6%A0%87%E6%B3%A8%E6%B3%9...原创 2018-10-01 23:11:20 · 10207 阅读 · 11 评论 -
梯度下降,损失函数,代价函数,假设函数
梯度下降涉及到的一些东西:梯度下降https://www.cnblogs.com/pinard/p/5970503.html损失函数,代价函数,假设函数https://blog.csdn.net/lyl771857509/article/details/79428475常用损失函数https://blog.csdn.net/u010976453/article/detail...转载 2018-10-03 19:20:31 · 790 阅读 · 0 评论 -
中文分词的探索,CRF(条件随机场)和HMM(隐马尔可夫模型)用于分词的对比,以及中文分词的评估
在中文分词这个应用上我试验得比较多了,所以这里想对自己做过关于分词的做一些对比,总结。可能很多人在入门隐马尔科夫模型的时候都举例过分词这个模型,我也是,当时觉得好神奇,竟然这么准确,但是后面当我越来越深入做分词这一块,学到条件随机场,并且自己实现测试,发现纯序列标注用HMM分词实际上一般般,下面就我这2个标注模型在分词种做一个对比。1.CRF和HMM模型特点的对比首先,先说一下2个模型...原创 2018-11-10 00:12:01 · 4483 阅读 · 0 评论 -
隐马尔科夫模型(HMM)的无监督学习算法java实现(baum-welch迭代求解),包括串行以及并行实现
HMM的原理就不说了,这里主要说算法的实现。实际实现起来并不是很困难,前提是你仔细看过hmm的原理,然后很多实现就照着公式写出对应的代码,比如前向算法,后向算法,参数更新都是有明确的公式的,只需要对应写成代码,这里需要提到2点技巧。1,所有概率需要取对数,这是因为有的概率实在是太小了,容易溢出,或者精度不够。2.对一个求和的式子取对数概率时需要用到一个技巧。下面直接贴出我写的关于这个计...原创 2018-11-04 22:06:11 · 4203 阅读 · 0 评论 -
杂谈:序列模型特征和普通模型特征,CRF,最大熵模型,最大熵马尔科夫模型
1.模型最近在弄基于最大熵模型的依存句法分析,看到最大熵模型,觉得和CRF(条件随机场很相似),都使用特征函数这种东西,最大熵可以使用联合概率建模,也可以使用条件概率建模,crf和最大熵在同使用条件概率建模的时候:p(y|x)的计算看公式基本一样:但crf作为一种序列模型,还是和最大熵有区别,最大熵模型并不能当作序列模型使用。序列模型版本的最大熵模型是最大熵马尔可夫模型,传统的最...原创 2018-12-21 23:22:45 · 630 阅读 · 0 评论 -
机器学习常用算法对比
转自http://www.csuldw.com/2016/02/26/2016-02-26-choosing-a-machine-learning-classifier/侵权删除本文主要回顾下几个常用算法的适应场景及其优缺点!(提示:部分内容摘自网络)。机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实...转载 2018-06-02 22:16:34 · 3482 阅读 · 0 评论