隐马尔可夫模型HMM
隐马尔可夫HMM定义
一站式解决:隐马尔可夫模型(HMM)全过程推导及实现
关于HMM、MEMM、CRF的一些知识整理整理
图解隐马尔可夫模型HMM_通俗易懂
隐马尔可夫模型(hidden Markov model, HMM)是可用于标注问题的统计学习模型
描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型
隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence)每个状态生成一个观测
而由此产生的观测的随机序列,称为观测序列(observation sequence)
序列的每一个位置又可以看作是一个时刻
这里的$Z$就是状态序列,$x$是观测序列,设Q是所有可能的状态的集合,V是所有可能的观测的集合,$N$是可能的状态数,$M$是可能的观测数
Q = \{q_1,q_2, \cdots ,q_N \} \qquad V = \{v_1,v_2, \cdots ,v_M \}三要素
隐马尔可夫三要素
隐马尔可夫模型由初始状态概率$\pi$、状态转移矩阵$A$、观测概率矩阵(或者叫发射矩阵)$B$决定,记作
\lambda = (\pi, A ...
条件随机场CRF
前置知识
笔记整理自:Bilibili站上shuhuai008强势手推讲解的白板推导CRF系列课程,课程质量很高!
条件随机场
【NLP】从隐马尔科夫到条件随机场
分类问题根据输出的类型,可以将其划分为硬模型和软模型
硬输出: 输出为0或1
软输出: 引入概率,不直接计算边界,而是计算取各类别的概率
软硬模型硬模型
svm支持向量机(最大间隔)
几何角度出发,求的是max margin classifier,式子最终的形式为
min (\frac {1}{2} w^Tw) \qquad s.t. \ y_i(w^Tx_i+b) \geq1,i=1,\cdots,N
PLA感知机,可以看作最基本的神经元
f(w) = sign(w^Tx)
LDA线性判别分析(误分类驱动)
核心思想: 类间大、类内小
软模型概率判别模型
建模核心
是对P(x,y)进行建模
例子_逻辑回归(Logistics Regression, LR),或者也可以叫SoftMax Regression
例子_最大熵模型(Maximum Entropy Model, MEM)
利用最大熵思想( ...
贪心算法
贪心算法概念案例
动态规划
动态规划概念动态规划(英语:Dynamic programming,简称 DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法
动态规划常常适用于有重叠子问题和最优子结构性质的问题
适用情况
动态规划有几个典型特征,最优子结构、状态转移方程、边界、重叠子问题
最优子结构: 如果某条路径是起点到终点的最短路径,则起点到该路径上的每一点都是最短路径,一个最优化策略的子策略总是最优的,最优化原理是动态规划的基础
无后效性: 当前选择任何一条边都不会影响以后选择其他边,如果当前选择会影响后面的选择则不适用,每个状态都是过去历史的一个完整总结
动态规划解题的步骤
找出最优子结构
写出动态规划方程
使用自底向上或者自顶向下的方法求解
逆推求解
小结
动态规划的适用条件任何思想方法都有一定的局限性,超出了特定条件,它就失去了作用
同样,动态规划也并不是万能的,适用动态规划的问题必须满足最优化原理和无后效性
动态规划的实质是分治思想和解决冗余,因此,动态规划是一种将问题实例分解为更小的、相似的子问题,并存 ...
递推和递归
递推和递归概念
递归: 从问题的最终目标出发,逐渐将复杂问题化为简单问题,最终求得问题,是逆向的
递推: 是从简单问题出发,一步步的向前发展,最终求得问题。是正向的
一般来说,递推的效率高于递归(当然是递推可以计算的情况下),比如:斐波那契数列
a_{n} = \frac {1}{\sqrt{5} [ (\frac {1+\sqrt{5}}{2})^n - (\frac {1-\sqrt{5}}{2})^n ]}案例递归实现指数型枚举题目
描述
从 $1∼n$ 这 $n$ 个整数中随机选取任意多个,输出所有可能的选择方案
难度
简单
输入格式
输入一个整数 $n$
输出格式
每行输出一种方案
同一行内的数必须升序排列,相邻两个数用恰好 $1$ 个空格隔开。
对于没有选任何数的方案,输出空行
本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意
数据范围
1 \leq n \leq 15
输入样例
13
输出样例
1234567322 311 31 21 2 3
求解
递归方式
1234567891011n = input()def dfs(u, ...
位运算
位运算基础位运算基础可以见python基础知识
计算位运算计算时间为O(1)
移位运算
左移:
逻辑右移: 就是不考虑符号位,右移一位,左边补零即可
算术右移: 考虑符号位,右移一位,若符号位为1,就在左边补1;否则,就补0
n >> 1 = \lfloor \frac{n}{2.0} \rfloor
算术右移也可以进行有符号位的除法,右移n位就等于除2的n次方
🍆n>>1是向下取整,n/2是整数除法,是向0取整
1234567[(i // 2, i >> 1) for i in range(10)]# 输出[(0, 0), (0, 0), (1, 1), (1, 1), (2, 2), (2, 2), (3, 3), (3, 3), (4, 4), (4, 4)]
位运算小技巧
用异或实现配偶
123456789100, 12, 34, 56, 70 ^ 1 = 1, 1 ^ 1 = 02 ^ 1 = 3, 3 ^ 1 = 2...4 ^ 1 = 5, 5 ^ 1 = 4...
12345678[i ^ 1 for i in range ...
算法综述
算法
算法定义
算法是一系列解决问题的清晰指令
算法代表着用系统的方法描述解决问题的策略机制
也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出
如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题
不同的算法可能用不同的时间、空间或效率来完成同样的任务
算法的优劣可以用空间复杂度与时间复杂度来衡量
分类
有限的,确定性算法: 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止,这类算法得出的结果常取决于输入值
有限的,非确定算法: 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的
无限的算法: 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法
通常,无限算法的产生是由于未能确定的定义终止条件
算法复杂度
定义
算法复杂度,即算法在编写写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源
复杂度表示
我们记一个算法的复杂度为O(n),表示数据规模为n的情况下,算法使用的时间和空间资源
也可以用O(n ...
md数学公式和emoji表情
表情
⚓表情网站
⛪emoji表情官网
⛺timwhitlock表情
🌴常用表情
😀 😃 🥰 😍 😘
❤️ ✨ ⭐ ❗❓ ❕❔
✊ ✌️ ✋ ✋ ☝️ 👏 🤝
☀️ ☔ ☁️ ❄️ ⛄ ⚡ ⛅
⛪ ⛺ ⛲ ⛵ ⛵ ⚓ ✈️ ⛽ ⚠️ ♨️
1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣ 8️⃣ 9️⃣ 0️⃣
️⃣ ◀️ ⬇️ ▶️ ⬅️ ↙️ ↘️ ➡️ ⬆️ ↖️ ↗️⏬ ⏫ ⤵️ ⤴️ ↩️ ↪️ ↔️ ↕️ ⏪ ⏩ ℹ️ ️ ️ ️
♿ ㊙️ ㊗️ Ⓜ️ ⛔ ✳️ ❇️ ✴️
♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓ ⛎
❎ ️ ️ ️ ♻️ ©️ ®️ ™️ ❌ ❗ ‼️ ⁉️ ⭕ ✖️ ➕ ➖ ➗ ✔️
☑️ ➰ 〰️ 〽️ ▪️ ▫️ ◾ ◽ ◼️ ◻️ ⬛ ⬜ ✅ ⚫ ⚪
🌿 🍃 🌾 🌴 🌲 🥝 🥑 🍇 🍒 🍐 🌼 🍁 🥭 🌸 🍄
🐋 🐬 🐶 🐳 🐰 🦀
☝️ ⭐ 👉 👀
🌚 🌝 🧡ྀི 💛ྀི ❤️ྀི
❤️ 🌈 💯 🐾 🍭 🥂 🎼 🏀 👏
Latex公式
Ma ...
机器学习_线性代数与矩阵论(1)
写在前面,本系列主要是对下面这本书做的学习笔记
向量及其运算基本概念线性代数是多元函数微积分的基础
定义
向量(Vector)是具有大小和方向的量,是由多个数构成的一维数组,每个数称为向量的分量,向量分量的数量称为向量的维数
向量的表示
物理中的力、速度以及加速度是典型的向量,$n$维向量$x$有$n$个分量,可以写成行向量的形式$(x_1 \cdots x_n)$
通常将向量写成小写黑体斜体字符,如果写成列的形式则称为列向量,这些分量在列方向排列
\begin{bmatrix}
x_1 \\
\vdots \\
x_n
\end{bmatrix}这些向量的分量是实数,则成为实向量,如果是复数,则成为复向量,$n$维实向量的集合记为$\mathbb{R}^n$
与向量相对的是标量(Scalar),标量只有大小而无方向,物理中的时间、质量以及电流是典型的标量
在数学中通常把向量表示成列向量,而计算机中通常按行存储
二维平面内的一个向量,其在$x$轴方向和$y$轴方向的分量分别为$3$和$1$,写成行向量形式为$\left[ \begin{matrix} 3 & ...
docker基本使用
docker
docker官方文档
Docker 快速入门
Docker 安装包下载
docker是什么Docker 是一个应用打包、分发、部署的工具
你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要
而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件
跟普通虚拟机的对比
特性
普通虚拟机
Docker
跨平台
通常只能在桌面级系统运行,例如 Windows/Mac,无法在不带图形界面的服务器上运行
支持的系统非常多,各类 windows 和 Linux 都支持
性能
性能损耗大,内存占用高,因为是把整个完整系统都虚拟出来了
性能好,只虚拟软件所需运行环境,最大化减少没用的配置
自动化
需要手动安装所有东西
一个命令就可以自动部署好所需环境
稳定性
稳定性不高,不同系统差异大
稳定性好,不同系统都一样部署方式
打包、分发、部署
打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包
分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装
部署: ...