Khoa học dữ liệu gầnForm: Khám phá các đơn vị lặp lại trong RNN


Đặng Vàng Anh
1 năm trước
Hữu ích 6 Chia sẻ Viết bình luận 0
Đã xem 9022

Tự động hoàn tất: Một ứng dụng ví dụ cho thấy cách một mạng thần kinh tái phát đơn giản sử dụng thông tin trong quá khứ và hiểu từ tiếp theo sẽ là một khu vực.

Giới thiệu

Những tiến bộ gần đây trong nhận dạng chữ viết tay, nhận dạng giọng nóidịch máy chỉ có một vài ngoại lệ (như  ở đây  và  ở đây ) được dựa trên các mạng thần kinh tái phát.

Mạng lưới thần kinh

Mạng thần kinh tái phát là, đủ vui, là một loại mạng thần kinh. Mạng lưới thần kinh đã có từ ít nhất năm 1975 nhưng trong những năm gần đây đã có sự trở lại và trở nên rất phổ biến. Điều này có thể là do những tiến bộ trong lập trình GPU Mục đích chung (GPGPU), cung cấp các tài nguyên tính toán để đào tạo chúng và các bộ dữ liệu lớn hơn cung cấp đủ dữ liệu để đào tạo các mạng lớn.

Nếu bạn không quen thuộc với các mạng thần kinh, bạn nên trở nên ít nhất một chút quen thuộc. Ngày nay, có rất nhiều nguồn để học hỏi. Cuốn sách  Neural Networks và Deep Learning  của Michael Nielsen khá dễ dàng để bắt đầu -  Chương 2  sẽ cung cấp hầu hết các nền tảng cần thiết. Nếu bạn tò mò hơn,  cuốn sách Deep Learning  của Goodfellow et al. rộng rãi hơn nhiều; Chương 5  nên là một khởi đầu tốt.

Để giới thiệu ngắn gọn, mạng lưới thần kinh vanilla về cơ bản bao gồm hai thứ: tổng và hàm phi tuyến tính, giống như  hàm sigmoid . Trong ký hiệu ma trận, điều này có thể được viết là:

... Trong đó  x  là đầu ra.

Trong bài viết này, đầu ra là về xác suất. Để biến một cái gì đó thành xác suất,  chức năng Softmax  có thể được sử dụng.

Vấn đề ghi nhớ

Các ví dụ được đề cập trước đó có thể sử dụng các kỹ thuật bổ sung như cơ chế chú ý để làm việc với sự liên kết không xác định giữa nguồn và chuỗi mục tiêu.

Tuy nhiên, nền tảng cho các mạng này vẫn là mạng thần kinh tái phát. Tương tự, một thách thức chung cho nhiều ứng dụng này là khiến mạng ghi nhớ nội dung trong quá khứ từ các chuỗi đầu vào và sử dụng điều này để hiểu theo ngữ cảnh sau này trong chuỗi.

Vấn đề ghi nhớ này là những gì được khám phá trong bài viết này. Cuối cùng, bài viết này không đi sâu vào chi tiết về cách xử lý sự liên kết không xác định mà tập trung vào các vấn đề mà sự liên kết được biết đến và khám phá vấn đề ghi nhớ cho những vấn đề đó. Điều này được lấy cảm hứng rất nhiều từ bài báo gần đây về LSTM Nested , cũng được thảo luận trong bài viết này.

Đơn vị định kỳ

Mạng thần kinh tái phát (RNNs) nổi tiếng và được  giải thích kỹ lưỡng trong tài liệu . Để giữ cho nó ngắn, các mạng thần kinh tái phát cho phép bạn mô hình một chuỗi các vectơ. Các RNN thực hiện điều này bằng cách lặp qua chuỗi, trong đó mỗi lớp sử dụng đầu ra từ cùng một lớp trong lần lặp "thời gian" trước đó, kết hợp với đầu ra từ lớp trước trong cùng một lần lặp "thời gian".

Về lý thuyết, loại mạng này cho phép nó trong mỗi lần lặp để biết về mọi phần của chuỗi trước đó.

