I. Giới thiệu
Để mô tả các vấn đề trong toán học, vật lý, biểu thức toán học là vô cùng cần thiết. Cùng với sự trừu tượng của kiến thức, các biểu thức toán học cũng vô cùng trừu tượng đối với học máy với những khó khăn như: cấu trúc 2 chiều của biểu thức, sự khó khăn tự nhiên khi nhận dạng chữ viết tay và các biến thể của kí tự toán học.
Nhận dạng chữ viết tay bao gồm 2 vấn đề chính:
- Nhận dạng kí tự
- Nhận dạng cấu trúc
Có khá nhiều cách giải quyết 2 vấn đề trên nhưng đều tồn tại 1 số hạn chế như:
- Phân đoạn kí tự toán học
- Phân tích cấu trúc thường phụ thuộc vào cấu trúc 2 chiều không có ngữ pháp cụ thể
- Sự phức tạp của thuật toán tăng dần theo kích thước của biểu thức
Trong bài viết này, mình sẽ giới thiệu mô hình mạnh và tốt trong bài toán nhận diện các biểu thức toán học được cải tiến dựa trên mô hình WAP.
II. Phương pháp
Mô hình sử dụng có 3 mô-đun chính: DenseNet, mô hình attention cơ bản gồm encoder-decoder và cuối cùng là Multi-Scale Attention with Dense Encoder
1. Dense Encoder
Với khả năng feature extraction tốt với ưu thế truyền tải gradient, DenseNet thể hiện xuất sắc trong bài toán Image Classification. Ý tưởng chính của DenseNet là sử dụng output của lớp trước làm input của các lớp sau. Dưới đây là ví dụ 1 mô hình DenseBlock:
Và mô hình 1 DenseNet hoàn chỉnh:
Như cấu trúc ta có thể thấy DensetNet có thành phần chính là DenseBlock và kết nối chúng lại với nhau là các lớp chuyển tiếp và thay đổi feature-map bằng lớp Convolution hoặc Pooling.
Vì DenseNet là sự kết hợp rất nhiều các lớp Convolution, gọi là hàm tích chập của lớp thứ , thì ta được output của lớp thứ được biểu diễn dưới dạng:
Tại đó:
- là output của các lớp thứ
- ";" là concat các feature-map
Cấu trúc đặc biệt với các kết nối được lặp lại cho phép mô hình sử dụng lại các features được tính toán ở các lớp trước làm tăng khả năng trích xuất thông tin từ bức ảnh, đồng thời tăng cường khả năng truyền gradient trong mạng. Để hiểu rõ hơn về DenseNet, các bạn đọc tại đây.
2. Decoder
Trong decoder, mô hình sử dụng GRU vì GRU là phiên bản nâng cấp của RNN () đồng thời GRU làm giảm vanishing và exploding gradient (Thực tế thì....). Với đầu vào , output được tính bởi:
và hàm GRU được tính như sau:
- Update Gate (Cổng cập nhật): Giúp mô hình chọn lọc được lượng thông tin tại time step (t - 1) để truyền đến time step t, đồng thời còn làm giảm hiện tượng vanishing gradient trong mạng RNN
- Reset Gate (Cổng cài đặt lại): Tương tự như Update Gate, chỉ khác weight và mức sử dụng
- Current memory content (Nội dung nhớ hiện tại): Xác định các cổng sẽ ảnh hưởng đến output tại time step t như thế nào
- Final memory at current time step (Bộ nhớ tại thời điểm hiện tại): Xác định toàn bộ thông tin tại time step t để truyền tiếp đi
trong đó:
- : Hàm kích hoạt sigmoid
- : Hàm kích hoạt tanh
- : toán tử element-wise
Giả sử đầu ra của DenseNet là 1 mảng 3 chiều (C x W x H), gọi L = W x H, ta được 1 lưới 2 chiều (C x L) có L phần tử, mỗi phần tử có C chiều, ứng với local region trên ảnh ban đầu
Qua mạng GRU, ta sẽ sinh ra được chuỗi LaTex ứng với biểu thức toán đầu vào. Ouput là một chuỗi các kí tự one-hot encoded:
Với K là tổng số kí tự trong từ điển được định sẫn và T là đọ dài của xâu LaTex
Vì độ dài của A và Y là không xác định (Không đoán trước được), nên cần cố định độ dài vector đầu ra tại mỗi step t, gọi là context vector () , vector c_t được tính bằng:
là hệ số attention, giúp cho mô hình biết được chỗ nào trên ảnh cần phải tập trung vào để dự đoán kí tự tiếp theo, đồng thời tăng trọng số cho vectors
Xác suất mỗi kí tự dự đoán được tính bởi context vector , current state và kí tự được dự đoán từ trước :
Với:
- X: Biểu thức toán đầu vào
- f: Hàm kích hoạt softmax
- h: Hàm kích hoạt maxout
- E: Embedding matrix
- Gọi m, n là số chiều của embedding và state GRU hiện tại, khi đó:
3. Multi-Scale Attention with Dense Encoder
3.1 Multi-Scale Dense Encoder
Mô hình multi-scale attention được mở rộng từ mô hình sigle-scale dense encoder. Như trong hình minh họa, ngoài ouput low_resolution A của nhánh chính thì còn có nhánh tạo ra output high-resolution B được tách từ nhánh chính ngay trước lớp pooling cuối, được gọi là nhánh multi-scale. Khi đó, output tại B sẽ là mảng 3 chiều (), và là một lưới có phần tử:
với
3.2 Multi-Scale Attention Model
Ở đây, mô hình sử dụng 2 lớp GRU 1 chiều để tính và multi-scale context vector , được sử dụng để tính xác suất của kí tự đc predict (Công thức đóng khung :v). Sau đấy, sử dụng 2 mô hình single-scale coverage based attention để sinh ra low-resolution context vector và high-resolution context vector. Vì 2 context vector có cùng độ dài, nên mô hình ghép 2 vector lại để tạo multi-scale context vector:
Với:
- s_{t-1} : State trước
- : Predicted của state hiện tại
- : Low-resolution context vector của decoding tại time step t
- : High-resolution context vector của decoding tại time step t
- : Mô hình single-scale coverage based attention
III. Kết luận
Vậy là mình đã giới thiệu xong mô hình Dense + MSA cho bài toán nhận dạng biểu thức toán học viết tay dựa trên paper Multi-Scale Attention with Dense Encoder for Handwritten Mathematical Expression Recognition. Cảm ơn các bạn đã dành thời gian theo dõi bài viết của mình. Bài viết vẫn còn nhiều sai sót, mình hy vọng mọi người góp ý để có thể cải thiện bài viết tốt hơn.
Tài liệu tham khảo
- https://arxiv.org/pdf/1801.03530.pdf?fbclid=IwAR03pT8no3W13_wpVlq18xVC1B2eIEp5LXbZOhtbyCr1kFgFwHTRYB_PcOA
- https://arxiv.org/pdf/1608.06993.pdf
- http://home.ustc.edu.cn/~xysszjs/paper/PR2017.pdf
- https://arxiv.org/pdf/1601.04811v6.pdf
- https://www.noron.vn/post/toan-bo-ve-mang-gru-1494wsylpn80d
- https://blog.chappiebot.com/hướng-dẫn-chi-tiết-về-cơ-chế-của-lstm-và-gru-trong-nlp-a1bd9346b209