CHƯƠNG 1. TỔNG QUAN VỀ PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN BẰNG DEEP LEARNING Bước 3: Gọi tập dữ liệu là Ωd. Để mạng lưới của chúng ta thỏa mãn phương trình đạo hàm riêng, hàm Loss của bài toán sẽ có dạng X 2 J= L N N (x, t, W ) x∈Ωd Khi giá trị của hàm mất mát Loss càng tiến dần về 0, thì đầu ra của mạng lưới N N (x, t, W ) càng gần giá trị của u∗ (x, t) với x ∈ Ωd. Bước 4: Để tìm được W tốt nhất, có rất nhiều phương pháp, chúng ta có thể thử thật nhiều W rồi sau đó lựa chọn, ta có thể giải W ,.
Trong Deep Learning, người ta sử dụng những thuật toán gọi là optimizer để tìm W , có rất nhiều thuật toán hiệu quả có thể sử dụng được vào việc giải bài toán này, mỗi thuật toán thì đều có những ưu nhược điểm riêng, tác giả sẽ trình bày chi tiết từng thuật toán trong phần 2. Chương tiếp theo tác giả sẽ trình bày sơ lược về những kiến thức cơ sở trong Deep Learning phục vụ cho việc giải phương trình đạo hàm riêng, nếu như độc giả nào đã nắm được những kiến thức cơ sở này thì có thể bỏ qua và đến luôn chương 3, đó là chương trình bày về việc giải cụ thể những phương trình đạo hàm riêng bằng Deep Learning. Nguyễn Lâm Tùng 16 SHHV: 20202889M Chương 2 KIẾN THỨC CƠ SỞ DEEP LEARNING Trong Deep Learning, hai thành phần cơ bản nhất là dữ liệu và mô hình. Dữ liệu thì ở khắp mọi nơi, chúng có thể ở bất cứ định dạng, kích cỡ nào, ví dụ như bình luận trên mạng xã hội, hình ảnh trên các website, giọng thu âm của một nhóm người,.
Mô hình trong Deep Learning được mô phỏng lại dựa theo cơ chế hoạt động giống hệ thần kinh não người, nghĩa là mô hình sẽ tiếp nhận dữ liệu bên ngoài, xử lý dữ liệu và đưa ra kết quả, ví dụ như quá trình nhận dạng của con người, con người có thể nhận ra khuôn mặt người quen, giọng nói người quen, phân biệt được giới tính của một người, nhận dạng màu sắc[40],. Cụ thể hơn, mô hình Deep Learning là một hàm số, hàm số này phức tạp và phụ thuộc vào nhiều tham số, người dùng sẽ cố gắng điều chỉnh bộ tham số đó sao cho hàm số đó cho ra được kết quả đầu ra ưng ý nhất. Trong chương này tác giả sẽ trình bày về kiến trúc của mô hình và những phương pháp để điều chỉnh bộ tham số của mô hình (trong Deep Learning, mô hình đồng nghĩa với mạng lưới, nên trong luận văn, tác giả sẽ sử dụng thuật ngữ mạng lưới thay cho mô hình để tránh nhầm lẫn với thuật ngữ mô hình trong toán học).1 Kiến trúc của mạng lưới Deep Learning Một mạng lưới Deep Learning cơ bản sẽ bao gồm nhiều lớp, bao gồm lớp đầu vào (gọi là Input layer), lớp đầu ra (gọi là Output layer) và những lớp ẩn ở giữa (gọi là Hidden layers), mỗi lớp sẽ có một số lượng nơ-ron nhất định. Ví dụ như ở hình bên dưới, ta có lớp đầu vào có 2 nơ-ron, 2 lớp ẩn mỗi lớp có 3 nơ-ron, và lớp đầu ra có 1 nơ-ron.
KIẾN THỨC CƠ SỞ DEEP LEARNING Hình 2.1: Ví dụ về mạng nơ-ron 2.1 Lan truyền xuôi Con người tiếp nhận một thông tin vào não, sau khi xử lý thông tin đó, não con người sẽ cho ra kết quả, quá trình lan truyền xuôi cũng giống như vậy. Đây quá trình tính toán giá trị của tất cả các nơ-ron trong mạng theo chiều từ lớp đầu vào tới lớp đầu ra[41], nó giống như tính giá trị của các hàm số f (x). Ta lấy ví dụ với hình bên dưới Hình 2.2: Ví dụ sự phụ thuộc của một nơ-ron vào lớp phía trước Với hình trên, giả sử h là giá trị của một nơ-ron ở lớp ẩn, ở lớp phía trước đó có 2 nơ-ron nối vào, giá trị của 2 nơ-ron đó lần lượt là x1 và x2. Hệ số tương ứng lần lượt là w1 và w2.
Giá trị của h sẽ được tính theo công thức h = f (x1 w1 + x2 w2 + b) Nguyễn Lâm Tùng 18 SHHV: 20202889M CHƯƠNG 2. KIẾN THỨC CƠ SỞ DEEP LEARNING tổng quát hơn đối với đầu vào là vec-tơ n chiều n X h = f( xi wi + b), i=1 trong đó • f là một hàm số kích hoạt (có thể là hàm tuyến tính hoặc phi tuyến, nhưng trong những bài toán phức tạp thì người ta thường sử dụng hàm phi tuyến). • b là bias, hay còn gọi là hệ số tự do. Hàm kích hoạt f trên đây thường là hàm phi tuyến[42], một số hàm phổ biến có thể kể đến như • nhị phân: 0 khi x < T, f= khi x ≥ T.
1 • tuyến tính: f (x) = ax + b. 1 + e−x ex + 1 • tanh: ex − e−x e2x − 1 f (x) = =. • Leaky ReLU: x khi x > 0, f= khi x ≤ 0.01x Ngoài ra người dùng hoàn toàn có thể sử dụng các hàm số khác tùy ý, ví dụ như hàm sin(x), cos(x), ex ,. Luyện một mạng lưới chính là tìm ra bộ các tham số wi và bj phù hợp để mạng lưới có đầu ra mong muốn.
Ban đầu bộ tham số wi và bj được người dùng khởi tạo, Nguyễn Lâm Tùng 19 SHHV: 20202889M CHƯƠNG 2. KIẾN THỨC CƠ SỞ DEEP LEARNING nên đầu ra của mạng lưới khả năng cao là không được như ý. Cho nên chúng ta cần phải tìm ra bộ tham số tối ưu. Cơ sở của quá trình tối ưu này nằm ở phần tiếp theo của luận văn, đó là lan truyền ngược.2 Lan truyền ngược Đây giống như quá trình học của con người, ví dụ như việc chúng ta có thể gọi được tên của các màu sắc là bởi chúng ta đã được quan sát, nghe và đọc tên của chúng nhiều lần.
Mục đích của quá trình lan truyền ngược[43] đó là cập nhật lại bộ tham số wi và bj. Để đánh giá độ đúng đắn của bộ tham số trong việc xấp xỉ hàm, người ta xét giá trị của hàm mất mát, hay còn gọi là loss function. Giá trị của hàm mất mát đủ nhỏ thì có thể coi như bộ tham số đủ tốt, thường thì khi xây dựng hàm mất mát, người ta sẽ để giá trị của hàm luôn không âm. Ý tưởng chủ yếu của việc điều chỉnh bộ tham số này là thuật toán đi ngược chiều gradient, hay con gọi là Gradient Descent[44].
Cụ thể như sau, ví dụ ta có một hàm mất mát J = J(x, w1 , w2 , ., bm ), ta sẽ thực hiện cập nhật từng tham số một, giả sử ta cần cập nhật tham số wi , bj , ta sẽ sử dụng công thức ∂J wi = wi − η ∂wi ∂J bj = bj − η ∂bj trong đó η là hệ số học, hay còn gọi là learning rate, là một số thực dương được cài đặt tùy ý bởi người dùng. Nguyễn Lâm Tùng 20 SHHV: 20202889M CHƯƠNG 2. KIẾN THỨC CƠ SỞ DEEP LEARNING Hình 2.3: Ý tưởng thuật toán Gradient Descent Từ ý tưởng tổng quát đó, một số thuật toán đã được xây dựng để tối ưu hóa quá trình lan truyền ngược này. Một số thuật toán phổ biến sẽ được trình bày ở phần sau.2 Các thuật toán tối ưu Với ý tưởng nền là thuật toán Gradient Descent, rất nhiều thuật toán khác đã được xây dựng nên nhằm tăng tính hiệu quả của việc cập nhật tham số.
Những thuật toán đó đã được tích hợp sẵn trong các thư viện hỗ trợ lập trình Deep Learning như TensorFlow[45], Keras[46], Pytorch[47],.4: Mối quan hệ giữa các thuật toán tối ưu Nguyễn Lâm Tùng 21 SHHV: 20202889M CHƯƠNG 2. KIẾN THỨC CƠ SỞ DEEP LEARNING Phần trình bày phía dưới tác giả sẽ gọi bộ tham số cần tìm là W cho ngắn gọn thay vì gọi bộ gồm các tham số wi và bj. Hàm mất mát được ký hiệu là J, với J = J(x, w1 , w2 , ., bm ) trong đó x là một vector đầu vào.1 Gradient Descent Gradient Descent[44] là thuật toán cơ bản nhất, là nền tảng để phát triển rất nhiều thuật toán khác sau này. Thuật toán 1: Gradient Descent khởi tạo bộ tham số W0 ; chọn giá trị cho learning rate η ; while <điều kiện dừng chưa thỏa mãn> do ∂J Wt+1 = Wt − η ; ∂Wt Giả sử ta có bộ dữ liệu X = {x1 , x2 , ., xN }, ta chia bộ X thành k tập con {X1 , X2 ,.
Thuật toán Gradent Descent được chia làm 3 loại nhỏ tùy thuộc vào việc tính toán hàm mất mát như thế nào: • Gradient Descent: J = J(X, W ) • Stochastic Gradient Descent: J = J(xi , W ) với i = 1, N • Mini-batch Gradient Descent: J = J(Xi , W ) với i = 1, k Ở cách thứ nhất, sau khi tính hàm mất mát của toàn bộ dữ liệu, bộ tham số sẽ được cập nhật, cách này giúp cho giá trị hàm mất mát hội tụ một cách nhanh nhất, tuy nhiên nhược điểm của cách này đó là nếu dữ liệu X bị thay đổi, việc tính toán sẽ phải thực hiện lại, không phù hợp với yêu cầu của một số bài toán hiện nay. Cách thứ hai đó là Stochastic Gradient Descent đã được sinh ra nhằm giải quyết vấn đề của cách thứ nhất, dữ liệu được thêm vào sẽ được đưa vào thuật toán để cập nhật bộ tham số luôn mà không phải luyện lại dữ liệu cũ, tuy nhiên cách này lại rất mất thời gian do một điểm dữ liệu không thể đại diện cho toàn bộ dữ liệu được cho nên sự hội tụ của hàm mất mát sẽ lâu hơn. Cách thứ ba là mini-bacth Gradient Descent được xây dựng nhằm giải quyết vấn đề của cả hai cách trên, đó là vẫn đáp ứng được nhu cầu thêm bớt dữ liệu, mà chọn Nguyễn Lâm Tùng 22 SHHV: 20202889M CHƯƠNG 2. KIẾN THỨC CƠ SỞ DEEP LEARNING ra một tập con của bộ dữ liệu thì tính đại diện sẽ cao hơn một điểm, cho nên tốc độ hội tụ của hàm mất mát sẽ nhanh hơn cách thứ hai, nhưng vẫn chậm hơn cách thứ nhất.
Ưu điểm • Dễ hiểu, • Dễ thực hiện. Nhược điểm • Dễ bị mắc vào cực tiểu địa phương, • Việc lựa chọn hệ số học (learning rate) là tùy ý, nên rất khó lựa chọn sao cho hợp lý. Nếu giá trị nhỏ quá, việc hội tụ sẽ lâu, nếu giá trị lớn quá, có thể bộ tham số đạt được sẽ không tốt.2 Momentum Nhược điểm của thuật toán Gradient Descent đó là việc cập nhật bộ tham số khó thoát khỏi cực tiểu địa phương.