• 沒有找到結果。

動態輻狀基底函數類神經網路建構之研究 - 政大學術集成

N/A
N/A
Protected

Academic year: 2021

Share "動態輻狀基底函數類神經網路建構之研究 - 政大學術集成"

Copied!
81
0
0

加載中.... (立即查看全文)

全文

(1)國立政治大學應用數學系 碩士學位論文. 政 治 大. 學. ‧ 國. Dynamic立Implement Radial Basis Function Networks. ‧. 動態輻狀基底函數類神經網路建構之研究 n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 碩士班學生:林祐宇撰 指導教授:蔡炎龍 博士 中華民國九十九年六月.

(2) 誌謝 在論文撰寫期間,非常感謝指導教授蔡炎龍老師對我的耐心教導以及 生活上的點點滴滴,老師除了對我在數學專業領域上的細心指導外,也帶領 我在程式語言上的精進,從 LaTeX、HTML、CSS 到 Python,老師都不 厭其煩的教導我,並引導我到趣遊網實習,使我獲益匪淺,收益良多。此 外,我也要特地感謝陳天進老師,老師對數學的教學態度深深的影響了我, 也很感謝老師給我機會讓我擔任高等微積分助教、參與大考中心批改考卷的 行政助理經驗,平常生活的照顧等。 在政治大學應用數學系生活了三年,過的很開心,這裡有很多老師平. 政 治 大 天財學長平常在課業上的指導,以及互相勉勵打氣的同學與學弟妹,很謝謝 立. 常對我們都很照顧,像朋友般的相處,讓我真的有感覺是個大家庭;感謝張. 你們,有你們的互相扶持讓我的研究所生活更完整。另外,感謝谷俊宇學長. ‧ 國. 學. 及白志棠學長,在趣遊網實習期間耐心的教導我,給了我很多的鼓勵與專業. ‧. 領域上的建議。. 最後感謝在口試期間的陳天進老師、蔡炎龍老師、胡馨云老師,您們. Nat. n. al. er. io. sit. y. 的指導與建議使我的論文更加完善。. Ch. engchi. i. i n U. v.

(3) 中文摘要 近 年 來 輻 狀 基 底 函 數 類 神 經 網 路 (Radial Basis Function Networks , RBFN) 應用在時間序列相關問題上已有相當的成果 [13]。在這篇論文裡, 我們嘗試建構一個電腦軟體工具,可以很容易造出 RBFN,應用在時間序 列預測相關問題上。更進一步的說,我們的電腦工具可以輕易做出即時修 正,完全符合使用者的需求。我們一開始先複習 RBFN 的基本架構, 並 說明如何應用到時間序列的問題上。接著我們研究近年來相 當受到重視的 T-RBF (Temporal RBF) 架構。最後,我們解釋如何使用 Adobe Flex 去 建構我們所需要的電腦軟體工具。這個工具是跨平台的程式,並且不論是雲. 政 治 大. 端計算或是單機應用皆很合適。. 立. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 關鍵字:輻狀基底函數、暫時性輻狀基底函數、類神經網路、時間序列. ii.

(4) Abstract During recent years, applying Radial Basis Function Networks (RBFN) to time series problems yields many important results. In this thesis, we try to implement a cross-platform computer tool that can easily construct a RBFN applied to time series forecasting problems. Moreover, the RBFN created by this computer tool can do real-time modification to fit specific needs. We first review the basic structures of RBFN and explain how it can be applied to time series problems. Then, we survey on so called temporal radial basis function (T-RBF) model, which. 政 治 大 Flex to create a computer tool as we mentioned in the beginning. The 立 computer application is cross-platform and is suitable for both cloud draws much attention these years. Finally, we explain how we use Adobe. ‧ 國. 學. computing and desktop applications.. ‧. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. Key word:RBF, temporal RBF, ANN, time series. iii.

(5) 目錄 誌謝 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. i. 中文摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ii. Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. iii. 立. 1 緒論. 3. 時間序列模型的目的與涵義 . . . . . . . . . . . . . . . . . . . . . . .. 3. 預測的方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3. 時間序列概念 . . . . . . . . . . . . . . . . . . . . . . . . . .. 5. 類神經網路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. y. 5. 2.2.1. 人工類神經網路簡介 . . . . . . . . . . . . . . . . . . . . . . .. 5. 2.2.2. 類神經網路分類 . . . . . . . . . . . . . . . . . . . . . . . . .. 2.2.3. 如何以神經網路作預測 . . . . . . . . . . . . . . . . . . . . . .. 11. 2.2.4. 時間稽延類神經網路 . . . . . . . . . . . . . . . . . . . . . . .. 11. sit. io. n. al. er. 2.1.2. Nat. ‧. 2.1.1. 2.2. ‧ 國. 2.1. 1. 學. 2 理論基礎. 政 治 大. Ch. engchi U. v ni. 3 輻狀基底函數類神經網路. 7. 15. 3.1. 前言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 15. 3.2. 建構 RBF 網路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 15. 3.3. RBF 中心點之選取 . . . . . . . . . . . . . . . . . . . . . . . . . . .. 19. 3.3.1. 隨機選取法 . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 19. 3.3.2. 垂直最小平方法 . . . . . . . . . . . . . . . . . . . . . . . . .. 19. 3.3.3. OLS 中心點選取法計算步驟 . . . . . . . . . . . . . . . . . . .. 23. 動態輻狀基底函數類神經網路 . . . . . . . . . . . . . . . . . . . . . .. 24. 3.4. iv.

(6) 4 T-RBF (Temporal RBF) 方 法 4.1. T-RBF 網路架構 4.1.1. 25. . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 25. 網路展開平行演算法(Network Unfolding Algorithm) . . . . .. 27. 5 RBF 圖 形 介 面 化 工 具. 31. 5.1. Adobe Flex 介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 31. 5.2. 使用 Adobe Flex 建構 RBF 應用程式 . . . . . . . . . . . . . . . . .. 33. 5.3. RBFN 圖形介面工具使用說明 . . . . . . . . . . . . . . . . . . . . . .. 34. 5.3.1. 設定區畫面 . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 34. 5.3.2. 資訊區畫面 . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 36. 5.4. 政 治 大 5.3.4 預測區畫面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 立 操作實例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 5.5. 預測實例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 44. 5.6. 結論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 47. 學. ‧. io. sit. y. Nat. n. al. er. 附錄. 動態學習區畫面 . . . . . . . . . . . . . . . . . . . . . . . . .. ‧ 國. 5.3.3. Ch. engchi. i n U. v. 37 39 40. 49.

(7) 第一章. 緒論. RBFN 之 概 念 最 早 是 由 Hardy(1971)所 提 出,後 來 Powell [10] 建 立 其 網 路 架 構,Moody 與 Darken(1989)則利用 RBFN 解決數學函數對應之問題,Broomhead 與 Lowe(1988)將其應用於數值逼近或內插之問題上,而後相繼有各種類似之網路. 政 治 大 法則用以架構更有效率之輻狀基底函數網路,並利用於具有時間序列相關性之問題 立. 結構之 RBFN 相繼被提出。隨著輻狀基底函數網路之快速發展,已有不同之訓練. ‧ 國. 學. 上。Mikko(1996)等人曾以輻狀基底函數網路為基礎,結合自我迴歸(autogressive)之. 觀 念 架 構 網 路 , 並 將 之 應 用 於 時 間 序 列 模 式 之 預 測 , 證 實 RBFN 之 準 確 性 遠. ‧. 勝過 Autogressive model(AR)、Threshold Autogressive model(TAR)及倒傳遞多層 感知機(Backpropagating Multiplayer Perceptron)。此外,Park 與 Sandberg(1993,. sit. y. Nat. 1994)證明 RBFN 有能力模擬近似任何函數,近年來更是受到廣泛的研究,如影像傳輸 方法 [19]、洪水預測 [16]、河口水位預測 [17]、建築風載 [18]等。. io. n. al. er. 在本篇論文裡,我們嘗試以 Adobe Flex 建構一個可以輕易造出 RBFN 的動態網. i n U. v. 頁應用程式,並且希望是跨平台的,提供給相關需求的使用者可即時改變 RBFN 架. Ch. engchi. 構,藉此學習 RBFN 及應用在時間序列相關問題上,以因應各項預測之需求。 最後介紹本論文之架構,在此論文的第二章,我們從時間序列的涵義開始,簡單的 介紹時間序列的概念、預測的方法及類神經網路的基本概念。本論文的重點著重在前饋 式類神經網路架構,討論如何以該架構結合時間的概念去處理預測的問題,所以我們以 時間稽延類神經網路(TDNN)為例,將「過去」與「現在」的資料結合類神經網路,讓 大家了解具有基本時間性質的類神經網路架構,並討論其優缺點。 第三章我們開始建構輻狀基底函數類神經網路(RBFN),它的結構主要分為三 層,(1)輸入層:將我們的學習資料(learning data)轉成輸入值對應到隱藏層,(2)隱 藏層:基本概念就是由許多輻狀基底函數(radial basis function) [1]所成的集合,將 輸入層的值透過非線性活化函數(activation function)轉換至輸出層;幅狀基底函數. 1.

(8) h : R ≥ 0 → R,的形式有很多,常見的有高斯函數(Gaussian function)、二次多變數 函數(multiquadratic function)等,隱藏層的大小決定於中心點的個數,也就是整個網 路的大小,(3)輸出層:將隱藏層經過輻狀基底函數轉換過的值作線性組合。 中心點對 RBFN 的影響是很大的,我們也將介紹兩種中心點選取方式,隨機選取 法與垂直最小平方法(OLS),討論其選取中心點的過程並比較其優缺點。 我們希望以 RBFN 作預測時,由於 RBFN 屬於靜態類神經網路,在處理時間變 動性的問題上有明顯的缺點。Day 與 Davenport [3]在模糊信號預測上根據 MackeyGlass 差分方程式提出倒傳遞神經網路於時間應用上的方法。Lin、Ligomenides 與 Dayhoff [7]提出自適應稽延類神經網路(ATDNN) [12],其為一在學習過程中可改變稽 延時間(time delay)的方法。在第四章裡我們將介紹 T-RBF 方法,它提昇了時間對. 政 治 大. RBFN 的影響,它是一種動態的學習方法,可以讓我們解決 RBFN 在預測上的限制。. 立. 最後一章我們將建構動態的學習系統,以 Adobe Flex 技術開發 RBFN 網頁應用. ‧ 國. 學. 程式,讓使用者可以在網頁上面就能動態的學習 RBFN,並利用該應用程式進行預測。 在這章節裡我們將以 ActionScript 3.0 建立代數工具以及 N 相關的數學工具,在應用. ‧. 程式上面我們將以較好的視覺效果,配合動態的資料變動與簡單的操作環境,期望讓 使用者能更簡單明瞭的去學習 RBFN 網路架構,並希望藉由網頁應用程式的方式將. Nat. n. al. er. io. sit. y. RBFN 推廣給更多人認識。. Ch. engchi. 2. i n U. v.

