如何評價 Vicarious 在 Science 上提出基於概率圖模型(PGM)的 RCN 模型?
問題中論文題目來自機器之心報道
https://mp.weixin.qq.com/s/jwdYAeCGleKRRiInY85bLw
文題 『A generative vision model that trains with high data efficiency and breaks text-based CAPTCHAs』
論文鏈接 A generative vision model that trains with high data efficiency and breaks text-based CAPTCHAs
目前只有一個回答,是否可以此推斷知乎CV界已經被深度學習佔領?
但是,在我的全球CV/AI群昨晚就此文炸開了鍋,由此將唱響傳統概率圖模型的崛起?
下個月有三篇paper due,沒有時間細讀此文,只是抓取關鍵詞地快速瀏覽了一下。
首先,抓取本文關於數學模型和演算法的關鍵詞:
RCN integrates and builds upon various ideas from compositional models— hierarchical composition, gradual building of invariances, blablabla into a structured probabilistic graphical model such that Belief Propagation can be used as the primary approximate inference engine.
Surfaces are modeled using a Conditional Random Field (CRF) which captures the smoothness of variations of surface properties.
We developed an approximate dynamic programming (DP) method that solves this in linear time.
簡單翻譯一下:
RCN把很多東西綜合起來,最後搞成一個概率圖模型,這樣置信傳播(BP)可以用來求解近似解。
表面用條件隨機場(Conditional Random Field)建模。
最後我們設計了一個近似動態規劃演算法,演算法複雜度是線性的。
因此,可以推斷,RCN本質是概率圖模型,演算法是動態規劃,message passing。
對此文感興趣的朋友,可以google以下關鍵詞,有助於理解:
MAP-MRF, MAP-CRF, Belief Propagation, Message Passing, Danamic Programming.
下面有選擇地梳理一下MRF、CRF建模和演算法的發展歷程及框架:
其中,MRF(Markov Random Field)和CRF是概率圖模型中的無向圖的情況,貝葉斯網路Bayesian network是有向圖(可以刻畫倆條邊w-v和v-w之間的不同處)。
MRF核心意思就是簡化,如上圖左一,簡化成每個node(表示像素點)只和臨近的node有connection,而圖三則是最原始的情況,即每個點和其他所有點都有connection.
當然有更複雜的情況,例如圖像分割領域,convex prior(假設圖像每個分割的形狀是convex),以及connectivity prior(假設每個label的分割必須是聯通的),等等。
Carsten Rother關於MRF/CRF的暑期學校講座ppt:
MRFs and CRFs for Vision: Models Optimization
我的研究方向是用組合優化來做MRF,這個方向最經典的莫過於Yuri Boykov和Vladimir Kolmogorov的幾篇基於Graphcut(Network Flow中的最大流最小割定理)做圖像分割的文章:
有哪些數學定理或者數學知識驚呆了你?
上面方法要完全work,只有在pairwise term(邊) 滿足submodular的特殊情況,比較苛刻。
並且在N個label(class)的情況,只能求得k=2的近似解。(是一種近似演算法,解釋見下鏈接)
【學界】整數規劃精確演算法/近似演算法/(元)啟發演算法/神經網路方反向傳播等演算法的區別與關聯
經典paper:Fast Approximate Energy Minimization via Graph Cuts
MRF模型的一般sudo表達式:
第一項是unary term, 用來表示這個節點屬於某個class的概率。
第二項pairwise term作為smooth piror。(平滑項,防止過擬合,類似與Lasso的規則項)
MRF本質是離散的,可以被建模成一個整數規劃問題:
【學界】離散/整數/組合/非凸優化概述及其在AI的應用
但是由於整數規劃問題是NP難(演算法複雜度呈指數級)的,所以一般只求解其線性規劃鬆弛解(LP relaxation,演算法複雜度多項式時間)。
但是的但是,在計算機視覺領域,連LP都嫌慢!!!!(這樣我們搞運籌學的情何以堪)
因此,有學者研究出如BP、message passing,以及上面基於max flow(graphcut最大流演算法)等一系列解LP問題的替代方法,他們的優點就是--高效。
PS:對PGM(概率圖模型),特別是離散概率圖模型、離散MRF感興趣的,可以關注下我最近倆個學期在海德堡大學開的相關seminar,裡面附了從上世紀80年代到最近深度學習時代的一系列重要的paper,以及部分學生的演講稿。
https://drive.google.com/drive/folders/0B-NDEl5vehB8dEJadmhPellyYWc
一些總結和展望
在深度學習流行之前,可以說計算機視覺是概率圖模型的天下。
因為它漂亮的數學理論以及衍生出來的一系列高效演算法。
但是深度學習出來了--簡單、粗暴,如同黑箱子。
它work well,但是大家不知道它為何work。
今天出來一個框架,明天調了個更好地參數,beat了benchmark,一篇頂會paper就出來了。
和許多CV的教授聊過,幾乎都說:「這年頭,不搞深度學習申不到funding。」
Robin Shen:中國計算機視覺的前途在哪?機器視覺工程師又何去何從?
Heidelberg Collaboratory for Image Processing (HCI)以前也是概率圖模型的重地,開發了諸如Multicut這樣的有用模型,此文作者之一便是HCI Fred A. Hamprecht的博士畢業生。
HCI最近引進了微軟劍橋資深科學家Carsten Rother,在其lanch party上聊之,發現也轉到DL了。
但是值得慶幸的是,他們通常把DL作為概率圖模型的預處理,算出pixel屬於某類class或edge是否處於boundary的probability map,然後基於這些數據,求解MAP-MRF或MAP-CRF。
例如我最近細讀的這篇做semantic classification和segmentation的CVPR2018 paper,beat了基於CNN的benchmark score:
InstanceCut: from Edges to Instances with MultiCut
我想,這些物理和數學家們,還是有一定自己的堅守的。
深度學習作為預處理,這個概念我在很多運籌學大牛教授那裡也聽過不止一次,其中包括和深度學習四大金剛之一Yoshua Bengio深度合作的Andea Lodi.
PGM will rise again!
以後有時間寫篇PGM的綜述和入門貼,會發布在以下專欄。
更多運籌學與人工智慧的結合,敬請關註:
[運籌帷幄]大數據和人工智慧時代下的運籌學
感覺很有意思,於是去看了這個論文,發現確實跟以往的CNN稍有區別。
最大的新意,在於應用了實驗神經科學的結論,哺乳動物(比如人)在識別物體的時候,大腦視覺皮層對於物體的輪廓(contour)和表面(surface)的識別,機制不一樣,並且是協同工作。
於是根據這個結論提出了新模型,遞歸皮層網路,Recursive Cortical Netowks,簡稱 RCN,這是一種整合了實驗神經科學結論的概率生成模型,但重點並不是說概率生成模型超越了神經網路;RCN 在局部還是會用到神經網路。
RCN 對於一個物體的輪廓和表面分別進行了建模。表面用的是條件隨機場(Conditional Random Field),輪廓用的是特徵組合層級結構(Compositional hierarchy of features),這些都是專有名詞。
這個模型的目的同樣在於提高計算機識別圖像中字母的準確度,最終目的是讓計算機像人一樣高效率地辨認任何圖像中的字母,正確處理字母的形狀扭曲、顏色變化、組合、遮擋等這些複雜情況。這個實驗的訓練和驗證對象,除了ImageNet等,還有各種網站的驗證碼。
除了準確率高,還有一個亮點,就是所用的數據量比 CNN 少得多,這對於提高數據使用效率也許是個很好的辦法。
總結起來,就是兩點:
- 在結合實驗神經科學和機器智能的路上更進了一步
- 提高機器學習演算法的數據使用效率,使其更接近人
PGM能夠達到這個程度不稀奇,而作者也是HTM的作者,是大牛。這篇文章能在《科學》上發表,有種圖模型要捲土重來的感覺;我覺得圖模型肯定要得到重視,因為它更擅長語義,而前饋深度學習網路更擅長感知提取特徵,二者結合必將迎來人工智慧的再一次小小的進步。
視覺求索公眾號上的介紹很詳細
http://mp.weixin.qq.com/s/e3c06On19arU2R5nPahm7w
測試結果不太理想,看測試結果拉到最後
vicariousinc/science_rcn
看到代碼第一時間想測試一下
但是mnist不能說明什麼問題,就想到了zalandoresearch/fashion-mnist
github上也有同學提到想測試一下rcn在fashion-mnist上的性能
Can you try to test fashion-mnist? · Issue #6 · vicariousinc/science_rcn
測試:
1. 按其要求抽取fashion-mnist到training和testing目錄,並保持label結構,腳本代碼如下
import os
import cv2
import numpy as np
from tqdm import tqdm
def convert(imgf, labelf, directory, n):
f = open(imgf, "rb")
l = open(labelf, "rb")
f.read(16)
l.read(8)
pbar = tqdm(total=n)
for i in range(n):
pbar.update(1)
label = ord(l.read(1))
image = []
for j in range(28*28):
image.append(ord(f.read(1)))
image = np.array(image).reshape((28, 28))
path = "%s/%s"%(directory, str(label))
if not os.path.exists(path):
os.makedirs(path)
name = "/%s.bmp"%str(i)
cv2.imwrite(path + name, image)
pbar.close()
f.close()
l.close()
convert("train-images-idx3-ubyte", "train-labels-idx1-ubyte", "training", 60000)
convert("t10k-images-idx3-ubyte", "t10k-labels-idx1-ubyte", "testing", 10000)
2. 執行測試
#修改run_experiment參數data_dir為fashion-mnist抽取的目錄
demobin@workstation:~/github/science_rcn$ python science_rcn/run.py --train_size 20 --test_size 20 --parallel
INFO:__main__:Training on 20 images...
INFO:__main__:Testing on 20 images...
Total test accuracy = 0.6
第一次,20x20準確率:0.6,官方提供的mnist準確率~60%
第二次,100x20準確率:0.7,官方提供的mnist準確率~90%
第三次,1000x10000準確率:0.7235,官方提供的mnist準確率~97.7%+
這都可以發Science……
另外,這應該是Vicarious在N年前搞出來的技術了,那時候CNN還沒有這麼火(匿了跑了下代碼,發現test比train慢很多。代碼在官方博客最後:https://www.vicarious.com/2017/10/26/common-sense-cortex-and-captcha/
覺得Yann Lecun2013年批評的有點過了:
聊一聊Vicarious發表在Science的那篇生成視覺模型,被LeCun痛批的遞歸皮質網路RCN
推薦閱讀:
※為什麼Jarvis和Ultron同樣是Tony Stark創造出來的人工智慧,表現出的道德性卻完全相反?
※非計算機專業理工科學生在 AI 的研究和應用中如何發揮自身優勢?
※國內有哪些團隊在做類似Amazon echo 的事兒?
※目前國內研發什麼類型的機器人會較有前景及市場?
※拳頭做一個可以打贏對面5白金的人機難嗎?