蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

41

蘋果一出手就要解決人工智慧的瓶頸問題,野心不算小,但是效果也不算不好。最近蘋果機器學習研發團隊一篇機器學習方面的論文,就巧妙地解決了訓練數據收集方面的大問題,不僅已經被頂級學術會議 CVPR 2017(IEEE國際電腦視覺與模式辨識會議)收錄,剛剛上線的 Apple Machine Learning Journal(機器學習日記)網站上的第一篇部落格,也就是這篇論文的介紹。

7 月 19 日剛剛上線的「蘋果機器學習日記」網站,相比其他矽谷 IT 公司的 AI 研究院 Blog 可謂姍姍來遲,大家等待蘋果正式加入知識開放、動作迅速的 AI 研究大家庭已經很久了。不過讓人欣喜的是,第一篇部落格文章就能幫苦於沒有大量訓練數據的研究者解決不小的麻煩。以下就來介紹論文的主要內容。

蘋果要降低準備訓練數據的成本

對於現階段的各種人工智慧來說,用數據對它們進行訓練是一個必不可少的環節,且數據的品質會影響人工智慧的表現極大。比如以 4:1 擊敗李世乭的 AlphaGo 是用大量人類棋譜訓練的,李世乭當時也評價 AlphaGo 棋風有一些人類的影子;近兩個月前以 3:0 戰勝柯潔的 AlphaGo Master 版就是用大量 AlphaGo 高品質自我對局訓練的,讓 2016 年拋出「狂言」的柯潔今年只能甘拜下風。

蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

▲ 人工智慧要先看過很多貓的照片,同時還要告訴它每張照片都是貓。

圍棋之外還有一個典型的人工智慧應用是圖像辨識,人工智慧要先學習過成千上萬張人類分好的、已經標註「貓」的貓咪照片,才能學會辨識其他圖片裡的貓。業內訓練圖像辨識系統一般用的都是 100 萬張等級的帶標註圖像,而財大氣粗的 Google 上週剛剛雄辯地證明,如果用別人的 300 倍那麼多的圖像(3 億張),可以讓辨識正確率進一步上升。只是如此數量的圖像已經沒辦法人類親自標註了,Google 也是用各種手段才湊出這麼多圖像。

「湊更多的圖像」或說數據增補,有一種常見的方法是設計一個圖像模擬器,讓它仿照已有的、分好類的真實圖像,生成同類的圖像,新生成的圖像就帶有標註,可用於人工智慧模型的訓練。這種方法的成本就比人工低多了,但用圖像模擬器生成的圖像往往不如原有的圖像真實,訓練出的模型效果就不理想。

選對思路很重要:提高圖像真實性

所以蘋果的機器學習研發團隊就琢磨,既然能輕鬆生成帶標註的圖像,但它們的真實性不夠好,那我直接在這些圖像的基礎上提高真實性行不行呢?整篇論文要解決的就是這個問題。

基於提高真實性的思路,他們仿照 GANs(對抗性生成式網絡)的模式,設計了一種提高圖像真實性的美化網路。這種美化網路裡包含一個「美化器」R 和一個「鑑別器」D,美化器要想辦法把現有生成的圖像變得更真實,然後把經過美化的圖像拿給鑑別器看;鑑別器則掌握一批真實圖像,參考真實圖像鑑別美化後的圖像是不是真的。

美化器的目的是輸出更真實的圖像來騙過鑑別器,讓它分不出真偽;鑑別器則要不斷提高自己的水準,不能被美化器騙過。這兩個角色會交替更新,美化器輸出的圖像越來越逼真,鑑別器的鑑別能力也水漲船高。最終等到鑑別器怎麼樣都分不出真實和美化後的圖像,這個美化網路就學習完成了。

蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

▲ 美化網路的示意圖,圖像模擬器生成的圖像經過美化器 R 的處理以後變得更真實,鑑別器 D 發揮促進美化器 R 進化的作用。

蘋果論文中的美化網路形式與 GANs 有類似之處,都是利用鑑別器 D 的對抗性促進網路輸出圖像品質的提升;不過 GANs 使用一個生成器 G 從輸入向量完全生成一張新圖像,蘋果論文的美化網路把生成器 G 換成美化器 R,只是對已有圖像做一些美化調整。

另一方面,蘋果的機器學習研發團隊提出這種美化網路的目的,既然是為了降低「湊圖像」的成本,他們可沒忘了把降低成本的目的執行到底。還記得剛才說鑑別者網路要手握一批真實圖像做參考嗎,假如這批用來參考的真實圖像也全都有標註,這部分人工費就還是要付。能不能把這筆錢也省了呢?蘋果的研究員告訴你,能!鑑別器參考用的圖像可以是沒有標註的!

網路設計

提高真實性的想法很好,要怎麼引導美化網路的學習進而得到理想的效果呢?蘋果的研究員動了些小心思。

關鍵點 1:用新設計的鑑別器避免圖像出現瑕疵

