從 0 構(gòu)建大模型知識(shí)體系(2):給模型開眼的CNN
在數(shù)字化時(shí)代,AI圖像識(shí)別技術(shù)無(wú)處不在,但其背后的原理卻鮮為人知。本文將帶你深入探索AI如何“看懂”圖片,重點(diǎn)剖析卷積神經(jīng)網(wǎng)絡(luò)(CNN)這一圖像識(shí)別領(lǐng)域的經(jīng)典模型。
按照慣例,結(jié)論先行
這篇文章要討論啥?
討論AI是如何識(shí)別圖像內(nèi)容的。上一篇奶茶銷量預(yù)測(cè)的模型輸入輸出都只是數(shù)字,我們當(dāng)然希望模型能夠處理更加復(fù)雜的圖片、音頻乃至視頻。所以這篇文章先從討論處理圖片。
咋討論這個(gè)問(wèn)題?
對(duì)于AI識(shí)別圖片內(nèi)容這件事,我覺得需要搞明白這幾個(gè)核心問(wèn)題:
① 如果說(shuō)模型的本質(zhì)是一套數(shù)學(xué)公式,那么識(shí)別圖像內(nèi)容的模型的數(shù)學(xué)公式是什么?
② 這套公式內(nèi)部具體進(jìn)行了什么運(yùn)算?
③ 為什么這樣運(yùn)算就能識(shí)別圖像?
我會(huì)以圖像識(shí)別的經(jīng)典之作LeNet-5為例,一步一步搭出這個(gè)模型并解釋其工作原理,并在這過(guò)程中討論上述3個(gè)核心問(wèn)題。除此之外也會(huì)順帶解釋以下幾個(gè)次要問(wèn)題:
④ 什么是有監(jiān)督學(xué)習(xí)?
⑤ 為什么模型訓(xùn)練依賴GPU
⑥ 大模型領(lǐng)域常說(shuō)的SFT是什么意思?
這幾個(gè)問(wèn)題,核心結(jié)論是什么?
① 識(shí)別圖像內(nèi)容的數(shù)學(xué)公式已經(jīng)不能用一個(gè)簡(jiǎn)單式子來(lái)描述了,只能畫出模型結(jié)構(gòu)來(lái)描述
② 模型內(nèi)部進(jìn)行了卷積、池化、全連接的運(yùn)算從而完成識(shí)別圖像內(nèi)容的任務(wù)
③ 為什么這樣運(yùn)算就能識(shí)別圖像,沒(méi)人真正知道為什么,只知道這么做就是行,這就是模型的不可解釋性
④ 訓(xùn)練數(shù)據(jù)有標(biāo)簽就是有監(jiān)督學(xué)習(xí)
⑤ 模型訓(xùn)練中存在大量并行計(jì)算,因而可以通過(guò)GPU加速訓(xùn)練
⑥ SFT就是在預(yù)先訓(xùn)練好的模型基礎(chǔ)上使用有標(biāo)注的特定任務(wù)的數(shù)據(jù)進(jìn)一步訓(xùn)練模型,使其適應(yīng)具體任務(wù)
“在 AI 學(xué)會(huì)說(shuō)‘我愛你’之前,它先學(xué)會(huì)了讀你的字跡”
——題記
在上一篇文章《從0構(gòu)建大模型知識(shí)體系(1):啥是模型?》中我們?cè)O(shè)計(jì)并訓(xùn)練了一個(gè)奶茶銷量預(yù)測(cè)模型,它的輸入是一個(gè)數(shù)字,輸出也是一個(gè)數(shù)字。但顯然,日常生活中的信息呈現(xiàn)形式還有文本、圖片、視頻、音頻。我們自然希望模型能處理的信息類型越多越好。而在理解圖片內(nèi)容這一領(lǐng)域的經(jīng)典模型叫做卷積神經(jīng)網(wǎng)絡(luò)(CNN,Convolution Neural Network)。讓我們來(lái)一起看看
文本、圖片、視頻、音頻,每一種信息呈現(xiàn)形式被稱作為一種模態(tài)(modality)?,F(xiàn)在各家廠商都在拼的“多模態(tài)模型”中的模態(tài)就是這個(gè)意思。如果一個(gè)模型能夠同時(shí)處理至少2種模態(tài)的數(shù)據(jù),那這個(gè)模型就被稱作多模態(tài)模型。
從錄入郵政編碼開始說(shuō)起
假設(shè)你在上世紀(jì)90年代的郵局上班,那時(shí)候電腦剛開始普及,老板要求郵件的郵政編碼都需要錄入電腦中。這時(shí)你收到一封郵件并看了眼左上角的郵政編碼:
“呵,有點(diǎn)意思哈”,心中泛起一絲漣漪的同時(shí)也開始感嘆,這種手工錄入數(shù)字的工作枯燥又乏味,重復(fù)又無(wú)聊,要是能讓電腦自動(dòng)完成就好了,這樣你就可以提前下班跟對(duì)象約會(huì)了。
那么問(wèn)題來(lái)了,應(yīng)該如何讓電腦識(shí)別人類的手寫數(shù)字呢?
巧了,圖片的本質(zhì)是一個(gè)數(shù)字矩陣
上一篇文章提到,無(wú)論大模型小模型,其本質(zhì)都是把一個(gè)數(shù)通過(guò)一定運(yùn)算變成另一個(gè)數(shù)的數(shù)學(xué)公式??墒菆D片,它是數(shù)嗎?誒嘿~是的。
圖片的本質(zhì)是一個(gè)數(shù)字矩陣。我們?nèi)粘?吹降膱D片一般是由一個(gè)一個(gè)小方塊組成的,每一個(gè)小方塊被稱作一個(gè)“像素”。比如剛才那張圖片一共有28×28=784個(gè)像素,就像下面這樣。
對(duì)于一張黑白圖片而言,每個(gè)像素一般來(lái)說(shuō)是一個(gè)0-255的整數(shù)。如果為0,則這個(gè)像素在顯示屏上會(huì)顯示為全黑,255則為全白,二者之間則為灰。所以這張黑白圖片在計(jì)算機(jī)眼里本質(zhì)長(zhǎng)這樣:
像這樣的一個(gè)二維數(shù)表在數(shù)學(xué)上叫做矩陣。所以,識(shí)別一張圖片中的數(shù)字意味著需要設(shè)計(jì)一個(gè)模型以一個(gè)二維矩陣作為輸入,再以0-9中的一個(gè)數(shù)作為輸出。
接下來(lái)介紹搭建模型會(huì)用到的三種數(shù)學(xué)運(yùn)算,別問(wèn)為什么,先接受,之后會(huì)解釋。
三種運(yùn)算
運(yùn)算1:全連接(fully connected)。A個(gè)數(shù)與B個(gè)神經(jīng)元全連接表示對(duì)這A個(gè)數(shù)進(jìn)行乘法和加法運(yùn)算后可以得到B個(gè)結(jié)果,其中A和B不必相等。奶茶銷量預(yù)測(cè)模型中用到的一次函數(shù)y=kx+b從輸入輸出的角度可以理解為給定一個(gè)輸入x,在此基礎(chǔ)上乘以k再加上b從而得到輸出。現(xiàn)在我們用下圖來(lái)表示這個(gè)過(guò)程:
我們給紅框部分取一個(gè)響亮的名字:神經(jīng)元,表示對(duì)輸入x乘以k之后再加上b。大名鼎鼎的神經(jīng)網(wǎng)絡(luò)中的神經(jīng)就是指這個(gè)。在有多個(gè)輸入的情況下,其輸出則按照如下的方式進(jìn)行計(jì)算。
像這種每個(gè)輸入都與每個(gè)神經(jīng)元相連接的情況就叫做全連接。不理解運(yùn)算細(xì)節(jié)也沒(méi)關(guān)系,只需要記住開頭加粗部分就好。
運(yùn)算2:卷積(convolution)。卷積就是把一個(gè)小矩陣放到一個(gè)大矩陣上從頭到尾滑一遍以得到一個(gè)新的矩陣。如下圖所示,將一個(gè)小的矩陣(即卷積核)在輸入數(shù)據(jù)(一個(gè)大矩陣)上進(jìn)行滑動(dòng),并在每個(gè)位置上執(zhí)行逐元素相乘然后求和的操作,最終生成一個(gè)新的矩陣,這個(gè)新矩陣就是卷積操作的輸出。比如下圖中的綠色小矩陣先與藍(lán)色大矩陣的左上角對(duì)齊,相重合的9對(duì)數(shù)字先進(jìn)行相乘得到9個(gè)積,再全部加起來(lái)產(chǎn)生一個(gè)新的數(shù)。然后綠矩陣向右滑動(dòng)一格,重復(fù)一遍相乘再相加的操作,直到滑動(dòng)到大矩陣的右下角。不理解運(yùn)算細(xì)節(jié)的話只需要記住開頭加粗部分就好。
運(yùn)算3:池化(pooling)。池化就是把一個(gè)小窗口放到一個(gè)大矩陣上從頭到尾滑一遍以得到一個(gè)新的矩陣。如下圖所示,將一個(gè)特定大小的運(yùn)算窗口在輸入數(shù)據(jù)(一個(gè)大矩陣)上進(jìn)行滑動(dòng),每次滑動(dòng)都對(duì)窗口內(nèi)的元素進(jìn)行特定的計(jì)算(比如求最大值),從而得到一個(gè)輸出值,最終所有這些輸出值構(gòu)成了池化后的輸出矩陣。不理解運(yùn)算細(xì)節(jié)也沒(méi)關(guān)系,只需要記住開頭加粗部分就好。
來(lái),讓我們給AI開眼
好了,有了上面3種運(yùn)算就可以開始搭模型識(shí)別圖中的數(shù)字了。沒(méi)錯(cuò),就憑上面這3種運(yùn)算。雖然“全連接”、“卷積”、“池化”聽著挺唬人的,但本質(zhì)就是加減乘除(甚至其實(shí)都沒(méi)有減和除)。
給AI開眼一共分8步:
通過(guò)這8步最終得到了10個(gè)數(shù)字,每個(gè)數(shù)字均為一個(gè)0~1之間的小數(shù)。第一個(gè)數(shù)字表示圖片中的數(shù)字為0的概率,第二個(gè)表示為1的概率,第三個(gè)表示為2的概率……第十個(gè)表示為9的概率,哪個(gè)概率最大,模型就判斷這張圖片是幾。
到此,我們的模型就搭完了,其本質(zhì)也是一個(gè)數(shù)學(xué)公式,即給定一張圖片后所進(jìn)行的一系列運(yùn)算,但顯然這個(gè)公式?jīng)]辦法用一個(gè)簡(jiǎn)單的表達(dá)式寫出。奶茶銷量預(yù)測(cè)模型只有2個(gè)參數(shù),但現(xiàn)在每個(gè)卷積核中的數(shù)字,每個(gè)神經(jīng)元中的k和b都是需要訓(xùn)練的參數(shù),加起來(lái)一共有61706個(gè)。
隨著模型規(guī)模從 2 個(gè)參數(shù)大幅提升至 6 萬(wàn)參數(shù),訓(xùn)練過(guò)程也需要更精細(xì)的階段劃分。
訓(xùn)練前:準(zhǔn)備數(shù)據(jù)集
打標(biāo)開始成為一項(xiàng)重要的工作。除了收集一大波手寫數(shù)字圖片,我們還需要人工標(biāo)記每張圖片到底是數(shù)字幾,類似這樣:
這樣我們才能在前向傳播的時(shí)候知道模型的識(shí)別結(jié)果是否正確,進(jìn)而通過(guò)反向傳播調(diào)整參數(shù)。像這樣每個(gè)訓(xùn)練數(shù)據(jù)都打上了標(biāo)簽的訓(xùn)練方式就叫有監(jiān)督學(xué)習(xí)(supervised learning)。
誒?那有沒(méi)有無(wú)監(jiān)督學(xué)習(xí)呢?哈哈哈有的。如果訓(xùn)練數(shù)據(jù)沒(méi)有標(biāo)簽,那就叫無(wú)監(jiān)督學(xué)習(xí)(unsupervised learning)??墒菦](méi)有標(biāo)簽還咋學(xué)?比如如果我們想訓(xùn)練一個(gè)可以玩馬里奧的模型,我們可以規(guī)定只要模型操作人物前進(jìn)、收集到了物品、擊敗敵人以及過(guò)關(guān),我們就算模型的操作正確,而一旦受傷死亡或者停滯不前我們就算操作錯(cuò)誤。模型不斷的操作,并不斷的接受到哪些操作正確,哪些操作錯(cuò)誤的反饋,最后就能學(xué)會(huì)怎么通關(guān)馬里奧。
模型訓(xùn)練的三集:訓(xùn)練集、測(cè)試集、驗(yàn)證集。對(duì)于一個(gè)CNN網(wǎng)絡(luò)而言,當(dāng)我們準(zhǔn)備好一堆數(shù)據(jù)之后,算法工程師會(huì)把它分為3個(gè)部分來(lái)用:
- 訓(xùn)練集:用來(lái)調(diào)整參數(shù)的數(shù)據(jù)。也就是我們一個(gè)又一個(gè),一輪又一輪喂給模型,讓它通過(guò)前向傳播和反向傳播對(duì)參數(shù)進(jìn)行調(diào)整所用到的數(shù)據(jù)。
- 測(cè)試集:用來(lái)測(cè)試模型最終效果的數(shù)據(jù)。完成訓(xùn)練后我們總得測(cè)一測(cè)模型的效果好不好吧?為了達(dá)成這個(gè)目的所喂給模型的數(shù)據(jù)就是測(cè)試集。算法工程師反饋的模型準(zhǔn)確性就是在這個(gè)數(shù)據(jù)集上得到的。
- 驗(yàn)證集:用來(lái)調(diào)整超參數(shù)的數(shù)據(jù)。之前介紹模型的參數(shù)量時(shí)是這么說(shuō)的:
到此,我們的模型就搭完了,其本質(zhì)也是一個(gè)數(shù)學(xué)公式……奶茶銷量預(yù)測(cè)模型只有2個(gè)參數(shù),但現(xiàn)在每個(gè)卷積核中的數(shù)字,每個(gè)神經(jīng)元中的k和b都是需要訓(xùn)練的參數(shù),加起來(lái)一共有61706個(gè)。
這句話說(shuō)了卷積核中的數(shù)字,神經(jīng)元的k和b是參數(shù),但沒(méi)有說(shuō)模型需要多少個(gè)卷積核,多少個(gè)神經(jīng)元。卷積核、神經(jīng)元越多,模型結(jié)構(gòu)就越大越復(fù)雜。這種用于控制模型結(jié)構(gòu)的參數(shù)就叫做超參數(shù)(hyper-parameter),驗(yàn)證集是用來(lái)調(diào)整這個(gè)的。
舉個(gè)例子:如果把一個(gè)班的學(xué)生視作模型,題目視作數(shù)據(jù)的話,平時(shí)的作業(yè)就是訓(xùn)練集,考試就是測(cè)試集。而為了保證教學(xué)質(zhì)量,一個(gè)班不能有太多的學(xué)生,于是學(xué)校分別對(duì)含有30、50、70名學(xué)生的班級(jí)做了一次測(cè)驗(yàn)來(lái)決定一個(gè)班的最佳學(xué)生人數(shù),這個(gè)測(cè)驗(yàn)就是驗(yàn)證集。
訓(xùn)練中:GPU 的高光時(shí)刻
6萬(wàn)參數(shù)模型的訓(xùn)練過(guò)程在思想上和奶茶銷量預(yù)測(cè)模型一致:先猜一個(gè)初始值,再一個(gè)又一個(gè),一輪又一輪的通過(guò)前向傳播和反向傳播對(duì)參數(shù)進(jìn)行訓(xùn)練。但重點(diǎn)是,模型訓(xùn)練中的大量并行計(jì)算使 GPU 加速成為可能,進(jìn)而讓GPU制造商英偉達(dá)(NVIDIA)一飛沖天。
所謂并行,是指做一件事時(shí)不依賴另一件事的完成,否則就是串行。比如洗衣服和晾衣服只能串行,但洗衣服和燒開水可以并行。并行計(jì)算就是指一個(gè)計(jì)算任務(wù)的執(zhí)行并不依賴其他的計(jì)算任務(wù)的完成。以卷積運(yùn)算為例,當(dāng)我們得到了輸入矩陣與卷積核后,我們可以快速的數(shù)出一共需要做多少次計(jì)算任務(wù),且每次任務(wù)具體都是哪些數(shù)在進(jìn)行運(yùn)算。然后把這些任務(wù)分發(fā)給GPU計(jì)算核心讓所有核心同時(shí)進(jìn)行計(jì)算。
CPU與GPU計(jì)算核心的區(qū)別
CPU(中央處理器)與 GPU(圖形處理器)都有計(jì)算核心,但CPU的核心被設(shè)計(jì)用于執(zhí)行復(fù)雜邏輯,結(jié)構(gòu)復(fù)雜,單核功耗高,因此核心數(shù)不會(huì)很多,主流 CPU 核心數(shù)通常為 4-64 核。而 GPU 的每個(gè)核心僅被設(shè)計(jì)用于進(jìn)行簡(jiǎn)單計(jì)算,結(jié)構(gòu)簡(jiǎn)單,單核功耗小,因此數(shù)量可達(dá)數(shù)千至上萬(wàn)(如 NVIDIA A100 有 16896 個(gè)核心)。
訓(xùn)練后:有監(jiān)督微調(diào)
原論文中,模型在用60000張美國(guó)人手寫數(shù)字圖片訓(xùn)練后的準(zhǔn)確率可以達(dá)到99.2%,按道理來(lái)說(shuō)模型到此就可以投入使用了。但我們自然會(huì)想,能不能把這個(gè)模型用來(lái)識(shí)別中國(guó)人手寫的數(shù)字呢?分析一下,中美手寫數(shù)字的習(xí)慣還是有些許不同,比如有些美國(guó)人寫7會(huì)在中間加一橫(如下圖所示),但整體書寫方式還是很接近的。
所以二者之間有差異,但不大,整體書寫規(guī)律基本一致,這種情況下我們只需要對(duì)模型做一下微調(diào)就行。于是我們?cè)偈占徊ㄖ袊?guó)人的手寫數(shù)字?jǐn)?shù)據(jù),打上標(biāo)簽,再直接在已有模型的基礎(chǔ)上訓(xùn)練就行。這次就不需要60000張圖片,可能5000張足矣。
像這樣,在預(yù)先訓(xùn)練好的模型基礎(chǔ)上,使用有標(biāo)注的特定任務(wù)的數(shù)據(jù)進(jìn)一步訓(xùn)練模型,使其適應(yīng)具體任務(wù)或場(chǎng)景的過(guò)程,就叫做有監(jiān)督微調(diào),也就是 SFT(Supervised Fine-Tuning)。我們經(jīng)??匆姷拇竽P蚐FT就是在說(shuō)這件事,比如chatGPT只具備通用的交流能力,并不具備法律知識(shí)。于是可以通過(guò)準(zhǔn)備一批法律相關(guān)數(shù)據(jù)以SFT的方式使其具備法律交流能力。這里SFT所需的數(shù)據(jù)量級(jí)比從零開始訓(xùn)練chatGPT所需的數(shù)據(jù)量級(jí)少多了。
模型的不可解釋性
回顧一下上圖中的模型結(jié)構(gòu),它長(zhǎng)啥樣,每一步產(chǎn)生了什么我們都很清楚,但啥叫模型的不可解釋性呢,我認(rèn)為主要有以下兩點(diǎn):
① 模型的決策方式與人類認(rèn)知脫節(jié)。人類能識(shí)別數(shù)字9是因?yàn)槟芸吹揭粋€(gè)圈,又能看到圈旁邊有一個(gè)豎或者一個(gè)彎。但模型的識(shí)別卻是依賴對(duì)像素值進(jìn)行卷積、池化、全連接運(yùn)算,這與人類的認(rèn)知方式完全不同。
② 模型運(yùn)算的中間結(jié)果并不是人類可理解的概念。類比做方便面的步驟:第一步燒水,得到開水;第二步下面,得到煮熟的面;第三步倒調(diào)料,得到調(diào)味的面;每一步操作的結(jié)果,以及這個(gè)結(jié)果對(duì)于整個(gè)任務(wù)的影響都是人類可直接理解的概念。但模型呢?我們的輸入是一張人類可理解的,寫有“9”的黑白照片,經(jīng)過(guò)第一步的卷積運(yùn)算得到了一組數(shù),我們只知道這是一組數(shù),但這組數(shù)是什么意思?沒(méi)人理解,更別說(shuō)又經(jīng)過(guò)池化,卷積,又池化,又卷積以后的結(jié)果。
所以現(xiàn)在回答文章一直沒(méi)有回答的問(wèn)題:
接下來(lái)介紹搭建模型會(huì)用到的三種數(shù)學(xué)運(yùn)算,別問(wèn)為什么,先接受,之后會(huì)解釋。
解釋就是……沒(méi)有為什么,反正這樣做效果就是好……
由此導(dǎo)致的實(shí)際影響也很突出。
首當(dāng)其沖的是調(diào)試?yán)щy。不像大家熟知的前后端代碼,每一步做了什么,得到什么結(jié)果,有什么影響都清清楚楚。一旦有問(wèn)題可以快速溯源到出問(wèn)題的地方。但模型的輸出錯(cuò)誤,很難定位到是哪一個(gè)參數(shù)有問(wèn)題。
其次是信任問(wèn)題:正是因?yàn)槟P偷闹虚g結(jié)果人類無(wú)法理解,所以其最終結(jié)果天然就很難讓人信服。比如模型通過(guò)醫(yī)療影像判斷病人有病,這個(gè)時(shí)候怎么跟人解釋呢?因?yàn)槟愕腦光片進(jìn)行了2次卷積、2次池化和2次全連接后輸出的結(jié)果是有病,所以你有???
因此,在需要強(qiáng)解釋性的場(chǎng)景,如醫(yī)療、法律,模型的底層原理天然決定了其應(yīng)用會(huì)受阻。但對(duì)于圖像識(shí)別等性能為主的場(chǎng)景,反正最終輸出準(zhǔn)確率高就行,解釋性差就差唄。
總結(jié)一下,模型之于現(xiàn)代人類的不可解釋性就相當(dāng)于鉆木取火之于原始人類。原始人也不知道為啥鉆木就能取到火,也不知道要鉆幾次才能取到火,但他知道這樣做能取到火。同樣,我們也不知道為啥模型這么設(shè)計(jì)就能完成目標(biāo),但我們知道這樣設(shè)計(jì)就是能完成目標(biāo)。
復(fù)盤一下,我們學(xué)到了什么?
圖片的本質(zhì)一個(gè)數(shù)字矩陣。人眼中的圖片在計(jì)算機(jī)內(nèi)實(shí)際是一個(gè)數(shù)字矩陣,這使得我們可以直接利用數(shù)學(xué)工具對(duì)圖片進(jìn)行處理。
三種運(yùn)算就能給AI開眼。識(shí)別圖片數(shù)字這樣高端的任務(wù)通過(guò)卷積、池化、全連接三種運(yùn)算方式就能達(dá)到令人驚異的準(zhǔn)確率。
訓(xùn)練集、數(shù)據(jù)集、驗(yàn)證集。我們收集到的數(shù)據(jù)一般會(huì)被分成3份來(lái)用,一份用來(lái)調(diào)整模型參數(shù),被稱為訓(xùn)練集、一份用來(lái)測(cè)試模型最終效果,叫做測(cè)試集、一份用來(lái)調(diào)整模型的超參數(shù),叫做驗(yàn)證集。
訓(xùn)練數(shù)據(jù)打上了標(biāo)簽的訓(xùn)練就叫有監(jiān)督訓(xùn)練。沒(méi)有標(biāo)簽就叫無(wú)監(jiān)督訓(xùn)練
GPU 之所以能加速訓(xùn)練是因?yàn)槟P陀?xùn)練中存在大量并行計(jì)算。模型訓(xùn)練中的很多計(jì)算任務(wù)并不依賴其他計(jì)算任務(wù)的完成,因此這些計(jì)算任務(wù)可以被分發(fā)給多個(gè)計(jì)算核心同時(shí)進(jìn)行計(jì)算。這些任務(wù)雖然也能分發(fā)給CPU,但CPU的計(jì)算核心在設(shè)計(jì)時(shí)是為了執(zhí)行更難更復(fù)雜的邏輯運(yùn)算,用來(lái)做加減乘除過(guò)于大材小用。而GPU 中的計(jì)算核心就是專門干這些事兒的。
SFT,模型能力的復(fù)用。在預(yù)先訓(xùn)練好的模型基礎(chǔ)上,使用有標(biāo)注的特定任務(wù)的數(shù)據(jù)進(jìn)一步訓(xùn)練模型,使其適應(yīng)具體任務(wù)或場(chǎng)景的過(guò)程,就叫做有監(jiān)督微調(diào),也就是 SFT
模型的不可解釋性:模型通過(guò)對(duì)像素進(jìn)行運(yùn)算來(lái)認(rèn)知圖片的方式與人類完全不同,且模型運(yùn)算的中間結(jié)果并不是人類可直接理解的概念,由此導(dǎo)致模型的調(diào)試非常困難,也很難讓人信任其最終輸出。
歡迎來(lái)到1998
文中模型的結(jié)構(gòu)出自1998年的文章《Gradient-Based Learning Applied to Document Recognition》。到此,恭喜你對(duì)大模型知識(shí)的理解來(lái)到了1998年。此時(shí)距離DeepSeek-R1發(fā)布還有27年。
AI Heroes
第一個(gè)大規(guī)模商用的卷積神經(jīng)網(wǎng)絡(luò)。文中為識(shí)別手寫數(shù)字而搭建的模型被稱作LeNet-5,來(lái)自于1998年由Yann LeCun、Léon Bottou、Yoshua Bengio、和Patrick Haffner發(fā)表的《Gradient-Based Learning Applied to Document Recognition》。LeNet-5被美國(guó)郵政服務(wù)(USPS)用于自動(dòng)識(shí)別信封上的手寫郵政編碼,實(shí)現(xiàn)郵件分揀自動(dòng)化,顯著降低了人工成本,是第一個(gè)大規(guī)模商用的卷積神經(jīng)網(wǎng)絡(luò)。同時(shí)它也為 2012 年AlexNet的爆發(fā)奠定了基礎(chǔ),推動(dòng)了深度學(xué)習(xí)在計(jì)算機(jī)視覺領(lǐng)域的革命。
Yann LeCun,2018圖靈獎(jiǎng)獲得者,Meta AI首席科學(xué)家。LeCun目前為紐約大學(xué)教授,同時(shí)為Facebook(現(xiàn)Meta)AI首席科學(xué)家,2018年與 Geoffrey Hinton、Yoshua Bengio 共同獲得計(jì)算機(jī)科學(xué)界最高榮譽(yù)——圖靈獎(jiǎng),以表彰他們 “對(duì)深度學(xué)習(xí)的奠基性貢獻(xiàn)”。他主張 AI 基礎(chǔ)設(shè)施應(yīng)開源化,避免少數(shù)公司壟斷。chatGPT發(fā)布后的第一個(gè)開源大模型Llama就是由Meta發(fā)布的,這和LeCun的開源主張應(yīng)該有很大關(guān)系。
不認(rèn)同LLM是通向AGI路徑。所謂AGI(Artificial General Intelligence,通用人工智能)是指能夠像人類一樣理解、學(xué)習(xí)和執(zhí)行多種復(fù)雜任務(wù),并在幾乎所有領(lǐng)域達(dá)到或超越人類智能水平的人工智能系統(tǒng),是AI發(fā)展的終極目標(biāo)。chatGPT發(fā)布后那令人驚異的自然對(duì)話能力讓人類似乎看到了AGI實(shí)現(xiàn)的曙光。但LeCun卻并不認(rèn)為L(zhǎng)LM 是通向 AGI 的路徑,理由是LLM缺乏四大關(guān)鍵能力:① 物理世界理解(如物體運(yùn)動(dòng)規(guī)律);② 長(zhǎng)期記憶(無(wú)法持續(xù)存儲(chǔ)和檢索信息);③ 推理與規(guī)劃(只能模仿訓(xùn)練數(shù)據(jù)中的模式);④ 目標(biāo)導(dǎo)向行為(依賴固定獎(jiǎng)勵(lì)機(jī)制,無(wú)自主意圖)。
認(rèn)為AGI的核心是建立 “世界模型” 。LeCun主張的世界模型是指 AI 對(duì)真實(shí)世界物理規(guī)律的建模,機(jī)器能運(yùn)用這一套建模像人類一樣理解因果、通過(guò)物理規(guī)律規(guī)劃行動(dòng)。例如:通過(guò)視頻學(xué)習(xí) “推杯子會(huì)導(dǎo)致杯子移動(dòng)” 的物理規(guī)律,那么在執(zhí)行“把沙發(fā)搬進(jìn)家里”的任務(wù)時(shí)能夠立刻知道需要采取的動(dòng)作是“推”。我感覺這有可能是LLM之后的下一個(gè)AI技術(shù)風(fēng)口。
活躍于社交媒體,經(jīng)常以通俗語(yǔ)言解釋 AI 技術(shù)原理、批判行業(yè)誤區(qū),也包括與大佬互懟。比如2022年痛批許多 AI 研究的方法論錯(cuò)誤:“太多論文沒(méi)有區(qū)分訓(xùn)練集和測(cè)試集,用測(cè)試集調(diào)參、選特征”
又比如2023年和馬斯克互懟。事件背景是 LeCun 反對(duì)過(guò)度監(jiān)管AI,認(rèn)為AI毀滅人類純屬無(wú)稽之談, 而馬斯克認(rèn)為人工智能工具可能“對(duì)社會(huì)和人類構(gòu)成深遠(yuǎn)風(fēng)險(xiǎn)”,還呼吁科技界暫停開發(fā)比GPT-4更強(qiáng)大的AI系統(tǒng)。于是在馬斯克完成 xAI 60 億美元的融資并在Twitter上發(fā)帖招聘的時(shí)候,LeCun 在下面留言嘲諷:
如果你能忍受這樣的老板:聲稱研究明年就能出成果,又說(shuō) AI 會(huì)毀滅人類要暫停開發(fā),還在自己平臺(tái)散布陰謀論 —— 請(qǐng)加入 xAI
— 馬斯克反擊質(zhì)問(wèn):“你過(guò)去五年在科學(xué)領(lǐng)域做了什么”
— LeCun:曬出 80 篇論文鏈接
— 馬斯克回懟:“這不算啥,你太松懈了,得支棱起來(lái)!”
— LeCun:“說(shuō)得好像你是我老板一樣”
Yann LeCun
“他用卷積的筆觸在數(shù)字荒原上繪出第一朵神經(jīng)網(wǎng)絡(luò)之花,從此算法有了識(shí)別星辰的眼睛。”
——后記
如果有幫助,還望點(diǎn)個(gè)贊,謝謝~
以下是文中為易于理解而表述不嚴(yán)謹(jǐn)之處,可跳過(guò)
運(yùn)算1:全連接(fully connected)。A個(gè)數(shù)與B個(gè)神經(jīng)元全連接表示對(duì)這A個(gè)數(shù)進(jìn)行乘法和加法運(yùn)算后可以得到B個(gè)數(shù),且A和B不一定相等。還記得上一篇文章中我們用到的一次函數(shù)y=kx+b嗎?從輸入輸出的角度來(lái)看,我們可以將一次函數(shù)理解為給定一個(gè)輸入x,在此基礎(chǔ)上乘以k之后再加上b從而得到輸出?,F(xiàn)在我們用下圖這種方式來(lái)表示這個(gè)過(guò)程:
我們給紅框的部分取一個(gè)響亮的名字:神經(jīng)元,用來(lái)表示對(duì)輸入x乘以k之后再加上b。大名鼎鼎的神經(jīng)網(wǎng)絡(luò)中的神經(jīng)就是指這個(gè)。如果有多個(gè)輸入的情況下,其輸出則按照如下的方式進(jìn)行計(jì)算。
實(shí)際上神經(jīng)元除了對(duì)輸入進(jìn)行乘k加b的線性運(yùn)算外,還會(huì)再用激活函數(shù)(如sigmoid函數(shù))做一次非線性運(yùn)算。激活函數(shù)是神經(jīng)網(wǎng)絡(luò)的靈魂,沒(méi)有它的話不論做多少次線性運(yùn)算本質(zhì)上都等價(jià)于一次線性運(yùn)算
這里每個(gè)卷積核的尺寸實(shí)際應(yīng)該是6x5x5
這里每個(gè)卷積核的尺寸實(shí)際應(yīng)該是120x5x5
本文由 @夜雨思晗 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)
- 目前還沒(méi)評(píng)論,等你發(fā)揮!