Mạng thần kinh nhân tạo

Não người hoạt động nhờ mạng lưới khoảng 86 tỷ tế bào thần kinh kết nối với nhau, truyền tín hiệu điện hóa để xử lý thông tin hay đưa ra quyết định. Mạng thần kinh nhân tạo (tiếng Anh: Artificial neural network hay chỉ đơn giản là Neural network, viết tắt ANN) là một mô hình học máy lấy cảm hứng từ cấu trúc đó: nó được cấu tạo thành từ các đơn vị xử lý đơn giản, kết nối với nhau theo lớp, cùng nhau học cách biểu diễn thông tin phức tạp từ dữ liệu. Nhờ vậy, mạng thần kinh nhân tạo có thể thực hiện các nhiệm vụ mà lập trình thủ công theo quy tắc gặp nhiều khó khăn, như nhận diện hình ảnh, dịch ngôn ngữ, hay tổng hợp giọng nói.

Về mặt kỹ thuật, một mạng thần kinh nhân tạo gồm các neuron nhân tạo (các nút) được tổ chức thành nhiều lớp: lớp đầu vào (input layer) nhận dữ liệu thô, một hoặc nhiều lớp ẩn (hidden layer) thực hiện các phép biến đổi phi tuyến, và lớp đầu ra (output layer) trả về kết quả. Mỗi kết nối giữa hai neuron mang một trọng số (weight), một con số xác định mức độ ảnh hưởng của tín hiệu đầu vào có thể được điều chỉnh trong quá trình huấn luyện. Đầu ra của mỗi neuron được tính bằng tổng có trọng số của các đầu vào, sau đó đưa qua một hàm kích hoạt (activation function) phi tuyến để tạo ra tín hiệu truyền sang lớp tiếp theo. Khi mạng có từ hai lớp ẩn trở lên, nó thường được gọi là mạng thần kinh sâu (deep neural network), là nền tảng của học sâu hiện đại.

Lịch sử

Nền tảng lý thuyết và những bước đầu 
Ý tưởng mô hình hóa tế bào thần kinh bằng toán học xuất hiện từ năm 1943, khi nhà thần kinh học Warren McCulloch và nhà logic học Walter Pitts đề xuất mô hình neuron nhị phân đầu tiên: một đơn vị tính toán nhận đầu vào nhị phân và cho ra đầu ra nhị phân dựa trên ngưỡng kích hoạt. Năm 1958, nhà tâm lý học Frank Rosenblatt hiện thực hóa ý tưởng này thành mô hình perceptron, một mạng thần kinh nhân tạo có thể huấn luyện được với quy tắc cập nhật trọng số tự động từ dữ liệu. Perceptron gây ra làn sóng lạc quan lớn và thu hút đầu tư mạnh từ chính phủ Mỹ. Tuy nhiên, năm 1969, Marvin Minsky và Seymour Papert chứng minh rằng perceptron đơn lớp không thể giải quyết các bài toán phi tuyến cơ bản như hàm XOR, khiến nghiên cứu về mạng thần kinh nhân tạo rơi vào giai đoạn trì trệ kéo dài.

Mạng thần kinh nhân tạo được hồi sinh vào thập niên 1980 với sự phổ biến hóa của thuật toán lan truyền ngược (backpropagation) bởi David Rumelhart, Geoffrey Hinton và Ronald Williams vào năm 1986. Thuật toán này cho phép huấn luyện hiệu quả các mạng nhiều lớp bằng cách tính gradient của hàm mất mát ngược từ lớp đầu ra về lớp đầu vào, giải quyết được bài toán XOR và mở ra khả năng xây dựng các mạng sâu hơn như mạng perceptron nhiều lớp (multi-layer perceptron, MLP). Đây là tiền đề kỹ thuật trực tiếp cho toàn bộ học sâu hiện đại.

Mạng tích chập và mạng hồi quy 

