層級表示學習(hierarchical representation learning)
/ hy-uh-RAR-kik-ul rep-ree-zen-TAY-shun LURN-ing /
層級表示學習是深度學習最核心的思想:不再由人去手工挑選程式該尋找的線索,而是讓機器自己去發現它們,並一層一層地把理解搭建起來——底層是簡單的概念,越往上越豐富。想想你讀一頁印刷品的過程。你的眼睛先捕捉到一筆筆細小的墨跡;這些筆畫拼成字母;字母拼成詞;詞拼成一個終於有意義的句子。每一層,都是由它下面那一層搭起來的。
深度網路也是這樣運作。給它看一張照片,第一層學到的不過是對邊緣和一塊塊顏色起反應。下一層把這些邊緣組合成轉角和簡單的紋理。更高一層把紋理拼成部件——一隻眼睛、一個車輪、一片葉子。最頂層把這些部件湊到一起,得出「貓」或「車」。所謂「表示」,就是網路在某一層上對輸入的描述方式:底層握著的是粗糙、局部的描述,高層握著的則是有意義、抽象的描述。沒有人手工定義什麼是「邊緣」、什麼是「眼睛」;網路靠著被餵以大量例子、再被輕輕往正確答案那邊糾正,自己長出了這些概念。
它為什麼重要:幾十年來,機器學習最難的部分一直是「特徵工程」——由人煞費苦心地決定該把哪些量度餵給模型。層級學習把這件事自動化了,這才是深度網路在影像、聲音和語言上一躍領先的真正原因。但也要老實說出代價:它通常需要海量的資料和算力,而且網路發明出的那些概念,未必是我們所期望的、整潔可讀的概念。這些層確實抓住了結構,但並不保證會像我們那樣去切分世界。
在一個人臉辨識網路裡,從底到頂各層依次亮起來的是:邊緣 → 眼角和唇線 → 完整的眼睛、鼻子、嘴 → 整張臉。每一級都是由下面那一級拼裝而成的。
底層是簡單零件,頂層是完整概念——靠學習得來,而非手工寫就。
「邊緣 → 部件 → 物體」這套整齊的說法是教科書式的理想;真實網路要混亂得多,我們也未必總能讀出每一層究竟表示了什麼。最大的收穫在於:這些特徵是自動學到的,而非靠人手設計的。