![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
机器学习
文章平均质量分 66
风吹草地现牛羊的马
这个作者很懒,什么都没留下…
展开
-
dropout的forward过程及backward反向传播过程
forward过程假设以概率ppp丢弃KKK维输入向量x=[x1,x2,,,xK]x=[x_1, x_2, ,, x_K]x=[x1,x2,,,xK]的某些值。那么经过dropout之后的向量定义为ddd,有x′=dropout(x)x' = dropout(x)x′=dropout(x)这个过程相当于生成一个随机的KKK维的mask,这个mask的生成过程如下:r=rand(K)=[r1,r2,,,rK],其中0<ri<1。mask={0原创 2021-08-19 19:48:28 · 2450 阅读 · 0 评论 -
pytorch 实现k-means聚类算法
import torchimport randomimport copyclass K_means(): def __init__(self, data, k): self.data = data self.k = k def distance(self, p1, p2): return torch.sum((p1-p2)**2).sqrt() def generate_center(self): # 随机原创 2021-08-17 11:33:44 · 4763 阅读 · 0 评论 -
K-means算法与GMM和EM之间的关系
EM算法的流程:随机初始化未知参数,初始化值记为θold\theta^{old}θoldE-STEP:求隐变量zzz的后验:p(z∣x;θold)=p(z,x;θold)∫p(z,x;θold)dzp(z|x;\theta^{old}) = {p(z,x;\theta^{old}) \over \int p(z,x;\theta^{old})dz}p(z∣x;θold)=∫p(z,x;θold)dzp(z,x;θold)求完全数据(x,z)(x,z)(x,z)的对数似然关于zzz的后验的期望:原创 2021-03-20 20:31:50 · 299 阅读 · 0 评论 -
Semi-Amortized Variational Autoencoders阅读笔记
假设变分后验为高斯分布,变分参数是λ\lambdaλ,也就是λ=[μ,Σ]\lambda=[\mu, \Sigma]λ=[μ,Σ],输入为xxx,这里的xxx表示一个样本。注意,每个样本都有与之对应的变分参数,也就是样本集X=[x(1),x(2),...,x(N)]X=[x^{(1)}, x^{(2)},..., x^{(N)}]X=[x(1),x(2),...,x(N)],变分参数集Λ=[λ(1),λ(2),...,λ(N)]\Lambda=[\lambda^{(1)}, \lambda^{(2)}, .原创 2020-12-30 22:40:36 · 748 阅读 · 0 评论 -
pytorch训练过程中出现nan的排查思路
最常见的就是出现了除0或者log0这种,看看代码中在这种操作的时候有没有加一个很小的数,但是这个数数量级要和运算的数的数量级要差很多。一般是1e-8。在optim.step()之前裁剪梯度。optim.zero_grad()loss.backward()nn.utils.clip_grad_norm(model.parameters, max_norm, norm_type=2)optim.step()max_norm一般是1,3,5。前面两条还不能解决nan的话,就按照下面的流程来判.原创 2020-12-11 14:20:58 · 22113 阅读 · 24 评论 -
生成对抗网络实现篇(GAN)
这篇主要是分析如何根据生成对抗网络原理篇(GAN)根据原理篇知道,GAN由两个部件组成,生成器和鉴别器。而且二者优化目标也不同,但是最后都是通过鉴别器的输出来计算的。注意本文将优化目标与损失函数做区分,优化目标和损失函数都是为了达到相同的目的,但是优化目标更加偏向于数学一点,而损失函数是在真正实现GAN时的具体做法。下面会分析。鉴别器的优化目标是让(1)式最大化:Ex∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z;θg)))](1)\tag{1} E_{x \sim p_.原创 2020-11-28 11:22:18 · 719 阅读 · 0 评论 -
优化算法
优化算法顾名思义就是求解参数的方法,比如在机器学习中,定义好了损失函数如何求解模型的参数,这时候就是用优化算法来解决。常见的优化算法有:坐标轴上升、坐标轴下降、牛顿法、拟牛顿法、最小二乘法、拉格朗日乘数法,梯度下降等。先挖个坑,有时间再更新上述一些算法。不过目前深度学习中最常用的就是梯度下降算法了,梯度下降算法中又包括随机梯度下降(SGD), AdaGrad, RMSProp, Adam等。这里面最常用就是Adam了。现在深度学习框架比如Pytorch, TF等都实现了梯度下降中的很多算法,拿过来用就行了原创 2020-11-25 10:35:50 · 740 阅读 · 0 评论 -
概率生成模型
夫卡了就原创 2020-11-13 16:21:52 · 1338 阅读 · 0 评论 -
生成对抗网络原理篇(GAN)
本文整理自B站的白板推导系列。一个例子现在有一批国宝,一个造假专家和一个鉴赏专家。造假专家通过观察国宝,然后仿造工艺品,鉴赏专家通过判断一个工艺品是国宝还是造假专家仿造的,对造假专家进行反馈。同时造假专家也会对鉴赏专家进行反馈,提升鉴赏专家的鉴赏能力。鉴赏专家的目标是通过上面的训练成为高水平的鉴赏专家,造假专家的目标是通过上面的训练成为高水平的造假专家,造出的工艺品能以假乱真。数学描述国宝是真实的,用pdata(x)p_{data}(x)pdata(x)来描述,假设有N个国宝N个国宝N个国.原创 2020-11-13 15:35:14 · 356 阅读 · 0 评论 -
将文档表示成图的方法
针对句子级别的任务构建图很容易,一般都是根据句子的依存句法树来构建,但是像文档级别的任务,比如文档分类任务,想要使用很火的GNN网络,应该怎么构建图呢?今天看了4篇论文,都是针对文档级别任务构建图的方法。corpus级别构建图Graph Convolutional Networks for Text Classification, AAAI,2019这篇论文针对文档分类任务,构建了一个corpus level的图,图中的节点总数N=Ndoc+NwordN = N_{doc}+N_{word}N=N原创 2020-10-15 20:56:54 · 667 阅读 · 1 评论 -
正向KL散度与反向KL散度
KL散度的公式是KL[p(x)∣∣q(x)]=∫xp(x)logp(x)q(x)dxKL[p(x)||q(x)] = \int_{x}p(x)log{p(x) \over q(x)}dxKL[p(x)∣∣q(x)]=∫xp(x)logq(x)p(x)dx假设真实分布为p(x)p(x)p(x),我们想用分布q(x)q(x)q(x)去近似p(x)p(x)p(x),我们很容易想到用最小化KL散度来求,但由于KL散度是不对称的,所以并不是真正意义上的距离,那么我们是应该用KL[p∣∣q]KL[p||q]转载 2020-10-10 16:32:52 · 5372 阅读 · 2 评论 -
牛顿法与Hessian矩阵
牛顿法可以用于求解方程的根和无约束最优化问题。其背后的数学原理分别对应的是一阶泰勒展开和二阶泰勒展开。回顾泰勒公式展开:f(x)=f(x0)+f′(x0)(x−x0)+12f′′(x0)(x−x0)2+O((x−x0)3)f(x)= f(x_0)+f'(x_0)(x-x_0)+{1 \over 2}f''(x_0)(x-x0)^2+O((x-x_0)^3)f(x)=f(x0)+f′(x0)(x−x0)+21f′′(x0)(x−x0)2+O((x−x0)3)牛顿法求解方程的根假设我们要原创 2020-10-09 15:32:20 · 2507 阅读 · 1 评论 -
主题模型(三)潜在狄利克雷分配 LDA 求解之变分EM算法
本文涉及的知识点有,最大似然,贝叶斯估计,共轭分布,EM算法,变分推断等。极大似然估计、极大后验估计和贝叶斯估计在进行下面的推导之前,首先要了解参数估计的相关内容,见最大似然估计(MLE)、最大后验估计(MAP)和贝叶斯估计LDA初探在PLSA模型中,doc-topic分布和topic-word分布(也就是在主题模型(二)概率潜在语义分析(PLSA或PLSI)中求解的p(zk∣di)和p(wj∣zk)p(z_k|d_i)和p(w_j|z_k)p(zk∣di)和p(wj∣zk))一旦被求解,就原创 2020-10-09 13:06:52 · 665 阅读 · 0 评论 -
EM算法总结
本文需要对EMEMEM算法有一定的了解。若对EMEMEM算法之前没有了解过,不建议看本文。这里给出常用的推导EM算法的案例:高斯混合算法(GMM)与最大期望算法(EM)的推导假设隐变量为ZZZ,可观测变量为XXX,要求解的未知参数为θ\thetaθ。在EM算法框架中,(X,Z)(X,Z)(X,Z)称为完全数据。EM算法其实还是为了求解最大似然解,但是并不是最大似然的解析解,而是近似解。所以我们还是要推导出未知参数θ\thetaθ的最大似然形式。完全数据的联合概率分布:p(X,Z;θ)=p(X;θ)p原创 2020-10-04 17:18:32 · 518 阅读 · 0 评论 -
主题模型(二)概率潜在语义分析(PLSA或PLSI)
https://zhuanlan.zhihu.com/p/40877820原创 2020-10-03 15:29:51 · 894 阅读 · 0 评论 -
主题模型(一)LSA(LSI)
先考虑这样一个问题,给定若干篇文档集合,怎么从中找出最相似的两篇?相似性可以由余弦距离衡量。余弦距离公式:cos(a→,b→)=a→∗b→∣a∣∗∣b∣cos(\overrightarrow{a}, \overrightarrow{b}) = { \overrightarrow{a}*\overrightarrow{b} \over |a|*|b| }cos(a,b)=∣a∣∗∣b∣a∗b因此只要把文档表示成向量就可以用余弦距离来衡量了。在介绍LSA之前,先了解一下向量空间模型。向量空间原创 2020-09-27 14:07:00 · 3248 阅读 · 0 评论 -
主题模型简介(topic model)
定义对于一个文档集合来说,假如一篇文章是讲猫科动物的,那么可能会一部分讲猫, 一部分讲老虎, 一部分讲猎豹。那么讲猫的那一部分与猫有关的词语出现的频率应该高一些,比如“鱼”,“老鼠”等,讲老虎的那一部分与老虎有关的词语出现的频率应该高些,比如“森林之王”,“一山不容二虎”等,讲猎豹那一部分与猎豹有关的词语出现的频率应该高些,比如"速度",“豹纹”等等。所以一篇文档应该有多个主题,每个主题的比例不同,每一个主题下面也应该有很多词语,每个词语的比例也不同。主题模型就是用数学框架来体现出文档的这种特点,主题模原创 2020-09-24 09:33:07 · 2227 阅读 · 0 评论 -
单维高斯分布及多维高斯分布的性质
协方差矩阵是实对称矩阵,也是半正定矩阵。所以协方差矩阵满足实对称矩阵和半正定矩阵的性质。记Σ\SigmaΣ为协方差矩阵。Σ\SigmaΣ是满秩的,也就是∣Σ∣|\Sigma|∣Σ∣(行列式)不为0。Σ\SigmaΣ是半正定的,所以∣Σ∣|\Sigma|∣Σ∣是大于0。Σ\SigmaΣ所有的特征值是大于0的。Σ\SigmaΣ的逆矩阵存在。Σ\SigmaΣ可相似对角化。Σ\SigmaΣ主对角线元素均非负,其他位置元素可以有负数。多维高斯分布的概率密度函数:f(x)=1(2π)D/21∣Σ∣原创 2020-09-22 16:25:49 · 3782 阅读 · 0 评论 -
机器学习算法优缺点对比及选择(汇总篇)
机器学习算法优缺点对比及选择(汇总篇)转载 2020-09-08 14:54:25 · 186 阅读 · 0 评论 -
SVM(支持向量机)科普篇
本文整合了一位博主的10篇SVM的讲解博客,特点是通俗易懂,搞懂SVM是干什么的,并没有涉及到如何求解SVM,所以不会涉及很多数学公式的推导。原博主博客比较老了,而且字体很小,原博客请点击这里SVM是一种二分类模型,线性分类器线性分类器,也叫感知机是一种最简单的分类器的形式,SVM可以看作是对线性分类器做的改进。用一个二维空间中仅有两类样本的分类问题举例。如下图所示:空间中有C1和C2C_{1}和C_{2}C1和C2两个类别,中间的直线是一个分类函数,可以将两类样本完全分开。一般的,如.原创 2020-09-04 13:24:33 · 664 阅读 · 0 评论 -
解决安装tensorfow2.x网速太慢的问题
今天安装了一下tf2.3,网上的加速教程就一句话,pip install tensorflow-gpu==2.3 -i https://pypi.tuna.tsinghua.edu.cn/simple/用清华的镜像,结果我试了好几次都下载失败了。最后换了豆瓣的源一下子就下载下来了。pip install tensorflow-gpu==2.3 -i https://pypi.douban.com/simple所以以后清华的源下载不下来的时候多试试其他的源。阿里的源也行,pip install原创 2020-09-01 16:10:41 · 165 阅读 · 0 评论 -
统计机器翻译工具kenlm使用
python | 高效统计语言模型kenlm:新词发现、分词、智能纠错原创 2020-08-20 13:52:21 · 238 阅读 · 0 评论 -
论文 Non-Parametric Adaptation for Neural Machine Translation阅读笔记
这篇论文参考了Encoding Gated Translation Memory into Neural MachineTranslation。建议先阅读这篇论文之后再阅读本论文。传统的NMT(Neural machine translation)模型的泛化能力很强,但是对于专业领域的翻译或者罕见词汇的翻译就不那么准确了。如何解决这个问题?本文作者是这样做的,在decoder阶段加入一些具有专业领域或者罕见词的知识,这些知识可以用来影响NMT的句子的生成,从而提高专业领域的翻译的准确性。这样的模型本.原创 2020-08-10 17:17:52 · 344 阅读 · 0 评论 -
Householder Flow
Householder Flow变分自动编码器(VAE)是可扩展的、强大的生成模型。然而,变分后验的选择决定了VAE的可操作性和灵活性。一般来说,潜变量是用一个对角协方差矩阵的正态分布建模的。这可以提高计算效率,但通常不能灵活地匹配真实的后验分布。丰富变分后验分布的一种方法是应用正则化流,即normalizing flows。这种操作是对潜变量的简单后验分布做一系列可逆变换,将其变为复杂,灵活的后验分布。Householder Flow就是normalizing flows中的一种。推导设q(x)q(x)原创 2020-07-15 19:36:38 · 586 阅读 · 1 评论 -
逆Wishart分布在贝叶斯推理中的应用
Wishart分布的概率密度函数f(w∣v,H)=∣w∣(v−p−1)/22vp/2Γp(v/2)∣H∣v/2exp[−12tr(H−1w)]其中,Γp(v/2)=πp(p−1)/4∏j=1pΓ(v+1−j2)f(w|v,H) = {|w|^{(v-p-1)/2} \over 2^{vp/2} \Gamma_{p}(v/2)|H|^{v/2}}exp[-{1 \over 2}tr(H^{-1}w)] \\其中, \Gamma_{p}(v/2) = \pi^{p(p-1)/4}\prod_{j=1}^原创 2020-07-13 01:36:07 · 4114 阅读 · 0 评论 -
威沙特分布和逆威沙特分布(Wishart 分布及逆 Wishart 分布)
Wishart 分布Wishart 分布是用来描述多元正态分布样本的协方差矩阵的。Wishart 分布的随机变量是一个随机矩阵。定义假设XXX是一个n∗pn*pn∗p的矩阵,其中,每一行XiX_{i}Xi服从多元正态分布:Xi∽Np(0,Σ)X_{i} \backsim N_{p}(0,\Sigma)Xi∽Np(0,Σ)也就是每一个样本XiX_{i}Xi服从ppp维的正太分布。令A=∑iXiTXiA = \sum_{i}X_{i}^TX_{i}A=i∑XiTXi则随机矩阵AAA原创 2020-07-12 12:45:22 · 15480 阅读 · 1 评论 -
变分自编码器ELBO的求解---随机梯度变分估计(SGVB)
在变分自编码(VAE)一文中我们已经求解了VAE的ELBO,这里再进一步分析求解ELBO的方法,也就是SGVB估计。两种形式的ELBO变分自编码器的ELBO其实有两种形式:第一种是:ELBO=Eqφ(z∣x)[logpθ(x,z)qφ(z∣x)]=Eqφ(z∣x)[logpθ(z)pθ(x∣z)qφ(z∣x)]=Eqφ(z∣x)[logpθ(x∣z)]−KL[qφ(z∣x)∣∣pθ(z)](1)\tag{1}\begin{aligned}ELBO = & E_{q_{\varphi}(原创 2020-06-13 01:16:06 · 4289 阅读 · 1 评论 -
GMVAE(GAUSSIAN MIXTURE VARIATIONAL AUTOENCODERS)高斯混合变分自编码器公式推导
GMM高斯混合模型:p(x)=∑zp(z)p(x∣z)=∑k=0K−1πkN(x∣μk,σk)\begin{aligned}p(x) = &\sum_{z}p(z)p(x|z) \\= &\sum_{k=0}^{K-1} \pi_{k}N(x|\mu_{k}, \sigma_{k})\end{aligned}p(x)==z∑p(z)p(x∣z)k=0∑K−1πkN(x∣μk,σk)其中∑kπk=1,z是一个K维的one−hot向量,p(zk=1)=πk\sum_原创 2020-06-12 00:16:51 · 4456 阅读 · 4 评论 -
基于切比雪夫多项式的简单GCN网络
利用论文《SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS》中的原理进行简单的GCN测试,具体原理可看这篇论文。import torchimport torch.nn as nnimport torch.nn.functional as Fimport networkx as nxdef normalize(A, symmetric=True): # A = A+I A = A + torch.eye(A.s原创 2020-05-24 22:27:03 · 2330 阅读 · 0 评论 -
理解Graph Convolutional Network(GCN)
理解Laplacian矩阵在GCN相关的理论知识中,都提到了Laplacian矩阵(拉普拉斯矩阵),那么GCN为什么要用拉普拉斯矩阵以及拉普拉斯矩阵是怎么来的却很少有人说明。下面通过一个列子来说明。一个基于图的热传播模型上图一个热传播模型,我们都知道热量只会从温度高的地方流向温度低的地方,再上图中,热量只会从温度高的节点流向温度低的节点,比如节点1会与节点0,2,4发生直接的热交换,会与其他间接连通的节点(比如节点8)发生间接的温度交换。假设热量的流动满足牛顿冷却定律(热量传递的速度正比于温度梯度原创 2020-05-23 16:56:54 · 929 阅读 · 0 评论 -
pytorch 逻辑回归
import torchfrom torch import nnimport matplotlib.pyplot as pltimport numpy as npdot_num = 100x_p = np.random.normal(3., 1, dot_num)y_p = np.random.normal(6., 1, dot_num)label_p = np.ones(dot_num)C1 = np.array([x_p, y_p, label_p]).T # 标签为1的数原创 2020-05-09 18:10:31 · 229 阅读 · 0 评论 -
Pytorch model中的遍历模型的参数
model.named_parameters()return : 返回model的所有参数的(name, tensor)的键值对。可以修改参数的requires_grad属性。用法 : 常用于对网络的参数进行一些特殊的处理(比如 fine-tuning)。no_decay = ['bias', 'LayerNorm.weight']optimizer_grouped_parameters = [ {'params': [p for n, p in model.named_parame原创 2020-05-09 11:37:18 · 6146 阅读 · 0 评论 -
XLNet与Bert
XLNet原理解读XLNet:运行机制及和Bert的异同比较原创 2020-04-16 21:26:41 · 716 阅读 · 0 评论 -
Transformer与Transformer-XL
回顾Transformer在NLP领域,对语言建模最常用的模型就是RNNS(包括LSTM),但是RNNS存在一些问题,比如学习长期依赖的能力很弱(LSTM语言模型平均只能建模200个上下文词语),而且学习速度也很慢。在2017年,谷歌的一位学者提出了Transformer架构,其示意图如下图所示:Transformer不懂的可以看博客图解Transformer虽然Transformer相比...原创 2020-04-16 01:28:53 · 1007 阅读 · 0 评论 -
自回归语言模型(AR)和自编码语言模型(AE)
自回归语言模型(Autoregressive LM)在ELMO/BERT出来之前,大家通常讲的语言模型其实是根据上文内容预测下一个可能跟随的单词,就是常说的自左向右的语言模型任务,或者反过来也行,就是根据下文预测前面的单词,这种类型的LM被称为自回归语言模型。GPT 就是典型的自回归语言模型。ELMO尽管看上去利用了上文,也利用了下文,但是本质上仍然是自回归LM,这个跟模型具体怎么实现有关系。E...转载 2020-04-15 17:58:29 · 4529 阅读 · 3 评论 -
pytorch-pretrained-bert简单使用
转载自:9012年,该用bert打比赛了从下载模型权重开始# 切换到你的anaconda gpu 环境# source activate 你的conda环境名称# 安装加载预训练模型&权重的包pip install pytorch-pretrained-bert接着就是下载模型权重文件了,pytorch-pretrained-bert官方下载地址太慢了…,推荐去kaggle下载L...转载 2020-04-15 16:41:12 · 23486 阅读 · 15 评论 -
条件变分自编码器(CVAE)及相关论文ELBO推导
推导用到的概率公式:P(A,B∣C)=P(A∣B,C)P(B∣C)P(A,B|C) = P(A|B,C)P(B|C)P(A,B∣C)=P(A∣B,C)P(B∣C)证明:由于 P(A∣B)=P(A,B)P(B)P(A|B) = {P(A,B) \over P(B)}P(A∣B)=P(B)P(A,B),所以P(A,B∣C)=P(A,B,C)P(C)P(A,B|C)={P(A,B,C) \ove...原创 2020-03-31 19:55:25 · 10677 阅读 · 0 评论 -
Pytorch详解NLLLoss和CrossEntropyLoss
Pytorch详解NLLLoss和CrossEntropyLoss原创 2020-03-30 13:32:29 · 817 阅读 · 0 评论 -
rnn_utils.pack_padded_sequence的作用
Pytorch中的RNN之pack_padded_sequence()和pad_packed_sequence()原创 2020-03-29 23:47:35 · 1378 阅读 · 0 评论 -
pytorch的模型保存与读取(state_dict)
pytorch的状态字典 state_dict原创 2020-02-25 16:58:01 · 8900 阅读 · 0 评论