摘要: 分布式机器学习、联邦学习、多智能体的区别和联系 最近这三个方面的论文都读过,这里写一篇博客归纳一下,以方便搞这几个领域的其他童鞋入门。传统的分布式机器学习已经被研究十几年了,目前各大顶会上的分布式机器学习主要是数学味道很浓的分布式数值优化算法。而联邦学习可以看做一种特殊的分布式学习,它有一些特殊的设定,比普通的分布式学习要困难一些,还是有很多方向可以研究的,做好了应该可以发顶会。多智能体系统是一组自主的,相互作用的实体,它们共享一个共同的环境,利用传感器感知,并利用执行器作动。 阅读全文
posted @ 2021-12-11 18:47 orion-orion 阅读(3637) 评论(5) 推荐(3) 编辑
摘要: SICP:惰性求值、流和尾递归(Python实现) 在上一篇博客中,我们介绍了用Python对来实现一个Scheme求值器。然而,我们跳过了部分特殊形式(special forms)和基本过程(primitive procedures)实现的介绍,如特殊形式中的delay、cons-stream,基本过程中的force、streawn-car、stream-map等。事实上,以上特殊形式和基本过程都和惰性求值与流相关。这篇博客我们将介绍如何用Python来实现Scheme中的惰性求值和流,并使用惰性求值的原理来为我们的Scheme解释器增添尾递归的支持。所谓流,一言以蔽之,就是使用了惰性求值技术的表。它初始化时并没有完全生成,而是能够动态地按需构造,从而同时提升程序的计算和存储效率。 阅读全文
posted @ 2023-05-21 22:14 orion-orion 阅读(121) 评论(0) 推荐(1) 编辑
摘要: SICP:元循环求值器(Python实现) 元语言抽象就是建立新的语言。它在工程设计的所有分支中都扮演着重要的角色,在计算机程序设计领域更是特别重要。因为这个领域中,我们不仅可以设计新的语言,还可以通过构造求值器的方式实现这些语言。对某个程序设计语言的求值器(或者解释器)也是一个过程,在应用于这个语言的一个表达式时,它能够执行求值这个表达式所要求的动作。接下来我们将要讨论如何关于在一些语言的基础上构造新的语言。在这篇博客里,我们将用Python语言去构造一个Scheme语言的求值器。事实上求值器的实现语言无关紧要,我们也可以用Scheme语言去构造Scheme语言的求值器。用于被求值语言同样的语言写出来的求值器被称为元循环(metacircular)。 阅读全文
posted @ 2023-05-15 20:14 orion-orion 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 联邦学习:联邦场景下的域泛化 然而,目前大多数域泛化方法需要将不同领域的数据进行集中收集。然而在现实场景下,由于隐私性的考虑,数据常常是分布式收集的。因此我们需要考虑联邦域泛化(federated domain generalization, FedDG)方法。这里需要注意的是,传统的域泛化方法常常要求直接对齐表征或操作数据,这在联邦场景下是违反数据隐私性的。此外对于跨域的联邦学习,由于客户端异构的数据分布/领域漂移(如不同的图像风格)所导致的模型偏差(bias),直接聚合本地模型的参数也会导致次优(sub-optimal)的全局模型,从而更难泛化到新的目标域。 阅读全文
posted @ 2023-05-13 22:04 orion-orion 阅读(148) 评论(0) 推荐(0) 编辑
摘要: Linux:管道命令与文本处理三剑客(grep、sed、awk) 众所周知,bash命令执行的时候会输出信息,但有时这些信息必须要经过几次处理之后才能得到我们想要的格式,此时应该如何处置?这就牵涉到 管道命令(pipe) 了。管道命令使用的是|这个界定符号。每个管道后面接的第一个数据必定是命令,而且这个命令必须要能够接受标准输出的数据才行,这样的命令才可为管道命令。接下来我们选取grep、sed、awk这三个用于文本处理的管道命令来进行介绍。这三个命令可谓是Linux下操作文本的三大利器,合称Linux文本处理三剑客。 阅读全文
posted @ 2023-04-18 00:26 orion-orion 阅读(570) 评论(0) 推荐(2) 编辑
摘要: Linux:进程模型和进程管理 在Linux系统中,执行一个程序或命令就可以触发一个进程,系统会给予这个进程一个ID,称为PID,同时根据触发这个进程的用户与相关属性关系,基于这个PID一组有效的权限设置。举个常见的例子,我们要操作系统的时候通常是利用ssh连接程序或直接在主机上登录,然后获取shell。默认的shell是bash,对应的路径为/bin/bash,那么同时间的每个人登录都是执行/bin/bash,不过每个人获取的权限不同。 阅读全文
posted @ 2023-04-11 23:27 orion-orion 阅读(422) 评论(6) 推荐(2) 编辑
摘要: Git:国内用命令行访问GitHub的方法 首先可以直接改Hosts文件(现在不太管用了)。如果你是Linux或Mac系统,那么可以通过命令sudo vim /etc/hosts打开Hosts文件并进行修改。如果你已经拥有了网络代理服务,那么我们可以在此基础上配置终端代理。我们查看得知自己代理服务器的IP地址为http://127.0.0.1,端口号为7890,则我们就可以使用这里的IP地址和端口号配置GitHub的终端代理了:git config --global http.https://github.com.proxy socks5://127.0.0.1:7890。 阅读全文
posted @ 2023-04-11 10:33 orion-orion 阅读(86) 评论(0) 推荐(0) 编辑
摘要: SICP:求值和环境模型(Python实现) 一个环境就是帧(frame) 的一个序列,每个帧是包含着一些绑定(bindings) 的表格。这些约束将一些变量名字关联于对应的值(在一个帧内,任何变量至多只有一个绑定)。每个帧还包含一个指针,指向这个帧的外围环境(enclosing environment)。如果由于当前讨论的目的,将相应的帧看做是全局(global) 的,那么它将没有外围环境。一个变量相对于某个特定环境的值,也就是在这一环境中,包含着该变量的第一个帧里这个变量的绑定值。 阅读全文
posted @ 2023-03-23 13:56 orion-orion 阅读(127) 评论(0) 推荐(1) 编辑
摘要: 跨域推荐:嵌入映射、联合训练和解耦表征 跨域推荐旨在利用从其它相关源域收集的用户-物品交互信息以提升目标域的推荐质量。传统的跨域推荐方法常常基于嵌入和映射(Embedding and Mapping,EMCDR) 的思路,这种方法在进行对齐操作之前,各领域需要先通过预训练以独立地得到用户/物品的embeddings。因此,有偏的(biased) 预训练表征将无可避免地包含领域特有的(domain-specific) 信息,从而会导致对跨领域迁移信息产生负面影响。事实上,跨域推荐的关键问题就在于:究竟需要在不同的域之间共享什么信息?也即如何让表征能够编码到领域间共享(domain-shared)的信息? 阅读全文
posted @ 2023-03-15 17:23 orion-orion 阅读(328) 评论(0) 推荐(1) 编辑
摘要: SICP:赋值和局部状态(Python实现) 前面我们介绍了组成程序的各种基本元素,看到了如何把基本过程和基本数据组合起来,构造出复合的实体。不过对于设计程序而言,这些手段还不够,我们还需要一些能够帮助我们构造起模块化(modular)的大型系统的策略。所谓模块化,也即使这些系统能够“自然地”划分为一些内聚(coherent)的部分,使这些部分可以分别进行开发和维护。接下来我们要研究两种特色很鲜明的组织策略,它们源自于对于系统结构的两种非常不同的“世界观”(world views),它们分别将注意力放在对象(objects)和信息流(streams of information)上。 阅读全文
posted @ 2023-03-06 22:10 orion-orion 阅读(169) 评论(0) 推荐(1) 编辑
摘要: 分布式机器学习:异步SGD和Hogwild!算法(Pytorch) 同步算法的共性是所有的节点会以一定的频率进行全局同步。然而,当工作节点的计算性能存在差异,或者某些工作节点无法正常工作(比如死机)的时候,分布式系统的整体运行效率不好,甚至无法完成训练任务。为了解决此问题,人们提出了异步的并行算法。在异步的通信模式下,各个工作节点不需要互相等待,而是以一个或多个全局服务器做为中介,实现对全局模型的更新和读取。这样可以显著减少通信时间,从而获得更好的多机扩展性。 阅读全文
posted @ 2023-02-13 22:07 orion-orion 阅读(395) 评论(0) 推荐(0) 编辑
http://www.vxiaotou.com