(9) 第二章. 理論基礎. 時間序列模型的目的與涵義. 2.1. 有人可能會問,為什麼要推算「未來」的值呢 ? 這其實是一個很重要的問題,這. 政 治 大. 同時也是研究時間序列模型的主要目的─預測變數未來的可能變化。例如每一個股市的. 立. 投資人當然都會想「預測」未來某一個股到底會漲或跌到哪裡,以利決定下一步的投資. ‧ 國. 學. 策略;政府也經常「預測」未來的的經濟成長率為何,以考慮是否採取某些經濟政策; 企業也會想「預測」未來市場對企業本身產品的需求量是多少,來決定要不要調整生產. ‧. 線;養雞的農民會想「預測」未來雞 的價格如何,以便決定應增產還是減產。 簡而言 之,研究時間序列模型的主要目的,就是希望發掘時間序列變數現在和過去的關係,以. sit. al. n. 預測的方法. er. io. 2.1.1. y. Nat. 預測此變數未來的趨勢值為何,進而能事先做決策。. Ch. engchi. i n U. v. 預測方法基本上可以分為兩種基本型態:定性方法(qualitative methods)與定量方 法(quantitative methods)。前者通常以專家的意見為主,依據過去的經驗,或特殊感 官功能對未來的事件做本質、特性的預測;後者則以歷史事件,化成時間序列資料趨勢 圖,並判別出他的特徵,以數理方法模式化後再做量的預測。以下是一些較常使用的時 間序列分析方法: (1) 成長模式(growth): 如古典的指數成長曲線(exponential growth curve)、邏輯曲線(logistic curve)或 公配茲曲線(Gompertz curve)、多項式函數確定性(determinstic)模式。根據成 長率(growth rates)定性,或由所建構之微分方程式解出一組合式參數。. 3.

(10) (2) 指數平滑法(exponential smoothing): 將過去的資料,以特定的期數求移動平均值作為預測值。通常其權數呈指數遞 增,而較接近的資料,常給予較大的權數。 (3) 多變量迴歸方程式(multiple regression): 相關變數及其因果關係之間的探討,通常以迴歸方程式表示。由最大概似法或最 小平方誤差法,估計各變數的係數。 (4) 分解法(decomposition): 對時間序列的四個特性:趨勢(T)、季節(S)、循環(C)及隨機(I)加以分析估計。. 政 治 大. (5) 自迴歸整合移動平均模式(ARIMA):. 立. 由 Box-Jenkisn 所提出的自迴歸整合移動平均模式(AutoRegressive Integrated. ‧ 國. 學. Moving Average , ARIMA),主要方法為對歷史資料分析,檢視其自相關與偏自 相關等特性。. ‧. (6) 狀態空間(state space):. io. er. 受到此集合現在與前一期系統輸入變因影響。. sit. y. Nat. 考慮系統中影響現在狀態的因素所構成之最小集合。而此系統未來的行為,亦僅. al. n. v i n Ch 以經濟分析觀點建立計量模式。此方法需要專業經濟知識與背景。而其在蒐集資 engchi U. (7) 計量經濟(econometrics):. 料與建構合理聯立方程式的過程中需投入較高成本及費時。 (8) 非線性模式(nonlinear model):. 對不滿足線性 ARIMA 模式的一些基本假設,應用特定非線性模式來處理,可 改善線性模式在配適與預測結果不佳的情況。較常用的非線性模式有:雙線性模 式(bilinear modles)、門檻模式(threshold modles)、與指數 ARMA 模式等。 (9) 神經網路(neural networks): 模擬人腦神經組織,經嘗試錯誤(try and error)與修正記憶後所得之自由分模 式(modle free),來做預測。故亦可說是自由模式法或經驗學習模式法。. 4.

(11) 2.1.2. 時間序列概念. 時間序列模型的基本概念,可以從自回歸模型(Autoregressive model , AR Modle) 開始建立。所謂的 AR 模型的意義,簡單來說就是現在的某一變數值和同一變數過去的 變數值有關。我們以下用一個簡單的數學模型來說明會更容易懂。 先定義某一個變數 y 在時間點 t 時的數值用符號 yt 來表示之,那麼該變數的現在 值和過去值有關,可以用函數來表示: yt = f (yt−1 ). (2.1.1). 而 AR 模型就是將式 (2.1.1) 用線性函數來表示。AR 模型被廣泛的應用在很多的預測. 政 治 大 X. 應用上 [11],AR 模型可以 (2.1.2) 形式表示:. 立 y(t) =. n. ai y(t − τi ). ‧ 國. 學. i=1. (2.1.2). 上式中的 y(t − τi ) 是過去輸出值,n 為模型的階數,τi 為時間稽延。在 AR 模型建構. ‧. 上也有一些缺點如下:. sit. y. Nat. (1) AR 模型是一個線性函數模型,在許多情況下無法追蹤有劇烈變化的預測值。. n. al. er. io. (2) 當我們要處理高階的 AR 模型時,不見得會有期望的好結果。. 類神經網路. 2.2 2.2.1. Ch. engchi. i n U. v. 人工類神經網路簡介. McCulloch 和 Pitte 在 1943 年提出一個基本計算神經元(computing neuron)的模 型是一種基本數學運算單元,為往後類神經網路系統奠定了基礎。1948 年 Donal Hebb 發表了關於神經元間權重值的修改學習規則稱為 Hebbian 學習法則,其中他認為訊息 是存在於神經元間的神經鍵上而此種學習法則成為所有類神經網路學習規則的先趨。 類神經網路是由人類所發明出來的,主要目的是想要模仿生物神經元的行 為 模 式 。 生 物 神 經 元 模 型 如 圖 2.2.1 所 示 , 內 有 細 胞 核(Soma)、 軸 突(Axon)、 樹 突(Dendrites)及突觸(Synapses),當外界各種不同的刺激資訊(如:光、電、熱)轉成電 流信號,經由突觸內部的電位變化,透過樹突傳遞到細胞本體,刺激細胞本體內的細胞. 5.

(12) 圖 2.1: 生物神經元模型. 立. 政 治 大. y. ‧. ‧ 國. 學. Nat. er. io. sit. 圖 2.2: 類神經元模型. 核,細胞本體會自動發出電流脈波藉由軸突再傳至相連結之下一層神經元,成為下一層. al. n. 神經元的輸入信號。. Ch. engchi. i n U. v. 圖 2.2.1 為一個人工神經元模型,表現類神經網路的基本設計概念,該圖清楚顯示 一個人工神經元的輸入向量 X ,權重組 W 、 活化函數 φ 與輸出值 Y 的基本關係架 構,一個神經元 j 可以用下列二方程式來描述: netj =. m X. wji xi + bj. (2.2.1). i=1. yj = φ(netj ). (2.2.2). 其中 wji 為連結第 i 個輸入值與第 j 個人工神經元之加權值,bj 為偏權值,若為正對 輸入是增益,若為負則抑制輸入值。 下面介紹幾種常見的活化函數:. 6.

(13) 圖 2.3: 門檻值函數 (1) 門檻值函數.   1, if v ≥ 0 φ(v) =  0, if v < 0. (2) 片段線性函數. φ(v) =. 2.        . 學. 1 1 v + , if v > −  2 2         1   0, if v ≤ − 2. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. 圖 2.4: 片段線性函數. (3) S形函數 φ(v) =. 2.2.2. ‧. ‧ 國. 立. 政 治 大 1   1, if v ≥ . 1 1 + e−αv. 類神經網路分類. 類神經網路可由其網路架構及學習方式來加以分類。. 7. v.

(14) 圖 2.5: S形函數. 立. 政 治 大. ‧. ‧ 國. 學. n. al. y er. io. sit. Nat. 圖 2.6: 多層前饋式網路. Ch. engchi. i n U. 圖 2.7: 回饋式類神經網路架構. 8. v.

(15) 立. 政 治 大. ‧ 國. 學 圖 2.8: 回傳的時間稽延示意圖. ‧ sit. y. Nat. • 依網路架構可分為二種:. io. er. (1) 前饋式類神經網路(Freedfroward Networks). 前 饋 式 網 路 架 構 如 圖 2.6 所 示 , 網 路 中 的 神 經 元 是 以 多 層 方 式(multi-. n. al. Ch. i n U. v. layer)排列,主要分為輸入層(input layer)、隱藏層(hidden layer)及輸出. engchi. 層(output layer),同一層神經元彼此不相連接,每一層神經元只接受前一 層神經元的輸出值為輸入。 (2) 回饋式類神經網路(Feedback Networks) 回饋式類神經網路與前饋式類神經網路的最大不同,在於回饋式類神經網路 至少會含有一回饋迴圈,如圖 2.7 所示,一個回饋式類神經網路可能僅包含 一層神經元,而在此層的神經元會各自將其輸出之訊號回傳給同一層中的其 他神經元或前一層的神經元,作為輸入資料。回饋式的架構常用於處理動態 現象或動態的時間序列,這是因為回饋式類神經網路在將其資料經由回饋回 傳給前一層或同層中之其他神經元時,會自動產生一時間上的延遲,如圖 2.8 所示。而回饋式類神經網路或稱為遞迴式網路,主要是由於網路的回饋. 9.

(16) 圖 2.9: 監督式學習演算法. 圖 2.10: 非監督式學習演算法. 政 治 大 項傳到前一層產生了遞迴的演算,遞迴式網路藉由遞迴項更加強網路的學習 立. 能力與表現,尤其在非線性的動態系統中,遞迴式網路通常比其他類型網路. ‧ 國. 學. 有更好的學習能力與表現。. ‧. • 依學習方式分類則可分為下列二種:. n. er. io. al. sit. y. Nat (1) 監督式學習(Supervised learning). i n U. v. 如圖 2.9 此類網路的訓練樣式(pattern)有輸入、輸出值,在訓練過程中藉由. Ch. engchi. 輸入輸出值間的對映規則,產生一組可應用於新樣式的權重值;藉由過程一 次又一次地調整網路連結的強弱,來降低網路輸出值與目標輸出值(desired output)之間的差距,直到差距小於一定的「臨界值」才告停止。如倒傳 遞網路(Back-Propagation Network, BPN)、 學習向量量化網路(Learning Vector Qantization, LVQ)與反傳遞網路(Counter-Propagation Network, CPN)等均為此類網路學習方式。 (2) 非監督式學習(Unspuervied learning) 如圖 2.10 非監督式學習演算法的特色在於訓練過程只需要提供輸入資料, 而不提供輸出資料,網路依輸入資料(向量)去學習及調整權重,如下一節將 提到的垂直最小平方法 (Orthogonal Least-Squares, OLS)。. 10.

