Cổng đầu vào, cổng quên và cổng đầu ra

Một phần của tài liệu TỰ ĐỘNG NHẬN BIẾT NGÔN NGỮ dựa vào học sâu (Trang 36)

Tương tự như với GRU, dữ liệu được đưa vào các cổng LSTM là đầu vào ở bước thời gian hiện tại 𝑋𝑡 và trạng thái ẩn ở bước thời gian trước đó 𝐻𝑡−1. Những đầu vào này được xử lý bởi một tầng kết nối đầy đủ và một hàm kích hoạt sigmoid để tính toán các giá trị của các cổng đầu vào, cổng quên và cổng đầu ra.

Kết quả là, tất cả các giá trị đầu ra tại ba cổng đều nằm trong khoảng [0,1] minh họa luồng dữ liệu cho các cổng đầu vào, cổng quên, và cổng đầu ra.

Giả sử rằng có h nút ẩn, mỗi mini batch có kích thước n và kích thước đầu vào là d. Như vậy, đầu vào là 𝑋𝑡 ∈𝑅𝑛 × 𝑑 và trạng thái ẩn của bước thời gian trước đó là 𝐻𝑡−1 ∈ 𝑅𝑛 ×ℎ. Tương tự, các cổng được định nghĩa như sau: cổng đầu vào là 𝐼𝑡 ∈𝑅𝑛 × h, cổng quên là 𝐹𝑡 ∈𝑅𝑛 × h, và cổng đầu ra là 𝑂𝑡 ∈𝑅𝑛 × h. Các giá trị trên được tính như các công thức (2.12) như sau:

𝐼𝑡 = σ(𝑋𝑡𝑊𝑥𝑖 + 𝐻𝑡−1𝑊ℎ𝑖 + 𝑏𝑖) 𝐹𝑡 = σ(𝑋𝑡𝑊𝑥𝑓 + 𝐻𝑡−1𝑊ℎ𝑓 + 𝑏𝑓) 𝑂𝑡 = σ(𝑋𝑡𝑊𝑥𝑜 + 𝐻𝑡−1𝑊ℎ𝑜 + 𝑏𝑜) Trong đó: - 𝑊𝑥𝑖, 𝑊𝑥𝑓, 𝑊𝑥𝑜 ∈ 𝑅𝑑 ×ℎ là các trọng số. - 𝑊ℎ𝑖, 𝑊ℎ𝑓, 𝑊ℎ𝑜h_i ) ∈𝑅ℎ ×ℎ là các trọng số. - 𝑏𝑖, 𝑏𝑓, 𝑏𝑜 ∈𝑅1 ×ℎ là các hệ số điều chỉnh. 2.3.2Ô nhớ tiềm năng

Tiếp theo, chúng ta sẽ thiết kế một ô nhớ. Vì chưa chỉ định tác động của các cổng khác nhau, nên đầu tiên sẽ giới thiệu ô nhớ tiềm năng 𝑐̃𝑡 ∈ 𝑅𝑛 × h. Các phép tính toán cũng tương tự như ba cổng mô tả ở trên, ngoại trừ việc ở đây sẽ sử

Hình 2.11 Các phép tính tại cổng đầu vào, cổng quên và cổng đầu ra trong một đơn vị LSTM

(2.12.2) (2.12.3) (2.12.1)

dụng hàm kích hoạt tanh() với miền giá trị nằm trong khoảng [−1,1]. Từ đó dẫn đến phương trình tại bước thời gian t như sau:

𝑐̃𝑡 = tanh(𝑋𝑡𝑊𝑥𝑐 + 𝐻𝑡−1𝑊ℎ𝑐 + 𝑏𝑐). Trong đó:

- 𝑊𝑥𝑐 ∈𝑅𝑑 × h, 𝑊ℎ𝑐 ∈ 𝑅ℎ × h là các tham số trọng số.

- 𝑏𝑐 ∈ 𝑅1 × h là một hệ số điều chỉnh.

Ô nhớ tiềm năng được mô tả ngắn gọn trong hình 2.12.

2.3.3Ô nhớ

