Mơ hình Seq2Seq

Một phần của tài liệu Tổng hợp âm nhạc sử dụng học sâu (Trang 33)

Mơ hình Sequence to Sequence (seq2seq) [13] dựa trên kiến trúc Encoder - Decoder [14] để tạo ra chuỗi đầu ra từ chuỗi đầu vào, thể hiện trong Hình 2.16. Cả bộ Encoder và Decoder đều sử dụng mạng nơ-ron hồi tiếp (RNN) để xử lý các chuỗi đầu vào có độ dài khác nhau. Trạng thái ẩn của bộ Decoder được khởi tạo trực tiếp từ trạng thái ẩn của bộ Encoder, chuyển thơng tin từ Encoder sang Decoder.

Hình 2.16:Minh hoạ kiến trúc mơ hình Seq2Seq (Nguồn: [15])Đơi nét về kiến trúc Encoder-Decoder: Đơi nét về kiến trúc Encoder-Decoder:

• Kiến trúc Encoder-Decoder là một design pattern cho mạng nơ-ron, chủ yếu được sử dụng trong xử lý ngơn ngữ tự nhiên.

• Encoder là một mạng (kết nối đầy đủ - FC, nơ-ron tích chập - CNN, nơ-ron hồi tiếp - RNN, . . . ) nhận đầu vào và trả về một ánh xạ đặc trưng là một vector hay một tensor.

• Decoder là một mạng (thường có giống kiến trúc mạng NN của Encoder) nhận vector đặc trưng từ bộ mã hoá và đưa ra kết quả gần khớp nhất với đầu vào thực tế hoặc đầu ra mong muốn.

2.6.1 Chi tiết về bộ mã hóa - Encoder của mơ hình Seq2Seq

Bộ mã hóa của mơ hình seq2seq biến đổi và mã hóa chuỗi đầu vào với các độ dài khác nhau thành một vecto ngữ cảnhcvới độ dài cố định. Giả sử có một chuỗi đầu vàox1, . . . ,xT , trong đóxt là từ thứt. Bởi vì bộ Encoder đa phần sẽ được thiết kế từ RNN nên tại thời điểm t, mơ

hình RNN sẽ có hai vector đầu vào: vector đặc trưngxt của xt và trạng thái ẩn của bước thời gian trước đóht−1. Ta ký hiệu phép chuyển đổi của các trạng thái ẩn trong RNN bằng hàm f:

Tiếp theo, Encoder nắm bắt thông tin của tất cả các trạng thái ẩn và mã hóa chúng thành vector ngữ cảnhcbằng hàmq:

c=q(h1, ...,hT

Ví dụ, nếu chúng ta chọn qlà q(h1, ...,hT) =hT , thì vector ngữ cảnh sẽ là trạng thái ẩn của bước thời gian cuối cùnghT.

Cho đến nay ta mới mơ tả bộ mã hóa sử dụng mạng RNN một chiều, ở đó trạng thái ẩn của mỗi bước thời gian chỉ phụ thuộc vào các bước thời gian trước. Ta cũng có thể sử dụng các dạng RNN khác nhau như GRU, LSTM, hay RNN hai chiều để mã hóa chuỗi đầu vào.

2.6.2 Chi tiết về bộ giải mã - Decoder của mơ hình Seq2Seq

Như đã giới thiệu, vector ngữ cảnhcmã hóa thơng tin của tồn bộ chuỗi đầu vàox1, . . . ,xT. Giả sử đầu ra của tập huấn luyện lày1, . . . ,yT′ . Tại mỗi bước thời giant′, xác suất có điều kiện của đầu rayt′sẽ phụ thuộc vào đầu ra trước đóy1, . . . ,yt′−1và vector ngữ cảnhc, tức

P(yt′|y1, ...,yt′−1,c)

Do đó, chúng ta có thể sử dụng một mạng RNN khác trong bộ giải mã. Tại mỗi bước thời gian

t′, bộ giải mã cập nhật trạng thái ẩn của nó thơng qua ba đầu vào: vector đặc trưngyt′−1 của

yt′−1, vector ngữ cảnhcvà trạng thái ẩn tại bước thời gian trước đóst′−1. Hàmgdưới đây biểu diễn quá trình biến đổi trạng thái ẩn của mạng RNN trong bộ giải mã:

st′=g(yt′−1,c,st′−1)

2.7 Cơ chế Attention

Trong mục 2.6, chúng ta dùng mạng hồi tiếp RNN để mã hóa thơng tin của chuỗi nguồn đầu vào thành trạng thái ẩn và truyền nó tới bộ Decoder để sinh chuỗi đích. Một token trong chuỗi đích có thể chỉ liên quan mật thiết tới một vài token chứ khơng nhất thiết là tồn bộ token trong chuỗi nguồn. Ví dụ, khi dịch “Hello world.” thành “Bonjour le monde.”, từ “Bonjour” ánh xạ tới từ “Hello” và từ “monde” ánh xạ tới từ “world”. Trong mơ hình seq2seq, Decoder có thể ngầm chọn thơng tin tương ứng từ trạng thái ẩn được truyền đến từ bộ mã hóa. Tuy nhiên, cơ chế tập trung (attention mechanism) thực hiện phép chọn này một cách tường minh.

Cơ chế tập trung có thể được coi là phép gộp tổng quát. Nó gộp đầu vào dựa trên các trọng số khác nhau. Thành phần cốt lõi của cơ chế này là tầng attention. Những tầng này với đầu vào được gọi ngắn gọn là câu truy vấn (query). Với mỗi câu truy vấn, đầu ra sẽ được trả về dựa trên bộ nhớ là tập các cặp key-value được mã hóa trong tầng attention này. Cụ thể, giả sử bộ nhớ chứan cặp vector key-value, (k1,v1), . . . ,(kn,vn), với ki∈Rdk,vi∈Rdv. Với mỗi vector truy vấnq∈Rdq, tầng tập trung trả về đầu rao∈Rdvcó cùng kích thước với vector giá trị.

Hình 2.17 minh họa cách tính tốn đầu ra của tầng tập trung, chúng ta sử dụng hàm tính điểmα

để đo độ tương đồng giữa câu truy vấn và các khóa. Sau đó, với mỗi khóa(k1,v1), . . . ,(kn,vn), ta tính điểma1, . . . ,annhư sau:

Hình 2.17:Minh hoạ cơ chế Attention (Nguồn: [15])

Tiếp theo, chúng ta sử dụng hàm softmax để thu được các trọng số tập trung (attention weights), cụ thể:

b=softmax(a), bi= exp(ai)

∑jexp(aj), b= [b1, ...,bn] T

Cuối cùng, đầu ra của tầng là tổng trọng số của các giá trị:

o= n

i=1 bivi

Cách lựa chọn hàm tính điểm α khác nhau sẽ tạo ra các tầng attention khác nhau. Hai tầng attention phổ biến nhất hiện nay: tập trung tích vơ hướng và tập trung perceptron đa tầng.

2.7.1 Tầng tập trung tích vơ hướng - Dot product attention

Giả định rằng câu truy vấn có cùng kích thước chiều với khóa, cụ thể làq,ki∈Rd với mọii.

Tầng tập trung tích vơ hướng sẽ tính điểm bằng cách lấy tích vơ hướng giữa câu truy vấn và khóa, sau đó chia cho√dđể giảm thiểu ảnh hưởng không liên quan của số chiềudlên điểm số. Nói cách khác,

α(q,k) =hq,ki/√

d

Mở rộng ra từ các câu truy vấn và khóa một chiều, chúng ta ln có thể tổng qt hóa chúng lên thành các giá trị truy vấn và khóa đa chiều. Giả định rằngQ∈Rm×d chứamcâu truy vấn vàK∈Rn×dchứa tồn bộnkhóa. Chúng ta có thể tính tồn bộm×nđiểm số như sau:

α(Q,K) =QK⊤/√

2.7.2 Tập trung perceptron đa tầng - Multilayer perceptron attention

Trong cơ chế tập trung perceptron đa tầng (multilayer perceptron attention), chúng ta chiếu cả câu truy vấn và các khóa lênRhbằng các tham số trọng số được học. Giả định rằng các trọng số được học làWk∈Rh×dk,Wq∈Rh×dq vàv∈Rh. Hàm tính điểm sẽ được định nghĩa như sau

α(Q,K) =v⊤tanh(Wkk+Wqq)

Một cách trực quan, ta có thể tưởng tượngWkk+Wqqchính là việc nối khóa và giá trị lại với nhau theo chiều đặc trưng và đưa chúng qua perceptron có một tầng ẩn với kích thước làhvà tầng đầu ra với kích thước là 1 . Trong tầng ẩn này, hàm kích hoạt làtanh và khơng có hệ số điều chỉnh.

2.7.3 Mơ hình Seq2Seq áp dụng Cơ chế Attention

Bộ nhớ của tầng attention ở đây bao gồm tất cả thông tin mà Encoder đã được học — đầu ra của Encoder tại từng bước thời gian. Trong quá trình giải mã, đầu ra của bộ Decoder tại bước thời gian trước đó được sử dụng làm câu truy vấn. Đầu ra của mơ hình tập trung có thể được hiểu là thông tin ngữ cảnh của chuỗi, phần ngữ cảnh này được ghép nối với đầu vào của Decoder và kết quả được đưa vào bộ này.

Hình 2.18:Minh hoạ mơ hình Seq2seq kết hợp cơ chế Attention (Nguồn: [15])

Do Encoder của mơ hình Seq2seq áp dụng cơ chế tập trung giống với bộ mã hóa của Seq2Seq ở phần 2.6 nên ở phần này, chúng ta sẽ chỉ tập trung vào bộ Decoder. Ta thêm tầng tập trung perceptron đa tầng (MLP) có cùng kích thước ẩn với tầng LSTM trong bộ này. Sau đó ta khởi tạo trạng thái của bộ Decoder bằng cách truyền vào ba đầu ra thu được từ Encoder:

Đầu ra của Encoder tại tất cả các bước thời gian:được sử dụng như bộ nhớ của tầng attention có cùng các key và value.

Trạng thái ẩn của Encoder tại bước thời gian cuối cùng:được sử dụng làm trạng thái ẩn ban đầu của Decoder.

Độ dài hợp lệ của Encoder để tầng tập trung có thể bỏ qua những token đệm có trong đầu ra của Encoder.

Ở mỗi bước thời gian trong quá trình giải mã, ta sử dụng trạng thái ẩn của tầng RNN cuối cùng làm câu truy vấn cho tầng tập trung. Đầu ra của mơ hình tập trung sau đó được ghép nối với vector embedding đầu vào để đưa vào tầng RNN. Mặc dù trạng thái ẩn của tầng RNN cũng chứa thông tin từ bộ giải mã ở các bước thời gian trước đó nhưng đầu ra của tầng tập trung sẽ lựa chọn các đầu ra của bộ mã hóa một cách tường minh dựa vào độ dài hợp lệ của bộ mã hóa nhằm loại bỏ những thơng tin khơng liên quan.

2.7.4 Mơ hình Multihead-Attention

Trước khi thảo luận về tầng multihead-attention, hãy cùng tìm hiểu qua về kiến trúc Self- Attention [16]. Tương tự cơ chế attention, kiến trúc này cũng có câu truy vấn, khóa và giá trị nhưng chúng được sao chép từ các phần tử trong chuỗi đầu vào tầng tự tập trung trả về một đầu ra tuần tự có cùng độ dài với đầu vào. So với tầng hồi tiếp, các phần tử đầu ra của tầng tự tập trung có thể được tính tốn song song, do đó việc xây dựng các đoạn mã tốc độ cao khá dễ dàng.

Hình 2.19:Minh hoạ kiến trúc Self-Attention (Nguồn: [15])

Multihead-Attention [16] bao gồmhđầu là các tầng tự tập trung song song. Trước khi đưa vào mỗi đầu, ta chiếu các câu truy vấn, khóa và giá trị qua ba tầng dày đặc với kích thước ẩn lần lượt làpq, pkvà pv. Đầu ra của đầu này được nối lại và sau đó được xử lý bởi một tầng dày đặc cuối cùng.

Hình 2.20:Minh hoạ mơ hình Multihead-attention (Nguồn: [15])

Giả sử chiều của câu truy vấn, khóa và giá trị lần lượt là dq, dk và dv . Khi đó, tại mỗi đầu

i=1, . . . ,h, ta có thể học các tham số W(i)q ∈Rpq×dq , Wk(i) ∈Rpk×dk , vàW(i)v ∈Rpv×dv. Do đó, đầu ra tại mỗi đầu là

o(i)=attetion(W(i)q q,W(i)k k,W(i)v v)

trong đóattention có thể là bất kỳ tầng tập trung nào, chẳng hạn như tầng tập trung tích vơ hướng và tập trung perceptron đa tầng như đề cập trong Section 2.7

Sau đó,hđầu ra với độ dài pv tại mỗi đầu được nối với nhau thành đầu ra có độ dài hpv , rồi được đưa vào tầng dày đặc cuối cùng với do nút ẩn. Các trọng số của tầng dày đặc này được ký hiệu làWo∈Rdhpv . Do đó, đầu ra cuối cùng của tầng tập trung đa đầu sẽ là

o=Wo       o(i) . . . o(h)       2.8 Mơ hình Transformer

Như chúng ta đã biết về các kiến trúc mạng nơ-ron quan trọng như mạng nơ-ron tích chập (CNN) và mạng nơ-ron hồi tiếp (RNN). Ưu nhược điểm của hai kiến trúc mạng này có thể được tóm tắt như sau:

• Các mạng CNN có thể dễ dàng được thực hiện song song ở một tầng nhưng khơng có khả năng nắm bắt các phụ thuộc chuỗi có độ dài biến thiên.

• Các mạng RNN có khả năng nắm bắt các thơng tin cách xa nhau trong chuỗi có độ dài biến thiên, nhưng khơng thể thực hiện song song trong một chuỗi.

Để kết hợp các ưu điểm của CNN và RNN, Tác giả Vaswani và một số đồng tác giả khác (2017)[16] đã thiết kế một kiến trúc mới bằng cách sử dụng cơ chế tập trung. Kiến trúc này gọi là Transformer, song song hóa bằng cách học chuỗi hồi tiếp với cơ chế attention, đồng thời mã hóa vị trí của từng phần tử trong chuỗi. Kết quả là ta có một mơ hình tương thích với thời gian huấn luyện ngắn hơn đáng kể.

Tương tự như mơ hình seq2seq trong mục 2.6, Transformer cũng dựa trên kiến trúc Encoder- Decoder. Tuy nhiên, nó thay thế các tầng hồi tiếp trong seq2seq bằng các tầng tập trung đa đầu (multi-head attention) như đã trình bày ở mục 2.7.4, kết hợp thơng tin vị trí thơng qua biểu diễn vị trí (positional encoding) và áp dụng chuẩn hóa tầng (layer normalization).

Nhìn chung, hai mơ hình này khá giống nhau: các embedding của chuỗi nguồn được đưa vào

nkhối lặp lại. Đầu ra của khối encoder cuối cùng sau đó được sử dụng làm bộ nhớ tập trung cho bộ giải mã. Tương tự, các embedding của chuỗi đích được đưa vàonkhối lặp lại trong bộ decoder. Ta thu được đầu ra cuối cùng bằng cách áp dụng một tầng dày đặc có kích thước bằng kích thước bộ từ vựng lên các đầu ra của khối decoder cuối cùng.

Mặt khác, Transformer khác với mơ hình seq2seq sử dụng cơ chế attention như sau:

Khối Transformer: một tầng hồi tiếp trong seq2seq được thay bằng một Khối Trans- former. Với bộ encoder, khối này chứa một tầng multi-head attention và một mạng truyền xi theo vị trí (position-wise feed-forward network) gồm hai tầng dày đặc. Đối với bộ decoder, khối này có thêm một tầng multi-head attention khác để nhận vào trạng thái bộ encoder.

Cộng và chn hóa:đầu vào và đầu ra của cả tầng multi-head attention hoặc mạng truyền xi theo vị trí được xử lý bởi hai tầng "cộng và chuẩn hóa" bao gồm cấu trúc phần dư và tầng chuẩn hóa theo tầng (layer normalization).

Hình 2.21:Minh hoạ kiến trúc Transformer (Nguồn: [15])

Biễu diễn vị trí:do tầng tự tập trung không phân biệt thứ tự phần tử trong một chuỗi, nên tầng biễu diễn vị trí được sử dụng để thêm thơng tin vị trí vào từng phần tử trong chuỗi.

2.8.1 Mạng truyền xi theo vị trí - Position-wise feed-forward network

Mạng truyền xi theo vị trí - Position-wise feed-forward network là một thành phần quan trọng của khối Transformer. Nó chấp nhận đầu vào3chiều với kích thước là: kích thước batch, độ dài chuỗi, kích thước đăc trưng. Mạng truyền xi theo vị trí bao gồm hai tầng dày đặc áp dụng trên chiều cuối cùng của đầu vào. Vì hai tầng dày đặc này cùng được sử dụng cho từng vị trí trong chuỗi, nên ta gọi là mạng truyền xi theo vị trí. Cách làm này tương đương với việc áp dụng hai tầng tích chập1×1.

2.8.2 Cộng và chuẩn hóa

Trong kiến trúc Transformer, tầng "cộng và chuẩn hóa" cũng đóng vai trị thiết yếu trong việc kết nối đầu vào và đầu ra của các tầng khác một cách trơn tru. Cụ thể, ta thêm một cấu trúc phân dư và tầng chuẩn hóa theo tầng sau tầng tập trung đa đầu và mạng truyền xi theo vị trí. Chuẩn hóa theo tầng khá giống với chuẩn hóa theo batch. Một điểm khác biệt là giá trị trung bình và phương sai của tầng chuẩn hóa này được tính theo chiều cuối cùng, tức X.mean(axis=-1), thay vì theo chiều đầu tiên (theo batch) X.mean(axis=0) . Chuẩn hóa tầng ngăn khơng cho phạm vi giá trị trong các tầng thay đổi quá nhiều, giúp huấn luyện nhanh hơn và khái qt hóa tốt hơn.

2.8.3 Biểu diễn vị trí - Positional Encoding

Khơng giống như tầng hồi tiếp, cả tầng multihead-attention và mạng truyền xi theo vị trí đều tính tốn đầu ra cho từng phần tử trong chuỗi một cách độc lập. Điều này cho phép song song hóa cơng việc tính tốn nhưng lại khơng mơ hình hóa được thơng tin tuần tự trong chuỗi đầu vào. Để nắm bắt các thơng tin tuần tự một cách hiệu quả, mơ hình Transformer sử dụng biểu diễn vị trí (positional encoding) để duy trì thơng tin vị trí của chuỗi đầu vào.

Cụ thể, giả sửX∈Rl×d là embedding của mẫu đầu vào, trong đó l là độ dài chuỗi và d là kích thước embedding. Tầng biểu diễn vị trí sẽ mã hóa vị tríP∈Rl×dcủaXvà trả về đầu raP+X. Vị tríPlà ma trận 2 chiều, trong đóilà thứ tự trong câu, jlà vị trí theo chiều embedding. Bằng cách này, mỗi vị trí trong chuỗi ban đầu được biểu biễn bởi hai phương trình dưới đây:

Pi,2j=sin(i/100002j/d)

Pi,2j+1=cos(i/100002j/d)

vớii=0, ...,l−1và j=0, ...,⌊(d−1)/2⌋

Một phần của tài liệu Tổng hợp âm nhạc sử dụng học sâu (Trang 33)

Tải bản đầy đủ (PDF)

(94 trang)