0
本文作者: 劉鵬 | 2018-06-12 17:06 |
雷鋒網(wǎng) AI 科技評論按:與單標(biāo)簽圖像分類相比,多標(biāo)簽圖像分類是一種更符合真實(shí)世界客觀規(guī)律的方法,尤其在圖像和視頻的語義標(biāo)注,基于內(nèi)容的圖像檢索等領(lǐng)域有著廣泛的應(yīng)用。
在雷鋒網(wǎng)旗下學(xué)術(shù)頻道 AI 科技評論的數(shù)據(jù)庫項(xiàng)目「AI 影響因子」中,優(yōu)必選悉尼 AI 研究院憑借4 篇 CVPR 錄用論文、8.2億美元的C輪融資、AI首席科學(xué)家陶大程當(dāng)選澳大利亞科學(xué)院院士的不俗表現(xiàn),排在「AI 影響因子」前列。
近期,在 GAIR 大講堂上,北京大學(xué)計(jì)算機(jī)視覺碩士何詩怡分享了她用強(qiáng)化學(xué)習(xí)解決多標(biāo)簽圖像分類問題的方法和經(jīng)驗(yàn)。公開課視頻回放地址:http://www.mooc.ai/open/course/499
何詩怡,北京大學(xué)計(jì)算機(jī)視覺碩士,優(yōu)必選悉尼 AI 研究院學(xué)生,主要研究方向?yàn)閺?qiáng)化學(xué)習(xí),深度學(xué)習(xí)等。
分享題目:基于課程學(xué)習(xí)的強(qiáng)化多標(biāo)簽圖像分類算法
分享提綱
基于課程學(xué)習(xí)的機(jī)制,我們提出了一種強(qiáng)化多標(biāo)簽分類的方法來模擬人類從易到難預(yù)測標(biāo)簽的過程。
這種方法讓一個強(qiáng)化學(xué)習(xí)的智能體根據(jù)圖像的特征和已預(yù)測的標(biāo)簽有順序地進(jìn)行標(biāo)簽預(yù)測。進(jìn)而,它通過尋求一種使累計(jì)獎賞達(dá)到最大的方法來獲得最優(yōu)策略,從而使得多標(biāo)簽圖像分類的準(zhǔn)確性最高。
在真實(shí)的多標(biāo)簽任務(wù)中,這種強(qiáng)化多標(biāo)簽圖像分類方法的必要性和有效性。
以下為雷鋒網(wǎng) AI 科技評論整理的分享內(nèi)容:
優(yōu)必選成立于 2012 年,是一家全球領(lǐng)先的人工智能和人形機(jī)器人公司,目前已經(jīng)推出了消費(fèi)級人形機(jī)器人 Alpha 系列,STEM 教育智能編程機(jī)器人 Jimu,智能云平臺商用服務(wù)機(jī)器人 Cruzr 等多款產(chǎn)品,并成功入駐全球 Apple Store 零售店。
此外,優(yōu)必選還與清華大學(xué)成立了智能服務(wù)機(jī)器人聯(lián)合實(shí)驗(yàn)室,與悉尼大學(xué)成立了人工智能研究院,與華中科技大學(xué)成立了機(jī)器人聯(lián)合實(shí)驗(yàn)室,在人形機(jī)器人驅(qū)動伺服、步態(tài)運(yùn)動控制算法、機(jī)器視覺、語音/語義理解、情感識別、U-SLAM(即時定位與地圖構(gòu)建) 等領(lǐng)域深度布局。2018 年,優(yōu)必選完成了 C 輪融資,估值 50 億美元。
講解之前,我想感謝我的合作者們,他們在學(xué)習(xí)和工作中都給予了我很大的幫助,首先是郭天宇博士,徐暢博士,許超教授,和陶大程教授。
開始介紹今天分享的主要內(nèi)容,首先介紹多標(biāo)簽圖像分類(Multi-label Image Classification),多標(biāo)簽圖像分類,顧名思義,就是指一幅圖像有多個標(biāo)簽。
傳統(tǒng)的單標(biāo)簽圖像分類是指一幅圖只有一個標(biāo)簽,比如手寫數(shù)字識別數(shù)據(jù)集 Mnist:一張圖只有一個標(biāo)簽,從 0 到 9 的一個數(shù)字;ImagineNet,一個數(shù)據(jù)集有 1000 個標(biāo)簽,每張圖都只對應(yīng)一個標(biāo)簽。但在真實(shí)的生活中,一幅圖往往是屬于多個標(biāo)簽的,比如一幅圖有桌子,很有可能也有瓶子,桌子和瓶子都是這幅圖像的標(biāo)簽,下面是給出的多標(biāo)簽圖例:
這兩幅圖例都屬于多標(biāo)簽圖像,一副圖中有多個物體,多個物體的標(biāo)簽組成了整幅圖的標(biāo)簽,近些年來,這些多標(biāo)簽分類的方法有著各種各樣的應(yīng)用,比如圖像的語義標(biāo)注,視頻的語義標(biāo)注,還有基于內(nèi)容的圖像檢索等等。
相較于單標(biāo)簽圖像分類,多標(biāo)簽圖像分類有一些難點(diǎn):
難點(diǎn)一,標(biāo)簽之間存在各種各樣的共生關(guān)系,比如天空和云彩,一幅圖中有天空,很大可能也是有云彩
難點(diǎn)二,這種標(biāo)簽之間的關(guān)系維度很高,用模型難以衡量
難點(diǎn)三,很多標(biāo)簽在語義上有重疊,比如 cat 和 kitten 都指貓,所以這兩個標(biāo)簽在語義上有重疊
近些年來,關(guān)于多標(biāo)簽圖像分類有著各種各樣的研究,下面來介紹相關(guān)的工作。
多標(biāo)簽圖像分類的一種典型做法,就是將多標(biāo)簽問題轉(zhuǎn)化為單標(biāo)簽問題,最具有代表性的方法就是 Binary Relevance 方法,即我們常說的 BR 方法,假設(shè)有 3 個標(biāo)簽,那么這里就有 3 個分類器,每一個分類器都對應(yīng)一個二分類器,輸入 X,經(jīng)過 3 個分類器,分別得到 Y1,Y2 和 Y3,它們的值都是 0 或 1,如果值是 0,就表示標(biāo)簽不屬于該圖像,如果是 1,就表示標(biāo)簽屬于該圖像。
關(guān)于 BR 分類器的選擇是多種多樣的,有人使用 CNN,也有人使用決策樹。近些年來,大家使用 CNN 作為基本分類器,然后用 ranking loss 和 cross entropy loss 來訓(xùn)練,但是這些方法都有一個共同的問題,它們忽略了標(biāo)簽之間的相關(guān)性。但是在多標(biāo)簽圖像分類問題中,標(biāo)簽之間的相關(guān)性廣泛存在。
怎么來衡量標(biāo)簽之間的相關(guān)性?
一種簡單的方法,就是用預(yù)測過的標(biāo)簽來推斷當(dāng)前的標(biāo)簽,即用順序預(yù)測的方法,順序預(yù)測的方法一個典型的例子就是 classifier chain 的方法,右邊是 classifier chain 的示意圖,這比剛才的 Binary Relevance 方法多了幾條線,就是從 Y1 到 Y2 的線,從 Y2 到 Y3 的線,還有從 Y1 到 Y3,剛開始的時候,X 輸入進(jìn)分類器,然后得到 Y1,將 Y1 和 X 同時作為輸入,經(jīng)過一個分類器得到了 Y2,然后將 X,Y1,Y2 再同時作為輸入,經(jīng)過分類器得到 Y3,也就是說,后面標(biāo)簽的預(yù)測依賴前面已經(jīng)預(yù)測過的標(biāo)簽,classifier chain 的方法需要固定的順序,而這個順序是提前定好,Classifier Chain 方法對順序非常敏感,為了減少順序帶來的影響,classifier chain 就有了各種各樣的變種,比如 ECC(Ensemble Cassifier Chain),就是用 ensemble 的方法來提高 Classifier Chain 的 performance,除此之外,還有一種 CNN-RNN 的方法。
CNN-RNN 的方法,用 CNN 來提取圖像的語義信息,然后用 RNN 去 model 這個圖像和 label 之間的關(guān)系,但這個方法也需要一個提前定好的順序。
除此之外,還有一些圖的模型,如下圖所示。
現(xiàn)有的方法不是同時預(yù)測圖像的標(biāo)簽,就是進(jìn)行順序預(yù)測,但順序需要提前定好,而且一般都是整個數(shù)據(jù)集給定一個順序,這與人,動物的學(xué)習(xí)方法相悖。人和動物一般遵循的一種從簡單到復(fù)雜的一種順序,也就是我們常說的先易后難。在生物學(xué)里,這種機(jī)制叫做課程學(xué)習(xí)機(jī)制,2009 年的 ICML 提出了這種課程學(xué)習(xí)的機(jī)制,并且驗(yàn)證了能夠通過改變學(xué)習(xí)的順序(對知識進(jìn)行簡單的組織),來提升機(jī)器學(xué)習(xí)的效率。
使用 Curriculum Learning 來解決深度學(xué)習(xí)問題的時候,先學(xué)習(xí)圖(上排)這些比較 easy 的樣本,再去學(xué)習(xí)下面這些比較 hard 的樣本,從而去提升算法的 performance 和更加有利于它的收斂,在這里我們將這種課程學(xué)習(xí)的機(jī)制延伸到多標(biāo)簽圖像分類的問題中。
其實(shí),對于人和動物來說,同一幅圖中物體的的順序并不是固定的,它們的順序根據(jù)物體在圖像中的大小,一些語義之間的聯(lián)系這些因素決定,給整個數(shù)據(jù)集定一個順序不符合人的課程學(xué)習(xí)機(jī)制,因此,我們就提出了基于課程學(xué)習(xí)的強(qiáng)化多標(biāo)簽學(xué)習(xí)的方法,讓強(qiáng)化學(xué)習(xí)的智能體根據(jù)圖像的內(nèi)容和標(biāo)簽的關(guān)系,來學(xué)習(xí)該如何預(yù)測以及預(yù)測的順序。
其次,在真實(shí)的圖像標(biāo)注系統(tǒng)中,一般都是用戶上傳一幅圖,隨后系統(tǒng)會為用戶推薦幾個標(biāo)簽,會給出一些反饋,面對給出的標(biāo)簽,用戶會給出一些反饋。而這些反饋都很少被研究過,在這篇文章中我們也將反饋的信息都融入到了多標(biāo)簽學(xué)習(xí)的過程中。
上面我們提到的都是用強(qiáng)化學(xué)習(xí)來進(jìn)行多標(biāo)簽分類學(xué)習(xí)的問題,下面我們就來簡單介紹一下強(qiáng)化學(xué)習(xí)。
強(qiáng)化學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個重要分支,強(qiáng)化學(xué)習(xí)與其他機(jī)器學(xué)習(xí)的不同之處在于,首先強(qiáng)化學(xué)習(xí)沒有教師信號,比如它沒有 label,只有 reward。強(qiáng)化學(xué)習(xí)的反饋有延遲,不能夠立即反饋。強(qiáng)化學(xué)習(xí)輸入的相當(dāng)于系列數(shù)據(jù),它是從一個狀態(tài)到另一個狀態(tài)。強(qiáng)化學(xué)習(xí)智能體之間的動作是會影響到之后的數(shù)據(jù)。
強(qiáng)化學(xué)習(xí)有三個要素,第一個要素是狀態(tài) State,第二個要素是動作 Action,第三個要素是 Reward。在 t 時刻的時候,智能體的狀態(tài)是 St,通過觀察環(huán)境,采取動作 at,同時得到環(huán)境的反饋 rt,進(jìn)入到了下一個狀態(tài) St+1,重復(fù)上述過程,直到交互結(jié)束。這就是一個強(qiáng)化學(xué)習(xí)的基本過程。
除此之外,強(qiáng)化學(xué)習(xí)還有許多的應(yīng)用,比如在大部分的 Atari 游戲中,強(qiáng)化學(xué)習(xí)的智能體的得分超過人類;AlphaGo(是將強(qiáng)化學(xué)習(xí)和蒙特卡洛樹搜索 (UCT) 結(jié)合在一起),強(qiáng)化學(xué)習(xí)的智能體能夠下贏世界冠軍;在文本領(lǐng)域,可以利用強(qiáng)化學(xué)習(xí)的算法,根據(jù)圖片生成文本;在圖像領(lǐng)域,圖(右下)是利用強(qiáng)化學(xué)習(xí)來做目標(biāo)檢測的一個例子。
下面介紹一下強(qiáng)化多標(biāo)簽圖像分類學(xué)習(xí)方法。
首先,我們來簡單介紹一下里面用的符號,X(大寫)是輸入語,Y(大寫)是 label 集,如果有 m 個標(biāo)簽的話,它的 label 集就是從 1 到 m。x(小寫)是輸入的一個例子,在這里我們一般指的是一幅圖像,y(小寫)是屬于這個例子的標(biāo)簽,如果這個例子有 K 個標(biāo)簽,那么 y={y1,yk},yi 對應(yīng)著第 i 個標(biāo)簽屬于 x。
我們將強(qiáng)化學(xué)習(xí)這個方法和普通的監(jiān)督學(xué)習(xí)方法來進(jìn)行一下對比,在傳統(tǒng)的監(jiān)督學(xué)習(xí)方法中,在訓(xùn)練的時候,x,y 已知,也就是輸入 X 和輸出 Y 在訓(xùn)練的時候已知,我們學(xué)習(xí)的就是從 X 到 Y 的一個映射,但是在強(qiáng)化學(xué)習(xí)問題中沒有 label,也就是說 Y 未知,我們得到是只有反饋 p,在一個時刻,輸入是 x,采取動作是 zi,就會得到一個 zi 的反饋:pi。一般來說,pi 屬于 {-1,+1} 這兩個值,它反映了推薦標(biāo)簽的好壞,-1 值推薦這個標(biāo)簽得到的反饋不好,+1 指推薦這個標(biāo)簽得到的反饋是好的。
在這個任務(wù)中,我們將這個圖像序列建模的過程建立成一個 Markov 的過程,Markov 過程有 5 個要素,S,A,R,T,γ 。
S:狀態(tài)空間(state space)
A:動作集,一般動作集都是有限的
R:在執(zhí)行狀態(tài) S 下,執(zhí)行動作 A 會得到一系列 R 構(gòu)成的空間,稱為 R 空間,R 一般屬于 {-1,+1},它反映了執(zhí)行動作 A 之后得到的反饋的好壞
T:在狀態(tài) S 下執(zhí)行 A 得到下一個一個狀態(tài),就是之間狀態(tài)的轉(zhuǎn)移
γ:屬于 [0,1]
π:在這里指我們想要找的策略,是從 S 到 A 的一個映射
首先我們來介紹第一個要素,A,即 Action。
一個智能體它的動作就是為一幅圖選擇一個標(biāo)簽,在多標(biāo)簽分類圖像這個問題里面,動作 A 這個集和 label 的集一樣,如果一個數(shù)據(jù)集有 m 個標(biāo)簽,它就有 m 個動作,圖(左)對應(yīng)的是這個數(shù)據(jù)集的標(biāo)簽集,它有 person,cat,bike 以及 sofa 這些標(biāo)簽,然后它會分別對應(yīng)到動作集 A 中來,比如說 person 對應(yīng) 1,cat 對應(yīng) 2,一一對應(yīng)。
狀態(tài) S,State
狀態(tài) S 是用一個二元組來表示的,二元組的第一個元素是圖像的元素 f(feature),第二個元素是 action history h,所以 s=(f,h),每一個狀態(tài)都屬于整個狀態(tài)空間。
首先,feature f 是從一個 VGG16 的全連接層、4096 維的向量提取出來,VGG16 已經(jīng)在 ImageNet 上面訓(xùn)練好,但是還需要在多標(biāo)簽數(shù)據(jù)集上進(jìn)行返訓(xùn),這樣做是因?yàn)?imageNet 和這個 multi-label 數(shù)據(jù)集的標(biāo)簽可能不完全一致,相較于 imageNet 這個單標(biāo)簽的數(shù)據(jù)集而言,多標(biāo)簽數(shù)據(jù)集的語義和空間關(guān)系會更加復(fù)雜一些,所以在 muti-label 數(shù)據(jù)集上的返訓(xùn)非常有必要。
二元組的第二個元素 h,h 是一個實(shí)向量,代表之前預(yù)測過的標(biāo)簽,即從這個 episode 開始,一直到當(dāng)前時刻所有預(yù)測過的標(biāo)簽都叫做 action history,每個動作都對應(yīng)著 1 到 M 的一個數(shù)字,所以我們將每一個動作編碼成一個向量,如果這個動作僅有 M 個動作,那么每一個動作都會被編碼成一個 M-1 位的向量,就是上圖(下)的公式,e 代表每一個動作的編碼。
上圖一個具體的例子,初始的時候,這張圖沒有任何的標(biāo)簽預(yù)測過,標(biāo)簽頁面為空,然后我們進(jìn)行它的第一個動作,就是預(yù)測它的標(biāo)簽是 person,在這個圖里面找到了它的標(biāo)簽 person,然后把它添加到 action history 里面。在 t=3 時刻的時候,預(yù)測了標(biāo)簽 car,再將 car 添加到 action history 里面來,在 t=4 的時刻,預(yù)測了標(biāo)簽 tree,所以再將 tree 添加到 action history 里面來,所以我們可以看到,從初始狀態(tài)一直到這個 episode 的結(jié)束,它的 action history 是從一開始的空到基本能填滿一些標(biāo)簽,再看圖(左),剛才我們說每一個動作都被建模成一個 M-1 位的向量,如果我們?nèi)?n 個動作作為 action history 的話,那么 h 的維度就是 n*(M-1)。
然后是 Transitions T,在我們這個 MDP 過程(馬爾科夫決策過程)中,T 是固定的,也就是說對于一個狀態(tài)和動作的對來說,它能夠到達(dá)的新狀態(tài)是固定的,也就是說在狀態(tài) s 下采取動作 a,能夠達(dá)到唯一的下一個狀態(tài)值 sp,即上圖中的這個公式:T(s,a)=T((f,h)a)=(f,h')。因?yàn)閷τ谝粋€ episode 來說,圖像的 feature 是不變的,都是 VGG16 全連接的那個 feature,變化的只是 action history。
看上圖(下部),將該圖像輸入到 VGG16 中,抽取全連接層的 4096 維的 feature,組成了這個 feature f。這里,我們假設(shè)已經(jīng)預(yù)測了一個標(biāo)簽 person,所以這個就是它的 action history,兩者共同構(gòu)成了狀態(tài) s。在本時刻,我們預(yù)測 a=car,就會得到下一個狀態(tài),就是同樣的狀態(tài)加上變化了的 action history,將這個 car 添加到 action history 列表中來,得到了一個狀態(tài) s',對于每一個狀態(tài)而言,它采取了每一個固定動作之后,它得到了下一個狀態(tài) s'也是唯一的。
在真實(shí)的場景中,這些反饋是離散的(reward 是離散的),但是在這里為了簡化這個問題,我們將 reward 設(shè)置了一下:如果它的反饋是好的,那么就將它的 reward 設(shè)置成 1,如果它的反饋不好,就將它的 reward 設(shè)置成-1,如何來評定這個好和不好?
在這個問題中,如果它選的標(biāo)簽是對的,那么我們就認(rèn)為它是好的,如果它選的標(biāo)簽不屬于這個圖像,就認(rèn)為它是不好的。圖(下)是一個具體的例子,在同一個狀態(tài)下,我們?nèi)ミx擇動作,如果它選擇的動作是 car 或 tree,就說明這個兩個標(biāo)簽都是屬于該圖像,說明它選對了,就會得到 r=+1 這個標(biāo)簽。如果它選的標(biāo)簽是 dog 或 bus,就說明這兩個標(biāo)簽是不屬于這個圖像,說明它選錯了,就會得到 r=-1。
這是一個順序預(yù)測的例子,該例子更清晰的顯示 r 如何設(shè)置,在剛開始的時候圖像是有 horse 和 person 兩個標(biāo)簽,如果我給這個圖像一個標(biāo)簽「dog」,這個「dog」是不屬于這個圖像的,所以它會得到一個 reward=-1。如果給一個標(biāo)簽 horse 或 person,這兩個標(biāo)簽都屬于這個圖像,它們都會得到一個 reward=+1,當(dāng)然預(yù)測成其他標(biāo)簽也不對,它們得到的 reward 都是-1。選擇了標(biāo)簽 dog 之后,我們就會選擇預(yù)測它的下一個標(biāo)簽,如果它的下一個標(biāo)簽預(yù)測的是 horse,就說明它選對了,就給一個 reward=+1。如果它下一個標(biāo)簽選擇的是 person,也認(rèn)為它選對了。當(dāng)然,如果 horse 的下一個標(biāo)簽選錯了,就給它一個-1,如果它的下一個標(biāo)簽選對了,就給+1,另一邊也是如此。
然后我們計(jì)算一下這兩步總體的 reward 和,可以看出當(dāng)一個 reward 選對,一個 reward 選錯時,它們總體的 reward 和為 0,只有當(dāng)兩個標(biāo)簽都選對的時候,比如 horse,person 或者 person,horse,它才會得到 reward=+2,其他的情況會得到 0 或者-2。對于我們這個多標(biāo)簽圖像分類問題轉(zhuǎn)化成標(biāo)簽順序預(yù)測的問題,目標(biāo)就是尋求一種預(yù)測,能夠讓它得到的 reward 和最大,也就對應(yīng)著它的準(zhǔn)確率是最高。
上面的方法已經(jīng)介紹完畢,下面我們來介紹用于求解多標(biāo)簽強(qiáng)化圖像分類的 deep Q-learning 的算法。
強(qiáng)化學(xué)習(xí)的最優(yōu)策略,就是剛才講解的累計(jì)獎賞和最大的策略。在多標(biāo)簽圖像分類任務(wù)中,累計(jì)獎賞和最大對應(yīng)預(yù)測出的準(zhǔn)確度最大。我們用 deep Q-learning 來解決尋求最優(yōu)策略的問題,deep Q-learning 是運(yùn)用神經(jīng)網(wǎng)絡(luò)來預(yù)測每一個狀態(tài)動作對對應(yīng)的 Q 值,使用已經(jīng)訓(xùn)練好的 CNN 作為 feature 的提取器,在訓(xùn)練的時候不再對這一部分進(jìn)行訓(xùn)練,即這一部分的參數(shù)不再進(jìn)行更新了,只需要更新 Q 網(wǎng)絡(luò)的參數(shù),這樣會讓該算法收斂的更快、且更穩(wěn)定。
下圖是 deep Q-learning 的網(wǎng)絡(luò)結(jié)構(gòu)示意圖:
給出一幅圖像,在 VGG 的這個網(wǎng)絡(luò)中輸入已經(jīng)訓(xùn)練好的 CNN,就會得到一個 feature
,將該圖像的 feature 和 action history 并在一起作為狀態(tài),將其作為 deep Q 網(wǎng)絡(luò)的輸入,deep Q 網(wǎng)絡(luò)的輸出是每一個網(wǎng)絡(luò)對應(yīng)的 Q 值,比如這里的 person,cat,bike...sofa 都會對應(yīng)著自己的一個 Q 值,每一次在選擇的時候,我們都會選擇 Q 值最大的動作作為最優(yōu)的動作來進(jìn)行迭代更新。
訓(xùn)練 Q 網(wǎng)絡(luò)的損失函數(shù),經(jīng)典的 deep Q-learning 算法是寫成這樣的形式(見上圖第一行公式),在每一步選取動作的時候,都選取最大 Q 值對應(yīng)的動作,但是這里我們根據(jù)多標(biāo)簽圖像的這個問題,進(jìn)行了一下變化,就是不再選取最大的 Q 值對應(yīng)的動作,而是直接將下一個動作保存起來,存在 experience replay 里,更新的時候直接用這一部分(紅圈標(biāo)注部分)的 Q 值,參數(shù)的迭代也是這種形式。
下面是 deep Q-learning 的具體算法:
初始的時候,我們初始化一個 replay memory D,和整個動作集 A,我們設(shè)置一個 B 作為已經(jīng)預(yù)測過的動作集,然后設(shè)置了一個動作集 C 作為沒有預(yù)測過的動作集。因?yàn)樵诘湫偷膹?qiáng)化學(xué)習(xí)問題中,對于每一個 episode 而言,智能體每一步是選取一個動作,一個 episode 的動作可以重疊,但是對多標(biāo)簽圖像分類而言,每一幅圖都不會存在重復(fù)的標(biāo)簽,因此在用強(qiáng)化學(xué)習(xí)解決多標(biāo)簽圖像分類的問題時,每一幅圖,每一個時刻都不再選擇這些已經(jīng)預(yù)測過的標(biāo)簽,這就是為什么要設(shè)置已經(jīng)預(yù)測過的動作集 B 和沒有預(yù)測過的動作集 C,然后從 t=1,T 時刻,在每一個時刻都首先計(jì)算一下 C,C 是沒有預(yù)測過的標(biāo)簽動作集,C=A\B,即從 A 中將 B 的元素去掉,然后遵循∈-greedy,從 C 中選取一個動作,執(zhí)行這個動作,然后會得到一個 reward r,同時進(jìn)入下一個狀態(tài),這樣一次交互就已經(jīng)完成了,然后將剛才執(zhí)行過的動作放入已經(jīng)預(yù)測過的動作集 B 中,然后重新計(jì)算 C=A\B,然后遵循∈-greedy 這個策略,選擇下一個動作的狀態(tài) at+1,然后將 St,at,rt,St+1,at+1 一起放在 D 中,一個和環(huán)境交互的過程就完成了(如上圖)。
上圖(紅線下部分)是訓(xùn)練的過程,在訓(xùn)練的時候,我們從 D 中隨機(jī)抽取一個 mini batch 出來,然后用圖(紅線下部分)的公式來計(jì)算 Target Q 網(wǎng)絡(luò)的值,然后根據(jù)梯度更新 Q 網(wǎng)絡(luò)的參數(shù)和 target Q 網(wǎng)絡(luò)的參數(shù),執(zhí)行 M 次,最后通過這一系列算法的過程就會得到一個最優(yōu)的動作和最優(yōu)的策略,這就是 deep Q-learning 用于多標(biāo)簽圖像分類算法的流程。
下面介紹一下實(shí)現(xiàn)的一些細(xì)節(jié):
我們用的數(shù)據(jù)集是 PASCAL VOC2007 和 PASCAL VOC2012,我們的 deep Q 網(wǎng)絡(luò)的設(shè)置是第一層有 512 個節(jié)點(diǎn),第二層有 128 個節(jié)點(diǎn)。因?yàn)檫@個數(shù)據(jù)集有 20 個標(biāo)簽,所以最后一層是有 20 個節(jié)點(diǎn)。數(shù)據(jù)集有 20 個標(biāo)簽,每一個動作都可以用一個 19 維的向量來表示,每一個 action history h 都會編碼之前的兩個動作,所以 h 總共有 38 位。我們訓(xùn)練這個網(wǎng)絡(luò)的 3 個 epoch,每一個 epoch 都表示整個數(shù)據(jù)集圖像都標(biāo)記完,在訓(xùn)練的時候,遵循∈-greedy 這個策略,∈在前兩個 epoch 的時候從 0 到 1.2,最后一個 epoch 固定在 0.1。
介紹一下實(shí)驗(yàn)的結(jié)果:
首先,介紹實(shí)驗(yàn)中的 PASCAL VOC2007 和 PASCAL VOC2012,PASCAL VOC2007 一共有 9963 張圖,其中 5011 張是 trainval 的樣本,4952 張是 test 的樣本。PASCAL VOC2012 的數(shù)據(jù)集的圖像數(shù)量約為 VOC2007 的兩倍,是 22531 張圖,其中 trainval 的圖有 11540 張,test 圖有 10991 張,它們每個數(shù)據(jù)集都只有 20 個標(biāo)簽。
衡量指標(biāo),我們用 average percision 和 mean of averge percison 來衡量。
首先,是我們設(shè)計(jì)實(shí)驗(yàn)來探究了學(xué)習(xí)出來的 label 是不是符合課程學(xué)習(xí)的機(jī)制,我們標(biāo)準(zhǔn)的算法叫做 RMIC,然后我們設(shè)計(jì)了一個 RMIC-fixed 的算法,RMIC-fixed 是 RMIC 的一個變種算法,它是這樣設(shè)計(jì)的:
假設(shè)在訓(xùn)練集中出現(xiàn)次數(shù)較多的標(biāo)簽,相較于訓(xùn)練集中出現(xiàn)次數(shù)較少的標(biāo)簽,預(yù)測的時候應(yīng)該更靠前一些,因此我們計(jì)算了每一個標(biāo)簽出現(xiàn)的次數(shù),然后按照標(biāo)簽次數(shù)從多到少設(shè)計(jì)了一個固定的順序,這就是我們?yōu)?RMIC 設(shè)計(jì)的固定順序,但是相對于標(biāo)準(zhǔn)的 RMIC 來說,RMIC-fixed 的 reward 設(shè)置有一些不同,舉一個例子,如果我們定義好的這個順序是 person 和 dog 的話,那么我們預(yù)測的順序是 dog 和 person 的話,那么 RMIC-fixed 得到的 reward 就是-1 和-1,RMIC 得到的 reward 是+1 和+1,RMIC-fixed 是當(dāng)你預(yù)測的順序和定義好的順序完全一致的時候,它的 reward 才會都是+1。我們通過比較這兩種辦法來判斷學(xué)習(xí)到的標(biāo)簽順序是不是根據(jù) label 出現(xiàn)的頻率從多到少的順序。
然后我們用下面的指標(biāo)來衡量:
第一個指標(biāo),類平均和樣本平均的準(zhǔn)確率,即 class-level 和 example-level 的 precision
第二個指標(biāo),指標(biāo)是類平均和樣本平均的召回率,即 class-level 和 example-level 的 recall 值
第三個指標(biāo),類平均和樣本平均的的指標(biāo)值,即 class-level 和 example-level 的 F 值
下面就是這個實(shí)驗(yàn)的結(jié)果:
無論是在類平均(C-P),還是在樣本平均(E-P)上,RMIC 的 performance 遠(yuǎn)遠(yuǎn)好于 RMIC-fixed,所以標(biāo)準(zhǔn)的 RMIC 方法的學(xué)習(xí)順序優(yōu)于簡單的定義好的順序。
介紹一下標(biāo)簽出現(xiàn)順序和預(yù)測順序之間的關(guān)系,看上圖,紫色的柱體代表的是測試集中標(biāo)簽出現(xiàn)次數(shù)的分布,藍(lán)色柱體表示第一步預(yù)測出來標(biāo)簽的分布,綠色的柱體表示第二步預(yù)測出來標(biāo)簽的分布,黃色表示第三步預(yù)測出來標(biāo)簽的分布。
通過觀察可以發(fā)現(xiàn),第一步預(yù)測出來的標(biāo)簽的分布和測試集上真實(shí)的分布,就是藍(lán)色的分布和紫色的分布大體上一致,出現(xiàn)次數(shù)越多的標(biāo)簽會被更早的預(yù)測出來。在綠色和黃色的分布中,可以發(fā)現(xiàn)這種趨勢變得沒那么明顯了,也就是智能體在已經(jīng)預(yù)測出簡單標(biāo)簽的幫助下,能夠去預(yù)測一些比較難的標(biāo)簽,比如說 person,car 和 dog,它們都是一些比較簡單的標(biāo)簽,往往在第一步就會被預(yù)測出來,然后像后面的 bottle,chair 和 plant 這些標(biāo)簽,它們都是一些比較難的標(biāo)簽,一般在第一步都很難被預(yù)測出來,都在第二步和第三步才預(yù)測出來,也就是說第一步簡單標(biāo)簽的預(yù)測對后面難的標(biāo)簽的預(yù)測有幫助作用。
除此之外,我們還預(yù)測了物體順序和大小的關(guān)系,看上圖,藍(lán)色是第一步預(yù)測出來物體大小的分布,綠色是第二步預(yù)測出來物體大小的分布,黃色是第三步預(yù)測物體大小的分布??梢钥吹奖容^大的物體,在第一步預(yù)測的時候會被預(yù)測出來,舉一個例子,比如 person 和 chair 都會比較大,通常會在第一步被預(yù)測出來,plant 和 bottle 比較小,一般會在第二步預(yù)測出來。也就是說第一步先預(yù)測出來 person,在 person 的幫助下,通常很容易在第二步和第三部預(yù)測出來 plant 和 bottle。經(jīng)過這幅圖和前面的那幅圖可以得出,強(qiáng)化學(xué)習(xí)智能體是 能夠針對每幅圖的內(nèi)容,按照從簡單到復(fù)雜的順序進(jìn)行預(yù)測。
將實(shí)驗(yàn)算法和全監(jiān)督的算法進(jìn)行比較:
我們的算法在訓(xùn)練的時候有 reward,在測試的時候沒有 reward,我們直接用輸入的 Q 值作為置信度的分?jǐn)?shù)來進(jìn)行比較,上面的這些算法都是全監(jiān)督的算法,最后這一行是我們的算法。可以看到,我們的算法和全監(jiān)督的算法相當(dāng),甚至?xí)?yōu)于這些全監(jiān)督的算法,上圖在 VOC2007 上的結(jié)果,下圖是在 VOC2012 山的結(jié)果,我們算法的優(yōu)勢會更加明顯一些,這些結(jié)果就說明我們的算法相較于全監(jiān)督的算法相當(dāng),或者是有一些優(yōu)勢。
我們進(jìn)一步分析了這個 RMIC 算法在不同的 epoch 的預(yù)測結(jié)果,這里一共列出來 3 個 epoch(豎排),觀察這些圖可以發(fā)現(xiàn),從第一個 epoch 到第三個 epoch,預(yù)測出來的標(biāo)簽越來越明顯,尤其是當(dāng)標(biāo)簽個數(shù)比較多的時候,趨勢會更加明顯一些。然后我們挨個分析一下這幾個圖,剛開始 horse 的分?jǐn)?shù)不是很高,隨著 person 被預(yù)測出來,person 的分?jǐn)?shù)越來越高,horse 的分?jǐn)?shù)也會被預(yù)測出來。
觀察第一幅圖(豎排)可以發(fā)現(xiàn),person 是比較容易預(yù)測的,horse 有部分遮擋和比較難預(yù)測的,這說明簡單標(biāo)簽的預(yù)測可以幫助困難標(biāo)簽的預(yù)測。
第二幅圖,car 比較顯眼,基本都被遮擋或者不是很明顯,我們可以看到當(dāng) car 的分?jǐn)?shù)越來越高的時候,person 的分?jǐn)?shù)也越來越高,也就說明,car 的預(yù)測有助于 person 的預(yù)測。
第四幅圖,剛開始的時候,bottle 和 table 的 score 都不是很高,但是 person 的 score 是高于其他的標(biāo)簽的,隨著 person 的 score 越來越高(越來越明顯),然后 bottle 和 table 的 score 也越來越高,說明 person 的預(yù)測有助于 bottle 和 table 的預(yù)測。
第五幅圖,我們可以看到 chair 的預(yù)測直接促進(jìn)了 table 和 sofa 的預(yù)測。
結(jié)論
本文提出了強(qiáng)化多標(biāo)簽分類圖像算法,這個算法模擬人類課程學(xué)習(xí)的機(jī)制,從簡單到復(fù)雜的進(jìn)行標(biāo)簽的預(yù)測。
在這個算法中,一個強(qiáng)化學(xué)習(xí)的智能體,使用圖像的特征和之前預(yù)測過的標(biāo)簽作為狀態(tài),然后讓標(biāo)簽作為動作,尋找一個使得預(yù)測準(zhǔn)確率得到最高的策略。
我們在 VOC2007 和 VOC2012 上證明了我們的實(shí)驗(yàn)的有效性。
參考文獻(xiàn):
以上就是本期嘉賓的全部分享內(nèi)容。更多公開課視頻請到雷鋒網(wǎng) (公眾號:雷鋒網(wǎng)) AI 慕課學(xué)院觀看。關(guān)注微信公眾號:AI 科技評論,可獲取最新公開課直播時間預(yù)告。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。