2021-02-10实习日报

HNSW算法

理解起来有点困难需要多看几遍才能理解具体的含义
参考
HNSW算法

背景介绍

在浩渺的数据长河中做高效率相似性查找一直以来都是让人头疼的问题。比如,我在搜狗app上阅读了一篇文章,推荐系统就应当为我推送与这篇文章最相近的文章,数据库中所有文章是用向量表示的,所以我们要解决的问题就是“找到与这篇文章的向量最相近的几个向量”,然后把这些向量对应的文章推送出去。数据库中的文章千千万,所有用户每秒的请求也是千千万,我们需要又快又准又相对节约资源的办法来解决这个问题。

HNSW算法

在这里插入图片描述

第0层中,是数据集中的所有点,你需要设置一个常数ml,通过公式floor(-ln(uniform(0,1)) x ml)来计算这个点可以深入到第几层。公式中x是乘号,floor()的含义是向下取整,uniform(0,1)的含义是在均匀分布中随机取出一个值,ln()表示取对数。对于上述三个函数有任何疑问的同学请下载搜狗搜索app,搜一下,什么都有。没事看看信息流,骂骂小编,苏福。

      到此,关于HNSW算法的描述就基本结束了。我们来大致梳理一下它的查找过程,从表层(上图中编号为Layer=2)任意点开始查找,选择进入点最邻近的一些友点,把它们存储在定长的动态列表中,别忘了把它们也同样在废弃表中存一份,以防后面走冤枉路。一般地,在第x次查找时,先计算动态列表中所有点的友点距离待查找点(上图绿色点)的距离,在废弃列表中记录过的友点不要计算,计算完后更新废弃列表,不走冤枉路,再把这些计算完的友点存入动态列表,去重排序,保留前k个点,看看这k个点和更新前的k个点是不是一样的,如果不是一样的,继续查找,如果是一样的,返回前m个结果。

     插入构图的时候,先计算这个点可以深入到第几层,在每层的NSW图中查找t个最紧邻点,分别连接它们,对每层图都进行如此操作,描述完毕。

     我们需要控制一大堆参数,首先,插入时的动态列表c的大小,它的大小直接影响了插入效率,和构图的质量,size越大,图的质量越高,构图和查找效率就越低。其次,一个节点至少有几个“友点”,“友点”越多,图的质量越高,查找效率越低。作者在论文中还提到了“max友点连接数”这个参数,设置一个节点至多有多少友点,来提高查找效率,但是设的太小又会影响图的质量,权衡着来。上一段中的ml也是你来控制的,设置的大了,层数就少,内存消耗少,但严重影响效率,太大了会严重消耗内存和构图时间。在论文中,作者将查找状态下的动态列表长度和插入状态下的动态列表长度做了区分,你可以通过调整他们来实现“精构粗找”或者“精找粗构”。

Normalization数据标准化

参考
数据标准化

目的

在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。也就说标准化(normalization)的目的是:

1.把特征的各个维度标准化到特定的区间

2.把有量纲表达式变为无量纲表达式

归一化后有两个好处:

1.加快基于梯度下降法或随机梯度下降法模型的收敛速度

如果特征的各个维度的取值范围不同,那么目标函数的等线很可能是一组椭圆,各个特征的取值范围差别越大,椭圆等高线会更加狭长。由于梯度方向垂直于等高线方向,因而这时优化路线会较为曲折,这样迭代会很慢,相比之下,如果特征的各个维度取值范围相近,那么目标函数很可能很接近一组于正圆,因而优化路线就会较为直接,迭代就会很快。

  1. 提升模型的精度

在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和量级。当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用。因此,为了保证结果的可靠性,需要对原始指标数据进行标准化处理。

如在涉及到一些距离计算的算法时,例如KNN:如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。另外在SVM中,最后的权值向量ωω受较高指标的影响较大。

所以归一化很有必要,它可以让各个特征对结果做出的贡献相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值