Năm 1989, Yann LeCun và cộng sự áp dụng lan truyền ngược để huấn luyện mạng tích chập (convolutional neural network, CNN) nhận diện chữ số viết tay trên bưu kiện. Kiến trúc LeNet-5 hoàn thiện năm 1998 là mạng tích chập đầu tiên được triển khai thực tế ở quy mô lớn — các ngân hàng Mỹ dùng nó để tự động đọc số tài khoản trên séc. CNN khai thác cấu trúc không gian của hình ảnh bằng cách dùng các bộ lọc (filter) trượt qua ảnh thay vì kết nối đầy đủ từng điểm ảnh, giảm đáng kể số tham số và giúp mô hình không bị ảnh hưởng bởi thay đổi vị trí.

Song song với CNN, một nhánh khác của mạng thần kinh nhân tạo phát triển để xử lý dữ liệu tuần tự như văn bản và giọng nói: mạng hồi quy (recurrent neural network, RNN). Năm 1990, Jeffrey Elman giới thiệu kiến trúc RNN nền tảng — còn gọi là Elman network — trong đó lớp ẩn có kết nối vòng lặp trở lại chính nó: đầu ra của lớp ẩn ở bước thời gian trước được đưa trở lại làm một phần đầu vào cho bước tiếp theo, tạo ra một dạng "bộ nhớ" về ngữ cảnh trước đó. Tuy nhiên, RNN chuẩn gặp vấn đề triệt tiêu gradient (vanishing gradient) khi chuỗi đầu vào dài khiến gradient nhỏ dần qua mỗi bước thời gian khi lan truyền ngược, khiến mô hình gần như không ghi nhớ được các ngữ cảnh quá xa về trước. Năm 1997, Sepp Hochreiter và Jürgen Schmidhuber giới thiệu kiến trúc Long Short-Term Memory (LSTM), giải quyết vấn đề này bằng cơ chế cổng (gate) kiểm soát luồng thông tin được giữ lại hay loại bỏ qua từng bước thời gian. LSTM trở thành kiến trúc nền tảng cho nhận diện giọng nói và dịch máy trong suốt hai thập kỷ sau. Năm 2014, Kyunghyun Cho và cộng sự đề xuất Gated Recurrent Unit (GRU), đơn giản hóa cơ chế cổng của LSTM từ ba xuống còn hai cổng, nhẹ hơn để huấn luyện và trong nhiều tác vụ cho kết quả tương đương.

Kỷ nguyên học sâu: ImageNet và các cuộc thi ILSVRC 
Bước ngoặt của học sâu hiện đại gắn liền với cuộc thi ImageNet Large Scale Visual Recognition Challenge (ILSVRC) — một benchmark thường niên dùng bộ dữ liệu hơn 14 triệu ảnh có nhãn của Stanford. Năm 2012, mô hình AlexNet của Alex Krizhevsky, Ilya Sutskever và Geoffrey Hinton giành chiến thắng với tỉ lệ lỗi top-5 là 15,3%, thấp hơn đối thủ hạng hai gần 11 điểm phần trăm, một khoảng cách chưa từng thấy. AlexNet về cơ bản là LeNet được mở rộng lớn hơn nhiều, huấn luyện trên GPU và sử dụng hàm kích hoạt ReLU thay vì sigmoid, một hàm đơn giản hơn nhưng hội tụ nhanh hơn và tránh được triệt tiêu gradient. Chiến thắng này khiến toàn bộ cộng đồng nghiên cứu chuyển hướng sang CNN.

Năm 2014, nhóm của Karen Simonyan và Andrew Zisserman tại Oxford giới thiệu VGGNet, đạt tỉ lệ lỗi 7,3% và về nhì tại ILSVRC. Nhưng điểm đáng chú ý không phải là thứ hạng mà là câu hỏi kiến trúc mà kiến trúc này trả lời: mạng càng nhiều lớp thì hiệu suất có tăng không? VGGNet với 16-19 lớp, chỉ dùng các bộ lọc 3×3 nhỏ xếp chồng lên nhau, cho thấy câu trả lời dường như là có, khi thiết kế đơn giản, nhất quán của nó trở thành tham chiếu kiến trúc cho nhiều năm sau. Còn người chiến thắng năm ấy với tỉ lệ lỗi 6,7%, GoogLeNet (Inception v1) của Google đi theo hướng khác: thay vì tăng chiều sâu, nó giới thiệu module Inception cho phép mỗi lớp học song song ở nhiều kích thước bộ lọc khác nhau, giữ số tham số ở mức thấp hơn VGG nhiều lần do không sử dụng quá nhiều lớp.

