文章專區

2021-06-15科學家如何讓電腦能看、能對話?—《眼見為憑》 474 期

Author 作者 理查.馬斯蘭(Richard Masland)

泰瑞.咸諾斯基與能夠對話的神經網絡

從我身為細胞神經生物學家的優勢地位來看,泰瑞在一九八○年代初期以前都默默無名,到了一九八五年參觀他的實驗室之後我才大開眼界,他在實驗室中為我展示了一個教自己交談的神經網絡。

字母是一個一個輸入神經網絡的。在這個例子中,研究人員研究的是神經網路怎樣發出cat這個詞中c字母的音。

這個任務有什麼值得一提?因為英語的發音方式不規律稱得上惡名昭彰,任何母語非英語的人學英語的經驗都是血淋淋的例子。舉例來說,我們都認為一個單字的最後字母為e,前面的母音發長音,算得上英語發音的規則,例如gave或是brave,但是在have這個詞中a的發音相近但是顯然有差異,打破了規矩。為何我們在說mow這個詞時,其中o發音和cow的o不同?以英語為母語的人不會注意到這些,因為生來就學會了,但是電腦會注意到。語言學家對於這些不規律也深感痛苦,他們詳列了許多規矩、規矩中的例外,以及例外中的例外。

幸好語言學家也編纂了發音字典,收錄了兩萬個英文單字的標準發音。咸諾斯基與查爾斯.羅森柏格(Charles Rosenberg)用這個含有英語中所有音素的字典當成神經網絡的「教師」。教師從字典中拿一個音出來,如果神經網絡猜對了那個是cat中c字母的發音,字典就會告訴網絡答案是正確的。在神經網絡中,cat中的c字母和這次特定聲音輸出之間的連結就會受到強化。

為了讓其他人也能夠理解這種練習,研究人員很聰明,讓電腦所得到的發音書面形式輸入「喇叭」中放出來:電腦程式將發音書面形式當成英語輸入,再轉換成聲音發出來。這個步驟和科學本身沒有關係,但是可以顯示神經網絡的學習過程,任何人都能夠了解。

在接受訓練之前,神經網絡輸出的聲音一如你所料想,甚至連一群混亂的辭彙都稱不上,而是一團毫無關聯的音素。在幾輪訓練之後,它開始出現一些類似嬰兒發出的聲音,例如ga、ba、ta。再多幾次教導,網絡開始發出真正的詞彙,但是其中夾雜了各種錯誤的發音。最後網絡能幾乎完美的發出英文文本,不只是用來訓練的文本,而是所有的英文文本。在教導的過程住不需要傳授任何英語發音規則,只需要輸入許多例子即可。

有趣的是,科學家拆解了幾個隱藏層,發現到神經網絡知道有些詞要連在一起,但是科學家在網絡結構中並沒有找到諸如數百條英語的規則。神經網絡學習英語的方式有些像是以英語為母語的人所學習的方式。只有專家才能說明英語發音的規則(我就不行),母語者能夠輕鬆流暢地讀出英文。就學習英語的過程來說,咸諾斯基的神經網絡就像是人腦。

這些都是用一九八○年代初期的電腦完成的,從現代的標準來看,那些電腦速度慢到可悲。現在的電腦速度快上數萬倍,而現在的神經網絡可以有數百層甚至數千層。這些神經網絡也有許多細微的修改之處,但是基本原理和羅森柏格、咸諾斯基、辛頓與赫柏所掌握的相同。


 

會說話的神經網絡讓我讚嘆,其他人也同樣讚嘆不已。自此咸諾斯基受到眾人矚目,一直持續到現在。全國性電視節目訪問了他。反向傳播成為調整神經網絡連結的基本方式。泰瑞很快從約翰霍普金斯大學轉職到位於南加州美麗海岸邊的沙克研究所(Salk Institute),至今仍在那裡工作。

咸諾斯基依然穿著深色西裝,開著黑色德國製大轎車。他目前七十一歲,依然發出獨特的咯咯笑聲。雖然他有一身榮耀頭銜,多了些拘謹,但是依然帶有年輕天真、科技怪傑的氣息。他不懼於談論自己研究的成功,當然也有人嫉妒他。但他基本上是謙虛而且自然大方的人,純粹就是對科學有興趣而已。雖然他有可能讓專業人士嫉妒,但我想不到誰會討厭泰瑞.咸諾斯基。

有視力的電腦

你可能聽說過有視力的電腦,出現在自動駕駛車上,或是能夠辨識臉部。擔憂科幻情節成真的人會想到將來有天去百貨公司,攝影機拍到你的臉,之後把你的身分和購物喜好連接在一起,然後百貨公司會(以某種方式)操縱你買你原本沒有打算買的東西。

