So sánh cơ chế kết nối đầy đủ, cục bộ và cục bộ chia sẻ trọng số

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 29)

6 Ứng dụng

2.5So sánh cơ chế kết nối đầy đủ, cục bộ và cục bộ chia sẻ trọng số

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

Ta nhận thấy kết nối cục bộ chia sẻ trọng số về bản chất là phép tích chập trong xử lý tín hiệu số. Đây chính là phép tốn tiền đề và đứng sau thành cơng của mạng neuron tích chập [7] (Convolutional Neural Network - CNN) trong các bài tốn thị giác máy tính.

Kiến trúc tổng quan của mạng neuron tích chập

Về cơ bản, một mạng CNN nhận đầu vào là tensor ảnh. Mạng này sẽ lần lượt biến đổi tensor đầu vào thơng qua các lớp ở nhóm lớp tích chập để rút trích tập đặc trưng ảnh. Cuối cùng thông qua các lớp kết nối đầy đủ (fully connected) và softmax để thực hiện quá trình phân loại. Lớp kết nối đầy đủ và softmax hồn tồn tương tự ở các mơ hình học sâu. Điểm đặc biệt tạo nên thành cơng của mạng neuron tích chập là nhóm lớp tích chập bao gồm:

• Lớp tích chập (convolution layer)

• Lớp gộp (pooling layer)

• Hàm kích hoạt (activation)

• Lớp chuẩn hóa (normalization layer)

Hình 2.6: Mơ hình tổng qt của mạng neuron tích chập (CNN)4

Lớp tích chập

Phép tích chập trong xử lý ảnh là phiên bản rời rạc của phép tích chập. Phép tích chập 2D nhận đầu vào là ảnh F và bộ lọc H (kích thước(2k+ 1)×(2k+ 1)). Kết quả của phép tích chập G được tính theo cơng thức (2.8).

G[i, j] = k X u=−k k X v=−k H[u, v]F[i−u, j−v] (2.8) 4 https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-n etworks-the-eli5-way-3bd2b1164a53

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

Phép tích chập có tính chất giao hốn do đó rất thích hợp khi xây dựng nhiều lớp tích chập nối tiếp nhau.

Về mặt trực quan, phép tích chập sử dụng một cửa sổ có kích thước nhỏ hơn nhiều so với ảnh (thường là ma trận 3×3 hoặc 5×5). Cửa sổ này sẽ xoay 1800 rồi trượt dọc theo hàng trên toàn bộ tấm ảnh. Tại mỗi bước dịch chuyển, G sẽ được tính bằng tổng của phép toán nhân hadamard giữa cửa sổ và vùng ảnh tương ứng (Hình 2.7).

Hình 2.7: Trực quan hóa phép tốn tích chập

Q trình hoạt động của lớp tích chập phụ thuộc vào một vài siêu tham số (hyper- parameter) như kích thước bộ lọc (kernel size), bước nhảy (stride) và kích thước vùng đệm (padding). Kích thước bộ lọc chính là kích thước cửa sổ, thường sẽ nhỏ hơn rất nhiều so với kích thước ảnh. Kích thước bộ lọc nên là số lẻ để vùng ảnh hưởng sau khi thực hiện sẽ cân bằng giữa các vùng lân cận. Bước nhảy định nghĩa tốc độ nhảy của bộ lọc theo hàng ngang và dọc. Bước nhảy càng lớn thời gian thực hiện phép tích chập càng nhanh. Tuy nhiên, nếu bước nhảy quá lớn sẽ dẫn đến mất mát thơng tin về mặt khơng gian. Kích thước vùng đệm là kích thước số hàng được thêm vàoF. Do khi thực hiện phép tích chập, kết quả sẽ bị mất một vài cột ở ngồi rìa nên việc thêm vùng đệm giúp bảo tồn kích thước sau khi thực hiện phép tích chập.

Khi làm việc với ảnh dưới dạng tensor như Hình 2.8, bộ lọc sẽ tự nhân bản theo chiều sâu bằng với kích thước tensor ảnh. Kết quả sau khi thực hiện phép tích chập là một ma trận đặc trưng ảnh. Với nhiều bộ lọc khác nhau sẽ cho ra nhiều ma trận đặc trưng ảnh khác nhau. Nhiệm vụ của mạng neuron tích chập là tìm tham số phù hợp trong mỗi bộ lọc.

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

