《Pytorch - RNN模型》

前言:之前的博文部分地讲解了RNN的标准结构,也用pytorch的RNNCell类和RNN类实现了前向传播的计算,这里我们再举一个例子,做一个特别简单特别简单特别简单特别简单的翻译器,目标如下:将英文hello and thank you翻译成汉语拼音ni hao qie duo xie ni篇幅有限,我们拿这五个数据练手吧。如下两个例子也是为了让我们学习一下RNN相关维度的概念。一:使用RNNCell类实现简单的字符串翻译这里我们需要用到one-hot vector技术,也就是我们建立一个字符
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

深度学习 《LSTM和GRU模型》

前言:前面我们学习了标准的单向单层和单向多层的RNN,这一博文我来介绍RNN的改进版本LSTM和GRU,至于为什么有这个改进的方案,以及如何理解它们,我会尽量用最通俗的语言俩表达。学习自博客https://colah.github.io/posts/2015-08-Understanding-LSTMs/ 以及Andrew Ng的DL视频,我脑子比较笨,学了一整天才搞明白LSTM的设计初衷,于是赶紧整理下来免得遗忘,为了可快速书写,我就不自己画图了,截图来自上述博客。以下全是通俗的话。一:简单回顾下
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

深度学习 《梯度消失和梯度爆炸》

一:梯度消失在深层网络中,一方面由于求导法则,计算越前面层次或者时刻的梯度,会出现很多的乘法运算,很容易导致梯度消失和梯度爆炸,另一方面还受到激活函数的影响,Sigmoid函数和tanh函数会出现梯度为0 的区域,前面也说了,BP网络中,使用skip connection可以解决梯度消失,典型的就是ResNet。在RNN中LSTM, GRU就是解决思路。其实我感觉他们的思路有异曲同工之妙,都是将先前的层次/序列的输出通过某种方式可以输入到某一层次需要用到的时候。求导的过程中,偏导数不至于为0,或者说降低
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

深度学习 《BiRNN》

写此博文的时候,已经是欧洲凌晨一点了,今天一口气写了三篇,趁着国庆节的尾巴,赶紧搞一搞,不然等周一上班了就时间少了。一:BiRNN也就是双向循环网络,之前我们学习的标准RNN,LSTM,GRU都是单向的,即便是我们学过多层的RNN也是单向的,每个Cell只关心当前时刻和之前时刻的输入,其实更复杂的场景下,尤其是语言环境下,我们需要关注语言的上下文,也就是需要根据为了时刻的输出来得到当前的输出,说白了就是不仅仅要向前看,用之前的数据参与当前的任务计算,还要向后看,用未来的输出参与当前任务计算。举个例子
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

Pytorch《GAN模型生成MNIST数字》

这里的代码都是,参考网上其他的博文学习的,今天是我第一次学习GAN,心情难免有些激动,想着赶快跑一个生成MNIST数字图像的来瞅瞅效果,看看GAN的神奇。参考博文是如下三个:https://www.jb51.net/article/178171.htmhttps://blog.csdn.net/happyday_d/article/details/84961175https://blog.csdn.net/weixin_41278720/article/details/80861284代码不是原创
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

深度学习《GAN模型学习》

前言:今天我们来一起学习下GAN神经网络,上一篇博文我先用pytorch运行了几个网上的代码例子,用于生成MNIST图片,现在我才反过来写GAN的学习,这次反了过来,效果也是很显而易见的,起码有个直观的感觉,这一篇回归基本知识,介绍下GAN是什么?本文不会引用论文很复杂的公式。论文参考自:https://arxiv.org/pdf/1406.2661.pdf建议想学习的可以去论文学学,毕竟是大神之作,然后形成自己的认知。一:什么是GAN?在以前学习机器学习算法的时候,比如线性回归,逻辑回归,SVM等
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

Pytorch《DCGAN模型》

这一博文我们来共同学习下DCGAN,也就是深度卷积GAN的意思。一:DCGAN(Deep Convolutional Generative Adversarial Networks)原理上图是构造器的结构。和普通的卷积神经网络很相似,作为GAN发展出来的网络,其实原理和GAN是一样的,是把D模型和D模型网络换成了卷积神经网络,还做了一些结构上的变化,这些变化可以提高网络输出样本的质量和收敛速度。另外顺带提一下,GAN的作用还有就是构造数据的作用,有时候我们无法得到大量的数据,我们可以自己只在一些数据
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