Năm 2015, ResNet của Kaiming He và cộng sự tại Microsoft Research giành chiến thắng với tỉ lệ lỗi 3,57%, lần đầu tiên vượt qua ngưỡng lỗi của con người (~5%) trên tập dữ liệu này. ResNet giải quyết bài toán cốt lõi cản trở việc xây dựng mạng rất sâu: khi số lớp tăng quá nhiều, độ chính xác huấn luyện bắt đầu giảm, không phải do quá khớp mà do gradient dần biến mất qua quá nhiều lớp tương tự như vấn đề xảy ra với RNN. Đây là lý do không phải cứ thêm thật nhiều lớp ẩn cho VGGNet là có thể giải quyết mọi bài toán. Giải pháp mà ResNet đưa ra là kết nối tắt (residual connection): tín hiệu đầu vào của một khối được cộng trực tiếp vào đầu ra của khối đó, tạo ra "đường tắt" cho gradient đi qua. ResNet-152 có tới 152 lớp nhưng vẫn huấn luyện ổn định, một kỳ tích tại thời điểm đó.

Transformer 
Năm 2017, nhóm nghiên cứu tại Google công bố kiến trúc Transformer trong bài báo "Attention Is All You Need", thay thế hoàn toàn cơ chế hồi quy tuần tự bằng cơ chế chú ý (attention mechanism). Thay vì xử lý chuỗi từng từ một như RNN, Transformer tính toán mối quan hệ giữa mọi cặp vị trí trong chuỗi cùng lúc, cho phép song song hóa hoàn toàn và nắm bắt các kiến thức phụ thuộc từ nhiều bước trước mà không bị triệt tiêu gradient. Transformer nhanh chóng thay thế LSTM trong xử lý ngôn ngữ tự nhiên, và là nền tảng cho toàn bộ các mô hình ngôn ngữ lớn từ GPT đến Gemini. Năm 2020, kiến trúc Vision Transformer (ViT) mở rộng cơ chế attention sang thị giác máy tính bằng cách chia ảnh thành các mảnh nhỏ và xử lý như một chuỗi, cho thấy Transformer có thể cạnh tranh và vượt qua CNN trên nhiều tác vụ nhận diện hình ảnh.

Huấn luyện

Hàm mất mát 
Để huấn luyện một mạng thần kinh nhân tạo, cần có một thước đo định lượng mức độ sai lệch giữa đầu ra của mô hình và kết quả mong muốn thông qua hàm mất mát.

Với bài toán hồi quy, hàm mất mát phổ biến nhất là sai số toàn phương trung bình:

trong đó  là nhãn thực tế và  là giá trị mô hình dự đoán cho mẫu thứ .

Với bài toán phân loại, hàm mất mát thường dùng là cross-entropy:

Mục tiêu của huấn luyện là tìm bộ trọng số của toàn bộ mạng  sao cho hàm mất mát đạt giá trị nhỏ nhất trên tập dữ liệu huấn luyện.

Lan truyền ngược 
Để tối thiểu hóa hàm mất mát, cần tính gradient của nó theo từng tham số trong mạng, tức là hàm mất mát thay đổi bao nhiêu khi mỗi trọng số thay đổi một lượng nhỏ. Lan truyền ngược là thuật toán tính gradient này một cách hiệu quả bằng cách áp dụng quy tắc dây chuyền (chain rule) của giải tích, lần lượt từ lớp đầu ra ngược về lớp đầu vào. Với một lớp bất kỳ, gradient của hàm mất mát theo trọng số  được tính theo công thức:

 \cdot \frac{\partial \hat{y}}{\partial w}</math>}}

