zz[读书笔记]《Interpretable Machine Learning》

[读书笔记]《Interpretable Machine Learning》

Jul 19, 2019

看到这本书,特意翻了下微博妖僧老冯_之前的一条微博,这样写道:“在机器学习里,Explainable 和 Interpretable 是不一样的。Explainable ML指的是构建另一个模型来解释一个黑盒模型,而Interpretable ML指的是模型本身在设计的时候就具备解释自己的功能。 ​​​​”

所以,乍一看书名,齐了。暂且不去纠结到底该用哪个术语来表达问题,专注一下内容。想到上个月在微博乱写,“当谈到解释性时,都在讨论什么?[doge]决策树,线性(Logistic)回归,Attention,Conv可视化,知识图谱(表示和推理)… ​​​​”,恰巧看到这本书,就简单浏览一下,写了点笔记。

0.可解释方法的评判标准

第一个角度:intrinsic or post hoc?

intrinsic是指:模型内在具有可解释性。比如一个决策树模型。这类模型一般称为intrinsically interpretable models。

post hoc是指: 先去训练一个黑盒模型,比如一个深度模型,然后应用一些可解释性的方法,比如度量特征的重要性。故又称之为model-agnostic interpretablility methods。

第二个角度:outcome of the interpretability method

从解释性的输出来判断,可以输出为特征重要性统计,可视化,输入/输出对的分析等。

个人理解,能够从第一个角度做区分就可以了。那么知道如何区分之后,就可以具体看看这件事如何做了?分为三个路子,具体如下。

1.intrinsically interpretable models

具体包括Linear Model, Logistic Regression, Decision Tree, Decision Rule(if-then), RuleFit(不严格地,可以当成Tree来理解),Naive Bayes, K-Nearest Neighbours等。

2.model-agnostic interpretablility methods

好的的model-agnostic explanation system的三个特点:

(1)model flexibility: 不但对随机森林适用,同样适用于深度模型;

(2)explanation flexibility: 不受限于特定的解释形式,可以是线性,树形,和图;

(3)representation flexibility: 用来解释的特征表示形式是灵活的;

具体可用的方法包括如下:

第一:partial dependence plot

也就是衡量单一特征对output的影响。

第二:individual conditional expectation

衡量特征变化和实例预测输出的关系。

第三:feature interaction

第四:feature importance

三和四不做过多说明了。

第五:global surrogate models

这个比较有意思一些。用全局代理模型来解释一个黑盒模型。也就是用相同的数据训练一个intrinsically interpretable model,比如决策树等,假设输入和预测相同,就可以通过这个容易解释的模型来解释黑盒模型

第六:local surrogate models

整体思路同上,不过是基于感兴趣样本进行的。通过距离感兴趣样本附近的一些样本上重新训练一个容易解释的模型来实现目标。

第七:shapley value explanations

与博弈论有关的一个方法。每个特征是’game’中的一个’player’,预测是’payout’,通过shapley value可以告诉我们怎样公平地将’payout’分布到每个’player’上。

3.example-based explanations

第一: counterfactual explanations

第二: adversarial examples

对抗样本和反事实解释的方法类似,目的不同。前者希望构造样本去欺骗一个模型,后者希望去解释一个模型。不过对模型理解都是可行的。

第三: the cybersecurity perspective

与黑盒模型的攻击和防御相类似的是,网络安全的攻防。

第四: prototype和criticism

prototype是数据中最具有代表性的样本,criticism是数据中最不具有代表性的样本,后者对与insight的提供非常有帮助。

第五:influential instances

一些样本从训练数据中删除之后,对模型的参数影响较大,该类样本就是influential instances了。

总结:个人理解,对于容易解释的模型,一种是直接使用,另一种是辅助黑盒模型的解释。那么除此之外,对于黑盒模型的解释,可以“推推动动,拨拨转转”。需要考虑“推”什么?“拨”什么?这个可以从样本和特征的维度来做。“动”成什么样了?“转”到哪儿了?可以通过可视化的方式来做。目的是考虑“如何动”?和“如何转”?函数表达以及可能的因果关系。

这篇笔记中讨论了很多可行的方向。多数情况下,个人觉得比较实际的是做Case分析带来一些insight,有助于过程迭代,模型改进,模型解释。

参考:

1.书的地址

开源图书,同时有售卖。整体上的一个感受是,内容组织上有些乱,不过算是相对全面的该方向上的总结。


ZHPMATRIX blog