(17) 2.2.3. 如何以神經網路作預測. 神經網路為目前發展極為迅速之一門科學。且已知神經網路能就一確定模 式(Deterministic models)作相當良好之函數近似(Functional approximation)。給予 一組時間序列資料 {Y0 , Y1 , Y2 , ......Yt } ,其一般式可寫成: Yt+1 = F (Yt−k , Yt−k+1 , . . . , Yt ) + εt+1. (2.2.3). 其中 εt+1 為隨機亂數項,為不可控制之未知項。而我們以神經網路來做預測時,觀點 與上述之傳統方式有所不同。我們利用神經網路具備對任一函數均可做良好之近似的特 性,建構一個函數 f ,使 f 具有下述功能:在時間序列中之某一筆資料 Yt 若可由前 m. 政 治 大. 筆資料經由函數 f 求得,即. 立 Y. t+1. = f (Yt−m , Yt−m+1 , . . . , Yt ). (2.2.4). ‧ 國. 學. 在 (2.2.4) 式中不再具有 εt+1 項,此隨機項被視為是神經網路函數 f 轉換之一部分。. ‧. 神經網路之學習過程即是要建立此函數 f 。. 以預測準確與否之觀點來看,在我們作預測前,必須事先建立一套規則讓神經網路. sit. y. Nat. 學習。例如在 (2.2.3) 式中之規則為:第 t 筆資料之求得必須依賴其前 m 筆之資料。一. io. n. al. er. 旦確定規則後,網路即可一此開始學習。. 2.2.4. 時間稽延類神經網路. Ch. engchi. i n U. v. 時間稽延類神經網路(Time-Delay Neural Networks , TDNN)屬多層前饋式類神 經網路架構,通常利用誤差倒傳遞演算法(Error Back Propagation , EBP),來學習輸 入及輸出的靜態映射(mapping)關係,所謂的靜態,指的是輸入與輸出的對應關係並不 會隨著時間改變,屬穩定程序(stationary processes);這樣網路架構及演算法較適用 於輸入及輸出具有空間(spatial)特性或與時間無關的形態辨識(pattern recognition)問 題。 然而,在我們面對的許多問題中,「時間」常是一個重要的因素,當類神經網路在 處理這類的問題時,必須能夠加入「過去」的資訊,因為光靠「現在」的訊息當做輸入 項會忽略掉許多重要的相關因子,即時間前後資訊間的相關特性。位處裡這樣的問題, 一般最常見的作法是使用多層前饋式類神經網路,將時間序列轉換成空間序列的形態輸. 11.

(18) 圖 2.11: 時間序列轉成空間序列的型式當成輸入項. 入網路中,也就是將橫向不同時間的資料截取片段改成縱向的輸入。如圖 2.11 所示, 每次輸入網路的 pattern 包含現在、前一期、前兩期的資料,這樣的輸入方式,即表示 同時將與現在網路輸出有關的前幾期資料一起輸入網路。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 2.12: TDNN 中,單一神經元接收 n 種輸入訊息,m 階時間稽延的示意圖. 時間稽延類神經網路即一上述方法將輸入訊息各自稽延數個時期,並同時當做 前饋示類神經網路的輸入向量,圖 2.12 顯示一個單一神經元同時接收(連結) n 種輸 入訊息,且每種輸入訊息皆包含目前及 m 個時間稽延的資料,故輸入向量大小為 (m + 1) × n。 典型的 TDNN 結構示輸入層將稽延的訊息合併輸入,並利用標準的倒傳遞演算法 調整連結權重向量,因此訓練後的網路所建立的是一組前後相互關連的輸入型態(input. 12.

(19) 立. 政 治 大. ‧. ‧ 國. 學. 圖 2.13: TDNN 中,單一神經元接收 n 種輸入訊息,m 階時間稽延的示意圖. pattern)所映射的輸出關係。這樣以前饋示網路配合倒傳遞演算法的方式來解決具有時. Nat. sit. y. 間相關的問題,主要的困難在於網路輸入項的時間稽延個數 m 難以決定,如果稽延個. er. io. 數定的太長,容易造成輸入向量過於龐大使得網路難以訓練;另外一個問題為 TDNN 是屬於靜態類神經網路,網路結構指能處理與輸入型態 (input pattern) 相一致的類. al. n. v i n 比資料(analog data),對於非穩定程序(nonstationary processes),此一方式就難以處 Ch U i e h n gc 理。 靜態類神經網路往往會因為輸入維度太大,而增加網路的複雜度,使得期計算時間 耗時,以下我們以圖 2.13 為例來做說明: 假設集水區內有 A~E 五個水文站,A 為流量站,B~E 為雨量站,每個站這一小時、 前一小時,前二小時的水文訊息,都可能影響 A 站下一小時的流量大小;若以靜態類. 神經網路為架構來預測 A 站下一小時的流量,則必須輸入 A~E 這一小時、前一小 時、前二小時等三筆輸入資料,其輸入維度為 5 × 3 = 15 個,因此輸入層至隱藏層的 連結權重向量大小為 15 × K ( K:隱藏層個數);此一作法大大提高網路的訓練時間與 複雜度。當模式架構完成後,因固定了「輸入為三小時內的資料 ─ 輸出為下一小時的 資料」的網路輸入-輸出型態 ,故只適用於此集水區的特定狀況,且網路所記憶的僅為. 13.

(20) 集水區這三小時內的資訊,對於超過三小時的訊息則完全沒有記憶。 TDNN 的特點在於理論簡單易明瞭、應用也較為普及,但需要大量的訓練資料、 容易陷入局部最小值、訓練時間長、網路收斂慢等,造成實際應用上的困擾;尤其在對 時間序列方面的問題進行預測時,為了達到模擬效果,網路的輸入往往使用區塊式的輸 入方式,將相連時間的資料串成一個輸入向量,雖然包含了前幾時刻得資訊,但這樣並 無法有效建立區塊內的時序行為;簡單的來說,TDNN 對於動態系統或相關時間序列 的處理能力較為薄弱,當網路架構完成進行預測時,則由「樣本比對」方式將資料代入 網路中,因此在不同時間點預測相同輸入資料時,TDNN 會產相同的輸出值,因而無 法有效抓住時間序列的特性。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. 14. i n U. v.

(21) 第三章. 3.1. 輻狀基底函數類神經網路. 前言 簡單的說輻狀基底函數類神經網路(Radial Basis Function Networks , RBFN)是. 政 治 大 的類神經網路,又稱半徑式類神經網路,具備良好的映射能力。 其架構具有輸入層、 立. 由輻狀基底函數(Radial Basis Function)做為活化函數(activation function) [5]所構成. ‧ 國. 學. 一層隱藏層以及輸出層,屬於基本前饋式類神經網路(Feedforward Artificial Neural Network) [14]。. ‧. 它的結構類似於兩層的認知機(perceptron),輸入層和隱藏層間的每個神經元完全 相互連結。輻射基底函數神經網路和傳統認知器基本上的不同,在於隱藏層神經元的. sit. y. Nat. 轉移函數(transfer function)。傳統的認知器中,隱藏層神經元的輸出只與它的輸入有. io. er. 關。但是,輻射基底函數神經網路的隱藏層神經元輸出不僅和它的輸入有關,並且又與 稱為中心點(center)的新增向量參數有關。其主要特性有三:(1)僅有三層結構。(2)輸. n. al. i n U. v. 出層全由線性處理單元組成。(3)隱藏層轉換函數是由輸入資料與神經元中心之距離決 定 [15]。. Ch. engchi. 定義 3.1.1 輻 狀 基 底 函 數 是 由 至 中 心 點 的 距 離 所 構 成 的 函 數 。 換 句 話 說 , 如 果 φ(X) = h(||X − C||) ,則 h : R+ ∪ {0} −→ R 是一個幅狀基底函數,如此幅狀基底 函數 h 將實數上的向量通過距離表示為一個純量函數。φ 為隱藏層的活化函數。. 3.2. 建 構 RBF 網 路 如果我們考慮 p 個在 Rn 的點所成的集合與其相對應在 R 上的期望輸出值表示如. 下: D = {(Xi , yi ) ∈ Rn × R, 1 ≤ i ≤ p | f (Xi ) = yi }. 15.

(22) 立. 政 治 大. ‧. ‧ 國. 學 er. io. sit. y. Nat. 圖 3.1: 輻狀基底函數類神經網路架構圖. 上面的集合 D 資料明顯描述輸出值為一維的函數 f ,若輸出值為高維度時,我們可以. al. n. v i n 分別考慮拆開輸出值的每一項,所以在這篇論文裡我們只考慮一維的輸出值。 Ch U i e h n c g RBF 類神經網路主要概念是建構許多輻狀基底函數 h(||X − C||) ,以函數逼近法 找出輸入與輸出間的映射關係。其架構主要包含輸入層、 隱藏層及輸出層,每一層扮演. 不同的角色;輸入層是輸入資料與輻狀基底函數網路連結的介面層,其工作是讀取訓練 資料 X 並由資料點隨機選取中心點 C ;隱藏層將輸入資料通過非線性函數進行非線性 映射到隱藏空間,建立各中心點相對應的輻狀基底函數 h(||X − C||) ;輸出層則是將 隱藏層的輸出進行線性組合而求得輸出值。 以建立 p 個訓練範例資料 X = {X1 , X2 , · · · , Xp },Xi ∈ Rn 、m 個神經元(即中 心點個數)的隱藏層之 RBFN 為例,其中神經元個數即是中心點的數目,其架構如圖 3.1 所式: 在輸入層中,將訓練範例資料輸入網路後選取中心點以作為隱藏層的神經元中心. 16.

