tft每日頭條

 > 生活

 > fate 工作建議

fate 工作建議

生活 更新时间:2024-12-14 12:37:32
點擊上方關注,All in AI中國

在上一篇文章中,我在Keras(這裡)做了一些多任務學習,在完成那個之後,我想做一個關于在Pytorch中進行多任務學習的後續帖子。這主要是因為我認為在另一個框架中構建它對我來說是一個很好的練習,但是在這篇文章中,我将介紹在構建模型之後我做了一些額外的優化構建模型。

我還使用這個模型作為我在另一系列帖子(第1部分和第2部分)中構建的面部相似性管道的一部分。

這裡提供一個快速的回顧,多任務模型是指單個模型優化以解決一系列通常相關的問題。在機械上,這是通過将模型管道的某些核心部分的輸出饋送到一系列輸出“磁頭”來完成的,這些輸出“磁頭”的損失可以通過加法進行評分和組合,然後網絡可以根據總計的總損耗調整其權重。

我注意到訓練其中的一些問題的是,由于用于優化的損失函數是通過将各個損失函數相加而創建的,因此有點難以專注于改進單個任務頭。然而,通過對Pytorch網絡的一些早期實驗,我發現傳統的調整策略是相當有效的。

我使用的基本調整策略是吳恩達在他的在線講座中概述的策略,其中大多數機器學習算法在方差和偏差之間存在折衷,但是對于神經網絡,情況并非如此。通過神經網絡,這種權衡并不是一種擔憂,因為我們可以使用不同的機制來解決這兩種問題。在網絡不合适的情況下,您可以為其添加額外的計算能力,并且在過度拟合的情況下,您可以應用正規化,如丢失或批量标準化。通過平衡這兩種機制的應用程序,您可以優化您的網絡。

性别:女,地區:歐洲,格鬥風格:近戰,陣營:LG,主要顔色:['Silver','Gold','Bl

數據集和管道

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)1

性别:女,地區:亞洲,格鬥風格:近戰,陣營:CG,主要顔色:['紅色','黑色','白色']

該項目的數據集與我之前基于Keras的多任務學習帖相同,它包含來自手機遊戲Fate Grand Order(FGO)的大約400個角色圖像。數據集由大約40個不同的字符和26個不同的标簽組成,以創建多标簽樣式數據集。

這些類别涵蓋了角色的性别、所屬地區、戰鬥風格、圖像的主要顔色以及對應的角色。

我必須做的唯一其他真正的修改是定制一個自定義Pytorch數據集類,它接受一系列列表并輸出一個圖像,5個目标引導模型。 Pytorch可以輕松獲取數據集類并根據需要對其進行修改。通常隻編寫自己的init,getitem和len函數。我的大多數修改都出現在getitem部分,我在其中指定如何讀取圖像并從目标列表列表中獲取相應的目标,我将其稱為“king_of_lists”。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)2

我喜歡彩色代碼與您可以添加到博客文章中的灰色代碼片段

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)3

性别:女,地區:歐洲,格鬥風格:近戰,陣營:NE

構建基本Pytorch模型

對于這個,我的第一步是從一個非常基本的模型開始。我開始制作一個模型,将Resnet50作為主幹,将其輸出提供給5個輸出頭。

通過初始化需要在init部分中優化的圖層和事物,在Pytorch中構建自定義網絡非常簡單。然後,您可以定義數據在前向部分中如何流經模型。對于這個用例,我真正做的是初始化該核心模型(resnet50),然後将輸出輸入我創建的5個頭(y1o、y2o、y3o、y4o、y5o)。這些是模型的輸出,而不是您通常會看到的标準單輸出。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)4

第一款隻有Resnet50和5個輸出頭的型号

要查看訓練循環,請随時查看筆記本(此處)。主要是我修改了标準的Pytorch網絡。然而,有趣的部分是如何計算損失函數。我認為這實際上會更複雜,但它實際上非常簡單,基本上我隻計算每個的損失(loss0,loss1,loss2,loss3,loss4),将它們加在一起然後用它來進行反向傳播。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)5