Trong GRU, chúng ta chỉ có một cơ chế duy nhất để quản lý cả việc nhớ và quên. Trong LSTM, chúng ta có hai tham số, 𝐼𝑡 điều chỉnh lượng dữ liệu mới được lấy vào thông qua 𝐶̃𝑡 và tham số quên 𝐹𝑡 chỉ định lượng thông tin cũ cần giữ lại trong ô nhớ 𝐶𝑡−1 ∈ 𝑅𝑛 × h. Sử dụng cùng một phép nhân theo từng điểm (pointwise) như trước đây, ta có phương trình cập nhật như sau.

𝐶𝑡 = 𝐹𝑡 ⊙𝐶𝑡−1 + 𝐼𝑡 ⊙𝐶̃𝑡.

Nếu giá trị ở cổng quên luôn xấp xỉ bằng 1 và cổng đầu vào luôn xấp xỉ bằng 0, thì giá trị ô nhớ trong quá khứ 𝐶𝑡−1 sẽ được lưu lại qua thời gian và truyền tới bước thời gian hiện tại. Thiết kế này được giới thiệu nhằm giảm bớt vấn đề biến mất gradient cũng như nắm bắt các phụ thuộc dài hạn trong chuỗi thời gian tốt hơn. Do đó chúng ta có sơ đồ luồng trong hình 2.13.

Hình 2.12 Các phép tính toán trong ô nhớ tiềm năng của LSTM

(2.13)

2.3.4Các trạng thái ẩn

Cuối cùng, chúng ta cần phải xác định cách tính trạng thái ẩn 𝐻𝑡 ∈ 𝑅𝑛 × h. Đây là nơi cổng đầu ra được sử dụng. Trong LSTM, đây chỉ đơn giản là một phiên bản có kiểm soát của hàm kích hoạt tanh() trong ô nhớ. Điều này đảm bảo rằng các giá trị của 𝐻𝑡 luôn nằm trong khoảng (−1, 1). Bất cứ khi nào giá trị của cổng đầu ra là 1, thực chất chúng ta đang đưa toàn bộ thông tin trong ô nhớ tới bộ dự đoán. Ngược lại, khi giá trị của cổng đầu ra là 0, chúng ta giữ lại tất cả các thông tin trong ô nhớ và không xử lý gì thêm. Hình 2.14 minh họa các luồng dữ liệu.

𝐻𝑡 = 𝑂𝑡 ⊙ tanh(𝐶𝑡).

Hình 2.13 Sử dụng phép nhân theo từng phần tử trong ô nhớ của LSTM

2.4Kỹ thuật Dropout

2.4.1Drop-Out

Như đã biết overfitting là một vấn nạn đối với Machine Learning, đặc biệt là trong mạng nơ ron. Khi muốn cho mô hình trở nên phức tạp hơn, thường tăng số lượng layer và số lượng unit của mỗi layer thay vì tăng bậc của feature như trước đây đã đề cập. Nhưng khi mô hình phức tạp hơn, overfitting bắt đầu xuất hiện, vì số lượng tham số trong mạng nơ ron nhiều và có “độ sâu” khác nhau, vì vậy khi áp dụng chung? cho tất cả các tham số sẽ yêu cầu số lần training lớn để tìm được? phù hợp. Có một kĩ thuật dành riêng cho mạng nơ ron và khá đơn giản, đó là Drop-out (một kĩ thuật khác được biết đến tương tự là Drop-Connect).

Drop-out là một kĩ thuật Regularization để chống lại vấn đề overfitting. Cách Drop-out thực hiện là xoá bỏ một số unit trong các bước huấn luyện ứng với một giá trị xác suất p cho trước.

2.4.2Hoạt động của Drop-Out

• Drop-Out được áp dụng trên một layer của mạng NN với một xác suất p cho trước (ta có thể sử dụng nhiều Drop-Out khác nhau cho những layer khác nhau, nhưng trên 1 layer sẽ chỉ có 1 Drop-Out).

• Tại mỗi bước trong quá trình huấn luyện, khi thực hiện Forward Propagation (lan truyền xuôi) đến layer sử dụng Drop-Out, thay vì tính toán tất cả unit có trên layer, tại mỗi unit ta chọn ngẫu nhiên xem unit đó có được tính hay không dựa trên xác suất p. Với những unit được tính, ta tính toán

bình thường còn với những unit không được tính, ta gán giá trị tại unit đó bằng 0.

• Khi thực hiện tính toán trên mạng NN trong quá trình test (sử dụng mạng NN để dự đoán) thay vì làm như trên, ta thực hiện tính toán trên tất cả các unit nhưng trọng số trên mỗi connect đến các unit của layer được áp dụng Drop-Out được thay thế bằng giá trị của trọng số đó với xác suất p. (adsbygoogle = window.adsbygoogle || []).push({});

