拜占庭容错机器学习算法之剪枝平均
剪枝平均
剪枝平均数,是指去掉一部分最大值和最小值后,剩余部分的平均数。
更确切的定义是:假设有a1<a2<a3<⋯<ana_1<a_2<a_3<\cdots <a_na1<a2<a3<⋯<an,2β<n2\beta<n2β<n,那么{a1,a2,a3,⋯,an}\{a_1,a_2,a_3,\cdots,a_n\}{a1,a2,a3,⋯,an}的β\betaβ剪枝平均数定义为mβ=∑i=β+1n−2βain−2βm_{\beta}=\frac{\sum_{i=\beta+1}^{n-2\beta}a_i}{n-2\beta}mβ=n−2β∑i=β+1n−2βai.
剪枝平均数可以不受到部分极值的影响,同时还能保持大部分数的平均值,是一个比较健壮的统计量。
c++代码示例:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
double trimmed_mean(vector<double> a,int beta){double res=0;//if 2*beta<n, return the mean of elements.if(2*beta>=a.size()){for(auto x:a){res+=x;}return res/a.size();}sort(a.begin(),a.end());for(int i=beta;i<a.size()-beta;i++){res+=a[i];}return res/(a.size()-2*beta);
}
int main(){vector<double> a={1,2,3,4,5,6,7,8};vector<double> b={-12,-32,3,4,5,6,7,80};cout<<"The a's 2-trimmed mean is "<<trimmed_mean(a,2)<<endl;cout<<"The b's 2-trimmed mean is "<<trimmed_mean(b,2)<<endl;
}
逐坐标剪枝平均聚合算法
拜占庭容错机器学习的大部分算法,都是寻找一个健壮的统计量,来抵抗拜占庭攻击。所以剪枝平均数是可以用来设计拜占庭容错机器学习算法的。
拜占庭容错机器学习算法与分布式机器学习的区别主要是在参数聚合过程,其他都是一样的。所以在描述算法的时候,重点在参数聚合的过程。
可在参数聚合过程中使用的更新或者梯度,往往是一个向量,无法直接比较排序。一个可能的方法是,逐个坐标(或者逐个维度)求剪枝平均,然后组合成聚合后的结果。
具体算法描述如下:
一个聚合服务器SSS,n个客户端C1,C2,⋯,CnC_1,C_2,\cdots,C_nC1,C2,⋯,Cn,每个客户端CiC_iCi都有自己本地的数据DiD_iDi.
初始化:协商一个统一的模型结构,给每个客户端相同的权重参数WWW.这里的权重被扁平化为一个一维向量W=(w1,w2,⋯,wp)W=(w_1,w_2,\cdots,w_p)W=(w1,w2,⋯,wp)
1、每一个客户端CiC_iCi使用本地的数据DiD_iDi和当前的权重WWW,进行一轮训练,得到WiW^iWi。将WiW^iWi发送给服务器。
2、服务器收到所有客户端发来的新的权重后,开始聚合。wj′=mβ(wj1,wj2,⋯,wjn).\begin{aligned} w^\prime_j=m_\beta(w^1_j,w^2_j,\cdots,w^n_j). \end{aligned}wj′=mβ(wj1,wj2,⋯,wjn).其中,mβm_\betamβ函数是指求输入的数的β\betaβ剪枝平均。
3、聚合后的权重为W′=(w1′,w2′,⋯,wp′)W^\prime=(w^\prime_1,w^\prime_2,\cdots,w^\prime_p)W′=(w1′,w2′,⋯,wp′).服务器将当前权重更新,W=W′W=W^\primeW=W′,并分发给所有客户端。
4、重复1-3步,直到模型收敛或者满足特定条件。
参考论文
《Byzantine-Robust Distributed Learning: Towards Optimal Statistical Rates》
拜占庭容错机器学习算法之剪枝平均相关推荐
- 拜占庭容错机器学习算法之Krum算法
Krum算法是一种基于欧氏距离的拜占庭容错机器学习算法,是一种在分布式机器学习中保证其在具有拜占庭错误时仍然可以收敛的算法. 拜占庭错误 所谓的拜占庭错误在机器学习中是指,客户端在提交模型更新时,可以 ...
- 非拜占庭容错共识算法
目录 一.Raft 算法 二.KRaft 算法 参考文献 一.Raft 算法 三种角色不同的节点:跟随者(follower).候选者(candidate).领导者(leader) 两个阶段: 1.领导 ...
- 拜占庭容错共识算法介绍
1. 前言 区块链的共识算法中,除了常见的工作量证明(PoW,Proof of Work)和权益证明(PoS,Proof of Stake)外,还有拜占庭容错(Byzantine Fault Tole ...
- 实用拜占庭容错(PBFT)算法详细介绍
实用拜占庭容错PBFT算法详细介绍 0 摘要 1 概要介绍 2 系统模型 3 服务属性 3.1 安全性 3.2 活性 3.3 为什么是上方的等式?? 3.4 未解决问题 4 算法 4.1 概述 4.2 ...
- 拜占庭容错(BFT)算法介绍
[原文作者:Jae Kwon,译者:郭光华] 2011年比特币将世界的注意力引向到了区块链.但可惜的是,比特币版本的区块链不能解决区块链行业的很多问题.那是因为: 1.比特币的POW共识会浪费大量能源 ...
- PBFT实用拜占庭容错算法详解
分布式架构遭遇的问题 分布式架构会遭遇到以下问题: 1.异构环境的分布式架构首先可能遇到网络传输问题,比如数据丢失.延迟.重复.乱序. 2.欺骗攻击和重播攻击 3.操纵多个失效节点,延迟通讯,制造混乱 ...
- PBFT实用拜占庭容错算法
PBFT实用拜占庭容错算法原理 本篇文章开启区块链共识算法的普及--我以 PBFT (Practical-Byzantine-fault-tolerant)实用拜占庭容错共识算法打头阵. 为什么先是P ...
- 什么是异步拜占庭容错 (ABFT)?
异步拜占庭容错(ABFT)是拜占庭容错共识算法的一个属性,它允许网络的诚实节点保证公平.安全地就一组交易的时间和顺序达成一致. 什么是拜占庭容错? 让我们首先了解拜占庭容错实际上意味着什么.术语拜占庭 ...
- 拜占庭容错算法的新发展——GBFT
基于通信时间分组的 PBFT 算法--GBFT 本文为哈尔滨工程大学计算机学院2021年区块链技术课程,由2018201319 李合尧同学查阅相关博客以及论文进行的总结描述,第一次发表学术文章,才疏学 ...
最新文章
- Python的全局和局部变量
- Tensorflow tf.placeholder函数
- minecraft666java_我的世界的666的世界
- 分布式系统之消息队列
- rabbitmq订单模块_RabbitMQ播放模块! 构架
- 以太网例程_开关量转以太网的应用
- Oracle 常用的一些函数
- list取数据_Day.5利用Pandas做数据处理(二)
- 内部类、抽象类、接口基本知识详解
- 大数据架构师学习方向---加油。
- canvas 绘制直线 并选中_在画布中使用路径-Canvas的基本操作
- transform、accumulate —— C++ 下的 MapReduce
- 汇编程序设计入门(安装+debug调试实例)
- 如何更好地控制input输入框的高度
- jar包引用版本不一致引发的问题
- 装饰者模式的应用:react高阶组件和ES6 装饰器
- css权重机制,CSS权重及其计算
- 手游服务器价格表,杭州高防43.241.17.1
- 双X轴的Echarts图
- 输出1000以内能被7整除又能被5整除的数
热门文章
- 40岁百丽重启IPO,一代鞋王错失了时代?
- 拼多多商品详情采集上架至京东店铺接口(无货源商品数据采集接口,一键复制采集商品宝贝接口,整店宝贝采集接口)代码对接教程
- vue 图片裁剪上传
- C#实现给PDF文档设置过期时间
- 从windows换到Linux Mint(五)——linux下的pycharm无法输入中文!!果真什么都是最简单的,都需要自己安装!
- linux版本下的超简单的生信分析平台介绍
- 24、PrepareStament
- Wifi热点创建工具配合电脑与安卓手机端实现秒传文件的方法
- python练习项目_python练习项目
- 【Oracle】使用SQL*Plus命令创建独立用户环境