Lớp gộp

Lớp gộp (pooling layer) có nhiệm vụ chắt lọc những thơng tin quan trọng từ đặc trưng ảnh đầu ra của lớp tích chập. Ngồi ra việc giảm kích thước đặc trưng ảnh cịn làm giảm độ phức tạp khi tính tốn, đặc biệt với ảnh đầu vào có kích thước lớn và góp phần kiểm sốt hiện tượng q khớp. Đây là lớp khơng có tham số học.

Có nhiều phương pháp để hiện thực lớp gộp. Trong đó, thường được sử dụng trong mạng neuron tích chập là gộp cực đại (max pooling) và gộp trung bình (average pooling).

Quá trình hoạt động của lớp gộp phụ thuộc vào hai siêu tham số là kích thước cửa sổ trượt và bước nhảy. Bước nhảyk xác định tốc độ nhảy của cửa sổ trượt theo hàng ngang và dọc. Ví dụ Hình 2.9, hai siêu tham số bước nhảy bằng 2, kích thước cửa sổ trượt là 2.

Hình 2.9: Ví dụ minh họa gộp cực đại và gộp trung bình5

Hàm kích hoạt

Tương tự ở các mơ hình học sâu, bản chất của phép tích chập là biến đổi tuyến tính nên ta cần hàm kích hoạt phi tuyến để bẻ gãy sự tuyến tính của đầu ra. Đây là hàm khơng có tham số học. Điểm đặc biệt khi làm việc với ảnh là yêu cầu về độ thưa. Nói cách khác, ta sẽ tập trung xử lý theo vùng nhỏ và loại bỏ phần lớn tín hiệu ở vùng khác. Do đó hàm ReLu được sử dụng rộng rãi trong mạng neuron tích chập vì tính thưa, bên cạnh tính đơn giản và giảm hiện tượng biến mất đạo hàm (vanishing gradient).

5

https://www.researchgate.net/figure/Example-of-max-pooling-and-average-pooling -operations-In-this-example-a-4x4-image-is_fig4_332092821

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

Lớp chuẩn hóa

Tương tự ở các mơ hình học sâu, đầu ra ở mỗi lớp sẽ khác nhau về miền giá trị. Lớp chuẩn hóa sẽ làm nhiệm vụ chuẩn hóa các giá trị đầu ra. Điều này làm tăng tốc độ hội tụ của mạng. Điểm khác biệt ở mạng neuron tích chập là đầu ra ở dạng tensor. Do đó ta sẽ có một vài phép chuẩn hóa đặc trưng (Hình 2.10) chuẩn hóa khối (batch normalization), chuẩn hóa lớp (layer normalization), chuẩn hóa thể hiện (instance normalization) hay chuẩn hóa nhóm (group normalization). (adsbygoogle = window.adsbygoogle || []).push({});

Hình 2.10: So sánh các lớp chuẩn hóa thường dùng trong mạng neuron tích chập6

2.3 Mạng neuron hồi quy

Mạng neuron hồi quy (Recurrent Neural Network - RNN) là một mơ hình có thể giải quyết u cầu nhận dạng số lượng từ khổng lồ mà mơ hình CNN đơn giản khơng giải quyết được. Tức là khi chia ảnh ban đầu thành nhiều thành phần và nhận diện từng phần nhỏ.

RNN là nhóm các mạng neuron dùng để xử lý dữ liệu tuần tự có dạngx(1), x(2), ..., x(t)

với (t) chỉ thời điểm xuất hiện của đầu vào x, còn gọi là time-step. Sự tuần tự này

đặc trưng cho dữ liệu đến theo thời gian, chẳng hạn như văn bản, âm thanh. Do tính chất của luận văn, chúng ta biến đổi một chút lên dữ liệu hình ảnh (feature map) để có dữ liệu tuần tự bằng cách cắt ảnh ban đầu thành nhiều ảnh con, đầu vào mới sẽ là chuỗi các ảnh con này.

Hình 2.11: Ví dụ cắt ảnh thành những mảnh nhỏ theo chiều ngang. Trên hình mỗi mảnh có chiều rộng là 4 pixel7

6

https://www.arxiv-vanity.com/papers/1803.08494/

7

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

