导语:无论在论坛、评论区还是游戏聊天界面,网络骚扰和网络霸凌都是一件让人烦恼的事。怎样避免这些烦人的问题?也许本文介绍的神经网络模型,可以对于使用AI技术手段解决这些问题有所启示。
译者 | Rachel
头图 | 下载于东方 IC
出品 | AI科技大本营(ID:rgznai100)
这次我们介绍的神经网络模型,让读者能够在对话发生的初始阶段,就可以自动检测出用户的不当言论。和简单的过滤词汇列表相比,神经网络的表现更佳,但模型具体的计算过程往往是一个黑箱。因此,本文对神经网络每一层的作用都进行了分析,尝试帮助读者理解网络的每一层是如何辅助模型决策的。
根据一份2016年发布的报告,47%的网络用户有过被网络骚扰或霸凌的经历,27%的美国网络用户因为担心骚扰,会特别注意自己在网络发表的言论。来自维基媒体基金会(维基百科的所在机构)的一份调查也发现了类似的现象,调查显示,38%的编辑经历过网络骚扰,且其中超过半数的编辑认为,经历骚扰会导致其未来对社区作出贡献的动机降低。2018年在美国进行的一项研究也指出,81%的受访者希望公司能够解决网络骚扰问题。因此,如果我们希望拥有更加安全多元的网络环境,必须采取措施解决网络骚扰问题。
一种可能的解决方案是进行人工审查,并在用户行为不当时对其采取措施。但考虑到审查者的经历,这个方案实际上并不可行。另外,热门在线游戏的游戏人数往往非常庞大,数十万的对话可能同时发生,这给人工检测造成了困难。游戏社区的用户往往非常多样,一些特定的在线游戏甚至因为其糟糕的社区氛围臭名远扬。根据英雄联盟玩家 Celianna 在2020年进行的一项调查显示,98%的英雄联盟玩家都曾在游戏中经历人身攻击,79%的玩家在游戏结束后仍然被骚扰。
因此,本文使用了英雄联盟对话的相关数据集进行实验,并介绍了多个能够区分不良用户和普通用户的方法。为简化实验,本文选取了10个玩家间的10个真实对话,该对话包含约200个发言 (utterance):其中,“发言1”表示游戏中的第一条聊天消息,“发言200”表示该局游戏的最后一条消息。在实际数据集中,大部分对话的长度都超过了200,本文仅截取了前200个发言,以便于进行实验。在选取的10个对话中,都有且仅有1名玩家言语不当。本文的目标即建立一个能够自动尽早发现该玩家的系统。
能否直接使用过滤词汇列表?
为检测不当言论,最简单的方法是构建一个包含所有谩骂词汇的列表,并在用户使用列表中的词汇次数超过阈值时,将其标记不良玩家。下图中,绿色表情代表普通玩家,红色表情代表不良玩家。若系统标记玩家为不良玩家,则表情右下角会使用黄色图案标记。图片中展示了所有的检测可能性:
在阈值较低时,该方法能够在游戏初始阶段快速找到不良玩家,但会产生很多虚假警告(假阳性)。在阈值较高时,假阳性结果减少,但难以找到所有不良玩家(假阴性)。尽管任何方法都需要在假阳性和假阴性间进行权衡,但我们仍希望找到一个最优方案。
让机器学会语言
一个更好的解决方案是使用机器学习模型,即使用数千个包含不良用户的对话作为训练数据,对算法进行训练,以识别不良用户。除了识别不良用户之外,该模型实际还可以找到更温和的不当词汇,并发现其他相关现象。例如,如果仔细查看数据集,我们会发现不良用户的发言次数往往远多于普通用户。
我们使用了另外5000个对话对神经网络进行训练,该模型包含一个嵌入层(300个神经元),两个双向GRU层(16个神经元),一个池化层和两个全连接层(256个神经元)。输出层则使用sigmoid函数,对用户类别进行二分类判断。
嵌入层是神经网络中最浅的网络层,该层包含了单个词语的语境信息,并能够发现哪些词语往往在相似的语境出现。其基本思想为,含义相似的词语往往出现在相似的语境里,因此在模型中会具有相似的权重。因此,如果我们在3D空间中使用T-SNE算法对权重进行可视化,含义相似的词语间距离会更近。如下图所示:
我们可以发现很多包含实际含义的词语聚类,包括时间、数值、形容词,以及侮辱性的词汇。但是仅仅了解词语的大致含义不足以完成本任务——我们需要知道何时行动。嵌入层之后的网络层可以完成更加抽象的任务,例如监控对话的整体状况。下图展示了一个网络层的示例,我们可以看到不同网络层的部分神经元对词语赋予的权重和标记情况。
在第一层中,我们可以发现神经元1对一些简写赋予了较高的权重,例如“gj”(good job), “gw”(good work), "ty"(thank you),“kk”(okay,在韩语社区中也表示笑声), 以及“brb”(be right back)。神经元12则更关注一些不友好的词汇,例如“stupid”, "dumb", "faggot",“piece of shit”,以及“dirty cunt”。但在神经元12中,不良词汇的标记和神经元1中的标记方式相反,不良词汇被标注为了绿色,而正常词汇被标注为了红色;该问题将在后续的神经层中被修正。神经元16则对词语“mia”(missing in action)进行了识别,该词语一般用于告知队友潜在的危险,因此往往意味着玩家在尝试和队友合作。
神经网络的第二层则对对话进行了更高层次的抽象和监控。不同于网络第一层,第二层的权重变化更加平滑。例如,在神经元17中,对话在最初被标注为绿色,之后逐渐从黄色渐变为橘色, 最后再次变回绿色。第二层中的一些其他的神经元,例如神经元6,在多次重复中都激活了和词语“go”相关的权重,这意味着词语"go"的重复使用可能意味着不良对话。
该方法是否有效?
另一个重要问题是,神经网络模型是否能够比过滤词汇列表更有效地发现网络欺凌行为。对神经网络模型而言,阈值不再是负面词的数量,而是网络的置信度,置信度的值域为0到1,代表模型对于“该玩家为不良玩家”这一结论的确信程度。下图展示了不同的网络欺凌检测模型的表现,其中,蓝色为过滤词汇列表检测器,其余三个代表使用了不同置信度的神经网络检测器(绿色为0.01, 紫色为0.1, 棕色为0.5)。
和过滤词汇列表方法相同的是,随着阈值逐渐升高,假阳性检测更少,但真阳性也更少。但同时我们也可以发现,其中两个神经网络检测模型在发现更多不良玩家的同时,也大幅降低了假阳性的数量。因此,相比于过滤词汇列表,这两个模型的表现更佳。
不当行为检测的社会图景与未来展望
我们探讨了通过自动对话监控系统检测不良玩家的一些技术问题,但除了这些技术挑战之外,我们实际也面临着伦理挑战:我们是希望这项技术仅限于某一社区的不良成员检测,还是其实希望对所有对话进行实时监控?如果是进行实时监控,这对于一个社区又意味着什么?进一步地,如果这项技术不仅仅用于发现不良成员,而是被用于检测其他社会现象呢?
另外,假设系统在在线对话中发现了一个不良用户,下一步应该如何采取行动?这个用户是否应当接受到通知、警告,被屏蔽、禁言,甚至被上报给权威机构?我们又该在何时采取这些行动,即,什么程度的行为会被判定为“不当”?拳头游戏公司用户行为部的前任理事认为,不良用户就是那些“当天心情不太好的用户”;不区分用户行为,而是把用户本身直接判断为是否不良,这样做是合理的吗?
无论上述这些问题的答案是什么,我们都不可以束手旁观。反诽谤联盟和很多研究仇恨言论的学者都指出,网络欺凌会导致更多现实生活中由仇恨引起的犯罪行为。对于在线社区而言,自动检测至少是解决该问题的一个比较好的开端。
原文链接:
https://thegradient.pub/catching-cyberbullies-with-neural-networks/
直播间地址:
https://live.csdn.net/room/csdnnews/B3423dYF
更多精彩推荐
☞Python 玩出花儿,把罗小黑养在自己桌面☞315 曝光人脸识别摄像头,进店瞬间偷走你的“脸”,自动分析心情☞玩转3D全息图像!AI即刻生成☞Python 动态可视化,看看比特币这几年
点分享点收藏点点赞点在看