trong đó mỗi nhân tử được tính từ lớp liền sau rồi nhân dồn ngược lại qua các lớp trước. Nhờ đó, mạng có thể xác định chính xác mỗi trọng số đóng góp bao nhiêu vào sai số đầu ra, và điều chỉnh tương ứng.

Thuật toán suy giảm độ dốc 
Sau khi có gradient, thuật toán suy giảm độ dốc được sử dụng để cập nhật trọng số theo hướng ngược chiều gradient để giảm hàm mất mát:

trong đó  là tốc độ học (learning rate), kiểm soát sự thay đổi trọng số nhiều hay ít mỗi lần cập nhật. Trong thực tế, thay vì tính gradient trên toàn bộ tập dữ liệu, người ta thường dùng stochastic gradient descent (SGD) để tính gradient trên từng nhóm dữ liệu nhỏ, vừa nhanh hơn vừa giúp mô hình thoát khỏi các điểm cực tiểu địa phương. Một biến thể phổ biến hơn là Adam (Adaptive Moment Estimation), kết hợp hai cơ chế: tích lũy động lượng (momentum) từ các gradient trước để tăng tốc ở hướng ổn định, và điều chỉnh tốc độ học riêng cho từng tham số dựa trên lịch sử gradient của nó, trong đó  là ước lượng moment bậc một (trung bình động của gradient) và  là ước lượng moment bậc hai (trung bình động của bình phương gradient):

 + \epsilon} \hat{m}</math>}}

Hay nói cách khác: nếu tham số nào đang được cập nhật nhanh sau nhiều bước liên tục thì càng thay đổi nhiều hơn, còn tham số nào đang thay đổi ít thì được cập nhật bớt lại. Tương tự như việc đẩy một viên đá xuống đồi, nếu đồi dốc khiến viên đá lăn xuống nhanh thì nó sẽ tiếp tục di chuyển về hướng đó, còn nếu sườn dốc thoải thì nó sẽ từ từ lăn chậm lại. Adam hiện là optimizer mặc định trong hầu hết các framework học sâu nhờ hội tụ nhanh và ít nhạy cảm với việc chọn learning rate.

Tính phổ quát 
Tính phổ quát (generalization) là khả năng của mô hình hoạt động tốt trên dữ liệu chưa từng thấy trong quá trình huấn luyện. Đây là mục tiêu trung tâm của mọi hệ thống học máy, bởi một mô hình chỉ hoạt động tốt trên dữ liệu huấn luyện nhưng thất bại với dữ liệu mới thực tế thì không có giá trị ứng dụng. Hiện tượng khi mô hình "học vẹt" dữ liệu huấn luyện thay vì học quy luật tổng quát được gọi là quá khớp (overfitting). Các kỹ thuật phổ biến để kiểm soát quá khớp bao gồm chính quy hóa (regularization), "bỏ học" một vài neuron (dropout), tăng cường dữ liệu (data augmentation), hoặc tham chiếu với một tập dữ liệu không được sử dụng trực tiếp trong quá trình học. Ở chiều ngược lại, thiếu khớp (underfitting) xảy ra khi mô hình quá đơn giản để nắm bắt được quy luật trong dữ liệu.

Tính chất lý thuyết

Định lý xấp xỉ toàn năng 
Định lý xấp xỉ toàn năng (universal approximation theorem) là nền tảng lý thuyết giải thích tại sao mạng thần kinh nhân tạo có khả năng học được hầu hết các hàm số. Phiên bản gốc, được chứng minh độc lập bởi George Cybenko (1989) và Kurt Hornik (1991), phát biểu rằng một mạng thần kinh chỉ với một lớp ẩn duy nhất nhưng đủ rộng (có nhiều neuron) có thể xấp xỉ bất kỳ hàm liên tục nào trên một miền compact với độ chính xác tùy ý. Nói cách khác, về mặt lý thuyết, mạng nông đã đủ mạnh để biểu diễn mọi hàm số, song định lý này không nói gì về số lượng neuron cần thiết cụ thể, và trong thực tế số đó có thể lớn đến mức không thể huấn luyện được.

