首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

公平与精确同样重要!CMU提出学习公平表征方法,实现算法公平

然而,随着人工智能技术逐渐融入日常生活,人们对于算法公平性」的要求与日俱增。在本文中,来自 CMU (卡内基 · 梅隆大学)的研究人员赵晗提出了一种通过学习公平表征来实现算法公平的方法。...从广义上讲, 有关算法公平性的文献中包含两个核心的「公平性」概念: 第一个概念是「个体公平」。简而言之,它要求公平算法以类似的方式对待相似的个体。...如图 2 所示,得益于近期深度神经网络表征学习方面的研究进展,我们可以通过对抗性训练算法实现上面的优化问题。...图 2:学习公平表征的一种算法实现。中间的表征 Z 试图骗过对抗者 A,A 的目标是识别出输入变量的群体属性是「圆形:A=0」还是「方形:A=1」。整体的网络架构可以使用梯度下降法训练。...具体而言,根据鸽巢原理,我们很容易发现任意的公平分类器必然会至少在其中一个群体上产生至少 的误差率。此外,该结论是预算法无关的,它在群体层面上成立(即使用大的训练集并不能有所帮助)。

39910
您找到你想要的搜索结果了吗?
是的
没有找到

完全公平调度算法

1.算法介绍 针对没有实时需求的普通进程,Linux内核使用完全公平调度器(Completely Fair Scheduler,CFS)。...为了兼顾进程优先级和公平性,完全公平调度算法引入了虚拟运行时间,如下。...完全公平调度算法使用红黑树(一种平衡的二叉树)把进程按虚拟运行时间从小到大排序,每次调度时选择虚拟运行时间最小的进程。 调度器选中进程以后分配的时间片是多少呢?...当从负载重的处理器迁移进程到负载轻的处理器的时候,迁移过来的进程的虚拟运行时间小很多,导致进程调度器在一段时间内总是选中它,对其他进程不公平。 完全公平调度算法的解决方法如下。...3.选择进程的算法 完全公平调度算法通常选择虚拟运行时间最小的进程,但是选择算法还需要考虑下面的特殊情况。

85420

Linux 完全公平调度算法

Linux 进程调度算法经历了以下几个版本的发展: 基于时间片轮询调度算法。(2.6之前的版本) O(1) 调度算法。(2.6.23之前的版本) 完全公平调度算法。...(2.6.23以及之后的版本) 之前我写过一篇分析 O(1)调度算法 的文章:O(1)调度算法,而这篇主要分析 Linux 现在所使用的 完全公平调度算法。...分析 完全公平调度算法 前,我们先了解下 完全公平调度算法 的基本原理。 完全公平调度算法基本原理 完全公平调度算法 体现在对待每个进程都是公平的,那么怎么才能做到完全公平呢?...为了解决上面两个问题,Linux内核的开发者创造了 完全公平调度算法。...完全公平调度算法实现 有了上面的基础,现在可以开始分析 Linux 内核中怎么实现 完全公平调度算法 了。 我们先来看看怎么更新一个进程的虚拟运行时间。 1.

1.3K20

公平锁与非公平

公平锁:表示线程获取锁的顺序是按照线程启动顺序来获取的,即先来先得先进先出。 非公平锁:表示获取锁是随机获得的,先启动的也不能保证一定先获得锁。 下面我们用两个例子来演示一下公平锁与非公平锁。...公平锁 ? ? ? ? 我们看输出线程的运行顺序和线程获取锁的顺序是一致的。这就是公平锁的特征,先到先得。下面我们看一下非公平锁。...非公平锁 我们只需要将测试类中的Userinfo对象的参数为true改成false即可。 ? ?...我们看线程获取锁的顺序和线程的执行顺序没有什么规律,这就是非公平锁,不能保证,先执行的线程一定能够先获得到锁。...公平锁与非公平锁的区别: 公平锁的性能要比非公平锁的性能要低 ReentrantLock类默认的构造参数为false也就是默认是非公平

36830

公平锁与非公平

其实好多人,在面试的时候都被问到过,可能是因为没有碰见过,在这里说一下吧,也当是为大家填一个坑 所谓锁的公平与非公平:   如果在时间上,先对锁进行获取的请求,一定先被满足,这个锁就是公平的,不满足,...就是非公平的,就类似先到先得,就是公平的,有人插队没人管,就是非公平的 效率对比:   非公平锁的效率,是普遍高于公平锁的,因为公平锁,需要排队等待,会造成锁的挂起和唤醒,非公平锁不用等待,谁拿到就是谁的...,java的Synchronized和ReentrantLock默认都是非公平的 ?  ...可以看到源码中,默认的创建是,非公平的锁 ?  ...同时在构造参数中提供了一个Boolean类型的变量,可以在创建的时候控制这个锁是否为公平锁,true就是公平锁,false就是非公平锁,相当于无参构造 作者:彼岸舞 时间:2020\11\02 内容关于

