crf

机器学习“判定模型”和“生成模型”有什么区别?

故事扮演 提交于 2020-02-29 09:45:21
维基百科上Generative条目里面有个经典的案例: 假设有四个samples: 生成式模型的世界是这个样子: 而判定式模型的世界是这个样子: 也就是说:生成模型是联合概率分布,判别模型是条件概率分布。 简单地说,对于监督学习,预测时,一般都是在求 生成模型: 从数据中学习联合概率分布 ,然后利用贝叶斯公式求: ; 这类典型的模型包括:朴素贝叶斯、LDA、HMM 判别模型:直接学习 , 它直观输入什么特征X,就直接预测出最可能的 ; 典型的模型包括:LR, SVM,CRF,Boosting,Decision tree.... 其实机器学习的任务是从属性X预测标记Y,即求概率P(Y|X); 对于判别式模型来说求得P(Y|X),对未见示例X,根据P(Y|X)可以求得标记Y,即可以直接判别出来,如上图的左边所示,实际是就是直接得到了判别边界,所以传统的、耳熟能详的机器学习算法如线性回归模型、支持向量机SVM等都是判别式模型,这些模型的特点都是输入属性X可以直接得到Y(对于二分类任务来说,实际得到一个score,当score大于threshold时则为正类,否则为反类)~(根本原因个人认为是对于某示例X_1,对正例和反例的标记的条件概率之和等于1,即P(Y_1|X_1)+P(Y_2|X_1)=1) 而生成式模型求得P(Y,X),对于未见示例X,你要求出X与不同标记之间的联合概率分布

CRF

只谈情不闲聊 提交于 2020-02-16 14:31:04
条件随机场 条件随机场是无向图。条件随机场是给定一组输入变量条件下另一组输出随机变量的条件概率分布模型(马尔科夫随机场)。 CRF的blog https://blog.csdn.net/dcx_abc/article/details/78319246 简单理解:举了序列标注的例子。有不同的特征函数来计算前后两个字符标注的特征值,最后将所有的特征函数对一个句子里所有的前后的字符标注的特征值相加作为score(衡量标准)。最后使用对所有的score做softmax。(通过这个softmax得到的值就是P(Y|X))。值最大的标注序列的score就是所需要的标注。 https://blog.csdn.net/weixin_41911765/article/details/82465697 很棒的blog,解释了如何推导到上篇blog提到的特征函数。并且还有之后如何通过前向和后向的方式来计算出概率。并且介绍了维特比算法如何计算出最后的最优路径。   维特比计算简单地理解就是通过不断的迭代寻找最优路径。状态0到状态1的时候,每条路径都计算,并求出最大值。并找出该最大值情况下该状态变化的起点和终点。一路迭代到整个序列的终点。最后从终点根据不同状态的起点终点反推出一条最优路径。 通过前向和后向的算法的定义来计算条件随机场的概率。 #TODO 迭代优化法,牛顿法是真的看不懂。 学习方法:

CRF总结

雨燕双飞 提交于 2020-02-02 05:15:45
文章目录 计算下Z(矩阵) 1.1 一般参数形式 1.2 简化形式 Z 1.3 矩阵形式 1.3.2 Z 2.维特比算法 3.前向算法 4.后向算法 5.使用前向后向的概率计算 6.期望计算 7.参数估计(学习) 7.1 梯度上升 参考文献 CRF 是无向图模型 code 它是一个判别式模型 建模了每个状态和整个观测序列的依赖 https://www.unclewang.info/learn/machine-learning/756/ https://blog.csdn.net/u012421852/article/details/80287567 计算下Z(矩阵) import numpy as np y0 = 1 #start y4 = 1 #stop 从start到stop的所有路径的规范化因子Z,其实就是上面所有路径的非规范化概率之和 class CCRF ( object ) : """ 条件随机场的矩阵表示实现 """ def __init__ ( self , M ) : self . M = M #条件随机场的矩阵形式的存储体 self . Z = None #规范化因子 self . MP = [ ] #矩阵乘积 self . work ( ) return def work ( self ) : print ( 'work......' ) self . MP

条件随机场CRF(二)

