算法|那些约会软件背后的算法,以及一个恼羞成怒的数学家的故事

text":"现在相亲话题在网上越来越火了 。 有意思的是 , 无论男方还是女方都有不少人在对自己的相亲对象疯狂地吐槽 。 给人的感觉就是明明有很多单身的男男女女 , 但想要把他们撮合成情侣却比登天还要难 。
有人可能会觉得 , 只要把有婚恋意向的单身男女各100人放在一起让他们自由地进行选择 , 那么应该很快就能组合成100对情侣 。 但这样的事情是不可能发生的 , 因为这不符合人性 。 在现实中 , 更有可能发生的情况是所有的男性都想要选择吸引力排在前10%的女性 , 同时所有的女性都想要选择吸引力排在前10%的男性 。
所以对于约会类软件来说 , 让会员们自由地浏览所有异性的资料并不是一种很好的策略 , 不仅不会增加配对的成功率 , 还会给大家徒增烦恼 。 于是这些软件大部分都使用了配对算法 , 由算法来决定每一名会员能看见哪些异性的资料 。
美国著名约会软件Tinder采取的策略是在后台对会员进行打分评估 , 然后把那些评分在同一个档次的男女匹配起来 。 简单来说就是九分男刷出来的大部分都是九分女 , 六分男刷出来的大部分都是六分女 , 反之亦然 。
那么Tinder到底是如何给会员进行打分的呢?毕竟会员在注册Tinder的时候无非也就是上传几张照片 , 再写一些自我介绍而已 。 人工智能并不能仅凭这些信息就判断出一名会员在异性眼中的吸引力 。
为了解决这个问题 , Tinder使用了Elo积分算法 。 这是一种通常用在国际象棋和网球等体育比赛中的算法 。 以国际象棋为例 , 每名职业选手最开始都会有一个初始积分 , 每当他赢得一场比赛后 , 积分就会增加 , 输掉一场比赛后 , 积分就会减少 。 而Elo积分算法的巧妙之处在于 , 它根据对战双方的积分差距来决定在比赛结束后双方增加和扣除的分数 。 如果你战胜了一名比自己积分高出很多的对手 , 那么你会获得比较多的积分 , 因为这对于你来说是比较困难的一件事 。 如果你赢了一名比自己积分更低的选手 , 那么你的积分只会增加一点点 , 因为这对于你来说是情理之中的事情 。 当一名选手参加了足够多的比赛之后 , 他的分数就会稳定在一个相对固定的区间 。 人们通过这名选手的积分就可以快速地判断他的水平 。
Tinder官方曾经透露他们也使用了这样的Elo积分机制 。 当用户们在Tinder中刷到软件推荐给他们的异性时 , 如果感兴趣就向右划 , 不感兴趣就向左划 。 这样的右划和左划就相当于象棋比赛中的胜利和失败 。 一名用户如果多次被别人右划 , 即多次被别人标记为“感兴趣” , 那么他/她的分数就会越来越高 。 反之 , 如果一名用户总是被标记为“不感兴趣” , 那么他/她的分数就会越来越低 。 跟象棋比赛积分类似 , 如果被一名高分用户标记为“感兴趣”的话 , 分数会获得大幅增长 。 如果只是被一名低分用户标记为感兴趣的话 , 分数只会增长一点点 。 当然 , 这个分数是Tinder后台中的一个隐藏数值 , 对所有用户都不可见 。 Tinder官方隐晦地用“受欢迎度”(desirability)来指代他们给每名用户在恋爱市场上的评估分数 。
在Tinder里 , 只有当两名用户互相把对方标记为感兴趣后才能进行联系 。 这看起来似乎很公平 , 每个人都可以在软件中自由地选择心仪的对象 。 但事实上 , 每名用户只能看到那些由算法推荐的跟他/她处于同一“圈层”的有限数量的异性 。 如果用户反复刷新的话 , 系统可能就会重新推荐之前已经被划掉过的异性 , 因为算法为这位用户筛选出来的异性名单已经被刷完了 。 这听起来可能有些残酷和势利 , 但婚恋市场本来就是残酷和势利的 。