over 2 years ago

Gradient Descent

在機器學習的過程中,常需要將 Cost Function 的值減小,通常用 Gradient Descent 來做最佳化的方法來達成。但是用 Gradient Descent 有其缺點,例如,很容易卡在 Local Minimum。

Gradient Descent 的公式如下:

關於Gradient Descent的公式解說,請參考:Optimization Method -- Gradient Descent & AdaGrad

Getting Stuck in Local Minimum

舉個例子,如果 Cost Function 為 ,有 Local Minimum ,畫出來的圖形如下:

Read on →
 
over 2 years ago

Introduction

在機器學習的過程中,常需要將 Cost Function 的值減小,需由最佳化的方法來達成。本文介紹 Gradient DescentAdaGrad 兩種常用的最佳化方法。

Gradient Descent

Gradient Descent 的公式如下:

其中, Learning Rate 為最佳化時要調整的參數, 為最佳化目標函數對 的梯度。 為調整之前的 為調整之後的

舉個例子,如果目標函數為 ,起始參數為 ,則畫出來的圖形如下圖,曲面為目標函數,紅色的點為起始參數:

Read on →
 
over 2 years ago

Introduction

在解「 有條件的最佳化問題 」時,有時需要把原本的問題轉換成對偶問題(Dual Problem)後,會比較好解。
如果對偶問題有最佳解,原本問題也有最佳解,且這兩個最佳解相同,則必須要滿足 Karush-Kuhn-Tucker (KKT) Conditions

  1. Primal Feasibility
  2. Dual Feasibility
  3. Complementary Slackness
  4. Stationarity

至於這四項到底是什麼?講起來有點複雜。本文會先從對偶問題的概念開始介紹,再來講解這四個條件。

The Lagrange dual function

首先,講解一下什麼是對偶問題。
通常,有條件的最佳化問題,可寫成 <公式一>

Read on →
 
over 2 years ago

Introduction

Recurrent Neural Network 在進行 Gradient Descent 的時候,會遇到所謂的 Vanishing Gradient Problem ,也就是說,在後面時間點的所算出的修正量,要回傳去修正較前面時間的參數值,此修正量會隨著時間傳遞而衰減。

為了改善此問題,可以用類神經網路模擬記憶體的構造,把前面神經元所算出的值,儲存起來。例如: Long Short-term Memory (LSTM) 即是模擬記憶體讀寫的構造,將某個時間點算出的值給儲存起來,等需要用它的時候再讀出來。

除了模擬單一記憶體的儲存與讀寫功能之外,也可以用類神經網路的構造來模擬 Turing Machine ,也就是說,有個 Controller ,可以更精確地控制,要將什麼值寫入哪一個記憶體區塊,或讀取哪一個記憶體區塊的值,這種類神經網路模型,稱為 Neural Turing Machine

如果可以模擬 Turing Machine ,即表示可以學會電腦能做的事。也就是說,這種機器學習模型可以學會電腦程式的邏輯控制與運算。

Neural Turing Machine

Neural Turing Machine 的架構如下:

Read on →
 
almost 3 years ago

Introduction

在數位電路裡面,如果一個電路沒有 latchflip flop 這類的元件,它的輸出值只會取決於目前的輸入值,和上個時間點的輸入值是無關的,這種的電路叫作 combinational circuit

對於類神經網路而言,如果它的值只是從輸入端一層層地依序傳到輸出端,不會再把值從輸出端傳回輸入端,這種神經元就相當於 combinational circuit ,也就是說它的輸出值只取決於目前時刻的輸入值,這樣的類神經網路稱為 feedforward neural network

如果一個電路有 latchflip flop 這類的元件,它的輸出值就跟上個時間點的輸入值有關,這種的電路它稱為 sequential circuit

所謂的 Recurrent Neural Network ,是一種把輸出端再接回輸入端的類神經網路,這樣可以把上個時間點的輸出值再傳回來,記錄在神經元中,達成和 latch 類似的效果,使得下個時間點的輸出值,跟上個時間點有關,也就是說,這樣的神經網路是有 記憶 的。

Recurrent Neural Network

由一個簡單神經元所構成的 Recurrent Neural Network ,構造如下:

這個神經元在 時間,訓練資料的輸入值為 ,訓練資料的答案為 ,神經元 的輸出值 ,可用以下公式表示:

Read on →
 
almost 3 years ago

Introduction

在做 Logistic Regression的時候,可以用 gradient descent 來做訓練,而類神經網路本身即是很多層的 Logistic Regression 所構成,也可以用同樣方法來做訓練。

