Mẹo nhỏ: Để tìm kiếm chính xác các tác phẩm của Phebinhvanhoc.com.vn, hãy search trên Google với cú pháp: "Từ khóa" + "phebinhvanhoc". (Ví dụ: tác phẩm chí phèo phebinhvanhoc). Tìm kiếm ngay
342 lượt xem

[RNN] LSTM là gì?

Bạn đang quan tâm đến [RNN] LSTM là gì? phải không? Nào hãy cùng PHE BINH VAN HOC theo dõi bài viết này ngay sau đây nhé!

Video đầy đủ [RNN] LSTM là gì?

Bài viết này được dịch từ blog của colah.

lstm là một mạng rnn cải tiến giúp giải quyết vấn đề rnn nhớ các bước dài. Có rất nhiều bài viết về lstm, nhưng có lẽ được nhắc đến nhiều nhất và dễ hiểu nhất là christopher olah. Vì vậy mình quyết định dịch lại cho mình để hiểu thêm và cũng cho tất cả những ai đang học.

Mọi người không phải lúc nào cũng bắt đầu lại từ đầu. Khi bạn đang đọc bài viết này, bạn đang hiểu từng từ ở đây dựa trên những từ bạn đã đọc trước đó, thay vì đọc hết nó và sau đó suy nghĩ lại những từ bạn đã đọc từ đầu. Tức là bộ não có trí nhớ để lưu lại những gì đã xảy ra trước đó.

Tuy nhiên, các mô hình mạng nơ-ron truyền thống không thể làm được điều này, đây có thể được coi là một nhược điểm lớn của mạng nơ-ron truyền thống. Ví dụ: nếu bạn muốn phân loại các cài đặt xuất hiện nhất quán trong một bộ phim, thì việc hiểu các tình huống trong một bộ phim sẽ không rõ ràng mà phụ thuộc vào các tình huống trước đó nếu bạn sử dụng mạng nơ-ron truyền thống.

Mạng nơ-ron tuần hoàn được sinh ra để giải quyết vấn đề này. Mạng chứa các vòng bên trong cho phép lưu thông tin.

Hình trên mô tả một đoạn của mạng nơ-ron tuần hoàn $ a $ với đầu vào $ x_t $ và đầu ra $ h_t $. Một vòng lặp cho phép thông tin chuyển giữa các bước trong mạng nơ-ron.

Các vòng lặp này làm cho RNN trông lộn xộn. Tuy nhiên, nếu bạn để ý một chút, nó không khác lắm so với một mạng nơ-ron thuần túy. Một mạng nơ-ron tuần hoàn có thể được coi là nhiều bản sao của cùng một mạng, trong đó mỗi đầu ra của mạng này là đầu vào của mạng kia. Nói thì hơi lộn xộn nhưng hãy xem phần mô tả bên dưới:

Chuỗi lặp lại mạng này là độ phân giải của các mạng nơ-ron lặp lại và các chu kỳ khiến chúng tạo thành một chuỗi danh sách các mạng được sao chép. Bạn có nghĩ rằng nó là một mạng nơ-ron thuần túy? Không có gì khác biệt, phải không? Các nút của mạng vẫn nhận đầu vào và có đầu ra giống như một mạng nơron thuần túy.

Trong vài năm qua, ứng dụng của rnn đã mang lại kết quả đáng kinh ngạc trong nhiều lĩnh vực: nhận dạng giọng nói, mô hình ngôn ngữ, dịch máy, mô tả hình ảnh … danh sách này tiếp tục tăng lên. Andrej karpathy đã đề cập đến một số kết quả do rnn mang lại trong bài viết này, vì vậy tôi sẽ không nhắc lại chúng ở đây. Nhưng tôi vẫn muốn nói rằng chúng thật tuyệt vời.

Đằng sau thành công này có sự đóng góp của lstm. lstm là một loại mạng nơ-ron tuần hoàn đặc biệt tốt hơn mạng hồi quy thuần túy đối với nhiều vấn đề. Hầu hết các kết quả thú vị thu được từ các mạng rnn được sử dụng với lstm. Trong bài viết này, chúng ta sẽ khám phá mạng lstm là gì.

Một trong những điểm nổi bật của rnn là kết nối thông tin trước đó để dự đoán suy nghĩ hiện tại. Điều này tương tự như sử dụng các cảnh trước đó trong một bộ phim để hiểu cảnh hiện tại. Nếu rnn có thể làm điều này, chúng sẽ rất hữu ích, nhưng chúng có thể không? Câu trả lời tùy thuộc vào tình huống.