允我心安 提交于 2020-01-20 10:02:12
CRF主要涉及到三个问题,标记序列概率的计算、参数的学习、序列的预测(解码),本片博文主要介绍第一个问题:标记序列概率的计算–前向后向算法,在 博文 中提到,在BI-LSTM-CRF模型框架的CRF层,当计算序列所有路径的总得分时就用到了前向后向算法的思想。 CRF前向后向概率计算 首先定义 α i ( y i ∣ x ) \alpha_i(y_i|x) α i ​ ( y i ​ ∣ x ) 表示序列位置 i i i 的标记是 y i y_i y i ​ 时,在位置 i i i 之前的部分标记序列的非规范化概率。之所以是非规范化概率是因为我们不想加入一个不影响结果计算的规范化因子 Z ( x ) Z(x) Z ( x ) 在分母里面。 在 条件随机场CRF(一) 中,我们定义了下式: M i ( y i − 1 , y i ∣ x ) = e x p ( ∑ k = 1 K w k f k ( y i − 1 , y i , x , i ) ) M_i(y_{i-1},y_i |x) = exp(\sum\limits_{k=1}^Kw_kf_k(y_{i-1},y_i, x,i)) M i ​ ( y i − 1 ​ , y i ​ ∣ x ) = e x p ( k = 1 ∑ K ​ w k ​ f k ​ ( y i − 1 ​ , y i ​ , x , i ) )

ffmpeg与H264编码指南

喜夏-厌秋 提交于 2020-01-19 04:38:22
注:本文属于转载译文,原文地址:http://blog.csdn.net/vblittleboy/article/details/8982857。 英文地址: https://trac.ffmpeg.org/wiki/Encode/H.264 。内容有一定出入,但是可以借鉴学习。 x264是一个 H.264/MPEG4 AVC 编码器,本指南将指导新手如何创建高质量的H.264视频。 对于普通用户通常有两种码率控制模式:crf(Constant Rate Factor)和Two pass ABR。码率控制是一种决定为每一个视频帧分配多少比特数的方法,它将决定文件的大小和质量的分配。 如果你在编译和安装libx264 方面需要帮助,请查看ffmpeg和x264编译指南: http://ffmpeg.org/trac/ffmpeg/wiki/CompilationGuide crf(Constant Rate Factor) : 该方法在输出文件的大小不太重要的时候,可以使整个文件达到特定的视频质量。该编码模式在单遍编码模式下提供了最大的压缩效率,每一帧可以按照要求的视频质量去获取它需要的比特数。不好的一面是,你不能获取一个特定大小的视频文件,或者说将输出位率控制在特定的大小上。 1 选择一个CRF值 量化比例的范围为0~51,其中0为无损模式,23为缺省值,51可能是最差的

Index out of bounds: Fitting SSVM using Pystruct

故事扮演 提交于 2020-01-16 04:59:06
问题 I am trying to fit an SSVM as shown on the examples page: https://github.com/pystruct/pystruct/blob/master/examples/multi_class_svm.py The code runs fine with the given example, but not with my own data. The input dataset is a csv file with the following columns and rows for example: user_name facility start_date day_of_week monthweek month TestUserA FacilityA 2/1/2015 1 1 2 ... ... ... ... ... ... out of the above columns, the only predictors I use are 'facility' and day_of_week' and I

【机器学习】HMM与CRF

对着背影说爱祢 提交于 2020-01-14 00:45:01
HMM与CRF 隐马尔可夫 原理 代码实现 条件随机场 原理 条件随机场是从概率无向图(马尔可夫随机场)扩展得到的,概率无向图的联合概率分布$P(Y)$可由概率图中所有的最大团$C$上的势函数$\Psi_{C}(Y_{C})$的乘积形式表示,$Y_{C}$是$C$对应的随机变量,即 $$P(Y)=\frac{1}{Z} \prod_{C} \Psi_{C}(Y_{C})$$ 其中$Z$是规范化因子,保证$P(Y)$是一个概率分布。函数$\Psi_{C}(Y_{C})$要保证是严格正的,且通常为定义为指数函数。 $$\Psi_{C}(Y_{C})=exp\left( -E(Y_{C}) \right)$$ 条件随机场是给定随机变量$X$条件下,随机变量$Y$的马尔可夫随机场,这里介绍的是定义在线性链上的条件随机场,在标注问题中,$X$表示输入的观测序列,$Y$表示对应的输出标记序列或状态序列,如下图。 条件随机场的条件概率模型如下: $$P(y|x)=\frac{1}{Z(x)}exp \left( \sum_{i,k} \lambda_{k}t_{k}(y_{i-1},y_{i},x,i) + \sum_{i,l}\mu_{l}s_{l}(y_{i},x,i) \right)$$ $t_{k}$是定义在边上的特征函数, 称为转移特征特征,依赖于当前位置和前一个位置,$s_{l}