Mạng thần kinh tái phát, như được sử dụng trong một ví dụ tự động hoàn thành. Điều này cho thấy làm thế nào mạng, về lý thuyết, biết về mọi phần của chuỗi trước đó.

Đưa ra một chuỗi đầu vào:

Một mô hình như vậy có thể được biểu diễn bằng cách sử dụng bộ phương trình sau:

Lưu ý cách đầu ra từ lần lặp trước và đầu ra từ lớp trước trong cùng lần lặp được kết hợp lại được trừu tượng hóa.

Đối với một mạng lưới thần kinh tái phát vanilla, đơn vị tái phát:

Là:

Vấn đề Gradient biến mất

Mạng lưới thần kinh sâu có thể gặp phải vấn đề về độ dốc biến mất trong đó độ dốc được sử dụng trong tối ưu hóa trở thành rất nhỏ. Điều này là do  delta  sử dụng trong lan truyền ngược kết thúc lên được multiplicatively tùy thuộc vào  delta  của lớp tiếp theo.

Vấn đề này có thể được giảm thiểu thông qua việc khởi tạo cẩn thận các trọng số:

Bằng cách chọn chức năng kích hoạt  σ  như Đơn vị tuyến tính chỉnh lưu (ReLU) hoặc thêm các kết nối còn lại .

Độ dốc biến mất: Trường hợp sự đóng góp từ các bước trước trở nên không đáng kể.

Trong các mạng thần kinh tái phát cổ điển, vấn đề này trở nên tồi tệ hơn nhiều do sự phụ thuộc thời gian, vì sự phụ thuộc thời gian về cơ bản mở ra thành một mạng lưới thần kinh sâu vô hạn.

Một cách trực quan để xem vấn đề này là mạng tái phát vanilla buộc phải cập nhật trạng thái:

Bản cập nhật bắt buộc này là những gì khóa học vấn đề độ dốc biến mất. Bản cập nhật bắt buộc này cũng không đủ vì dữ liệu đầu vào không liên quan, chẳng hạn như bỏ qua các từ, làm mờ thông tin quan trọng từ các lần lặp trước.

Bộ nhớ ngắn hạn

LSTM: (Bộ nhớ ngắn hạn dài): Cho phép ghi nhớ dài hạn bằng cách kiểm tra bản cập nhật của nó, từ đó giải quyết vấn đề độ dốc biến mất.

Đơn vị Bộ nhớ ngắn hạn dài (LSTM) thay thế đơn vị RNN \ mathrm {RNN} đơn giản từ trước đó. Mỗi đơn vị LSTM chứa một vô hướng bộ nhớ duy nhất có thể được bảo vệ hoặc ghi vào, tùy thuộc vào cổng đầu vào và quên. Cấu trúc này đã được chứng minh là rất mạnh mẽ trong việc giải quyết các vấn đề tuần tự phức tạp . LSTM nổi tiếng và  được giải thích kỹ lưỡng trong tài liệu  và do đó không được thảo luận ở đây. Tuy nhiên, vì nó đóng một phần quan trọng trong đơn vị LSTM lồng nhau, điều đó sẽ được thảo luận sau. Phương trình của nó được đề cập ở đây.

Các chức năng kích hoạt cổng:

Thường là chức năng kích hoạt Sigmoid, trong khi:

Thường là tanh ( ).

LSTM lồng nhau

LSTM lồng nhau: Làm cho cập nhật ô phụ thuộc vào một đơn vị LSTM khác. Giả sử, điều này cho phép bộ nhớ dài hạn hơn so với xếp chồng các lớp LSTM.

Mặc dù đơn vị LSTM và GRU giải quyết vấn đề độ dốc biến mất ở mức độ lý thuyết, việc ghi nhớ dài hạn vẫn tiếp tục là một thách thức trong các mạng thần kinh tái phát.

