自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 最长同值路径

给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。 5 / \ 4 5 / \ \ 1 1 5输出为2 1 / \ 4 5 / \ \ 4 4 5输出为3题目分析:根据题目我们可以清晰的分析出每个节点有三种情况例如

2020-09-20 13:13:02 317 1

原创 二叉搜索树的范围和

给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。操作很简单,深度优先遍历两步操作:第一,判断当前节点是否为空,如果不为空执行下一步,为空不执行第二,判断当前的节点的值是否符合题意在L和R之间,如果符合将该值加入到总和中。,并执行该点的左右孩子第三,继续往下判断,根据二叉搜索树的特性,如果该值小于L,搜索该节点的右孩子,如果大于R搜索左孩子。 int count=0; public int rangeSumBST (Tr

2020-09-13 15:03:21 195

原创 青蛙跳台阶

青蛙跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。递归:设想子问题只有两种情况:1、上次跳1级台阶到n,我只需要计算n-1的跳法2、上次跳2级台阶到n,我只需要计算n-2有多少种跳法以此类推递归的出口当n为1时返回1当n为2时返回2 public int skip (int n) { if (n==1) { return 1; }

2020-09-13 11:19:01 185

原创 快排的复习

快排的主要思想还是在递归上面。第一步先来了解一下快排的子公式是什么:1、现在有一个数组,快排主要做的就是对数组进行一次调节数据顺序,在数组中找最后一个数(或者随机一个数)n,将数组内数据的顺序变成n的左边全部是比n小的数,n的右面全部是比n大的数。2、具体操作:设最后一个数为R,第一个数为L,当L开始与进行对比,那么就会有3种情况:该数比R大,比R小,等于R。当L比R大时,我们知道此时的L应该放在最右面,所以让最右面的数与L进行交换,此时的L指向的是被交换过来的数,那么应该再次比较。当L比R小时

2020-09-12 11:37:54 89

原创 堆排的学习

堆排没有用到递归,一般堆排是两个步骤,1、建立堆2、不断的调整堆,进行排序首先,我们学习堆排就必须了解什么是堆,堆其实是一种比较特殊的数据结构,分为大根堆和小根堆,堆有两个性质1、它是一个完全二叉树,每个节点都比它的子树所有节点大(大根堆)2、由于他是一个完全二叉树,那么它的每个位置都与数组的每个下标一一对应由于这两种性质,我们就可将数组看做一个完全二叉树,第一步(大根堆),将这个完全二叉树转换成堆,从第一个节点开始,与他的父节点比较大小,如果比他的父节点要大,那么他就和父节点进行交换,然后继

2020-09-12 11:33:07 58

原创 使用定长数组实现队列

使用定长数组实现队列方法很简单:我们需要:4、1、一个数组2、一个能表示数组中还有多少容量的变量3、一个能表示队首的变量4、一个能表示队尾的变量`入队先判断队列还有多少容量,如果容量为0表示队满,则不能在入队。如果容量不为0.则表示队列还有容量。然后再判断入队后,队尾是不是数组的最后一个节点,如果是,入队后队尾变为0,如果不是队尾+1;出队表示同样的道理:如果容量为数组的大小,则表示队列中暂无数据,不能出队,如果容量小于数组则表示,队列存在数据。可以出队。出队时判断队首是否是数组的最后一

2020-09-06 19:27:56 613

原创 有序链表的合并

两个有序链表进行合并,两个链表进行一一比较,小的放入新的链表中,最后那个链表还剩数据,就全部导入进去。package train;public class 有序拼接链表 { public class Node { public Node next; public int value; public Node (int data){ this.value = data; } } publi

2020-09-06 18:56:21 142

原创 反转链表(递归/非递归)

反转链表一般有两种方式1、将链表中的每个节点取出,使用头插法建立一个新的链表2、采用递归的方式进行反转。头插法反转链表package train;public class 反转链表 { public class Node { public Node next; public int data; public Node (int value) { this.data = value; }

2020-09-06 17:36:09 250

原创 括号的匹配

非常简单的一道算法题,使用栈来进行辅助,如果是左边的括号,压人栈中,如果是右面的就进行出栈,并判断是否与当前括号匹配,不匹配直接结束方法,如果全部判定完毕栈空则匹配成功,如果栈不空则有多余的括号import java.util.Stack;public class 有效括号 { public static boolean isValid(String s) { char[] sArray = s.toCharArray(); Stack <Char

2020-09-06 15:45:26 91

原创 使用栈实现队列

栈的特性是先进后出,队列的特性是先进先出,这就照成这两种数据结构不同的性质1、将一个栈中的元素转移到另一个栈中,数据的顺序会发生变化2、将一个队列的数据转移到另一个队列中,数据的顺序不会发生变化因此使用栈实现队列,使用两个栈,一个栈用来接收数据,并将接收的数据转移到另一个栈用来抛出数据。这样就完成了先进先出的特点...

2020-09-06 15:20:31 87

原创 使用队列实现栈

使用队列实现栈使用队列实现一个栈的主要思想就是采用两个队列,一个为存放数据,一个为辅助,为什么会是这个样子的呢?因为栈是先进后出,而队列是先进先出假设现在有两个队列:data和help入栈时:将数据压入data队列出栈时:将data的数据除最后一个外,全部压人help中,这么做只是为了把最后一个数据拿出来根据队列的性质此时的help中的数据只是比原来的data少最后一个数据其他的都没有变化此时data队列只剩一个数据,也就是最后压入的数据,将该数据出队,最后将help与data进行交换,p

2020-09-06 15:08:10 475

原创 对于哈希的一些学习第一版

标题哈希的特性1、 输入域无穷大2、 输出域有穷尽3、 当你输入参数固定,返回值固定4、 输入不一样,输出可能会出现相同(哈希碰撞)5、 输入很多不同值,将会在s域上均匀的布置。普通哈希表的扩容:如:将容量为17的哈希表扩容到100,主要是将原哈希表的数据重新进行哈希计算,获得哈希值后存到扩容后的哈希表哈希表的应用:大文件中的重复数据怎么处理:1、准备多个机器2、读入数据,并计算对应的hash表3、将相同的hash值放在同一个机器中4、在每个机器进行去重操作哈希表的缺点:1、占

2020-09-05 15:51:07 143

原创 句法分析详解

首先在了解句法分析,我们先来思考一个问题:人是怎样理解一个句子的?1、从语法的角度(主谓宾)2、从感觉的角度(语言模型)所以句法分析理解起来很简单,就是从语法的角度分析每个词之间的关系,在一句话中那个词是主语,那个词是谓语,等等而且用树的形式来表示。假设现在有一句话:北京是属于中国的那么用句法分析后就是下图的样子:我们先不管怎么构成这样的一个句法树,我们先看一下这棵树的特点:叶子...

2020-03-07 14:43:13 10153

原创 实体消歧、实体统一和指代消歧

实体消歧实体消歧主要是指:一个词可能含有多个意思,不同的上下文表达的含义可能也不一样例如:今天苹果发布了新手机对于“苹果”我们怎么判断?对于实体消歧来说我们得有一个实体库,库中包含每个实体,以及它所包含的意思,例如:“苹果”在实体库中有两个含义:苹果:水果的一种苹果:美国的一家高科技公司那么对于:今天苹果发布了新手机。这样一句话我们提取“苹果”前后大约30个词左右和并利用两个含义形...

2020-03-07 09:58:39 5089 2

原创 实体关系的抽取详解

1

2020-03-06 16:44:22 9869 3

原创 命名实体识别(特征工程)

命名实体识别也叫实体抽取是指从文本信息中抽取实体,这样的实体包括:人,地名等等。对于特定领域还要抽取特定的实体,比如医疗领域:药物,蛋白质,医院名称等等实体抽取在自然语言领域有着非常大的作用,是很多实现任务目标的基础,在知识图谱领域,实体抽取是首要任务,其次才是关系抽取,指代消解,实体统一和实体消解等任务的实现。举个例子:假设我们在做智能对话系统:\quad\quad你好,请问北京到济南怎么走...

2020-03-05 20:14:53 2224

原创 朴素贝叶斯(分类)推导

传统的分类器朴素贝叶斯很多人都知道怎么用,但是有没有想过它的原理,它是怎么样被一步一步的推导出来的。今天咱们就推导一下朴素贝叶斯模型。现在有数据集D={(x1,y1),(x2,y2),...,(xn,yn)}D=\{(x^1,y^1),(x^2,y^2),...,(x^n,y^n)\}D={(x1,y1),(x2,y2),...,(xn,yn)}xxx表示的是一个文档的所有单词yyy表示的是...

2020-03-04 17:02:19 304

原创 逻辑回归(推导)

逻辑回归其实就是一个判别模型,什么意思呢?也就是给定一组数据我们将其判别它属于某一类的概率,或者判别好坏,也就是p(y∣x)p(y|x)p(y∣x)对于这样的模型我们首先想到的是p(y∣x)=wTx+bp(y|x)=w^Tx+bp(y∣x)=wTx+b但是我们可以清楚地看到公式并不成立:0≤p(y∣x)≤10\leq p(y|x)\leq10≤p(y∣x)≤1还有∑yp(y∣x)=1\sum_yp...

2020-03-04 12:18:27 184

原创 正则的详细解释以及灵活运用(包含Lasso)

正则的介绍正则一开始是用来限制参数的,例如在逻辑回归中,目标函数:p(y=1∣x;w)=11+e−wTx+bp(y=1|x;w)=\dfrac{1}{1+e^-{w^Tx+b}}p(y=1∣x;w)=1+e−wTx+b1​越大越好参数,p(y=0∣x;w)=1−11+e−wTx+bp(y=0|x;w)=1-\dfrac{1}{1+e^-{w^Tx+b}}p(y=0∣x;w)=1−1+e−wTx+...

2020-03-02 18:53:37 988

原创 凸函数

今天主要来学习的是凸函数:包括是什么是凸函数,凸函数的判断,对于非凸函数的处理。凸函数先来看看什么是凸函数:如图左边的是一个凸函数,右边的不是凸函数,从图片我们也可以清楚的看到凸函数的一个显著的特点,也就是对于凸函数来说只有一个最低点,也就是极值点就是最值点,而非凸函数有多个极值点。因此在人工智能领域,如果遇到一个问题,我们的目标函数是一个凸函数,也就是说我们可以找到一个全局的最优解,如果...

2020-03-01 12:54:26 10228 1

原创 梯度下降的收敛分析

梯度下降法的收敛分析:

2020-02-29 16:41:39 1252

原创 SVM详细推导(包含dual-form的推导过程)

线性可分SVM关于二分类问题的算法,也就是将一组数据线性的分成两类,什么是线性的分成两类呢?就是像图(1)这样的数据用一条线可以进行一分为二。像图(2)这种数据使用一条线是分不开的,那么这种数据就成为线性不可分的数据,对于这种数据SVM就没有办法了吗?当然有办法了不然也不会在早期这么流行的。SVMmargin的概念假设现在有这样一组数据,D={(x1,y1),(x2,y2),(x3,...

2020-02-28 12:26:02 2064

原创 CRF(条件随机场)详解(内含推导)

和之前讲的HMM模型一样,CRF是一个时序模型,我们先来看一下这个模型的结构吧!CRF模型结构看上去和HMM比较相似,但还是有一些不同之处,HMM中我们使用了有向图,在CRF中使用的是无向图,区别是什么呢?CRF与HMM算法的区别我们知道HMM中的两大规则1、齐次一阶的马尔科夫假设 2、观测独立假设。我们来分析一下这两个规则合不合理哈:观测独立性假设:主要是指观测值之间假设是独立的,...

2020-02-26 19:10:02 3257

原创 HMM算法详解(内含推导)

时序模型大致上分为(ML)版本和(DL)版本ML:HMM和GRFDL:RNN/LSTM今天就讲解一下隐马尔科夫模型HMM算法HMM结构由上图可知观测值(x)和隐含状态(z)在这里举个例子说明xxx和zzz的关系例子:假设现在有两枚硬币{A,B}分别有正反两面,这时有两个人:“小明”和”小华”现在将两个人隔开,“小明负责扔硬币”,“小华负责观察硬币的正反面”。但是小华是看不到小明是扔的...

2020-02-25 12:43:32 8160 4

原创 EM算法详解(内含详细推导)

前言对于隐变量模型,我们不仅有可观测值xxx,还有隐含状态:zzz,而我们的目的就是最大化P(x,z∣θ)P(x,z|\theta)P(x,z∣θ),θ\thetaθ表示模型的参数。如果zzz是已知的那么我们可以采用传统MLE的计算方式 确认目标函数,采用梯度下降法优化参数:argmaxlog⁡P(x,z∣θ)=log⁡P(z∣θ)+log⁡P(x∣z,θ)argmax\quad \log P...

2020-02-23 13:49:58 1040

原创 Word2vec详细解释(内含推导)

文章目录词向量one-hotword2vecword2vec详解Skip-gram目标函数的转化负采样求参数梯度评估词向量one-hot在Word2vec出现之前,在nlp中最常用的是one-hot(独热)编码,先来解释一下什么是独热的编码:假设我们数据集为,“今天天气特别晴朗”,“六月的天气是多变的”,对应词库{“今天”,“天气”,“特别”,“晴朗’,“六月”,“是”,“多变”}。那么每...

2020-02-22 21:29:59 1504

原创 神经网络详细解释(包含BP算法的推导)

神经网络是在人工智能界是比较流行的一种模型。发展到今日已经有很多变种,想cnn,rnn,LSTM,对抗神经网络,等等很多网络结构,网上也有很多比较详细的解释,最近系统的学习了一下神经网络,包括网络结构细节,激活函数,正向传播,反向传播的推导,梯度的计算,过拟合的解决方式等等,想要系统的学习神经网络的同学看过来吧。嘿嘿!单层神经网络结构先从最简单的开始理解神经网络,如图(1),这是一个最简单的神...

2020-02-21 20:23:02 1350 1

原创 一文让你由浅入深的理解Transform模型

简单解释Transform是在神经网络之后又发展的一个比较流行的深度模型,今天就给大家解释一下这个模型的原理。首先先抛出一个问题?神经网络有哪些缺点,或者是LSTM有什么不足之处以,至于让我们又发展了Transform这个深度模型?在这里我自己总结出了几点:1、 难解释性,神经网络的一个通病,做出来的好坏都比较难解释,2、 梯度消失和梯度爆炸的问题。3、 LSTM只能串行计算,不能并行,因...

2020-02-19 12:58:33 13758 4

原创 siamese模型码详解(每一句代码都有解释!!!)

最近在研究Siamese模型来进行文本相似度的计算,今天就做一期代码详解,每一行的代码都会做出相应的解释,对于初学LSTM的人来说读懂代码是非常有必要的,Siamese模型就是将两个句子(训练数据)通过embeding层(word2vec)分别输入到LSTM进行运算,并共享参数,利用损失函数不断的进行正向传播和反向传播来优化参数,最终达到成为一个比较优秀的模型原理就不在细说了,这里主要是把代码解...

2020-02-18 10:38:14 3309 4

原创 一文让你由浅入深了解bert的来龙去脉和原理以及bert代码实战(文本相似度为例)

目录预训练word2vecelmo和bert早期的语言模型n-gramskip-grim 和CBOWword2vec的局限性elmo的局限性Bert原理Masked LMtransformNext Sentence PredictionBert的输入mask的规则【CLS】和【SEP】Bert的使用(文本相似度为例)下载代码输入数据地址传递训练集,验证集和测试集...

2020-02-14 11:32:05 1990 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除