(23) 點,並將輸入向量傳至隱藏層中的每個輻狀基底函數,其中中心點的選取方法有多種形 式,於下節會介紹兩種;在隱藏層中計算各輸入向量與神經元中心點的距離,經由非線 性函數的轉換,獲得各神經元的輸出值如 (3.2.1) 式 φi (X) = h(||X − Ci ||) i = 1, 2, ......, m. (3.2.1). 上式中 φi 為隱藏層中第 i 個中心點的輻狀基底函數,Ci 表隱藏層中第 i 個神經元中心 點,共 m 個神經元中心點; ||X − Ci || 表示欲求點 X 與中心點 Ci 的距離(通常使用 歐式距離);並於隱藏層中經過加權傳至輸出層後線性組合求得輸出值,其中 wi 為隱藏 層第 i 個神經元至輸出值的權重值,φi 為隱藏層第 i個神經元輸出值,y 為輸出層中的 輸出值, 如 (3.2.2) 式 y(X) =. m X. 立. 政 治 X 大 w · φ (X) = w · h(||X − C ||) m. i. i. i. i=1. i. (3.2.2). i=1. ‧ 國. 學. 其中 h 通常是非線性的,也就是我們剛剛提到在隱藏層中的非線性轉移函數,下面將介 紹幾種常見的形式,如圖 3.2 所示:. ‧. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 3.2: 幾種輻狀基底函數形式. 1. 線性函數(linear function) h(||X − C||) = ||X − C||. 17. (3.2.3).

(24) 2. 三次函數(cubic function) h(||X − C||) = ||X − C||3. (3.2.4). 3. Duchon 多變數曲線(Duchon multivariate splines)   ||X − C||2m−n ln ||X − C|| , 2m > n 且 n 是偶數 h(||X − C||) =  ||X − C||2m−n , 其他情形 (3.2.5) 4. 薄平面曲線函數(thin-plate-spline function) h(||X − C||) = ||X − C||2 ln ||X − C||. 治 政 大 5. 高斯函數(Gaussian function) 立 ||X − C||. (3.2.6). 2. h(||X − C||) = exp(−. 6. 二次多變數函數(multiquadratic function) q h(||X − C||) = ||X − C||2 + σ 2. (3.2.8). Nat. y. ‧. ‧ 國. (3.2.7). 學. ). σ2. n. er. io. 1. h(||X − C||) = q. al. sit. 7. 二次多變數倒函數(inverse multiquadratic function). (3.2.9). v. ||X − C||2 + σ 2. Ch. engchi. i n U. 範例 3.2.1 假設以原點為中心點,輸入的資料 X ∈ R2 ,輸出值是一個常數且幅狀基底 函數 h(||X − C||) = ||X − C|| ,則: 3. y(x1 , x2 ) = w(x1 + x2 )3/2 範例 3.2.2 假設有兩個中心點,分別是 c1 = −1、c2 = 2,輸入的資料 x1 , x2 ∈ R, 轉移函數選擇高斯函數且其 σ = 1,則: 2. 2. y(x1 , x2 ) = w1 e(x1 +1) + w2 e(x2 −2). RBFN 在學習過程中一般採用兩階段是的混和學習法,即前階段訓練採用非監督 式學習,如下一節將提到的垂直最小平方法(Orthogonal Least-Squares, OLS),後階 段訓練則為監督式學習方式。. 18.

(25) RBF 中 心 點 之 選 取. 3.3. 中心點的選取對於 RBFN 的計算有直接的影響,其原因有(1)中心點的數目,會影 響計算的效率,降低中心點個數,可有效的降低網路的複雜度。(2)輻狀基底函數是以各 資料點對中心點取歐式距離的函數,因此決定中心點的個數,同時也決定了整個網路的 大小。(3)中心點的位置間接影響到網路訓練的收斂速度。然而,現今並沒有特定的方法 能決定中心點的個數使 RBFN 可既有效率而且準確的進行模擬計算。因此,乃以複合 式學習法於隱藏層前階段選取中心點,後階段進行權重向量的修正。 一般而言,RBFN 學習策略會因中心點選取方法不同而有所改變。 而大體上,學 習策略均以求得誤差的最小平方和為目標。. 政 治 大 聚類法是將輸入資料依照相似的程度予以分類,對於輸入資料較單純的數值回歸運算, 立. 中心點選取法大致分為隨機性、聚類法(clustering)以及監督式選取等三種;其中. ‧. 3.3.1. ‧ 國. 最小平方法。. 學. 在此不納入應用。故本節主要是說明中心點的隨機選取法,以及屬於監督式選取的垂直. 隨機選取法. sit. y. Nat. 此為 RBF 中心點選取最簡單的方法,由訓練範例資料點中隨機選取 m1 個作為. io. er. 隱藏層的中心點,並求出中心點與中心點間的最大距離 dmax ,為避免所有的輻狀基底 函數過度陡峭或過度平緩,建議標準偏差值 σ 為 (3.3.1) 式,其為一經驗公式(Ham,. al. n. 2001)。. Ch. e n gd c h i max. σ=√. i n U. v. m1. (3.3.1). 因此,若輻狀基底函數如高斯函數 (3.2.7) 時 h(||X − Ci ||) = exp(−. m1 ||X − Ci ||2 ) i = 1, 2, ......, m d2max. (3.3.2). 此中心點選取法的優點為快速、容易,但其缺點則為須具備大量的訓練資料,經由隨機 選取的中心點才具有代表性,而且當輸入空間範圍很大時,中心點的個數要夠多結果才 較為可靠。 3.3.2. 垂直最小平方法. 垂 直 最 小 平 方 法(Orthogonal Least Squares, OLS)是 由 Chen (1991)、Ham. 19.

(26) (2001)、Kecman (2001)等人提出。其選取中心點選取的主要概念是將所有訓練範 例的輸入點皆視為潛在的中心點,而每一次的選取標準則是以網路輸出誤差的下降 率(error reduction ratio)最大的輸入點為新的中心點;換句話說,一次最多加入一個能 使輸出誤差下降最多的資料點作為新的中心點,直到輸出層誤差值達到可接受的程度 為止。而利用 OLS 演算法來選取中心點是根據 Gram-Schmidt 垂直理論而發展出來 的 [2]。 定義 3.3.1 假 設 A ∈ Rm×n , 若 X ∈ Rn×1 使 得 ||AX − b|| 為 最 小 , 則 稱 x 為 ||AX − b|| 的最小平方解(least square solution) 定理 3.3.2 假設 A ∈ Rm×n ,b ∈ Rm×1 ,則 X ∈ Rn×1 使得 ||AX − b|| 為最小 ⇔ AT AX = AT b. 立. 政 治 大. ‧ 國. 學. 假設 {(Xi , di )}pi=1 當做學習資料,其中 Xi 是輸入值, di 是輸入值相對應的資 料值,由 (3.2.2) 式我們可知 {y(Xi )}pi=1 為經過 RBFN 輸出的結果;我們當然期望 y(Xi ) 的值與 di 是相等的。. ‧. y(Xi ) = di. f or i = 1, 2, ......p. Nat. sit. y. (3.3.3). io. 數(weights) {wi }m i=1 使得 ||y(X) − d|| 最小。. n. al. er. 然而 (3.3.3) 式中等式左邊與右邊當然是不相等的,下面我們將討論如何找出最佳的權. i n U. v. 在 p 是有限的情況下,我們將 (3.2.2) 式與 (3.3.3) 式重新寫成 (3.3.4) 式     φ (X ) d  i 1   1      m X  φi (X2 )   d2   = wi  (3.3.4)    ..  ..     . . i=1     φi (Xp ) dp. Ch. engchi. 假設 . h(||X1 − C1 ||) h(||X1 − C2 ||) · · ·    h(||X2 − c1 ||) h(||X2 − C2 ||) · · · A=  .. .. ..  . . .  h(||Xp − C1 ||) h(||Xp − C2 ||) · · ·. 20. h(||X1 − Cm ||). .   h(||X2 − Cm ||)    ..  .  h(||Xp − Cm ||). (3.3.5).

(27) 不失一般性的我們可以假設 A 為行向量獨立(因為中心點個數往往小於資料輸入量,也 就是說 m ≤ p ),如此我們可以確保  w  1   w2 W =  ..  .  wm. AT A 可逆;由定理 3.3.2 我們可求得最小平方解    d1         d   = (AT A)−1 AT  2  (3.3.6)   ..    .     dp. 以及網路輸出值 Y . y(X1 )    y(X2 ) Y =  ..  .  y(Xm ). . .     = A(AT A)−1 AT   .       . 政 治 大. 立. ‧ 國. d2 .. . dp.       . (3.3.7). 學. 定理 3.3.3 (Gram-Schmidt 正 交 化 過 程 ). d1. . 假設 V 為分布於 F 的內積空間,S = {v1 , v2 , ......vn } ⊆ V 為線性獨立集,令 u1 = v1. Nat. k−1 X < vk , ui > ui 2 ||u || i i=1. ,2 ≤ k ≤ n. y. uk = vk −. ‧. 且. er. io. sit. ,則 {u1 , u2 , ......un } 為不含零向量的正交集且 span{u1 , u2 , ......un } = span{v1 , v2 , ......vn } 接下來我們將定義誤差的下降率(error reduction ratio),首先我們將 (3.3.4) 加入. n. al. 誤差項 {ei }pi=1 讓等式成立:    d φ (X )  1   i 1    m  d2  X  φi (X2 )   = w i  ..   ..  .  i=1  .    φi (Xp ) dp. Ch. e n g c h i. i n U .       +      . v. e1 e2 .. . ep.        . (3.3.8). 並且將 (3.3.5) 式的 A (經過輻狀基底函數轉化得到的矩陣)分解成 QR 如 (3.3.9) 式   1 r12 · · · r1m      0 1 · · · r2m  m×m  A = QR ,其中 R ∈ R = (3.3.9)  .. .. .. ..   . . . .    0 0 ··· 1. 21.