以往基於 GANs 的研究中,由於生成器 G 和鑑別器 D 之間是一面對抗、一面交替更新,這就會導致生成器 G 傾向過分強化圖像中某些特徵,鑑別器 D 也跟著關注這些特徵,結果就會造成像素飄移、在圖像中形成瑕疵。這些瑕疵最終會成為網路學習結果的一部分,降低了輸出圖像的真實性。

由於蘋果論文的美化網路同樣具有「邊對抗邊交替更新」的特點,GANs 上出現的這個問題也很容易出現在美化網路裡。蘋果的研究員仔細研究以後,對傳統的鑑別器 D 做了一些調整,它不再像以往的方法對圖像進行整體鑑別,而是把整幅圖像看成許多小塊,分別對所有小塊的像素特徵進行分類,然後統計每個小塊的對抗失真損失;圖像偏離真實圖像越遠,損失就越大。這種圖像分割的做法,雖然限制了鑑別器的感受和辨識容量,但是對圖像細節的關注更多、更平均,對它對抗的美化器從每幅美化後的圖像,接收到的對抗失真損失反饋也是多個局部值的總和,進而獲得更大的提升,訓練後生成圖像的效果更好。

蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

▲ 局部對抗性失真損失的示意圖。鑑別器對每幅圖像輸出一個與原圖同大小的概率表。對抗性失真損失的損失函數,就是來自所有局部像素塊的交叉熵損失的和。

關鍵點 2:要保持圖像的標註

美化網路美化之後的圖像是要做為別的模型的訓練數據,那麼如何保證美化前後的圖像對應的標註保持不變呢?以這篇論文中所使用的資料庫為例,圖像中眼睛注視的角度在美化前後不能有明顯變化,不然就前功盡棄了。

為了保持圖像標註,蘋果的研究員們讓網路把美化前後的圖像進行對比,根據兩幅圖像間的區別設立一個「自我正則 L1 損失」(self-regularization L1 loss)項;圖像間區別越大,損失項就越大。

這樣,上文提到的「局部對抗性失真損失」與這項「自我正則 L1 損失」組合起來,構成了學習過程的優化目標:讓這兩項損失的組合最小。這樣網路輸出的圖像就又有高真實度,又能夠保持標註不變。

關鍵點 3:為鑑別器加上記憶功能

抽像一點講,模擬器生成 + 美化器美化後的圖像並不是真正的真實圖像,但是只要這種圖像的特徵分布與真實圖像的特徵分布相同,鑑別器區分不出來,就達到引導美化網路學習的目的了。

理論上,以往 GANs 模型中的鑑別器手握著真實圖像,它就知道真實圖像的特徵分布(目標分布),只要生成器拿給鑑別器的圖像不符合真實圖像的分布,它就能夠辨認出來。但是目前的水平上實際很容易發生的一件事是,生成器生成的圖像,符合的是另一個完全不同的新分布,然後與之對抗的鑑別器不得不學到一個與之臨近的分布才能進行鑑別,這樣的後果就是鑑別器不能保證總是讓生成器生成的分布更靠近目標分布。兩者邊對抗邊進化的效果很差,就像下方左圖那樣。

蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

▲ 利用歷史圖像幫助鑑別器提高的想法的示意圖,生成器和鑑別器的分布分別用橘色和淺藍色表示。圖示是簡化版本,實際分布可能是複雜的、很少連成一片的。

為了改善這個問題,蘋果的研究人員們在鑑別器中加入了一個歷史記憶的功能,讓它可以儲存生成器在以前的迭代過程中生成的圖片,這樣鑑別器就更不容易忘記圖像空間中它曾經學過的區域。那麼更強的鑑別器就可以幫助生成器更快地向著目標分布前進,如上方右圖。

把這個想法再說明白一點,就是直到網路的訓練結束前,任何時刻、任何一張美化器美化出的圖像對鑑別器來說其實都是「假圖像」,那麼如果鑑別器從來都不會忘記自己曾經認出來過的假圖像,美化器也就「不得不」生成越來越真實的圖像。

這種想法在網路中的實現也很簡單,蘋果的研究人員們在鑑別器中設置了一個隨機替換緩衝區,其中儲存了更早的假圖像。鑑別器迭代時所用的 mini-batch 中,有一半的圖像會來自這個緩衝區,另一半來自生成器或者美化器當前生成的圖像。這樣每個 mini-batch 中都包含一定數量的歷史圖像,經過測試表明這樣的做法對訓練過程有明顯提升。

蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

▲ 訓練鑑別器 D 所用的每個 mini-batch,都同時含有當前迭代的生成器生成的圖像,和來自緩衝區的更早的假圖像。

訓練過程

蘋果的研究人員們一併介紹了訓練過程和其中的一些小技巧供其他的研究人員們參考。

只用正則化損失項進行初始化

上文提到,網路的學習優化目標是「局部對抗性失真損失」與「自我正則 L1 損失」組合起來最小,不過初始化的階段只使用了「自我正則 L1 損失」,以生成與輸入的生成圖像盡可能接近的圖像,美化器會逐漸生成輸入圖像的模糊版本。根據論文介紹,經他們實驗一般的美化器 G 需要迭代 500 到 2,000 輪,然後再加入「局部對抗性失真損失」(這時候鑑別器 D 還沒有參與訓練)。