NLP 《分词方法》

在NLP中,最基础的处理的就是分词,不论是一个网页还是一片文章,还是一段话,都是需要先分词的才能去搞清楚这段话的意思的,这里介绍两个最经典的方法,都是基本的算法。一:前向最大匹配(forward-max-matching)分词之前,得知道什么才是单个词,就得有个词典库,作为分词的参考基础。因此我们需要一个包含了我们认为的所有词的词典。前向最大匹配就是要匹尽量配出最长的字符串,也就是每次希望找到最长的词出来,方向是从前到后,每一步骤中匹配不成功的话,就把待匹配字段的最后一个字去掉继续进行匹配,这块简单,
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

Pytorch《LSTM模型》

前面的博文我们讲了LSTM的原理与分析,这一篇我们用pytorch类LSTM做测试完整测试代码如下,用于进行MNIST数据集测试,主要学习LSTM类的输入输出维度。这里定义的LSTM模型是用了三层深度模型,双向的,输出层增加了线性转换。完整代码如下:import torchimport torch.nn as nnimport torch.optim as optimimport torchvisionfrom torchvision import transforms# step 1:
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

NLP《语言模型》

前言,上一篇我们学习了一些基于醉打匹配规则的分词方法,这一篇我们介绍基于概率统计的方法之一,概率语言模型LM。一:什么是语言模型?每一句话,都是由若干个词语组成,这些词语的排列组合由若干种,但是只有少量的句子是能被该语言所理解的。中文有中文的语言习惯,英语有英语的语言习惯,那么怎么知道某个句子某个句子Sentence是不是说的是 “正常话” 呢?是不是能被人理解的话呢?假如存在一个评分机制,score(美国, 特朗普)那么一定是大于score(英国, 特朗普)的,我们需要建立这么个评分机制。二:什么
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

每天进步一点点《ML - Sklearn库简单学习》

