Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
187,7 KB
Nội dung
Những Vấn đề Cơ Mạng Neuron Khanh Nguyen University of Maryland College Park, MD 20742 kxnguyen@cs.umd.edu Hieu Pham Stanford University Stanford, CA 94305 hyhieu@cs.stanford.edu Lời nói đầu Mạng neuron (neural network) mơ hình học máy (machine learning) có khả mơ hàm số hay quan hệ [6] Tuy mô hình có khả (một ví dụ khác định - decision tree), mạng neuron mơ hình làm điều với số lượng tham số vừa phải mà máy tính có khả tính tốn thời gian hợp lý Tính chất khiến cho mạng neuron sử dụng rộng rãi đạt nhiều thành nhiều lĩnh vực khác trí tuệ nhân tạo (artificial intelligence) Bài viết nhằm mục đích giới thiệu với bạn sinh viên nghiên cứu sinh lĩnh vực trí tuệ nhân tạo, đặc biệt học máy, kiến thức mạng neuron Bằng cách sử dụng ngôn ngữ đơn giản yêu cầu hiểu biết tối thiểu đại số tuyến tính giải tích hàm nhiều biến, tác giả hy vọng sau đọc xong viết, bạn lập trình vài mạng neuron để giải vài tốn Giới thiệu Dù đời từ khoảng 60 năm trước, thập niên 2006-2015 chứng kiến hồi sinh mạnh mẽ mạng neuron Hiện này, mơ hình ứng dụng rộng rãi đạt nhiều kết tốt lĩnh vực trí tuệ nhân tạo, bao gồm thị giác máy tính (computer vision) [14, 7, 8], xử lý ngôn ngữ tự nhiên (natural language processing) [1, 13, 12], nhận diện giọng nói (speech recognition) [4, 9] Tuỳ vào ứng dụng cụ thể, mạng neuron mang kiến trúc khác nhau, cho phép thông tin neuron mạng lan truyền theo nhiều phương pháp định hướng thích hợp Bài viết giới thiệu kiến trúc đơn giản mạng neuron: mạng kết nối đầy đủ (fully connected network) Ở kiến trúc này, mạng neuron gồm nhiều lớp neuron (neuron layer) xếp theo thứ tự tuyến tính Các neuron lớp không kết nối với Các neuron hai lớp liên tiếp kết nối với tạo thành đồ thị hai phía đầy đủ với cạnh có trọng số biểu diễn ma trận trọng số Kết cấu gợi liên tưởng đến mơ hình neuron não người với neuron mạng có vai trị neuron não người, cạnh nối ứng với đường truyền synapse Từ trở sau, khơng nói thêm, thuật ngữ "mạng neuron" hiểu "mạng neuron kết nối đầy đủ" Tuy nhiên, hoạt động não người cịn ẩn số khoa học, không nên nói hoạt động mạng neuron mơ hoạt động não Lớp Ll+1 (l) (l) W1i Lớp Ll W4i i (l−1) Wi3 (l−1) Wi1 Lớp Ll−1 Hình 1: Minh hoạ cho kết nối lớp mạng neuron Chú ý quy ước ký hiệu: trọng (l) số neuron i thuộc lớp Ll+1 neuron j thuộc lớp Ll ký hiệu Wij Có hai đường lan truyền thông tin mạng neuron kết nối đầy đủ Trong bước lan truyền tới (feed-forwarding), thông tin truyền từ lớp liệu vào (input layer), qua lớp ẩn (hidden layer) đến lớp liệu (output layer) Lớp liệu kết mạng, thể giá trị hàm mà mạng mô điểm liệu nhận lớp liệu vào Tất nhiên, mạng neuron cho kết khơng xác, tạo lỗi sai lệch Trong bước lan truyền ngược (back-propagation), lỗi truyền qua lớp mạng theo trình tự ngược lại với bước lan truyền tới, cho phép mạng neuron tính đạo hàm theo tham số nó, từ điều chỉnh tham số thuật toán tối ưu hàm số Bài viết giúp bạn hiểu khái niệm trên, đồng thời đưa bạn qua kiến thức để huấn luyện mạng neuron Tiếp sau đây, phần viết giới thiệu kiến trúc mạng neuron kết nối đầy đủ Phần mơ tả thuật tốn lan truyền tới dùng để suy luận thông tin mạng Phần giới thiệu hàm kích hoạt Phần thảo luận cách áp dụng mạng neuron cho tốn phân loại Phần mơ tả phương pháp để tìm cấu hình tham số tối ưu cho mạng neuron Phần thảo luận vấn đề thường gặp sử dụng mạng neuron, overfitting, cách khắc phục Cuối cùng, phần gợi mở hướng để tìm tịi thêm kiến thức nâng cao vượt phạm vi viết Kiến trúc mạng neuron kết nối đầy đủ Như nói phần giới thiệu, neuron mạng neuron kết nối đầy đủ phân chia thành nhiều lớp Mỗi neuron lớp nhận giá trị trả từ neuron lớp liền trước, kết hợp giá trị thành giá trị trung gian, sau truyền giá trị trung gian qua hàm kích hoạt để trả kết cho neuron lớp Cụ thể hơn, xét mạng neuron gồm L − lớp ẩn Ta ký hiệu L(l) tập hợp lớp neuron nằm lớp thứ l, với l = 0, 1, , L Lớp L(0) lớp liệu vào Lớp L(L) lớp liệu Các lớp lại gọi lớp ẩn Neuron lớp thứ l nhận thông tin từ neuron thuộc lớp thứ l − truyền thông tin cho neuron thuộc lớp thứ l + Tất nhiên, neuron thuộc lớp L(0) không nhận liệu vào từ neuron khác neuron thuộc lớp L(L) khơng truyền liệu cho neuron khác Hình minh hoạ liên kết xung quanh neuron mẫu mạng neuron Algorithm Thuật toán lan truyền tới 1: function FEEDFORWARD(x(0) ∈ R|L0 | ) 2: for l = to L 3: z (l) ← W (l−1) · x(l−1) 4: x(l) ← f z (l) 5: end for 6: return x(L) , Loss(z (L) ) 7: end function Giữa hai lớp liên tiếp Ll Ll+1 mạng kết nối đầy đủ, ta thiết lập ma trận trọng số W (l) với (l) kích thước |Ll+1 |×|Ll | Phần tử Wij ma trận thể độ ảnh hưởng neuron j lớp l lên neuron i lớp l + Tập hợp ma trận trọng số W = {W (0) , W (1) , · · · , W (L−1) } gọi tập hợp tham số mạng neuron Việc xác định giá trị tập tham số biết đến việc học (learn) hay huấn luyện (train) mạng neuron Phương thức suy luận thông tin mạng neuron Giả sử tham số mạng neuron xác định, làm để sử dụng mạng neuron hàm số thông thường? Thuật toán lan truyền tới (feed-forwarding) (thuật toán 1) cho phép mạng neuron nhận điểm liệu vào tính toán điểm liệu tương ứng Trong thuật toán 1, tham số x(0) vector liệu vào mạng Ở dòng 3, W (l−1) · x(l−1) phép nhân ma trận W (l−1) với vector x(l−1) Ở dòng 4, hàm f : R → R hàm kích hoạt mà ta ta tìm hiểu phần f nhận số thực trả số thực Tuy nhiên, thuật toán 1, ta sử dụng ký hiệu f vector hiểu áp dụng f lên thành phần vector Tức là: f (v0 ) v0 v1 f (v1 ) (1) f = f (vl−1 ) vl−1 Ngoài giá trị hàm số mơ phỏng, x(L) , thuật tốn lan truyền tới cịn trả giá trị hàm mát Loss, thể độ tốt tập tham số Hàm nói đến phần 6.1 Lưu ý: bạn thấy tài liệu khác giới thiệu thêm vector b(l) , gọi thành kiến (bias), cho lớp, viết dịng thuật tốn sau: z (l) ← W (l−1) · x(l−1) + b(l−1) (2) Tuy nhiên, vế phải phương trình biến đổi lại thành phép nhân ma trận Vì thế, tác giả tạm thời bỏ vector thành kiến để công thức trở nên ngắn gọn dễ hiểu Hàm kích hoạt Hàm f thuật tốn gọi hàm kích hoạt Hàm kích hoạt có vai trị vơ quan trọng mạng neuron Trên thực tế, tiến gần nghiên cứu mạng neuron Ký hiệu |S| số phần tử tập hợp S [5, 11] cơng thức cho f , giúp tăng khả mô mạng neuron đơn giản hố q trình huấn luyện mạng Phần giải thích vai trị hàm kích hoạt giới thiệu số hàm kích hoạt thường dùng Hàm kích hoạt sử dụng để loại bỏ khả tuyến tính hố mạng neuron Để hiểu rõ điều này, ta thử bỏ hàm f thuật toán Chú ý điều tương đương với việc sử dụng hàm kích hoạt f (x) = x Khi đó, ta nhận thấy kết suy luận mạng neuron ánh xạ tuyến tính liệu vào Thật vậy, ta có: x(L) = W (L−1) · x(L−1) = · · · = W (L−1) · · · W (0) ·x(0) = W · x(0) (3) W (l) Trong trường hợp này, việc học tất L ma trận W không cần thiết tập hợp tất hàm mà mạng biểu diễn ánh xạ tuyến tính, biểu diễn thơng qua phép nhân ma trận với: W = W (L−1) · W (L−2) · · · W (0) (4) Điều làm suy giảm nhiều khả mơ hình hóa mạng neuron Để biểu diễn nhiều hàm số hơn, ta phải phi tuyến hoá mạng neuron cách đưa kết phép nhân ma trậnvector W (l−1) · x(l−1) qua hàm khơng tuyến tính f Một số hàm kích hoạt thường sử dụng là: Hàm sigmoid: f (x) = sigm(x) = ; + exp (−x) Hàm tanh: f (x) = (x); Hàm đơn vị tuyến tính đứng (rectified linear unit – ReLU) ([2]): f (x) = max (0, x); Hàm đơn vị tuyến tính đứng có mát (leaky rectified linear unit – leaky ReLU) ([10]): x x > f (x) = , với k số chọn trước Thông thường k ≈ 0.01; kx x ≤ Hàm maxout ([3]): f (x1 , · · · , xn ) = max xi 1≤i≤n Mô hàm xác suất hàm phân loại Mạng neuron ứng dụng rộng rãi để giải toán phân loại, tức xác định xem liệu vào thuộc loại tập lựa chọn cho trước Để giải tốn này, ta dùng mạng neuron để mơ phân bố xác suất tập lựa chọn Ví dụ ta muốn dùng mạng neuron để giải toán xác nhận gương mặt (face verification) Tập lựa chọn gồm hai phần tử: với cặp ảnh chân dung bất kì, ta yêu cầu mạng neuron trả lời "có" "khơng" cho câu hỏi hai ảnh có phải người hay khơng Mạng neuron đưa câu trả lời dựa vào việc tính tốn xác suất xảy đáp án chọn câu trả lời có xác suất cao Trong trường hợp này, giả sử tổng xác suất hai đáp án 1, ta cần tính xác suất cho đáp án suy xác suất đáp án lại Một mạng neuron sử dụng hàm sigmoid kích hoạt lớp cuối phù hợp để làm điều này, hàm sigmoid nhận vào số thực khoảng (−∞, +∞) trả số thực khoảng (0, 1) Tổng quát hơn, tập phương án lựa chọn có nhiều hai phần tử, ta cần biến mạng neuron thành phân bố xác suất P (x) thỏa mãn hai điều kiện sau: P (x) ≥ ∀x ∈ Ω (Ω tập lựa chọn); x P (x) = Xét vector trước kích hoạt lớp cuối, z (L) = (L) (L) (L) z0 , z1 , , z|LL |−1 Thay sử dụng hàm sigmoid, ta dùng hàm softmax để đưa vector thành phân bố xác suất Hàm softmax có dạng sau: softmax(z (l) ) = p0 , p1 , · · · , p|LL |−1 (5) (L) pi = exp zi |LL |−1 j=0 (L) exp zj với exp(.) hàm lũy thừa theo số tự nhiên e ≤ i ≤ |LL | − Lưu ý số lượng neuron lớp cuối, |LL |, phải với số phương án lựa chọn Dễ thấy kết hàm softmax thỏa mãn hai điều kiện phân bố xác suất hàm sigmoid trường hợp đặc biệt hàm softmax Phương pháp ước lượng tham số mạng neuron Khi suy luận thông tin mạng neuron, ta giả sử tham số (các ma trận W (l) ) cho sẵn Điều dĩ nhiên khơng thực tế; ta cần phải tìm giá trị tham số cho mạng neuron suy luận xác tốt Như nói trên, công việc gọi ước lượng tham số (parameter estimation), biết đến trình huấn luyện (train) hay học (learn) mạng neuron Ta gọi h(x; W ) g(x) hàm biểu diễn mạng neuron (với tập tham số W ) hàm mục tiêu cần mô Việc tìm cơng thức để tính giá trị tập số tham số khó khăn Ta chọn cách tiếp cận khác, giảm thiểu dần khoảng cách h(x; W ) g(x) cách lặp lại hai bước sau: Đo độ sai lệch suy luận mạng neuron tập điểm liệu mẫu {(xd , g(xd ))}, gọi tập huấn luyện (training set) Cập nhật tham số mạng W để giảm thiểu độ sai lệch Cách tính độ sai lệch đề cập phần 6.1 Cách tính giá trị tham số sau lần cập nhật nói đến phần 6.2 6.3 6.1 Hàm mát Tổng độ sai lệch liệu mạng neuron, h(xd ; W ), liệu cần đạt được, g(xd ), thể độ tốt tập tham số Nếu tập huấn luyện cố định, tổng chất hàm số phụ thuộc vào tập tham số W , thường biết đến với tên hàm mát: Loss(W ) ≡ dist(h(xd ; W ), g(xd )) (6) d∈D với D tập huấn luyện, dist hàm tính độ chênh lệch hai điểm liệu Tất nhiên, với mạng neuron tối ưu, giá trị hàm mát Trong thực tế, ta muốn tìm giá trị tham số để giá trị hàm mát nhỏ tốt Vì thế, tốn ước lượng tham Có nhiều cách định nghĩa độ chệnh lệch khác Người ta thường chọn hàm liên tục, có đạo hàm (gần như) nơi, dễ tính để tính độ chênh lệch x0 xopt Hình 2: Ví dụ minh họa cho việc tối ưu hàm số Đường thẳng màu vàng đạo hàm điểm x0 Mũi tên hướng x0 cần dịch chuyển để đến gần với xopt số mạng neuron chất tốn tìm giá trị biến W để cực tiểu hóa hàm số Loss(W ) Để hiểu rõ hơn, ta xem xét ví dụ sau đây: sử dụng mạng neuron để mô hàm XOR hai bit nhị phân Ta thiết kế mạng neuron đơn giản có hai lớp liệu vào (khơng có lớp ẩn), sử dùng hàm sigmoid để kích hoạt Lớp liệu vào gồm neuron lớp liệu gồm neuron; thế, kết nối hai lớp thể vector tham số w = (w1 , w2 ) Vì hàm sigmoid trả số thực khoảng (0, 1), để mô hàm XOR, ta cần thực phép biến đổi đơn giản để chuyển số thực thành bit nhị phân: giá trị lớp cuối lớn 0.5, xuất 1, ngược lại xuất Đến ta mạng neuron có định dạng liệu vào giống hệt hàm XOR Việc lại đặt giá trị tham số w thích hợp để mạng neuron ta hoạt động hàm XOR thực thụ Trong ví dụ này, ta định nghĩa độ chênh lệch liệu mạng neuron p liệu mẫu y bình phương hiệu chúng: dist(p, y) ≡ (p − y)2 (7) Hàm mát tập huấn luyện định nghĩa sau: Loss(w) ≡ (pd − yd )2 = d∈D sigm(w⊤ xd ) − yd (8) d∈D với D = {(xd , yd )} = {((0, 0), 0), ((0, 1), 1), ((1, 0), 1), ((1, 1), 0)} 6.2 Thuật toán gradient descent Tiếp theo, ta cần thuật tốn để cực tiểu hóa hàm mát Quay lại với kiến thức cực tiểu hóa hàm số dạy trung học phổ thông, hẳn ta quen thuộc với nhận xét giá Bit nhị phân biến mang giá trị Hàm XOR(x, y) nhận vào hai bit nhị phân x y, trả giá trị x khác y, trả giá trị x y p số thực khoảng (0, 1) trả từ hàm sigmoid Việc biến đổi số thực thành bit nhị phân xảy ta dùng mạng neuron để suy luận Ở ta nói việc ước lượng tham số Algorithm Thuật toán gradient descent 1: function GRADDESC(∇x f , α) 2: Khởi tạo x0 tùy ý 3: while ∇x f (x0 ) > ǫ 4: x0 ← x0 − α∇x f (x0 ) 5: Tùy chọn: cập nhật α 6: end while 7: return x0 8: end function trị đạo hàm hàm số điểm cực trị cục Vậy điểm cực trị, giá trị nói với ta điều gì? Xem xét việc cực tiểu hóa hàm số f (x) (hình 2) Nhiệm vụ ta di từ chuyển giá trị biến thời x0 (điểm xanh) đến giá trị biến điểm cực tiểu f , xopt (điểm đỏ) Dễ thấy x0 < xopt đạo hàm x0 mang dấu âm Ngược lại, đạo hàm điểm x0 > xopt cho dấu dương Trong hai trường hợp, ta thấy cần ngược lại với dấu đạo hàm để đến gần với xopt Cụ thể hơn, f ′ (x0 ) < ta phải tăng x0 , f ′ (x0 ) > ta phải giảm x0 Khi input x khơng cịn số thực mà vector l chiều x = (x0 , x1 , , xl−1 ), f (x) trở thành ∂f hàm nhiều biến Đạo hàm riêng (partial derivative) f theo chiều xi kí hiệu ∂x i Gradient f theo vector x, ký hiệu ∇x f , vector bao gồm đạo hàm riêng theo chiều x: ∇x f = ∂f ∂f ∂f , , , ∂x0 ∂x1 ∂xl−1 Gradient đóng vai trò dấu đạo hàm trường hợp chiều Hướng ngược lại với gradient vector điểm hướng mà hàm số tăng/giảm nhanh di chuyển đoạn cực nhỏ khỏi điểm Thuật tốn gradient descent tìm đến điểm cực tiểu cách dịch chuyển tham số theo hướng ngược lại với vector gradient đoạn nhỏ vừa đủ lần cập nhật Thuật tốn mơ tả bước gradient descent Tại bước vịng lặp while, thuật tốn dịch chuyển x0 lượng phụ thuộc vào gradient f x0 , ∇x f (x0 ) Dấu trừ thể việc di chuyển ngược lại với hướng gradient vector α dùng để kiểm soát độ lớn bước dịch chuyển x0 , gọi độ dịch Độ dịch quan trọng ảnh hưởng đến tốc độ hội tụ x0 đến xopt Nếu độ dịch lớn, ta có khả di chuyển vượt khỏi giá trị tối ưu không hội tụ Ngược lại, di chuyển với độ dịch nhỏ, ta phải tốn nhiều bước đến đích, khiến tốc độ hội tụ giảm Có số điểm cần lưu ý cài đặt thuật tốn Thứ nhất, dịng 4, phép tính x0 − α∇x f (x0 ) phép trừ hai vector chiều Thứ hai, phép nhân α∇x f (x0 ) hiểu tùy theo ngữ cảnh thực tế ta dùng độ dịch cho tất chiều ∇x f (x0 ) (α số thực), dùng độ dịch khác cho chiều (α vector) Cuối cùng, điều kiện dừng thuật tốn (dịng 3) ta tìm điểm cực trị cục bộ, tức norm gradient vector, kí hiệu ∇x f (x0 ) , xấp xỉ với sai số ǫ Có nhiều loại norm, thường người ta dùng norm-2, tức độ dài vector Algorithm Thuật toán lan truyền ngược 1: function BACKPROP(x(0) ∈ R|L0 | , {W (l) }) 2: Áp dụng thuật tốn với x(0) để tính giá trị z (1) , · · · , z (L) , x(1) , · · · , x(L) hàm 3: 4: 5: 6: 7: 8: 9: mát Loss(z (L) ) δ (L) ← ∂z∂(L) Loss for l = L − to ∂ Loss ← f ′ (z (l) ) ◦ W (l)⊤ · δ (l+1) ∂z (l) ∂ Loss ← δ (l+1) · x(l)⊤ ∂W (l) end for ∂ return ∂W∂(0) Loss, · · · , ∂W (L−1) Loss end function Ta minh họa thuật tốn gradient descent với ví dụ mơ hàm XOR phần 6.1 Gradient hàm mát theo w là: ∇w Loss(w) = ∇w = ∇w (pd − yd )2 d∈D sigm(w⊤ xd ) − yd d∈D sigm(w⊤ xd ) − yd ∇w sigm(w⊤ xd ) = (9) d∈D sigm(w⊤ xd ) − yd sigm(w⊤ xd ) − sigm(w⊤ xd ) xd = d∈D = (pd − yd ) pd (1 − pd ) xd d∈D Sau ta việc áp dụng thuật toán với ∇x f (x) ≡ ∇w Loss(w) để huấn luyện mạng neuron 6.3 Cách tính đạo hàm mạng neuron: thuật tốn back-propagation Khi áp dụng thuật toán gradient descent mạng neuron có nhiều lớp, ta cần tính đạo hàm hàm mát theo tham số lớp neuron Viêc tính đạo hàm theo tham số trở nên phức tạp khó kiểm sốt mạng neuron có nhiều lớp nhiều liên kết phức tạp neuron Tuy nhiên, ta tận dụng lặp lại cấu trúc lớp cần xem xét cách tính đạo hàm lớp Thuật tốn lan truyền ngược (back-propagation) (thuật tốn 3) khái qt hóa cách tính đạo hàm lớp neuron cách truyền đạo hàm cho lớp liền trước Ta giải thích dịng dịng thuật tốn Ở dịng 5, ý gradient hàm mát theo z (l) , ∂z∂(l) Loss, vector có |Ll | dịng, dịng thứ i là: |L(l+1) | ∂ (l) ∂zi (l+1) ∂Loss ∂zj Loss = (l+1) |L(l+1) | = (l) ∂zj j=1 ∂zi (l+1) (l+1) ∂zj (l) ∂zi (định nghĩa δj ) δj j=1 |L(l+1) | ∂ (l+1) δj = |L(l) | (l) (l) ∂zi k=1 j=1 (l) Wjk f (zk ) (10) |L(l+1) | (l+1) = δj (l) (l) Wji f ′ (zi ) j=1 |L(l+1) | =f ′ (l+1) (l) (zi ) (W (l) )⊤ ij δj j=1 |L(l+1) | (l+1) Ta thấy j=1 (W (l) )⊤ dòng thứ i vector nhận từ phép nhân W (l+1)⊤ · ij δj δ (l+1) Vì thế, ∂z∂(l) Loss = f ′ (z (l) ) ◦ W (l)⊤ · δ (l+1) , ◦ phép nhân phần tử có chiều tương ứng hai vector Ở dòng 6, gradient theo hàm mát theo W (l) , ∂W∂ (l) Loss, ma trận kích thước với W (l) , tức |L(l+1) | × |L(l) | Phần tử thuộc dòng i cột j ma trận là: ∂ |L(l+1) | Loss = (l) ∂Wij (l+1) ∂Loss ∂zk (l+1) k=1 (l) ∂zk ∂Wij (l+1) δk ∂ |L(l+1) | = k=1 (l+1) = δi ∂ (l) ∂Wij |L(l) | (l) ∂Wij t=1 (l) (l) Wij xj (l) (l) Wkt xt ∂ (l) ∂Wij (11) (l) Wkt = k = i t = j (l+1) (l) xj = δi Vì thế, ∂ Loss ∂W (l) = δ (l+1) · x(l)⊤ Overfitting Trong ứng dụng thực tế, ta thường sử dụng mạng neuron để mô hàm số hàm số mà cấu trúc chúng chưa xác định Khi đó, ta thu nhập mẫu liệu (vào) sinh từ hàm số, lại khơng thể đặc tả q trình sinh mẫu Một ví dụ kinh điển q trình não người thu nhận thơng tin từ hình ảnh chữ viết tay, suy luận chữ viết Cơ chế não biểu diễn hình ảnh suy luận thơng tin từ ẩn số khoa học Tuy nhiên, ta dùng ảnh với nhãn chúng để huấn luyện mạng neuron mô xấp xỉ trình xử lý hình ảnh não Cho dù cấu trúc não W (l+1)⊤ chuyển vị ma trận W (l+1) Ví dụ: (1, 2, 3) ◦ (4, 5, 6) = (1 × 2, × 4, × 6) = (2, 8, 18) Hình 3: Một ví dụ overfitting Đa thức có bậc cao (xanh dương) trọng vào việc phải qua tất điểm tập huấn luyện (đen) nên có hình dạng phức tạp, khơng "bình thường" Đa thức bậc thấp (đỏ) cho giá trị hàm mát cao tập huấn luyện lại phù hợp với phân bố liệu thực tế Điều thể việc đa thức bậc thấp ước lượng điểm khơng có tập huấn luyện (xanh) xác đa thức bậc cao mạng neuron (có thể) khác nhau, với thuật toán huấn luyện tốt, chúng đưa kết luận giống với điểm liệu vào Đối với toán dự đốn, mục tiêu cuối ta mơ hàm số ẩn, ta không nên cực tiểu hóa hàm mát tập huấn luyện Nếu ta làm dẫn đến tượng overfitting, tức mạng neuron học hàm phức tạp để mơ hồn hảo tập huấn luyện Tuy nhiên, cấu trúc phức tạp, hàm tính tổng qt hóa cao, tức dễ sai gặp điểm liệu khơng có tập huấn luyện (hình 3) Khi ấy, mạng neuron giống người biết học tủ mà cách vận dụng kiến thức để giải thứ chưa gặp phải Overfitting vấn đề nghiêm trọng mạng neuron khả mơ hình hóa chúng q cao, dễ dàng học hàm phức tạp Ta tìm hiểu số phương pháp thơng dụng để chẩn đốn ngăn ngừa overfitting cho mạng neuron 7.1 Sử dụng tập kiểm tra chưa nhìn thấy Để đánh giá độ sai lệch mạng neuron cách thực tế, ta dùng giá trị hàm mát tập huấn luyện giá trị thường lạc quan (thấp) độ sai lệch thực tế Muốn khách quan, ta thường sử dụng tập kiểm tra (test set), độc lập với tập huấn luyện, để tính độ sai lệch Tập kiểm tra khơng mạng neuron biết đến suốt trình huấn luyện, sử dụng tham số mạng neuron cố định 7.2 Dừng huấn luyện sớm (early stopping) Ta biết việc cực tiểu hóa hàm mát tập huấn luyện gây overfitting tập huấn luyện nhỏ Một cách đơn giản để tránh điều dừng huấn luyện trước giá trị hàm mát tập huấn luyện đạt đến điểm cực tiểu cục Tối ưu nên dừng độ sai lệch tập kiểm tra bắt đầu tăng lên, cho dù độ sai lệch tập huấn luyện giảm (hình 4) Đây lúc overfitting bắt đầu xuất Tuy nhiên, nói đến phần trước, nguyên tắc, tập kiểm tra không can thiệp vào trình huấn luyện mạng neuron Vì thế, ta cần tập kiểm tra khác để thực dừng sớm, gọi tập phát triển (development set) Khi trình huấn luyện ta diễn sau: 10 Hình 4: Dừng sớm việc huấn luyện làm giảm độ xác mạng neuron tập phát triển Theo dõi độ sai lệch tập huấn luyện tập phát triển Khi giá trị độ sai lệch tập phát triển bắt đầu tăng, dừng huấn luyện Cố định mạng neuron với tập tham số mà cho độ sai lệch tập phát triển tốt trước thời điểm dừng Dùng tập kiểm tra để đánh giá mạng neuron lần cuối thông báo kết 7.3 Bình thường hóa tham số (regularization) Một cách khác để ngăn ngừa overfitting giới hạn khơng gian hàm số mà mạng neuron biểu diễn Điều tiến hành việc thu hẹp lại biên độ giá trị tập tham số Cụ thể hơn, thay huấn luyện mạng hàm mát, ta thêm vào đại lượng thể "độ lớn" tập tham số: Loss(w) + λ w (12) với λ số chọn trước, w gọi norm vector w Khi ta cực tiểu hóa hàm số 12, Loss(w) w cực tiểu hóa Kết là, mạng neuron nhận có tham số có giá trị nhỏ bình thường, ngăn ngừa trở nên linh động phức tạp Trong thực hành, ta thường sử dụng bình phương norm-2, tức bình phương độ dài vector : w 2 wi2 = (13) i Bên cạnh đó, huấn luyện với norm-1 lại cho ta tập tham số thưa (có nhiều phần tử số 0) giúp tăng tốc độ tính tốn giảm nhớ, norm-1 lại khơng có đạo hàm liên tục nên việc tối ưu hóa khó khăn hơn: w 1= |wi | (14) i Đối với ma trận mạng neuron, ta chuyển chúng thành vector áp dụng cơng thức norm nói bình thường (vì thứ tự phần tử khơng quan trọng) Sử dụng bình phương thay lấy bậc hai để dễ tính đạo hàm 11 Tiếp theo gì? Trong viết này, ta vừa qua vấn đề mạng neuron Để giúp bạn đọc áp dụng kiến thức vừa học, tác giả cung cấp hai chương trình huấn luyện mạng neuron để mơ hàm XOR với hai kiến trúc khác để bạn tham khảo (https://gitlab com/khanhptnk/neuralnet_tutorial/tree/master Lưu ý chương trình viết ngơn ngữ Python đơn giản có tính chất minh họa Muốn lập trình mạng neuron để giải toán lớn, tác giả gợi ý bạn nên tìm hiểu Theano, Pylearn2, Caffe, Torch, hay TensorFlow Ngồi ra, tài liệu mạng neuron tiếng Việt khan hiếm, tác giả hy vọng bạn đào sâu tìm hiểu thêm tài liệu tiếng nước Cuốn sách Deep Learning viết nhà nghiên cứu đầu ngành lựa chọn tuyệt vời Xin cảm ơn bạn đọc tài liệu này! Tài liệu [1] D Bahdanau, K Cho, and Y Bengio Neural machine translation by jointly learning to align and translate CoRR, abs/1409.0473, 2014 [2] X Glorot, A Bordes, and Y Bengio Deep sparse rectifier neural networks In International Conference on Artificial Intelligence and Statistics, pages 315–323, 2011 [3] I J Goodfellow, D Warde-Farley, M Mirza, A Courville, and Y Bengio Maxout networks arXiv preprint arXiv:1302.4389, 2013 [4] A Y Hannun, C Case, J Casper, B C Catanzaro, G Diamos, E Elsen, R Prenger, S Satheesh, S Sengupta, A Coates, and A Y Ng Deep speech: Scaling up end-to-end speech recognition CoRR, abs/1412.5567, 2014 [5] S Hochreiter and J Schmidhuber Long short-term memory 1997 [6] K Hornik, M B Stinchcombe, and H White Multilayer feedforward networks are universal approximators Neural Networks, 2(5):359–366, 1989 [7] A Karpathy, A Joulin, and F F F Li Deep fragment embeddings for bidirectional image sentence mapping In Z Ghahramani, M Welling, C Cortes, N Lawrence, and K Weinberger, editors, Advances in Neural Information Processing Systems 27, pages 1889–1897 Curran Associates, Inc., 2014 [8] Q V Le, R Monga, M Devin, K Chen, G S Corrado, J Dean, and A Y Ng Building high-level features using large scale unsupervised learning In In International Conference on Machine Learning, 2012 103 [9] A L Maas, R E Daly, P T Pham, D Huang, A Y Ng, and C Potts Learning word vectors for sentiment analysis In Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies, pages 142–150, Portland, Oregon, USA, June 2011 Association for Computational Linguistics [10] A L Maas, A Y Hannun, and A Y Ng Rectifier nonlinearities improve neural network acoustic models In Proc ICML, volume 30, page 1, 2013 [11] I S Rafal Jozefowicz, Wojciech Zaremba An empirical exploration of recurrent network architectures In International Conference in Machine Learning ICML, 2015 [12] R Socher, D Chen, C D Manning, and A Ng Reasoning with neural tensor networks for knowledge base completion In C Burges, L Bottou, M Welling, Z Ghahramani, and K Weinberger, editors, Advances in Neural Information Processing Systems 26, pages 926– 934 Curran Associates, Inc., 2013 [13] R Socher, A Perelygin, J Wu, J Chuang, C D Manning, A Y Ng, and C Potts Recursive deep models for semantic compositionality over a sentiment treebank In Proceedings of the 12 2013 Conference on Empirical Methods in Natural Language Processing, pages 1631–1642, Stroudsburg, PA, October 2013 Association for Computational Linguistics [14] C Szegedy, W Liu, Y Jia, P Sermanet, S Reed, D Anguelov, D Erhan, V Vanhoucke, and A Rabinovich Going deeper with convolutions In CVPR 2015 13 ... tin từ neuron thuộc lớp thứ l − truyền thông tin cho neuron thuộc lớp thứ l + Tất nhiên, neuron thuộc lớp L(0) không nhận liệu vào từ neuron khác neuron thuộc lớp L(L) không truyền liệu cho neuron. .. phạm vi viết Kiến trúc mạng neuron kết nối đầy đủ Như nói phần giới thiệu, neuron mạng neuron kết nối đầy đủ phân chia thành nhiều lớp Mỗi neuron lớp nhận giá trị trả từ neuron lớp liền trước, kết... cho neuron lớp Cụ thể hơn, xét mạng neuron gồm L − lớp ẩn Ta ký hiệu L(l) tập hợp lớp neuron nằm lớp thứ l, với l = 0, 1, , L Lớp L(0) lớp liệu vào Lớp L(L) lớp liệu Các lớp lại gọi lớp ẩn Neuron