KIẾN THỨC CƠ BẢN VỀ HỌC SÂU DEEP LEARNING

Estimated reading: 21 minutes 48 views

Từ đây sẽ là chương học chi tiết hơn về Học sâu (Deep learning / ディープラーニング), khái niệm mà chúng ta đã chạm đến ở một vài nội dung trước đó. Bản thân nó là phương pháp đã phát triển qua lịch sử như thế nào, và nó hữu ích ra sao trong những trường hợp nào, chúng ta sẽ giải thích từng bước một kèm theo các ví dụ cụ thể.

34. Mạng nơ-ron và lịch sử của nó (Neural network and its history / ニューラルネットワークとその歴史)

Mạng nơ-ron (Neural network / ニューラルネットワーク) là một mạng lưới được mô hình hóa theo cấu trúc của Mạch thần kinh (Neuron / 神経回路) của con người. Nhắc đến mạch thần kinh, chúng ta thường dễ hình dung đến thứ gì đó gần giống con người, nhưng thực tế đây là một mô hình rất đơn giản dựa trên phép tính cộng.

● Perceptron và Mạng nơ-ron (Perceptron and Neural network / パーセプトロンとニューラルネットワーク)

Tại đây, chúng ta sẽ học về Perceptron (Mô hình nơ-ron / ニューロンモデル), cơ chế căn bản của Học sâu. Perceptron là mô hình hóa của một nơ-ron đơn lẻ, và cấu trúc của nó rất đơn giản.

Mỗi đầu vào (Input / 入力), như được chỉ ra bằng mũi tên màu xanh ở hình dưới, sẽ được nhân với một Trọng số (Weight / 重み – mức độ liên kết mạnh yếu) tương ứng với đầu vào tiếp theo, sau đó được cộng lại. Hơn nữa, nó cũng được cộng thêm một giá trị là 1 nhân với một trọng số. Đây được gọi là Hạng tử hằng số (Constant term / 定数項), được chỉ ra bằng mũi tên màu xanh lá cây ở hình dưới. Sau khi phép cộng kết thúc, kết quả sẽ được đưa vào một Hàm phi tuyến tính (Non-linear function / 非線形関数) gọi là Hàm kích hoạt (Activation function / 活性化関数) như mũi tên màu đỏ (tham khảo Tr. 150), và trở thành đầu ra (Output / 出力) cuối cùng. Lưu ý rằng, nếu bỏ qua phần tổng và hàm kích hoạt, perceptron có thể được vẽ như hình bên phải dưới đây. Hãy kiểm tra nó cùng với hình vẽ chồng 2 perceptron để tạo ra 2 đầu ra.

■ Perceptron (パーセプトロン)

Đầu vào $\rightarrow$ Nhân trọng số $\rightarrow$ Phép cộng $\rightarrow$ Kích hoạt phi tuyến $\rightarrow$ Đầu ra y

Perceptron (Hình lược bớt)

Perceptron với 2 đầu ra

Khi tiếp tục kết nối các perceptron lại với nhau ở phía sau, ta sẽ tạo ra một Mạng nơ-ron (Neural network / ニューラルネットワーク) có chứa Lớp ẩn (Hidden layer / 隠れ層) nằm giữa Lớp đầu vào (Input layer / 入力層) và Lớp đầu ra (Output layer / 出力層). Trong khi lớp đầu vào và lớp đầu ra có thể quan sát trực tiếp, thì lớp ẩn lại không thể quan sát trực tiếp, đúng như nghĩa đen là nó bị “ẩn”. Mạng nơ-ron ở hình dưới là một mạng nơ-ron 2 lớp có chứa 1 lớp ẩn. Lưu ý rằng, phần được biểu thị bằng hình tròn gọi là Nút (Node / ノード), phần được biểu thị bằng mũi tên gọi là Cạnh (Edge / エッジ). Khi đếm số lớp, tốt nhất nên loại trừ lớp đầu vào và tính là “1 lớp cho mỗi mạng lưới cạnh và nút”. Từ lớp đầu vào $\rightarrow$ lớp ẩn, mỗi nút của lớp đầu vào được liên kết với tất cả các nút của lớp ẩn (từ lớp ẩn $\rightarrow$ lớp đầu ra cũng tương tự). Một lớp như vậy được gọi là Lớp liên kết đầy đủ (Fully connected layer / 全結合層).

