- 博客(29)
- 收藏
- 关注
原创 条件随机场CRF
条件随机场CRF1:介绍条件随机场(conditional random field,简称CRF),是一种判断模型,经常被用于part-of-speech tagging任务中,例如标注句子的词性,例如『苹果是好吃的』中苹果是名词,是是动词,好吃的是形容词等等。此外,由于分词任务也可以被看做是对句子进行tagging的任务,例如4tag(BMES)等,因此也可以使用CRF处理分词的任务。除了CRF,我们都知道HMM也可以用于这样的词性标注任务,jieba分词就是使用HMM预测未登录句子的BMES标签
2021-05-25 10:13:00
407
1
原创 jieba分词源码分析
jieba分词源码分析jieba分词是开源的中文分词库,里面包含了分词,核心词提取等功能,使用范围非常广。下面介绍一下jieba分词的源码,方便之后查找回忆。1:前缀词典基于词典的切词方法需要一个好的语料库,jieba分词的作者在这里https://github.com/fxsjy/jieba/issues/7描述了语料库来源,主要来源于人民日报的语料库。初始化时会根据原始语料库生成前缀词典,可以用来得到之后的词频数据等。@staticmethod def gen_pfdict(f
2021-02-25 15:13:13
1195
原创 中文分词
中文分词最近工作中碰到很多query分析的技术,包括query的分词,纠错,改写,同义词,权重等等常见的自然语言处理任务,在这里简单的记录一下这些任务的常见算法,持续更新。1:中文分词中文分词根据实现原理和特点,主要分为以下2个类别:1、基于词典分词算法也称字符串匹配分词算法。该算法是按照一定的策略将待匹配的字符串和一个已建立好的“充分大的”词典中的词进行匹配,若找到某个词条,则说明匹配成功,识别了该词。常见的基于词典的分词算法分为以下几种:正向最大匹配法、逆向最大匹配法和双向匹配分词法
2021-02-22 20:23:52
878
原创 SVM实现(最优化方法)
SVM实现SVM(支持向量机)是一个常用的分类器,我在SVM中介绍了该方法的大概的公式以及出发点。很多机器学习课程也讲了SVM的公式,那么具体怎么实现一个SVM呢?这里介绍一下这个git repo里面的SVM实现:SVM代码。首先我想将SVM的公式放到下面:传统SVM公式:改进后的SVM(不严格要求所有点必须满足大于margin,对于离群点不那么敏感):SVM实现的代码如...
2020-03-25 23:36:07
4096
原创 从零开始NLP
从零开始NLP最近打算学习一下NLP,在这里记录一下看到的知识。1:N-gramn-gram是一种语言模型,作用就是为一句给定的单词的序列返回一个概率,表示这个序列出现的概率值。常见的有unigram,bigram,trigram等等。n个单词的句子出现的概率:unigram,假设单词之间相互独立,那么可以表示为:unigram是不可取的,因为‘i have a ...
2019-12-04 15:31:26
476
转载 word2vec在推荐系统的应用
word2vec在推荐系统的应用word2vec是自然语言处理里面的一种模型,主要根据单词的"context"上下文来学习词向量。word2vec被用在了很多场景中,比如说node2vec,deepWalk等图特征学习算法中,除此之外,也被用在了很多推荐系统场景中。下文转载自http://mccormickml.com/2018/06/15/applying-word2vec-to-recom...
2019-12-03 18:22:50
1591
原创 降维方法
降维方法1:Multidimensional Scaling(MDS)MDS是一种降维或者可视化算法,通过使得降维之后的数据能够保留原始数据之间的相似度(或者不相似度,距离)等等,来将数据映射到低维空间。假设原始数据的距离矩阵D已知,比如说下面的形式:我们使用stress来衡量映射的好坏:上面的这些符号来自于https://www.ncss.com/wp-content...
2019-11-27 11:14:38
1628
原创 基于树结构的机器学习模型
基于树结构的机器学习模型在深度学习被广泛应用之前,基于树形结构的机器学习模型,比如说决策树,随机森林,GBDT,Xgboost等等被广泛的应用到分类等常见场景中,下面总结一下常见一个一些树形结构的机器学习模型。1:决策树常见的决策树算法有ID3,C4.5,CART(classification and regression tree)等等。由于存在很多好的文章已经详细的介绍了这些算法,...
2019-11-10 18:09:24
2219
1
原创 机器学习算法
机器学习算法1:线性回归的解释线性回归是最简单的机器学习算法之一,但是非常常用。我们都知道给定(x,y)作为训练数据,使用如下的目标函数进行优化:然后使用优化方法,比如说梯度下降算法(或者牛顿法等)对上面的目标进行优化:但是为什么直接使用平方差作为损失函数能够进行先行回归?下面的解释来自与Andrew Ng的机器学习课程:假设回归结果与真实值之间的误差满足正太分...
2019-07-30 22:43:42
877
原创 SVM(支持向量机)总结
SVM知识点总结1:几何间隔和函数间隔假设叉号对应的点标签y=1,圈对应的点的标签y=0,我们可以得到一个分类界面能够将两类数据分开。当处理未知数据A,B,C的时候,很显然,判断A为y=1这一类的置信度(confident)应该比判断C为y=1这一类的置信度高,而B的置信度介于两者之间。因此,我们可以知道,如果某个点距离分类界面越远的话,预测结果的置信度越高。函数间隔(functi...
2019-07-28 18:41:17
662
原创 遗传算法总结
遗传算法总结遗传算法是一种最优化算法,或者说遗传算法可以应用于求解搜索问题或者最优化问题。百度对遗传算法的定义为:遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法遗传算法在工业界有着比较广泛的应用。我也是实习的时候才真正用到遗传算法,下面是我的一些总结。1:传统优化算法遗传算法...
2019-07-07 14:01:06
2303
原创 常用算法java汇总
常用算法java汇总最近在面试的时候,面试官都会问到一些算法题,这里我把一些课本上有的(算法导论)算法的java实现版本整理一下,方便自己查阅,如果里面存在错误的话,请及时指正,谢谢。1:快排快排的思想是分支,具体介绍请查看别的博客,这里我主要说明两点内容:1)为什么最后需要把你选择的某个anchor点交换,比如说,我在程序里面使用的输入数组的第一个元素,为什么需要把第一个元素和e...
2019-04-04 20:14:32
323
原创 机器学习面试知识点汇总
机器学习面试知识点汇总最近开始找实习了,记录一下看过的知识点,方便查询,以下的知识点主要是根据同学面试问题或者网上面经题目整理。1:字符串匹配算法朴素匹配算法 KMP (https://www.geeksforgeeks.org/kmp-algorithm-for-pattern-searching/) 有限自动机算法 AC自动机(多模式匹配)public class KMP...
2019-03-12 23:20:28
398
原创 机器学习的数学基础
机器学习的数学基础这里我主要总结一下我正在看的Bishop的"Pattern Recognition and Machine Learning"里面的内容。1:概率论基础边缘概率:只观察某个变量的概率。如存在X,Y两个变量,P(X)和P(Y)都是边缘概率(marginal probability)联合概率:同时观测两个变量的值,此时的概率。如P(X=i,Y=j)就是联合概率(joi...
2019-01-21 11:33:39
354
原创 矩阵导数(Matrix Differentia)
矩阵导数(Matrix Differentia)常见的偏导,导数形式都是标量形式的,比如说方程y=2x+10,那么y关于x的导数dy/dx=2,但是对于一般情况下,方程组Y=AX等情况来说,X,Y都有可能是向量或者矩阵的形式,这个时候怎么求dY/dX呢?矩阵求导主要分为以下一些情况:1:x∈,y∈,y=Ψ(x)对于y,x都是向量的情况下,dy/dx的形式如下,是一个m*n的矩...
2018-12-29 15:35:06
14404
1
原创 tensorflow reproducible(再现性)
tensorflow reproducible(再现性)平时做实验一般需要保证每次实验结果一致(同样的设置下),这样才能知道哪些改进是真正有用的,最近在做实验的时候遇到一些问题,代码结果每次都不一样(小数点后面三位开始不相同,而且随着epoch的增加,结果慢慢就越来越不一样),下面是我我看见的一些保证reproducible的方法(tensorflow下):1:tensorflow.set...
2018-12-16 19:29:03
447
原创 DCT变换和DFT变换
DCT变换和DFT变换1:DFT变换这里我只谈论二维的DFT变换,有关一维的DFT,请查看一下博客,里面有详细介绍:https://blog.youkuaiyun.com/IMWTJ123/article/details/79831242根据上面的公式,我们可以得到对应的离散傅里叶变换呃代码,下面是matlab版本的代码,和公式(12)是一一对应的,时间复杂度为(MN)^2,通常记成N^4...
2018-12-16 16:45:44
8799
原创 目标函数常见解法
如何求解目标函数简介相信大家在写程序的时候,尤其是一些机器学习算法的时候,都会遇到将自己的目标函数使用矩阵形式表达的情况。大多数时候,我们写目标函数都是以的形式递归的计算,但是写程序的时候一般输入都是所有的数据,如numpy储存的数组,因此需要转化为矩阵形式。这里简单介绍一下常用的方法以及函数(tensorflow),希望有所收获。此外,本文还包括一些常见的矩阵形式的目标函数的解法。...
2018-12-12 20:27:06
9843
2
原创 跨模态检索评价指标(evaluations of cross-modal retrieval)
跨模态检索评价指标(evaluations of cross-modal retrieval)1:背景跨模态检索在实际生活中有着广泛的应用,比如说输入一段话,希望找到对应的图片,再比如说根据一段语音得到与描述大致相同的图像,这些都是跨模态(modality, 如文本,图像,语音等等)检索的例子,本文主要介绍跨模态检索的评价指标,对基本的跨模态检索概念不清楚的话,请首先查阅资料。最近面试...
2018-12-04 16:54:57
7133
29
原创 tensorflow自定义梯度 RegisterGradient gradient_override_map
tensorflow自定义梯度1:梯度计算关于tensorflow的反向传播算法可以查看我之前的文章反向传播(back propagation)算法详解,tensorflow可以自动计算网络结构的梯度,但是我们需要首先确保模型的梯度是能够正确学习的,而不是ill-posed的,比如说将softmax-loss里面的交叉熵换成一般的squared error的话,会存在梯度一直是0的现象,具...
2018-12-02 15:29:31
5712
4
原创 强化学习之Q-learning算法
Q-learning算法 以前在阿里云上面搭了一个wordpress博客,最近快毕业了,阿里云真的很贵,所以转到优快云上写博客,主要是为了方便以后查询。 Q-learning算法是强化学习的一种算法,强化学习目前主要应用到游戏中,主要是目的是训练一个知道怎么做才能得到高分的model。强化学习的介绍很多,李宏毅在https://www.youtube.com/watch?v=...
2018-12-02 14:55:15
5871
原创 反向传播(Backpropagation)算法详解
反向传播(back propagation)算法详解反向传播算法是神经网络的基础之一,该算法主要用于根据损失函数来对网络参数进行优化,下面主要根据李宏毅机器学习课程来整理反向传播算法,原版视频在https://www.bilibili.com/video/av10590361/?p=14.首先,我们来看一看优化方程:上面的损失函数是普通的交叉熵损失函数,然后加上了正则化项,为了更新...
2018-11-05 15:17:10
21008
1
原创 目标函数总结
目标函数总结这里总结一下各种论文或者算法所使用的目标函数,希望能够有所启发,当处理相应问题的时候能够设计出好用的目标函数。1:哈希编码上述文字摘抄自"A General Two-Step Approach to Learning-Based Hashing",目的是为了使得哈西编码尽可能保留原始数据之间的相似度,因为哈西编码必要应用于NN(nearest neighbor sear...
2018-09-09 21:21:41
1847
原创 多元高斯分布
多元高斯分布1.协方差矩阵协方差衡量的是变量X与Y之间是否存在线性关系,cov(X,Y)>0说明X与Y的变化趋势是一致的,X增长的时候Y也随着增长。如果X,Y互相独立的话,cov(X,Y)=0.cov(X,X)=D(X),变量X与自身的协方差就是方差,cov(X,Y)=cov(Y,X),cov(X,Y)=E[(X-E(X))(Y-E(Y))].注意,上述变量X,Y都是一维变量...
2018-09-07 22:11:48
12463
转载 tSNE
t-SNE简介 t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,是由 Laurens van der Maaten 和 Geoffrey Hinton在08年提出来。此外,t-SNE 是一种非线性降维算法,非常适用于高维数据降维到2维或者3维,进行可视化。 t-SNE是由S...
2018-03-11 23:18:21
17675
3
原创 MNIST手写体识别--tensorflow
MNIST手写体识别--tensorflow对于tensorflow给出的几个版本的手写体识别的代码进行分析。其中tensorflow的mnist代码在https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/tutorials/mnist1:softmax版本# Copyright 2015 Th
2017-11-26 23:32:41
1885
原创 tensorflow基本语法
tensorflow基本语法内容主要来自tensorflow英文官网1:tensor--张量3 # a rank 0 tensor; a scalar with shape [][1., 2., 3.] # a rank 1 tensor; a vector with shape [3][[1., 2., 3.], [4., 5., 6.]] # a rank 2 te...
2017-11-25 15:47:34
1142
原创 matlab基本语法
1:matlab变量变量名最多namelengthmax长度,在matlab2016a里面显示是63个字符,变量声明没有显式的类型声明,和python一样,比如说a=10.0。Matlab的基本数据结构是矩阵,矩阵中的元素可以是数、字符、逻辑表达式(logic states)、true或false、甚至是Matlab结构体. 基于这个前提,Mathlab能够处理非常多种类的数据。例如一
2017-11-12 00:14:40
1885
原创 将wordpress同步到csdn
将wordpress同步到优快云现在我使用的wordpress是部署在阿里云主机上的,等我毕业的时候就没有学生价了,所以我想把wordpress上写的博客同步到csdn上面,而且百度对csdn的seo做的不好,虽然它收录了我的网站,但是还是不能搜索到文章,而google就可以。我使用的是wordpress插件,具体可以查看http://xuhehuan.com/2027.html,插
2017-10-27 20:35:42
2002
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人