Điều này dẫn đến phiên bản thứ hai của định lý, phát triển trong thập niên 2010: thay vì mạng rộng, mạng đủ sâu (tức là đủ nhiều lớp) cũng có khả năng xấp xỉ toàn năng, và thường làm được với số tham số ít hơn đáng kể so với mạng nông tương đương. Kết quả này cung cấp cơ sở lý thuyết cho xu hướng xây dựng mạng ngày càng sâu hơn trong học sâu hiện đại, do chiều sâu không chỉ là lựa chọn tốt về mặt thực nghiệm (như đã thấy với VGGNet) mà còn mang lại hiệu quả biểu diễn về mặt toán học.

Định lý không có bữa trưa miễn phí 
Định lý không có bữa trưa miễn phí (no free lunch theorem), được chứng minh bởi David Wolpert và William Macready năm 1997, phát biểu rằng không tồn tại một thuật toán (hay kiến trúc) học máy nào là "tốt nhất", là tốt hơn mọi thuật toán khác trên tất cả các bài toán, có nghĩa là khi lấy trung bình trên toàn bộ các phân phối dữ liệu có thể có, mọi thuật toán đều có hiệu suất như nhau. CNN vượt trội trên ảnh vì khai thác cấu trúc không gian cục bộ, Transformer hiệu quả với chuỗi dài vì cơ chế attention toàn cục, nhưng không kiến trúc nào tối ưu trên tất cả. Kể cả khi Vision Transformer có hiệu quả ngang ngửa với CNN trên ImageNet, nó vẫn cần một lượng lớn dữ liệu để học trong khi các mô hình CNN hoàn toàn có thể "chịu đói" dữ liệu mà vẫn có thể học được các đặc trưng trên dữ liệu. Lựa chọn kiến trúc, hàm mất mát, và phương pháp huấn luyện phù hợp với đặc điểm cụ thể của dữ liệu và bài toán là điều kiện tiên quyết để mạng thần kinh hoạt động tốt.

Hội tụ 

Một câu hỏi lý thuyết quan trọng là liệu quá trình huấn luyện có đảm bảo tìm được bộ tham số tối ưu không.

Câu trả lời ngắn gọn là không.

Điều này là do gradient descent chỉ đảm bảo hội tụ về một điểm cực tiểu địa phương, không nhất thiết là cực tiểu toàn cục. Không gian tham số của mạng sâu là một hàm nhiều chiều cực kỳ phức tạp, chứa vô số điểm cực tiểu địa phương và điểm yên ngựa (saddle point). Tuy nhiên, nghiên cứu thực nghiệm và lý thuyết gần đây cho thấy với mạng đủ lớn, hầu hết các cực tiểu địa phương đều có giá trị hàm mất mát gần với cực tiểu toàn cục, và các kỹ thuật như SGD với mini-batch và momentum giúp mô hình thoát khỏi các điểm yên ngựa hiệu quả hơn. Ngoài ra, khi chiều rộng của mạng tiến đến vô cực, hành vi huấn luyện có thể được mô tả xấp xỉ bằng một mô hình tuyến tính thông qua Neural Tangent Kernel, cho phép phân tích hội tụ chặt chẽ hơn về mặt toán học.

Tham khảo

Liên kết ngoài 
 Usenet FAQ: comp.ai.neural-nets
 Connectionism at MindDict 
 Chương trình mạng nơ ron đa lớp (Multi Layer Neural Network) và mạng nơ ron tự tổ chức (Self Organizing Maps) có giải thích bằng tiếng Việt.
 Sử dụng phần mềm mạng nơ ron 3 lớp Spice-MLP
 Sử dụng phần mềm mạng tự tổ chức Spice-SOM
 Hướng dẫn sử dụng mạng nơ ron trong các ứng dụng thực tế trong đó có minh họa phân loại ảnh khuôn mặt, ảnh người đi bộ, ảnh xe hơi, dự báo chứng khoán và một số ví dụ khác

Học máy
Thống kê
Thuật toán tối ưu hóa
Giải thuật phân loại
Biểu diễn tri thức
Nghiên cứu thị trường
Mạng thần kinh