贝叶斯网络
定义:
贝叶斯网络是一个有向无环图
(
D
i
r
e
c
t
e
d
A
c
y
c
l
i
c
G
r
a
p
h
,
D
A
G
)
(Directed Acyclic Graph,DAG)
(DirectedAcyclicGraph,DAG)模型,有代表变量节点及连接这些节点的有向边构成。节点代表随机变量,节点间的有向边代表了节点间的相互关系(有父节点指向其子节点),用条件概率表达变量间的依赖关系,没有父节点的用先验概率进行信息表达。
令
G
G
G为定义在
{
X
1
,
X
2
,
.
.
.
,
X
n
}
\{X_1,X_2,...,X_n\}
{X1,X2,...,Xn}上的一个贝叶斯网络,其联合概率分布可以表示为各个节点的条件概率的乘积:
P
(
X
)
=
∏
i
=
1
n
p
i
(
X
i
∣
P
a
r
G
(
X
i
)
)
P(X) = \prod \limits_{i=1}^{n}p_i(X_i|Par_G(X_i))
P(X)=i=1∏npi(Xi∣ParG(Xi))
其中,
P
a
r
G
(
X
i
)
Par_G(X_i)
ParG(Xi)为节点
X
i
X_i
Xi的父节点,
p
i
(
X
i
∣
P
a
r
G
(
X
i
)
p_i(X_i|Par_G(X_i)
pi(Xi∣ParG(Xi)为节点条件概率。
结论:
贝叶斯网络的联合概率分布可以表示为:局部 条件概率 连乘积的形式,(对比马尔可夫模型和因子模型,贝叶斯网络条件概率的值因为是概率,而不是势函数的大小值,所以不用归一化)。
如上图,D代表试卷难度,I代表智商,G代表考试成绩,S代表高考成绩,L代表是否给该生推荐信。
所以上面这个例子的联合概率分布就可以表示为:
P
(
X
)
=
P
(
D
,
I
,
G
,
S
,
L
)
=
P
(
D
)
⋅
P
(
I
)
⋅
P
(
G
∣
I
,
D
)
⋅
P
(
S
∣
I
)
⋅
P
(
L
∣
G
)
P(X)=P(D,I,G,S,L) = P(D)·P(I)·P(G|I,D)·P(S|I)·P(L|G)
P(X)=P(D,I,G,S,L)=P(D)⋅P(I)⋅P(G∣I,D)⋅P(S∣I)⋅P(L∣G)
所以联合概率分布的其中的一项概率可以计算表示为:
P
(
d
1
,
i
0
,
g
1
,
s
1
,
l
1
)
=
P
(
d
1
)
P
(
i
0
)
P
(
g
1
∣
I
0
,
d
1
)
P
(
s
1
∣
i
0
)
P
(
l
0
∣
g
1
)
=
0.4
×
0.7
×
0.05
×
0.1
=
0.00007
P(d^1,i^0,g^1,s^1,l^1)=P(d^1)P(i^0)P(g^1|I^0,d^1)P(s^1|i^0)P(l^0|g^1)=0.4×0.7×0.05×0.1=0.00007
P(d1,i0,g1,s1,l1)=P(d1)P(i0)P(g1∣I0,d1)P(s1∣i0)P(l0∣g1)=0.4×0.7×0.05×0.1=0.00007
而所有的联合概率分布的项目和为1,就是概率和为1。
马尔可夫随机场:
定义:
马尔可夫随机场(Markov Random Fields,MRF)的联合概率分布可以表示为以下分解形式
P
(
x
1
,
x
2
,
.
.
.
,
x
n
)
=
1
Z
Φ
∏
i
=
1
k
ϕ
i
(
D
i
)
P(x_1,x_2,...,x_n)=\frac{1}{Z_\Phi}\prod \limits_{i=1}^{k}\phi_i(D_i)
P(x1,x2,...,xn)=ZΦ1i=1∏kϕi(Di)
其中,
Z
Φ
Z_\Phi
ZΦ为联合概率分布的归一化因子,通常称之为配分函数(partition function),
D
i
D_i
Di是随机变量的集合,因子
ϕ
i
(
D
i
)
\phi_i(D_i)
ϕi(Di)是从随机变量集合到实数域的一个映射,称之为势函数或者因子。
Φ
=
(
ϕ
1
(
D
1
)
,
ϕ
2
(
D
2
)
,
.
.
.
ϕ
k
(
D
k
)
)
\Phi = (\phi_1(D_1),\phi_2(D_2),...\phi_k(D_k))
Φ=(ϕ1(D1),ϕ2(D2),...ϕk(Dk))
Z
Φ
=
∑
∏
i
=
1
k
ϕ
i
(
D
i
)
Z_\Phi=\sum \limits_{} ^{}\prod \limits_{i=1}^{k}\phi_i(D_i)
ZΦ=∑i=1∏kϕi(Di)
联合概率分布可以表示为:局部势函数的连乘积的形式,并归一,局部势函数可以分为:点势函数与边势函数
所以
P
(
X
)
=
P
(
A
,
B
,
C
,
D
)
=
1
Z
Φ
∏
i
=
1
k
ϕ
i
(
D
i
)
=
1
Z
Φ
ϕ
1
(
A
,
B
)
ϕ
1
(
B
,
C
)
ϕ
1
(
C
,
D
)
ϕ
1
(
D
,
A
)
P(X)=P(A,B,C,D) =\frac{1}{Z_\Phi}\prod \limits_{i=1}^{k}\phi_i(D_i)=\frac{1}{Z_\Phi}\phi_1(A,B)\phi_1(B,C)\phi_1(C,D)\phi_1(D,A)
P(X)=P(A,B,C,D)=ZΦ1i=1∏kϕi(Di)=ZΦ1ϕ1(A,B)ϕ1(B,C)ϕ1(C,D)ϕ1(D,A)
其中
ϕ
1
(
A
,
B
)
\phi_1(A,B)
ϕ1(A,B)表示A,B的边对应的 边势函数,所以
ϕ
1
(
A
,
B
)
\phi_1(A,B)
ϕ1(A,B),
ϕ
2
(
B
,
C
)
\phi_2(B,C)
ϕ2(B,C),
ϕ
3
(
C
,
D
)
\phi_3(C,D)
ϕ3(C,D),
ϕ
4
(
D
,
A
)
\phi_4(D,A)
ϕ4(D,A)具体可以表示为下面的形式,其中分别是:边左取值 、边右取值、 势函数值:
[ a 0 b 0 30 a 0 b 1 5 a 1 b 0 1 a 1 b 1 10 ] [ b 0 c 0 30 b 0 c 1 5 b 1 c 0 1 b 1 c 1 10 ] [ c 0 d 0 30 c 0 d 1 5 c 1 d 0 1 c 1 d 1 10 ] [ d 0 a 0 30 d 0 a 1 5 d 1 a 0 1 d 1 a 1 10 ] \left[ \begin{array}{ccc} a^0 & b^0 & 30\\ a^0 & b^1 & 5\\ a^1 & b^0 & 1\\ a^1 & b^1 & 10\\ \end{array} \right]\left[ \begin{array}{ccc} b^0 & c^0 & 30\\ b^0 & c^1 & 5\\ b^1 & c^0 & 1\\ b^1 & c^1 & 10\\ \end{array} \right]\left[ \begin{array}{ccc} c^0 & d^0 & 30\\ c^0 & d^1 & 5\\ c^1 & d^0 & 1\\ c^1 & d^1 & 10\\ \end{array} \right]\left[ \begin{array}{ccc} d^0 & a^0 & 30\\ d^0 & a^1 & 5\\ d^1 & a^0 & 1\\ d^1 & a^1 & 10\\ \end{array} \right] a0a0a1a1b0b1b0b1305110 b0b0b1b1c0c1c0c1305110 c0c0c1c1d0d1d0d1305110 d0d0d1d1a0a1a0a1305110
所以变量的取值、因子乘积、归一化概率就可以表示为:
[ 变 量 取 值 因子乘积 归一化概率 a 0 b 0 c 0 d 0 300000 0.04 a 0 b 0 c 0 d 1 300000 0.04 a 0 b 0 c 1 d 0 300000 0.04 a 0 b 0 c 1 d 1 30 0.0000041 a 0 b 1 c 0 d 0 500 0.000069 a 0 b 1 c 0 d 1 500 0.000069 a 0 b 1 c 1 d 0 5000000 0.69 a 0 b 1 c 1 d 1 500 0.000069 a 1 b 0 c 0 d 0 100 0.000014 a 1 b 0 c 0 d 1 1000000 0.14 a 1 b 0 c 1 d 0 100 0.000014 a 1 b 0 c 1 d 1 100 0.000014 a 1 b 1 c 0 d 0 10 0.0000014 a 1 b 1 c 0 d 1 100000 0.014 a 1 b 1 c 1 d 0 100000 0.014 a 1 b 1 c 1 d 1 100000 0.014 ] \left[ \begin{array}{ccc} 变 & 量 &取&值& 因子乘积&归一化概率\\ a^0 & b^0 &c^0&d^0& 300000&0.04\\ a^0 & b^0 &c^0&d^1& 300000&0.04\\ a^0 & b^0 &c^1&d^0& 300000&0.04\\ a^0 & b^0 &c^1&d^1& 30&0.0000041\\ a^0 & b^1 &c^0&d^0& 500&0.000069\\ a^0 & b^1 &c^0&d^1& 500&0.000069\\ a^0 & b^1 &c^1&d^0& 5000000&0.69\\ a^0 & b^1 &c^1&d^1& 500&0.000069\\ a^1 & b^0 &c^0&d^0& 100&0.000014\\ a^1 & b^0 &c^0&d^1& 1000000&0.14\\ a^1 & b^0 &c^1&d^0& 100&0.000014\\ a^1 & b^0 &c^1&d^1& 100&0.000014\\ a^1 & b^1 &c^0&d^0& 10&0.0000014\\ a^1 & b^1 &c^0&d^1& 100000&0.014\\ a^1 & b^1 &c^1&d^0& 100000&0.014\\ a^1 & b^1 &c^1&d^1& 100000&0.014\\ \end{array} \right] 变a0a0a0a0a0a0a0a0a1a1a1a1a1a1a1a1量b0b0b0b0b1b1b1b1b0b0b0b0b1b1b1b1取c0c0c1c1c0c0c1c1c0c0c1c1c0c0c1c1值d0d1d0d1d0d1d0d1d0d1d0d1d0d1d0d1因子乘积300000300000300000305005005000000500100100000010010010100000100000100000归一化概率0.040.040.040.00000410.0000690.0000690.690.0000690.0000140.140.0000140.0000140.00000140.0140.0140.014
因子乘积的和便是
Z
Φ
Z_\Phi
ZΦ,上面的每一行,都是概率分布函数的其中一项。
其中这个图只定义了A,B,C,D之间边的关系,没有定义节点变化的关系,所以可以在原有的式子基础上加上点对应的势函数,称之为 点势函数,加上点势函数后,这样联合概率分布就可以表示为:
p
(
X
)
=
1
Z
Φ
∏
p
ϕ
p
(
x
p
)
∏
p
,
q
ϕ
p
q
(
x
p
,
x
q
)
p(X)=\frac{1}{Z_\Phi}\prod \limits_{p}^{}\phi_p(x_p)\prod \limits_{p,q}^{}\phi_{pq}(x_p,x_q)
p(X)=ZΦ1p∏ϕp(xp)p,q∏ϕpq(xp,xq)
可以理解为A点取1,B点取1这个有一个概率,而A点取1或者0也有概率。
势函数也称为因子,表示为多个点的取值限制的函数映射,如点A有两个取值0,1,他的势函数的取值可以是5,10,如点A,B的边,其中B的取值也是0,1,则边的势函数就有四个取值
每个取值对应势函数的一个数值,虽然这些数值不是概率,而且加在一起不是1,但是取值的大小可以代表一种概率发生的大小。
因子图:
定义:
将一个具有多变量的全局函数因子分解,得到几个局部函数的乘积,以此为基础得到的一个双向图叫做因子图。
所谓factor graph(因子图),就是对函数因子分解的表示图,一种是变量节点,代表全局多元函数中的变量,一种是因子节点,代表因式分解中的局部函数。我们知道,一个全局函数能够分解为多个局部函数的积,因式分解就行了,这些局部函数和对应的变量就能体现在因子图上。在概率论及其应用中, 因子图是一个在贝叶斯推理中得到广泛应用的模型。
因子图是概率图的一种,概率图有很多种,最常见的就是贝叶斯网络和马尔可夫随机场,在概率图中,求某个变量的边缘分布是常见的问题,这问题有很多求解方法,其中之一就是可以把贝叶斯网络和马尔可夫随机场转换成因子图,然后用sum-product算法求解。基于因子图可以用sum-product算法可以高效的求各个变量的边缘分布。
根据贝叶斯上面的例子,可以转换成因子图的形式,如下:
其中
I
、
D
、
G
、
S
、
L
I、D、G、S、L
I、D、G、S、L分别表示的是变量节点,而
f
I
f_I
fI、
f
D
f_D
fD、
f
G
f_G
fG、
f
S
f_S
fS、
f
L
f_L
fL分别表示因子节点,也就是局部函数, 则
所以:
p
(
I
,
D
,
G
,
S
,
L
)
=
f
I
(
I
)
f
D
(
D
)
f
G
(
G
,
I
,
D
)
f
S
(
L
,
G
)
f
L
(
S
,
I
)
p(I,D,G,S,L) = f_I(I)f_D(D)f_G(G,I,D)f_S(L,G)f_L(S,I)
p(I,D,G,S,L)=fI(I)fD(D)fG(G,I,D)fS(L,G)fL(S,I)
其中上面是贝叶斯网络转化过来的,所以不用归一化,函数值本身就是代表的概率,
所以因子图的联合概率通用表示为:
p
(
X
)
=
1
Z
∏
p
ϕ
p
(
X
p
)
p(X)=\frac{1}{Z}\prod \limits_{p}^{}\phi_p(X_p)
p(X)=Z1p∏ϕp(Xp)
理解:联合概率分布可以表示为:局部势函数的连乘积的形式,并归一。
马尔可夫性质
定义:
马尔可夫性质(英语:Markov property)是概率论中的一个概念,当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性质。
- 具有马尔可夫性质的随机过程 称之为 马尔可夫过程。
- 时间和状态都是离散的马尔可夫过程 称之为 马尔可夫链。
马尔可夫链:
定义:
马尔可夫链又称离散时间马尔可夫链(discrete-time Markov chain,DTMC),为状态空间中经过从一个状态到另一个状态的转换的随机过程。该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关,这种特定类型的“无记忆性”称作马尔可夫性质。
在这个马尔可夫链中,四个圈表示四个状态,每条边表示一个可能的状态转换,边上的权值是转移概率。
下一刻状态如果只由当前状态决定,就叫一阶马尔可夫链,如果由当前和前一刻,那就叫二阶,同理。所以有m阶马尔可夫链。
隐马尔可夫模型:
定义:
隐马尔可夫模型(Hidden Markov Model,HMM)是用来描述一个含有隐含未知参数的马尔可夫过程,是马尔可夫链的一种,HMM是关于时序的概率模型,是基于联合概率建模的生成式模型,描述一个隐藏的含有未知参数的马尔可夫链随机生成不可观测的状态随机序列,然后基于此再生成可观测随机序列的过程。不可观测的状态随机序列被称为状态序列(State Sequence),可观测随机序列被称为观测序列(Observation Sequence)。隐马尔可夫模型要求状态序列是离散的,观测序列可以是离散的,也可以是非离散的。
在正常的马尔可夫模型中,状态对于观测者来说是可见的,这样状态的转移概率便是全部参数,而在隐马尔可夫模型中,状态并不是直接可见的,但是受状态影响的某些变量则是可见的,每一个状态在可见变量上都有一个概率分布,因此输出的可见状态序列能够透露出状态序列的信息。
隐含马尔可夫链是马尔可夫链的一个扩展:任一时刻
t
t
t 的状态
S
t
S_t
St是不可见的。所以观察者没法通过观察到一个状态序列
S
1
,
S
2
,
S
3
,
…
,
S
T
S_1,S_2,S_3,…,S_T
S1,S2,S3,…,ST来推测转移概率等参数。但是隐含马尔可夫模型在每个时刻
t
t
t 会输出一个
O
t
O_t
Ot,而且
O
t
O_t
Ot和
S
t
S_t
St相关且仅和
S
t
S_t
St相关。这称为 独立输出假设。隐含马尔可夫模型的结构如上图,其中隐含的状态
S
1
,
S
2
,
S
3
,
…
S_1,S_2,S_3,…
S1,S2,S3,…是一个典型的马尔可夫链。鲍姆把这种模型称为“隐含”马尔可夫模型。
其联合概率分布可以表示为:
p
(
y
,
x
)
=
∏
t
=
1
T
p
(
y
t
∣
y
t
−
1
)
p
(
x
t
∣
y
t
)
p(y,x) = \prod \limits_{t=1}^Tp(y_t|y_{t-1})p(x_t|y_t)
p(y,x)=t=1∏Tp(yt∣yt−1)p(xt∣yt)
与马尔可夫随机场的区别:
马尔科夫随机场是指在一堆数据点(比如图像矩阵网点)中,每个点的取值只与其邻域(记得叫clique)有关系,而于更远的点无关,这种概率模型和马尔科夫链很像,是对复杂现象的简化,其实质是某种图模型,两个点距离越近,关系越密切。
隐马尔科夫模型是指模型的真实参数是个马尔科夫链,但是这个链是隐藏在表现型下面不可见的,链中元素一旦确定,会显示出表现型这么一种模型,模型通过表现型估计隐藏参数
条件随机场:
定义:
条件随机场(Conditional Random Fields)为给定一组输入随机变量条件下另外一组输出随机变量的条件概率分布模型,是基于条件概率建模的判别式模型。
一般来说,我们常用的条件随机场为下面的线性链条件随机场,其条件概率可以表示为:
p
(
y
∣
x
;
θ
)
=
1
Z
(
x
;
θ
)
e
(
∑
t
=
1
T
θ
1
T
f
1
(
x
,
y
t
)
+
∑
t
=
1
T
−
1
θ
2
T
f
2
(
x
,
y
t
,
y
t
+
1
)
)
p(y|x; \theta)=\frac{1}{Z(x;\theta)}e^{(\sum\limits_{t=1}^{T}\theta_1^Tf_1(x,y_t)+\sum\limits_{t=1}^{T-1}\theta_2^Tf_2(x,y_t,y_{t+1}))}
p(y∣x;θ)=Z(x;θ)1e(t=1∑Tθ1Tf1(x,yt)+t=1∑T−1θ2Tf2(x,yt,yt+1))
其中
f
1
(
x
,
y
t
)
f_1(x,y_t)
f1(x,yt) 为状态特征,一般和位置
t
t
t 相关,
f
2
(
x
,
y
t
,
y
t
+
1
)
f_2(x,y_t,y_{t+1})
f2(x,yt,yt+1) 为转移特征,一般可以简化为
f
2
(
y
t
,
y
t
+
1
)
f_2(y_t,y_{t+1})
f2(yt,yt+1) 并使用状态转移矩阵来表示。
其中,
X
X
X 为已知输入随机变量,
Y
Y
Y 为输出随机变量
总把
H
M
M
HMM
HMM 和
C
R
F
CRF
CRF 进行比较,主要是因为
C
R
F
CRF
CRF 和
H
M
M
HMM
HMM 都利用了图的知识,但是
C
R
F
CRF
CRF 利用的是马尔科夫随机场(无向图),而
H
M
M
HMM
HMM 的基础是贝叶斯网络(有向图)。而且
C
R
F
CRF
CRF 也有:概率计算问题、学习问题和预测问题。大致计算方法和
H
M
M
HMM
HMM 类似,只不过不需要
E
M
EM
EM 算法进行学习问题。
条件随机场的训练
在计算 c r f crf crf 层 l o s s loss loss 的时候,需要计算最终的 l o s s loss loss 才能对整个模型和 c r f crf crf 层的参数进行反向传播,优化参数,其中 c r f crf crf 层有三个参数需要定义
self.start_transition = torch.nn.Parameter(torch.empty(num_tags))
self.end_transition = torch.nn.Parameter(torch.empty(num_tags))
self.transitions = torch.nn.Parameter(torch.empty(num_tags, num_tags)) # num_tags: 是指标签数,即B、I、O、E、S、X的数量
首先如果计算损失,那就先算正确路径的分数,正确标签路径的分数包含正确路径的转移分数和正确路径发射分数,发射分数就是模型最后的logits输出
s
c
o
r
e
(
X
,
y
)
=
∑
i
=
0
n
+
1
T
y
i
,
y
i
+
1
+
∑
i
=
1
n
L
o
g
i
t
s
i
,
y
i
score(X, y) = \sum_{i=0}^{n+1}T_{y_i, y_{i+1}} + \sum_{i=1}^{n}Logits_{i,y_i}
score(X,y)=i=0∑n+1Tyi,yi+1+i=1∑nLogitsi,yi
其中
n
n
n 为句子长度,
X
X
X 为输入的句子,
y
y
y 为真实的标签序列的index,如:[2, 1, 4, 3, 5],
T
y
i
,
y
i
+
1
T_{y_i, y_{i+1}}
Tyi,yi+1指的是句子的第
i
i
i 个词的真实标签
y
i
y_i
yi和句子的第
i
+
1
i+1
i+1 个词的真实标签
y
i
+
1
y_{i+1}
yi+1 之间的转换分数,
L
o
g
i
t
s
i
,
y
i
Logits_{i,y_i}
Logitsi,yi 指的是句子的第
i
i
i 个词其真实的
y
y
y 标签的发射分数,由于转换矩阵不包含开始转换到第一个词和最后一个词到最后结束的转换分数,所以
i
i
i 的取值是
0
0
0 到
n
+
1
n+1
n+1
上面只是计算了真实的标签序列的发射分数和转移分数,我们还需要计算所有可能组合路径的分数,就可以计算真实序列的条件概率了,也就是说,分子是真实路径的分数,而分母是所有路径的分数,这样的比值,我们想这个比值越大越好,这个就跟分类任务的时候,最后的预测结果一样,我们想让某个分类的值比其他的都大,这不就是多分类么?多条路径只有一个是正确的,所以概率为1,所以引入了
s
o
f
t
m
a
x
softmax
softmax,来计算这个最终的条件概率:
P
(
y
∣
X
)
=
e
s
(
X
,
y
)
∑
y
∈
Y
e
s
(
X
,
y
)
P(y|X) = \frac{e^{s(X, y)}}{\sum_{y \in Y}e^{s(X, y)}}
P(y∣X)=∑y∈Yes(X,y)es(X,y)
这个比值越大,我们的预测越准确,也就是真实路径的的得分就越高,所以这个工时也就可以当作我们的
l
o
s
s
loss
loss,但是
l
o
s
s
loss
loss 是越小越好,但是这个值是越大越好
,所以在这个前面加个符号就行,由于这个结果是趋近于
1
1
1 的,我们的loss最好是趋近于
0
0
0 ,所以在前面加个
l
o
g
log
log,取对数似然函数,即:
l
o
s
s
=
−
l
o
g
(
e
s
(
X
,
y
)
∑
y
∈
Y
e
s
(
X
,
y
)
)
=
−
(
l
o
g
(
e
s
(
X
,
y
)
)
−
l
o
g
(
∑
y
∈
Y
e
s
(
X
,
y
)
)
)
loss = - log(\frac{e^{s(X, y)}}{\sum_{y \in Y}e^{s(X, y)}}) = - (log(e^{s(X, y)}) - log(\sum_{y \in Y}e^{s(X, y)}))
loss=−log(∑y∈Yes(X,y)es(X,y))=−(log(es(X,y))−log(y∈Y∑es(X,y)))
所以
l
o
s
s
=
−
(
e
s
(
X
,
y
)
−
l
o
g
(
∑
y
∈
Y
e
s
(
X
,
y
)
)
)
loss = - (e^{s(X, y)} - log(\sum_{y \in Y}e^{s(X, y)}))
loss=−(es(X,y)−log(y∈Y∑es(X,y)))
其中
Y
Y
Y 指的是所有路径的集合
另外,我们看下下面这个公式
−
l
o
g
(
e
s
(
X
,
y
)
∑
y
∈
Y
e
s
(
X
,
y
)
)
-log(\frac{e^{s(X, y)}}{\sum_{y \in Y}e^{s(X, y)}})
−log(∑y∈Yes(X,y)es(X,y))
这个是什么?负对数似然函数,ok,我们再继续看,是不是可以把这个公式写成:
−
1
∗
l
o
g
(
e
s
(
X
,
y
)
∑
y
∈
Y
e
s
(
X
,
y
)
)
-1*log(\frac{e^{s(X, y)}}{\sum_{y \in Y}e^{s(X, y)}})
−1∗log(∑y∈Yes(X,y)es(X,y))
我们再看下交叉熵的公式:
H
(
p
,
q
)
=
−
∑
i
=
1
n
p
(
x
i
)
l
o
g
q
(
x
i
)
H(p,q)=-\sum_{i=1}^{n}p(x_i)logq(x_i)
H(p,q)=−i=1∑np(xi)logq(xi)
看出来了吗?
1
1
1 就是正确路径的概率
p
p
p ,在多分类的时候,
l
a
b
e
l
label
label是
o
n
e
_
h
o
t
one\_hot
one_hot的形式,衡量两个分布的时候,只需要计算那个
p
p
p为
1
1
1的路径,后面的
q
q
q 就是
l
o
g
i
t
s
logits
logits 每个路径的概率啊,这个不就是多分类的交叉熵损失
−
p
∗
l
o
g
(
q
)
-p*log(q)
−p∗log(q)吗?
1
1
1 代表正确标签的
l
a
b
e
l
label
label,后面则是模型的输出参数,所以得出结论:负对数似然函数和交叉熵损失在计算
l
o
s
s
loss
loss的时候是等价的。
另外,
交叉熵
=
相对熵
−
信息熵
交叉熵=相对熵-信息熵
交叉熵=相对熵−信息熵,在信息熵为
0
0
0 的时候,交叉熵等于相对熵,
o
n
e
_
h
o
t
one\_hot
one_hot分布的信息熵就为
0
0
0,所以在多分类的时候,交叉熵是相对熵的一个特例。
信息熵:描述单一概率分布本身的不确定性;
交叉熵:用于衡量模型预测分布与真实分布间的差距,并作为优化目标减少这种差距;
相对熵:量化两个概率分布之间的差异,常用于比较模型预测分布与真实分布的距离,或者是衡量模型复杂度、编码效率等方面。
延伸:生成模型与判别模型的区别
生成模型:对联合概率建模
判别模型:对条件概率建模
这时候有一个问题,既然是要预测结果,肯定是有一部分知道,另外一部分需要预测,这也就是说,我们求的是条件概率才对呀?没错,其实生成模型建模的是联合概率分布,但是最终求的结果还是个条件概率的结果。
假设有如下若干样本
(
x
,
y
)
(x,y)
(x,y):
(
x
,
y
)
∈
{
(
2
,
−
1
)
,
(
2
,
−
1
)
,
(
3
,
−
1
)
,
(
3
,
1
)
,
(
3
,
1
)
}
(x,y) \in \{(2,-1),(2,-1),(3,-1),(3,1),(3,1)\}
(x,y)∈{(2,−1),(2,−1),(3,−1),(3,1),(3,1)}
求:当
x
=
3
x=3
x=3 时,
y
=
?
y=?
y=?
解:
- 生成模型的方式进行解题,此时应该对 p ( x , y ) p(x, y) p(x,y)进行建模,则:
p ( x , y ) p(x,y) p(x,y) | y = − 1 y=-1 y=−1 | y = 1 y=1 y=1 |
---|---|---|
x = 2 x=2 x=2 | 2 / 5 2/5 2/5 | 0 0 0 |
x = 3 x=3 x=3 | 1 / 5 1/5 1/5 | 2 / 5 2/5 2/5 |
所以:当 x = 3 x=3 x=3时, p ( y = − 1 ) p(y=-1) p(y=−1)与 p ( y = 1 ) p(y=1) p(y=1)的概率分别为:
p ( y = − 1 ∣ x = 3 ) = p ( x = 3 , y = − 1 ) p ( x = 3 ) = 1 5 3 5 = 1 3 p(y=-1|x=3)= \frac{p(x=3,y=-1)}{p(x=3)}=\frac{\frac{1}{5}}{\frac{3}{5}}=\frac{1}{3} p(y=−1∣x=3)=p(x=3)p(x=3,y=−1)=5351=31
p ( y = 1 ∣ x = 3 ) = p ( x = 3 , y = 1 ) p ( x = 3 ) = 2 5 3 5 = 2 3 p(y=1|x=3) = \frac{p(x=3,y=1)}{p(x=3)}=\frac{\frac{2}{5}}{\frac{3}{5}}=\frac{2}{3} p(y=1∣x=3)=p(x=3)p(x=3,y=1)=5352=32
由此可以看出,虽然生成模型是对联合概率进行建模,但是最终还是要算出条件概率来得出结果的,所以说通过学习先验分布来推导后验分布而进行分类,这个条件概率是根据
(
x
,
y
)
(x,y)
(x,y)联合概率与
x
x
x 的边缘概率计算出来的,有了联合概率分布,边缘概率也可以算得出来了,所以,最终是可以算出条件概率这个结果的,如果有几分类,就会有几个后验概率分布,这几个后验概率分布都是条件概率分布了,所以就有几个模型。
2. 判别式模型的方式进行解题,此时应该对
p
(
y
∣
x
)
p(y|x)
p(y∣x) 进行建模,则:
p ( y ∣ x ) p(y\mid x) p(y∣x) | y = − 1 y=-1 y=−1 | y = 1 y=1 y=1 |
---|---|---|
x = 2 x=2 x=2 | 1 1 1 | 0 0 0 |
x = 3 x=3 x=3 | 1 / 3 1/3 1/3 | 2 / 3 2/3 2/3 |
我们可以看出,判别是模型是直接对p(y|x)进行建模的,也就是,直接学习后验概率分布,对后验概率进行建模,所以这样的话,只需要一个模型就可以了,输入时一系列的已知参数,输出的结果就是我们要的条件概率
总结:
- 马尔可夫随机场
满足马尔可夫性质的随机场,马尔可夫性质就是当前状态已知的情况下,过去和未来是相互独立的(马尔可夫链) - 隐马尔可夫模型
包含隐含参数的马尔可夫链,也就是多了个隐层,可观测的叫做可观测序列,不可观测的叫做状态序列,而观测序列的值只依赖于状态序列,这个是独立输出假设 - 条件随机场
条件随机场和隐马尔可夫模型的区别是,条件随机场是判别式模型,而隐马尔可夫模型还是要构建联合概率分布,所以是生成式模型,而且条件随机场的条件是所有的观测序列联合在一起,这个比马尔可夫模型看得更远,隐马尔可夫模型是有向图模型,条件随机场是无向图模型。
另外,如何理解条件随机场里的特征函数,我们可以将特征函数与神经网络联合起来,神经网络的输入是一个一个的特征值,可以是0或者1,也可以是一个数值,而条件随机场里要构建的样本特征就是0或者1,所以对于条件随机场的某一个位置而言,根据不同的特征函数,就会生成一系列的0和1,然后对这些0和1进行加权求和,最后就形成了一个分数。 - LSTM+条件随机场
就是把最后的输出的softmax层换成了条件随机场的输出层,相当于LSTM作为了条件随机场的条件层,优点是LSTM可以看的更长更远,原因是LSTM无法直接考虑label直接的关系,而条件随机场通过特征函数(状态特征函数,转移特征函数)可以直接限制label直接的关系。
实现的方式就是,LSTM输出的结果为作为发射概率,训练的过程中再训练一个N*N(N为label的数量)转移概率矩阵,这样有了转移概率矩阵和发射概率矩阵,通过维特比算法求出所有路径的分数和,拿当前路径的分数比上所有路径的分数和,就可以该路径的条件概率 p ( y ∣ x ) p(y|x) p(y∣x),其中y为特定的标注序列,x为输入,所以损失函数
l o s s = − l o g ( p ( y ∣ x ) ) loss = -log(p(y|x)) loss=−log(p(y∣x))
有了损失函数,就可以反向传播优化模型了。