但類神經網路在訓練過程時,需要分為兩個步驟,為: Forward PhaseBackward Phase 。 也就是要先從 input 把值傳到 output,再從 output 往回傳遞 error 到每一層的神經元,去更新層與層之間權重的參數。

Forward Phase

Forward Phase 時,先從 input 將值一層層傳遞到 output

對於一個簡單的神經元 ,如下圖 <圖一>

將一筆訓練資料 bias 輸入到神經元 到輸出的過程,分成兩步,分別為 ,過程如下:

Read on →
 
almost 3 years ago

Introduction

將類神經網路應用在自然語言處理領域的模型有Neural Probabilistic Language Model(NPLM),但在實際應用時,運算瓶頸在於 output layer 的神經元個數,等同於總字彙量

每訓練一個字時,要讓 output layer 在那個字所對應的神經元輸出值為 ,而其他 個神經元的輸出為 , 這樣總共要計算 次,會使得訓練變得沒效率。

若要減少於 output layer 的訓練時間,可以把 output layer 的字作分類階層,先判別輸出的字是屬於哪類,再判斷其子類別,最後再判斷是哪個字。

Hierarchical Softmax

給定訓練資料為 ,輸出字的集合為 。當輸入的字串為 ,輸出的字為 時,訓練的演算法要將機率 最佳化。

如果 10000 種字,若沒有分類階層,訓練時就要直接對 做計算,即是對這 10000種字做計算,使 所對應的神經元輸出為 1 ,其它 9999 個神經元輸出 0 ,這樣要計算 10000 次,如下圖:

若在訓練前,就事先把 中的字彙分類好,以 代表字 的類別,則可以改成用以下機率做最佳化:

Read on →
 
about 3 years ago

Introduction

傳統的語言模型 Ngram ,只考慮一個句子中的前面幾個字,來預測下個字是什麼。

當使用較長的 Ngram 的時候,則在測試資料中,找到和訓練資料相同的機率,就會大幅降低,甚至使機率為0,此種現象稱為 curse of dimensionality 。這類問題,傳統上可用 Smoothing, InterpolationBackoff來處理。

另一種對付 curse of dimensionality 的方法,可以用 Distributional Semantics 的概念,即把詞彙的語意用向量來表示。在訓練資料中,根據這個詞和鄰近周圍的詞的關係,計算出向量中各個維度的值,得出來的值即可表示這個詞的語意。例如,假設在訓練資料中出現 The cat is walking in the bedroomA dog was running in a room 這兩個句子,計算出 dogcat 語意向量中的詞,可得出這兩個詞在語意上是相近的。

所謂的 Neural Probabilistic Language Model ,即是用類神經網路,從語料庫中計算出各個詞彙的語意向量值。

Neural Probabilistic Language Model

給定訓練資料為 一連串的字,每個字都可包含於詞庫 中,即 ,然後,用此資料訓練出語言模型:

Read on →
 
about 3 years ago

Introduction

繼續之前統計機器翻譯所提到的,要計算 Translation Model ,即給定某個英文句子 ,則它被翻自成中文句子 的機率是多少?

計算 Translation Model 需要用到較複雜的模型,例如 IBM Model 。而 IBM Model 1 是最基本的一種 IBM Model

Alignment

在講 IBM Model 1 之前,要先介紹 alignment 是什麼。因為,要將英文翻譯成中文,則中文字詞的順序可能跟英文字詞的順序,不太一樣。例如:

這不是一個蘋果
This is not an apple

這兩個句子,在中文中的 "不是" 英文為 "is not(是不)" 。為了考慮到字詞順序會變,因此要定義 alignment ,來記錄中文句子中的哪個字,對應到英文句子中的哪個字。

此例中, alignment,表示第一個中文字對應到第一個英文字,第二個中文字對應到第三個英文字,以此類推。

Read on →
 
over 3 years ago

Information Retrieval

所謂的資訊檢索( Information Retrieval ),就是從大量非結構的資料,例如網頁,根據某些關鍵字,找出具有此關鍵字的文件。例如,搜尋引擎,即是一種資訊檢索的應用。

資訊檢索的演算法,其實跟我們要在某本書中,找尋某個字的方法差不多。
例如我們想在 Introduction to Information Retrieval 這本教科書中,找到 informational queries 這個詞在哪一頁,如果從第一頁開始,一個字一個字慢慢找,要比對成千上萬個字才能找到。

但如果我們翻到書本後面的 Index (如下) ,即可很快找到 informational queries 這個字是在第 432 頁。

...
information gain, 285 
information need, 5, 152 
information retrieval, 1 
informational queries, 432 
inner product, 121 
...

所以,資訊檢索,最核心的概念就是建立 Index ,這樣就可以快速找到哪些文件中具有某個關鍵字。

Read on →