神經網路式的語言模型 (Neural Network Language Model)

作品

書籍

課程

程式集

小說集

論文集

散文集

影片集

編輯雜誌

程式人

電子書

JavaScript

計算語言學

微積分

Blender 動畫

C# 語言

系統程式

高等 C 語言

Java

Android

Verilog

Wikidot

R 統計軟體

機率統計

計算機數學

組合語言

人工智慧

開放原始碼

網路資源運用

計算機結構

相關訊息

常用工具

友站連結

在家教育

RSS

最新修改

網頁列表

簡體版

English

作者:陳鍾誠

金門技術學院研究報告, 2009年 11 月 27 日初稿

簡介

目前,自然語言處理 (Natural Language Processing) 的方法可以粗略分為統計式 (Statistical NLP) 與規則式 (Rule-based NLP) 兩類。1990 年以前的研究較偏向規則式的方法,到了 1995 年之後,由於網路上的語料越來越多,於是統計式的方法越來越受到重視。

近來,統計式的方法機器翻譯領域有明顯的進展,然而,統計式的方法在短語上表現的較好,但是對於語法則難以處理,我們企圖利用神經網路的概念,透過大量語料庫的訓練,改進自然語言處理的方法。

自然語言的語句或文件,通常被表達為一連串的詞彙,舉例而言,在全文檢索領域,一個文件 d 通常表達為一個詞彙串列,其數學式如下所示

(1)
\begin{equation} d = (t_1, t_2, ..., t_n) \end{equation}

同樣的,在機器翻譯領域,一個句子也被表達為一個詞彙串列,其數學式如下所示

(2)
\begin{equation} s = (t_1, t_2, ..., t_n) \end{equation}

在本文中,除非特別提及,否則我們一律以 d 代表這樣的詞彙串列概念。

假如不考慮詞彙的順序,那麼整個文件 d 還可以視為一個詞彙向量,其數學式如下所示。

(3)
\begin{align} \overrightarrow{d} = [d_{t_1}, d_{t_2}, \ldots, d_{t_n}] \end{align}

語言神經網路

如果我們將現實世界中的文件 d 視為一個邏輯事實,並用詞彙向量作為輸入,那麼,將可以建構出下列網路,其中左半部的代表詞彙庫 (W),右半部則代表文件庫 (D)。

NeuralNetLanguageModel.jpg

圖一、語言神經網路的模型

在圖一的模型中,詞彙 (w) 透過中間層的內隱節點 (c) 連結到文件 (d), 這些內隱節點可以想像為某種概念 (C) 或者抽象特性。

我們可以透過調整詞彙 w 與概念 c 之間的權重 $w_{c,x}$ ,以及概念 c 與文件 d 之間的權重 $w_{d,x}$,以訓練整個神經網路。

由於文件 d 本身所代表的就是一個事實,因此可以在訓練的過程中擔任指導者的角色。當我們輸入 d 的詞彙向量 $\overrightarrow{d}$ 於左半部的 W 當中時,會希望右半部的輸出值之最強者為 d。假如我們希望輸出介於 (0..1) 之間,那麼 d 的目標輸出值應為 1,其他文件的輸出值則應該小於 1。

於是我們可以利用神經網路當中的基本訓練法則 Hebb 定律 (Hebb, 1949) 進行權重的調整,Hebb 定律的基本原理如下:

『假如兩的神經元同時被激勵,則其中的連結將會增強,否則,連結將會減弱』

然而、Hebb 定律通常被用在無指導者的神經網路上,但在我們的模型中, d 本身可以視為是指導者,但仍然可以借用 Hebb 的思想,只是在訓練的過程上反而更像有指導者的反傳遞式演算法。

在圖一中,假如我們將文件 d = "a black dog" 輸入,此時會先將該文件轉換為詞彙向量 (a:1, black:1, dog:1, cat:0, ….),也就是計算詞彙在文件中的出現次數,然後以這些數值作為神經網路輸入,開始計算其輸出值。

由於輸入的訓練文件為 d1,於是 d1 節點的期望輸出應該為 1,其他文件的輸出值則應該 < 1,於是就可以開始訓練並透過Hebb 定律調整權重。

NeuralNetLanguageModelEx1.jpg

圖二、翻譯神經網路的範例

翻譯神經網路

上述的語言神經網路具有相當好的擴充性,舉例而言,假如我們希望透過雙語語料庫,讓語言神經網路學習將英文翻譯為中文,就可以直接將中文詞彙加入到詞彙庫 W 中,然後用漢英雙語對照的語料庫 D 作為學習對象,經過學習訓練程序之後,得到一個漢英翻譯的神經網路。

在訓練完成之後,假如我們用 "a black dog" 作為輸入,理想上 d1 的強度應該會最強,於是我們取得翻譯語句 "一隻黑狗" 作為輸出。

NeuralNetMtModelEx1.jpg

圖三、翻譯神經網路的模型 - 雙語語句

NeuralNetMtModelEx2.jpg

圖四、翻譯神經網路的模型 - 雙語詞彙對照

考慮語法規則

如果我們希望將與法規則也加入語言神經網路中,那麼可以將這些規則加入到概念庫 C 當中,然後讓 C 內部的節點可以互相連結,或者直接將 C 分為數層 C1 (類別&屬性), C2 (短語規則), C3 (語句規則), C4 (文件規則:語境) 等,然後再利用類似反傳遞演算法的方式進行訓練,以便學習語言的內在結構。

NeuralNetMtModelEx3.jpg

圖五、翻譯神經網路的模型 - 加入規則

結語

目前我們正在進行上述語言神經網路的建構,預計近期進行實驗,以便測試此一網路的學習能力。

本文為尚未發表的論文,若您想要引用本文,請使用下列引用方式。

  1. 陳鍾誠, 語言神經網路 (Language Neural Network), 金門技術學院研究報告, 2009年 11 月 27 日初稿。網址:http://ccckmit.wikidot.com/languageneural

參考文獻

  1. Geoffrey E. Hinton (2009) Deep belief networks. Scholarpedia, 4(5):5947 http://www.scholarpedia.org/article/Deep_belief_networks
  2. Yoshua Bengio (2008) Neural net language models. Scholarpedia, 3(1):3881 http://www.scholarpedia.org/article/Neural_net_language_models

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License