Đôi khi chỉ cần nhìn vào thông tin chúng tôi có là đủ để hiểu chuyện gì đang xảy ra. Ví dụ ta có câu: “lucky cloud in the sky” thì chúng ta chỉ cần đọc “lucky cloud in the sky” là biết từ tiếp theo là “thiên đường”. Trong trường hợp này, khoảng cách từ thông tin có sẵn cần thiết để đưa ra dự đoán là nhỏ, vì vậy rnn hoàn toàn có thể học được.

Nhưng trong nhiều trường hợp, chúng tôi buộc phải sử dụng nhiều ngữ cảnh hơn để suy luận. Ví dụ, dự đoán từ cuối cùng trong một đoạn văn: “Tôi lớn lên ở Pháp … Tôi nói thông thạo tiếng Pháp.”. Rõ ràng, thông tin gần (“Tôi nói trôi chảy”) chỉ có thể cho chúng ta biết rằng nó sẽ được theo sau bởi tên của một ngôn ngữ, không thể biết đó là ngôn ngữ nào. Nếu chúng ta muốn biết ngôn ngữ đó là gì, chúng ta cần thêm ngữ cảnh “Tôi lớn lên ở Pháp” để suy ra nó. Rõ ràng, khoảng cách thông tin có thể còn khá dài.

Thật không may, khi khoảng cách tăng lên, rnn bắt đầu không nhớ và không học được.

Rõ ràng là rnn về mặt lý thuyết có khả năng xử lý các phụ thuộc dài hạn. Chúng ta có thể xem xét và thiết lập các thông số để có thể giải quyết vấn đề này. Tuy nhiên, thật không may, trong thực tế, rnn dường như không thể học được những thông số này. Vấn đề này đã được hocreiter (1991) [người Đức] và bengio et al. (1994), trong bài báo của mình, họ đã tìm ra lý do cơ bản khiến rnn không thể học.

XEM THÊM:  Giật lông mày phải liên tục báo điềm gì? Tốt hay xấu

Cảm ơn rất nhiều. Mặc dù vậy, lstm không gặp sự cố này!

Mạng Bộ nhớ Ngắn hạn Dài hạn), thường được gọi là lstm – là một dạng rnn đặc biệt có khả năng học các phụ thuộc phạm vi dài. lstm được phát triển bởi hocreiter & amp; schmidhuber (1997), và đã được nhiều người trong ngành cải tiến và quảng bá. Chúng rất hiệu quả trên nhiều vấn đề khác nhau nên dần trở nên phổ biến như ngày nay.

lstm được thiết kế để tránh các vấn đề với sự phụ thuộc dài hạn. Việc ghi nhớ thông tin trong một thời gian dài là thuộc tính mặc định của chúng, và chúng ta không cần phải đào tạo để ghi nhớ nó. Có nghĩa là, cấu trúc bên trong của nó đã có thể được ghi nhớ mà không cần bất kỳ sự can thiệp nào.

Mỗi mạng hồi quy có dạng một chuỗi các mô-đun lặp đi lặp lại của mạng nơ-ron. Sử dụng mạng rnn tiêu chuẩn, các mô-đun này có cấu trúc rất đơn giản, thường là $ tanh $.

lstm có cùng một lược đồ chuỗi, nhưng các mô-đun của nó có cấu trúc khác với mạng rnn tiêu chuẩn. Thay vì chỉ một lớp mạng nơ-ron, chúng có tới 4 lớp, tương tác với nhau theo một cách rất cụ thể.

Bây giờ, đừng lo lắng về chi tiết bên trong của chúng, chúng ta sẽ khám phá chi tiết chúng trong bước tiếp theo. Tất cả những gì bạn cần làm bây giờ là làm quen với các ký hiệu mà chúng tôi sẽ sử dụng bên dưới:

Trong sơ đồ trên, mỗi đường dẫn mang một vectơ từ đầu ra của một nút đến đầu vào của nút khác. Các số màu hồng đại diện cho các phép toán như phép cộng vectơ và các hộp màu vàng được sử dụng để học trong một mạng nơ-ron duy nhất. Các dòng hợp nhất cho biết hợp nhất và các dòng nhánh cho biết nội dung của chúng được sao chép và di chuyển đến những nơi khác nhau.

3.1. Ý tưởng cốt lõi của lstm

Chìa khóa của lstm là trạng thái ô – đường chạy qua đầu biểu đồ.

Trạng thái ô là một băng chuyền. Nó chạy qua tất cả các liên kết (các nút mạng) và chỉ tương tác tuyến tính một chút. Bằng cách này, thông tin có thể được thông qua một cách dễ dàng mà không sợ bị thay đổi.

lstm có thể xóa hoặc thêm thông tin cần thiết cho trạng thái của ô, được quản lý cẩn thận bởi các nhóm gọi là cổng.