Khi tiếp tục tăng thêm số lượng lớp ẩn này, ta sẽ hoàn thành một Mạng nơ-ron sâu (Deep neural network / ディープニューラルネットワーク). Việc tăng số lượng lớp ẩn và số lượng nút trong lớp ẩn làm cho số lượng Tham số (Parameter / パラメータ – tức trọng số) nhiều hơn, cho phép thực hiện đầu ra phức tạp hơn. Mặt khác, khi số lượng tham số nhiều hơn, việc học sẽ cần nhiều dữ liệu hơn, và Quá khớp (Overfitting / 過学習) cũng dễ xảy ra hơn. Kỹ thuật đặc trưng của mạng nơ-ron được sử dụng để ngăn chặn điều đó là Loại bỏ (Dropout / ドロップアウト). Loại bỏ là phương pháp tiến hành học với việc coi như không có một số nút với một xác suất nhất định.

■ Mạng nơ-ron (2 lớp)

Lớp đầu vào $\rightarrow$ Lớp thứ 1 (Lớp liên kết đầy đủ) $\rightarrow$ Lớp ẩn $\rightarrow$ Lớp thứ 2 (Lớp liên kết đầy đủ) $\rightarrow$ Lớp đầu ra

■ Mạng nơ-ron sâu

Lớp đầu vào $\rightarrow$ Lớp ẩn … Lớp ẩn $\rightarrow$ Lớp đầu ra (Áp dụng Dropout trong quá trình học)

● Tính phi tuyến tính của Hàm kích hoạt (Non-linearity of Activation function / 活性化関数の非線形性)

Hàm kích hoạt (Activation function / 活性化関数) là một biểu thức toán học dùng để biến đổi tổng có trọng số của đầu vào thành một giá trị khác. Nó vô cùng quan trọng trong Học sâu. Các hàm kích hoạt đang được sử dụng hiện nay đều là Hàm phi tuyến tính (Non-linear function / 非線形関数). Hàm phi tuyến tính là hàm số không tạo thành một đường thẳng trên đồ thị. Ngoài ra, Hàm tuyến tính (Linear function / 線形関数) là hàm số được biểu diễn dưới dạng y=◯x+△, tạo thành một đường thẳng trên đồ thị. Các hàm kích hoạt tiêu biểu có thể kể đến như Hàm Sigmoid (Sigmoid function / シグモイド関数), Hàm Tang hyperbol (Hyperbolic tangent function / ハイパボリックタンジェント(tanh)関数), Hàm Rectified Linear Unit (ReLU), v.v. Hàm Sigmoid chuyển đổi bất kỳ số lượng đầu vào nào thành giá trị từ 0 đến 1, do đó nó rất hữu ích khi cuối cùng cần xuất ra xác suất. Hàm tanh chuyển đổi đầu vào thành từ -1 đến 1. Hàm ReLU nhìn có vẻ giống tuyến tính, nhưng vì nó bị gập khúc ở 0 nên nó là phi tuyến. Đặc điểm của nó là tính toán đơn giản vì nó chỉ giữ nguyên và cho qua các đầu vào từ 0 trở lên.

Trong số các hàm kích hoạt này, hàm ReLU được sử dụng rất phổ biến trong những năm gần đây. Lý do chính là vì nó ít bị Vấn đề tiêu biến đạo hàm (Vanishing gradient problem / 勾配消失問題 – tham khảo Section 39). Khi học, quá trình tính toán sử dụng giá trị đạo hàm (Độ dốc / Gradient / 勾配) của hàm kích hoạt, nhưng hàm Sigmoid và hàm tanh thường có độ dốc gần bằng 0, khiến quá trình học không tiến triển tốt. Về điểm đó, ở hàm ReLU, nếu x từ 0 trở lên thì độ dốc bằng 1, giúp việc học dễ tiến triển hơn. Khuyết điểm của hàm ReLU là độ dốc sẽ bằng 0 khi x nhỏ hơn 0, nhưng nhiều hàm dẫn xuất (phái sinh) của ReLU đã được đề xuất nhằm cải thiện khuyết điểm này.

