【总结】Clustered Sampling 小结
(2条消息) 【论文复现3】算法2——Clustered sampling based on model similarity_admin11111111的博客-CSDN博客https://blog.csdn.net/admin11111111/article/details/121072203#comments_19068693
一、对于梯度的修改
接着上篇的思路,只有在local_learning中对梯度进行修改才算是真正意义上的worker遭受到攻击。于是有下面的代码:
def local_learning(model, mu: float, optimizer, train_data, n_SGD: int, loss_f, k):model_0 = deepcopy(model)for _ in range(n_SGD):features, labels = next(iter(train_data))features_ = features.to(DEVICE) # 1013labels_ = labels.to(DEVICE) # 1013optimizer.zero_grad()predictions = model(features_)batch_loss = loss_f(predictions, labels_)batch_loss += mu / 2 * difference_models_norm_2(model, model_0)batch_loss.backward()# 1122 改变4个worker的梯度AT = 1 # 设置攻击者类型if AT == 0:attack_type = backwardelif AT == 1:attack_type = random_attackelif AT == 2:attack_type = same_value_attackelse:raise Exception("No such type of attack!")# 1124attacker_count = 0ATTACK_WORKER = 4 # 设置攻击者数量if attacker_count < ATTACK_WORKER:for param in model.parameters():param.grad = attack_type(param.grad)attacker_count += 1optimizer.step()
实验结果:
很明显,对于worker的攻击产生效果了。不过这个攻击worker占比40%还是太高了。接下来需要对比一下,10%,20%,30%的情况看看。
???还有一个疑问点有待解决,在backward和same_value_attack时,会报错:The condensed distance matrix must contain only finite values。至于为什么会出现NaN可能与聚类的ward方法有关。
不过在StackOverflow上有相关的解答,明天试试看。ValueError: The condensed distance matrix must contain only finite values. in python - Stack Overflowhttps://stackoverflow.com/questions/68039205/valueerror-the-condensed-distance-matrix-must-contain-only-finite-values-in-py
二、 对于样本量的修改
之前修改样本量是直接在算法里面改的,虽然效果一样,但这个也是不合理的。因为这里给的是weights数组来表示各个worker的数据量占比大小的,因此只需要调整weights数组即可,然后也实现了对于篡改worker的数据量也能影响到算法稳定性。实验结果如下:
这里也是修改了四个worker的数据量,让他们的数据量占比提高10倍,其实真实数据量还是相同的。
至此,符合预期的结果都出来了。接下来进一步的想法就是改变聚类方法或者相似性方法了。
【总结】Clustered Sampling 小结相关推荐
- 【论文代码复现2】Clustered sampling based on sample size
[论文代码复现]Clustered Sampling: Low-Variance and Improved Representativity for Clients Selection in Fede ...
- 【论文复现3】算法2——Clustered sampling based on model similarity
[论文代码复现2]Clustered sampling based on sample size_admin11111111的博客-CSDN博客https://blog.csdn.net/admin1 ...
- 【论文代码复现】Clustered Sampling: Low-Variance and Improved Representativity for Clients Selection in Fede
目录 一.前言 二.论文内容概要 1. 论文背景: 2. 已有解决方案 3. 论文方法 三.实验 1. 实验设置 2. 代码 3. 修改后试验结果和论文结果对比: 参考: 一.前言 1. 论文地址: ...
- mysql库表散列_数据库表--hash clustered table
Hash clustered table与索引聚簇表非常相似,只有一个主要区别:聚簇键索引被一个hash函数所取代,表中的数据就是索引.所以没有物理索引 hash clustered table也有副 ...
- 数据不动模型动-联邦学习的通俗理解与概述
关注公众号,发现CV技术之美 联邦学习是一种机器学习设定,其中许多客户端(例如:移动设备或整个组织)在中央服务器(例如:服务提供商)的协调下共同训练模型,同时保持训练数据的去中心化及分散性.联邦学习的 ...
- 综述:联邦学习隐私保护
1. What does literature study? 本文分析并展望了联邦学习中的隐私保护技术的研究进展和趋势.简要介绍联邦学习的架构和类型,分析联邦学习过程中面临的隐私风险,总结重建.推断两 ...
- Simplify and Robustify Negative Sampling for Implicit Collaborative Filtering (Nips‘20) 论文小结
摘要 在基于隐式反馈的协同过滤中,负采样(negative sampling)是从大量的unlabeled data中获取负样本标签比较常用和流行的方法.然而,负采样的效率和有效性这两个问题仍然没有被 ...
- Oracle Clustered Table
本文主要介绍Oracle Clustered Table.Oracle集群表分为B*树索引集群表(B* tree index clustered table)和散列集群表(hash-clustered ...
- SQL Server 2016 查询存储性能优化小结
SQL Server 2016已经发布了有半年多,相信还有很多小伙伴还没有开始使用,今天我们来谈谈SQL Server 2016 查询存储性能优化,希望大家能够喜欢 作为一个DBA,排除SQL Ser ...
最新文章
- android 自定义控件TextInputSelectBox用法
- postgresql中自定义函数脚本的备份及恢复
- C# 获取对象 大小 Marshal.SizeOf (sizeof 只能在不安全的上下文中使用)
- 刚刚,阿里云上线六大“战疫情”项目
- java ee jstl_Java EE之JSTL(下)
- sf | 判断点线面等几何对象的空间位置关系
- 关于8086七种寻址方式的练习
- 【字幕制作】从IDX/SUB到PGS的小白入门教程
- NPDP|程序员转产品经理好转吗?
- Ubuntu 20.04LTS 搜狗输入法不显示图标
- spring mvc
- 巧用foxmail同步qq邮箱的通讯录
- 疫情对2020春招有什么影响?
- 342_Linux Mint使用国内的软件源
- 51Nod-1526-分配笔名
- 一个超赞的智慧园区地图导航解决方案,如何实现园区路线导航?
- 小松鼠邮件(squirrelmail)服务器部署(squirrelmail+Postfix)
- 打造爆款产品需要注意什么
- 上帝掷骰子:APP Store是赌场不是金矿
- 最新版 Office 三国杀,体验式寻找最强电子表格
热门文章
- 对图片base64加密
- vb获取系统临时目录 temp
- C++基础:运算符优先级
- 移动web开发,ios下移除input默认样式
- linux里面短ping,详解Linux系统中ping和arping命令的用法
- 190911 CSP-S 2019模拟
- “Hello World!”团队第七周召开的第六次会议
- ElasticSearch学习_陶文6_【03】把 Elasticsearch 当数据库使:简单指标
- 常用对象操作:(4)
- Lua脚本语言学习总结 入门、复习Lua语言看这一篇就够了