(28) 上式中 Q ∈ Rp×m ,為 A 矩陣經過 Gram-Schmidt 正交化過程得到的結果,並滿足 T Q = [q1 , q2 , ......, qm ],其中 {qi }m i=1 為正交基底向量且 Q Q = diag(h1 , h2 , ......hm ) 為. 正對角矩陣(positive diagonal matrix): T. hi = qi qi =. p X. qki T qki. 1≤i≤m. (3.3.10). k=1. 結合 (3.3.7) 式以及 (3.3.9) 式,我們可以將 (3.3.8) 式改寫成 (3.3.11) 式     e1 d1          e2   d2     D = AW + E = QRW + E , 其中D =  .  E =  .    ..   ..      ep dp. (3.3.11). 政 治 大. 立. 令 G = RW ,則 D = QG + E 既目標輸出值 D 表示為垂直基底向量 {qi }m i=1 的線性. ‧ 國. 學. 組合,由最小平方法可得最佳解 G ∈ Rm×1 為 (3.3.12) 式和 (3.3.13) 式 G = (QT Q)−1 QT D. io. g2 .. .. n. agl. m. y.       . , gi =. Ch. qi T D qi T qi. sit. g1. . , i = 1, 2, ......m. (3.3.13). er. Nat.    G=   . ‧. . (3.3.12). i n U. engchi. v. 最後由於 Q 是垂直基底向量矩陣,所以目標輸出值 D 的平方和可表示為 (3.3.14) 式 T. T. T. T. D D = G Q QG + E E =. m X. gk 2 hk + E T E. (3.3.14). k=1 m X. 定義 3.3.4 誤差下降率(err)=. T. T. D D−E E = DT D. gk 2 hk. k=1. DT D. =. 網路輸出值 目標輸出值. 由定義可以看出誤差下降率(err)為網路輸出值與目標輸出值的比值,此比值越高代 表模式推估能力越好,而對應第 t 個中心點時,誤差下降率為: [err]t =. (qtT D)2 gt 2 ht = DT D qtT qt DT D. 22. (3.3.15).