Sức mạnh của RNN đối với dữ liệu tuần tự đến từ việc nó kết hợp kết quả tính được ở thời điểm trước với đầu vào ở thời điểm hiện tại, điều này tạo ra tính “nhớ” tương tự như cách nhận thức của con người. Khi quan sát thông tin đến theo thời gian, nhận thức của chúng ta luôn tự biết kết hợp thêm những thông tin đã tiếp thu trong quá khứ; chẳng hạn với Hình 2.11 nêu trên, khi nhìn riêng mỗi ơ được đóng khung đậm, ta chỉ thấy mỗi đường cong, khơng biết đó là chữ “i” hay “a” hay “o”, nhưng khi kết hợp với thơng tin từ ơ trước, ta biết đó là phần cuối của ký tự “i”.

RNN sử dụng chung một đơn vị tính tốn để lan truyền các tham số tính được từ thời điểm trước (t−1) sang thời điểm hiện tại (t) và kết hợp hai giá trị này để sử dụng như đầu vào của lần tính tốn kế tiếp như sau:

h(t) =f(h(t−1), x(t);θ) (2.9) Trong đó h(t) và x(t) lần lượt là hidden layer và đầu vào tại thời điểm t. Hàm f là hàm kích hoạt vàθ đại diện cho các tham số được áp dụng lên h(t) và x(t). Cơng thức này tương đương với sơ đồ tính tốn trong Hình 2.12.

Hình 2.12: Sơ đồ tính tốn đơn giản của một RNN theo công thức (2.9), giá trịkhởi đầu và output đã được lược bớt. Bên trái là dạng thu gọn với vòng lặp, bên khởi đầu và output đã được lược bớt. Bên trái là dạng thu gọn với vịng lặp, bên phải là dạng chi tiết có biểu diễn các time-step. Sơ đồ tính tốn cho một time-step được gọi là một cell. (nguồn [6])

Đến đây, nếu như áp dụng θ lên h(t) và x(t) bằng một lớp tuyến tính (kết nối đầy đủ), ta có một mạng hồi quy đơn giản (Elman network [5] hay RNN thông thường hay Vanilla RNN) như sau:

h(t) =σ(W x(t)+U h(t−1)+bh),

o(t) =σ(V h(t)+bo) (2.10)

Trong đó: x(t) là đầu vào tại thời điểm t,

h(t) là giá trị tính được ở hidden layer tại thời điểm t, o(t) là output tại thời điểm t,

σ(·)là hàm kích hoạt sigmoid (tanh),

W, U là bộ trọng số áp dụng lên hidden layer ở vòng lặp,

V là bộ trọng số áp dụng lên hidden layer để cho ra output,

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

2.3.1 Mạng neuron hồi quy thơng thường

Xét mơ hình được cho bởi cơng thức (2.10). Trong q trình huấn luyện mơ hình này, ta thử tính đạo hàm của các trọng số cho quá trình lan truyền ngược. Với hàm mất mát L(t) =f(o(t), o(t)ground truth), ta tính được đạo hàm theo W như sau:

∂L(t) ∂W = ∂L(t) ∂o(t) ∂o(t) ∂h(t) ∂h(t) ∂W = ∂L(t) ∂o(t) ∂o(t) ∂h(t) t Y i=2 ∂h(i) ∂h(i−1) ! ∂h(1) ∂W = ∂L(t) ∂o(t) ∂o(t) ∂h(t) ∂h(1) ∂W U t−1

Khi time-step t tăng dần lên, nếu trong U có các giá trị thuộc (−1,1) thì giá trị gradient tương ứng mà ta sẽ cập nhật cho W sẽ càng nhỏ và bị triệt tiêu do cơ chế lưu trữ thơng thường của máy tính. Q trình huấn luyện (cập nhật các trọng số) sẽ bị dừng ngay lập tức và mạng neuron sẽ khơng học được gì cho những trọng số này. Ngược lại, nếu trong U có các giá trị lớn hơn 1 thì giá trị gradient tương ứng mà ta sẽ cập nhật cho W sẽ mang giá trị rất lớn (bùng nổ). Q trình huấn luyện sẽ khơng bao giờ dừng do các trọng số cứ được cập nhật liên tục mà không đến được điểm hội tụ. Do vậy mơ hình muốn học được W thì hoặc ma trận U chỉ mang toàn giá trị 1, điều này làm hạn chế đi khả năng biểu diễn tri thức của mạng, hoặct chỉ được mang giá trị nhỏ. Tính chất này của các mơ hình RNN thơng thường được gọi là trí nhớ ngắn hạn (Short-Term Memory). Nhu cầu cải tiến sự ngắn hạn này để đáp ứng được những bài toán mà đầu vào tại những thời điểm xa nhau vẫn có phụ thuộc lẫn nhau (Long-Term Dependency) khiến cho những mơ hình RNN có khả năng “nhớ” xa hơn ra đời, một trong những mơ hình như thế có tên là Long Short-Term Memory.