Có những lựa chọn thay thế cho LSTM, phổ biến nhất là Đơn vị tái phát Gated (GRU). Tuy nhiên, GRU không nhất thiết phải cung cấp bối cảnh dài hạn tốt hơn, đặc biệt là nó giải quyết vấn đề độ dốc biến mất mà không sử dụng bất kỳ bộ nhớ trong nào.

Đơn vị LSTM Nested cố gắng giải quyết việc ghi nhớ dài hạn theo quan điểm thực tế hơn. Trong đó đơn vị LSTM cổ điển giải quyết vấn đề độ dốc biến mất bằng cách thêm bộ nhớ trong và GRU cố gắng trở thành giải pháp nhanh hơn LSTM bằng cách không sử dụng bộ nhớ trong, LSTM Nested đi theo hướng ngược lại với GRU, vì nó thêm bộ nhớ bổ sung vào đơn vị .

Ý tưởng ở đây là việc thêm bộ nhớ bổ sung cho đơn vị cho phép ghi nhớ lâu dài hơn.

Bộ nhớ bổ sung được tích hợp bằng cách thay đổi cách giá trị ô:

Đã cập nhật. Thay vì xác định cập nhật giá trị ô là:

Nó sử dụng một đơn vị LSTM khác:

Lưu ý rằng các biến được xác định trong LSTM ( , ) khác với các biến được xác định bên dưới. Kết quả cuối cùng là một NLSTM ( , ) đơn vị có hai trạng thái bộ nhớ.

Tập hợp đầy đủ các phương trình sau đó trở thành:

Giống như trong vanilla LSTM, các chức năng kích hoạt cổng:

Thường là chức năng kích hoạt Sigmoid. Tuy nhiên, chỉ có

Được đặt thành tanh ( ), trong khi:

Chỉ là chức năng nhận dạng; mặt khác, hai hàm kích hoạt phi tuyến tính sẽ được áp dụng trên cùng một vô hướng mà không có bất kỳ thay đổi nào, ngoại trừ việc nhân với cổng đầu vào. Các chức năng kích hoạt cho LSTM ( , ) vẫn giữ nguyên.

Sự trừu tượng hóa, về cách kết hợp đầu vào với giá trị ô, cho phép rất linh hoạt. Sử dụng trừu tượng này, nó không phải là chỉ có thể bổ sung thêm một trạng thái bộ nhớ trong nhưng LSTM nội ( , ) đơn vị đệ quy có thể được thay thế như nhiều NLSTM nội ( , ) đơn vị như ai muốn, qua đó bổ sung thậm chí nội bộ hơn ký ức.

Từ quan điểm lý thuyết, việc đơn vị LSTM lồng nhau có cải thiện bối cảnh dài hay không là không thực sự rõ ràng. Về mặt lý thuyết, đơn vị LSTM giải quyết vấn đề độ dốc biến mất và một mạng lưới các đơn vị LSTM đã hoàn tất. Về lý thuyết, một đơn vị LSTM phải đủ để giải quyết các vấn đề đòi hỏi phải ghi nhớ lâu dài.

Điều đó đang được nói, thường rất khó để đào tạo các mạng thần kinh tái phát dựa trên LSTM và GRU. Những khó khăn này thường đi xuống độ cong của chức năng mất và có thể LSTM Nested cải thiện độ cong này và do đó dễ tối ưu hóa hơn.

So sánh các đơn vị định kỳ

So sánh các đơn vị lặp lại khác nhau không phải là một nhiệm vụ tầm thường. Các vấn đề khác nhau đòi hỏi sự hiểu biết theo ngữ cảnh khác nhau và do đó đòi hỏi ghi nhớ khác nhau.

Một vấn đề tốt để phân tích sự hiểu biết theo ngữ cảnh nên có đầu ra diễn giải nhân văn và phụ thuộc cả vào ghi nhớ dài hạn và ngắn hạn.

