- 博客(52)
- 资源 (4)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【自然语言处理】聊聊注意力机制(Attention Mechanism)的发展
前言其实,关于注意力机制的文章真的有很多,而且写得相当精彩(毕竟过去这么多年了),那这篇侧重于简单的一个介绍,使大家对注意力机制有个初步了解。正文首先这件事还要从序列到序列模型(Seq2seq Model)开始说起,最早的序列到序列模型是一个CNN+LSTM。简单来说就是把CNN把编码端映射成一个固定向量,然后用LSTM一步步解码。接着一个自然的想法是使用LSTM,因为LSTM的处理序列...
2019-08-08 16:15:43
4102
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【自然语言处理】神经文本生成综述
前言首先本文主要是对《 Neural Text Generation: Past, Present and Beyond 》这篇论文的总结,该论文是上海交通大学团队写的,查阅过数次,觉得写得很棒,在此总结一下,以此共勉。要点这篇的文章关注点在于神经网络的文本生成。极大似然估计首先,最开始的是用神经网络语言模型(NNLM)。以及的后来的RNNLM(基于RNN循环神经网络)。P(xt∣st...
2019-05-23 22:38:30
3903
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【统计学习方法】 支持向量机(SVM) Python实现
支持向量机,一个理论先于实践的产物,由Corinna Cortes和Vapnik等在1995年首次提出的,取得了非常好的效果。 SVM分为线性可分(又可分硬间隔与软间隔)和线性不可分的问题,线性不可分可通过核函数进行映射到空间里,从而线性可分。线性可分支持向量机模型:f(x)=sign(w⋅x+b)f(x)=sign(w⋅x+b)f\left( x \right) = sign\le...
2019-05-23 08:46:15
2913
4
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【统计学习方法】 逻辑斯谛回归(Logistic Regression) Python实现
代码可在Github上下载:[代码下载](https://github.com/FlameCharmander/MachineLearning)今天看了一下《统计学习方法》里的逻辑斯谛回归,结合下《机器学习实战》里面的代码,很精炼。公式如下:模型:> $P(Y=1|x)=\frac {exp(w\cdot x+b)}{1+exp(w\cdot x+b)}$> $P(Y=0|x)=1-P(Y=1|x)=\frac {1}{1+exp(w\cdot x+b)}$策略:对数损失函数算法:梯度下降算法
2019-05-22 09:37:45
3705
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 《统计学习方法》 决策树 ID3和C4.5 生成算法 Python实现
在博主刚接触编程的时候,曾经想过一个如何实现聊天机器人,当时最直接的想法是打算用if-else来做(事实上真用VB实现了一个简单的以自嗨)。而今天的决策树就是可以视为一种if-else的集合。而决策树的可以用来分类也可以用来完成回归任务。本部分介绍的决策树实现了ID3和C4.5算法。两者算法差别在于一个使用了信息增益一个使用了信息增益比。
2019-05-17 23:33:53
5104
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【自然语言处理】基于双向LSTM(Bi-LSTM)文本分类的Tensorflow实现
Github:Github下载地址RNN在自然语言处理的文本处理上取得了很大的成功。双向LSTM可以捕获上下文的内容,从而使得分类效果更佳。在本文的这次分类中,本文使用了IMDB电影评价的数据集,最终的模型可以将正面情感和负面情感通过双向LSTM给分类出来。
2019-02-25 14:09:02
8323
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【深度学习】基于GAN生成对抗网络的Python实现
前言此文参考原文Github代码本文Github代码GAN是2014年提出的一个框架。简单来说,这个框架有一个生成器和一个判别器,生成器生成数据(假币),判别器判别数据真假(判别假币),基于这种max-min极大极小值博弈算法,最终生成器生成的数据(假币)会使判别器分辨不出,也就是说D(p_data)和D(p_gen_data)均在0.5左右。基于这一框架生成器得到了出色的生成效果引起了许多...
2018-12-14 02:29:48
17558
4
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【自然语言处理】LSTM文本生成Python(纯Numpy)实现
前言RNN存在着梯度消失的问题,Hochreiter & Schmidhuber (1997)在1997年提出了LSTM(Long Short-Term Memory)长短期记忆单元来解决这个问题,现在自然语言处理的大部分任务都用到了LSTM,例如机器翻译,文本生成,,同理还有GRU。数据集数据集跟上一篇博客RNN文本生成使用的一样,都是古诗的语料库,这里不再赘述。...
2018-05-28 00:12:08
6829
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【自然语言处理】RNN文本生成Python(纯Numpy)实现
前言由于RNN具有记忆功能,之前文章有介绍RNN来实现二进制相加,并取得了比较好的效果。那这次本文使用RNN来进行古诗生成。数据集数据集就是我们的古诗了,每行都是一首古诗,并且以格式”题目:古诗”。 首先需要创建一个词典,词典可以是每个字的词频高的前6000字作为词典,然后用one-hot来表示词向量。def getVocab(filename='poetry.txt'):...
2018-05-26 20:35:10
7236
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【机器学习】Softmax回归 Python实现
前言常常会遇到需要多分类的问题,比如手写体识别,你需要识别手写的数字是几(0~9),比如文本生成,你需要知道生成的是哪个字,都需要进行多分类。那么我们最常用的多分类函数就是softmax了。接下来本文将会实现一个softmax来进行手写体识别。数据集本次的数据集分为训练集:文件名为”trainingDigits”和测试集:文件名为”testDigits”,每个文件夹里面有txt文件若干...
2018-05-24 16:28:02
15044
17
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【统计学习方法】隐马尔可夫模型(HMM) Python实现
前言隐马尔可夫模型在自然语言处理等各领域中,经常被用来处理标注问题。 隐马尔可夫模型由初始状态概率向量ππ\pi 、状态转移概率矩阵A和观测概率矩阵B决定。其中ππ\pi和A决定状态序列,B决定观测序列。 λ=(A,B,π)λ=(A,B,π)\lambda=(A,B,\pi) A=[aij]N×NA=[aij]N×N{\rm{A = }}{\left[ {{a_{ij}}}...
2018-05-04 21:39:41
4809
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【深度学习】RNN循环神经网络Python简单实现
前言循环神经网络是一种时间序列预测模型,多应用在自然语言处理上。 原理网上是有很多的,不展开解释,本文基于一个二进制加法,进行python实现。 其实python代码并非本人实现 具体参考两篇博客,第一篇是英语原文,第二篇是译文。 https://iamtrask.github.io/2015/11/15/anyone-can-code-lstm/ http://blog.csdn....
2018-03-13 15:34:05
7420
8
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【深度学习】BP反向传播算法Python简单实现
个人觉得BP反向传播是深度学习的一个基础,所以很有必要把反向传播算法好好学一下 得益于一步一步弄懂反向传播的例子这篇文章,给出一个例子来说明反向传播 不过是英文的,如果你感觉不好阅读的话,优秀的国人已经把它翻译出来了。 一步一步弄懂反向传播的例子(中文翻译) 然后我使用了那个博客的图片。这次的目的主要是对那个博客的一个补充。但是首先我觉得先用面向过程的思想来实现一遍...
2017-11-25 17:07:54
10533
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【统计学习方法】 Adaboost算法 Python实现
前言 俗话说三个臭皮匠,顶个诸葛亮。应用在机器学习里面讲就是多个弱分类器,通过组合可以变成一个强分类器,这也便是集成学习的思想。今天所要讲的Adaboost(自适应提升)算法便是种思想的一种代表算法。Adaboost不同于SVM,是一种实践优先于理论的一种产物,是先发现这种算法有效,后来人们不断研究,用前向加法模型来证明它,为何会这种算法是有效的。算法 首先先来看下P138的算...
2017-09-25 12:55:59
2694
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 《统计学习方法》 决策树 CART生成算法 回归树 Python实现
先说明一下在看《统计学习方法》Cart回归树的时候懵懵的,也没又例子。然后发现《机器学习实战》P162有讲到这个,仔细看了一下。 所以这下面是《机器学习实战》的代码,但书上没有什么原理,如果不太懂原理的话,会有点难以理解。而它的实现就是《统计学习方法》P69的算法5.5(最小二乘回归树的生成算法)。引用《统计学习方法》P69的算法5.5 输入:训练数据集 D; 输出:回...
2017-08-23 15:21:27
3729
6
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【统计学习方法】 决策树 CART生成算法 分类树 Python实现
代码可在Github上下载:[代码下载](https://github.com/FlameCharmander/MachineLearning)Cart(Classification and regression tree)分类与回归树,是一种可以用来分类或者回归(属性可以是连续值,标签必须离散)的决策树(二叉树)。对回归树使用平方误差最小化准则,对分类树使用基尼系数最小化准则。该篇讲述的就是使用基尼系数来构造决策树。
2017-08-22 16:58:00
2131
6
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 《统计学习方法》 朴素贝叶斯 贝叶斯估计 Python实现
《统计学习方法》 朴素贝叶斯 贝叶斯估计 Python实现为了解决极大似然估计会出现概率值为0的情况,我们采用贝叶斯估计解决这个问题。
2017-08-19 10:36:10
2168
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 《统计学习方法》 朴素贝叶斯 极大使然估计 Python实现
代码可在Github上下载:(https://github.com/FlameCharmander/MachineLearning)前言使用贝叶斯法来进行分类,我们的模型就是\(f(x)=\mathop {\arg \max }\limits_{{c_k}} P\left( {Y = {C_k}|X = x} \right)\)(后验概率P(隐变量|观测变量)。算法理论先介绍贝叶斯...
2017-08-18 20:33:17
2614
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【统计学习方法】k近邻 kd树的python实现
前言代码可在Github上下载:代码下载k近邻可以算是机器学习中易于理解、实现的一个算法了,《机器学习实战》的第一章便是以它作为介绍来入门。而k近邻的算法可以简述为通过遍历数据集的每个样本进行距离测量,并找出距离最小的k个点。但是这样一来一旦样本数目庞大的时候,就容易造成大量的计算。所以需要将数据用树形结构存储,以便快速检索,这也就是本文要阐述的kd树。实现分为两部分,一个是k...
2017-08-17 15:22:35
9500
44
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【统计学习方法】感知机Python 对偶形式实现
代码可在Github上下载:(https://github.com/FlameCharmander/MachineLearning)前言上篇博文感知机的原始形式提到了感知机的原始形式,而这篇博文介绍的是感知机的对偶形式。算法理论感知机的原始形式提到的参数更新:\[\begin{array}{l}w \leftarrow w + \eta {y_i}{x_i}\\b \lef...
2017-08-15 19:54:36
2790
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【统计学习方法】感知机Python 原始形式实现
前言代码可在Github上下载:(https://github.com/FlameCharmander/MachineLearning)感知机作为一个二分类模型,在1957年由Rosenblatt提出,是感知机是支持向量机SVM和神经网络的一个基础。目的是通过将一个实例(比如一个西瓜是否好坏)进行分类,输入的是实例特征向量,输出的是实例的类别。紧记机器学习三要素:模型,策略,算法。...
2017-08-15 16:12:54
2995
3
原创 【Python】问题小记录
前言在使用Map对str批量数据转换只收,直接使用np.argmax得到的索引值是有问题的。问题可简化为如下代码。先记录,等空了探究。np.argmax([0, 1, 2, 3, 4])结果:4a = "1 2 3 4 5"np.argmax(map(float, a))结果:0...
2020-03-20 01:15:07
287
原创 【自然语言处理】谣言检测小结
前言博主最近研究了下Ma Jing博士的谣言检测。现将她的一些文章进行一些总结。内容第一篇《Detect Rumors Using Time Series of Social Context Information on Microblogging Websites》由于谣言检测模型只是对用户信息,模式传播和文本内容进行建模,忽略了时间的变化这一信息。作者提出了一种DSTS模型。第二篇《...
2020-01-24 16:08:48
6391
7
原创 【自然语言处理】使用Tensorflow-Bert进行分类任务时输出每个Train Epoch的信息
前言最近任务需要用到Bert,一个头疼的地方是官方代码只有在跑完指定的epoch次数之后才进行评估。可是基于任务的要求,需要输出每轮的评估信息(比如Acc, Loss)。相似的需求类似:How to get a total training set loss for an epoch using Tensorflow Estimator api方法由于Bert在Tensorflow使用了E...
2020-01-10 21:20:39
3690
6
原创 【自然语言处理】tf.contrib.seq2seq.GreedyEmbeddingHelper源码解析
前言本文衔接TrainingHelper,也可以衔接BasicDecoder。先说明一下,GreedyEmbeddingHelper主要作用是接收开始符,然后生成指定长度大小的句子。正文GreedyEmbeddingHelper代码传送门class GreedyEmbeddingHelper(Helper): """A helper for use during inference....
2019-08-12 21:03:56
2679
2
原创 【自然语言处理】tf.contrib.seq2seq.TrainingHelper源码解析
前言本文衔接tf.contrib.seq2seq.dynamic_decode源码分析以及tf.contrib.seq2seq.BasicDecoder源码解析。除了TrainingHelper后面还会介绍到GreedyEmbeddingHelper
2019-08-12 20:21:28
3549
1
原创 【自然语言处理】聊聊曝光误差(Exposure Bias)怎么被解决的
前言曝光误差(exposure bias)简单来讲是因为文本生成在训练和推断时的不一致造成的。不一致体现在推断和训练时使用的输入不同,在训练时输入是真实样本,但是在推断时用的却是上一个词的输出。解决方案1.使用scheduled-sampling,简单的做法就是在训练阶段使用的输入以p的概率选择真实样本,以1-p的概率选择上一个词的输出。而这个概率p是随着训练次数的增加衰减,可以使用指数函数...
2019-08-05 19:37:19
11296
原创 【自然语言处理】tf.contrib.seq2seq.BasicDecoder源码解析
前言tf.contrib.seq2seq.dynamic_decode源码分析本文衔接上文。首先tf.contrib.seq2seq.dynamic_decode主要作用是接收一个Decoder类,然后依据Encoder进行解码,实现序列的生成(映射)。其中,这个函数主要的一个思想是一步一步地调用Decoder的step函数(该函数接收当前的输入和隐层状态会生成下一个词),实现最后的一句话的...
2019-06-11 19:36:56
5677
原创 【自然语言处理】tf.contrib.seq2seq.dynamic_decode源码分析
前段时间因为自己的任务,看了好久的seq2seq的源码,了解了它的内部机制。现分享一波源码解析给大家以共勉。首先tf.contrib.seq2seq.dynamic_decode主要作用是接收一个Decoder类,然后依据Encoder进行解码,实现序列的生成(映射)。其中,这个函数主要的一个思想是一步一步地调用Decoder的step函数(该函数接收当前的输入和隐层状态会生成下一个词),实现最后的一句话的生成。该函数类似tf.nn.dynamic_rnn。
2019-06-02 12:03:05
8526
原创 【自然语言处理】SeqGAN的探索(踩坑)记录
SeqGAN是2017年[《SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient》](https://arxiv.org/pdf/1609.05473.pdf)这篇论文提出的模型,使用了强化学习的策略梯度解决了之前GAN只能应用在生成器输出为连续值的问题(文本中词与词之间的表示是离散的)。属于比较开创的工作,之后的许多工作都是在这篇文章的基础进行的。今天主要是想研究SeqGAN这么久以来的一个踩坑记录的总结,主要是要讨论关于蒙特
2019-05-31 00:00:04
5251
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人