Cổng là bộ lọc mà thông tin đi qua, chúng bao gồm các lớp mạng sigmoid và các phép nhân.

sigmoid sẽ xuất ra một số trong phạm vi $ [0, 1] $ mô tả lượng thông tin có thể được truyền qua. Khi đầu ra là $ 0, có nghĩa là không có thông tin nào đi qua nó và khi đầu ra là $ 1 $, có nghĩa là tất cả thông tin đều đi qua nó.

Một lstm bao gồm 3 cổng như vậy để duy trì và kiểm soát trạng thái của ô.

3.2. Bên trong lstm

Bước đầu tiên trong lstm là quyết định loại bỏ thông tin nào khỏi trạng thái ô. Quyết định này được thực hiện bởi một lớp sigmoid – được gọi là “lớp cổng quên”. Nó sẽ nhận dưới dạng đầu vào $ h_ {t-1} $ và $ x_t $ và xuất ra một số trong khoảng $ [0, 1] $ cho mỗi số ở trạng thái ô $ c_ {t-1} $. Đầu ra $ 1 $ có nghĩa là giữ tất cả thông tin, $ 0 $ có nghĩa là loại bỏ tập thông tin.

Quay lại ví dụ về mô hình ngôn ngữ dự đoán từ tiếp theo dựa trên tất cả các từ trước đó, đối với những vấn đề như vậy, trạng thái ô có thể mang thông tin về giới tính của một từ nhất định. Một ký tự giúp chúng ta sử dụng các đại từ nhân xưng chính xác. Tuy nhiên, chúng tôi không muốn nhớ giới tính của nhân vật nữa khi đề cập đến một người khác, vì nó không còn liên quan đến chủ đề mới này nữa.

Bước tiếp theo là quyết định thông tin mới nào chúng tôi sẽ lưu vào trạng thái ô. Điều này bao gồm 2 phần. Đầu tiên là sử dụng một lớp sigmoid được gọi là “lớp cổng đầu vào” để quyết định những giá trị nào cần cập nhật. Sau đó, có một lớp $ tanh $ tạo một vectơ có giá trị mới $ tilde {c_t} $ để thêm vào trạng thái. Trong bước tiếp theo, chúng tôi sẽ kết hợp hai giá trị này để tạo bản cập nhật trạng thái.

Ví dụ: đối với ví dụ về mô hình ngôn ngữ của chúng tôi, chúng tôi muốn thêm giới tính của ký tự mới này vào trạng thái ô và thay thế giới tính của ký tự trước đó.

Đã đến lúc cập nhật trạng thái ô cũ $ c_ {t-1} $ thành trạng thái mới $ c_t $. Những gì cần làm đã được quyết định trong các bước trước, vì vậy bây giờ chúng ta chỉ cần làm điều đó.

Chúng tôi nhân trạng thái cũ với $ f_t $ để xóa thông tin mà trước đây chúng tôi đã quyết định bỏ qua. Sau đó, thêm $ i_t * dấu ngã {c_t} $. Trạng thái mới có được này phụ thuộc vào cách chúng tôi quyết định cập nhật từng giá trị trạng thái.

XEM THÊM:  PPC là gì? Khác nhau giữa SEO và PPC

Trong suốt lớp học lập mô hình ngôn ngữ, chúng tôi đã xóa thông tin giới tính của các ký tự cũ và thêm thông tin giới tính của các ký tự mới mà chúng tôi đã quyết định ở các bước trước.

Cuối cùng, chúng ta cần quyết định đầu ra chúng ta muốn là gì. Giá trị đầu ra sẽ dựa trên trạng thái ô, nhưng sẽ được lọc thêm. Đầu tiên, chúng tôi chạy một lớp sigmoid để quyết định phần nào của trạng thái ô mà chúng tôi muốn xuất ra. Sau đó, chúng tôi cung cấp cho nó trạng thái ô thông qua hàm $ tanh $, giảm nó xuống khoảng $ [- 1, 1] $ và nhân với đầu ra của cổng sigmoid để có được kết quả chúng tôi muốn. ..

Sử dụng mô hình ngôn ngữ làm ví dụ, chỉ cần nhìn vào chủ đề, chúng ta có thể cung cấp thông tin về trạng từ sau. Ví dụ, nếu đầu ra của chủ ngữ là số ít hoặc số nhiều, thì chúng ta có thể biết trạng từ theo sau nó phải ở dạng nào.

Những gì chúng tôi vừa mô tả là một lstm rất phổ biến. Nhưng không phải tất cả các ltsm đều như vậy. Trên thực tế, các bài viết trên ltsm đều sử dụng một phiên bản hơi khác của mô hình ltsm tiêu chuẩn. Không có nhiều sự khác biệt, nhưng giúp giải quyết một số vấn đề về cấu trúc của ltsm.