我使用Adam優化器訓練了50個epoch的基本模型,學習率為.0001,随着時間的推移衰減并保存了具有最佳驗證損失的模型。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)6

總的來說并不可怕,但也不是很好。但總體而言,它的表現優于我之前發布的基于Keras VGG的網絡。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)7

基本Pytorch模型通常優于Keras模型。此輪中的Resnet正在數據集上進行微調,這是有道理的。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)8

性别:男,地區:中東,戰鬥風格:魔術,陣營:LG,主要顔色:['白色','藍色','紫色']

這是一個不錯的開始,但我認為我可以改善模型的全面性能。雖然我認為Pytorch模型仍然不合适。為此,我添加了兩個更為密集的256層,并将其輸入模型中。以下代碼段有修改,基本上隻需添加兩個大小為256的x1和x2層。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)9

增加了兩層x1和x2以獲得額外的火力

在訓練這個新模型後,與我建立的基礎Keras和Pytorch模型相比,訓練和驗證準确性有所提高,整體性能更好。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)10

一方面,我們可以就此打住,但我在這裡注意到的另一件事是,雖然模型總體上表現更好,但現在已經過度拟合了訓練集。請參閱下面的第二個模型的分數。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)11

既然它是過度拟合的,我想我可以添加一些正則化來試圖抵消它。這需要一些修補,但我發現在這種情況下,相對較高水平的批量标準化是有用的。在這次運行中,我最終使用了2e-1。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)12

添加bn1和bn2作為正則化

在第三輪之後,增加批量标準化的模型顯示出比先前最佳對準精度大約10個百分點的增加,我認為這是最難的類别,并且戰鬥風格增加了5個百分點。然而,性别和顔色則成下降趨勢。它與特定角色的原始區域相關聯。總的來說,我會說這部分的成功是喜憂參半的,但在難度較大的領域确實有所幫助。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)13

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)14

值得注意的是,雖然我添加了批量規範來嘗試減少過度拟合,但是訓練和驗證之間的差距與以前類似......模型的預測似乎比以前更好地推廣,這也是添加正則化的目标結果之一。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)15

性别:女,地區:中東,戰鬥風格:遠程,陣營:NE,主要顔色:['藍色','金色','黑色']

結論和結束

我認為這個簡單的調優過程是一個很好的指示器,說明您在普通網絡上使用的策略仍然可以應用于多任務模型。這方面的一個難點是難以針對多任務模型中的特定缺陷,現在我隻針對更大的總體問題(所有節點的過拟合和欠拟合)。在這些頭上添加額外的圖層和節點是一種選擇,但随後成為您需要調整的其他超參數。

因此,最後兩個模型的表現相當類似,基礎更深的網絡在顔色上表現更好,在性别上略有差異,在區域上表現得更好,而批處理規範化模型在戰鬥風格和對齊方面表現得更好。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)16

這引發了選擇什麼模型的問題。您可以計算像Fbeta這樣的東西來處理它,以嘗試在所有不同的任務中制定組合指标。如果您的目标是擁有單一的最佳模型,那麼這個單一的度量标準就有意義了。

如果您願意使用多個模型,則另一個選擇是采用性能良好的模型,并将它們集成起來進行預測。這将允許您利用每個不同模型中性能更好的區域。我認為在這種情況下可行是可行的,一種模型在對齊類别上做得更好,而第二種模型在很多不同類别中做得更好。

在另一種情況下,您的任務執行得較差,在這種情況下,color的效果不是很好,您可以在集成中添加一些專門的模型,以嘗試提高這些領域的性能。

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)17

性别:女,地區:歐洲,格鬥風格:魔術,陣營:LG,主要顔色:['藍色','白色','銀色']

fate 工作建議(在FateGrandOrder上調整多任務Pytorch網絡)18

編譯出品

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved