Bert源码阅读笔记

Bert 组件

BertEmbeddings

embeddings:

  • word_embeddings: nn.Embedding, $vocab_size \times hidden_size$
  • position_embeddings: nn.Embedding, $max_position_embeddings \times hidden_size$
  • token_type_embeddings: nn.Embedding, $type_vocab_size \times hidden_size$
Read More

图算法

中心性算法

中心性算法(Centrality Algorithms)用于识别图中特定节点的角色及其对网络的影响。中心性算法能够帮助我们识别最重要的节点,帮助我们了解组动态,例如可信度、可访问性、事物传播的速度以及组与组之间的连接。尽管这些算法中有许多是为社会网络分析而发明的,但它们已经在许多行业和领域中得到了应用。

Read More

机器学习优化算法

大多数机器学习的问题,最终都是求解一个目标函数 $J(\theta)$ 的极值,即最优化问题。优化方法在机器学习算法的推导与实现中占据重要的地位,本文主要介绍一些常用的优化方法,理解它们的原理及实现方法。

Read More

决策树生成算法

决策树是机器学习领域非常重要的一种方法,是一种树结构(二叉树或多叉树),树的每个非叶子结点表示在一个属性上的测试,每个分支表示属性在某个值域上的输出,叶子结点代表类别,由所有落在该叶子结点上的所有样本决定。看个简单的例子

Read More

随机采样方法整理

随机模拟也叫蒙特卡罗模拟(Monte Carlo Simulation),其中一个重要的问题就是,给定一个概率分布p(x),如何在计算机中生成它的样本。通常来讲,生成均匀分布 $Uniform(0,1)$ 的样本是相对容易的,使用线性同余发生器就可以生成伪随机数

Read More

最大似然估计

最大似然估计

最大似然估计(Maximum Likelihood Estimation, MLE)是一种利用已知样本结果信息,来反推最可能导致这种结果出现的模型参数的方法。使用最大似然估计估算模型参数要求采样是独立同分布的。假设有一系列独立同分布的采样 $\lbrace x_1, x_2, …, x_n\rbrace$ , $f$ 是分布的模型,$\theta$ 是参数,则上述采样可以表示为

Read More

EM算法

最大似然估计 这篇文章中,我们介绍了一种通过样本来估计模型参数的方法。现在,我们把问题变得复杂一些,假设 $\lbrace x_1, x_2, …, x_n \rbrace$ 来自两个不同的正态分布 $N(\mu_1, \sigma_1^2)$ 和 $N(\mu_2, \sigma_2^2)$,如果我们知道每一个样本来自哪个分布,那么估计参数是一件容易的事情,使用最大似然估计方法就可以了。但不幸的是,我们不知道每个样本来自哪个分布,也就是说,每个样本除了自身之外还有一个隐变量 $z_i$, $z_i(j) = 1$ 表示样本 $x_i$ 来自第 $j$ 个正态分布,否则 $z_i(j) = 0$。为了解决这个问题,我们可以使用EM算法。

Read More

HMM

马尔科夫链

一个随机过程在某一个时刻的状态只与前n个时刻的状态有关,这个过程称为n阶马尔科夫过程。最简单的马尔科夫过程就是一阶马尔科夫过程,即任一时刻的状态只与前一个时刻的状态有关。时间和状态都是离散值的一阶马尔科夫过程即为马尔科夫链(Markov Chain)。一个马尔科夫链由3部分组成:

  • $S = \lbrace 1, …, N \rbrace$: 状态集合
  • $\pi = \lbrace \pi_1, \pi_2, …, \pi_N \rbrace$: 系统初始时处于各个状态的概率
  • $A = \lbrace a_{i,j} \rbrace$: 转移矩阵,$a_{i,j}$ 表示由状态 $i$ 到 $j$ 的转移概率,$\sum_{j=1}^n a_{i,j} = 1$
Read More

git rebase --skip后commit丢失的拯救办法

今天从git仓库同步代码,执行 git pull --rebase origin master 命令后出现了冲突,解决冲突后执行 git rebase --continue 时提示没有改动,执行 git rebase --abortgit rebase --skip 命令。当时也不是太明白什么意思,stackoverflow搜了下,说是可以执行 git rebase --skip 命令。本着我对git强大恢复功能的信任,我毫不犹豫地执行了skip命令。然后…然后杯具的事情就发生了,之前一个commit修改的内容没了,就这样没了,可是我辛辛苦苦几个晚上写的东西呢,肿么可以这样子…
然而,我肯定是不甘心辛苦创作的内容就这么没了的现实,开始找办法恢复。这时候 git reflog 就派上了用场,用这个命令看看最近发生了什么

Read More

机器学习常用概率分布函数

离散变量概率分布

伯努力分布(Bernoulli Distribution)

伯努力分布又叫两点分布或0-1分布,其中随机变量 $X$ 只有0和1两个取值,其概率质量函数为

Read More

深入理解FM

FM介绍

Factorization Machine(因子分解机,简称FM) 是由德国康斯坦茨大学 Steffen Rendle 于2010年提出,有效解决了大规模稀疏数据下的特征组合问题。 在正式学习FM前,我们先看一下二阶多项式回归模型(公式(1))。二阶多项式回归模型是在线性回归模型的基础上引入了特征的二阶组合项,实际上还是一个线性模型。为了学习参数$w_{i,j}$, 我们需要大量 $x_i, x_j$同时不为0样本。但在样本数据本身就非常稀疏的情况下,同时满足$x_i, x_j$非0的样本就非常少,这就会导致参数 $w_{i,j}$ 学习不充分,模型预测效果较差。

Read More

NumPy学习笔记

NumPy(Numerical Python)是一个开源的Python科学计算库。ndarray是NumPy定义的最重要的概念,它是一个n维数组,是一组相同元素的集合。NumPy基于ndarray提供了很多实用的数学函数,包括线性代数运算、傅里叶变换、随机数生成等功能。对于同样的数值计算任务,使用NumPy要比直接使用Python编写代码要便捷得多,这是因为NumPy能够直接对数组和矩阵进行计算,而不用编写复杂的循环代码。NumPy的大部分代码使用C语言编写,这也使得NumPy要比纯Python代码的运行效率要高得多。

Read More

GCD简介

GCD(Grand Central Dispatch)是苹果公司libdispatch库的商业名称,它是一个在多核iOS或OS X平台上提供代码并行运行的库。它有以下好处:

  1. 简单易用:GCD提供了一个相对于线程和锁更加简单的并行编程模型,你可以只用专注于任务,而不用关心线程的创建和管理。
  2. 高效:GCD会根据系统负载自动调整线程的数量,优化任务的调度,这就减少了线程创建和上下文切换的开销,提高了性能。
Read More

git常用命令

git config –(system | global | local) <section.key> <value>

配置git, system表示为系统所有用户的所有仓库配置,配置文件在/etc/gitconfig; global表示为当前用户的所有仓库配置,配置文件在~/.gitconfig; local表示为当前仓库配置,配置文件在当前仓库的 .git/config。git默认使用local的配置,其次global,再次system。常用配置项有:

  • user.name - 作者名
  • user.email - 作者邮箱
  • core.editor - 默认编辑器
  • merge.tool - 冲突解决工具
Read More