■ Các Hàm kích hoạt chính

  • Sigmoid: Chuyển đổi đầu vào thành 0~1.
  • Hyperbolic tangent (tanh): Chuyển đổi đầu vào thành -1~1.
  • Rectified Linear Unit (ReLU): Chỉ cho đi qua nguyên vẹn các đầu vào từ 0 trở lên.

● Tầm quan trọng của Hàm kích hoạt phi tuyến tính

Lý do hàm kích hoạt là phi tuyến tính là vì hầu hết dữ liệu trong thực tế đều là phi tuyến. Ví dụ, dù bạn có cố gắng phân loại dữ liệu màu xanh lá và màu đỏ như hình bên dưới, bạn không thể phân loại bằng một đường thẳng. Với hàm kích hoạt tuyến tính, dù bạn có làm cho các lớp sâu đến đâu, đường ranh giới vẫn sẽ chỉ là một đường thẳng. Mặt khác, nếu sử dụng hàm kích hoạt phi tuyến, bạn có thể vẽ được những đường ranh giới phức tạp. Bằng trực giác cũng dễ hình dung rằng, nếu lặp đi lặp lại việc bẻ cong và làm méo mó đầu vào nhiều lần, bạn có thể xuất ra một đường cong méo mó phức tạp đến mức không thể khôi phục lại được.

Trên trang web có tên “A Neural Network Playground”, bạn có thể xác nhận trực quan sự thay đổi của kết quả đầu ra khi thay đổi các cài đặt của mạng nơ-ron. Khuyến khích những ai quan tâm nên xem thử.

■ Trực quan hóa đầu ra của Mạng nơ-ron

