程序的表示、转换与链接 - week7
本文是 程序的表示、转换与链接 中第 7 周的内容,主要介绍了 C 语言程序中过程调用、也就是函数调用对应的机器级表示, 包括如何传递参数,如何将控制转移到被调用过程, 寄存器使用约定,递归函数的实现等等。 通过了解这些内容,能够更清楚机器执行的详细过程,同时也能更清楚函数调用过程中栈空间是如何变化的;课程选用的指令系统是前面介绍过的 IA-32 指令系统。
本文是 程序的表示、转换与链接 中第 7 周的内容,主要介绍了 C 语言程序中过程调用、也就是函数调用对应的机器级表示, 包括如何传递参数,如何将控制转移到被调用过程, 寄存器使用约定,递归函数的实现等等。 通过了解这些内容,能够更清楚机器执行的详细过程,同时也能更清楚函数调用过程中栈空间是如何变化的;课程选用的指令系统是前面介绍过的 IA-32 指令系统。
Real-time Personalization using Embeddings for Search Ranking at Airbnb 是 KDD 2018 的 best paper, 整篇文章读下来,初看好像只是套了 word2vec 来生成 user embedding 和 item embedding;但是细读下来,会发现其中有不少细节值得考究,这种风格跟 youtube 在 2016 年发表的那篇 Deep Neural Networks for YouTube Recommendations 很像,两篇都是实践性很强的 paper,非常值得看。而且两篇文章分别代表着 deep learning 中生成 embedding 的两大流派:无监督和有监督。本文主要讲的是 Airbnb 的这篇 paper 的基本做法和一些细节。
本文是 程序的表示、转换与链接 中第 5、6 周的内容,主要介绍了程序和指令的关系,目标文件的基本格式,并详细地介绍了 IA-32 体系下的指令系统,包括各种指令的类型、指令执行的基本流程,通过以上内容可以对计算机内部如何执行程序有一个感性的认识。
本文是链接、装载与库中关于可执行文件装载的过程,主要描述了进程在被装载时虚拟空间是如何分布的,物理内存空间与虚拟地址空间是如何映射的,同时描述了 Linux 系统下装载一个可执行文件的基本过程。
本文的内容主要是 程序的表示、转换与链接 这门课第二周的内容,主要介绍了浮点数和整数在机器内如何编码和存储 (大端和小端) 的,了解这些细节后,能够更好地理解代码中进行数值计算和比较时出现的违反直觉的结果,同时也能避免出现这样的问题。
一直对以 C/C++ 为代表的的编译型语言的编译、运行的原理了解不多,最近正好看到这本由国人写的书 链接、装载与库,书名已经比较言简意赅的介绍了书里相关内容,而且写得挺通俗的,值得一看。这里是书里第一、二部分内容的一些笔记,主要讲了操作系统的一些基本概念,编译生成的目标文件格式和静态链接的过程;由于笔者只摘录一些不太了解的内容,因此总体内容可能不是非常成体系,建议读原书。
最近在 coursera 上发现一门不错的课程,程序的表示、转换与链接,内容是类似《深入理解计算机系统》这本书的,说来惭愧,虽然在上学时零星上过一些相关的课程,但是却没有系统地将这些内容串起来理解。本着算法工程师首先得是个工程的原则,觉得还是有必要去了解一下这块内容;而且课程内容讲得挺通俗的,值得一听。
本文的内容主要是 week1 的内容,较为宏观地介绍了如何从冯・诺依曼体系结构演进至现代计算机结构、程序执行的基本原理、微体系结构与指令集 (ISA) 等。由于课程 PPT 说得已经较为清晰了,这里大部分内容会直接截图(懒得再打字也是一个原因。。。)
在计算广告中,转化是有延迟的,即在点击发生后过一段时间用户可能才会发生转化,且往往转化漏斗越深,延迟的时间越长;因此在训练 cvr/deepcvr 模型时,会有两种情况出现(1)过早把样本送入模型,把最终会转化但是还没回传 label 的事件当做负例,导致模型低估(2)过晚把样本送入模型,即让所有样本都等待一个足够长的时间才送入模型,导致模型没能及时更新
因此在建模时需要对转化的回传延时进行建模,这篇 paper 《Modeling Delayed Feedback in Display Advertising》是 criteo 针对这个问题提供的一个解决方法,主要思想就是对于还未观察到 conversion 的样本,不直接将其当做负样本,而是当前考虑 click 已发生的时间长短给模型不同大小的 gradient;paper 里称在 criteo 的真实的数据上验证了该方法的有效性。此外,文章从问题的建模到求解的思路不错,值得一看。
本文简单了描述机器学习中的蒸馏(distillation)技术的原理,distillation 可简单分为 model distillation 和 feature distillation。顾名思义,蒸馏是对原来的模型 / 特征进行了压缩,其原因可能是为了减少模型的大小(model distillation)、或者某些特征只能在 training 时获取,serving 无法获取 (feature distillation);在实际业务中可根据具体场景灵活地应用这两类技术。
《Smart Pacing for Effective Online Ad Campaign Optimization》是 Yahoo 在 2015 发表的一篇关于 budget pacing 的论文,与之前写过的 Budget Pacing for Targeted Online Advertisements at LinkedIn 相似,目标也是把预算均匀花完,但是除了这个目标,这篇论文还提出了在预算均匀花完的基础上如何保成本的方法,算是一个多目标优化了。在离线环境和真实环境验证了方法的有效性,是实践性较强的一篇文章,值得一看。