GitHub更新新手友善问题(Good First Issues)功能,引导贡献者找出自己感兴趣的项目,从入门问题开始做出贡献,贡献者不仅能先小试身手,还可以创建自己在该项目的声誉。新手友善问题是GitHub上,第一个使用深度学习技术的功能。
贡献者有几种方法开始处理新手友善问题,为项目做出贡献。开发者可浏览GitHub的主题页面,或是直接进入像是机器学习等特定主题页面,该页面会直接列出主题相关的项目以及新手问题。或当贡献者已经知道要贡献的项目名称,也可以直接连到新手友善问题贡献专页,直接挑选可以处理的问题。
另外,GitHub用户过去的贡献、星等以及各种活动,系统也会提供个性化的项目建议,用户可以在探索页面看到推荐列表。贡献者可以从以上三种方式找到新手友善问题,也能点击寻找更多新手友善问题,浏览完整的列表。
其实新手友善问题并非一个全新的功能,在2019年5月GitHub就已经推出这个功能,只是之前由项目维护者手动标记新手友善标签,但现在更新版本加入人工智能,能够自动推荐约70%项目存储库中的简单问题。
GitHub提到,以标签的方式标记新手友善问题,存储库中只会有40%的简单问题被推荐,而且也增加了项目维护者分类问题的负担,因此GitHub在上个月发布了更新版本,新的问题推荐功能会同时推荐基于标签与机器学习的问题,因而提升存储库中简单问题的可见度。
与几乎所有的监督式机器学习项目一样,GitHub面临的第一个挑战,便是收集训练数据集,GitHub表示,在他们的案例,手动标记问题是一件很困难的事,因为这包含了领域主题、项目和程序语言等范围的专业知识,因此GitHub转而选用弱监督式的方法,先为上千万个候选样本自动预测标签。
要标记出正候选样本,仍然需要一些样本,官方准备了手上可用的清单,只有约300个标签问题,数量仍然太少,因此又整理了一些可能是新手处理的问题,官方找出那些已由之前未曾做出贡献的新手所解决的问题,以及拉取请求只变动单一文件中,几行程序代码或文本的已关闭问题。
而负样本则是未明确标记为正候选样本的其他样本,但官方提到,这样的方法收集了不平衡的数据集,正样本太少,因此他们除了加权之外,又对负样本进行二次采样,也侦测并移除了重复的问题。
为了快速地让分类器立即判断新手友善问题,因此仅使用标题和内文进行训练,而不使用对话或是其他信息,GitHub以深度学习函数库TensorFlow来构建系统,对公开存储库中未存档的问题进行分类,还对问题上的标签,根据相关性进行评分,这些评分会影响问题在列表中的先后顺序,官方表示,通常标签的可信度,比机器学习侦测出来的结果更高。GitHub每天执行数据截取、训练和预测工作管线,确保结果的新鲜度与相关性。