Hmm 模型(hidden markov model)(前向后向算法)
HMM的问题一是:已知HMM模型的参数$\lambda = (A, B, \Pi)$。其中𝐴是隐藏状态转移概率的矩阵,𝐵是观测状态生成概率的矩阵,
$\Pi$是隐藏状态的初始概率分布。同时我们也已经得到了观测序列$O ={o_1,o_2,…o_T}$。
现在我们要求观测序列𝑂在模型λ下出现的条件概率𝑃(𝑂|𝜆)。
暴力求解
根据HMM的第二个假设,我们知道观测序列肯定是与$I$相关的,
我们需要在原始公式$𝑃(𝑂|𝜆)$中加入变量$I$,根据联合概率公式
其中
根据HMM的第一个假设其中
$p(i_T|i_{T-1},i_{T-2},…i_1|\lambda) = p(i_T|i_{t-1})$,
因此
同理,使用HMM的第二个假设可得:
因此:
...
Hmm 模型(hidden markov model)(介绍)
使用HMM模型的问题有两类特征:
1.问题是基于序列的,比如时间序列,词序列
2.问题中有两类数据,一类序列数据是可以观测到的,即观测序列;而另一类是不能观测到的,即隐藏状态序列,简称状态序列 (例如词性标注中的词序列与词性序列,语音识别中发出的声音和想要表达的内容)。
HMM模型的定义
对于HMM模型,首先我们假设𝑄是所有可能的隐藏状态的集合,𝑉是所有可能的观测状态的集合,即:
其中,𝑁是可能的隐藏状态数,𝑀是所有的可能的观察状态数。
对于一个长度为𝑇的序列,𝐼对应的状态序列, 𝑂是对应的观察序列,即:
其中,任意一个隐藏状态 $i_t \in 𝑄$ ,任意一个观察状态 $o_t \in 𝑉$
HMM模型做了两个很重要的假设如下:
1.齐次马尔科夫链假设...
Task取消和子协程调用原理
task取消的例子
import asyncio
import time
async def get_html(sleep_time):
print("waiting")
await asyncio.sleep(sleep_time)
print("done after {}s".format(sleep_times))
if __name__ == "__main__":
task1 = get_html(2)
task2 = get_html(3)
task3 = get_html(4)
tasks = [task1,task2,task3]
loop = asyncio.get_event_loop()
try:
loop.run_...
Asyncio代码例子
asyncio包含以下功能
1.包含各种特定系统实现的模块化事件循环模块
2.传输和协议抽象
3.对TCP,UDP,SSL,子进程延时调用以及其他的具体支持
4.模仿future模块但是适用于事件循环的Feature类
5.基于yield from 的协议和任务,让我们用顺序的方法编写并发代码
6.必须使用一个将产生阻塞IO的调用时,有接口可以把这个事件转移到线程池。
Asyncio代码使用实例
import asyncio
import time
async def get_html(url):
print('start get url')
await asyncio.sleep(2) # 不可以使用同步阻塞的方法 time.sleep(2) 来操...
Python 利用yield实现协程
子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。
所以子程序调用是通过栈实现的,一个线程就是执行一个子程序。
子程序调用总是一个入口,一次返回,调用顺序是明确的。而协程的调用和子程序不同。
协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。
所以不同点在于程序只有一个调用入口起始点,返回之后就结束了,而协程入口既可以是起始点,又可以从上一个返回点继续执行,也就是说协程之间可以通过yield方式转移执行权,对称(symmetric)、平级地调用对方,而不是像例程那样上下级调用关系。
相关语法
在python的函数中使用yield语句可以...
Distilling the knowledge in a neural network
模型蒸馏是通过大模型的结果提升小模型预测准确率的方法。以此可以帮助我们减少线上模型部署的难度(减少内存,gpu,cpu 的使用)。
具体的做法如下:
1、训练大模型:先用hard target,也就是正常的label训练大模型。
2、计算soft target:利用训练好的大模型来计算soft target。也就是大模型“软化后”再经过softmax的output。
3、训练小模型,在小模型的基础上再加一个额外的soft target的loss function,通过lambda来调节两个loss functions的比重。
4、预测时,将训练好的小模型按常规方式(右图)使用。
一般认为,大模型比小模型能够描述复杂的问题,能够学得更复杂的模式。模型蒸馏能够让大模型学得的...