2.3.2 Long Short-Term Memory

Long Short-Term Memory (LSTM) là một mơ hình mạng neuron hồi quy, ra đời để giải quyết những bài toán mà chuỗi đầu vào ở những thời điểm cách xa nhau vẫn có sự phụ thuộc lẫn nhau (Long-Term Dependency) như đã trình bày ở Tiểu mục 2.3.1. Ý tưởng chính của LSTM là mở rộng thêm một con đường nữa cho đạo hàm khi lan truyền ngược giữa các cell để giá trị lỗi có thể đi được xa hơn mà không bị triệt tiêu hay bùng nổ. Cho nên thay vì chỉ đơn thuần kết hợp thơng tin từ cell trước và đầu vào, LSTM bổ sung thêm một vịng lặp nữa để cell có thể truyền đi trạng thái của bản thân nó (self-loop) và con đường lan truyền lỗi được gọi là Constant Error Carousel - CEC. Vì có nhiều con đường để truyền đi thơng tin, nên LSTM cần có thêm một (adsbygoogle = window.adsbygoogle || []).push({});

thành phần nữa là các cổng kích hoạt. Các cổng kích hoạt cần phải cho ra giá trị gần 1 để tiếp tục giữ thông tin truyền qua cell kế tiếp hoặc gần 0 để quên đi thơng tin. Do đó, nó gồm một lớp tuyến tính và theo sau là hàm sigmoid. Các cổng kích hoạt

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

trạng thái cell, khi thông tin này được sử dụng ở đâu đó về sau, nó cần được quên đi, vì vậy trong mạng cũng cần thêm một cổng kích hoạt nữa được gọi là cổng quên (forget gate).

Như vậy cấu trúc cell của LSTM được hình thành từ ba cổng gồm forget gate, input gate và output gate.

• Forget gate: Có nhiệm vụ quyết định liệu thơng tin của cell state ở time-step

t−1có cần được lưu trữ hay khơng. Thơng tin từ Current input và hidden state được chuyển qua hàm sigmoid với output nằm trong khoảng [0, 1]. Do đó nếu giá trị output gần bằng 1, tức là thơng tin cần được giữ lại cịn nếu output gần bằng 0 thì phải loại bỏ thơng tin.

• Input gate: Có nhiệm vụ cập nhật thông tin vào cell state. Ở đây ta nhân

output của Sigmoid với output của Tanh để quyết định thông tin của Current input và hidden state có nên được cập nhật vào cell state hay khơng.

• Output gate: Có nhiệm vụ tính giá trị của hidden state cho time-step tiếp theo.

Với việc sử dụng Forget gate và Input gate, ta có thể tính được giá trị mới của cell state và từ đó kết hợp với Current input và hidden state để tính giá trị của hidden state tiếp theo. Ở đây giá trị của hidden state mới này cũng chính là giá trị Prediction.

Như vậy, trong LSTM chúng ta có ba input và hai output là cell state và hidden state.

Một mơ hình LSTM với cổng forget sẽ có dạng như sau8:

f(t) =σg Wfx(t)+Ufh(t−1)+bf (forget gate) (2.11) i(t) =σg Wix(t)+Uih(t−1)+bi

(đầu vào gate) (2.12)

o(t) =σgWox(t)+Uoh(t−1)+bo (output gate) (2.13)

c(t) =σc Wcx(t)+Uch(t−1)+bc ⊙i(t)+f(t)⊙c(t−1) (cell state) (2.14) h(t) =o(t)⊙σhc(t) (hidden state) (2.15) 8 https://en.wikipedia.org/wiki/Long_short-term_memory

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

Hình 2.13: Mộ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 vo, output ti thi im t.

ã W Rhìd, U Rhìd, b∈Rh: ma trận trọng 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: (adsbygoogle = window.adsbygoogle || []).push({});

∂ 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 toán triệt tiêu đạo hàm chứ khơng hướng đến giải quyết bài tố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 tố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

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 29)