自然语言处理之序列标注问题

≯℡__Kan透↙ 提交于 2020-01-13 20:38:42
  序列标注问题是自然语言中最常见的问题,在深度学习火起来之前,常见的序列标注问题的解决方案都是借助于HMM模型,最大熵模型,CRF模型。尤其是CRF,是解决序列标注问题的主流方法。随着深度学习的发展,RNN在序列标注问题中取得了巨大的成果。而且深度学习中的end-to-end,也让序列标注问题变得更简单了。   序列标注问题包括自然语言处理中的分词,词性标注,命名实体识别,关键词抽取,词义角色标注等等。我们只要在做序列标注时给定特定的标签集合,就可以进行序列标注。   序列标注问题是NLP中最常见的问题,因为绝大多数NLP问题都可以转化为序列标注问题,虽然很多NLP任务看上去大不相同,但是如果转化为序列标注问题后其实面临的都是同一个问题。所谓“序列标注”,就是说对于一个一维线性输入序列:        给线性序列中的每个元素打上标签集合中的某个标签:        所以,其本质上是对线性序列中每个元素根据上下文内容进行分类的问题。一般情况下,对于NLP任务来说,线性序列就是输入的文本,往往可以把一个汉字看做线性序列的一个元素,而不同任务其标签集合代表的含义可能不太相同,但是相同的问题都是:如何根据汉字的上下文给汉字打上一个合适的标签(无论是分词,还是词性标注,或者是命名实体识别,道理都是想通的)。 序列标注问题之中文分词   以中文分词任务来说明序列标注的过程。假设现在输入句子

地理文本处理技术在高德的演进(下)

笑着哭i 提交于 2020-01-09 06:40:25
​在 【上篇】 里,我们介绍了地理文本处理技术在高德的整体演进,选取了几个通用query分析的点进行了介绍。下篇中,我们会选取几个地图搜索文本处理中特有的文本分析技术做出分析,包括城市分析,wherewhat分析,路径规划,并对未来做一下展望。 四、query分析技术演进 4.1 城市分析 在高德地图的检索场景下,从基础的地图数据索引、到在线召回、最终产品展示,均以市级别行政单位为基础粒度。一次完整的检索需求除了用户输入的query外,还会包含用户的图面城市以及用户位置城市两个城市信息。 通常,大多数的搜索意图都是在图面或者用户位置城市下,但是仍存在部分检索意图需要在其他城市中进行,准确的识别出用户请求的目标城市,是满足用户需求的第一步,也是极其重要的一步。 在query分析策略流程中,部分策略会在城市分析的多个结果下并发执行,所以在架构上,城市分析的结果需要做到少而精。同时用户位置城市,图面城市,异地城市三个城市的信息存在明显差异性,不论是先验输出置信度,还是用后验特征做选择,都存在特征不可比的问题。 在后验意图决策中,多个城市都有相关结果时,单一特征存在说服力不足的问题,如何结合先验置信度和后验的POI特征等多维度进行刻画,都是我们要考虑的问题。 原始的城市分析模块已经采用先验城市分析和后验城市选择的总体流程 但是原始的策略比较简陋,存在以下问题: 问题1

Installing python-crfsuite fails with [WinError 2] The system cannot find the file specified

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-03 06:47:10
问题 I tried to install $ pip install python-crfsuite Collecting python-crfsuite Using cached python-crfsuite-0.8.4.tar.gz Installing collected packages: python-crfsuite Running setup.py install for python-crfsuite Complete output from command c:\users\vlats\appdata\local\programs \python \python35-32\python.exe -c "import setuptools, tokenize;file='C:\Users\Vlats\AppData\Local\Temp\pip-build-k0g40k7c\python-crfsuite\setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n