Một cell LSTM

Một phần của tài liệu Xây dựng mô hình nhận dạng chữ viết tay trong các biểu mẫu có bố cục cố định (Trang 37 - 39)

6 Ứng dụng

2.13Một cell LSTM

Dấu ⊙ biểu thị phép tích theo phần tử tương ứng (entrywise product hay các tên gọi khác làHadamard product,Schur product). Lưu ý rằng tất cả các toán hạng trong các biểu thức trên đều ở dạng vector. Cụ thể:

• x(t) ∈Rd: vector đầu vào tại thời điểm t.

• h(t) ∈Rh: vector trạng thái truyền đi giữa các cell tại thời điểm t.

• c(t) ∈Rh: vector trạng thái của cell tại thời điểm t.

• f(t), i(t), o(t) ∈Rh: tương ứng là các vector kích hoạt cổng forget, đầu vào, output tại thời điểm t.

ã W Rhìd, U Rhìd, bRh: ma trn trng s, vector bias mà mơ hình cần học9.

• d, h: tương ứng là số đặc trưng của đầu vào và của các trạng thái ẩn. • σg: hàm kích hoạt sigmoid dành cho các cổng.

• σc: hàm kích hoạt tanh dành cho cell state. • σh: hàm kích hoạt tanh dùng cho hidden state.

Bây giờ nhìn vào sự khác biệt giữa cơng thức cập nhật trạng thái cell của LSTM (2.14) và công thức (2.10), ta thấy LSTM có bổ sung thêm một lượng f(t)⊙c(t−1). Cho nên tương tự như ở Tiểu mục 2.3.1, ta cần ước lượng đại lượng sau:

∂c(t) ∂c(t−1) = ∂ σc Wcx (t)+Uch(t−1)+bc⊙i(t) ∂c(t−1) + ∂ f (t)⊙c(t−1) ∂c(t−1) (2.16)

Kiến thức nền tảng 25

Đạo hàm của đại lượng bên trái được tính tương tự như trường hợp của RNN thông thường, và khi t tăng cũng sẽ gặp những vấn đề tương tự như thế. Tuy nhiên với đại lượng cịn lại:

∂ f(t)⊙c(t−1)

∂c(t−1) =f(t) (2.17) thì ta lại có f(t) là output của hàm sigmoid, có giá trị gần với 0 và 1. Do đó, nếu f(t)

cứ nhận giá trị gần bằng 1, thì mơ hình sẽ có khả năng tránh triệt tiêu đạo hàm. Hay nói cách khác, nếu cổng forget cịn cho phép đi qua thì thơng tin cịn được ghi nhớ. LSTM được thiết kế ra vì mục đích này, giải quyết bài tốn triệt tiêu đạo hàm của RNN.

Tuy nhiên có hai điểm cần lưu ý đối với mơ hình LSTM. Thứ nhất, LSTM chỉ được thiết kế để giải quyết bài tốn triệt tiêu đạo hàm chứ khơng hướng đến giải quyết bài toán bùng nổ đạo hàm. Mặc dù trên lý thuyết là như vậy nhưng trong hầu hết trường hợp nó vẫn hoạt động tốt. Thứ hai, LSTM chỉ giảm thiểu đáng kể bài toán triệt tiêu đạo hàm chứ khơng giải quyết hồn tồn nó. Vì đầu ra f(t) của hàm sigmoid không bao giờ đạt được giá trị 1 nên khi time-step t tăng lên thật lớn (vài nghìn) thì vấn đề triệt tiêu đạo hàm vẫn xuất hiện như thường. Thế nhưng đối với đặc trưng bài toán nhận diện chữ viết, time-stept sẽ không đạt đến giá trị đó.

2.4 Thư viện và cơng cụ2.4.1 PyTorch 2.4.1 PyTorch

PyTorch là một thư viện mã nguồn mở dựa trên Python, được phát triển và duy trì bởi nhóm nghiên cứu về trí tuệ nhân tạo của Facebook. Đây là một nền tảng nghiên cứu học sâu cực kỳ linh hoạt và mạnh mẽ, có khả năng thay thế NumPy1 để tận dụng sức mạnh của GPU. PyTorch có khả năng tự động ghi lại các tốn tử đã xử lý vào một đồ thị tính tốn trong bước lan truyền thuận (forward), sau đó tái thực thi các tốn tử này để tính tốn đạo hàm một cách nhanh chóng ở bước lan truyền ngược (backward). Kỹ thuật này giúp PyTorch trở nên hiệu quả trong việc xây dựng một mạng neuron vì nó giúp tiết kiệm thời gian nhờ vào việc tính tốn đạo hàm các tham số trước khi thực hiện bước forward. Với phiên bản mới nhất PyTorch cung cấp khả năng thực thi dựa trên đồ thị, huấn luyện phân tán, triển khai di động (mobile deployment) và lượng tử hóa. PyTorch được viết bằng ngơn ngữ C++, CUDA, và Python, được tối ưu hố hồn tồn cho các tác vụ học sâu trên cả CPU và GPU như xử lý hình ảnh, huấn luyện các mạng học sâu với khả năng huấn luyện song song trên nhiều GPU. Với các tính năng phong phú, linh hoạt, và một cộng đồng hỗ trợ mạnh mẽ, chúng tôi quyết định sử dụng PyTorch để làm nền tảng xây dựng và phát triển hệ thống trong luận văn này.

Kiến thức nền tảng 26

Một phần của tài liệu Xây dựng mô hình nhận dạng chữ viết tay trong các biểu mẫu có bố cục cố định (Trang 37 - 39)