Để kết thúc này, vấn đề tự động hoàn thành được sử dụng. Mỗi ký tự được ánh xạ tới một mục tiêu đại diện cho toàn bộ từ. Để làm cho nó thêm khó khăn, không gian dẫn đến từ cũng nên ánh xạ tới từ đó. Văn bản lấy từ  bộ dữ liệu text8 đầy đủ  , trong đó mỗi quan sát bao gồm tối đa 200 ký tự và được đảm bảo không chứa các từ một phần. 90% các quan sát được sử dụng cho đào tạo, 5% cho xác nhận và 5% cho kiểm tra.

Từ vựng đầu vào là az, dấu cách và ký hiệu đệm. Từ vựng đầu ra bao gồm 2 ^ {14} = 16384214 = 16384 từ thường xuyên nhất và hai ký hiệu bổ sung: một cho đệm và một cho các từ chưa biết. Mạng không bị phạt vì dự đoán đệm và từ không xác định sai.

Các mô hình GRU và LSTM mỗi lớp có hai lớp 600 đơn vị. Tương tự, mô hình LSTM Nested có một lớp 600 đơn vị nhưng có 2 trạng thái bộ nhớ trong. Ngoài ra, mỗi mô hình có một lớp nhúng đầu vào và một lớp dày đặc cuối cùng để phù hợp với kích thước từ vựng.

Cấu hình mô hình: Hiển thị số lượng lớp, đơn vị và tham số cho từng mô hình.

Có 508.583 trình tự trong tập dữ liệu huấn luyện và kích thước lô 64 quan sát được sử dụng. Một lần lặp duy nhất của toàn bộ tập dữ liệu sau đó tương ứng với 7.946 epoch, đủ để đào tạo mạng; do đó, các mô hình chỉ được đào tạo cho 7.946 kỷ nguyên. Đối với đào tạo, tối ưu hóa Adam được sử dụng với các tham số mặc định.

Đào tạo mô hình: Hiển thị tổn thất đào tạo và mất xác nhận cho các mô hình GRU, LSTM và LSTM lồng nhau khi đào tạo về vấn đề tự động hoàn thành.

Kiểm tra mô hình: Hiển thị tổn thất kiểm tra và độ chính xác cho các mô hình GRU, LSTM và LSTM lồng nhau về vấn đề tự động hoàn tất.

Như đã thấy từ các kết quả, các mô hình nhanh hơn hoặc bằng nhau. Đáng ngạc nhiên, LSTM Nested không tốt hơn các mô hình LSTM hoặc GRU. Điều này hơi mâu thuẫn với kết quả tìm thấy trong bài báo LSTM của Nested , mặc dù họ đã thử nghiệm mô hình về các vấn đề khác nhau và do đó, kết quả không thể so sánh chính xác. Tuy nhiên, người ta vẫn mong đợi mô hình LSTM của Nested sẽ hoạt động tốt hơn cho vấn đề này, trong đó việc ghi nhớ dài hạn rất quan trọng đối với sự hiểu biết theo ngữ cảnh.

Một kết quả bất ngờ là mô hình LSTM Nested ban đầu hội tụ nhanh hơn nhiều so với mô hình LSTM và GRU. Điều này, kết hợp với hiệu suất kém hơn, chỉ ra rằng LSTM Nested tối ưu hóa chuyển tiếp đến mức tối thiểu cục bộ.

Phần kết luận

Mô hình LSTM Nested không cung cấp bất kỳ lợi ích nào so với mô hình LSTM hoặc GRU. Điều này cho thấy, ít nhất là đối với ví dụ tự động hoàn thành, không có mối liên hệ nào giữa số lượng trạng thái bộ nhớ trong và khả năng ghi nhớ và sử dụng bộ nhớ đó theo ngữ cảnh.

Lời cảm ơn

Rất cám ơn các tác giả của bài báo LSTM Nested ban đầu , Joel Ruben, Antony Moniz và David Krueger. Mặc dù những phát hiện của chúng tôi không giống nhau, nhưng họ đã truyền cảm hứng cho phần lớn bài viết này và cho thấy rằng thứ gì đó được sử dụng như đơn vị tái phát vẫn là một lĩnh vực nghiên cứu mở.

Hữu ích 6 Chia sẻ Viết bình luận 0
Đã xem 9022