Lstm la gi
« Back to Glossary Index Viết tắt của Long-short term memory, là một kiến trúc mạng nơ ron hồi quy nhân tạo được sử dụng trong deep learning. Không giống như
các mạng truyền thẳng tiêu chuẩn, LSTM có các kết nối phản hồi. Nó không chỉ có khả năng xử lý các điểm dữ liệu đơn lẻ mà còn xử lý toàn bộ chuỗi dữ liệu mà không gặp phải vấn đề vanishing
gradient.
« Back to Glossary Index Trituenhantao.io là trang web chia sẻ thông tin, kiến thức, kinh nghiệm học tập và triển khai các chương trình và dự án sử dụng trí tuệ nhân tạo trên thế giới. Điều hướng bài viết
Deep learning[1] là một nhánh của lĩnh vực học máy, dựa trên một tập hợp các thuật toán nhằm cố gắng mô hình dữ liệu trừu tượng hóa ở mức cao bằng cách sử dụng nhiều lớp xử lý với cấu trúc phức tạp, hoặc bao gồm nhiều biến đổi phi tuyến. Deep learning là một lớp của các thuật toán máy học: - Sử dụng một tầng (cascade) nhiều lớp các đơn vị xử lý phi tuyến để trích trọn đặc trưng và chuyển đổi. Mỗi lớp kế tiếp dùng đầu ra từ lớp trước làm đầu vào. Thuật toán này có thể được giám sát hoặc không cần giám sát và được ứng dụng cho các mô hình phân tích (không có giám sát) và phân loại (giám sát). - Dựa trên học (không có giám sát) của nhiều cấp các đặc trưng hoặc đại diện của dữ liệu. Các tính năng cao cấp bắt nguồn từ các tính năng thấp cấp hơn để tạo thành một đại diện thứ bậc. - Là một phần của lĩnh vực máy học và rộng lớn hơn về việc học đại diện dữ liệu. - Học nhiều cấp độ đại diện tương ứng với các mức độ trừu tượng khác nhau; các mức độ hình thành một hệ thống phân cấp của các khái niệm. Deep learning còn là phương pháp nâng cao của mạng nơ-ron nhân tạo (Artificial Neural Networks) khai thác khả năng tính toán ngày càng rẻ từ các chip xử lý hiện đại. Phương pháp này nhắm tới việc xây dựng nhiều hơn các mạng nơ-ron phức tạp cũng như giải quyết bài toán semi-supervised do tập dữ liệu khổng lồ thường được gán nhãn không đầy đủ.
Deep learning có nhiều thuật toán khác nhau nên nó phát triển rất nhanh nhiều biến thể và thuật toán mới ra đời liên tục trong thời gian ngắn, có thể kể đến một số thuật toán như:
Mạng nơ-ron nhân tạo[2] là một mô hình toán học hay mô hình tính toán được xây dựng dựa trên các mạng nơ-ron sinh học. Nó gồm có một nhóm các nơ-ron nhân tạo (nút) nối với nhau, và xử lý thông tin bằng cách truyền theo các kết nối và tính giá trị mới tại các nút. ANN có một số ưu điểm nhưng một trong những ưu điểm nổi bật nhất là một thực tế là nó thực sự có thể học hỏi từ việc quan sát các tập dữ liệu. Theo cách này, ANN được sử dụng như một hàm ngẫu nhiên công cụ xấp xỉ. Các loại công cụ này giúp ước tính các phương pháp hiệu quả nhất về mặt chi phí và lý tưởng để đến các giải pháp trong khi xác định các chức năng tính toán hoặc phân phối. ANN lấy mẫu dữ liệu thay vì toàn bộ tập dữ liệu để đến các giải pháp, giúp tiết kiệm cả thời gian và tiền bạc. ANN được coi là các mô hình toán học khá đơn giản để nâng cao các công nghệ phân tích dữ liệu hiện có. Có 2 loại nơ-ron nhân tạo chính là perceptron và sigmoid:
Perceptron [3]được phát triển vào những năm 1950 và 1960 bởi nhà khoa học Frank Rosenblatt. Ngày nay, nó phổ biến trong nhiều mô hình mạng nơ-ron khác nhau. Một perceptron có một số đầu vào (input) nhị phân, 𝑥1, 𝑥2, ..., và tạo ra một đầu ra (output) nhị phân duy nhất. Hình 1.6 Một perceptron với ba đầu vào Trong hình 1.6, Perceptron có ba đầu vào 𝑥1, 𝑥2, 𝑥3. Cũng có thể có nhiều hơn hoặc ít hơn số đầu vào. Rosenblatt đề xuất một quy tắc đơn giản để tính toán đầu ra. Các trọng số 𝑤1, 𝑤2, ... là các số thực thể hiện tầm quan trọng của các yếu tố đầu vào tương ứng với đầu ra. Hình 1.7 Mạng nơ-ron gồm nhiều perceptron Trong hình 1.7, cột đầu tiên hay còn gọi là lớp đầu tiên của perceptron có thể đưa ra ba quyết định từ đầu vào. Còn trong lớp perceptron thứ hai, mỗi perceptron được quyết định bởi trọng số lên các đầu ra từ lớp đầu tiên. Perceptron trong lớp thứ hai có thể đưa ra quyết định ở mức độ phức tạp và trừu tượng hơn perceptron trong lớp đầu tiên. Và thậm chí quyết định phức tạp hơn có thể được thực hiện bởi các perceptron trong lớp thứ ba, thứ tư.... Bằng cách này, một mạng lưới nhiều lớp của perceptron có thể tham gia vào việc ra quyết định phức tạp. Khi xác định perceptron thì một perceptron chỉ có một đầu ra duy nhất. Trong mạng trên, perceptron trông giống như có nhiều đầu ra nhưng thực ra chúng chỉ có một đầu ra. Việc nhiều mũi tên đầu ra chỉ là một cách hữu hiệu cho thấy đầu ra từ một perceptron đang được sử dụng như là đầu vào cho một vài perceptron khác.
Nơ-ron sigmoid tương tự như perceptron nhưng có sự sửa đổi để nếu có thay đổi nhỏ trong trọng số và định hướng chỉ gây ra một sự thay đổi nhỏ trong đầu ra. Đây là điều rất quan trọng cho phép một mạng lưới các nơ-ron sigmoid có thể học.
ANN thường có ba lớp được kết nối với nhau. Lớp đầu tiên bao gồm các nơron đầu vào. Những nơron này gửi dữ liệu lên lớp thứ hai, và nó sẽ gửi các nơron đầu ra tới lớp thứ ba:
Hình 1.8 Mạng Nơ ron một lớp ẩn Hình 1.8 đây là mạng nơ-ron đơn giản với một lớp ẩn, lớp ngoài cùng bên trái trong mạng này được gọi là lớp đầu vào, và các nơ-ron trong lớp này được gọi là nơ-ron đầu vào. Lớp ngoài cùng bên phải hoặc đầu ra chứa các nơ-ron đầu ra, như trong trường hợp này chỉ có một nơron đầu ra duy nhất. Lớp giữa được gọi là lớp ẩn, các nơ-ron trong lớp này không phải đầu vào cũng không đầu ra. Hình 1.9 Mạng Nơ ron hai lớp ẩn Trong khi việc thiết lập lớp đầu vào và đầu ra của một mạng nơ-ron thường đơn giản, thì việc tạo các lớp ẩn thường mất nhiều thời gian và công sức. Do đó, các nhà nghiên cứu mạng nơ-ron đã phát triển nhiều công nghệ tự động thiết kế cho các lớp ẩn, giúp mọi người có được những đầu ra theo hướng mình mong muốn. Điều này có thể được sử dụng để cân bằng số lớp ẩn với thời gian cần thiết để đào tạo mạng.
Hình 1.10 Quá trình xử lý thông tin của một ANN Inputs: Mỗi Input tương ứng với 1 thuộc tính (attribute) của dữ liệu (patterns). Output: Kết quả của một ANN là một giải pháp cho một vấn đề cụ thể. Connection Weights (Trọng số liên kết): Đây là thành phần rất quan trọng của một ANN, nó thể hiện mức độ quan trọng (độ mạnh) của dữ liệu đầu vào đối với quá trình xử lý thông tin (quá trình chuyển đổi dữ liệu từ Layer này sang layer khác). Quá trình học (Learning Processing) của ANN thực ra là quá trình điều chỉnh các trọng số (Weight) của các input data để có được kết quả mong muốn. Summation Function (Hàm tổng): Tính tổng trọng số của tất cả các input được đưa vào mỗi Neuron (phần tử xử lý PE). Hàm tổng của một nơ-ron cho biết khả năng kích hoạt (Activation) của nơron đó còn gọi là nội kích hoạt (Internal Activation)
ANN được huấn luyện (Training) hay được học (Learning) theo 2 kỹ thuật cơ bản đó là học có giám sát (Supervised Learning) và học không giám sát (Unsupervised Learning). Supervised learning: Quá trình Training được lặp lại cho đến kết quả (output) của ANN đạt được giá trị mong muốn (Desired value) đã biết. Điển hình cho kỹ thuật này là mạng Neuron lan truyền ngược (Backpropagation). Unsupervised learning: Không sử dụng tri thức bên ngoài trong quá trình học (Learning), nên còn gọi là tự tổ chức (Self – Organizing). Mạng Neuron điển hình được huấn luyện theo kiểu Unsupervised là Sefl – Organizing Map (SOM).
Ý tưởng chính của RNN (Recurrent Neural Network) là sử dụng chuỗi các thông tin. Trong các mạng nơ-ron truyền thống tất cả các đầu vào và cả đầu ra là độc lập với nhau. Tức là chúng không liên kết thành chuỗi với nhau. Nhưng các mô hình này không phù hợp trong rất nhiều bài toán. Ví dụ, nếu muốn đoán từ tiếp theo có thể xuất hiện trong một câu thì ta cũng cần biết các từ trước đó xuất hiện lần lượt thế nào chứ nhỉ? RNN được gọi là hồi quy (Recurrent) bởi lẽ chúng thực hiện cùng một tác vụ cho tất cả các phần tử của một chuỗi với đầu ra phụ thuộc vào cả các phép tính trước đó. Nói cách khác, RNN có khả năng nhớ các thông tin được tính toán trước đó. Trên lý thuyết, RNN có thể sử dụng được thông tin của một văn bản rất dài, tuy nhiên thực tế thì nó chỉ có thể nhớ được một vài bước trước đó mà thôi. Để có
thể hiểu rõ về RNN, trước tiên chúng ta cùng nhìn lại mô hình Neural Network dưới đây: Hình 1.11 Mô hình kiến trúc Neural Network Như đã biết thì Neural Network bao gồm 3 phần chính là Input layer, Hidden layer và Output layer, ta có thể thấy là đầu vào và đầu ra của mạng neuron này là độc lập với nhau. Như vậy mô hình này không phù hợp với những bài toán dạng chuỗi như mô tả, hoàn thành câu, ... vì những dự đoán tiếp theo như từ tiếp theo phụ thuộc vào vị trí của nó trong câu và những từ đằng trước nó.
Các mạng neural hồi quy, còn được biến đến như là RNNs, là một lớp của mạng neural cho phép đầu ra được sử dụng như đầu vào trong khi có các trạng thái ẩn. Thông thường là như sau: Hình 1.12 Mô hình kiến trúc RNN Tại mỗi bước t, giá trị kích hoạt a< t > và đầu ra y< t > được biểu diễn như sau: a< t >=g1*(Waa * a< t-1 > + Wax * x< t > + ba) y< t >=g2*(Wya * a< t > + by) với Wax, Waa, Wya, ba, by là các hệ số được chia sẻ tạm thời và g1, g2 là các hàm kích hoạt. Ưu và nhược điểm của một kiến trúc RNN thông thường được tổng kết ở bảng dưới đây:
Các mô hình RNN hầu như được sử dụng trong lĩnh vực xử lí ngôn ngữ tự nhiên và ghi nhận tiếng nói. Các ứng dụng khác được tổng kết trong bảng dưới đây:
Các hàm kích hoạt thường dùng trong các modules RNN được miêu tả như sau:
LSTM là một phiên bản mở rộng của mạng Recurrent Neural Network (RNN), nó được thiết kế để giải quyết các bài toán về phụ thuộc xa (long-term dependencies). RNN là mạng nơ-ron có chứa vòng lặp. Mạng này có khả năng lưu trữ thông tin, thông tin được Hình 1.6 Mô hình LSTM Mạng LSTM có thể bao gồm nhiều tế bào LSTM liên kết với nhau. Ý tưởng của LSTM Cổng quên: Có chức năng loại bỏ những thông tin không cần thiết nhận được khỏi Cổng đầu vào: Giúp sàng lọc những thông tin cần thiết để được thêm vào trạng thái tế Cổng đầu ra: Có chức năng xác định những thông tin nào từ các trạng thái tế bào bên trong được sử dụng như đầu ra. Trong quá trình thực hiện, 𝑠𝑡 và các giá trị đầu raℎ𝑡 được tính toán như sau: Ở bước đầu tiên, tế bào LSTM quyết định những thông tin cần được loại bỏ từ các trạng thái tế bào bên trong ở bước thời gian trước đó 𝑠𝑡-1. Giá trị 𝑓𝑡 của cổng quên tại bước thời gian t được tính toán dựa trên giá trị đầu vào hiện tại 𝑥𝑡, giá trị đầu ra ℎ𝑡-1 từ tế bào LSTM ở bước trước đó và độ lệch (bias) 𝑏𝑓 của cổng quên. Hàm sigmoid biến đổi tất cả các giá trị kích hoạt (activation value) về miền giá trị trong khoảng từ 0 và 1 theo công thức: 𝑓𝑡 = 𝜎(𝑊𝑓,𝑥𝑥𝑡 + 𝑊𝑓,ℎℎ𝑡-1 + 𝑏𝑓) Ở bước thứ 2, tế bào LSTM xác định những thông tin nào cần được thêm vào các trạng thái tế bào bên trong 𝑠𝑡. Bước này bao gồm hai quá trình tính toán đối với 𝑠𝑡 và 𝑓𝑡. 𝑠𝑡 biểu diễn những thông tin có thể được thêm vào các trạng thái tế bào bên trong: 𝑠𝑡 = 𝑡𝑎𝑛ℎ(𝑊𝑠,𝑥𝑥𝑡 + 𝑊𝑠,ℎℎ𝑡-1 + 𝑏𝑠) Giá trị 𝑖𝑡 của cổng đầu vào tại bước thời gian t được tính: 𝑖𝑡 = 𝜎(𝑊𝑖,𝑥𝑥𝑡 + 𝑊𝑖,ℎℎ𝑡-1 + 𝑏𝑖) Ở bước tiếp theo, giá trị mới của trạng thái tế bào bên trong𝑠𝑡được tính toán dựa trên kết quả thu được từ các bước trên: 𝑠𝑡 = 𝑓𝑡 ∗ 𝑠𝑡-1 + 𝑖𝑡 ∗ 𝑠𝑡 Cuối cùng, giá trị đầu ra ℎ𝑡: 𝑜𝑡 = 𝜎(𝑊𝑜,𝑥𝑥𝑡 + 𝑊𝑜,ℎℎ𝑡-1 + 𝑏𝑜) ℎ𝑡 = 𝑜𝑡 ∗ 𝑡𝑎𝑛ℎ(𝑠𝑡) Trong đó: 𝑊𝑠 ,𝑥, 𝑊𝑠,ℎ, 𝑊𝑓,𝑥, 𝑊𝑓,ℎ, 𝑊𝑖,𝑥, 𝑊𝑖,ℎ là các ma trận trọng số trong mỗi tế bào LSTM. 𝑏𝑓 , 𝑏𝑠, 𝑏𝑖, 𝑏𝑜 là các vector bias. KẾT QUẢ THỰC NGHIỆM
|