2.4.3Tính hiệu quả của Drop-Out

Đối với mạng nơ ron, không giống như những kĩ thuật khác như hồi qui tuyến tính (Linear Regression) hay hồi qui logic (Logistic Regression) là đẩy bậc của đặc trưng (feature) lên, Đối với kỹ thuật Drop-Out người ta thường tăng số lượng lớp ẩn (hidden layer) và số lượng unit trong các layer lên. Nhưng đôi khi do việc thêm vào quá nhiều lớp ẩn cũng như unit khiến cho mô hình phức tạp hơn mức cần thiết và khiến mô hình bị overfitting. Chính vì vậy để tránh mô hình bị overfitting trong trường hợp này, ta cần phải giản lược mạng nơ ron hiện có. Khi áp dụng Drop-Out vào 1 layer nào đó, thì thực tế tại mỗi bước huấn luyện mạng nơ ron của ta chỉ còn 1 phần:

Giả sử layer của chúng ta có 4 unit (như trong hình minh hoạ), và xác suất p = 0.8. Gọi 𝑝𝑖 là xác xuất khi sử dụng i unit tại 1 layer khi đó xác suất sử dụng số lượng unit của layer sẽ như sau:

Sử dụng 0 unit của layer: 𝑝0= (1-p)4 = (0.2)4 = 0.0016 (vì xác suất để mỗi unit không được sử dụng là 1-p nên để cả 4 unit không được sử dụng thì xác suất phải là (1-p)4.

Sử dụng 1 unit của layer: 𝑝1= 4*p*(1-p)3 = 4*0.8*0.23 = 0.0256 (vì xác suất để mỗi unit không được sử dụng là 1-p, vậy để 3 unit không được sử dụng thì xác suất phải là (1-p)3 và có thêm 1 unit được sử dụng với xác suất p, bên cạnh đó có tới 4 unit có thể được chọn để sử dụng.)

Tương tự khi sử dụng 2 unit của layer: 𝑝2 = 6*p2*(1-p)2 = 6 * 0.82 * 0.22 = 0.1536 (có 6 cách để lựa chọn 2 unit để sử dụng trong 4 unit của layer)

Khi sử dụng 3 unit của layer: 𝑝3= 4*p3*(1-p) = 4 0.83*0.2 = 0.4096 (có 4 cách để lựa chọn 3 unit để sử dụng trong 4 unit của layer)

Khi sử dụng 4 unit của layer: 𝑝4= p4 = 0.84= 0.4096 (chỉ có 1 cách để lựa chọn 4 unit để sử dụng trong 4 unit của layer)

𝑝𝑡𝑏= 𝑝0 + 𝑝1 + 𝑝2+ 𝑝3+ 𝑝4

= 0*0.0016 + 1*0.0256 + 2*0.1536 + 3*0.4096 + 4*0.4096 = 3.2 = 4*0.8 = 4*p (Số lượng unit nhân với xác suất p).

Nghĩa là khi áp dụng Drop-Out layer của ta chỉ sử dụng số unit tương đương 3.2 bằng cách sử dụng nhiều mạng nhỏ (với 0, 1, 2, 3, 4 unit trong layer như mô tả ở trên)

Cuối cùng, chúng ta cùng đặt ra một câu hỏi tại sao khi sử dụng mạng NN để kiểm thử chúng ta lại không chọn unit theo kiểu ngẫu nhiên như khi huấn luyện mà lại sử dụng trọng số có giá trị bị giảm xuống theo xác suất p? Câu trả lời là khi các unit được sử dụng với xác suất như trên, các trọng số cũng được cập nhật (update) với tỉ lệ tương tự, nên thay vì phải tính kết quả trên tất các mạng con bằng cách lấy ngẫu nhiên, chúng ta thực hiện xấp xỉ (approximate) giá trị trung bình của tất cả các mạng con.

CHƯƠNG 3: ÁP DNG MÔ HÌNH LSTM CHO BÀI TOÁN NHN BIT NGÔN NG

Trình bày mô hình LSTM trong nhận biết ngôn ngữ tự động dựa vào học sâu áp dụng cho bài toán với đầu vào là các đoạn văn bản, dựa trên việc mô hình hóa dữ liệu và thuật toán học máy cho LID. Với mỗi một đoạn văn bản đưa vào,

thuật toán học máy này sẽ xác định được ngôn ngữ.

3.1Giới thiệu

Chúng tôi có thể coi bài toán tự động nhận biết ngôn ngữ dựa vào học sâu với đầu vào là các đoạn văn bản như bài toán phân loại văn bản với nhãn là các ngôn ngữ làm văn bản đó thuộc vào. Do đó, có nhiều phương pháp để nhận biết được ngôn ngữ của văn bản, ví dụ như dựa vào các luật, dựa vào học máy (machine learning) và gần đây phương pháp học sâu (deep learning) tỏ ra khá hiệu quả áp dụng cho bài toán trên.

Trong phương pháp học sâu chúng tôi nhận thấy rằng mô hình LSTM tỏ ra ưu điểm hơn so với các mô hình khác. Mô hình LSTM có ưu điểm nhớ được các từ ở phía trước từ đang xử lý với khoảng cách xa và có thể đoán được các từ tiếp theo trong một văn bản đầu vào.

Chính vì vậy chúng tôi chọn mô hình LSTM cho bài toán nhận biết ngôn ngữ tự động dựa vào học sâu.

3.2Áp dụng LSTM cho bài toán nhận biết ngôn ngữ

Đầu vào (input string): Là một đoạn văn bản.

Lớp EMBEDDING: Lớp này có nhiệm vụ biến đổi 1 chuỗi văn bản vào

thành vector số phù hợp với dữ liệu đầu vào của mô hình huấn luyện. Đầu ra của lớp này sẽ được dùng làm đầu vào của lớp LSTM. Chúng tôi sử dụng vector embedding có kích cỡ là 256.

Lớp LSTM: Là một mạng học sâu với lớp nơ ron đầu vào là các vector đầu

ra của lớp embedding. Trong lớp này có thể dùng cho 2 chế độ BiLSTM hoặc LSTM, đầu ra của lớp này sẽ làm đầu vào cho lớp DROUPOUT.

Đầu ra của LSTM sẽ có 128 x 2 = 256 units (chúng tôi sử dụng BiLSTM)

Lớp DROP-OUT: Kỹ thuật drop-out (đã được mô tả trong phần 2.5) là

việc chúng ta sẽ bỏ qua một vài unit của các tầng của mạng neural trong suốt quá trình huấn luyện mô hình, những unit bị bỏ qua được lựa chọn ngẫu nhiên với tỷ lệ nhất định p. Ở đây, chúng ta hiểu bỏ qua (ignore) là unit đó sẽ không tham gia và đóng góp vào quá trình huấn luyện (lan truyền tiến và lan truyền ngược) tức là các giá trị của unit đó bằng 0.

Hình 3.2 Mô tả chi tiết lớp LSMT

Về mặt kỹ thuật, tại mỗi giai đoạn huấn luyện, mỗi node có xác suất bị bỏ qua là 1-p và xác suất được chọn là p. (adsbygoogle = window.adsbygoogle || []).push({});

Khi chúng ta sử dụng tầng liên kết đầy đủ (full connected layer), các nơ ron sẽ phụ thuộc “mạnh” lẫn nhau trong suốt quá trình huấn luyện, điều này làm giảm sức mạng cho mỗi nơ ron và dẫn đến bị over-fitting tập huấn luyện.

Bài toán của chúng tôi sử dụng hệ số dropout là 0.5 (bởi vì bài toán đơn giản so với cấu trúc mô hình). Việc sử dụng giảm 50% của drop-out giúp kết quả đạt được là tốt nhất so với các phương pháp chuẩn hoá khác5.

Lớp DENSE: Hay còn gọi là lớp kết nối đầy đủ (Fully-connected layer) là

một lớp trong mạng nơ ron nhân tạo. Mỗi nơ ron nhận đầu vào từ tất cả nơ ron lớp trước đó. Lớp này đặt ở cuối mạng và được dùng để tối ưu hóa mục tiêu của mạng. Trong lớp DENSE có sử dụng hàm kích hoạt softmax() để tạo ra phân phối xác suất cho các lớp đầu ra. Bài toán của chúng tôi sử dụng lớp DENSE có output là 10 units tương ứng với 10 nhãn.

Đầu ra (output): Là xác suất của các nhãn tương ứng với các ngôn ngữ.

5 https://proceedings.neurips.cc/paper/2013/file/71f6278d140af599e06ad9bf1ba03cb0-Paper.pdf

3.3Đánh giá và thử nghiệm.

3.3.1Phương pháp đánh giá

Phương pháp đánh giá mô hình của bài toán nhận biết ngôn ngữ tự động dựa vào học sâu được đo bằng việc tính toán chính xác việc phân lớp dựa vào một tập kiểm thử cụ thể. Một số định nghĩa như sau:

Accuracy (ACC): Độ đo chính xác trung bình tổng quát của các nhãn, là tỷ lệ giữa kết quả dự đoán đúng trong tống số mẫu dữ liệu thực tế.

Accuracy = TP+TN

TP+TN+FP+FN = Số lượng mẫu dự đoán đúng Tổng số mẫu

Trong đó:

- True Positive (TP): tổng số lượng tích cực dự đoán ĐÚNG với số số lượng tích cực thực tế

- True Negative (TN): tổng số lượng tiêu cực dự đoán ĐÚNG với số lượng tiêu cực thực tế;

- False Positive (FP): tổng số lượng tích cực dự đoán SAI với số lượng tích cực thực tế;

- False Negative (FN): tổng số lượng tiêu cực dự đoán SAI với số lượng tiêu cực thực tế.

Precision (Độ chính xác): được định nghĩa là số lượng dự đoán được thực

hiện chính xác hoặc có liên quan trong số tất cả các dự đoán dựa trên lớp tích cực, là tỉ lệ số mẫu tích cực phân loại đúng trong số những mẫu được phân loại là đúng

Precision = TP

TP + FP = Số lượng tích cực phân loại đúng Tổng số phân loại đúng

Recall (Độ bao phủ): chỉ số thể hiện trong tất cả các trường hợp Positive,

bao nhiêu trường hợp đã được dự đoán chính xác, là tỉ lệ số mẫu tích cực đúng trong số những điểm thực sự là positive

Recall = TP

TP + FN = Số lượng tích cực phân loại đúng Tổng số phân loại trong thực tế)