30821

ReentrantLock的公平与非公平

ReentrantLock的公平与非公平 ReentrantLock 公平锁与非公平锁的区别 非公平锁在调用 lock 后,首先就会调用 CAS 进行一次抢锁,如果这个时候恰巧锁没有被占用,那么直接就获取到锁返回了...非公平锁在 CAS 失败后,和公平锁一样都会进入到 tryAcquire 方法,在 tryAcquire 方法中,如果发现锁这个时候被释放了(state == 0),非公平锁会直接 CAS 抢锁,但是公平锁会判断等待队列是否有线程处于等待状态...* 在加锁的时候直接进行了cas操作去获取锁,不加入等待队列,当然如果失败,还是会和公平锁一样 */ final void lock() { if (compareAndSetState(...Maximum lock count exceeded"); setState(nextc); return true; } return false; } 公平锁...* 这里与非公平锁只有一个区别:判断等待队列是否有线程处于等待状态 */ protected final boolean tryAcquire(int acquires) { final

46540

JAVA并发篇_公平锁与非公平

简单的来说,如果一个线程组里,能保证每个线程都能拿到锁,那么这个锁就是公平锁。相反,如果保证不了每个线程都能拿到锁,也就是存在有线程饿死,那么这个锁就是非公平锁。...2、⾮公平锁: 多个线程去获取锁的时候,会直接去尝试获取,获取不到,再去进⼊等待队列,如果能获取到,就直接获取到锁。...二、Java中的实现 如何能保证每个线程都能拿到锁呢,队列FIFO是一个完美的解决方案,也就是先进先出,java的ReenTrantLock也就是用队列实现的公平锁和非公平锁。...而非公平锁上,只有当锁被某个线程持有时,新发出请求的线程才会被放入队列中(此时和公平锁是一样的)。所以,它们的差别在于非公平锁会有更多的机会去抢占锁。...:非公平锁比公平锁性能高5-10倍,因为公平锁需要在多核情况下维护一个队列,如果当前线程不是队列的第一个无法获取锁,增加了线程切换次数。

19210

理解ReentrantLock的公平锁和非公平

那怎么实现非公平锁呢?查阅了一些资料,总算知道了。 首先从公平锁开始看起。...ReentrantLock 的公平锁 ReentrantLock 默认采用非公平锁,除非在构造方法中传入参数 true 。...由此实现了非公平锁。 总结 非公平锁和公平锁的两处不同: 非公平锁在调用 lock 后,首先就会调用 CAS 进行一次抢锁,如果这个时候恰巧锁没有被占用,那么直接就获取到锁返回了。...非公平锁在 CAS 失败后,和公平锁一样都会进入到 tryAcquire 方法,在 tryAcquire 方法中,如果发现锁这个时候被释放了(state == 0),非公平锁会直接 CAS 抢锁,但是公平锁会判断等待队列是否有线程处于等待状态...公平锁和非公平锁就这两点区别,如果这两次 CAS 都不成功,那么后面非公平锁和公平锁是一样的,都要进入到阻塞队列等待唤醒。 相对来说,非公平锁会有更好的性能,因为它的吞吐量比较大。

43250

最新综述 | 图数据挖掘中的算法公平

作者:董钰舜 单位:弗吉尼亚大学 图数据挖掘算法已经在很多领域得到应用,但大多数图数据挖掘算法都没有考虑到算法公平性。...在本篇综述中,我们首先系统梳理了图数据挖掘领域内常见的算法公平性的定义和对应的量化指标。在此基础上,我们总结出了一个图数据挖掘算法公平性的分类法,并对现有提升公平性的方法进行了讨论。...因此,如何使当前的图数据挖掘算法产生尽可能公平的预测以辅助人们决策成为了一个关键的问题。 在不同的工作中,算法公平性的定义可能是不同的。同时,提升算法公平性的方法也与公平性的定义相互耦合。...在推荐系统中,用户公平性和流行公平性是最为广泛研究的两类算法公平性。...提升图数据挖掘算法公平性的方法 在本篇综述中,我们将图数据挖掘中实现算法公平性的方法划分为以下六类。 图2. 图数据挖掘中提升算法公平性的方法分类 2.1 正则化 图3.

49820

关于自旋锁的公平和非公平模式

实现公平的自旋锁: 实现一个公平的自旋锁,其实也比较容易,我们只需要按照线程的程序,构建一个FIFO先进先出的阻塞队列,便可以完成这件事。...,按照这个思路我们来看下实现公平自旋的代码: package concurrent.lock_compare; import java.util.concurrent.atomic.AtomicInteger...从而就实现了公平的自旋锁模式。...公平的自旋锁能够确保不会出现线程饥饿现象,但公平模式不一定就意味着效率很高,具体跟临界区的代码执行的时长有关,如果临界区是一块很大的逻辑,那么就会导致其它自旋线程耗费大量的cpu资源。...总结: 本文主要了介绍了Java里面自旋锁的公平模式和非公平的实现,并介绍了其相关的优缺点,自旋锁通常搭配CAS来一起工作,自旋锁的临界区代码不能太多,而且耗时要尽可能的短,否则一旦自旋的代价超过线程睡眠唤醒调度的代价

40320

ReentrantLock非公平锁与公平锁的实现

ReentrantLock非公平锁与公平锁的实现 在文章开始之前,大家复习一遍锁的分类: ReentrantLock是根据传入的参数来决定是否使用公平锁,默认使用非公平锁: 公平锁/非公平锁 当多个线程来取锁的时候...,按照规则排队等锁即为公平锁,不按照规则排队的即为非公平锁, Synchronized就是一个典型的非公平锁,而ReentrantLock 是根据AQS来实现线程的一个调度达到公平锁与非公平锁的一个切换...: //使用默认的非公平锁ReentrantLock nonFairReentrantLock = new ReentrantLock();//构造函数入参传true使用公平锁ReentrantLock...new FairSync() : new NonfairSync(); } 从上边代码我们看到,通过构造函数中的一个布尔入参实现具体声明公平锁还是非公平锁。...总结:ReentrantLock通过构造参数fair来判断是创建公平锁还是非公平锁,底层中的独享锁的实现以及队列等待功能依赖于AQS, AQS是java中大部分锁的基础,其中可以划分独享和共享,根据volatile

1.2K10

面试被问ReentrantLock的公平锁与非公平

面试被问ReentrantLock的公平锁与非公平锁的区别以及实现。 建议先阅读Java中的锁原理、锁优化、CAS、AQS,看这篇就对了!...这两个类也就是我们所说的公平锁与非公平锁。 还可以通过手动设置公平锁与非公平锁 public ReentrantLock(boolean fair) { sync = fair ?...总结 公平锁和非公平锁只有两处不同: 非公平锁在调用 lock 后,首先就会调用 CAS 进行一次抢锁,如果这个时候恰巧锁没有被占用,那么直接就获取到锁返回了。...非公平锁在 CAS 失败后,和公平锁一样都会进入到 tryAcquire 方法,在 tryAcquire 方法中,如果发现锁这个时候被释放了(state == 0),非公平锁会直接 CAS 抢锁,但是公平锁会判断等待队列是否有线程处于等待状态...公平锁和非公平锁就这两点区别,如果这两次 CAS 都不成功,那么后面非公平锁和公平锁是一样的,都要进入到阻塞队列等待唤醒。 相对来说,非公平锁会有更好的性能,因为它的吞吐量比较大。

58210

​AQS中的公平锁与非公平锁,Condtion

AQS中的公平锁与非公平锁,Condtion 一行一行源码分析清楚 AbstractQueuedSynchronizer (二) 转自https://www.javadoop.com/post/AbstractQueuedSynchronizer...本文关注以下几点内容: 深入理解 ReentrantLock 公平锁和非公平锁的区别 深入分析 AbstractQueuedSynchronizer 中的 ConditionObject 深入理解 java...公平锁和非公平锁 Condition 1. 将节点加入到条件队列 2. 完全释放独占锁 3. 等待进入阻塞队列 4. signal 唤醒线程,转移到阻塞队列 5. 唤醒后检查中断状态 6....非公平锁在 CAS 失败后,和公平锁一样都会进入到 tryAcquire 方法,在 tryAcquire 方法中,如果发现锁这个时候被释放了(state == 0),非公平锁会直接 CAS 抢锁,但是公平锁会判断等待队列是否有线程处于等待状态...公平锁和非公平锁就这两点区别,如果这两次 CAS 都不成功,那么后面非公平锁和公平锁是一样的,都要进入到阻塞队列等待唤醒。 相对来说,非公平锁会有更好的性能,因为它的吞吐量比较大。

61621

公平锁和非公平锁的概念和区别

公平锁是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到。...非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁在高并发的情况下,有可能会造成优先级反转或者饥饿现象 并发包中ReentrantLock的创建可以指定构造函数的...boolean类型来得到公平锁或非公平锁,默认是非公平锁 jpa 关于其默认值,查看java.util.concurrent.Lock里的构造方法会发现如果不对其ReentranLock指定参数,...it公平锁,就是很公平,在并发环境中,每个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个,就占有锁,否则就会加入到等待队列中,以后会按照FIFO的规则从队列中取到自己...非公平锁比较粗鲁,上来就直接尝试占有锁,如果尝试失败,就再采用类似公平锁那种方式。 附加 非公平锁的优点在于吞吐量比公平锁大。 对于Synchronized而言,也是一种非公平

27630
领券