我微博每周读论文列表
#每周读论文# 1、Parameter estimation for text analysis很好的介绍了参数估计的方法:最大似然、最大后验、贝叶斯估计,以及以LDA为例的文本参数估计方法以及Gibbs sampling实现。
#每周读论文# 2、A 250-year argument:belife, behavior, and the bootstrap,今年贝叶斯法则250周年,斯坦福Brad Efron大师的对贝叶斯派和频率派反思,从ML到MAP到贝叶斯方法到经验贝叶斯娓娓道来,反思了贝叶斯派和频率派argue的主要的地方以及有缺点, 以及从bootstrap到gibbs sampling逐渐成为主流。
#每周读论文# 3、A gradient boosting machine:Adaboost通过每次调整训练错误样本的权重,最后多个模型组合;Gradient boosting的方式,则每次梯度下降的方向最小二乘法参数化求解base learner参数,然后单个参数的线性搜索。不同的损失函数:LS拟合残差、LAD加权中值。当然TreeBoost是本文的重点。由于梯度gm只在训练集上的点有定义,无法推广到其他点,所以基于这些点,使用梯度gm在这些点平行的方向,进行拟合受限的base learning参数,从而达到梯度下降的目的。
#每周读论文# 4、Bagging Predictors: 从bootstrap sample很自然的延伸的模型组合方法,从训练集使用repeat bootstrap sample出来不同的sample集合,学习出不同的模型,对于回归,对结果取平均值,对于分类,进行投票。对数据集不稳定的模型,通过减少方差,提高 精度。相比Adaboost,后者还能减少偏置。Bagging对于决策树、神经网络等对于数据集敏感的模型,效果比较好,而对于KNN、decision stump简单稳定的模型效果没有什么提高。Adaboost对于decision stump有非常大的提升。Ensemble的方法基本都是构造variance比较大的Expert模型,不同的Expert擅长不同的领域,然后进行combine。而随机森林的方法是非常擅长搞出variance的模型,所以效果非常好。
#每周读论文# 5、Classical Probabilistic Models and Conditional Random Fields:主要从NB、HMM、ME、CRF由浅入深,从生成模型和判别模型以及概率图模型角度介绍,推导非常细致,特别是ME和CRF。但我赶脚 CRF最好的理解方式还是在序列标注对ME扩展上理解更加自然,对照着CRF++的template一切就明了了。当然ME和CRF最大的优点是能够利用global feature,非常方便集成各种特征。
#每周读论文# 6、Active Learning Literature Survey:主动学习主要是为了减少人工标注,特别是比较难标注情况。主要包含1)unlabel数据的生成方式:membership query synthesis样本可生成特定label的样例;Stream-based依次生成一个sample,决定是否query,pool-based从样 本池中query;2)Query策略:主要包括不确定性、QBC、期望模型改变、期望错误减少、期望方差减少。能提供概率值或者score的算法中不确定性是个比较简单易行的 策略,主要衡量方法有:LC(1-max(p)) MS(max1(p)-max2(p))、信息熵,非概率模型的,比如svm可以利用距离决策边缘距离来衡量。QBC有点像Ensemble学习方式,利用训练的多个模型,进行投票决定,模型投票最不一致的进行query,计算不一致性主要有:vote熵,平均KL距离。
#每周读论文# 7、A Maximum Entropy Approach to NLP:最大熵模型非常好的优点容易集成各种特征,这些特征通常都是一些约束条件。本文开始由浅入深介绍最大熵模型,展示了该模型如何将特征选择和模型选 择统一起来,然后以统计翻译模型、句子分割为例介绍了利用最大熵解决NLP问题,如何集成各种feature。
#每周读论文# 8、Probabilistic Latent Semantic Analysis: PLSA和LSA相比提供了更好的概率解释:topics、词在topics概率分布,可以解决多义词问题,PLSA的EM算法比SVD更高效。和聚类相 比,聚类一个文档一个隐含类别,假设整个文档集是某一种分布。文中还提出了TEM算法,添加正则化,增强泛化能力。最近的LDA只是在PLSA的基础上,添加了贝叶斯先验,然后使用贝叶斯估计的方法求解模型参数。LDA和PLSA可以看做贝叶斯和频率派对同一模型的不同的inference。所以理解PLSA是理解LDA的基础。
#每周读论文# 9、A study of smoothing method for language models Applied to ad hoc information retrieval:语言模型在语音识别和机器翻译、IR广泛使用,效果的好坏直接和平滑的效果相关,所谓的平滑指为了克服数据稀疏性导致的最大似然的不 准确性(未出现的词估计为0)。常用的方法从简单的拉普拉斯平滑、插值方法到Good-Turing,本文主要以IR为背景,所以主要介绍了一元语言模型的平滑方法。主要是使用文档集的语言模型和文档语言模型进行插值平滑,主要对比了三种方法:Jelinek-Mercer,贝叶斯的Dirichlet先验的Dirichlet方法Absolute discount在IR中的performance。本文还介绍了语言模型的IR和基于空间向量tf-idf之间背后的联系
#每周读论文# 10、Architecture of a Database System: 从数据库的架构介绍了数据库的各个核心组件,从进程/线程模式、分布式结构、Query解析/rewrite/优化、存储管理、事务控制到公用组件内存管理等,以商业级数据库Oracle,Mysql,Postgreql,DB2等为例介绍了其实现模式和取舍,在理论和实践上很好的统一。进程模型:如果放在今天,讨论进程还是线程模型,我想大多数人设计数据库的人都会选择线程模型。为什么功能强大的Oracle和PG选择进程模型,主要有 两方面原因:一、当时的线程在各个OS支持和性能上参差不齐,线程模型和API各个OS各异;二、Oracle和PG面向企业级复杂SQL处理为主,高并 发并不是主要的需求。相反Mysql等主要面向互联网应用,高并发是其主要的优势,互联网应用以简单的SQL为主,所以mysql虽然对复杂SQL优化很差,但线程模型的连接开销很低和连接数支持更多,简单多次查询不是问题。查询优化:Oracle倾向于提供可预期的优化,很少进行self-tune,而SQL server提供了很多self-tune的优化。主要原因是Oracle的用户以高端用户为主,对调优很擅长,而SQL server的用户比较低端一些,很少调优或者不擅长调优,所以SQL server提供了很多自动调优,虽然不能达到最优的效果,但方便了用户。OS buffer的问题:使用OS buffer难以保证数据库的ACID,从性能上OS buffer的read/write ahead功能通常难以满足数据库的需求,OS的read/write ahead通常是物理位置的连续,而DB通常是逻辑上的顺序读B+数叶子节点的数据。Query Plan能给出很好的逻辑预测。所以DB 的buffer pooling要比OS buffer性能更好。另一方面,启用OS buffer,双buffer模式很浪费内存,导致内存数据的copy是性能上很大的瓶颈,copy数据浪费cpu时钟周期,冲掉cpu cache。另外OS的buffer的页面替换机制:LRU管理和CLOCK对于DB来说性能很差。比如数据库进行table-scan,可能导致buffer无法放下所有的数据,而LRU没有把scan不符合条件的淘汰掉,而是旧的但被很多地方经常使用的数据给淘汰了。而DB的buffer管理,通常采用更适合数据库的LRU2或者其他的淘汰机制。所以通常禁用OS buffer,而操作系统通常提供了hooks,可以指定使用Direct I/O,还是concurrent I/O。
#每周读论文# 11、Near-optimal Hashing Algorthm for approximate nearest neighbor in high dimensions:介绍高效的查找近邻元素的局部敏感hash近似方法,给出了局部敏感hash的定义和算法,介绍了LSH库提供的基于汉明距离、l1,Jaccard、欧拉距离算法。Mining of massive dataset这本书的也有很好的介绍。
#每周读论文# 12、matrix factorization techniques for recommender system: 推荐系统常用的算法基于内容、协同过滤、矩阵分解。基本的矩阵分解算法使用向量q_i关联物品和p_u关联用户,r_ui=q_i*p_u表示二者交互, 优化函数least square+l_2 normal,使用sgd或者交替least square进行优化。矩阵分解相比协同过滤的优势是更容易集成各种数据和特定应用的需求。比如除了交互的建模还有用户和物品本事的偏置,有的人倾向于给高分,有的物品容易得到 更高评价。添加上这两个偏置和平均分进行建模会更加健壮。另外系统是动态变化的,物品偏置、用户偏置以及用户喜好随着时间变化,这些参数集成进来。
#每周读论文# 13、A Tutorial on Spectral Clustering:谱聚类相比k-means能更好的发现非凸的聚类,而且无论在effective还是efficient都更好,算法也简单。其背 后的理论也有意思,先把聚类的点转化成相似矩阵,然后计算graph Laplacian 矩阵特征值,最后对特征值最小的k个特征向量排列之后的行做k-means。 其理论和图切割有很大的渊源,等价于最小化Ratio Cut 、Normalized Cut(本身是NP问题)的放松条件(去掉离散值的限制)的优化问题,优化的原理和Rayleigh quotient 相关,还可以利用马尔科夫随机游走的理论构建相似矩阵,对Ncut进行了概率的解释。从直觉上看,除了从图切割上比较容易理解,从相似矩阵的角度上,SC能把相似的元素reorder搞成各个block,然后这些block就是不同的聚 类。SC在图像分割上有广泛的应用。虽然可以处理高维问题,但是构造N*N相似矩阵仍然是个限制,像对于处理社交图谱这样大的图,很难scale。直观上谱聚类和基于密度聚类(比如DBSCAN)有一些相似的,形成的聚类形状可以是任意的,利用相邻点 空间的可达性(SC根据相似度形成的图定义可达性,DBSCAN基于密度定义可达性-纯空间上的)。DBSCAN是一个基于local密度可达进行扩展的 贪心算法,SC是Global优化问题。从kernal方面来理解,SC先进行kernel变换,然后使用k-means聚类,其本质是一种 weighted kernel k-means,我们常用的一些kernel方法,把低维空间线性不可分的点变换成高维空间就线性可分了。而SC则把一些聚类形状上非凸的k-means 比较难处理的,变换到另一种空间,这个空间下形状是容易聚类凸的块状