我得告訴你,無須擔心⋯⋯至少現在還不需要。目前圖型式驗證碼(CAPTCHA)依然用來維持你的網路安全。事實上圖型式驗證碼是一個很好的例子,說明日常用電腦依然有難以解決的任務(美國航太總署的電腦當然能夠破解絕大部分的圖型驗證碼,但在日常生活中出現的業餘機器人是辦不到的)。

電腦能夠看東西,真的很厲害,而且辨別的速度突飛猛進。為了說明這種能力,我會介紹幾種辨識臉部的方法,這是我在本書一開始就提出的問題,對於視覺神經科學家而言,如聖母峰般高聳。

現在最佳的臉部辨識電腦其實表現得非常棒,幾乎和人類一樣好,不過體積比人腦大太多了,而且需要消耗許多能量。我將說明兩類南轅北轍的方式。其中一類以規則為基礎,也就是說這個方法會嚴格遵守一連串特殊的分析步驟。大部分的人想到的會是這種,舉例來說,我在這一章開頭提到的那位堅持己見的航太工程師便是。為了方便說明,我把以規則為基礎的稱為「蠢方法」(dumb method),不過這一類中有些方法一點都不蠢。

第二類方式利用機器學習,模仿腦的運作,現在看來會是將來的主流,讓隱私權擁護者恐懼的也是這類方式。我們把這類人工智慧方式稱為「巧方法」(smart method)。我的描述將會集中在後者,主要是因為這些方法類似於神經元的行為,而我認為神經元是靈巧的。目前人工智慧法是臉部辨識的主流。

臉部辨識演算法中包括了數個任務:首先要認出有一張臉存在,然後分辨那是誰的臉。第一個任務只是臉部偵測(face detection),不是臉部辨識。在蠢方法和巧方法中,都需要完成這個任務。在有各式各樣物品的一幕中,例如百貨公司的男裝部門,這兩類方式都要能夠看出是否有臉部存在,並且把臉部影像提取出來以便後續分析。

但是在尋找臉部之前,電腦必須讓那個測試影像(對電腦來說)盡可能清晰,這些發生在演算法真正要開始找出臉部之前的過程,稱為前處理(preprocessing)。讓影像變得更清晰的方法非常多,有修圖經驗的人就知道。我會說明兩個例子。第一個例子是最為自然的場景,光線並不單一:從窗外照進的日光會造成陰影,百貨公司室內的燈光集中在當天促銷的運動外套上。之前已經提到過,基於數種原因,我們不會注意到光亮的差異,但是手機或是電腦配備的數位相機卻會。電腦是根本沒有想像力的,這會是個大問題。同一個東西在不同的光照下,對電腦而言是不同的東西。因此第一個前處理轉換辨識讓影像中的亮度「平面化」(flatten)。電腦會把整個影像中的亮度平均化(有的時候會採取類似平均化的巧妙方式),並且調整亮度,讓整個影像的亮度保持一致,這樣影像中的物體看起來會像是由單一均勻光源照射下的樣子。其次,絕大部分的演算法會採用某種邊緣強化方法,這之前也多次提到過,邊緣與行動息息相關,演算法多多少少會讓邊緣更鮮明。

現在電腦清理好了影像,第二項任務是把影像中的臉找出來,這也有好幾種方法。其中一種很有趣,因為它類似於視覺皮質中神經結構進行的方式,產生的圖稱為HOG影像。

HOG的意思是「方向梯度直方圖」(histogram of gradients),其中的「梯度」是從亮到暗的變化區域,邊緣便是一邊亮而另一邊暗。換句話說,梯度不只顯現出邊緣,而且還可以指出邊緣是朝內或是朝外。電腦會盡可能計算影像中的梯度以及方向,並且描繪出來。

這裡是一個簡化過的影像。設計演算法的人把一個影像分解成許多縱橫各有十六個像素的小方塊,在每個小方塊中,演算法會計算有多少梯度指著主要的方向(上、下或是傾斜),然後把影像小方塊的梯度濃縮成簡單的邊緣線條,取代原來的影像,這個線條經過調整,之前是方格中最明顯的邊緣。

實際上,書中這個影像是許多HOG影像的平均值,來自於許多張臉,是共通的臉孔。你可以把這張臉當成模板來找出人群中的臉,方法是為影像中每個大小適當的區域都做一個HOG影像,每格大小和臉部相當。你把這個檢驗用的方格在你認為含有臉部的影像上移動,之後比較影像上某個HOG和理想中完美的臉部HOG。大部分的區域中是沒有意義的混亂邊緣,但是有些和組合出的HOG相符,演算法會認為這些區域是臉。當然到目前還沒有指出是誰的臉,只能指出是臉而已。不過這個過程可把臉納入標準座標(into standard coordinates)中,這些圖案之後會再加以分類,同時比起原始影像,挑選過的影像在之後處理的難易程度會大幅降低。演算法最先得到的是雜亂無章的像素,裡面人頭鑽動,像是有許多團像素雲。演算法會把可能是臉的像素團先挑出來。