每輪迭代中步驟數目不同

在每輪訓練迭代中,蘋果的研究人員們對生成器和鑑別器使用的迭代步驟數目是不同的。對於需要用到深度數據的手部姿態估計,生成器 G 每迭代 2 次,鑑別器 D 只迭代一次;在眼部注視方向預測的實驗中,嘗試調優的最終結果是,生成器 G 每迭代 50 次,鑑別器 D 才需要迭代一次。他們發現鑑別器的收斂速度比生成器更快,有部分原因來自鑑別器的訓練批量大小。所以他們的調優辦法是先把鑑別器的迭代次數鎖定為一次,然後從較小的數字開始嘗試不同的生成器的迭代次數,根據鑑別器的損失函數逐漸增加,調整至損失函數平衡。

蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

▲ 損失示意圖。

這是訓練中不同階段的鑑別器和生成器 / 美化器損失的圖示。可以看到,鑑別器的損失一開始很小,說明它可以輕易地分辨美化後的圖像和真實的圖像。然後隨著訓練進行,鑑別者的損失逐漸上升,生成器的損失逐漸減小,輸出的圖像越來越真實。

蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

▲ 隨著訓練進行,美化器的輸出不斷變化。一開始是模糊的圖像,然後網路逐漸學會了重現真實圖像中的細節。

低學習速率;目視做為停止條件

蘋果的研究人員們發現,用很小的學習速率(0.0001 左右)學習很長時間可以得到比較好的效果。他們猜想這種方法之所以效果不錯,可能是因為生成器和鑑別器中的任意一個,一旦有大的變化都會直接甩開對方,學習就難以收斂。對於停止條件,他們則表示很難透過訓練損失的值做判定,所以轉而選擇保存訓練過程中的所有圖片,然後在網路輸出的圖片於肉眼看起來與真實圖像非常相近的時候,手工停止訓練。

實驗結果

說了這麼多,網路的效果到底怎麼樣呢?當然是很好啦。

首先是一個驗證實驗,驗證美化後的圖像能夠保留原有的標註。

蘋果的研究人員們在美化前後的圖像中逐個用橢圓形把虹膜圈了出來,然後計算出兩個橢圓的中心距。美化前後中心距的區別如下圖圖示。在對應的生成圖像和美化後圖像間,用橢圓估計出的瞳孔位置變化相當小,只有 1.1+ / -0.8 像素而已,相對於 55 像素的眼寬是很小的距離。

蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

▲ 生成的圖像和美化後圖像之間瞳孔中心距離的散點圖。

然後是定性實驗,驗證人類肉眼能否區分美化後的圖像和真實圖像。

為了評價美化後圖像的視覺質量,蘋果的研究人員們設計了一個簡單的用戶研究,他們讓一組被試者分辨圖像是真實的還是生成 + 美化後的。被試者們表示,很難從真實圖像和美化後的圖像中找到區別。根據他們的綜合分析結果,10 個被試者看了 1,000 組測試圖像,其中只有 517 組正確地分辨出了真實圖像,這就表明被試者們不能可靠地分辨真實圖像和美化後的圖像。做為對比,當每個被試者看 10 張美化前的生成圖像和 10 張真實圖像的時候,200 組測試中有 162 組都能夠正確分辨出真實圖像。

蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

▲ 一些生成的圖像和對應的美化後圖像的例子。

最後是定量實驗,用不同的圖像訓練一個機器學習模型,測試訓練後模型的表現。

蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

▲ 用美化前後的生成圖片訓練的模型做目視方向預測的結果對比。測試是用真實圖像進行的。圖中曲線越高越好。

相比與用原始的生成圖像訓練,用美化後的生成圖像訓練的模型表現得到了提高。圖中有 2 點值得注意:1. 用美化後的圖像訓練比用原始的生成圖像訓練的效果更好;2. 如果用更多的生成數據,模型的表現還可以得到進一步提高(比如同樣是用經過美化的生成數據,用 4 倍的數據訓練,模型的表現又得到了大幅提高)。

蘋果的研究人員們還拿出了另一項對比結果:利用同樣的資料集,藉助生成圖像 + 美化進行數據增補的方法,他們創下了辨識錯誤率的新紀錄。

蘋果機器學習部落格上線,首篇文章為缺少訓練數據的研究者們提供解決之道

▲ 基於 MPIIGaze 數據集的目視方向預測,不同方法的測試結果對比。[2] 和 [3] 分別為來自 CVPR2015的「 Appearance-based Gaze Estimation in the Wild」和來自 ACM 眼動追蹤研究與應用 2016 的「 Learning an Appearance-based Gaze Estimator from One Million Synthesised Images」。

(本文由 雷鋒網 授權轉載;首圖來源:Flickr/Yagan Kiely CC BY 2.0)