F1_score: Độ đo F1 là giá trị trung bình hài hòa của độ chính xác và độ bao phủ giúp tối ưu hóa một bộ phân loại cho độ chính xác cân bằng và hiệu suất thu hồi.

F1 = 2 x Precision x Recall Precision + Recall

3.3.2Cấu hình thử nghiệm a) Cấu hình phần cứng: a) Cấu hình phần cứng:

Bảng 3.1 Cấu hình phần cứng máy tính

CPU Intel Core i5-10210U (adsbygoogle = window.adsbygoogle || []).push({});

RAM 8GB LPDDR3 2133MHz

GPU Intel UHD Graphics

Storage 512GB SSD M.2 NVMe

OS Windows 11

b) Về dữ liệu

Bài toán nhận biết ngôn ngữ tự động dựa vào học sâu sử dụng 2 nguồn dữ liệu: 1. Dữ liệu về tin tức trên các trang web được trích xuất từ website, xây dựng

và gán nhãn thủ công cho 4 ngôn ngữ (Trung, Việt, Lào, Campuchia) với 72352 mẫu.

2. Dữ liệu dùng cho 10 ngôn ngữ (Trung, Việt, Lào, Campuchia, Anh, Đài Loan, Pháp, Tây Ban Nha, Nhật Bản, Nga) được trích xuất từ tập dữ liệu Wikipedia chuyên về đánh giá các hệ thống xác định ngôn ngữ (WiLI- 2018)6 với 175.000 mẫu/240 ngôn ngữ. Trích xuất 50000 mẫu cho 10 ngôn ngữ trên, 20000 mẫu cho kiểm thử.

Tin x lý d liu:

Tiền xử lý dữ liệu và gán nhãn là một trong những bước quan trọng nhất trong phân tích, khai thác dữ liệu, đặc biệt là trong khai thác dữ liệu văn bản vì có rất nhiều sự khác biệt về nội dung văn bản của các ngôn ngữ khác nhau trên các website khi chúng ta trích xuất.

Dữ liệu thu thập về sẽ có dạng thô, chưa qua xử lý nên có thể dữ liệu bị

Một phần của tài liệu TỰ ĐỘNG NHẬN BIẾT NGÔN NGỮ dựa vào học sâu (Trang 36)