上一页 1 2 3 4 5 6 7 8 9 ··· 14 下一页
摘要: 数值优化:经典二阶确定性算法与对偶方法 我们在上一篇博客中主要介绍了单机数值优化中一些经典的一阶确定性算法,本篇文章我们将会介绍二阶确定性算法和对偶方法。牛顿法的基本思想是将目标函数在当前迭代点处进行二阶泰勒展开,然后最小化这个近似目标函数。如果该海森矩阵是正定的,则问题的最优值在特定处取到,牛顿法将其做为下一时刻的状态。 阅读全文
posted @ 2022-06-14 21:24 orion-orion 阅读(776) 评论(0) 推荐(0) 编辑
摘要: 数值优化:经典一阶确定性算法及其收敛性分析 我们在上一篇博客中介绍了数值优化算法的历史发展、分类及其收敛性/复杂度分析基础。本篇博客我们重点关注一阶确定性优化算法及其收敛性分析。梯度下降法的基本思想是:最小化目标函数在当前迭代点处的一阶泰勒展开,从而近似地优化目标函数本身。具体地,对函数 𝑓:ℝ𝑛→ℝ ,将其在第 t 轮迭代点 𝑤𝑡处求解最小化问题。梯度下降法有两个局限,一是只适用于无约束优化问题,二是只适用于梯度存在的目标函数。投影次梯度法可以解决梯度下降法的这两个局限性。 阅读全文
posted @ 2022-06-11 22:24 orion-orion 阅读(1459) 评论(0) 推荐(0) 编辑
摘要: 数值优化:算法分类及收敛性分析基础 不同的优化算法采用不同的方法对目标函数进行优化,以寻找最优预测模型。其中最重要的两个特性就是收敛速率和复杂度。优化算法最初都是确定性的,不过近年来随着机器学习中数据规模的不断增大,优化问题复杂度不断增高,原来越多的优化算法发展出了随机版本和并行化版本。依据算法在优化过程中所利用的是一阶导数信息还是二阶导数信息,还可把优化算法分为一阶方法和二阶方法。 阅读全文
posted @ 2022-06-09 10:08 orion-orion 阅读(1470) 评论(0) 推荐(1) 编辑
摘要: 分布式机器学习:PageRank算法的并行化实现(PySpark) 目前对图算法进行并行化的主要思想是将大图切分为多个子图,然后将这些子图分布到不同的机器上进行并行计算,在必要时进行跨机器通信同步计算得出结果。学术界和工业界提出了多种将大图切分为子图的划分方法,主要包括两种,边划分(Edge Cut)和点划分(Vertex Cut)。总而言之,边划分将节点分布到不同机器中(可能划分不平衡),而点划分将边分布到不同机器中(划分较为平衡)。接下来我们使用的算法为边划分。我们下面的算法是简化版,没有处理悬挂节点的问题。 阅读全文
posted @ 2022-06-03 22:06 orion-orion 阅读(913) 评论(0) 推荐(1) 编辑
摘要: 分布式机器学习:逻辑回归的并行化实现(PySpark) 逻辑回归的目标函数常采用梯度下降法求解,该算法的并行化可以采用Map-Reduce架构。先将第𝑡t轮迭代的权重广播到各worker,各worker计算一个局部梯度(map过程),然后再将每个节点的梯度聚合(reduce过程),最终对参数进行更新。在Spark中每个task对应一个分区,决定了计算的并行度。在Spark的实现过程中,map阶段各task运行map()函数对每个样本(𝑥𝑖,𝑦𝑖)计算梯度𝑔𝑖, 然后对每个样本对应的梯度运行进行本地聚合,以减少后面的数据传输量。 阅读全文
posted @ 2022-05-27 19:00 orion-orion 阅读(914) 评论(0) 推荐(1) 编辑
摘要: Spark:单词计数(Word Count)的MapReduce实现(Java/Python) 我们在上一篇博客中学习了如何用Hadoop-MapReduce实现单词计数,现在我们来看如何用Spark来实现同样的功能。Spark框架也是MapReduce-like模型,采用“分治-聚合”策略来对数据分布进行分布并行处理。不过该框架相比Hadoop-MapReduce,具有以下两个特点:对大数据处理框架的输入/输出,中间数据进行建模,将这些数据抽象为统一的数据结构命名为弹性分布式数据集。 阅读全文
posted @ 2022-05-26 20:24 orion-orion 阅读(1055) 评论(0) 推荐(1) 编辑
摘要: Hadoop:单词计数(Word Count)的MapReduce实现 首先,Hadoop会把输入数据划分成等长的输入分片(input split) 或分片发送到MapReduce。Hadoop为每个分片创建一个map任务,由它来运行用户自定义的map函数以分析每个分片中的记录。在我们的单词计数例子中,输入是多个文件,一般一个文件对应一个分片,如果文件太大则会划分为多个分片。map函数的输入以 阅读全文
posted @ 2022-05-24 19:45 orion-orion 阅读(1491) 评论(0) 推荐(2) 编辑
摘要: Git:.gitignore、移除暂存与撤销修改 .gitignore针对每个语言都有对应的模板,在GitHub创建项目时就可以选择(你可以在GitHub提供的.gitignore模板大全中找到它)。但是这些往往是不够的的。如我们在Mac系统下用VSCode开发,那么常常还需要添加其它项目。如.vscode/表示忽略.vscode这个包含项目配置文件的隐藏目录(注意是包括目录一起忽略,.DS_Store表示忽略掉Mac操作系统下存储目录自定义属性的隐藏文件。此外机器学习相关的项目中,数据和模型通常异常巨大,我们并不想将它们放到项目文件夹下。 阅读全文
posted @ 2022-05-23 20:58 orion-orion 阅读(1469) 评论(0) 推荐(0) 编辑
摘要: Python:浮点数取整、格式化和NaN处理 强转int类型会直接对浮点数的小数部分进行截断(无论是正还是负)。还有一种方法是math.ceil和math.floor。无论是正数还是负数,都遵循:ceil往数轴正方向取整,floor往数轴负方向取整。round原型为round(value, ndigits),可以将一个浮点数取整到固定的小数位。该函数对正数和负数都采取就近取整原则,而当某个值恰好等于两个整数间一半时,取整操作会取到离该值最近的那个偶数。 阅读全文
posted @ 2022-05-21 20:58 orion-orion 阅读(1463) 评论(0) 推荐(0) 编辑
摘要: Pytorch:利用torch.nn.Modules.parameters修改模型参数 Pytorch中继承了torch.nn.Module的模型类具有named_parameters()/parameters()方法,这两个方法都会返回一个用于迭代模型参数的迭代器(named_parameters还包括参数名字): 阅读全文
posted @ 2022-05-20 21:42 orion-orion 阅读(2413) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 14 下一页