目前AI主要瓶頸

2021-09-03 02:26:42 字數 1756 閱讀 5860

當我們將人類智慧型,和目前的人工智障對比時,常常舉的例子就是「現在機器學習依賴大資料,而人類的學習卻是相反的,依賴小資料」。這個說法其實不盡準確。人類擁有太多的感知器官,無時無刻不接收著巨量的資料:就按人眼的解析度而言,目前幾乎沒有什麼實際的機器學習模型模型使用如此高畫質晰度的資料進行訓練的。我們觀察乙個東西的時候,所有的知覺都潛移默化地給我們灌輸海量的資料,供我們學習,推理,判斷。我們所謂的「小資料」,實際上主要分為兩個部分:

少標籤。我們遇到的「題目」很多,我們無時無刻不在接受資訊;但是我們的「答案」很少,我們可能看過各種各樣的人,各種各樣的動物,直到某一天才有人用3個字告訴我們,「這是貓」。可能一生中,別人給你指出這是貓的次數,都是屈指可數的。但是,僅僅通過這一兩次提示(相當於一兩個標籤),你就能在一生中記得這些概念。甚至別人從不告訴這是貓,你也知道這應該不是狗或者其他動物。這種「沒有答案」的學習稱為 「無監督學習」(yann lecun將其比作蛋糕胚,以示其基礎性的作用),目前機器學習在無監督學習方面進展很少。

2.邏輯推斷,因果分析。也可以說是少證據。如果你看過探案相關的**,那些偵探,能從非常細微的證據中,得出完整的邏輯鏈;現實中,愛因斯坦等物理學家能夠從非常少的幾點假設構建出整套物理學框架。最早的人工智慧研究很多集中在類似的方面(流派被稱為「符號主義」),但是事實證明這些研究大多數很難應用到實際問題中。現在nn為人所詬病的方面之一就是很難解決邏輯問題,以及因果推斷相關的問題(不過最近有些進步,比如在視覺問答vqa方面)

目前來看,很多對 nn 的貢獻(特別是核心的貢獻),都在於nn的梯度流上,比如

sigmoid會飽和,造成梯度消失。於是有了relu。

relu負半軸是死區,造成梯度變0。於是有了leakyrelu,prelu。

強調梯度和權值分布的穩定性,由此有了elu,以及較新的selu。

太深了,梯度傳不下去,於是有了highway。

乾脆連highway的引數都不要,直接變殘差,於是有了resnet。

強行穩定引數的均值和方差,於是有了batchnorm。

rnn梯度不穩定,於是加幾個,於是有了lstm。

lstm簡化一下,有了gru。

gan的js散度有問題,會導致梯度消失或無效,於是有了wgan

wgan對梯度的clip有問題,於是有了wgan-gp

說到底,相對於8,90年代(已經有了cnn,lstm,以及反向傳播演算法),沒有特別本質的改變。

但是為什麼當前這種方式實際效果很好?我想主要有:

全引數優化,end-to-end。反向傳播(下面用bp代替)可以同時優化所有的引數,而不像一些逐層優化的演算法,下層的優化不依賴上層,為了充分利用所有權值,所以最終還是要用bp來fine-tuning;也不像隨機森林等整合演算法,有相對分立的引數。很多**都顯示end-to-end的系統效果會更好。

形狀靈活。幾乎什麼形狀的nn都可以用bp訓練,可以搞cnn,可以搞lstm,可以變成雙向的 bi-lstm,可以加attention,可以加殘差,可以做成dcgan那種金字塔形的,或者搞出inception那種複雜的結構。如果某個結構對nn很有利,那麼就可以隨便加進去;將訓練好的部分加入到另乙個nn中也是非常方便的事情。這樣隨著時間推進,nn結構會被人工優化得越來越好。bp的要求非常低:只要連續,就可以像一根導線一樣傳遞梯度;即使不連續,大部分也可以歸結為離散的強化學習問題來提供loss。這也導致了大量nn框架的誕生,因為框架製作者知道,這些框架可以用於所有需要計算圖的問題(就像萬能引擎),應用非常廣泛,大部分問題都可以在框架內部解決,所以有必要製作。

計算高效。bp要求的計算絕大多數都是張量操作,gpu跑起來賊快,並且nn的計算圖的形式天生適合分布式計算;而且有大量的開源框架支援。

Android編譯時主要瓶頸分析

模擬2個使用者同時登陸乙個4核心處理器的電腦進行android編譯,編譯選項make j8,cpu配置如下 bhsong sha it lintester01 workspace android kernel cat proc cpuinfo processor 0 vendor id genuin...

目前主要的網路試衣系統

今天在網上閒逛,偶然發現乙個介紹目前在網路比較流行的試衣系統的介紹及體驗,感受了一下確實感覺良好,在此做個記錄 二維網路試衣系統國內使用較多 如拍拍 face72 這種系統操作相對簡單,對服裝產品數位化的處理過程也比較容易,適合缺少專業人員的小型服裝企業。但是,二維系統由於只能平面展現服裝產品,就是...

程式設計經驗 060727 目前主要的錯誤

程式設計經驗 060727 目前主要的錯誤 仰望者 發表於 2006 7 27 17 37 29 首先談談我目前經常所處在的程式設計領域 j2ee平台下的企業應用程式設計,經常跟資料庫打交道。今後由於轉向框架的研究,元件的開發等等,可能對於今後的程式設計沒有較好的指導意義。但作為乙個階段性的總結,還...