(29) 在計算所有輸入項的誤差下降率後,取其造成最大之誤差下降率即 [err]max 的輸入項為 隱藏層第一個神經元的中心點,在扣除該輸入項資料後,依上述步驟重新計算,挑選剩 餘的輸入項中造成誤差下降率最大值的輸入項為下一個神經元的中心點,並將所有的最 X 大誤差下降率累計起來 [err],如此依序增加隱藏層之神經元數目,直到整個網路架 構滿足所設定的容忍誤差(tolerance)為止。假設此時選取的中心點個數為 m 個:. 1−. m X. [err]i < 容忍誤差. (3.3.16). i=1 m X. [err]i > 設定的正確率. 政 治 大 OLS 中 心 點 選 取 法 計 算 步 驟 立 i=1. 3.3.3. (i). , i = 1, 2 . . . p 代入 (3.3.15) 式,並找出 [err]k1 = max{ [err]i. ‧ 國. 學. (1) 令 q1 = φi. ,1 ≤. i ≤ p} ,k1 為第 1 次挑選到的資料點,則 q1 = φk1 ,c1 = ck1 再 次 代 入 (3.3.15) 式 , 並 找 出. ‧. (i). (2) 將 剩 下 的 φi 與 q1 分 別 作 正 交 化 得 到 q2. Nat. y. , 1 ≤ i ≤ p , i 6= k1 } ,k2 為第 2 次挑選到的資料點,可. [err]k2 = max{ [err]i. al. n qn(i). qjT φi = t qj qj. = φi −. Ch. n−1 X. er. io. (i) anj. sit. 得到 q2 = φk2 ,c2 = ck2 ;同理我們可以整理出. , j = 1, 2 . . . n − 1 , ∀ n ≥ 2. engchi. (i) anj qj. i n U. v. , 1 ≤ i ≤ p , i 6= k1 , . . . i 6= kn−1. j=1. [err]kn = max{ [err]i. , 1 ≤ i ≤ p , i 6= k1 , . . . i 6= kn−1 }. 直到滿足 (3.3.16) 式為止。 (3) 最後計算連結權重(synaptic weight) wi 得到輸出值: G = RW y(X) =. m X i=1. 23. wi · φi (X).

(30) 3.4. 動態輻狀基底函數類神經網路 靜態類神經網路(Static Neural Network)例如 RBF、TDNN 等,它們都有共同特. 徵就是沒有遞迴項。靜態類神經網路對資料結構的長期(long-term)存在關係可以有良好 解析效果,但對於動態系統的暫時性(temporal)或短暫性(short-term)的動態變化就難 以依實際情況加以調整掌握,其網路輸出結果完全由外界輸入項,與連結權重決定,即 輸入項確認後,導入以訓練好的網路只會有一種輸出值,由於缺少遞迴項,無法將具有 時便性的資訊納入網路中考量,故這類網路在先天上屬於穩定靜態的。 所謂的動態類神經網路指的是神經元間的回饋動作,雖然倒傳遞類神經是以監督式 學習方式進行訓練,也有一個回傳的動作,是將誤差回傳來調整權重,以減少網路輸出. 政 治 大 不在變動,故此一誤差回傳動作屬於網路外進行,並不是發生在網路內部神經元的架構 立. 值與目標值之間的差距,但這樣的動作僅在訓練階段調整權重,待訓練完成後權重值就. ‧ 國. 學. 內,因此只能算是一種靜態的類神經網路。. 簡單的來看,我們可以在靜態類神經網路架構中加入遞迴項,使其成為動態的類神 經網路,具有動態記憶或稱為短暫記憶(short-term memory)。一般來說,網路的記憶. ‧. 分為兩種,一種為長期記憶,另一為短期記憶;長期記憶或稱為穩定的記憶,是經由監督. sit. y. Nat. 示學習將訓練網路資料建入網路,儲存於網路連結權重(synaptic weight)上;當網路所 需要處理的問題具有時間性尺度(temporal dimension)時,則需要暫時的記憶來儲存距. io. n. al. er. 離現在不久前的過去資料。動態神經網路除了維持靜態神經網路計有強健推估能力特性. i n U. v. 外,更提供對於生物神經網路在有關於短期記憶功能上,有更佳的處理方式 [6]。. Ch. engchi. 24.

(31) 第四章. T-RBF (Temporal RBF) 方法. 回顧一開始提到的時間稽延類神經網路(TDNN),它很成功的使用時間稽延的方法 結合在前饋式類神經網路當中,然而其缺點也是很明顯的,就是在於一開始就固定了稽 延的時間在整個訓練過程當中,如何決定稽延時間的個數以及每次稽延最適當的長度常. 政 治 大 標準的 RBF 可以幫助我們完成複雜的非線性辨識問題,但限制於固定的靜態問題 立. 常會造成很大的困擾。. 而不是隨著時間變動的問題,靜態類神經網路在處理時間性問題上的缺點就是在隱藏層. ‧ 國. 學. 與輸出層之間無法對暫時性模式(temporal pattern)的輸入有回應的動作,為了有所回 應,我們必須在網路的每一層給予時間稽延。. ‧. T-RBF(Temporal RBF),就像是自適應稽延類神經網路(Adaptive Time Delay. sit. y. Nat. Neural Network , ATDNN) [7] [8]、局部暫時性記憶(Local Short Term Memory ,. io. er. LSTM)等,已經被提出來可以解決這類問題的限制。在整個訓練中適應稽延時間(time delay)及權數,這是一種動態的學習方法,這可以讓我們的網路在應用程序上可以動態. al. n. 的隨著時間變動 [4]。. 4.1. Ch. engchi. i n U. v. T-RBF 網 路 架 構 在建構 T-RBF 網路架構之前,首先我們來定義稽延區塊(delay block):. 定義 4.1.1 時間框架(Time frame) Tji 是由稽延時間所成的集合 (τji1 , τji2 ......τjin ), 其使用在前一層的節點 i 到下一層的節點 j 的連結之間;其中 n 為稽延的長度。 定義 4.1.2 稽延區塊(delay block),如圖 4.1 所示,由前一層的節點 i 到下一層的節 點 j 的連結中我們放置一組稽延區塊所構成,圖中的 Nk 表示第 k 層。. 25.

(32) 圖 4.1: 介於 Nk−1 層的第 i 個節點與 Nk 層第 j 個節點的 Delay Block. 政 治 大. 立. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. i n U. 圖 4.2: T-RBF 模型. engchi. v. 如圖 4.2 所示,我們建構一個 n 個輸入項的輸入層,整個輸入層對應一個稽 延區塊(delay block) τ1 ,h 個節點的隱藏層,整個隱藏層對應一個稽延區塊 τ2 , (i). 最後是一個輸出層。而圖 4.3 中,τ1 (i). 表示第 i 個輸入值所對應的稽延區塊,且. (j). (j). dim(τ1 ) = L,τ2 為第 j 個中心點活化函數所對應的稽延區塊,且 dim(τ2 ) = m。 接下來我們將定義輸出函數:  Sk = ϕ Wk0 +. . j. h dim(τ X X2 ) j=1. (2). Yjp Wjpk . (4.1.1). p=1. 其中 ϕ 為輸出的活化函數,它可能是線性的或者 S 形函數(sigmoid form),Wk0 為偏移 26.

(33) 政 治 大. 立. ‧. ‧ 國. 學. n. al. (2) 量(bias),Wjpk. Ch. er. io. sit. y. Nat (j). (i). 圖 4.3: τ1 與 τ2. 稽延區塊示意圖. engchi. i n U. v. 為隱藏層和輸出層之間的權數值。其中 Yjp 為隱藏層中的活化函數: i. Yjp =. n dim(τ X X1 ) i=1. (1). Wiqj φ(||Xiq − Cjp ||). (4.1.2). q=1 (1). 在 (4.1.2) 式中 φ 為輻狀基底函數,Wiqj 表示輸入層與隱藏層的權數,Cjp 為在第 j 個中心點的第 p 個時間分量,Xiq 表示第 i 個輸入值的第 q 個時間分量。 4.1.1. 網 路 展 開 平 行 演 算 法 (Network Unfolding Algorithm). 在上述網路架構裡,我們發現一個困難的地方就是在於如何計算隱藏層中每一個稽 延區塊的活化函數;除非每個稽延區塊的稽延長度只有 1 (only one delay)。對於如此. 27.

(34) 問題我們將引進網路展開平行演算法(Network Unfolding Algorithm , NUA) [9],該 演算法能夠簡化圖 4.2,降低了複雜性,如此我們採用此演算法。它主要為下列兩個階 段: 定義 4.1.3 pji 是一個信號值從節點 i 到節點 j 並在時間 t 時通過時間框架(time frame) Tji 所成的集合。也就是說,pji (t, Tji ) = [si (t − τji1 ), ......, si (t, τjin )],其中 si (t) 是時間 t 從節點 i 發出的信號,n 為 Tji 的長度。 • 階段一: 第一個階段有下列四個步驟,在此並沒有以演算法表示,只是敘述演算法概念: Step1 展開輸入項:. 政 治 大. 拆開稽延區塊裡的每一稽延時間並複製該輸入項與之對應,如圖 4.4 中的. 立. 學. ‧ 國. Step1 表示。. Step2 重新調整輸入的時間遲滯量:. 移除介在輸入層與隱藏層中間的稽延時間,並將輸入項以信號值向量表示,. ‧. 即 [pj1 (t, Tj1 ), ......, pjnI (t, TjnI )],其中 nI 為介於輸入層與隱藏層中間的稽. y. Nat. 延長度,如圖 4.4 中的 Step2 表示。. sit. Step3 展開隱藏層:. n. al. er. io. 複製前兩步驟所產生的輸入項,如同 Step1,將隱藏層的第 j 個節點所有的. i n U. v. 稽延時間拆開並個對應到一組輸入項,如圖 4.4 中的 Step3 表示。. Ch. engchi. Step4 重新調整輸入的時間遲滯量:. 如同 Step2 ,將介於隱藏層與輸出層中間的稽延時間以信號值向量的方式併 入輸入項中,如圖 4.4 中的 Step4 表示。 圖 4.5 為網路平行展開演算法(NUA)的第二種模式,是以先展開介於隱藏層與輸 出層的稽延時間開始。 • 階段二: 我們將利用第三章所提到的垂直正交最小平方法(Orthogonal Least Squares, OLS)來選取中心點,完成整個網路的大小。 經 過 階 段 一 與 階 段 二 , 我 們 期 望 目 標 為 (1) 隱 藏 層 與 輸 出 層 之 間 只 有 權 數(weights),沒有稽延時間。(2) 輸入層與隱藏層之間只有稽延時間,沒有權數。. 28.

(35) 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. 圖 4.4: NUA 展開示意圖. 29. v.

(36) 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 4.5: NUA 展開的第二種模式:先展開第二層稽延時間. 30.

(37) 第五章. 5.1. RBF 圖形介面化工具. Adobe Flex 介 紹 隨著 WWW 的興起,應用程式不再侷限於一台電腦上執行,逐漸演化成一個個的. 政 治 大 竟與一般傳統應用程式有很大的差異,加上各家瀏覽器對於標準的支援不同,開發出跨 立. 網頁,使用者端只需安裝瀏覽器跟一些插件,輸入網址,一切完成。但網頁應用程式究. ‧ 國. 學. 平台跨瀏覽器的應用成為一件吃力不討好的工作。Adobe Flex 正是解決這些問題的方 案之一,適用於建立和維護可部署在各種主要瀏覽器、桌上型電腦和作業系統上,具豐. ‧. 富使用者介面的網路應用程式。Flex 是一組工具的集合,除了應用程式的開發環境外, 豐富美觀的元件提供了各種建構應用程式所必需的元素。. sit. y. Nat. Flex(在 Flex 3.0 之後更名為 Flash Builder 4) 是 Adobe 公司所發展用來開發. io. er. 「RIA(Rich Internet Application)」的工具,「RIA」簡單的說就是在 Internet 上面 執行的高親和性操作介面的應用程式。然而應用程式的發展大致可以簡單區分為4個階. al. n. 段:. Ch. engchi. i n U. v. (1) DOS 應用程式:文字操作介面。 (2) Window 應用程式: – 優點:. (a) 圖形化操作介面,使用者容易操作。 (b) 程式容易開發,開發工具有:VB、Delphi、PowerBuilder. . . 。 – 缺點: (a) 版本控制不易,新版本通常必須更新到使用者的電腦上。 (b) 跨平台困難,同一份程式無法在不同類型的作業系統上面執行。. 31.

(38) (c) 一般應用在區域網路上。 (3) Web 應用程式: 優點: (a) 版本控制容易,使用者的電腦上只需要安裝瀏覽器。 (b) 應用在 Internet 上。 缺點: (a) 雖然是圖形操作介面,但是受限於瀏覽器的功能,操作介面的親和性普 遍不高。 . 政 治 大. (b) 缺乏好用的開發工具。. 立. (4) RIA:結合 Window 和 Web 應用程式的優點。. ‧ 國. 學. 這樣的發展趨勢在類似 Flex 這樣的開發工具出現之後,應該會變的更快速,可以 預見在不久的將來,Internet 上的應用程式都會有更好用的操作介面。. ‧. 長久以來,大家對應用程式的要求不外乎以下這些特性:. sit. y. Nat. io. al. n. (2) 跨平台。. er. (1) 操作介面有一致性並且容易使用。. (3) 系統穩定性好。. Ch. engchi. i n U. v. (4) 程式可以容易並且快速的開發、維護、擴充。 (5) 容易安裝和改版。 (6) 程式人員的教育訓練成本低。 (7) 發展大型系統。 (8) 在 Internet上 執行。 基本上 Flex 提供了滿足這些需求的條件,主要原因是它具備下面這些特性:. 32.

(39) (1) 豐富的視覺化元件: RIA 的特性之一就是操作介面的親和性,這也是 Web 應用程式最大的問題,這 些元件是構成操作介面的基本元素。Flex 應用程式和 Web 應用程式不同的地方 是:Web 應用程式將原始碼傳送到 Client 的瀏覽器執行,所以操作介面受限於 瀏覽器的功能,Flex 應用程式則是將編譯過的程式碼送到 Client 端的 Flash 執 行,操作介面可以有更大的彈性。 (2) 物件導向(Object Oriented , OO)特性: 利用物件的封裝和繼承,可以一步一步建構發展系統所需要的元件,便於快速開 發穩定的大型系統。 在軟體開發模式中,有一個 80/20 法則,就是用 20% 的時. 政 治 大 們很容易找出大多數系統共同的部分,將這些共同部分包裝成元件,並且套用到 立 80% 的程式,而不能套用的部分通常是包含特殊的規則或是操作流程,這部分會. 間去開發系統 80% 的程式,再用 80% 的時間,去完成剩下的 20%,這是因為我. ‧ 國. 學. 需要比較多的時間來討論、修改和撰寫。要實現這個 80/20 法則,依賴的就是這 個 OO 的特性。. ‧. (3) 除錯和編譯。. y. Nat. sit. (4) 跨平台:Flex 使用 Flash 做為 Client 端的 Virtual Machine 來跟 Flex 應用程. n. al. er. io. 式溝通,每個平台有自己版本的 Flash,藉此達到跨平台的目的。. 5.2. i n U. C. 使 用 Adobe Flex 建h 構eRBF n g c應h用i 程式. v. 我們將以 Flex 在 Internet 上開發 RBFN 應用程式,由於 ActionScript 3.0 本身 並沒有強大的數學函式庫,只有基本的數學運算,所以我們必須先建立一些數學工具以 供使用。 (1) 矩陣定義、常用矩陣屬性及工具,程式詳見附錄 A。 (2) 利用 Householder 矩陣來求 QR 分解及相關的應用(包含最小平方解),程式詳見 附錄 B。 (3) RBFN 相關工具,程式詳見附錄 C。. 33.

(40) (4) RBFN 隨機選取法,程式詳見附錄 D。 (5) RBFN 垂直最小平方法,程式詳見附錄 E。. 設定區畫面. 立. 政 治 大. ‧. ‧ 國. 學 y. Nat. io. 圖 5.1: 設定區畫面示意圖. al. sit. 5.3.1. RBFN 圖 形 介 面 工 具 使 用 說 明. er. 5.3. n. v i n Ch (1) 選單列 (如圖 5.1 ─ 1 號區域):包含設定,資訊,動態學習及預測等功能鍵。 engchi U ●. 設定:設定您的學習資料,輻狀基底函數及中心點選取方法。. ●. 資訊:依照您在設定區所設定後產生的結果資訊(輸出值、真實值及誤差 值)。. ●. 動態學習:依照使用者在設定區所設定後產生的結果資訊,可經由動態工具 列,變動設定(如變動輻狀基底函數、中心點個數等),藉此產生動態圖形變 化,目前此功能僅提供中心點選取法為機選取法使用。. ●. 預測:在設定區只提供以「當期」預測「下一期」的功能,如需改變如「當 期」、「前一期」、「前二期」預測「後二期」可依使用者需由在預測功能 區進行變動及預測未來。. 34.

(41) (2) 設定工具列 (如圖 5.1 ─ 2 號區域):學習資料設定(可選擇外部讀取 (如圖 5.2) 或者範例),輻狀基底函數設定,中心點選取法設定。 (3) 設定區內容 (如圖 5.1 ─ 3 號區域):在 2 號區域設定的詳細內容及介紹。. 政 治 大. 圖 5.2: 外部讀取示意圖. 立. y. ‧. ‧ 國. 學 sit. io. n. al. er. Nat. 圖 5.3: 範例 sin(−π x) 示意圖. Ch. engchi. i n U. v. 圖 5.4: 輻狀基底函數設定示意圖. 35.

(42) 圖 5.5: 隨機選取法內容設定示意圖. 立. 政 治 大. ‧. ‧ 國. 學. n. al. er. io. 5.3.2. 資訊區畫面. sit. y. Nat. 圖 5.6: 資訊區畫面示意圖. Ch. engchi. i n U. v. (1) 選設定資訊列 (如圖 5.6 ─ 1 號區域):您在設定區設定的內容。 (2) 真實值與輸出值圖 (如圖 5.6 ─ 2 號區域):真實值與 RBFN 輸出值對照圖,按 著滑鼠左鍵拖拉 (如圖 5.7),可局部區域放大 (如圖 5.8)。 (3) 誤差圖 (如圖 5.6 ─ 3 號區域):真實值與 RBFN 輸出值誤差圖,按著滑鼠左鍵 拖拉,可局部區域放大。 (4) 資訊內容表 (如圖 5.6 ─ 4 號區域):項目、真實值、RBFN 輸出值及誤差。 (5) 放大按鍵 (如圖 5.6 ─ 5 號按鍵):點擊可放大真實值與輸出值圖以及誤差圖 (如 圖 5.9)。. 36.

(43) 圖 5.7: 滑鼠左鍵拖拉局部放大操作示意圖. 立. 政 治 大. n. al. 動態學習區畫面. sit er. io. 5.3.3. y. ‧. ‧ 國. 學. Nat. 圖 5.8: 局部區域放大示意圖. Ch. engchi. i n U. v. (1) 動態工具列 (如圖 5.10 ─ 1 號區域):. a. 輻狀基底函數:有四種選擇,分為別:高斯函數、二次多變數函數、二次多 變數倒函數及薄平面曲線函數。 b. 隨機選取法選取方式:平均選取與亂數選取。 c. 中心點個數設定。 d. 範圍控制:圖形局部範圍控制。 (2) 動態圖形區 (如圖 5.10 ─ 2 號區域):區域內顯示學習資料(真實值與輸出值)圖, 有線形圖、點圖以及誤差圖,依使用者在動態工具列的設定,動態變動圖形。. 37.

(44) 學. ‧ 國. 立. 政 治 大. 圖 5.9: 點擊放大按鍵示意圖. ‧. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. 圖 5.10: 動態學習區畫面示意圖. 38. v.

(45) 政 治 大 立圖 5.11: 預測區畫面示意圖 預測區畫面. (1) 預測設定區 (如圖 5.11 ─ 1 號區域):. ‧. ‧ 國. 學. 5.3.4. sit. y. Nat. a. 學習資料與對照資料設定:依使用者需求調整資料比例。. al. 變數倒函數及薄平面曲線函數。. er. io. b. 輻狀基底函數:有四種選擇,分為別:高斯函數、二次多變數函數、二次多. n. v i n Ch c. 隨機選取法選取方式:平均選取與亂數選取;若設定為垂直最小平方法則為 engchi U 容忍誤差設定,並且沒有 d 項。. d. 中心點個數設定。 e. 預測方式設定:預設以「當期」預測「下一期」,可依使用者需求進行變 更。 (2) 學習資料資訊 (如圖 5.11 ─ 2 號區域):含學習資料圖(真實值與輸出值)及學習資 料表(真實值與輸出值)。 (3) 對照資料資訊 (如圖 5.11 ─ 3 號區域):含對照資料圖(真實值與估計值)及對照資 料表(真實值與估計值)。. 39.

(46) 政 治 大. 立. ‧. ‧ 國. 學. 圖 5.12: 切換學習資料圖與學習資料表示意圖. n. engchi. er. io. Ch. sit. y. Nat. al. 圖 5.13: 預測未來示意圖. i n U. v. (4) 預測未來 (如圖 5.11 ─ 4 號區域):系統直接預測未來第一項,也可自行輸入資 料預測未來,如圖 5.13。 (5) 切換鍵 (如圖 5.11 ─ 5 號按鍵):切換學習資料圖(對照資料圖)與學習資料表(對 照資料表),如圖 5.12。 (6) 範圍控制 (如圖 5.11 ─ 6 號拖拉控制):圖形局部範圍控制。. 5.4 ●. 操作實例 我們以建構 sin(−π x) 為例:. 40.

(47) 圖 5.14: 中心點個數: 3,實例操作圖. 學. ‧ 國. 立. 政 治 大. ‧. (1) 設定 101 筆資料,前 100 筆為網路輸入值,後 100 筆為真實值,以「當. n. al. Ch. (4) 中心點個數:3 個中心點,如圖 5.14。. ●. engchi. er. io. (3) 中心點選取方式:隨機選取法平均選取。. sit. Nat. (2) 輻狀基底函數:高斯函數(Gaussian function)。. y. 期」預測「下一期」的方式建構 RBFN。. i n U. v. 我們同樣以建構 sin(−π x) 為例,但改變中心點個數作為比較: (1) 設定 101 筆資料,前 100 筆為網路輸入值,後 100 筆為真實值,以「當 期」預測「下一期」的方式建構 RBFN。 (2) 輻狀基底函數:高斯函數(Gaussian function)。 (3) 中心點選取方式:隨機選取法平均選取。 (4) 中心點個數:10 個中心點,如圖 5.15。. 比較圖 5.14 與 圖 5.15 明顯看得出來中心點數目影響整個網路的準確度。. 41.

(48) 圖 5.15: 中心點個數: 10,實例操作圖. 學. 我們以建構 4x(1 − x) 為例:. ‧. ●. ‧ 國. 立. 政 治 大. y. Nat. (1) 設定 101 筆資料,前 100 筆為網路輸入值,後 100 筆為真實值,以「當. er. io. sit. 期」預測「下一期」的方式建構 RBFN。 (2) 輻狀基底函數:高斯函數(Gaussian function)。. n. al. Ch. (3) 中心點選取方式:垂直最小平方法。. engchi. i n U. v. (4) 容忍誤差:0.5,如圖 5.16。 ●. 我們同樣以建構 4x(1 − x) 為例,但改變容忍誤差作為比較: (1) 設定 101 筆資料,前 100 筆為網路輸入值,後 100 筆為真實值,以「當 期」預測「下一期」的方式建構 RBFN。 (2) 輻狀基底函數:選擇高斯函數(Gaussian function)。 (3) 中心點選取方式:垂直最小平方法。 (4) 容忍誤差:0.1,如圖 5.17。. 42.

(49) 學. 圖 5.16: 容忍誤差:0.5,實例操作圖. ‧. ‧ 國. 立. 政 治 大. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 5.17: 容忍誤差:0.1,實例操作圖. 43.

(50) 圖 5.18: 學習資料圖. 圖 5.19: 對照資料圖. ‧ sit. y. Nat. 我們以預測 sin(−π x) 為例:. io. al. er. ●. 預測實例. 學. 5.5. ‧ 國. 立. 政 治 大. v. n. (1) 設定 51 筆學習資料 (如圖 5.18),50 筆對照資料 (如圖 5.19)。. Ch. engchi. i n U. (2) 輻狀基底函數:高斯函數(Gaussian function)。 (3) 中心點選取方式:隨機選取法平均選取。 (4) 中心點個數:8 個中心點。 (5) 以「第一期」預測「第三期」的方式進行預測,如圖 5.20。. 圖 5.20: 預測結果圖. 44.

(51) 圖 5.21: 學習資料圖. 學. 圖 5.22: 對照資料圖. ‧. ●. ‧ 國. 立. 政 治 大. 我們以預測 sin(−π x) 為例:. y. Nat. er. io. sit. (1) 設定 100 筆學習資料 (如圖 5.21),100 筆對照資料 (如圖 5.22)。 (2) 輻狀基底函數:高斯函數(Gaussian function)。. n. al. Ch. (3) 中心點選取方式:隨機選取法平均選取。. engchi. i n U. v. (4) 中心點個數:15 個中心點。. (5) 以「第一期」、「第二期」預測「第四期」的方式進行預測,如圖 5.23。. 圖 5.23: 預測結果圖. ●. 我們以預測 4x(1 − x) 為例:. 45.

(52) 圖 5.24: 學習資料圖. 學. ‧ 國. 立. 政 治 大 圖 5.25: 對照資料圖. ‧. n. al. (4) 容忍誤差:0.1。. Ch. engchi. er. io. (3) 中心點選取方式:垂直最小平方法。. sit. Nat. (2) 輻狀基底函數:高斯函數(Gaussian function)。. y. (1) 設定 51 筆學習資料 (如圖 5.24),50 筆對照資料 (如圖 5.25)。. i n U. v. (5) 以「第一期」、「第二期」預測「第三期」的方式進行預測,如圖 5.26。. 圖 5.26: 預測結果圖. ●. 我們以預測 4x(1 − x) 為例: (1) 設定 51 筆學習資料 (如圖 5.27),50 筆對照資料 (如圖 5.28)。. 46.

(53) 圖 5.27: 學習資料圖. 政 治 大. 學. ‧ 國. 立. 圖 5.28: 對照資料圖. ‧. (2) 輻狀基底函數:二次多變數函數(multiquadratic function)。. y. Nat. sit. (3) 中心點選取方式:垂直最小平方法。. n. al. er. io. (4) 容忍誤差:0.0001。. i n U. v. (5) 以「第一期」、「第二期」、「第三期」預測「第四期」的方式進行預測, 如圖 5.29。. Ch. engchi. 圖 5.29: 預測結果圖. 5.6. 結論 藉由 RBFN 互動式介面應用程式,我們可以很輕易的了解 RBFN 的網路架構,也. 47.

(54) 很容易的比較出不同的輻狀基底函數對預測結果的差異,進而選擇適合學習資料的的幅 狀基底函數;也可以藉由動態改變中心點個數時,比較中心點對整個網路的影響:(1)網 路運算速度,(2)預測值的精準度。當資料如果很龐大,OLS 中心點選取法比隨機選取 中心點對預測結果的確有比較準確,如此對預測未來的目標值能有較佳參考。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. 48. i n U. v.

(55) 附錄 A. 矩 陣 定 義 、 常 用 矩 陣 屬 性 及 工 具. package com . clevr . matrixalgebra {. /* * Matrix class ported from Jama . * * @langversion ActionScript 3.0 * @playerversion Flash 9.0 * * @author Matt Kane * @since 04.06.2007 */ public class RealMatrix {. /** Array for internal storage of elements . */ private var A : Array ;. 學. /** Row and column dimensions . */ private var m : int , n : int ; /* - - - - - - - - - - - - - - - - - - - - - - - Constructors * - - - - - - - - - - - - - - - - - - - - - - - - */. ‧. ‧ 國. 立. 政 治 大. n. al. er. io. sit. y. Nat. /** Construct an m - by - n matrix of zeros . We always show a vector as 1 column matrix which means all the elements be a Array . @param m Number of rows . @param n Number of colums . */. i n U. v. public function RealMatrix ( mm :* , nn : int = 1 , s : Number = NaN ) { if ( mm is Array ) { m = mm . length ; var tempB : Array ; if ( mm [0] is Array ) { n = mm [0]. length ; for ( i = 0; i < m ; i ++) { if ( mm [ i ]. length != n ) { throw new Error ( " All rows must have the same length . " ) ; } } } else { n =1; for ( i =0; i < m ; i ++ ) { tempB = new Array (1) ; tempB [0] = mm [ i ]; mm [ i ] = tempB ; } } this . A = mm ; return ; } m = mm ; n = nn ;. Ch. engchi. 49.

(56) A = var var for. new Array ( m ) ; i : int ; j : int ; ( i = 0; i < m ; i ++) { A [ i ] = new Array ( n ) ;. } if (! isNaN ( s ) ) { for ( i = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { A [ i ][ j ] = s ; } } } } /** Construct a matrix from a copy of a 2 - D array . @param arr Two - dimensional array of doubles . */ public static function c o n s t r u c t W i t h C o p y ( arr : Array ) : RealMatrix { var mm : int = arr . length ; var nn : int = arr [0]. length ; var X : RealMatrix = new RealMatrix ( mm , nn ) ; var C : Array = X . getArray () ; var j : int ; for ( var i : int = 0; i < mm ; i ++) { if ( arr [ i ]. length != nn ) { throw new Error ( " All rows must have the same length . " ) ; } for ( j = 0; j < nn ; j ++) { C [ i ][ j ] = arr [ i ][ j ]; /* trace (" C [" + i + "][" + j + "]: " + C [ i ][ j ]) ; */ } } return X ; }. 學. ‧. ‧ 國. 立. 政 治 大. Nat. er. io. sit. y. /** Access the internal two - dimensional array . @return Pointer to the two - dimensional array of matrix elements . */. public function getArray () : Array { return A ; }. n. al. Ch. i n U. v. /** Copy the internal two - dimensional array . @return Two - dimensional array copy of matrix elements . */. engchi. public function getArrayCopy () : Array { var C : Array = new Array ( m ) ; var j : int ; for ( var i : int = 0; i < m ; i ++) { C [ i ] = new Array ( n ) ; for ( j = 0; j < n ; j ++) { C [ i ][ j ] = A [ i ][ j ]; } } return C ; } /** Make a one - dimensional column packed copy of the internal array . @return Matrix elements packed in a one dimensional array by columns . */ public function g e t C o l u m n P a c k e d C o p y () : Array { var vals : Array = new Array ( m * n ) ; var j : int ; for ( var i : int = 0; i < m ; i ++) {. 50.

(57) for ( j = 0; j < n ; j ++) { vals [ i + j * m ] = A [ i ][ j ]; } } return vals ; } /** Make a n - by -1 vector be the kth row vector . @return the kth row of this matrix . */ public function getRowVector ( k : int ) : RealMatrix { return new RealMatrix ( A [ k ]) ; } /** Make a one - dimensional row packed copy of the internal array . @return Matrix elements packed in a one dimensional array by rows . */ public function g e t R o w P a c k e dC o p y () : Array { var vals : Array = new Array ( m * n ) ; var j : int ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { vals [ i * n + j ] = A [ i ][ j ]; } } return vals ; } /** Get row dimension . @return m , the number of rows . */. 學. public function ge tR ow D im en si o n () : int { return m ; }. ‧. ‧ 國. 立. 政 治 大. sit. y. Nat. /** Get column dimension . @return n , the number of columns . */. al. er. io. public function g e t C o l u m n D i m e n s i o n () : int { return n ; }. n. /** Get a single element . @param i Row index . @param j Column index . @return A (i , j ) @exception A r r a y I n d e x O u t O f B o u n d s E x c e p t i o n */. Ch. engchi. i n U. v. public function get ( i : int , j : int ) : Number { return A [ i ][ j ]; } /** Get a submatrix . @param i0 Initial row index @param i1 Final row index @param j0 Initial column index @param j1 Final column index @return A ( i0 : i1 , j0 : j1 ) */ public function getMatrix ( i0 : int , i1 : int , j0 : int , j1 : int ) : RealMatrix { var X : RealMatrix = new RealMatrix ( i1 - i0 +1 , j1 - j0 +1) ; var B : Array = X . getArray () ; for ( var i : int = i0 ; i <= i1 ; i ++) { for ( var j : int = j0 ; j <= j1 ; j ++) { B [i - i0 ][ j - j0 ] = A [ i ][ j ]; } } return X ;. 51.

(58) } /** Set a @param @param @param */. single element . i Row index . j Column index . s A (i , j ) .. public function set ( i : int , j : int , s : Number ) : void { A [ i ][ j ] = s ; } /** Matrix transpose . @return A */ public function transpose () : RealMatrix { var X : RealMatrix = new RealMatrix (n , m ) ; var C : Array = X . getArray () ; var j : int ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { C [ j ][ i ] = A [ i ][ j ]; } } return X ; } /** get maximun of k column . * initial k is 0. @return maximum value . */. 學. public function g e t C o l u m n M a xi m u n ( k : int =0) : Number { var max : Number if ( n ==1) { if ( k !=0) { throw new Error ( " only 1 column . "); return max ; } max = Number ( A [0]) ; for ( var i : int =1; i < m ; i ++) { max = Math . max ( max , A [ i ]) ; } } else { max = Number ( A [0][ k ]) ; for ( i =1; i < m ; i ++) { max = Math . max ( max , A [ i ][ k ]) ; } } return max ; } /** get minmun of k column . * initial k is 0. @return minmun value . */. ‧. ‧ 國. 立. 政 治 大. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. public function g e t C o l u m n M i ni m u n ( k : int =0) : Number { var min : Number if ( n ==1) { if ( k !=0) { throw new Error ( " only 1 column . "); return min ; } min = Number ( A [0]) ; for ( var i : int =1; i < m ; i ++) { min = Math . min ( min , A [ i ]) ; } } else { min = Number ( A [0][ k ]) ; for ( i =1; i < m ; i ++) { min = Math . min ( min , A [ i ][ k ]) ; } } return min ;. 52.

(59) } /** One norm @return */. maximum column sum .. public function norm1 () : Number { var f : Number = 0; var i : int ; var s : Number ; for ( var j : int = 0; j < n ; j ++) { s = 0; for ( i = 0; i < m ; i ++) { s += Math . abs ( A [ i ][ j ]) ; } f = Math . max (f , s ) ; } return f ; } /** Two norm @return */. maximum singular value .. 政 治 大. public function norm2 () : Number { return ( new S i n g u l a r V a l u e D e c o m p o s i t i o n ( this ) . norm2 () ) ; }. 立. 學. public function normInf () : Number { var f : Number = 0; var j : int ; var s : Number ; for ( var i : int = 0; i < m ; i ++) { s = 0; for ( j = 0; j < n ; j ++) { s += Math . abs ( A [ i ][ j ]) ; } f = Math . max (f , s ) ; } return f ; }. ‧. ‧ 國. /** Infinity norm @return maximum row sum . */. er. io. sit. y. Nat. /** Frobenius norm @return sqrt of sum of squares of all elements . */. n. al. Ch. i n U. v. public function normF () : Number { var f : Number = 0; var j : int ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { f = Maths . hypot (f , A [ i ][ j ]) ; } } return f ; } /**. engchi. Unary minus @return -A. */ public function uminus () : RealMatrix { var X : RealMatrix = new RealMatrix (m , n ) ; var C : Array = X . getArray () ; var j : int ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { C [ i ][ j ] = -A [ i ][ j ]; } } return X ; }. 53.

