扬渊's profile再见流星PhotosBlogListsMore Tools Help

Blog


    12/19/2008

    指纹匹配思路搞定

    借助于几何压缩,把方向图和频率图全部存起来。
    就喜欢这种大刀大阖的风格,取巧是细节的事情,架构层面一定要有魄力。
    12/13/2008

    fire人了

    我一直以为人只要足够坚持就能接近成功,现在才明白有的人在对外界持抗拒的心态下
    坚持。从来没跟这样的家伙近距离接触过,这回算开眼了。

    谁都经过渴望被承认的年纪,但有的人用忍耐和努力来度过,有的人用言辞的彪悍和行
    动的非常规来抗拒。

    经过这件事,我得好好反思一下。责任心和适当的柔顺才是起码的品质,抛开这两者谈
    什么都是胡说八道。
    12/9/2008

    有所突破!

    总算完全弄明白今天七拼八凑弄出来的玩意到底如何工作的了。
    如果没有这一步,无论这破东西最后卖了几个零,始终都是不完善的工作。
    瓶颈期大约渡过一半了,哈哈

    矢量量化介绍

    本文: [转寄][转贴][删除][修改][回复][作者:dragondevil][人气:217]
    发信人: dragondevil(流星※苍龙出海), 信区: Algorithm
    标  题: Vector Quantization介绍
    发信站: 瀚海星云 (2008年12月04日00:55:52 星期四), 站内信件 WWWPOST
    
    前几天有人问,所以抽时间随便写点。
    
    在高维信息(有损)压缩中,较常用的一个方法是VQ,矢量量化。
    所谓VQ,和SQ,Scalar Quantization相对。
    
    为此先讲下非一致量化的一般准则:平均量化误差绝对值最小化。
    这是假定量化噪声为白噪的前提下,使矩即稳态噪声能量最小化的等价条件。
    当量化噪声谱非白,则此准则失效。这种情形这里且略过。
    对一维量,假若确定了量化点,则任一输入对应到量化点,应取距离范数最小者。
    对有限个量化点,应在被量化变量分布密度函数大的区间密而在密度小的区间稀疏。
    以上两点易证。
    
    以二维情形为例,如果两个维度的坐标分布无关,则各自进行SQ。
    如果两个维度分布有关,例如总分布在x1=x2附近,则采用VQ,使量化点分布在x1=x2附
    近,避免在远离该直线的区间放置量化点,以达到量化点数最小化同时量化误差最小化
    (请重复第二段中的定义)。
    这符合量化的一般原理:在被量化变量分布密度大的区间密并在密度小的区间稀疏。
    这个区间是二维及以上空间的子集时,称为VQ;
    该区间指一维空间子集时,称为非一致SQ。
    
    现在有了VQ的第一个要点:被量化向量的分布密度函数。
    通常很难得到这个函数的连续代数表述,往往以统计集直接表示。
    于是对统计集遍历性和分布可靠性需进行分析。
    
    然后是VQ的第二个要点:从分布密度函数到量化点集。
    量化的目的是为了降低数据率,在二进制系统下,量化点集的势总为2^k。
    分布密集的地方量化点密集,分布稀疏的地方量化点稀疏。
    这仍然基于量化噪声为白噪的假设,这并不总是成立,所以以上命题并不总是成立。
    
    最后是VQ的第三个要点:从一个输入到量化点,即量化编码过程。
    在空间所定义的距离范数下,离输入最近那个量化点的序号,就是输出。
    解码过程,就是把序号通过查表对应到量化点坐标。
    
    现在总合起来,看看有些什么研究点:
    1、训练集遍历性和分布可靠性
    
    这是基于VQ所应用的领域的特性的研究,在此略过。
    
    2、最优VQ的生成
    
    经典的方法,是空间分裂的迭代法:先求全空间的重心,作为量化点;再求投影方差最
    大的方向,使量化点在这个方向上分裂为两个点,这两个点连线的垂平面分割空间;对
    每个点对应的空间部分,先移动该点到其重心;求投影方差最大的方向,再次分裂。
    
    该迭代很复杂,基于训练集,和被量化量分布连续假设。迭代中,当量化点移动,则空
    间分割变化,量化点再次移动到变化后的空间分割的重心,就需要一次收敛,不妨称为
    内迭代。点分裂若在内迭代途中加进来,简直可以使这个迭代不可控。
    
    实际上只有钟型连续分布,该迭代在有限步才能得到一个较优解,并在无限步有可能得
    到最优解。在一般不太理想的分布下,无限步收敛到最优解是不可能的。有限步解的优
    解性更是值得怀疑。
    
    主要的研究,是怎么配置好这个迭代。例如处理好分裂点选择,分裂时机、方向,分裂
    数,分裂和内迭代的关系。要想一劳永逸解决这个问题几乎是不可能的,慑于庞大的训
    练集带来的复杂度和获得并描述高维分布函数的困难性。
    
    个人觉得要解决好这个问题,还是应该从高维分布函数入手。毕竟这是一个局部化的问
    题,获得一个较优解,完全可以先武断的指定分布函数的不同部分(假若他们可以明显
    的分开的化)各自分配多少个量化点名额。最终解的优化使得初始边界被改变毕竟是远
    小于初始分割尺度的。代数解法提供了更快的“收敛”性,这避免了交互影响的迭代中
    最重要也是最困难的收敛控制问题。
    
    另一个角度,VQ的有用性,基于分布函数的非均布性。总可以通过空间变换来平坦该分
    布函数,至少将分布函数分段后是可以逐段进行的。这种方法面临的困难就是,变换后
    的空间,其范数并不直接对应原空间中的范数,所以一次得到最优解总是不可能的。但
    作为一个很好的初值赋予,再借由高效稳定的迭代收敛来实现局部最优解是可行的。
    
    VQ的全局最优解绝对是一个世纪级的难题。
    
    3、编码算法
    VQ的编码可以通过Voronoi图来理解:由空间中的一个不重复点集形成的分划,将空间分
    割成与点集的元素一一对应的部分。任一点对应的空间部分中的任意点,到原点集中任
    意点的距离中,到该部分对应点的距离最小。输入落在Voronoi图的一个部分,则量化为
    该部分对应的量化点。
    
    一条思路,是通过定位输入属于Voronoi图的部分来定位量化点。难点在高维Voronoi图
    的生成和描述。
    另一条思路,是启发式的,将Voronoi图中相邻的部分对应的量化点作为邻居形成图,从
    图中任意点,可启发式搜索到目标量化点。难点在高维Voronoi图的生成。
    还可以用一般的计算几何结构,将量化点基数排列,首先排除离得比较远的点。难点在
    高维空间分划的储存量巨大,很难降低。
    所以最常用的方法,是逐个判定求最近。VQ的目标是压缩,所以量化点集总不会太大。
    
    --
    
        不管我活着
        还是我死去
        我都是一只牛虻
        快乐的飞来飞去
    ※ 来源:·瀚海星云 bbs.ustc.edu.cn·[FROM: 118.112.13.176]