2018年3月27日

函數、神經網路與深度學習

蔡炎龍/政治大學應用數學系副教授。

最近人工智慧非常紅,而深度學習則可謂人工智慧的核心。那到底深度學習是什麼呢?外面有很多把人工智慧或深度學習的概念說得很玄的文章,但在這篇文章中,則希望讓大家瞭解深度學習的核心概念。你會發現,其實基本概念非常簡單!而人工智慧到底可以做到什麼,其實也和我們的想像力有關。

人工智慧就是學一個函數
這裡說的函數,其實就是數學上所說的函數。你可能會覺得奇怪:學一個函數?學函數能做什麼?我們回想一下函數f的定義,就是2個集合X、Y之間的對應關係。X是定義域、Y是值域,每一個X裡的元素,都要對應到Y裡的一個元素,而且只能對到一個。這樣說明可能會聽不太懂,換句話說,其實一個函數就是我們所關心的某個問題完整的「解答本」,X是所有可能的題目(問題),Y則是所有可能的答案。函數的定義就是讓所有的題目都要有解答,並且是唯一、明確的答案。

在現實生活中可以說處處有我們想知道的函數,為使大家能更瞭解,以下舉幾個例子:

(1)若想要知道某個英文句子中文翻譯是什麼,則利用「翻譯函數」,X是所有可能的英文句子,Y是所有可能的中文句子。那麼這裡的函數就是輸入英文,要輸出中文的翻譯。例如:
  f(“How are you?”)=“你好嗎?”

(2)若想知道某支股票在未來某一天會漲或是跌,可以把X設為所有股市開盤的日子(不管是現在、過去或未來),Y是實數的集合(雖然其實不用設那麼大),設定出的函數就是:
f(某個開盤日x)= x當天某股的收盤價
你會發現,要是真的知道這個函數,那就賺翻了!

(3)若有一個交友網,想從裡面的資料中知道某2位會員是最速配的,這有很多種建函數的方法,其中一種是X是所有可能的會員配對,Y可能是0~10的數字:將0定義為完全不來電,10是完全速配!所呈現函數就會是:
f(X,Y)=X和Y這兩位的速配指數

(4)若要透過建立一個圖形辨識系統,辨識照片裡的鳥是什麼鳥。比方說:
f(一張鳥的照片)=“冠羽畫眉”
利用電腦來分辨照片上分別是什麼品種的鳥。

上述所說的各項例子可以告訴我們,就是把「想知道答案的問題」化成一個函數,如果真能找到這個函數,就可以幫忙解決不管是預測、速配指數還是鳥類辨識等種種問題。而有一個「全能型」的函數學習系統,也就是基本上能化成一個函數的問題,利用一些過去經驗,即部分已知「正確答案」的情況下,就可以如魔術般找到此函數的方法,那就是「神經網路」。而神經網路正是深度學習的基本架構!

不過,真正的函數運用還是與上面所舉得例子有一點不同,那就是函數在輸入、輸出時一定要是一個向量,也就是數字。不過,這也不是個問題,就以上面的例子來說,在鳥類辨識中,輸入的是張照片,而數位相片其實就是由一串數字所組成!那輸出為鳥名怎麼辦呢?這也容易,就給各種鳥設定一個編號,比方說冠羽畫眉是1號、臺灣藍鵲是2號、五色鳥是3號等。

對於函數設計而言,真正的問題常常是「問問題的方式」。想要知道某個問題的答案,可以透過許多不同的問法,又或說是由不同的方式切入。要「問得好」常常需要經驗、某個領域的專業知識甚至是創意!這個部份其實意外的重要,對於人類而言,好消息是目前這種「問問題」的工作,電腦是不太容易取代人腦的。既然問完問題,接著就要介紹如魔術般的神經網路,到底是如何找到所需的函數!

神經網路的基本架構
神經網路只是一個建構函數的方式。當我們問了問題,並準備許多歷史資料當做的「考古題」,希望能訓練神經網路看到新的問題時也可以正確回答:比如說鳥類辨識的神經網路在訓練後,可以正確叫出沒看過的鳥名。

其實,神經網路是上個世紀就紅過的東西,後來又沒落一陣子。一直到現在,標準神經網路的架構其實沒有什麼改變,而現今所說的深度學習,其實就是「深度」的神經網路。基本的架構就3種,分別是「標準神經網路(neural network, NN)」、「捲積神經網路(convolutional neural network, CNN)」及「遞迴神經網路(recurrent neural network, RNN)」。然而,為什麼現在神經網路或是深度學習再度一炮而紅呢?原因為現在的電腦能做到比較「深度」,並處理「大量資料」的神經網路。再加上有越來越多例子證明深度學習的優秀,像是ImageNet圖形辨識大賽自2012年以來,幾乎全是捲積神經網路的天下;AlphaGo打敗世界棋王,想想以前還有不少人認為圍棋程式要贏職業棋士應該還需要100年!

神經網路的架構方式其實也不神奇,基本上就是一個個「神經元」組成。最標準的神經元接受(可能)數個輸入值(也就是外來的刺激),然後產生一個輸出。輸出又可能會接到另一個神經元,所以最後會變成很複雜的結構。如圖一是有3個輸入的神經元,輸入時會乘上一個權重(weight),再加上一個偏值(bias),最後再經一個非線性的激發函數(activation function),就決定了這個神經元的輸出。在圖一的例子中,會有y=φ(w1x1+w2x2+w3x3+b)這樣的關係。

標準的神經網路一層一層之間是「完全連結」的,捲積神經網路和遞迴神經網路有一些不同的架構,不過每個「神經元」還是大同小異的運作方式。......【更多內容請閱讀科學月刊第580期】


沒有留言: