参数估计(parameter estimation),统计推断的一种。根据从总体中抽取的随机样书.来估计总体分布中未知参数的过程。从估计形式看,区分为点估计与区间估计:从构造估计量的方法讲,有矩法估计、最小二乘估计、似然估计、贝叶斯估计等。
��似然估计、贝叶斯估计等。

时隔多年,回顾LDA

一定要回顾一下LDA,变分、gibbs都忘记了。

LDA算是自己PGM的入门paper。后面渐渐NN走上神坛,PGM的一系列渐渐遗忘。

LDA应该算是PGM的代表作品之一。

分布式哈希算法

普通的Hash方式

在介绍分布式哈希算法之前,先了解下普通的Hash是如何实现的。JDK中的java.util.HashMap类就实现了一个哈希表,它的特点有:
①创建哈希表(HashMap)需要先指定大小,即默认创建一个能够存储多少个元素的哈希表,它的默认大小为16。

②当不断地向HashMap中添加元素时,HashMap越来越满,当添加的元素达到了装载因子乘以表长时,就需要扩容了。扩容时,原来已经映射到哈希表中的某个位置(桶)的元素需要重新再哈希,然后再把原来的数据复制到新的哈希表中。

因此,这是普通哈希的一个不足:扩容可能会影响到所有元素的移动。这也是为什么:为了减少扩容时元素的移动,总是将哈希表扩容成原来大小的两倍的原因。因为,有数学证明,扩容成两倍大小,使得再哈希的元素个数最少。

示例

分布式哈希

一致性哈希

基础知识

  • 热点(Hot spot)问题:
  • 分布式哈希:
  • 一致性

简介

一致哈希 是一种特殊的哈希算法。
在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对$K/n$个关键字重新映射,
其中$K$是关键字的数量,$n$是槽位数量。
然而在传统的哈希表中,添加或删除一个槽位的几乎需要对所有关键字进行重新映射

历史

一致哈希是1997年由MIT的Karger提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot) 问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。

一致性哈希算法(Consistent Hashing)是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。
因此,引入了一致性哈希算法:

把数据用hash函数(如MD5),映射到一个很大的空间里,如图所示。数据的存储时,先得到一个hash值,对应到这个环中的每个位置,如k1对应到了图中所示的位置,然后沿顺时针找到一个机器节点B,将k1存储到B这个节点中。

如果B节点宕机了,则B上的数据就会落到C节点上,如下图所示:

这样,只会影响C节点,对其他的节点A,D的数据不会造成影响。然而,这又会造成一个“雪崩”的情况,即C节点由于承担了B节点的数据,所以C节点的负载会变高,C节点很容易也宕机,这样依次下去,这样造成整个集群都挂了。

为此,引入了“虚拟节点”的概念:即把想象在这个环上有很多“虚拟节点”,数据的存储是沿着环的顺时针方向找一个虚拟节点,每个虚拟节点都会关联到一个真实节点,如下图所使用:

图中的A1、A2、B1、B2、C1、C2、D1、D2都是虚拟节点,机器A负载存储A1、A2的数据,机器B负载存储B1、B2的数据,机器C负载存储C1、C2的数据。由于这些虚拟节点数量很多,均匀分布,因此不会造成“雪崩”现象。

加虚拟节点解决数据均衡的问题

1.使用虚拟节点后,但是当我增加物理节点后,环中的虚拟节点是否要增加,如果把他应用在mysql上,数据迁移是否会很困难?

2.在使用虚拟节点时,比如5个物理节点,每个物理节点虚拟出1024个虚节点,按道理hash环有5120个节点,但是使用kemata哈希虚拟环时,有些节点key的哈希结果相同,导致hash环中少于5120个节点?、

有一个问题,如果使用虚拟节点,某台机器每次宕机再恢复后都需要迁移数据。这样是否反而更麻烦了。

实现

参考

思考题

  • 一致性哈希只是分布式场景下的应用吗?单机能用吗?单机怎样实现哈希的一致性?

MurmurHash算法

MurmurHash is a non-cryptographic hash function suitable for general hash-based lookup.The name comes from two basic operations, multiply (MU) and rotate (R), used in its inner loop. Unlike cryptographic hash functions, it is not specifically designed to be difficult to reverse by an adversary, making it unsuitable for cryptographic purposes.

MurmurHash 是一种非加密型哈希函数,适用于一般的哈希检索操作。已经被应用到很多开源项目如Redis,Memcached,Cassandra,HBase,Lucene等。与其它流行的哈希函数相比,对于规律性较强的key,MurmurHash的随机分布特征表现更良好。

优缺点

  • 速度快,比安全散列算法快几十倍;
  • 变化足够激烈,相似的字符串如“abc”和“abd”能够均匀散落在哈希环上;
  • 不保证安全性(缺点)

高斯混合模型

这是密度估计?还是概率估计?

什么是高斯混合模型(Gaussian Mixture Model)

高斯混合模型(Gaussian Mixture Model)通常简称GMM,是一种业界广泛使用的聚类算法,该方法使用了高斯分布作为参数模型,并使用了期望最大(Expectation Maximization,简称EM)算法进行训练。

本文对该方法的原理进行了通俗易懂的讲解,期望读者能够更直观地理解方法原理。文本的最后还分析了高斯混合模型了另一种常见聚类算法K-means的关系,实际上在特定约束条件下,K-means算法可以被看作是高斯混合模型(GMM)的一种特殊形式(达观数据 陈运文)。

更看重在短语的融合?

先训练ubm,再训T矩阵。

每个句子一个vector。d-vector是每一帧一个vector。

tdnn

xvector更适合短时