条件概率分布 P ( X ∣ Y ) P(X|Y) P(X∣Y)的参数个数是 K ∏ j = 1 n S j K\prod_{j=1}^nS_j K∏j=1nSj,是指数级的。先验概率 P ( Y ) P(Y) P(Y)的参数个数是 K K K。
容易验证朴素贝叶斯模型里,根据0-1损失函数时的期望风险最小化准则,可以推导出后验概率最大化准则。
可知朴素贝叶斯的先验概率 p ( y ) p(y) p(y)和似然函数 p ( x ∣ y ) p(x|y) p(x∣y)(也就是条件概率)是通过极大似然估计来计算得到的,然后通过后验概率最大来获得预测值p(y|x)。
以公式4.8所示的先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)的计算来说,用 x x x来指代该变量,然后用符号 p p p来指代观测到的 y = c k y=c_k y=ck的频率即 ∑ i = 1 N I ( y i = c k ) N \frac{\sum_{i=1}^NI(y_i=c_k)}{N} N∑i=1NI(yi=ck),则 x x x
的似然函数为 x p N ⋅ ( 1 − x ) ( 1 − p ) N x^{pN}\cdot (1-x)^{(1-p)N} xpN⋅(1−x)(1−p)N,可以很容易计算该似然函数最大时 x x x取值与 p p p相等。同理可用同样的极大似然估计方法来计算似然函数 p ( x ∣ y ) p(x|y) p(x∣y)。
因此,第12章(p211)对朴素贝叶斯锁总结的学习策略有两个,即极大似然估计和极大后验概率估计。
样本不足时,上述极大似然估计得到的先验概率和条件概率时可能为0,显然是不合适的。
贝叶斯估计的处理办法:如果值有s种,则对每个概率的分子添加 λ \lambda λ值,对分母添加 s λ s\lambda sλ值。当 λ \lambda λ为0时就蜕化成了极大后验概率估计,当 λ \lambda λ为1时又叫做拉普拉斯平滑。
上述处理公式的推到,需要了解共轭先验。
最大熵模型的模型表达式,有介绍其推导过程。而逻辑斯蒂回归模型没有推导过程,而直接给出模型表达式。然后根据模型表达式,去优化参数,优化方法可以是梯度下降法和拟牛顿法,对于前者还有个专用的"改进的迭代尺度法IIS"。
最大熵原理认为要选择的概率模型首先必须满足已有的约束条件。而其余不确定的部分应该是等可能的。而等可能不容易操作,但由此而来的熵是一个可优化的数值指标。因此最大熵原理通过熵的最大化来表示等可能性。
对偶问题,即公式6.19的内层是关于条件概率 p ( y ∣ x ) p(y|x) p(y∣x)的函数,外层才是关于 w w w的函数。因此p84底部,求解内层时要对 p ( y ∣ x ) p(y|x) p(y∣x)求导。
求导得0,进而获得了最大熵模型(公式6.22)。
然后带入最大熵模型,求解外层(其表达式是公式6.27)。
对偶问题(公式6.19)的外层(公式6.27)是关于参数 w w w求解极大值的函数,而对数似然函数最大化(公式6.26)也是关于参数 w w w的求解极大值的函数。可以验证二者的公式,在最大熵模型时,是等价的。
其直观地推导方法如下:参考图7.3,假设 ( w , b ) (w,b) (w,b)就是要找的超平面的参数,那么对于两侧的支持向量有 y i ( w ⋅ x i + b ) − 1 = 0 y_i(w\cdot x_i+b)-1=0 yi(w⋅xi+b)−1=0,易知外侧的样本点 ( x i , y i ) (x_i,y_i) (xi,yi)必有 y i ( w ⋅ x i + b ) − 1 > 0 y_i(w\cdot x_i+b)-1>0 yi(w⋅xi+b)−1>0,因此参数满足 y i ( w ⋅ x i + b ) − 1 > = 0 y_i(w\cdot x_i+b)-1>=0 yi(w⋅xi+b)−1>=0。根据平行面的距离公式,易知两个超平面的距离是 2 ∣ ∣ w ∣ ∣ \frac{2}{||w||} ∣∣w∣∣2,因此间隔最大化意味着 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣最小化。
因此支持向量机寻找超平面实际上就是寻找两个让支持向量集合里正例和反例分别是为 + 1 / − 1 +1/-1 +1/−1的两个平行面,并且要使得这两个平行面的间隔尽可能地大。
易知线性可分支持向量机的最优化问题,本质上是凸二次优化问题。
这一节很好地诠释了拉格朗日对偶性(附录 C)便于求解的作用:
原始问题(公式7.13和7.14)引入拉格朗日算子(本质上是新的变量)去掉了约束条件,同时转化成了极大极小问题。该极大极小问题的内层的梯度为0的性质可以用来获得新的约束条件(公式7.20, 只含有拉格朗日算子,去掉了最初的参数 w w w和 b b b),将极大极小问题转换成一个有约束的极大问题(公式7.21),后者又叫做原始问题的对偶问题:
m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i min_\alpha \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^{N}\alpha_i minα21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi
s . t . ∑ i = 1 N α i y i = 0 , α i ≥ 0 , i = 1 , 2 , ⋯   , N s.t. \sum_{i=1}^{N}\alpha_iy_i=0, \alpha_i\ge 0, i=1,2, \cdots, N s.t.i=1∑Nαiyi=0,αi≥0,i=1,2,⋯,N
拉格朗日对偶算法求解SVM的意义
注:p109 w w w的解唯一,但 b b b的解不唯一存在一个区间。
近似线性可分时,给每个样本 ( x i , y i ) (x_i,y_i) (xi,yi)引进一个松弛变量 ξ i ≥ 0 \xi_i\ge 0 ξi≥0,是的实际的函数间隔可以小于1甚至为负;并将松弛变量作为代价引入到原目标函数以对松弛变量进行限制,变成如下的原始问题:
m i n w , b , ξ 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i min_{w,b,\xi}\frac{1}{2}||w||^2+C\sum_{i=1}^{N}\xi_i minw,b,ξ21∣∣w∣∣2+Ci=1∑Nξi
s . t . y i ( w ⋅ x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 s.t. y_i(w\cdot x_i+b)\ge 1-\xi_i, \xi_i\ge 0 s.t.yi(w⋅xi+b)≥1−ξi,ξi≥0
其对偶问题是:
m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i min_\alpha \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^{N}\alpha_i minα21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi
s . t . ∑ i = 1 N α i y i = 0 , 0 ≤ α i ≤ C , i = 1 , 2 , ⋯   , N s.t. \sum_{i=1}^{N}\alpha_iy_i=0, 0\le\alpha_i\le C, i=1,2, \cdots, N s.t.i=1∑Nαiyi=0,0≤αi≤C,i=1,2,⋯,N
结合图7.5分析变量与空间位置关系:
上面7.2节的原始问题,等价于最优化问题:
min w , b , ξ ∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∣ ∣ w ∣ ∣ 2 \min_{w,b,\xi}\sum_{i=1}^{N}[1-y_i(w\cdot x_i+b)]_{+}+\lambda ||w||^2 w,b,ξmini=1∑N[1−yi(w⋅xi+b)]++λ∣∣w∣∣2
其中前项是合页损失函数。
根据图7.6将合页损失函数与0-1损失和感知机的损失函数作对比,说明合页损失函数不仅要分类正确而且确信度足够高时损失才是0,即对学习有更高要求。
AdaBoost如何实施提升方法的两个步骤:
本节讲述了算法及其说明:
f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x)=\sum_{m=1}^{M}\beta_mb(x;\gamma_m) f(x)=∑m=1Mβmb(x;γm),其中 b e t a m b ( x ; γ m ) beta_mb(x;\gamma_m) betamb(x;γm)为基函数, γ m \gamma_m γm为基函数的参数, β m \beta_m βm为基函数的系数。
因为学习的是加法模型(公式8.13),如果能够从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数式,那么可以简化优化的复杂度。
EM算法主要应用于含有隐变量的概率模型的学习,如高斯混合模型和隐马尔可夫模型。
理论分析里E步和M步的工作: EM算法的目标函数是观测数据 Y Y Y关于参数 θ \theta θ的对数自然函数,即 L ( θ ) = log P ( Y ∣ θ ) = log ( ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) ) L(\theta)=\log P(Y|\theta)=\log \left(\sum_Z P(Y|Z,\theta)P(Z|\theta)\right) L(θ)=logP(Y∣θ)=log(∑ZP(Y∣Z,θ)P(Z∣θ))
计算完全数据的对数似然函数 log P ( Y , Z ∣ θ ) \log P(Y,Z|\theta) logP(Y,Z∣θ)关于在给定观测数据 Y Y Y和当前参数 θ ( i ) \theta^{(i)} θ(i)下对隐变量 Z Z Z的条件概率分布 P ( Z ∣ Y , θ ( i ) ) P(Z|Y,\theta^{(i)}) P(Z∣Y,θ(i))的期望,即EM算法里的Q函数:
Q ( θ , θ ( i ) ) = ∑ Z log P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) Q(\theta,\theta^{(i)})=\sum_{Z}\log P(Y,Z|\theta)P(Z|Y,\theta^{(i)}) Q(θ,θ(i))=Z∑logP(Y,Z∣θ)P(Z∣Y,θ(i))
求 θ \theta θ使得最大化Q函数
编程实践里E步和M步的工作
GMM模型里是是[0,1]区间的变量(p164 γ j k ^ \hat{\gamma_{jk}} γjk^);而K均值里是0-1变量;而例9.1里隐变量是观测变量来自于硬币B或C的概率。
GMM模型里计算模型参数见公式9.30-9.32,其模型参数分两部分,即 K K K个高斯模型的参数 ( μ k , σ k 2 ) (\mu_k,\sigma_k^2) (μk,σk2)及其权重 α k \alpha_k αk;而K均值里,参数是各个聚类中心,注意其没有权重的概念;而例9.1里参数是( π , p , q \pi,p,q π,p,q)
其中初始状态概率向量 π \pi π和状态转移矩阵 A A A确定了隐藏的马尔科夫链(即不可观测到的状态序列 I I I),而观测概率矩阵 B B B确定了如何从状态生成观测,与状态序列 I I I综合确定了如何产生观测序列 O O O。
用于标注问题时,状态对应着要求给出的标记,观测序列对应要被标注的数据。
可以用词性标注问题来理解这三类问题。
给定 λ \lambda λ和 O O O,计算 P ( O ∣ λ ) P(O|\lambda) P(O∣λ);词性标注场景里,给定模型参数,计算词序列概率。
学习问题
有 I I I,监督学习:已知 O O O和 I I I,推断 λ \lambda λ,使得 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)最大
无 I I I,属于无监督学习:已知 O O O,推断 λ \lambda λ,使得 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)最大;词性标注场景里,给定词序列,去学习模型参数。
预测问题
已知 λ \lambda λ和 O O O,给出 I = a r g m a x P ( I ∣ O ) I = argmax P(I|O) I=argmaxP(I∣O);词性标注场景里,给定模型和分好的词,来标注词性。
P ( O ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) = ∑ i π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) ⋯ a i T − 1 i T b i T ( o T ) P(O|\lambda)=\sum_{I}P(O|I,\lambda)P(I|\lambda)=\sum_{i}\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)\cdots a_{i_{T-1}i_T}b_{i_T}(o_T) P(O∣λ)=∑IP(O∣I,λ)P(I∣λ)=∑iπi1bi1(o1)ai1i2bi2(o2)⋯aiT−1iTbiT(oT)
计算量很大,是O(TN^T)阶的。
用极大似然估计法,可以通过直接统计得到 λ \lambda λ各参数。
属于无监督学习,期望最大化方法:把观测序列看做观测数据,将状态序列看做隐数据,那么隐马模型是一个含有隐变量的概率模型 P ( O ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) P(O|\lambda)=\sum_IP(O|I,\lambda)P(I|\lambda) P(O∣λ)=∑IP(O∣I,λ)P(I∣λ)
三个概念:
概率无向图模型的联合概率分布 P ( Y ) P(Y) P(Y)可以表示为如下形式:
P ( Y ) = 1 Z ∏ C Ψ C ( Y C ) P(Y)=\frac{1}{Z}\prod_C\Psi_C(Y_C) P(Y)=Z1C∏ΨC(YC)
其中 Z = ∑ Y ∏ C Ψ C ( Y C ) Z=\sum_Y\prod_C\Psi_C(Y_C) Z=∑Y∏CΨC(YC),而 Ψ C ( Y C ) \Psi_C(Y_C) ΨC(YC)称为势函数,通常定义为指数函数 Ψ C ( Y C ) = e x p ( − E ( Y C ) ) \Psi_C(Y_C)=exp\left(-E(Y_C)\right) ΨC(YC)=exp(−E(YC))。
前向后向算法
学习方法是极大似然估计或者正则化的极大似然估计,优化算法是牛顿、拟牛顿法
维特比算法
今天我们来看一看各式各样的编程风格~这些编程风格当然也都是小编在网上看到的,整理一下而已~~(一)首先是华为腾讯的编程风格一:华为公司程序设计风格1. 排版1.1 程序块要采用缩进风格编写, 缩进的空格数为4个。说明: 对于由开发工具自动生成的代码可以有不一致。1.2 相对独立的程序块之间、变量说明之后必须加空行。;1.3 循环、判断等语句中若有较长的表达式或语句, ...
上传jar包到nexus私服发表于10个月前(2014-08-01 14:07) 阅读(3889) | 评论(2) 15人收藏此文章, 我要收藏赞0大约十一点零八发,秒杀云主机赢P8手机摘要 通过网页和maven两种方式,上传本地的jar到nexus私服,以及引用jar时,自动引用依赖maven nexus目录[-]1通过网...
流的分类与使用分类标准分类内容数据单位字节流(8 bit)、字符流(16 bit)数据流向输入流、输出流流的角色节点流、处理流字符流,即流的数据单位是char类型,java中char类型一般为2个字节。流的体系结构抽象基类节点流(文件流)缓冲流InputStreamFileInputStreamBufferedInputStreamOutputStreamFileOutputStreamBufferedOutputSt
标题Abstract:我们提出了卷积块注意模块,一个简单而有效的前馈卷积神经网络的注意力模型。给定一个中间特征映射,我们的模块沿着两个独立的维度(通道和空间)顺序推断注意映射,然后将注意映射乘以输入特征映射以进行自适应特征细化。因为CBAM是轻量级的通用模块,它可以无缝的集成到任何CNN架构中,开销可以忽略不计,并且可以与基础CNN一起进行端到端的训练。我们通过在ImageNet-1K数据集,MSCOCO检测数据集和VOC 2007检测数据集上的大量实验来验证我们的CBAM。我们的实验表明,各种模型在分
+(BOOL)checkCameraIsUse{ NSString *type =AVMediaTypeVideo; AVAuthorizationStatus authStatus = [AVCaptureDeviceauthorizationStatusForMediaType:type]; if ( authS
电脑的内存是有限的,这些网友们都知道,所以在买电脑时总是会想要购买好一点的,但是电脑使用时间越久,系统内存会越少,那么要怎么才能使得在win2003系统中的内存多空些出来呢?现在小编就教大家怎么实现释放系统内存的办法吧!windows 2003已经自带了一个名为Empty.exe的小程序,它可以用来释放某些应用程序在占用大量内存时不能及时释放的那部分资源,与那些第三方软件内存管理软件不同的是,Em...
原以为需要很复杂的Coding ,其实在VS2013,只需要进行如下设置即可实现。.NET 2003 父窗口中添加主菜单MainMenu,在子菜单( MenuItem )中,设置属性 MdiList 为true,可以在打开每一个子窗体时,将子窗体名称显示到此菜单中。.NET 2005/2008 父窗口中添加主菜单MenuStrip,设置主菜单的 MidiWindowListItem属性...
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T
以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发现确实代码简洁了不少。这两种方式我们也可以去实践的过程去慢慢运用。先说一下委托:模拟一下场景:小明最近学习情绪高涨,以前买的书已经满足不了欲望,打算去买本(一个程序员的自我修养)。可是呢以前总...
今天在leetcode上做题时,又遇到了与数据溢出相关的内容,在此记录下吧。 在头文件“limits.h”中有各种基本数据类型的最大最小值。/* Minimum and maximum values a `signed int' can hold. */# define INT_MIN (-INT_MAX - 1)# define INT_MAX 2147483647/* Max
当虚拟遇到一个new指令时:首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用所代表的类是否已经加载和初始化,如果没有,需要先执行类的加载过程。加载完成后,为对象分配内存,分配完成后初始化为0值,执行new指令后会紧着执行<init>方法,把对象按着程序员的意愿初始化。 new指令------->...
员工打卡系统 语言:C# 1. 分析: 图1(主页面) 根据图1可得信息 1....