一:Sklearn介绍Sklearn是一个强大的机器学习库,基于python的。官方文档(http://scikit-learn.org/stable/ )。如下列举部分的使用场景。由图中,可以看到库的算法主要有四类:分类,回归,聚类,降维。其中:• 常用的回归:线性、决策树、SVM、KNN ;集成回归:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees• 常用的分类:线性、决策树、SVM、KNN,朴素贝叶斯;集成分类:随机森林、Adaboost、G
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

NLP 《马尔科夫链》

定义:是一个离散的随机过程,状态的变化都是依赖于状态转移矩阵,用来描述状态空间中经过从一个状态到另一个状态的转换的随机过程,用图的形式表示如下,下图是截图别人的。马尔科夫链是基于两个假设:有限视野假设:也就是马尔科夫假设,回想到之前学习的Bi-gram,跟这个含义是一样的,每一时刻的状态只和上一时间的状态有关,与更之前时刻的状态没有直接联系。时间独立性:在转移矩阵里面,让一个点随机进行漫步,不论到什么时间,状态转移概率都是保持不变的,不随着时间的变化而变化,因此状态矩阵和时间没有关系。加入上图所
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

NLP 《隐式马尔科夫链》

一:模型介绍和学习隐式马尔科夫模型,是对马尔科夫链的扩展,是一个双重的随机过程,它包含一个隐藏链层S = {S1, S2, S3, ⋯ , SN}和一个可观测的链层W = {W1, W2, W3, ⋯ , WM},不可见的概率层到可见的概率曾也有一定的转移概率B,那个隐藏层的链层就是隐式马尔科夫的“隐”字来源。HMM模型如上所示:模型表示为:λ = (S,W,A,,B,π)1:Start是初始状态,最初的状态。2:红色线是初始状态到隐藏层各个状态S的转移向量π。3:S是隐藏层的状态S = {S
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

深度学习《自动编码器》

一:编码器(AE)介绍它在形状上和普通的BP网络,或者是卷积网络很相似,都是由输入层,隐藏层,输出层组成的,只不过在我们的之前学习中,BP神经网络和卷积神经网络都用来做分类使用了,也就是在监督学习的场景下做分类。AE是是无监督学习工作的,数据本身没有标签,AE的输出Y的标签刚好就是数据本身,也就是说,输入端是X,输出端是Y,且恰恰Y=X,先来看看网络结构。输入端是数据本身X,最中间的隐藏层是code层,节点的数目维度要小于输出端的维度,在input层和code层之间,还可以自定义很多隐藏层,这一部分
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

深度学习《变分自编码器》

一个模型总是从简单到复杂,由粗糙到精致不断演化。本文学习自:李宏毅机器学习视频(https://www.bilibili.com/video/av10590361/?p=29)很多截图也都是来自于视频内容。一:AE的特点之前我们学习了自动编码器,姑且称之为标准的编码器,给一个输入数据X,经过encoder转换为一个低维度向量,最后再经过decoder还原后输出图像。过程好比是下图所示,也就是每一个数据都在code的维度上是一个单点,用这个单点去还原图像,训练还是很快的,我们经过试验也能看出来训练
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

深度学习《WGAN模型》

WGAN是一个对原始GAN进行重大改进的网络主要是在如下方面做了改进实例测试代码如下:还是用我16张鸣人的照片搞一波事情,每一个上述的改进点,我再代码中都是用 Difference 标注的。import torch as tfrom torch import nnfrom torch.autograd import Variablefrom torch.optim import RMSpropfrom torchvision import transformsfrom torchvis
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

深度学习《CGAN模型》

一:介绍CGAN全程是Conditional Generative Adversarial Network,回想一下,传统的GAN或者其他的GAN都是通过一堆的训练数据,最后训练出了G网络,随机输入噪声最后产生的数据是这些训练数据类别中之一,我们提前无法预测是那哪一个?因此,我们有的时候需要定向指定生成某些数据,比如我们想让G生成飞机,数字9,等等的图片数据。怎么做呢:1:就是给网络的输入噪声数据增加一些类别上的信息,就是说给定某些类别条件下,生成指定的数据,所以输入数据会有一些变化;2:然后在损
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

每天进步一点点《ML - 从极大似然到EM算法》

一:极大似然1:概念引入极大似然参数估计是概率论中学习过的内容,就是预先定义概率分布模型,根据一堆的同概率分布的一堆样本数据去估计该概率模型中的未知参数。举个例子:有很多西瓜x,我们可以得到每一个西瓜的体积数值,每一个样本就是一个西瓜,每个西瓜是一个N维参数向量表示,为了简单起见我们先只用体积参数来叙述。这样一来,我们能够对这一一堆西瓜做一个概率分布统计,假如西瓜的体积服从高斯分布的话,就是5:怎么最大化求参数呢?答案就是求偏导数,对每个位置参数求偏导,偏导数为0,即可得到相应的参数值。6
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

每天进步一点点《ML - 高斯混合模型》

上一篇文章学习了极大似然估计和EM算法,这一章节就是学习EM算法的具体应用场景,高斯混合模型,是一中聚类的算法。一:高斯混合模型(GMM)我们将一个分布复杂的数据分布,用多个高斯概率分布来共同表示,如上图,一维数据下,红色的线条,用了三个高斯分布来表示了。红色线条可以看成是数据分布的密度分布,三个波峰,数据分布的密度相对较大。再举个例子,我们那堆西瓜,如果我们不考虑类别,就可以直接全部看成是一个类别的,用分布密度曲线统计出,在体积区间范围内的西瓜个数密度,得到了一个概率密度曲线Y,但是实际上,我们西
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0

深度学习《InfoGAN模型》

一:网络介绍普通的GAN网络的特点是无约束,对网络输入的噪声也不好解释,CGAN中我们通过给噪声合并一些类别数据,改变了输出形式,可以训练出我们指定类别的数据,这一点也是某种程度的解释,但是解释性不强。InfoGAN 主要特点是对GAN进行了一些改动,成功地让网络学到了可解释的特征,网络训练完成之后,我们可以通过设定输入生成器的隐含编码来控制生成数据的特征。InfoGAN将输入生成器的随机噪声分成了两部分:一部分是随机噪声Z, 另一部分是由若干隐变量拼接而成的latent code c。其中,c会有先
分类: 其他 发布时间: 10-25 08:41 阅读次数: 0