現在影像經過清理,並且確定了臉孔的位置。經由一些調整,這些臉會成為標準格式(舉例來說,會把臉部仔細地切除下來,好去除周圍的影像,在有些科幻電影中你可以看到區隔臉部和周遭的小方框),接下來便能著手確認那些臉的身分。

如果我去紐約市的時代廣場,隨便問一個路人電腦要如何辨識臉部,大部分的人可能會說:「電腦有規則,能夠區別不同的臉部特徵,例如電腦能夠測量兩眼之間的距離,或是額頭的高度,然後用這些未知臉部的數據和已知臉部比較。」

運用這些固定的規則的確有可能讓電腦辨識出臉部,例如馬修.涂克(Matthew Turk)與艾利克斯.潘特蘭(Alex Pentland)共同發展出來的一個演算法,能夠計算臉部測量值的特徵向量(eigenvector)。而現在,大部分的臉部辨識電腦改採用機器學習。但可能並非一直都會如此,十年後讀到這本書的某人可能會很高興我曾警告過,以規則為基礎的演算法可能會捲土重來。不過現在我們的重點還是放在運用神經網絡的電腦上。


 

為了好玩,我們看看一個利用機器學習的臉部辨識演算法,這是由商業數學軟體MATLAB所提供的案例,值得你花一些時間瞧瞧,因為許多感知器也是以同樣的方式運作。一開始那些讓臉部納入標準座標的步驟,和以規則為基礎的演算法相同,前面已經說明過,接下來的步驟是:

‧把大批大批清理好的臉部影像(正面、光照均勻)輸入到多層級的神經網絡,訓練神經網絡為這些臉孔標上迪克、珍、比爾等名字的標籤。這是教導機器的步驟,對於輸入到機器的影像,你得告訴神經網絡說:「這張是比爾。」或「這張不是比爾。」

‧神經網路就如同其他感知器那樣採用反向傳播,調整各個連結的加權。當教師說「這張是比爾」時,最活躍的突觸會受到加強。唯一的差異在於計算能力強的系統會用到一整疊感知器,也就是人工智慧機器中那些隱藏層。反向傳播會逆著影響每個隱藏層,直到輸入層。

‧現在這個神經網絡已經過訓練,我們可以測試一下:找張比爾的影像輸入神經網絡,如果這個影像和用來訓練用的影像夠相似,其中一個決策器便接收到了很強的輸入,因為它的突觸之前受到比爾臉部各方位的影像而強化了。

神經網絡很大,而且見過了很多張臉,現在變得很靈巧,能夠在光照亮度不同的狀況下辨識出比爾臉孔的各個角度,不論他穿的是白襯衫或是紅T恤。在實際狀況中,用來訓練臉部辨識神經網絡的資料庫非常龐大。在以往使用的是汽車駕照的檔案資料,其中含有數百萬個已知身分的臉部影像。

很有趣的是,實際上我們並不知道神經網絡如何區分出比爾。皮膚的顏色?臉部高度和寬度之間的比例?直鼻或是鷹勾鼻?酒窩?青春痘留下的傷痕?還是以上全部?這些都在隱藏層中,都位於數不盡的連結裡。

第十一章會介紹生物視覺系統和電腦系統的行為有多相近。我將指出,從視網膜到負責臉部辨識的高階部位,整個由神經元構成的視覺系統中,具有可塑性的突觸有多麼重要。不過我現在就可以告訴你,以及第十三章的細節中(劇透警告),MATLAB神經網絡運作的方式,並不是人腦辨識物體的方式。簡單來說,拿它和人腦比較實在是太蠢了。感知器必須有個教師一直說:「這張圖是比爾」和「那張圖不是比爾」,這個過程是監督學習(supervised learning)。腦部並不需要外在的教師便能夠學習,這個過程是無監督學習,後面我會花大篇幅描述。但是不論在人類視覺系統和機器視覺系統中,都具有堆疊起來的感知器,這代表有一個重要特徵是共通的:由赫柏提出的具可塑性突觸連接而成的神經元網絡。


書 名|《眼見為憑:從眼睛到大腦,從感知到思考,探索「看見」的奧祕》
作 者|理查.馬斯蘭(Richard Masland)
譯 者|鄧子衿
出版社|時報出版
出版日|2021年5月18日
我們為何能輕易在人群中認出家人或朋友的面孔?
如此理所當然的行為,其運作機制卻是科學界的重大奧祕之一!
從視覺到人工智慧,揭開人腦與電腦的「看見」之謎