Các kí hiệu và cơng thức tính tốn trong MLP

Một phần của tài liệu Phát triển hệ thống chatbot trò chuyện nhiều tầng (Trang 25)

2.3.3 Khả năng của ANN

ANN thường hưởng được sức mạnh to lớn từ kiến trúc bộ não tự nhiên. Chính vì thế, ANN có thể học được một cơng việc khi ta huấn luyện cho nó, trong khi các chương trình máy tính thơng thường chỉ thực hiện các cơng việc mà ta quy định sẵn. ANN cịn có khả năng xử lý trong trường hợp dữ liệu bị nhiễu, không đầy đủ,. . . đó là điều mà chương trình bình thường sẽ không làm được. Nhờ những đặc trưng ưu việt trên, ANN thường được sử dụng để phân loại dữ liệu, phát hiện mẫu và các ứng dụng có dữ liệu phức tạp.

2.3.4 Một số hàm Activation

Có rất nhiều hàm activation được sử dụng [9], vì vậy trong giới hạn luận văn, tơi xin trình bày một số hàm activation phổ biến nhất. 2.3.4.1 Hàm Tanh Công thức: tanh(x) = (e x−e−x) (ex+e−x)

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 13 Hình 2.6:Đồ thị hàmtanh 2.3.4.2 Hàm Sigmoid Cơng thức: sigmoid(x) = 1 1+e−x Hình 2.7:Đồ thị hàm sigmoid 2.3.4.3 Hàm Relu Công thức: relu(x) = ( 0 vớix≤0 x vớix>0 =max(0,x)

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 14

Hình 2.8:Đồ thị hàm ReLU

2.3.5 Huấn luyện ANN

Giải thuật lan truyền ngược (backpropagation) và suy giảm độ dốc (Gradient Descent) là giải thuật phổ biến nhất hiện tại trong việc huấn luyện mạng nơ-ron. Giải thuật này tính hàm lỗi (loss function) là sai khác giữa giá trị mục tiêu và giá trị đầu ra của mạng. Sau đó sẽ lan truyền ngược để cập nhật các trọng số trên mạng. Quá trình huấn luyện mạng nơ-ron nhân tạo là đưa vào một tập dữ liệu đã biết trước và yêu cầu cho đầu ra cũng đã biết trước. Các trọng số đã được điều chỉnh lúc huấn luyện sẽ được sử dụng để dự đoán các dữ liệu mới chưa biết trước.

2.4 Recurrent Neural Networks2.4.1 Giới thiệu2.4.1 Giới thiệu 2.4.1 Giới thiệu

Mạng nơ-ron hồi quy (Recurrent Neural Network)[10] được phát triển từ những năm 1980. Kiến trúc của mạng này gồm một đầu vào, một hoặc nhiều tầng ẩn và một tầng đầu ra. Điểm khác biệt là cấu trúc RNN là một chuỗi lặp các mô-đun giống nhau, với ý tưởng lưu trữ thơng tin đã xử lý phía trước đó. RNN khác mạng Multilayer Perceptron ở việc các kết quả ở bước xử lý trước đó có ảnh hưởng đến kết quả của bước xử lý hiện tại và các bước tiếp theo. Điều này tạo nên khá năng ghi nhớ của mạng RNN.

Hình 2.9 mô tả kiến trúc tổng quát của mạng RNN [11]:

Hình 2.9:Kiến trúc cơ bản của mạng RNN (Nguồn: [11]).

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 15 • xt là đầu vào tại bướct.

• U,V,W là các ma trận trọng số.

• st là trạng thái ẩn tại bướct. Đây được xem như bộ nhớ của mạng RNN và được tính bằng cơng thức:

st= f(U xt+W st−1)

Hàm f là một hàm activation như được giới thiệu ở trên, thông thường là hàmTanhhoặc Relu. Ở bước tính tốn đầu tiên, st−1 chưa có giá trị nên có thể khởi tạo một cách ngẫu nhiên hoặc được gán bằng 0.

• ot là đầu ra tại bướct, được tính bằng:

ot=g(V st)

Hàmgcũng là một hàm activation như f và thường là hàmTanhhoặcRelu.

Trong quá trình huấn luyện cho mạng RNN, thuật toán lan truyền ngược được sử dụng phổ biến và được gọi là lan truyền ngược theo thời gian (backpropagation through time). Quá trình cập nhật trọng số cho mạng được bắt đầu từ đầu ra cuối cùng của mạng, cập nhật trọng số cho từng đơn vị theo tổng lỗi của đầu ra. Với một chuỗi thơng tin dài, việc tích luỹ độ lỗi các đạo hàm dẫn tới tiêu biến đạo hàm hoặc bùng nổ đạo hàm. Do đó, việc huấn luyện mạng RNN gặp nhiều vấn đề khó khăn và khơng ổn định.

2.4.2 Một số ứng dụng của RNN

RNN thường được sử dụng các bài toán NLP và các bài toán xử lí giọng nói. Dưới đây là một số ứng dụng của RNN.

2.4.2.1 One-to-one

Hình 2.10:One-to-one RNN (Nguồn: [12]).

Với một dữ liệu đầu vào, mơ hình này sinh ra nhiều dữ liệu đầu ra, phù hợp với các bài tốn như tạo bình luận cho ảnh (Image Captioning), sinh văn bản (Text Generation), sinh âm nhạc (Music Generation).

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 16

2.4.2.2 Many-to-one

Hình 2.11:Many-to-one RNN (Nguồn: [12]).

Mơ hình này tính tốn trên tồn bộ dữ liệu đầu vào và cho ra duy nhất một đầu ra, do đó phù hợp với các bài tốn phân loại văn bản (Text Classification), phân loại sắc thái văn bản (Sentiment Classification). (adsbygoogle = window.adsbygoogle || []).push({});

2.4.2.3 Many-to-many loại 1

Hình 2.12:Many-to-many RNN loại 1(Nguồn: [12]).

Mơ hình này tính tốn từng giá trị đầu ra cho mỗi giá trị đầu vào, do đó được sử dụng trong bài tốn nhận biết thực thể có tên (Name Entity Recognition) hoặc gán nhãn từ loại (Part of Speech Tagging).

2.4.2.4 Many-to-many loại 2

Mơ hình này tổng hợp các giá trị đầu vào sau đó sinh ra các giá trị đầu ra và thường được sử dụng trong bài toán dịch máy (Machine Translation).

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 17

Hình 2.13:Many-to-many RNN loại 2 (Nguồn: [12]).

2.4.3 Long Short-Term Memory networks

Như đã đề cập trước đó, khi chuỗi thơng tin q dài sẽ dẫn đến trường hợp RNN sẽ đánh mất các thơng tin quan trọng ở phía trước q xa. Về mặt lý thuyết, RNN có thể lưu trữ được thơng tin từ bước đầu tiên đến bước hiện tại, nhưng qua nhiều bước tính tốn, đạo hàm càng tiêu biến dẫn đến RNN đánh mất lượng thơng tin trước đó nếu q xa. Để khắc phục nhược điểm trên, nhiều biến thể của RNN được đề xuất, trong số đó phổ biến nhất là Gated Recurrent Unit (GRU) và Long Short-Term Memory (LSTM). Trong nội dung luận văn này, tơi chỉ trình bày LSTM vì tính phổ biến của nó.

Hình 2.14:Kiến trúc của LSTM (Nguồn: [13]).

Kiến trúc của LSTM (Hình 2.14) [13] phức tạp hơn RNN rất nhiều. Để nhớ được nhiều thông tin, LSTM sử dụng các cổng để giữ lại các thông tin quan trọng và bỏ đi những thông tin dư thừa. Thành phần quan trọng nhất của LSTM làcell state, đây chính là bộ nhớ của LSTM, ngồi

ra cịn một thành phần khác làhidden state. Cell state và hidden state ở thời điểmt được kí hiệu làCt vàht. Cell state và hidden state sẽ lần lượt được cập nhật ở mỗi thời điểm thông qua các cổng, chi tiết như sau:

• Cổng forget giúp tính tốn các thơng tin cần loại bỏ: ft=σ Wf[ht−1,xt] +bf • Cổng input giúp tính tốn các thơng tin cần giữ lại:

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 18 • Cổng output giúp tính tốn các thơng tin cần xuất ra ở bước hiện tại:

ot =σ(Wo[ht−1,xt] +bo)

• Cập nhật cell state bằng cách sử dụng cổng input và cổng forget: Ct= ft∗Ct−1+it∗C˜t

vớiC˜t được tính bằng:

˜

Ct =tanh(WC[ht−1,xt] +bC)

• Cập nhật hidden state bằng cách sử dụng cổng output: ht =ot∗tanh(Ct)

2.4.4 Sequence to sequence model

Mơ hình Sequence to Sequence (hay cịn được gọi là mơ hình Encoder-Decoder) [14] là ứng dụng của RNN được trình bày ở trên. Trong mơ hình này, cả input và output đều là những se- quences (dữ liệu dạng chuỗi, ví dụ như đoạn văn bản, đoạn âm thanh), do đó rất phù hợp với các bài tốn như Machine Translation, Auto Speech Recognition, Optical Character Recognition, ... Các bài tốn này đều xử lí trên dữ liệu dạng chuỗi, do đó khơng thể dùng các kiến trúc Deep Neural Networks (DNN) thơng thường như MLP.

Mơ hình Sequence to Sequece (được viết gọn thành seq-to-seq hoặc seq2seq), bao gồm 2 thành phần chính là Encoder và Decoder. Encoder có nhiệm vụ biến đổi input thành các biểu diễn trung gian (thường gọi là các context vector). Decoder có nhiệm vụ biến đổi các context vector thành các ouput của bài tốn. Thơng thường cả Encoder và Decoder đều là các lớp RNN (hoặc LSTM) chồng lên nhau.

Mục đích của mơ hình này là tính xấp xỉ xác suất:

p(y1, ...,ym|x1, ...,xn)

với(x1, ...,xn)là chuỗi input và(y1, ...,ym)là chuỗi output của bài tốn. Có thể thấy độ dài của input và output có thể khác nhau, tức làm6=n. Để tính được xác suất này, đầu tiên, mơ hình sẽ dùng Encoder để tính ra vectorvcủa chuỗi input, vcó số chiều cố định và có thể xem như là vector biểu diễn của tồn bộ chuỗi input và cũng chính là hidden state cuối cùng của Encoder. Sau đó mơ hình sẽ dùngvđể khởi tạo giá trị hidden state ở Decoder và lần lượt tính xác suất củay1, ...,ym: p(y1, ...,ym|x1, ...,xn) = m ∏ t=1 p(yt|v,y1, ...,yy−1)

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 19

Hình 2.15:Kiến trúc mơ hình Sequence-to-sequence (Nguồn: [15]).

2.5 Attention và Transformer2.5.1 Giới thiệu cơ chế Attention2.5.1 Giới thiệu cơ chế Attention 2.5.1 Giới thiệu cơ chế Attention

Trong một số trường hợp của bài tốn dịch máy, ta có thể khơng cần biết tồn bộ các từ để dịch một từ. Ví dụ với câu “I am going to school”, ta không cần quan tâm đến các từ phía sau “I” để có thể dịch được nó. Tuy nhiên, với mơ hình Encoder-Decoder, tồn bộ câu sẽ được nén thành một context vector để tiến hành dịch. (adsbygoogle = window.adsbygoogle || []).push({});

Để khắc phục điều này, và tận dụng ý tưởng các từ ở câu đích chỉ "chú ý" đến một số từ ở câu nguồn, Bahdanau đã đề xuất mơ hình Seq2seq kết hợp với cơ chế Attention [16](Hình 2.16). Trong mơ hình này, xác suất của một từ tại bước decode thứiđược tính bằng:

Hình 2.16:Mơ hình Encoder-decoder với Additive attention mechanism trong bài báo của Bah- danau (Nguồn: [16]).

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 20 vớisilà hidden state của Decoder-RNN tại bướci:

si= f(si−1,yi−1,ci)

vàciđược gọi là context vector tại bước thứi.

Context vectorciphụ thuộc vào toàn bộ các hidden state của Encoder(h1, ...,hT), và được tính

bằng tổng có trọng số của các hidden state này: ci=

Tx ∑ j=1

αi jhj

Trọng sốαi j cho mỗi hidden statehjđược tính bằng: αi j = exp ei j

∑Txk=1exp(eik)

với:

eiJ=score si−1,hj

được gọi là alignment model, thể hiện từ thứ j ở output liên quan như thế nào đến từ thứi ở input.

Hình 2.17:Alignment matrix với câu nguồn "L’accord sur l’Espace économique européen a étésigné en aoˆut 1992" trong tiếng Pháp và câu đích "The agreement on the European Economic signé en aoˆut 1992" trong tiếng Pháp và câu đích "The agreement on the European Economic Area was signed in August 1992" trong tiếng Anh (Nguồn: [16]).

Có nhiều cách để hiện thực hàm score, đó có thể là một mơ hình feed-forward network với một layer được train cùng với model hoặc đó cũng có thể là một hàm, do đó có rất nhiều biến thể của Attention.

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 21

2.5.2 Mơ hình Transformer

2.5.2.1 Giới thiệu

Một trong các vấn đề của RNN và các biến thể đó là mơ hình phải tính tốn tuần từ từ bước đầu tiên cho đến bước cuối cùng vì để tính được output ở bước thứi, cần phải có output ở bước thứ i−1, vấn đề phụ thuộc này làm cho RNN tính tốn rất chậm và khơng tận dụng được tối đa sức mạnh tính tốn song song của máy tính cũng như các thiết bị hỗ trợ tính tốn như GPU, TPU. Mơ hình Transformer [17] do Vaswani đề xuất đã giải quyết được vấn đề này. Transformer có kiến trúc như mơ hình Encoder-Decoder, tuy nhiên thành phần cốt lõi của Encoder, Decoder không phải là RNN mà là Attention. Kiến trúc của Transformer bao gồm:

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 22

2.5.2.2 Encoder và Decoder

Encoder:Encoder là một khối gồm 6 layer giống nhau được xếp chồng lên nhau. Mỗi layer bao gồm hai sub-layer. Sub-layer thứ nhất là cơ chế Multi-Head Attention và sub-layer thứ hai là một lớp Fully Connected Feed-Forward theo từng vị trí. Xung quanh mỗi sub-layer có sử dụng một đường Residual Connection [18] và một Layer Normalization [19] tại ouput của mỗi sub-layer.

Decoder:Decoder có cấu trúc tương tự như Encoder, tuy nhiên ở phần Decoder có thêm một sub-layer thứ ba ở giữa hai sub-layer đó là layer Multi-Head Attention, layer này sẽ thực hiện tính tốn Attention của Decoder dựa vào output của Encoder. Layer Multi-Head Attention đầu tiên được sửa đổi lại với với cơ chế Masking (mặt nạ) để khi tính tốn output tại bước thứi, mơ hình chỉ có thể được biết thơng tin tại các bước nhỏ hơni, do đó được gọi là Masked Multi-Head Attention. Cả Encoder và Decoder sẽ có số chiều cho input và output chung làdmodel.

2.5.2.3 Attention

Scaled Dot-Product Attention Một cách tổng quát, cơ chế Attention có thể phát biểu dưới dạng cơng thức: Attention(Q,K,V) =so f tmax QK⊤ √ dk V

vớiQ,K,V là các vector hoặc ma trận input,dk là số chiều của input. Thông thườngQ,K,V là các ma trận và sẽ chính là output của Encoder hoặc Decoder. VớiQ=K=V =Out putEncoder ta có Self-Attention trong Encoder, vớiQ=K =V =Out putDecoder ta có Self-Attention trong Decoder, vớiQ=Out putDecodervàK=V =Out putEncoder ta có Intra-Attention trong Decoder.

Multi-Head Attention Tác giả Vaswani nhận thấy rằng, thay vì thực hiện một lần hàm Atten- tion trên Queries, Keys, Values của toàn bộ output của Encoder và Decoder với số chiềudmodel, ta có thể chiếu tuyến tính Queries, Keys, Valueshlần xuống chiều không gian dq,dk,dv tương ứng, với mỗi phiên bản của Queries, Keys, Values, ta thực hiện hàm Attention một cách song song, thu đượchoutput có số chiều làdv. Các output này sẽ được concat (nối) với nhau, sau đó được chiếu tuyến tính về chiều khơng gian gốc làdmodel.

Multi-Head Attention cho phép model cùng lúc học được cách chú ý vào nhiều thơng tin khác nhau, tại các vị trí khác nhau. Nếu chỉ dùng Single-Head thì model chỉ có thể học được duy nhất một thông tin mà thôi.

MultiHead(Q,K,V) =Concat(head1, ...,headh)WO vớiheadi=Attention (adsbygoogle = window.adsbygoogle || []).push({});

QWiQ,KWIK,VWiV

WiQ,WK i ,WV

i ,WOlà các ma trận chiếu và cũng là các ma trận tham số sẽ được học cùng model: WiQ∈Rdmodel×dk,WK

i ∈Rdmodel×dk,WV

i ∈Rdmodel×dv,WO∈Rhdv×dmodel.

Position-wise Feed-Forward Networks Theo sau mỗi lớp Attention là một lớp Fully Con- nected Feed-Forward network, lớp này sẽ được áp dùng cho mỗi vị trí của output của lớp Atten- tion một cách phân biệt và giống nhau. Lớp này gồm hai phép biến đổi tuyến tính và sử dụng hàm ReLU ở cuối.

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 23

FFN(x) =max(0,xW1+b1)W2+b2

Các phép biến đổi này có cùng ma trận tham số ở các vị trí khác nhau trong cùng một layer, nhưng chúng khác nhau ở mỗi layer.

Positional Encoding Vì model khơng chứa các lớp RNN nên cần phải có cơ chế để model phân biệt được vị trí của các từ trong input, nếu khơng việc tính tốn các hàm Attention sẽ cho ra kết quả giống nhau ở bất kì vị trí nào. Để làm được việc này, ta cần thêm thông tin về vị trí tương đối hoặc tuyệt đối của mỗi từ trong chuỗi input. Lớp Positional Encoding sẽ thêm thơng tin về vị trí tương đối của mỗi từ bằng cách cộng các giá trị Position Embedding vào các giá trị của Word Embedding của mỗi từ trong chuỗi input.

PE(pos,2i)=sinpos/10002i/d‘model

PE(pos,2i+1)=cos

pos/10002i/d‘model

với poslà vị trí cần encode vàilà chiều thứitrong vector encode.

2.6 Mơ hình Generative Pre-trained Transformer

GPT-2 là mơ hình được nhóm nghiên cứu OpenAI cơng bố vào năm 2019 [20]. Đây là một mơ hình ngơn ngữ có khả năng sinh các đoạn văn bản. Mơ hình được huấn luyện trên tập BookCorpus với hơn 7000 quyển sách thuộc nhiều thể loại khác nhau. Kiến trúc mơ hình GPT- 2 được thiết kế giống như GPT nhưng có nhiều tham số hơn và cả hai đều được thiết kế dựa trên phần decoder của mơ hình Transformer. Vì thiết kế dựa trên decoder của Transformer cho phép GPT có thể sinh liên tục từ tiếp theo. Tuy nhiên điều này làm mất đi khả năng hiểu được ngữ cảnh từ hai phía của câu.

Hình 2.19:Mơ tả khối decoder được dùng trong GPT

Mơ hình GPT dùng khối decoder của mơ hình Transformer, tuy nhiên, khối này khơng cịn tầng Self-Attention nữa (như hình 2.19). Lớp cuối cùng của mơ hình là một lớp Fully-Connected để

Một phần của tài liệu Phát triển hệ thống chatbot trò chuyện nhiều tầng (Trang 25)