(60) /** C = A + B @param B @return */. another matrix A + B. public function plus ( B : RealMatrix ) : RealMatrix { checkMatrixDimensions (B); var X : RealMatrix = new RealMatrix (m , n ) ; var C : Array = X . getArray () ; var j : int ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { C [ i ][ j ] = A [ i ][ j ] + B . A [ i ][ j ]; } } return X ; } /** A = A + B @param B @return */. public function plusEquals ( B : RealMatrix ) : RealMatrix { checkMatrixDimensions (B); var j : int ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { A [ i ][ j ] = A [ i ][ j ] + B . A [ i ][ j ]; } } return this ; }. 立. 政 治 大. /** C = A - B @param B @return */. 學. another matrix A - B. ‧. ‧ 國. another matrix A + B. n. al. er. io. sit. y. Nat. public function minus ( B : RealMatrix ) : RealMatrix { checkMatrixDimensions (B); var X : RealMatrix = new RealMatrix (m , n ) ; var C : Array = X . getArray () ; var j : int ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { C [ i ][ j ] = A [ i ][ j ] - B . A [ i ][ j ]; } } return X ; }. Ch. /** A = A - B @param B @return */. engchi. another matrix A - B. i n U. v. public function minusEquals ( B : RealMatrix ) : RealMatrix { checkMatrixDimensions (B); var j : int ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { A [ i ][ j ] = A [ i ][ j ] - B . A [ i ][ j ]; } } return this ; } /** Element - by - element multiplication , C = A .* B @param B another matrix @return A .* B */ public function arrayTimes ( B : RealMatrix ) : RealMatrix { checkMatrixDimensions (B); var X : RealMatrix = new RealMatrix (m , n ) ; var C : Array = X . getArray () ; var j : int ;. 54.

(61) for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { C [ i ][ j ] = A [ i ][ j ] * B . A [ i ][ j ]; } } return X ; } /** Element - by - element mult iplicati on in place , A = A .* B @param B another matrix @return A .* B */ public function a r r a y T i m e s E qu a l s ( B : RealMatrix ) : RealMatrix { checkMatrixDimensions (B); var j : int ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { A [ i ][ j ] = A [ i ][ j ] * B . A [ i ][ j ]; } } return this ; }. 政 治 大. /** Element - by - element right division , C = A ./ B @param B another matrix @return A ./ B */. 學. ‧. ‧ 國. 立. public function a r r a y R i g h t D iv i d e ( B : RealMatrix ) : RealMatrix { checkMatrixDimensions (B); var X : RealMatrix = new RealMatrix (m , n ) ; var j : int ; var C : Array = X . getArray () ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { C [ i ][ j ] = A [ i ][ j ] / B . A [ i ][ j ]; } } return X ; }. sit. y. Nat. n. al. er. io. /** Element - by - element right division in place , A = A ./ B @param B another matrix @return A ./ B */. Ch. i n U. v. public function a r r a y R i g h t D i v i d e E q u a l s ( B : RealMatrix ) : RealMatrix { checkMatrixDimensions (B); var j : int ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { A [ i ][ j ] = A [ i ][ j ] / B . A [ i ][ j ]; } } return this ; }. engchi. /** Element - by - element left division , C = A .\ B @param B another matrix @return A .\ B */ public function ar ra yL e ft Di vi d e ( B : RealMatrix ) : RealMatrix { checkMatrixDimensions (B); var X : RealMatrix = new RealMatrix (m , n ) ; var C : Array = X . getArray () ; var j : int ; for ( var i : int = 0; i < m ; i ++) { for ( j = 0; j < n ; j ++) { C [ i ][ j ] = B . A [ i ][ j ] / A [ i ][ j ]; }. 55.

參考文獻

相關文件

3 Distilling Implicit Features: Extraction Models Lecture 14: Radial Basis Function Network. RBF

(In Section 7.5 we will be able to use Newton's Law of Cooling to find an equation for T as a function of time.) By measuring the slope of the tangent, estimate the rate of change

To proceed, we construct a t-motive M S for this purpose, so that it has the GP property and its “periods”Ψ S (θ) from rigid analytic trivialization generate also the field K S ,

Then, a visualization is proposed to explain how the convergent behaviors are influenced by two descent directions in merit function approach.. Based on the geometric properties

In this paper, we illustrate a new concept regarding unitary elements defined on Lorentz cone, and establish some basic properties under the so-called unitary transformation associ-

 If SAT can be solved in deterministic polynomial time, then so can any NP problems  SAT ∈ NP-hard..  If A is an NP-hard problem and B can be reduced from A, then B is an

• If we know how to generate a solution, we can solve the corresponding decision problem. – If you can find a satisfying truth assignment efficiently, then sat is

3 Distilling Implicit Features: Extraction Models Lecture 14: Radial Basis Function Network. RBF