关于我

  • Jul 28, 2019[知识图谱]开放域信息抽取 
    关系抽取可以预先定义schema,这是目前的一种主流做法。但是同样在一些场景下,可以不预先定义schema,称为开放域信息抽取。在自己之前的工作中,多数做了前者,但是目前的一个工作,可能后者更加符合需求,因此这篇博客主要调研相关工作。
  • Jul 22, 2019[比赛]用两种思路解2019之江杯的电商评论观点挖掘问题 
    2019之江杯全球人工智能大赛的电商评论观点挖掘任务为例,讨论一下对如何建模的思考。
  • Jul 19, 2019[读书笔记]《Interpretable Machine Learning》 
    A Guide for Making Black Box Models Explainable
  • Jul 18, 2019[PyTorch]PyTorch用于大模型训练 
    梳理有助于大模型训练的一些方法,具体包括混合精度加速,XLA加速,分布式训练,梯度累积,梯度Checkpoint相关技术。
  • Jul 14, 2019[论文笔记]《A Brief Introduction to Weakly Supervised Learning》 
    data hungry场景下,也许需要弱监督。
  • Jul 3, 2019[Python]Python高级编程 
    《Effective Python》笔记
  • Jul 3, 2019[Pytorch]forward中的复杂tensor操作 
    收集了一些在模型实现中可能会遇到的一些不太好写的tensor操作,后续持续补充中。
  • Jul 1, 2019[Pytorch]基于混和精度的模型加速 
    pytorch中基于apex使用混合精度加速的四个步骤,原始非apex加速代码也可以做对应的修改,体验fp16可能带来的加速效果。
  • Jun 30, 2019[知识图谱]神经关系抽取 
    总结18年,特别是19年到现在的一些关于实体识别和关系抽取的工作。其中多数是自己在近期的工作中主要参考实现并且证明有效的工作,算是对近期工作内容的一个总结。
  • Jun 30, 2019[NLP]模型实现中的Debug问题 
    《Troubleshooting Deep Neural Networks-A Field Guide to Fixing Your Model》的tutorial笔记
  • Jun 29, 2019[ML]P, R, F1, 啥是micro,macro和weighted avg? 
    sklearn.metrics中提供了多个计算classification相关任务的评估指标,一些函数功能类似,例如f1 score,precison recall fscore support和classification report等。此外,版本不一致情况下,函数的计算输出也不一定相同。
  • Jun 5, 2019[NLP]snorkel相关论文阅读 
    snorkel是一个框架,通过该框架可以用弱监督的方式产生数据,减少人工标注的数据缺失的问题,尤其适合于信息抽取任务。
  • May 6, 2019[NLP]神经网络的Low-Memory技术 
    这是一篇技术报告笔记,讨论了训练神经网络时能够减少memory的技术,同时讨论了该技术与模型最终效果的影响。
  • May 4, 2019[技术沉思录]从中文纠错技术中所想到的 
    从去年实习开始着手做中文纠错技术,到现在拥有一个线上可用的模型(其实还很不错)。期间做了一些有意思的探索,形成了一些新的思考和感悟。这篇博客不是一篇技术文章,姑且算是一篇杂谈吧。
  • Apr 26, 2019[NLP]sentencepiece 
    无监督分词器的对比,两个subword算法以及tensor2tensor中subword的实现思路,以及讨论一些subword regularization的东西,其中sentencepiece中某些部分的理解需要去读源代码中的注释才行。
  • Apr 23, 2019[tensor2tensor源码阅读]目录结构和部分重点参数讨论 
    去年对比opennmt-py和tensor2tensor,但是只是写了opennmt-py的源码结构,并没有梳理tensor2tensor的结构,最近刚好重启一个大实验,组里同学也在做相关的事情,因此借此机会重新梳理一些关于tensor2tensor的内容。
  • Apr 4, 2019[NLP]pycorrector统计语言模型部分源码阅读 
    统计语言模型用于中文纠错,这部分代码可能有一定的启发性。
  • Mar 30, 2019[生活]七年学生生涯总结(本科+研究生) 
    一般这样的总结都是在大论文的致谢部分,但是在大论文的致谢部分,有些内容总是不能够客观的去写。此外,这样的总结适合在参加完毕业典礼的时候写,但是估计那个时候情绪复杂也难以冷静的思考,从而给自己一个客观全面的总结,因此索性就放在博客中吧。
  • Mar 25, 2019[NLP]扫盲-搜索,广告和推荐 
    电商领域三大应用,搜索,广告和推荐,估计很大一部分NLP从业者在做相关业务。因此,有必要给自己扫个盲。
  • Mar 13, 2019[NLP]Rethink系列-Transformer 
    梳理一下Transformer实现时的一些基础问题。
  • Mar 11, 2019[PyTorch]默参都是全局的,局部学习率调度和局部梯度Clipping,咋搞? 
    PyTorch中模型分层设置学习率和灵活的梯度操作,比如梯度Clipping问题。
  • Mar 11, 2019[PyTorch]CNN系列接口Highlights 
    讨论PyTorch中与CNN实现相关的接口,包括Conv层,Pooling层,Normalization层和Dropout层,Padding层。
  • Mar 9, 2019[PyTorch]直观认识torch.jit模块 
    在之前的一篇博客中讨论了PyTorch的C++前端,而这篇文章是关于PyTorch模型部署的第二篇博客,用具体的代码讨论了Tracing和Script两种方式的区别和联系。
  • Mar 9, 2019[PyTorch]代码复现时的拦路虎-维度操作 
    可能是多数萌新在代码复现时遇到的最大的问题,shape不对齐。这篇博客目的就是讨论这些基础操作,以求复现时的随心所欲。
  • Mar 8, 2019[NLP]聊一聊,预处理和数据增强技术 
    这篇博客梳理了NLP中英文的预处理方法和一些通用但是实现成本不高的数据增强思路。
  • Mar 7, 2019[PyTorch]RNN遇上PyTorch 
    解释了PyTorch中RNN系的参数,输入和输出。接口包括两类,分别是多层结构和Cell结构。相比于Tensorflow中的多个版本实现,PyTorch中的要清晰很多。
  • Mar 2, 2019[NLP]NAACL2019论文马拉松 
    NAACL2019论文接受列表放出来了,照例要通读一下题目,选一些自己喜欢的文章读一读。
  • Mar 1, 2019[PyTorch]PyTorch的C++前端和模型部署 
    PyTorch1.0发布后,PyTorch的春天似乎就到了。在此之前,关于PyTorch的吐槽主要集中在不适用生产环境,个人认为某种意义上就是缺少C++的前端。最近用PyTorch复现一篇文章,顺道考察了一下C++端的应用。是的,我从没有喜欢过Tensorflow。
  • Feb 16, 2019[NLP]论文阅读-《Language Models are Unsupervised Multitask Learners》 
    GPT-2的论文阅读,陈述了主要内容,比较了实验结果,并提出了关于该模型的几点思考。
  • Feb 5, 2019[NLG]论文阅读-《Generating Sentences from a Continuous Space》 
    主要从贝叶斯角度讨论了VAE的目标函数的由来,分三步由浅入深讨论VAE,同时给出了VAE应用于文本生成任务的工作。
  • Feb 4, 2019[NLG]论文阅读-《SeqGAN:Sequence Generative Adversarial Nets with Policy Gradient》 
    NLG的几个思路:GAN,VAE,RL,其他和流模型,之所以将流模型放在最后,是因为目前还没有看到流模型用于NLP的任务。
  • Feb 2, 2019[NLG]论文阅读-文本风格迁移 
    慢慢地需要从自然语言理解过渡到自然语言生成,生成的应用场景较广,值得关注。这篇博客是最近读的几篇文章的一个论文笔记,主要目的是帮助自己建立一个对风格迁移任务的印象。
  • Feb 1, 2019[OpenNMT]OpenNMT中Attention相关参数 
    对opennmt-py中的train模块与attention相关的参数进行了解释和梳理,官方文档确实写的比较落后。部分参数可能需要回到代码中,或者issues区才能理解。
  • Feb 1, 2019[NLP]中文拼写检纠错-和百度比一比 
    在文本纠错任务上,用自己的模型和百度API开放的接口测试效果对比。
  • Jan 31, 2019[NLP]Rethink系列-词法/句法/语义 
    这是一篇写给自己的扫盲短文。我们希望DL的方式能够获取语法和语义信息,但是评估的方式多是通过下游任务的性能,没有从过程上去分析是否确实获得了期望的语法和语义信息,个人对这种分析方式并不认同。直接对词法,句法和语义信息进行分析的技术作为NLP的底层技术,值得进一步探索和思考。
  • Jan 30, 2019[论文阅读]《A Neural Compositional Paradigm for Image Captioning》 
    NIPS2018的文章,用于解决Image Captioning问题,整体上没有采用端到端的思路,不过其中的语言生成策略或许有值得借鉴的地方。
  • Jan 29, 2019[NLP]Rethink系列-copy和coverage机制 
    从一篇论文出发,讨论了与attention相关的两种机制,这两种机制在opennmt-py中都有相应的实现,同时提了一些可以进一步思考的问题。
  • Jan 28, 2019[NLP]Rethink系列-seq2seq 
    主要是对encoder和decoder的一些想法
  • Jan 27, 2019[NLP]Rethink系列-CNN/RNN 
    对CNN在NLP中应用的方法,缺点,优点及其目前发展形势做的小思考。
  • Jan 27, 2019[NLP]Rethink系列-Attention 
    回顾了Bahdanau和Luong的工作,讨论了围绕self-attention的一点想法,重新思考了Transformer/BERT。
  • Dec 31, 2018[生活杂谈]二零一九,GO! 
    总结二零一八,迎接二零一九。
  • Dec 22, 2018[NLP]论文思考-神经机器翻译中的六个挑战 
    这篇博客是一篇为讨论班报告写的论文笔记,论文原题《Six Challenges for Neural Machine Translation》,时间2017年,作者来自JHU的Philipp Koehn等人。虽然有标题党之嫌,但是论文很实用。论文指出了NMT中的domain mismatch, amount of training data, rare words, long sentences, word alignment,beam search相关问题。
  • Dec 17, 2018[OpenNMT]训练模块源码剖析 
    讨论训练模块的相关设计
  • Dec 17, 2018[OpenNMT]预处理模块源码剖析 
    讨论预处理模块的相关设计
  • Dec 17, 2018[NLP]中文拼写检纠错 
    针对该任务,基于自己构建的数据集和相关评测方法,尝试的思路包括统计语言模型,序列标注思路,seq2seq思路,本文是对实验结果,数据选择,模型选择,框架选择的一个简单整理。虽然统计语言模型目前应用广泛,但是实验证明,基于序列生成的思路结果更好。这是一个有趣的问题,需要持续研究思考。
  • Dec 14, 2018[NLP]从一个例子谈DL论文的复现问题 
    针对EMNLP2018关于对话生成的一篇文章《An Auto-Encoder Matching Model for Learning Utterance-Level Semantic Dependency in Dialogue Generation》,对实验复现过程的讨论和思考
  • Oct 13, 2018[NLP]关于BERT的讨论 
    《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》论文阅读想法
  • Sep 28, 2018[生活杂谈]Eigen实习总结 
    围绕在Eigen的实习内容,回顾了任务分析,论文复现,拼写检查,经验教训四个方面的内容。讲述一个小白掉入NLP坑中的辛酸史。
  • Aug 27, 2018[NLP]全国第一届“军事智能·机器阅读”挑战赛 
    放在草稿箱好久的一篇调研,本来是为比赛准备的,Pipeline跑通之后因为各种原因没有时间继续调试。梳理了比赛任务,相关比赛和数据集,经典模型等。
  • Aug 26, 2018[DL]关于NLG的一个调研 
    调研了NLG的框架,主流方法,评估方法,业界落地情况等,没有好的评估体系和方法会制约NLG的发展,因此设计合理有效好用的评估指标是一个非常有挑战性的问题。
  • Aug 24, 2018[随想]机器学习开发沉思录 
    结合最近的项目,做一些关于机器学习系统开发的思考。我是个算法工程师,同时也是一个软件工程师。如果非要选,可能我需要首先是个软件工程师。
  • Jul 6, 2018[DL]CNN中的两个计算问题 
    CNN中感受野的计算和使用小卷积核的讨论,包括一些自己对于大小卷积核的理解和看法。
  • Jun 29, 2018[DL]Loss函数设计与优化 
    针对我们目前正在做的工作,图片难易程度划分。讨论损失函数从mse到kendall,从kendall到kl散度,再到一些新的想法。
  • Jun 25, 2018[DM]《推荐系统实践》读书笔记 
    一直对推荐系统保持好奇心,但是没有系统的读过推荐系统方面的资料。最近可能需要一些推荐系统的知识,所以花了一个下午和一个晚上的时间读了项亮的《推荐系统实践》这本书,这篇博客主要是读书笔记,有一些自己的认识和总结。
  • Jun 18, 2018[DM]IJCAI 2018阿里妈妈搜索广告转化预测 
    比赛复盘
  • Jun 14, 2018[Python]回调函数,线程安全,Monkey Patch和try/except使用 
    读了一份syncbn的代码,博文是对一些基本概念的回顾。
  • Jun 11, 2018[DL]余弦空间下的人脸Loss 
    梳理ArcFace,SphereFace和CosineFace的联系和区别,并提出一种更加general的想法
  • Jun 6, 2018[DL]关于样本的Hard和Easy的讨论 
    围绕CVPR2005,CVPR2016的两篇文章,hard negative mining, hard example mining, OHEM等,从prob和loss两个角度讨论,同时提了一些想法。
  • Jun 3, 2018[随想]《原则》读后感 
    《原则》是Ray DaLio的作品,RD是桥水基金的创始人,桥水基金是世界上最棒的对冲基金公司。自己是一个工程师,对量化投资所知甚少,幸好这本书不是一本专业书籍,还是找到了一些很有启发的观点。
  • May 15, 2018[C++]GDB调试 
    利用bt和f命令调试core文件
  • May 13, 2018[目标检测]不同角度认识坐标回归 
    坐标回归作为经典问题出现在检测任务中,这篇博客站在几何变换和数值优化的角度,尝试正推和逆推两个方向理解一下坐标回归,殊途同归。
  • May 12, 2018[目标检测]R-CNN 
    单独把分类器和回归器的训练数据构造过程拉出来思考一下,同时对比了Region Proposal和YOLO中Cell的联系和区别。
  • May 12, 2018[目标检测]重新思考YOLO的一些问题 
    这篇博客从整体上回顾了检测任务,通过梳理脉络,了解历史,重新发现并提出一些自己的思考。不会看到网络结构图,损失函数,各种参数介绍,这些并不是这篇博文的目的。
  • Apr 23, 2018[Caffe]Caffe修改源码支持多标签输入 
    通过修改Caffe源码的方式,使得Caffe可以支持多标签输入。同时给出了一个使用Caffe进行多标签训练的例子。附带讲了如何调试Caffe的CPU和GPU版本的源代码。博客中的例子已经分享到我的Github上了,还有训练数据。
  • Apr 21, 2018[Linux]Linux常用工具整理 
    系统梳理了自己在日常学习和工作中常用的Linux工具
  • Apr 16, 2018[学术报告]2018-JSAI模式识别专委会学术年会总结 
    关于JSAI学术报告的总结,反思
  • Feb 19, 2018[DL]经典目标检测论文阅读 
    春节假期在家简单梳理了一些目标检测领域经典的文章,每篇文章主要包括Contributions,可Follow方向,我的想法,参考文献四部分内容。随着阅读量的增加和阅读深度的增加,这篇博文会保持持续更新。
  • Feb 18, 2018[生活杂谈]京东实习碎碎念 
    打开京东ME,显示在职天数三十九天。
  • Jan 2, 2018[生活杂谈]聊聊二零一七半年纪事 
    我不禁想到,一代人的芳华已逝,面目全非,虽然他们谈笑如故,可还是不难看出岁月给每个人带来的改变。倒是刘峰和小萍显得更为知足,话虽不多,却待人温和
  • Dec 31, 2017[DL]扯扯神经网络的优化理论 
    深度神经网络的损失函数的非凸性讨论,局部最小值和鞍点理论,如何用可视化的方式讨论神经网络的损失函数
  • Dec 27, 2017[ML]机器学习模型关系分析和探讨 
    这篇博客梳理了机器学习常见模型之间的关系,涉及到从不同的角度看同一个模型,或者从同一个角度看不同的模型。
  • Dec 5, 2017[C++]map和set的坑 
    做题过程中遇到很多需要map和set处理的场景,这篇博客讨论map,unordered_map,set,unordered_set,unordered_multiset的区别和联系,以及背后的数据结构实现等。
  • Nov 24, 2017[算法设计]计算理论 
    带着一个LeetCode题目能否有一个形式化的数学描述,并且存在一个数学的解决方法,梳理了计算理论的基本概念,然而疑惑并没有得到解决。
  • Nov 14, 2017[Spark]Spark从入门到离家出走 
    这篇Blog是关于Spark的第二篇,主要回顾了三道题目,分别是词频统计,大文本去重和topK问题。同时在参考部分,列出了一些非常棒的参考资料。
  • Nov 14, 2017[Linux]Linux下的文本处理工具 
    在很多数据处理场景下,很多人倾向于屠龙刀和倚天剑,如果一不小心砍歪了,重新抡起刀剑砍就是了。但是如果砍一下的cost很大的情况下,不如用匕首补刀。而Linux下的文本处理工具就像这把匕首,更贴切的感觉像是一把瑞士军刀,小而功能齐全。
  • Nov 10, 2017[LeetCode]关于Gas Station的思考 
    Gas Station是一道Medium类型的题目,这篇Blog仅仅是对该题的一些思考,并不是一个答案解析的过程。
  • Nov 4, 2017[Python]用进程池Pool进行代码加速 
    给出了不使用成熟大框架spark和hadoop的前提下,如何发挥集群算力的解决方案的想法,分布式进程进行任务分配+单机多核多进程+单核协程(仿多线程),实际上比赛代码加速还是多进程好使,其他的技术可能只是讨论讨论
  • Oct 19, 2017[ML]AwesomeXGBoost-炼丹秘籍 
    这篇博客是为了配合组会做XGBoost的论文报告,包括XGBoost的基本超参数调节,自定义目标函数和度量函数,特征重要性,决策树绘制和保存,特征离散化。
  • Oct 19, 2017[ML]关于Blending和Stacking的讨论 
    这篇博客讨论了模型融合技术中的Blending和Stacking,分析了二者之间的关系,同时开了Stacking和神经网络的脑洞。
  • Oct 5, 2017[C++]从C++的字符串分割展开讨论 
    C++没有内置字符串的分割函数,惊不惊喜,意不意外?
  • Sep 30, 2017[ML]KNN实现过程中的编程复盘 
    这篇博客讨论了KNN实现过程中涉及到的排序和查找,TopN问题,词频统计等非常经典的基础问题,同时引入了heapq和Counter两个模块。
  • Sep 24, 2017[Python]记一次Debug经历 
    最近在备战PAC2017-AI组的决赛,下午写metric模块的时候,考虑到边界条件,必要时需要捕获除零异常。但是,在问题没有发现之前,怎么也捕获不到,这是为什么呢?
  • Aug 25, 2017[Python]利用statsmodels做数学建模比赛 
    最近备战华为杯数学建模竞赛,作为一个Pythoner,偏向于通过coding进行统计分析,主要是因为SAS和SPSS不会用,囧。
  • Aug 13, 2017[Python]pandas引用和复制的PK 
    经常会遇到一个warning,叫做SettingWithCopyWarning,本文尝试弄清楚pandas在各种场景下的引用和复制的问题,也就是view和copy的对比。
  • Aug 13, 2017[paper]针对密集目标检测的焦点损失函数 
    这是何凯明老师团队8月7日挂在arXiv的一篇文章,文章原名《Focal Loss for Dense Object Detection》,恰逢我们在做的一个NLP的比赛遇到不平衡问题,小林师兄就提到这篇文章,但是苦于BigDL有点儿坑,在自定义loss的时候学习成本略大,就没用到比赛中(其实就是懒),今天读读文章,还是有启发的。
  • Aug 12, 2017[比赛]PAC-2017比赛工具篇-Spark 
    全国并行应用挑战赛之人工智能组的赛题:基于NLP的金融营销活动情感分析,指定关于开源库为Intel开发的基于Spark的BigDL,这篇文章回顾了比赛中使用Spark进行数据预处理的代码细节。
  • Jul 30, 2017[生活杂谈]写在回家之前-研一下半学期总结 
    冒冒问我,看过冒险小虎队没?我说没。以前回家会带一些技术方面的书,CSAPP的第二刷就是寒假在家完成的。这次,我又是带了一箱子的书,嗯,皮皮鲁,舒克贝塔。
  • Jun 29, 2017[ML&DL]xgboost自定义目标函数和评估函数 
    在有些比赛中,需要根据自己的需求来自定义目标函数和评估函数,就自己而言,目标函数需要自定义的场景不太多。为了充分发挥xgboost的框架作用,很多时候自定义评估函数的需求相对强烈。
  • Jun 27, 2017[DL]LeNet的网络结构分析 
    文章通过梳理一个具体的网络结构LeNet,计算参数数量和连接数,分析卷积核和下采样核等,感性的认识网络结构的建立,同时给出了自己的判断。
  • Jun 26, 2017[C/C++]细数二维数组的坑 
    在LR的MPI实现中,吐槽了使用Eigen在消息传递中的不方便之处。在RDPSO的优化实现中,采用原生二维数组,本文是关于二维数组相关的坑的总结。
  • Jun 26, 2017[Linux]Linux编译安装 
    linux环境下的编译安装相关,文中结合自己日常run代码和使用开源工具的经历,总结需要的编译安装知识,不是所有的问题都可以apt-get,yum,pip,brew等来搞定,必要时还是需要编译安装。
  • Jun 22, 2017[ML&DL]用图分割的方式加速随机漂移粒子群优化算法(RDPSO) 
    嗯,这个事情应该没有人做过滴,因为老板是RDPSO主要发明人呀。本文简要谈RDPSO的加速计算,主要涉及MPI的通信函数梳理和一些基本且重要的概念。
  • Jun 18, 2017[DL]关于tensorflow和keras的思考点 
    图计算,静态图和动态图,符号计算
  • Jun 15, 2017[paper]关于K-means变种的论文阅读 
    K-means是特殊情况下的高斯混合模型,关于K-means的各种改进论文,看作者看会议,真的有意思。K-means看似逻辑简单,关于该算法的研究一直没有停止过,ICML 2017就有三篇
  • Jun 14, 2017[ML&DL]基于图的目标函数分解策略 
    自然科学基金项目,求解大规模数据分析中复杂优化问题的演化算法研究中的一个比较基础的问题,想法是将原目标函数分解成多个子目标函数的和的形式,每个子目标用节点表示,两个子目标的共享变量用边表示,合作协同演化。
  • Jun 1, 2017[ML&DL]啊哈,CNN! 
    趁着跑Eve代码的时间,读了一些关于CNN的东西,在这之前,只在组会上听实验室的师兄师姐聊。可能会看到一些关于R(2)NN,LSTM的一丢丢东西。
  • May 27, 2017[paper]ICML 2017论文马拉松 
    给浏览的ICML 2017的论文做一个笔记,由于文章太多了,只选择了我自己感兴趣的领域去读。
  • May 17, 2017[Optimization]针对非凸优化的递归分解 
    这是一篇不太详细的论文笔记,来自IJCAI2015 BestPaper,Pedro Domingos的作品,《Recursive Decomposition for Nonconvex Optimization》文中提出了RDIS算法。
  • May 15, 2017[DL]深度学习Eve折腾记 
    本文是围绕Eve的算法实现折腾过程,也是自己跑的第一个深度学习实验。主要是验证自己的一个想法,是对Eve中的Clipping操作的一个替代
  • May 11, 2017[ACM]并行与问题分解技术 
    老板给了一篇IJCAI2015的BestPaper,Pedro Domingos出品,针对Non-Convex问题的递归分解。网上关于这篇文章的讨论不太多,在读这篇文章之前,先讨论一个ACM题目,涉及一些关于递归,加法原理和如何进行问题分解的思考。
  • May 6, 2017[Optimization]一入优化深似海,从此Coding是路人 
    这是一篇我读到的比较好的优化的资料整合,可能包括博客,微信公众号,某些论文,某些书中的对某个问题的总结等。采用的形式是提出问题,解决问题的资料来源,和自己对于资料的评论,可能包括资料中某些小的错误瑕疵。
  • May 5, 2017[Optimization]基于反馈的随机梯度下降算法 
    《IMPROVING STOCHASTIC GRADIENT DESCENT WITH FEEDBACK》算法复现记录,这是一篇来自ICLR 2017的顶会论文。同时提出了自己针对这篇论文的分析和想法,以及进一步follow的做法。
  • May 4, 2017[Life]关于学术/竞赛资源的想法 
    和周围同学聊天,有几个同学问起我所使用的学术资源,这里简单做一个总结。
  • Apr 12, 2017[Optimization]Deep Learning中的梯度下降优化算法 
    在之前的文章中聊过SGD的各种优化算法,Bottou对Deep Learning中的优化只是做了很少一部分的阐述,这里关注在Deep Learning中的梯度优化。
  • Apr 10, 2017[Optimization]LASSO回归的优化求解 
    LASSO目标函数非光滑,不能使用基于梯度的方法。基于坐标下降并行求解LASSO,已经有很多文章,自己花了三天时间想去努力设计一个基于LARS并行的方案,无功而返。但是不论怎样,还是要聊聊LASSO问题的求解。
  • Apr 8, 2017[Optimization]大规模机器学习优化算法的想法启发 
    花了两周多时间读Bottou的93页的《Optimization Method for Large Scale Machine Learning》,这里总结一下文中提到的可能的想法
  • Apr 6, 2017[Optimization]SGD的regret bound分析 
    从一个bound的推导来感受优化中的数学,SGD的次线性收敛来源。
  • Apr 1, 2017[ML&DM]GBDT-下里巴人版 
    XGBoost是GBDT的高效实现,本文用一个简单的例子说明GBDT工作方式,尽量不堆公式。同时关于XGBOOST,给出了几个经典的问题,关于XGBOOST在实现上可能带有作者们自己的偏好,不管怎样,从比赛和项目使用来看,效果很不错。
  • Mar 20, 2017[ML&DM]sklearn中的并行和串行 
    聊聊pipeline,featureunion,gridsearch等话题
  • Mar 15, 2017[groot]xgboost源码阅读-启动过程 
    这篇短文聊聊xgboost的启动过程,其中包括对rabit的介绍,启动流程等,rabit在之前的文章中也有提到过。
  • Mar 14, 2017[分布式]逻辑回归并行化 
    讨论了并行化的一些话题,对于逻辑回归用于分类问题,采用MPI进行并行化,优化过程采用批量梯度下降(BGD)
  • Mar 6, 2017[分布式]矩阵乘法的分布式实践 
    MPI负责管理节点和计算节点通信,OpenMP负责计算节点并行加速,给出了并行加速比和效率曲线
  • Feb 24, 2017[Python]深入理解数据结构 
    回顾了关于copy的坑,常用数据结构的时空复杂度,同时结合CS231n的视觉课程做了python基础的review。
  • Feb 22, 2017[Python]后知后觉函数式编程 
    文中主要谈了匿名函数,filter,map,reduce等,同时给出了一些短小精美的代码。
  • Feb 22, 2017[Python]若干有意思的知识点 
    鸭子类型,装饰器,闭包,生成器
  • Feb 21, 2017[比赛]天池比赛-口碑商家客流量预测(思路梳理) 
    这是一篇比赛中途的思路梳理,回顾了比赛方案设计,具体包括特征工程,模型融合,代码加速三部分,以期从过去激发新想法。
  • Feb 20, 2017[paper]Learning from Imbalanced Data 
    解决数据不平衡问题的一篇论文笔记
  • Feb 19, 2017[比赛]天池比赛-口碑商家客流量预测(代码加速附加) 
    在代码加速篇中谈到了多线程和多进程的方式,并提出了分布式的设想。本文在设想基础上,给出了更加详细的描述。
  • Feb 19, 2017[比赛]天池比赛-口碑商家客流量预测(代码加速篇) 
    比赛还未结束,目前排名前15%。利用周末时间,进行代码复盘,重点在代码加速方面,稍后会给出我们的设计思路。
  • Jan 9, 2017[C++]shared_ptr 
    xgboost中对于智能指针的使用,主要有两个shared_ptr和unique_ptr。这篇文章是对shared_ptr的理解和典型使用场景说明,以读懂xgboost源码中的使用场景为目的。
  • Jan 9, 2017[C++]unique_ptr 
    xgboost中对于智能指针的使用,主要有两个shared_ptr和unique_ptr。这篇文章是对unique_ptr的理解和典型使用场景说明,以读懂xgboost源码中的使用场景为目的。
  • Jan 9, 2017[groot]xgboost源码调试 
    mac中使用lldb调试器在vim中调试xgboost的c++源代码,其中xgboost为单线程版本
  • Jan 8, 2017[C++]聊聊const 
    放眼望去,xgboost源码尽是const。合理使用const,是编程质量高的一个表现。谁说的,出来,我保证不给他鼓掌。隐藏保证数据安全性,共享破坏数据安全性。
  • Jan 7, 2017[C++]工厂设计模式 
    最近读xgboost源码,在目标函数设计时,contributors们采用了工厂设计模式,这个技能点有没有Get到?
  • Dec 31, 2016[Life]写在2016年最后一天 
    2015年,人生中艰难的一年,举步维艰。2016年,自己是幸运的。2017年,没有什么大的梦想,只愿世界 和平,编程没有野指针
  • Dec 28, 2016[C++]STL陷阱 
    一次关于erase的踩坑经历
  • Dec 25, 2016[groot]数据概貌 
    行动之前看数据
  • Dec 22, 2016[CV]图像处理知识框图 
    马上就是圣诞节了
  • Dec 21, 2016[Python]绘图简化 
    收集主程序待输出数据,统一绘图
  • Dec 20, 2016[CV]形态学与图像 
    关于冈萨雷斯《数字图像处理》课后一道习题的想法
  • Dec 5, 2016[ML]模型选择 
    偶然间看到余凯在某次工业界报告中谈到误差,就想写点关于模型选择,偏差方差均衡,交叉验证之类的东西。
  • Dec 4, 2016[Python]编程复盘 
    BP算法实现后的想法
  • Nov 10, 2016[ACM]从最优装载看贪心 
    贪心选择证明和最优子结构证明
  • Oct 28, 2016[ACM]NP问题和近似算法 
    计算理论和几个近似算法的讨论(非数学)
  • Oct 11, 2016[C++]两个tricks 
    尾递归和回溯
  • Oct 8, 2016[ACM]再聊动态规划 
    从问题中验证思想
  • Oct 7, 2016[C++]尚方宝剑之右值引用 
    C++11新特性
  • Oct 7, 2016[ACM]浅聊算法思想和策略 
    大多时候的我们对于算法思想(策略)只是看起来明白了而已
  • Oct 6, 2016[C++]一个关于写时Copy的问题 
    室友发现了C++的一个大Bug!
  • Oct 5, 2016[C++]聊聊size_t 
    最熟悉的陌生类型声明
  • Sep 10, 2016[*]开博语 
    总要写点文字来点缀生活,无论是数学,文学还是其他
  • ZHPMATRIX blog

A master in computer science


原文地址:https://www.cnblogs.com/cx2016/p/12926192.html