上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页
摘要: 分布式机器学习:同步并行SGD算法的实现与复杂度分析(PySpark) 其中,SSGD算法每次依据来自 𝐾个不同的工作节点上的样本的梯度来更新模型,设每个工作节点上的小批量大小为 𝑏,则该算法等价于批量大小为 𝑏𝐾 的小批量随机梯度下降法。尽管梯度的计算可以被分摊到个计算节点上,然而梯度下降的迭代是串行的。每轮迭代中,Spark会执行同步屏障(synchronization barrier)来确保在各worker开始下一轮迭代前w已被更新完毕。如果存在掉队者(stragglers),其它worker就会空闲(idle)等待,直到下一轮迭代。 阅读全文
posted @ 2022-06-26 11:24 orion-orion 阅读(1842) 评论(0) 推荐(1) 编辑
摘要: 数值优化:经典随机优化算法及其收敛性与复杂度分析 对于更复杂的模型(比如神经网络)和更复杂的优化方法(比如二阶方法),确定性优化方法的计算量会更大。那么如何解决这个问题呢?统计方法能给我们很大的帮助。虽然大数据的数据量和数据维度都很大,但我们可以通过对样本和维度进行随机采样来得到对更新量的有效估计或者替代。相应地,从确定性优化算法出发,我们可以开发出各种随机优化算法,如随机梯度下降法、随机坐标下降法、随机方差缩减梯度法、随机(拟)牛顿法等。注意,对于随机优化算法而言,收敛性分析与确定性算法不同,需要针对算法中的随机采样取期望。 阅读全文
posted @ 2022-06-22 21:11 orion-orion 阅读(3648) 评论(0) 推荐(2) 编辑
摘要: 数值优化:经典二阶确定性算法与对偶方法 我们在上一篇博客中主要介绍了单机数值优化中一些经典的一阶确定性算法,本篇文章我们将会介绍二阶确定性算法和对偶方法。牛顿法的基本思想是将目标函数在当前迭代点处进行二阶泰勒展开,然后最小化这个近似目标函数。如果该海森矩阵是正定的,则问题的最优值在特定处取到,牛顿法将其做为下一时刻的状态。 阅读全文
posted @ 2022-06-14 21:24 orion-orion 阅读(822) 评论(0) 推荐(0) 编辑
摘要: 数值优化:经典一阶确定性算法及其收敛性分析 我们在上一篇博客中介绍了数值优化算法的历史发展、分类及其收敛性/复杂度分析基础。本篇博客我们重点关注一阶确定性优化算法及其收敛性分析。梯度下降法的基本思想是:最小化目标函数在当前迭代点处的一阶泰勒展开,从而近似地优化目标函数本身。具体地,对函数 𝑓:ℝ𝑛→ℝ ,将其在第 t 轮迭代点 𝑤𝑡处求解最小化问题。梯度下降法有两个局限,一是只适用于无约束优化问题,二是只适用于梯度存在的目标函数。投影次梯度法可以解决梯度下降法的这两个局限性。 阅读全文
posted @ 2022-06-11 22:24 orion-orion 阅读(1967) 评论(0) 推荐(1) 编辑
摘要: 数值优化:算法分类及收敛性分析基础 不同的优化算法采用不同的方法对目标函数进行优化,以寻找最优预测模型。其中最重要的两个特性就是收敛速率和复杂度。优化算法最初都是确定性的,不过近年来随着机器学习中数据规模的不断增大,优化问题复杂度不断增高,原来越多的优化算法发展出了随机版本和并行化版本。依据算法在优化过程中所利用的是一阶导数信息还是二阶导数信息,还可把优化算法分为一阶方法和二阶方法。 阅读全文
posted @ 2022-06-09 10:08 orion-orion 阅读(1671) 评论(0) 推荐(1) 编辑
摘要: 分布式机器学习:PageRank算法的并行化实现(PySpark) 目前对图算法进行并行化的主要思想是将大图切分为多个子图,然后将这些子图分布到不同的机器上进行并行计算,在必要时进行跨机器通信同步计算得出结果。学术界和工业界提出了多种将大图切分为子图的划分方法,主要包括两种,边划分(Edge Cut)和点划分(Vertex Cut)。总而言之,边划分将节点分布到不同机器中(可能划分不平衡),而点划分将边分布到不同机器中(划分较为平衡)。接下来我们使用的算法为边划分。我们下面的算法是简化版,没有处理悬挂节点的问题。 阅读全文
posted @ 2022-06-03 22:06 orion-orion 阅读(1029) 评论(0) 推荐(1) 编辑
摘要: 分布式机器学习:逻辑回归的并行化实现(PySpark) 逻辑回归的目标函数常采用梯度下降法求解,该算法的并行化可以采用Map-Reduce架构。先将第𝑡t轮迭代的权重广播到各worker,各worker计算一个局部梯度(map过程),然后再将每个节点的梯度聚合(reduce过程),最终对参数进行更新。在Spark中每个task对应一个分区,决定了计算的并行度。在Spark的实现过程中,map阶段各task运行map()函数对每个样本(𝑥𝑖,𝑦𝑖)计算梯度𝑔𝑖, 然后对每个样本对应的梯度运行进行本地聚合,以减少后面的数据传输量。 阅读全文
posted @ 2022-05-27 19:00 orion-orion 阅读(996) 评论(0) 推荐(1) 编辑
摘要: Spark:单词计数(Word Count)的MapReduce实现(Java/Python) 我们在上一篇博客中学习了如何用Hadoop-MapReduce实现单词计数,现在我们来看如何用Spark来实现同样的功能。Spark框架也是MapReduce-like模型,采用“分治-聚合”策略来对数据分布进行分布并行处理。不过该框架相比Hadoop-MapReduce,具有以下两个特点:对大数据处理框架的输入/输出,中间数据进行建模,将这些数据抽象为统一的数据结构命名为弹性分布式数据集。 阅读全文
posted @ 2022-05-26 20:24 orion-orion 阅读(1155) 评论(0) 推荐(1) 编辑
摘要: Hadoop:单词计数(Word Count)的MapReduce实现 首先,Hadoop会把输入数据划分成等长的输入分片(input split) 或分片发送到MapReduce。Hadoop为每个分片创建一个map任务,由它来运行用户自定义的map函数以分析每个分片中的记录。在我们的单词计数例子中,输入是多个文件,一般一个文件对应一个分片,如果文件太大则会划分为多个分片。map函数的输入以 阅读全文
posted @ 2022-05-24 19:45 orion-orion 阅读(1956) 评论(0) 推荐(2) 编辑
摘要: Git:.gitignore、移除暂存与撤销修改 .gitignore针对每个语言都有对应的模板,在GitHub创建项目时就可以选择(你可以在GitHub提供的.gitignore模板大全中找到它)。但是这些往往是不够的的。如我们在Mac系统下用VSCode开发,那么常常还需要添加其它项目。如.vscode/表示忽略.vscode这个包含项目配置文件的隐藏目录(注意是包括目录一起忽略,.DS_Store表示忽略掉Mac操作系统下存储目录自定义属性的隐藏文件。此外机器学习相关的项目中,数据和模型通常异常巨大,我们并不想将它们放到项目文件夹下。 阅读全文
posted @ 2022-05-23 20:58 orion-orion 阅读(1548) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页