GitHub更新新手友善問題(Good First Issues)功能,引導貢獻者找出自己感興趣的專案,從入門問題開始做出貢獻,貢獻者不只能先小試身手,還可以建立自己在該專案的聲譽。新手友善問題是GitHub上,第一個使用深度學習技術的功能。

貢獻者有幾種方法開始處理新手友善問題,為專案做出貢獻。開發者可瀏覽GitHub的主題頁面,或是直接進入像是機器學習等特定主題頁面,該頁面會直接列出主題相關的專案以及新手問題。或當貢獻者已經知道要貢獻的專案名稱,也可以直接連到新手友善問題貢獻專頁,直接挑選可以處理的問題。

另外,GitHub使用者過去的貢獻、星等以及各種活動,系統也會提供個人化的專案建議,用戶可以在探索頁面看到推薦列表。貢獻者可以從以上三種方式找到新手友善問題,也能點擊尋找更多新手友善問題,瀏覽完整的列表。

其實新手友善問題並非一個全新的功能,在2019年5月GitHub就已經推出這個功能,只是之前由專案維護者手動標記新手友善標籤,但現在更新版本加入人工智慧,能夠自動推薦約70%專案儲存庫中的簡單問題。

GitHub提到,以標籤的方式標記新手友善問題,儲存庫中只會有40%的簡單問題被推薦,而且也增加了專案維護者分類問題的負擔,因此GitHub在上個月發布了更新版本,新的問題推薦功能會同時推薦基於標籤與機器學習的問題,因而提升儲存庫中簡單問題的可見度。

與幾乎所有的監督式機器學習專案一樣,GitHub面臨的第一個挑戰,便是收集訓練資料集,GitHub表示,在他們的案例,手動標記問題是一件很困難的事,因為這包含了領域主題、專案和程式語言等範圍的專業知識,因此GitHub轉而選用弱監督式的方法,先為上千萬個候選樣本自動預測標籤。

要標記出正候選樣本,仍然需要一些樣本,官方準備了手上可用的清單,只有約300個標籤問題,數量仍然太少,因此又整理了一些可能是新手處理的問題,官方找出那些已由之前未曾做出貢獻的新手所解決的問題,以及拉取請求只更動單一檔案中,幾行程式碼或文字的已關閉問題。

而負樣本則是未明確標記為正候選樣本的其他樣本,但官方提到,這樣的方法收集了不平衡的資料集,正樣本太少,因此他們除了加權之外,又對負樣本進行二次採樣,也偵測並移除了重複的問題。

為了快速地讓分類器立即判斷新手友善問題,因此僅使用標題和內文進行訓練,而不使用對話或是其他資訊,GitHub以深度學習函式庫TensorFlow來建構系統,對公開儲存庫中未封存的問題進行分類,還對問題上的標籤,根據相關性進行評分,這些評分會影響問題在列表中的先後順序,官方表示,通常標籤的可信度,比機器學習偵測出來的結果更高。GitHub每天執行資料擷取、訓練和預測工作管線,確保結果的新鮮度與相關性。


Advertisement

更多 iThome相關內容