Một dạng ltsm phổ biến được giới thiệu bởi gers & amp; Schmidhuber (2000) thêm “kết nối lỗ nhìn trộm”, cho phép lớp cổng nhận trạng thái ô làm đầu vào.

Hình ảnh trên mô tả các dòng được thêm vào tất cả các cổng, nhưng cũng có bài viết chỉ thêm một số cổng.

Một biến thể khác là kết nối hai cổng đầu vào và cổng loại trừ với nhau. Thay vì tách các quyết định loại trừ và thông tin mới được thêm vào, chúng tôi đã cùng nhau đưa ra quyết định. Chúng tôi chỉ loại bỏ thông tin khi chúng tôi thay thế bằng thông tin mới. Chúng tôi chỉ bao gồm thông tin mới khi chúng tôi loại bỏ một số thông tin cũ.

Một biến thể thú vị khác của lstm là đơn vị định kỳ định kỳ hoặc gru được giới thiệu bởi cho et al. (2014). Nó kết hợp cổng đầu vào và cổng loại trừ thành một “cổng cập nhật”. Nó cũng hợp nhất trạng thái ô và trạng thái ẩn với nhau, dẫn đến một thay đổi khác. Do đó, mô hình của chúng tôi sẽ đơn giản hơn mô hình lstm tiêu chuẩn và sẽ ngày càng trở nên phổ biến hơn.

Trên đây chỉ là một số biến thể được nhắc đến nhiều nhất, thực tế có rất nhiều biến thể khác nhau của lstm, chẳng hạn như deep-gated rnns của yao et al. (2015). Ngoài ra còn có các biến thể trong đó chiến lược xử lý sự phụ thuộc từ xa khá khác biệt, chẳng hạn như clockwork rnns của koutnik et al. (Năm 2014).

Nếu bạn muốn hiểu biến thể nào là tốt nhất và chúng khác nhau như thế nào, bạn có thể đọc bản so sánh tuyệt vời này của greff et al. (2015). Ngoài ra, jozefowicz et al. (2015) thậm chí đã thử hàng chục nghìn kiến ​​trúc rnn khác nhau và nhận thấy rằng một số trong số chúng hoạt động tốt hơn lstm về một số vấn đề.

Như tôi đã đề cập ở phần đầu, có thể thu được kết quả tích cực bằng cách sử dụng rnn. Đằng sau những thành tựu này là việc sử dụng lstm. Chúng thực sự hoạt động tốt hơn trên hầu hết các vấn đề!

Viết ra một tập hợp các công thức để tạo lstm khá khó hiểu. Nhưng hy vọng rằng qua các bước phân tích trong phần trình bày này có thể giúp bạn hiểu được chiến lược của lstm ở một mức độ nào đó.

lstm là một bước tiến lớn so với việc sử dụng rnn. Ý tưởng là cho phép tất cả các bước rnn truy xuất thông tin từ một tập thông tin lớn hơn. Ví dụ: nếu bạn sử dụng rnn để tạo mô tả cho hình ảnh, nó có thể dự đoán mô tả cho tất cả các từ đầu vào từ một phần của hình ảnh. Bằng chứng là xu, v.v. (2015) thực hiện chính xác điều đó. Hiện tại cũng có một số kết quả rất thú vị đang được chú ý và dường như có nhiều kết quả hơn những gì chúng ta biết.

Trọng tâm không giới hạn ở nhóm nghiên cứu rnn. Ví dụ lưới lstms từ kalchbrenner et al. (2015) dường như cũng có nhiều tiềm năng. Cũng có những người sử dụng rnn trong các mô hình sinh như gregor, v.v. (2015), General et al. (2015), hoặc Bayer & amp; osendorfer (2015) cũng rất thú vị. Vài năm trở lại đây là khoảng thời gian rất thú vị cho các mạng nơ-ron lặp lại, với nhiều hơn thế nữa sẽ xảy ra.

Như vậy trên đây chúng tôi đã giới thiệu đến bạn đọc [RNN] LSTM là gì?. Hy vọng bài viết này giúp ích cho bạn trong cuộc sống cũng như trong học tập thường ngày. Chúng tôi xin tạm dừng bài viết này tại đây.

Website: https://phebinhvanhoc.com.vn/

Thông báo: Phê Bình Văn Học ngoài phục vụ bạn đọc ở Việt Nam chúng tôi còn có kênh tiếng anh PhebinhvanhocEN cho bạn đọc trên toàn thế giới, mời thính giả đón xem.

Chúng tôi Xin cám ơn!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *