1 Gradient Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1 Giới thi»u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Gradient Descent cho hàm mºt bi‚n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Gradient Descent cho hàm nhi•u bi‚n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4 Gradient descent với momentum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5 Nesterov accelerated gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6 Stochastic Gradient Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.7 Đi•u ki»n dłng thu“t to¡n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.8 Đọc th¶m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2 Perceptron Learning Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.1 Giới thi»u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2 Thu“t to¡n perceptron. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3 V‰ dụ và minh ho⁄ tr¶n Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.4 Mô h…nh Neural Network đƒu ti¶n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.5 Th£o Lu“n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Contents VI 3 Logistic regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.1 Giới thi»u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2 Hàm m§t m¡t và phương ph¡p tŁi ưu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3 Tri”n khai thu“t to¡n tr¶n Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.4 T‰nh ch§t cıa logistic regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.5 Bài to¡n ph¥n bi»t hai chœ sŁ vi‚t tay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.6 Bº ph¥n lớp nhị ph¥n cho bài to¡n ph¥n lớp đa lớp . . . . . . . . . . . . . . . . . . . . . . . . 41 3.7 Th£o lu“n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4 Softmax Regression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.1 Giới thi»u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2 Softmax function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.3 Hàm m§t m¡t và phương ph¡p tŁi ưu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.4 V‰ dụ tr¶n Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.5 Th£o lu“n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5 Multilayer neural network và Backpropagation . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.1 Giới thi»u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2 C¡c ký hi»u và kh¡i ni»m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5.3 Activation function – Hàm k‰ch ho⁄t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.4 Backpropagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.5 V‰ dụ tr¶n Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.6 Tr¡nh overfitting cho neural network b‹ng weight decay . . . . . . . . . . . . . . . . . . . . 74 5.7 Đọc th¶m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Vũ Hữu Tiệp Machine Learning Pre-order ebook https:// machinelearningcoban.com/ ebook/ Blog: https:// machinelearningcoban.com Facebook Page: https:// www.facebook.com/ machinelearningbasicvn/ Facebook Group: https:// www.facebook.com/ groups/ machinelearningcoban/ Interactive Learning: https:fundaml.com Last update: December 17, 2017 Contents Phần IV Neural Networks Gradient Descent 1.1 Giới thiệu 1.2 Gradient Descent cho hàm biến 1.3 Gradient Descent cho hàm nhiều biến 10 1.4 Gradient descent với momentum 13 1.5 Nesterov accelerated gradient 16 1.6 Stochastic Gradient Descent 18 1.7 Điều kiện dừng thuật toán 19 1.8 Đọc thêm 20 Perceptron Learning Algorithm 21 2.1 Giới thiệu 21 2.2 Thuật toán perceptron 22 2.3 Ví dụ minh hoạ Python 25 2.4 Mơ hình Neural Network 27 2.5 Thảo Luận 28 Contents VI Logistic regression 30 3.1 Giới thiệu 30 3.2 Hàm mát phương pháp tối ưu 32 3.3 Triển khai thuật toán Python 35 3.4 Tính chất logistic regression 38 3.5 Bài toán phân biệt hai chữ số viết tay 39 3.6 Bộ phân lớp nhị phân cho toán phân lớp đa lớp 41 3.7 Thảo luận 43 Softmax Regression 45 4.1 Giới thiệu 45 4.2 Softmax function 46 4.3 Hàm mát phương pháp tối ưu 49 4.4 Ví dụ Python 55 4.5 Thảo luận 57 Multilayer neural network Backpropagation 58 5.1 Giới thiệu 58 5.2 Các ký hiệu khái niệm 61 5.3 Activation function – Hàm kích hoạt 63 5.4 Backpropagation 65 5.5 Ví dụ Python 69 5.6 Tránh overfitting cho neural network weight decay 74 5.7 Đọc thêm 76 References 77 Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook VII Contents Index 78 Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook Contents Bảng 0.1: Bảng ký hiệu Ký hiệu Ý nghĩa x, y, N, k x, y X, Y R ∈ ∃ ∀ xi sgn(x) exp(x) aij N C Rm Rm×n AT AH A−1 A† A−T x p A F diag(A) trace(A) det(A) rank(A) Sn Sn + Sn ++ o.w Ra mắt 01/01/2018 in nghiêng, thường hoa, số vô hướng in đậm, chữ thường, vector in đậm, chữ hoa, ma trận tập hợp số thực phần tử thuộc tập hợp tồn ký hiệu Ví dụ a f (x) nghĩa “ký hiệu f (x) a” phần tử thứ i (tính từ 1) vector x hàm xác định dấu Bằng x ≥ 0, -1 x < ex phần tử hàng thứ i, cột thứ j ma trận A tập hợp số tự nhiên tập hợp số phức tập hợp vector thực có m phần tử tập hợp ma trận thực có m hàng, n cột chuyển vị ma trận A chuyển vị liên hợp (Hermitian) ma trận phức A nghịch đảo ma trận vuông A, tồn giả nghịch đảo ma trận không thiết vuông A nghịch đảo chuyển vị ma trận A norm p vector x Frobenius norm ma trận A đường chéo ma trận A trace ma trận A định thức ma trận vuông A hạng ma trận A tập hợp ma trận vuông đối xứng bận n tập hợp ma trận nửa xác định dương bậc n tập hợp ma trận xác định dương bậc n otherwise – trường hợp lại Pre-order ebook www.machinelearningcoban.com/ebook Phần IV Neural Networks Chương Gradient Descent 1.1 Giới thiệu Hình 1.2 mơ tả biến thiên hàm số f (x) = 12 (x − 1)2 − Điểm màu xanh lục điểm cực tiểu (local minimum), điểm làm cho hàm số đạt giá trị nhỏ (global minimum) Global minimum trường hợp đặc biệt local minimum Giả sử quan tâm đến hàm số biến có đạo hàm nơi Chúng ta ôn lại vài điểm bản: Điểm local minimum x∗ hàm số điểm có đạo hàm f (x∗ ) khơng Hơn nữa, lân cận nó, đạo hàm điểm phía bên trái x∗ khơng dương, đạo hàm điểm phía bên phải x∗ không âm Đường tiếp tuyến với đồ thị hàm số điểm có hệ số góc đạo hàm hàm số điểm Trong Hình 1.1, điểm bên trái điểm local minimum màu xanh lục có đạo hàm âm, điểm bên phải có đạo hàm dương Và hàm số này, xa phía trái điểm local minimum đạo hàm âm, xa phía phải đạo hàm dương Trong machine learning nói riêng tốn tối ưu nói chung, thường xuyên phải tìm giá trị lớn nhỏ hàm số Nếu xét riêng hàm khả vi liên tục, việc giải phương trình đạo hàm khơng thường phức tạp vơ số nghiệm Thay vào đó, người ta thường cố gắng tìm điểm local minimum, mức độ đó, coi nghiệm cần tìm tốn CHƯƠNG GRADIENT DESCENT Hình 1.1: Khảo sát biến thiên đa thức bậc hai f (x) = 12 (x − 1)2 − x −∞ − f (x) +∞ f (x) +∞ + +∞ -2 x∗ Các điểm local minimum nghiệm phương trình đạo hàm không (vẫn giả sử hàm liên tục khả vi) Nếu cách tìm tồn (hữu hạn) điểm cực tiểu, ta cần thay điểm local minimum vào hàm số tìm điểm làm cho hàm có giá trị nhỏ Tuy nhiên, hầu hết trường hợp, việc giải phương trình đạo hàm khơng bất khả thi Ngun nhân đến từ phức tạp dạng đạo hàm, từ việc điểm liệu có số chiều lớn, từ việc có nhiều điểm liệu Thực tế cho thấy, nhiều toán machine learning, nghiệm local minimum thường cho kết tốt, đặc biệt deep learning Hướng tiếp cận phổ biến để giải toán tối ưu xuất phát từ điểm coi gần với nghiệm tốn, sau dùng phép tốn lặp để tiến dần đến điểm cần tìm, tức đến đạo hàm gần với không Gradient Descent (GD) biến thể phương pháp dùng nhiều 1.2 Gradient Descent cho hàm biến Xét hàm số biết f : R → R Quay trở lại Hình 1.1 vài quan sát nêu Giả sử xt điểm ta tìm sau vòng lặp thứ t Ta cần tìm thuật tốn để đưa xt gần x∗ tốt Ta lại có thêm hai quan sát rút từ Hình 1.1: Nếu đạo hàm hàm số xt : f (xt ) > xt nằm bên phải so với x∗ (và ngược lại) Để điểm xt+1 gần với x∗ hơn, cần di chuyển xt phía bên trái, tức phía âm Nói khác, ta cần di chuyển ngược dấu với đạo hàm xt+1 = xt + ∆ (1.1) Trong ∆ đại lượng ngược dấu với đạo hàm f (xt ) Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION 64 ReLU function 3.0 a = max(z, 0) 2.5 2.0 1.5 1.0 0.5 0.0 −3 −2 −1 z (a) (b) Hình 5.6: Hàm ReLU tốc độ hội tụ so sánh với hàm exp(z) − exp (−z) Hàm số có exp(z) + exp(−z) tính chất đầu chạy từ -1 đến 1, khiến cho có tính chất zero-centered, thay dương hàm sigmoid Gần đây, hàm sigmoid sử dụng output layer yêu cầu đầu giá trị nhị phân Một nhược điểm dễ nhận thấy đầu vào có trị tuyệt đối lớn (rất âm dương), đạo hàm sigmoid gần với Điều đồng nghĩa với việc hệ số tương ứng với unit xét gần không cập nhật sử dụng công thức cập nhật gradient desent Thêm nữa, khởi tạo hệ số cho multilayer neural network với hàm kích hoạt sigmoid, phải tránh trường hợp đầu vào hidden layer q lớn, đầu hidden layer gần với 1, dẫn đến đạo hàm gradient desent hoạt động không hiệu mang lại hiệu tốt hàm với tanh(z) = 5.3.3 ReLU ReLU (Rectified Linear Unit) sử dụng rộng rãi gần tính đơn giản Đồ thị hàm ReLU minh họa Hình 5.6a Hàm ReLU có cơng thức tốn học f (z) = max(0, z) - đơn giản, lợi mặt tính tốn Đạo hàm điểm âm, điểm dương ReLU chứng minh giúp cho việc huấn luyện multilayer neural network deep network (rất nhiều hidden layer) nhanh nhiều so với hàm [KSH12] Hình 5.6b so sánh hội tụ hàm mát sử dụng hai hàm kích ReLU Sự tăng tốc cho ReLU tính tốn gần tức thời gradient tính cực nhanh Mặc dù có nhược điểm đạo hàm với giá trị đầu vào âm, ReLU chứng thực nghiệm khắc phục việc việc tăng số hidden unit4 Neural Networks and Deep Learning – Activation function (https:// goo.gl/ QGjKmU ) Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook 65 CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION ReLU trở thành hàm kích hoạt nên thử thiết kế multilayer neural network Hầu hết network có hàm kích hoạt ReLU hidden unit, trừ hàm kích hoạt output layer phụ thuộc vào đầu thực tốn (có thể nhận giá trị âm, nhị phân, v.v.) Ngoài ra, biến thể ReLU leaky rectified linear unit (Leaky ReLU), parametric rectified linear unit (PReLU) randomized leaky rectified linear units (RReLU) [XWCL15] sử dụng báo cáo có kết tốt Trong thực tế, trước thiết kế, ta thường khơng biết xác hàm kích hoạt cho kết tốt Tuy nhiên, ta nên bắt đầu ReLU, kết chưa khả quan thay biến thể so sánh kết 5.4 Backpropagation Phương pháp phổ biến để tối ưu multilayer neural network gradient descent (GD) Để áp dụng GD, cần tính đạo hàm hàm mát theo ma trận trọng số W(l) vector bias b(l) Giả sử J(W, b, X, Y) hàm mát toán, W, b tập hợp tất ma trận trọng số layer vector bias layer X, Y cặp liệu huấn luyện với cột tương ứng với điểm liệu Để áp dụng phương pháp gradient descent, cần tính ∂J ∂J ; (l) , l = 1, 2, , L (l) ∂W ∂b (5.8) a(0) = x z(l) = W(l)T a(l−1) + b(l) , l = 1, 2, , L a(l) = f (l) (z(l) ), l = 1, 2, , L y ˆ = a(L) (5.9) (5.10) (5.11) (5.12) Nhắc lại trình feedforward Một ví dụ hàm mát hàm mean square error (MSE) tức trung bình bình phương lỗi toán regression J(W, b, X, Y) = N N n=1 yn − y ˆn 22 = N N n=1 yn − a(L) n 2 (5.13) Với N số cặp liệu (x, y) tập huấn luyện Theo cơng thức này, việc tính toán trực tiếp giá trị đạo hàm phức tạp hàm mát khơng phụ thuộc trực tiếp vào ma trận hệ số vector bias Phương pháp phổ biến dùng có tên backpropagation giúp tính đạo hàm ngược từ layer cuối Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION 66 đến layer Layer cuối tính tốn trước gần gũi với đầu dự đoán hàm mát Việc tính tốn đạo hàm ma trận hệ số layer trước thực dựa quy tắc chuỗi quen thuộc cho đạo hàm hàm hợp Stochastic gradient descent sử dụng để tính gradient cho ma trận trọng số biases dựa cặp điểm training x, y Để cho đơn giản, ta coi J hàm mát xét cặp điểm này, J hàm mát bất kỳ, không hàm MSE Đạo hàm hàm mát theo thành phần ma trận trọng số output layer ∂J (L) ∂wij Trong (L) (L) ej = ∂J (L) ∂zj (L)T wj a(L−1) zj = layer cuối = (L) ∂zj ∂J (L) ∂zj (L) (L−1) (L) ∂wij = ej (5.14) (L) thường đại lượng khơng q khó để tính toán ∂zj (L−1) (L) ∂wij = (L) + bj Tương tự thế, đạo hàm hàm mát theo bias ∂J = (L) ∂bj (L) ∂J (L) ∂zj ∂zj (L) (L) ∂bj = ej (5.15) Với đạo hàm theo hệ số lớp l thấp hơn, xem Hình 5.7 Ở đây, unit, đầu vào z đầu a viết riêng để tiện theo dõi Dựa vào Hình 5.7, quy nạp ngược từ cuối, ta tính ∂J (l) ∂wij = ∂J (l) ∂zj (l) ∂zj (l) ∂wij (l) (l−1) = e j (5.16) với (l) ej = ∂J (l) ∂zj (l) ∂J ∂aj = (l) (l) ∂aj ∂zj d(l+1) = (5.17) (l+1) ∂J ∂zk (l) f (l+1) (l) ∂aj k=1 ∂zk (l+1) (l+1) (l+1) (l) (zj ) = (l+1) d(l+1) (l+1) ek k=1 (l+1) (l+1) wjk (l) f (l) (zj ) (5.18) e(l+1) = [e1 , e2 , , ed(l+1) ]T ∈ Rd ×1 wj: hiểu hàng thứ j (l+1) ma trận W (chú ý dấu hai chấm, khơng có dấu này, mặc định dùng để ký hiệu cho vector cột) (l) Dấu tính tổng dòng thứ hai phép tính xuất aj đóng góp vào việc (l+1) tính tất zk , k = 1, 2, , d(l+1) Biểu thức đạo hàm ngồi dấu ngoặc lớn (l) (l) aj = f (l) (zj ) Tới đây, ta thấy việc activation function có đạo hàm đơn giản (l) có ích nhiều việc tính tốn Với cách làm tương tự, bạn đọc suy ∂J(l) = ej ∂bj Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook 67 CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION (l − 1)th layer (l) (l−1) z1 (l−1) zi (l−1) zd(l−1) z(l−1) (l−1) a1 (l) z1 (l) a1 bj (l+1) z1 (l) ai(l−1) (l + 1)th layer lth layer (l) z2 a2 (l) wij (l) zj (l−1) (l+1) wjk (l) aj zd(l) (l) ad(l) (l) z(l) a(l) (l−1) W(l) ∈ Rd b(l) ∈ Rd a(l+1) k (l+1) ad(l−1) a(l−1) (l+1) zk a(l+1) (l) ad(l+1) z(l+1) a(l+1) ×1 (l)T (l−1) zj = wj a (l) + bj z(l) = W(l)T a(l−1) + b(l) (l+1) zd(l+1) (l) ×d(l) a(l) = f (z(l) ) Hình 5.7: Mơ cách tính backpropagation Layer cuối output layer (l) Nhận thấy cơng thức đây, việc tính ej đóng vài trò quan trọng (l+1) Hơn nữa, để tính giá trị này, ta cần tính ej Nói cách khác, ta cần tính ngược giá trị từ cuối Cái tên backpropagation xuất phát từ việc Việc tính tốn đạo hàm sử dụng SGD tóm tắt sau (l) (l) Thuật toán 5.1: Backpropagation tới wij , bi Bước feedforward: Với giá trị đầu vào x, tính giá trị đầu network, q trình tính toán, lưu lại giá trị activation a(l) layer Với unit j output layer, tính (L) ej = ∂J (L) ∂zj ∂J ; (L) ∂wij (L−1) (L) ej ; = ∂J (L) ∂bj (L) = ej (5.19) Với l = L − 1, L − 2, , 1, tính: (l) (l+1) (l+1) ej = wj: e (l) f (zj ) (5.20) Cập nhật đạo hàm cho hệ số ∂J (l) ∂wij Ra mắt 01/01/2018 (l−1) (l) ej ; = ∂J (l) ∂bj (l) = ej (5.21) Pre-order ebook www.machinelearningcoban.com/ebook CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION 68 Phiên vectorization thuật tốn thực sau Thuật toán 5.2: Backpropagation tới W(l) vector bias b(l) Bước feedforward: Với giá trị đầu vào x, tính giá trị đầu network, q trình tính tốn, lưu lại activation a(l) layer Với output layer, tính e(L) = ∂J ∂J ∂J (L) (L−1) ×d(L) ∈ Rd ; = a(L−1) e(L)T ∈ Rd ; = e(L) (L) (L) ∂z ∂W ∂b(L) Với l = L − 1, L − 2, , 1, tính: e(l) = W(l+1) e(l+1) (l) f (z(l) ) ∈ Rd (5.22) element-wise product hay Hadamard product tức lấy thành phần hai vector nhân với để vector kết Cập nhật đạo hàm cho ma trận trọng số vector biases: ∂J (l−1) ×d(l) = a(l−1) e(l)T ∈ Rd ; (l) ∂W ∂J = e(l) ∂b(l) (5.23) Khi làm việc với phép tính đạo hàm phức tạp, ta cần nhớ hai điều sau Đạo hàm hàm có đầu số vơ hướng theo vector ma trận đại lượng có chiều với vector ma trận Để phép nhân ma trận, vector thực được, ta cần đảm bảo chiều chúng phù hợp (L−1) (L) ∂J (L−1) (L)T ×d e , vế trái ma trận thuộc Rd , vế phải Trong công thức ∂W (L) = a phải đại lượng có chiều tương tự Từ bạn đọc thấy vế phải phải a(L−1) e(L)T mà a(L−1) e(L) hay e(L) a(L−1) 5.4.1 Backpropagation cho Batch (mini-batch) Gradient Descent Nếu ta muốn thực batch mini-batch gradient descent nào? Trong thực tế, mini-batch gradient descent sử dụng nhiều với toán mà tập huấn luyện lớn Nếu lượng liệu nhỏ, batch gradient descent trực tiếp sử dụng Khi đó, cặp (input, output) dạng ma trận (X, Y) Giả sử lần tính tốn, ta lấy (0) (L) N liệu để tính tốn Khi đó, X ∈ Rd ×N , Y ∈ Rd ×N Với d(0) = d chiều liệu đầu vào (khơng tính bias) Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook 69 CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION Khi activation sau layer có dạng A(l) ∈ Rd Và ta suy cơng thức cập nhật sau (l) ×N (l) ×N Tương tự thế, E(l) ∈ Rd Thuật toán 5.3: Backpropagation tới W(l) bias b(l) (mini-batch) Bước feedforward: Với toàn liệu (batch) nhóm liệu (mini-batch) đầu vào X, tính giá trị đầu network, q trình tính tốn, lưu lại activation A(l) layer Mỗi cột A(l) tương ứng với cột X, tức điểm liệu đầu vào Với output layer, tính E(L) = ∂J ; ∂Z(L) ∂J = A(L−1) E(L)T ; ∂W(L) ∂J = ∂b(L) N e(L) n (5.24) n=1 Với l = L − 1, L − 2, , 1, tính: E(l) = W(l+1) E(l+1) f (Z(l) ) (5.25) element-wise product hay Hadamard product tức lấy thành phần hai ma trận nhân với để ma trận kết Cập nhật đạo hàm cho ma trận trọng số vector biases: ∂J = A(l−1) E(l)T ; ∂W(l) ∂J = ∂b(l) N e(l) n (5.26) n=1 5.5 Ví dụ Python Trong mục này, tạo liệu giả không gian hai chiều cho đường ranh giới lớp khơng có dạng tuyến tính Điều khiến cho softmax regression khơng làm việc Tuy nhiên, cách thêm hidden layer, thấy neural network làm việc hiệu 5.5.1 Tạo liệu giả Các điểm liệu giả ba lớp tạo minh hoạ màu khác Hình 5.8a Ta thấy rõ ràng đường ranh giới lớp liệu khơng thể đường thẳng Hình 5.8b ví dụ đường ranh giới coi tốt với hầu hết điểm liệu nằm vào khu vực có màu tương ứng Các đường biên tạo sử dụng multilayer neural network với hidden layer sử dụng ReLU làm hàm kích hoạt output layer softmax regression Hình 5.9 Chúng ta sâu vào xây dựng phân lớp dựa liệu huấn luyện Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION (a) 70 (b) Hình 5.8: Dữ liệu giả khơng gian hai chiều ví dụ ranh giới tốt W(1) Input layer Hình 5.9: Multilayer neural network với input layer có hai unit (bias ẩn), hidden layer với hàm kích hoạt ReLU (có thể có số lượng hidden unit tuỳ ý), output layer softmax regression với ba phần tử đại diện cho ba lớp liệu W(2) Hidden layer Output Softmax Regression Nhắc lại hàm ReLU f (z) = max(z, 0), với đạo hàm f (z) = z ≤ o.w (5.27) Vì lượng liệu huấn luyện nhỏ với 100 điểm cho lớp, ta dùng batch gradient descent để cập nhật ma trận hệ số vector bias Trước hết, ta cần tính đạo hàm hàm mát theo ma trận vector cách áp dụng backpropagation 5.5.2 Tính tốn Feedforward Giả sử cặp liệu huấn luyện (xi , yi ) với yi vector dạng one-hot Các điểm liệu xếp cạnh tạo thành ma trận đầu vào X ma trận đầu Y Bước feedforward neural network thực sau Z(1) = W(1)T X + B(1) A(1) = max(Z(1) , 0) Z(2) = W(2)T A(1) + B(2) ˆ = A(2) = softmax(Z(2) ) Y Ra mắt 01/01/2018 (5.28) (5.29) (5.30) (5.31) Pre-order ebook www.machinelearningcoban.com/ebook 71 CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION Trong B(1) , B(2) ma trận bias với tất cột b(1) b(2)5 Hàm mát tính dựa hàm cross-entropy J J(W, b; X, Y) = − N N C yji log(ˆ yji ) (5.32) i=1 j=1 5.5.3 Tính tốn Backpropagation Áp dụng Thuật tốn 5.3, ta có ∂J = (A(2) − Y) (2) ∂Z N N ∂J (1) (2)T =A E ; = e(2) n ∂b(2) n=1 E(2) = ∂J ∂W(2) E(1) = W(2) E(2) (5.33) (5.34) f (Z(1) ) ∂J = A(0) E(1)T = XE(1)T ; ∂W(1) (5.35) ∂J = ∂b(1) N e(1) n (5.36) n=1 Các công thức tốn học phức tạp lập trình cách đơn giản numpy 5.5.4 Triển khai thuật toán numpy Trước hết, ta viết lại hàm softmax cross-entropy def softmax_stable(Z): """ Compute softmax values for each sets of scores in Z each ROW of Z is a set of scores """ e_Z = np.exp(Z - np.max(Z, axis = 1, keepdims = True)) A = e_Z / e_Z.sum(axis = 1, keepdims = True) return A def crossentropy_loss(Yhat, y): """ Yhat: a numpy array of shape (Npoints, nClasses) predicted output y: a numpy array of shape (Npoints) ground truth NOTE: We don’t need to use the one-hot vector here since most of elements are zeros When programming in numpy, in each row of Yhat, we need to access to the corresponding indexes only """ id0 = range(Yhat.shape[0]) return -np.mean(np.log(Yhat[id0, y])) Ta cần xếp vector bias giống để tạo thành ma trận bias tốn học, khơng có định nghĩa tổng ma trận vector Khi lập trình, việc khả thi Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION 72 Tiếp theo hàm phục vụ việc khởi tạo, dự đoán huấn luyện network def mlp_init(d0, d1, d2): """ Initialize W1, b1, W2, b2 d0: dimension of input data d1: number of hidden unit d2: number of output unit = number of classes """ W1 = 0.01*np.random.randn(d0, d1) b1 = np.zeros(d1) W2 = 0.01*np.random.randn(d1, d2) b2 = np.zeros(d2) return (W1, b1, W2, b2) def mlp_predict(X, W1, b1, W2, b2): """ Suppose that the network has been trained, predict class of new points X: data matrix, each ROW is one data point W1, b1, W2, b2: learned weight matrices and biases """ Z1 = X.dot(W1) + b1 # shape (N, d1) A1 = np.maximum(Z1, 0) # shape (N, d1) Z2 = A1.dot(W2) + b2 # shape (N, d2) return np.argmax(Z2, axis=1) def mlp_fit(X, y, W1, b1, W2, b2, eta): loss_hist = [] for i in xrange(10000): # number of epoches # feedforward Z1 = X.dot(W1) + b1 # shape (N, d1) A1 = np.maximum(Z1, 0) # shape (N, d1) Z2 = A1.dot(W2) + b2 # shape (N, d2) Yhat = softmax_stable(Z2) # shape (N, d2) if i %1000 == 0: # print loss after each 1000 iterations loss = crossentropy_loss(Yhat, y) print("iter %d, loss: %f" %(i, loss)) loss_hist.append(loss) # back propagation id0 = range(Yhat.shape[0]) Yhat[id0, y] -=1 E2 = Yhat/N dW2 = np.dot(A1.T, E2) db2 = np.sum(E2, axis = 0) E1 = np.dot(E2, W2.T) E1[Z1 0, ln tồn neural network với đầu có dạng g(x) với hidden layer (với số hidden unit đủ lớn hàm kích hoạt phi tuyến phù hợp) cho với x, |f (x) − g(x)| < ε Nói cách khác, neural network có khả xấp xỉ hàm liên tục [Cyb89] Trên thực tế, việc tìm số lượng hidden unit hàm kích hoạt nói bất khả thi Thay vào đó, thực nghiệm chứng minh neural networks với nhiều hidden layer kết hợp với hàm kích hoạt đơn giản, ví dụ ReLU, có khả xấp xỉ liệu tốt tốt Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION #hidden units = 2, accuracy =65.0% #hidden units = 5, accuracy =85.6666666667% (a) (b) #hidden units = 15, accuracy = 99.00 #hidden units = 30, accuracy = 99.33 (c) (d) 74 Hình 5.10: Kết với số lượng units hidden layer khác Tuy nhiên, số lượng hidden layer lớn lên, số lượng hệ số cần tối ưu lớn lên mơ hình trở nên phức tạp Sự phức tạp ảnh hưởng tới hai khia cạnh Thứ nhất, tốc độ tính tốn bị chậm nhiều Thứ hai, mơ hình q phức tạp, biểu diễn tốt liệu huấn luyện, khơng biểu diễn tốt liệu kiểm thử Đây tượng overfitting Vậy có kỹ thuật giúp tránh overfitting cho multilayer neural network? Ngồi kỹ thuật tốn cross-validation, quan tâm tới phương pháp regularization Các neural network với regularization gọi regularized neural network Kỹ thuật phổ biến dùng để tránh overfitting weight decay 5.6 Tránh overfitting cho neural network weight decay Với weight decay, hàm mát cộng thêm đại lượng regularization có dạng L W(l) λR(W) = λ F l=1 Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook 75 CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION tức tổng bình phương Frobenius norm tất ma trận hệ số Chú ý làm việc với multilayer neural network, bias regularized Đây lý ta nên tách rời ma trận hệ số vector bias làm việc với multilayer neural network Việc tối thiểu hàm mát (với số hạng regularization) khiến cho thành phần vector hệ số W(l) không lớn, chí nhiều thành phần gần với khơng Điều khiến cho việc có nhiều hidden unit an tồn nhiều số chúng gần với khơng Tiếp theo, làm ví dụ không gian hai chiều Lần này, sử dụng thư viện scikit-learn from future import print_function import numpy as np from sklearn.neural_network import MLPClassifier means = [[-1, -1], [1, -1], [0, 1]] cov = [[1, 0], [0, 1]] N = 20 X0 = np.random.multivariate_normal(means[0], cov, N) X1 = np.random.multivariate_normal(means[1], cov, N) X2 = np.random.multivariate_normal(means[2], cov, N) X = np.concatenate((X0, X1, X2), axis = 0) y = np.asarray([0]*N + [1]*N + [2]*N) alpha = 1e-1 # regularization parameter clf = MLPClassifier(solver=’lbfgs’, alpha=alpha, hidden_layer_sizes=(100)) clf.fit(X, y) y_pred = clf.predict(X) acc = 100*np.mean(y_pred == y) print(’training accuracy: %.2f %%’ % acc) Trong đoạn code trên, thuộc tính alpha tham số regularization λ alpha lớn khiến thành phần ma trận hệ số nhỏ Thuộc tính hidden_layer_sizes số lượng hidden unit hidden layer Nếu có nhiều hidden layer, chẳng hạn hai với số lượng hidden unit 10 100, ta cần khai báo hidden_layer_sizes=(10, 100) Hình 5.11 minh hoạ ranh giới lớp tìm với giá trị alpha khác nhau, tức mức độ regularization khác Khi alpha nhỏ cỡ 0.01, ranh giới tìm trơng khơng tự nhiên vùng xác định lớp màu lục không liên tục Mặc dù độ xác tập huấn luyện 100%, ta quan sát thấy overfitting xảy Với alpha = 0.1, kết cho thấy lãnh thổ lớp liên tục, overfitting xảy Khi alpha cao hơn, độ xác giảm xuống đường ranh giới tự nhiên Bạn đọc thay đổi giá trị alpha source code (https:// goo.gl/ czxrSf ) quan sát tượng xảy Đặc biệt, alpha = 100, độ xác 33.33% Tại lại vậy? Hy vọng bạn đọc tự trả lời Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook CHƯƠNG MULTILAYER NEURAL NETWORK VÀ BACKPROPAGATION #alpha = 0.01, accuracy =100.0% #alpha = 0.1, accuracy =100.0% (a) (b) #alpha = 1.0, accuracy =80.0% #alpha = 10.0, accuracy =80.0% (c) (d) 76 Hình 5.11: Kết với số lượng units hidden layer khác 5.7 Đọc thêm Neural Networks: Setting up the Architecture, Andrej Karpathy (https:// goo.gl/ rfzCVK ) Neural Networks, Case study, Andrej Karpathy (https:// goo.gl/ 3ihCxL) Lecture Notes on Sparse Autoencoders, Andrew Ng (https:// goo.gl/ yTgtLe) Yes you should understand backprop (https:// goo.gl/ 8B3h1b) Backpropagation, Intuitions, Andrej Karpathy (https:// goo.gl/ fjHzNV ) How the backpropagation algorithm works, Michael Nielsen (https:// goo.gl/ mwz2kU ) Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook References AMMIL12 Yaser S Abu-Mostafa, Malik Magdon-Ismail, and Hsuan-Tien Lin Learning from data, volume AMLBook New York, NY, USA:, 2012 Cyb89 George Cybenko Approximation by superpositions of a sigmoidal function Mathematics of Control, Signals, and Systems (MCSS), 2(4):303–314, 1989 DHS11 John Duchi, Elad Hazan, and Yoram Singer Adaptive subgradient methods for online learning and stochastic optimization Journal of Machine Learning Research, 12(Jul):2121–2159, 2011 KB14 Diederik Kingma and Jimmy Ba Adam: A method for stochastic optimization arXiv preprint arXiv:1412.6980, 2014 KSH12 Alex Krizhevsky, Ilya Sutskever, and Geoffrey E Hinton Imagenet classification with deep convolutional neural networks In Advances in neural information processing systems, pages 1097–1105, 2012 Nes07 Yurii Nesterov Gradient methods for minimizing composite objective function, 2007 Ros57 F Rosemblat The perceptron: A perceiving and recognizing automation Cornell Aeronautical Laboratory Report, 1957 Rud16 Sebastian Ruder An overview of gradient descent optimization algorithms arXiv preprint arXiv:1609.04747, 2016 TH12 Tijmen Tieleman and Geoffrey Hinton Lecture 6.5-rmsprop: Divide the gradient by a running average of its recent magnitude COURSERA: Neural networks for machine learning, 4(2):26–31, 2012 XWCL15 Bing Xu, Naiyan Wang, Tianqi Chen, and Mu Li Empirical evaluation of rectified activations in convolutional network arXiv preprint arXiv:1505.00853, 2015 Index activation fuction sigmoid fuction, 32 fuction, 32 activation function – hàm kích hoạt, 63 cross entropy, 49 element-wise, 63 epoch, 18 GD, xem gradient descent, gradient descent, stopping criteria – điều kiện dừng, 19 batch gradient descent, 18 mini-batch gradient descent, 19 momentum, 13 Nesterov accelerated gradient, 16 stochastic gradient descent, 18 hierarchical, 41 level sets – đường đồng mức, 12 linearly separable, 21 local minimum – cực tiểu, one-vs-one, 41 one-vs-rest, 42 online learning, 18 perceptron learning algorithm, 21 PLA, 21 regularized neural network, 74 ReLU, 64 SGD, xem gradient descent, 18 sigmoid, 63 softmax function, 46 softmax regression, 45 tanh, 63 ... Interactive Tutorial on Numerical Optimization Machine Learning – Bài 7, Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook Chương Perceptron Learning Algorithm 2.1 Giới thiệu Trong... Pre-order ebook www.machinelearningcoban.com/ebook VII Contents Index 78 Ra mắt 01/01/2018 Pre-order ebook www.machinelearningcoban.com/ebook... thoát bẫy Learning rate khác Tốc độ hội tụ GD phụ thuộc vào điểm khởi tạo ban đầu mà phụ thuộc vào learning rate Hình 1.4 Hình 1.5 thể vị trí nghiệm qua vòng lặp với điểm khởi tạo x0 = −5 learning