Lý do chèn hàm kích hoạt

  • Với hàm kích hoạt tuyến tính, dù làm sâu lớp vẫn chỉ là tuyến tính.
  • Với hàm kích hoạt phi tuyến, làm sâu lớp sẽ trở nên cực kỳ phức tạp.A Neural Network Playground (https://playground.tensorflow.org/)

● Nơ-ron hình thức và sự bùng nổ nghiên cứu (Formal neuron and research boom / 形式ニューロンと研究ブーム)

Cho đến đây, chúng ta đã xem qua tổng quan về cơ chế của mạng nơ-ron đang được sử dụng hiện nay. Cuối cùng, hãy cùng nhìn lại lịch sử của mạng nơ-ron. Nghiên cứu mạng nơ-ron từ trước đến nay đã lặp đi lặp lại chu kỳ của sự tiến bộ và đình trệ.

Khởi đầu của mạng nơ-ron là vào năm 1943, khi nhà sinh lý học thần kinh McCulloch và nhà toán học Pitts công bố Nơ-ron hình thức (Formal neuron / 形式ニューロン). Nơ-ron hình thức này là sự mô hình hóa tế bào thần kinh (nơ-ron) trong não người. Ở tế bào thần kinh, thông tin (tín hiệu điện) truyền vào từ nhiều sợi nhánh (dendrite) khác nhau sẽ kết hợp lại, và khi tín hiệu điện đạt trên một cường độ nhất định, nơ-ron sẽ bị kích thích. Sự kích thích này sẽ truyền qua sợi trục (axon) đến các nơ-ron khác. Tương tự, trong Nơ-ron hình thức, các giá trị đầu vào (x1, x2, x3, …) được nhân với các trọng số w1, w2, w3, … rồi cộng lại với nhau. Nếu giá trị đó vượt qua ngưỡng T, đầu ra y sẽ là 1, ngược lại sẽ là 0. Ngay cả một mô hình đơn giản như vậy cũng được phát hiện là có thể biểu diễn các biểu thức logic và công thức toán học cơ bản, làm tăng sự quan tâm đến các máy tính được mô hình hóa theo cấu trúc của não bộ.

Vào năm 1958, nhà tâm lý học Rosenblatt dựa trên nơ-ron hình thức đã công bố Perceptron (hơi khác một chút so với loại được giải thích ở đầu Section này). Cùng lúc đó, Rosenblatt đã nghĩ ra thuật toán để thực hiện Học có giám sát. Kỳ vọng rằng Trí tuệ nhân tạo (AI) có thể tự học đã tăng vọt, và nghiên cứu đã đón nhận sự bùng nổ đầu tiên vào những năm 1960.

■ Nghiên cứu cho đến thập niên 1960

  • Nơ-ron sinh học: Sợi nhánh $\rightarrow$ Thân tế bào $\rightarrow$ Sợi trục $\rightarrow$ Đầu tận cùng sợi trục (Thông tin truyền vào từ sợi nhánh sẽ chảy đi)
  • Nơ-ron hình thức・Perceptron: Đầu vào $\rightarrow$ Trọng số $\rightarrow$ Tổng $\rightarrow$ Ngưỡng (T) $\rightarrow$ Đầu ra y (Nếu Tổng > T thì là 1, Tổng $\le$ T thì là 0)

● Sự đình trệ và tiến bộ của nghiên cứu Mạng nơ-ron

Tuy nhiên, sự bùng nổ nghiên cứu của thập niên 1960 bắt đầu từ công bố của Rosenblatt đã dần đi đến hồi kết. Đòn quyết định là chỉ trích của hai nhà nghiên cứu Trí tuệ nhân tạo Minsky và Papert vào năm 1969. Đó là chỉ trích rằng một perceptron 1 lớp không thể giải quyết được Bài toán không thể phân tách tuyến tính (tham khảo Section 24). Về mặt lý thuyết, mặc dù người ta biết rằng có thể giải quyết bài toán bằng cách chồng nhiều lớp lên nhau như hiện nay, nhưng với thuật toán do Rosenblatt công bố, việc huấn luyện một perceptron nhiều lớp là bất khả thi. Cuối cùng, khi nhận ra rằng nó còn cách rất xa để giải quyết các vấn đề phức tạp trong thực tế, thập niên 1970 đã trở thành thời kỳ đình trệ đối với mạng nơ-ron.

Thập niên 1980 tiếp theo là thời kỳ mà thuật toán học của mạng nơ-ron hiện tại là Thuật toán lan truyền ngược sai số (Backpropagation / 誤差逆伝播法 – giải thích ở Section 37) được xác lập, có thể nói là thời kỳ nghiên cứu tiến thêm một bước. Bản thân phương pháp lan truyền ngược sai số đã được nghĩ ra từ thập niên 1960, nhưng lại bị chìm vào quên lãng mà không thu hút được sự chú ý. Tuy nhiên, vào năm 1986, kỹ thuật sử dụng lan truyền ngược sai số để huấn luyện mạng nhiều lớp đã được xác lập, khiến việc học của mạng nơ-ron nhiều lớp trở nên khả thi. Hơn nữa, trong thời kỳ này, nguyên mẫu của Mạng nơ-ron tích chập (Convolutional Neural Network / 畳み込みニューラルネットワーク – giải thích ở Section 41) cũng đã hoàn thiện, đạt đến mức độ thực tế để có thể nhận dạng chữ viết tay.

■ Nghiên cứu từ thập niên 1960 ~ 1980

Sự bùng nổ nghiên cứu $\rightarrow$ Đình trệ $\rightarrow$ Xác lập Lan truyền ngược sai số, Nguyên mẫu của CNN hoàn thiện

(1960) Công bố Perceptron $\rightarrow$ (1969) Chỉ trích của Minsky và Papert $\rightarrow$ (1970) $\rightarrow$ (1980) $\rightarrow$ (1990)

● Mở màn kỷ nguyên Học sâu (Deep learning / ディープラーニング)

Mặc dù đã có bước tiến là xác lập phương pháp lan truyền ngược sai số vào thập niên 1980, nhưng từ thập niên 1990 đến đầu những năm 2000, nó lại bước vào thời kỳ đình trệ. Người ta cho rằng ở mạng nơ-ron chồng nhiều lớp, quá trình “lan truyền” trong phương pháp lan truyền ngược sai số diễn ra không suôn sẻ (Vấn đề tiêu biến đạo hàm, giải thích ở Section 39), khiến việc học gặp thất bại. Thêm vào đó, với khả năng tính toán của máy tính thời bấy giờ, việc huấn luyện một mạng nơ-ron sâu là vô cùng khó khăn. Trong khoảng thời gian đó, các phương pháp Học máy không sử dụng mạng nơ-ron như Máy học vector hỗ trợ (SVM) đã trở thành xu hướng chính, và nghiên cứu về mạng nơ-ron dần thoái trào.

Nghiên cứu về Học sâu sử dụng mạng nơ-ron cuối cùng đã nở rộ vào nửa sau thập niên 2000. Năm 2006, nhà khoa học máy tính Hinton đã đề xuất một phương pháp học hiệu quả trong một mạng nhiều lớp được gọi là Mạng niềm tin sâu (Deep Belief Network – DBN / 深層信念ネットワーク). Hơn nữa, ông cũng chỉ ra khả năng tự động trích xuất đặc trưng bằng cách sử dụng Máy Boltzmann bị hạn chế (Restricted Boltzmann Machine – RBM / 制約つきボルツマンマシン). Đây chính là thế mạnh của Học sâu, và nó đã dẫn đến sự phát triển đột phá trong nhận dạng hình ảnh bằng Mạng nơ-ron tích chập.

■ Nghiên cứu từ năm 1990 trở đi

  • Máy Boltzmann bị hạn chế (RBM): Lớp đầu vào $\rightarrow$ Lớp ẩn (Các biến trong cùng một lớp không kết nối với nhau. Để ngăn ngừa sự bùng nổ của khối lượng tính toán)
  • Mạng niềm tin sâu (DBN): Lớp đầu vào $\rightarrow$ Lớp ẩn $\rightarrow$ Lớp ẩn $\rightarrow$ Lớp ẩn

Tổng kết (Summary / まとめ)

  • Mạng nơ-ron là mô hình của mạch thần kinh.

COLUMN: Cha đẻ của Mạng nơ-ron tích chập (Convolutional Neural Network / 畳み込みニューラルネットワーク) là người Nhật?

Nhắc đến Học máy hay Học sâu, hình ảnh chung thường là các trường đại học và các tập đoàn lớn của Mỹ như Google đang dẫn dắt nghiên cứu. Ngoài ra gần đây, các doanh nghiệp và trường đại học Trung Quốc cũng đang thể hiện sự hiện diện mạnh mẽ, nên có lẽ nhiều người cho rằng hoạt động của Nhật Bản dường như bị lu mờ một cách tương đối.

Thực tế, dù hiện tại Nhật Bản không có nhiều sự hiện diện trong lĩnh vực này, nhưng trong lịch sử của mạng nơ-ron, tên tuổi của người Nhật được khắc ghi rất rõ nét. Đó là nhà nghiên cứu Kunihiko Fukushima (福島邦彦). Vào những năm 1980, Fukushima đã công bố một mô hình mạch thần kinh đa tầng phân cấp gọi là “Neocognitron” (ネオコグニトロン). Giống như Mạng nơ-ron tích chập, Neocognitron rất mạnh trong nhận dạng hình ảnh, và sở hữu cơ chế giống nhau đến kinh ngạc, có thể coi là nguyên mẫu của các mạng lưới đang được sử dụng hiện nay.

Tế bào S và tế bào C ở hình dưới lần lượt đại diện cho tế bào đơn giản (simple) và tế bào phức tạp (complex), đảm nhận vai trò trích xuất đặc trưng và Gộp (Pooling / プーリング). Ngoài ra, giữa các lớp thực hiện cùng một phép tính với Tích chập (Convolution / 畳み込み). Tính chất nắm bắt các đặc trưng từ chi tiết đến tổng quát khi đi từ lớp đầu vào đến lớp đầu ra cũng giống với Mạng nơ-ron tích chập.

Nghĩ đến việc những nỗ lực của người Nhật đã được kế thừa trong bí quyết nhận dạng hình ảnh đang được sử dụng như một điều hiển nhiên hiện nay, cảm giác thật là sâu sắc.

Leave a Comment

Chia sẻ:

KIẾN THỨC CƠ BẢN VỀ HỌC SÂU DEEP LEARNING

Or copy link

CONTENTS