
Mạng nơ-ron: từ perceptron đến deep learning
Các lớp hàm đơn giản học được các mẫu hình phức tạp ra sao
Nước đi không ai hiểu được
Vào ngày 10 tháng 3 năm 2016, trong trận thứ hai của loạt năm trận tại Seoul, một chiếc máy tên là AlphaGo đặt một quân cờ đen ở đường thứ năm của bàn cờ. Nước đi này kỳ lạ đến mức các bình luận viên con người tưởng rằng đó là một lỗi. Một kỳ thủ chuyên nghiệp nói to rằng một người mới học sẽ bị la mắng nếu đánh như vậy. Lee Sedol — nhà vô địch thế giới 18 lần của môn cờ vây — đã đứng lên và ra khỏi phòng để bình tâm lại.
Đó không phải là một lỗi. Năm mươi nước đi sau đó, quân cờ đó — nay nổi danh với tên "Nước 37" — chính là bản lề mà cả trận đấu xoay quanh. AlphaGo thắng. Lee Sedol, được xem là một trong những kỳ thủ vĩ đại nhất còn sống, thua cả loạt trận với tỷ số 4–1. Và đây là phần quan trọng: không có con người nào dạy AlphaGo nước đi đó. Nó không nằm trong bất kỳ giáo trình nào. Chiếc máy đã tự phát hiện ra nó, bằng cách chơi hàng triệu trận đấu với chính mình và điều chỉnh hàng tỷ con số nội bộ nhỏ cho đến khi xuất hiện một mô hình mà chưa ai từng thấy.
Cờ vây có nhiều vị trí bàn cờ khả dĩ hơn số nguyên tử trong vũ trụ quan sát được. Bạn không thể dùng brute-force để giải nó. Bạn không thể viết ra quy tắc cho nó. Cách duy nhất để chơi nó ở mức siêu nhân là học nó — và thứ đang học là một mạng nơ-ron: một chồng các đơn vị toán học đơn giản mà, với đủ dữ liệu và đủ sự điều chỉnh, có thể tìm ra cấu trúc mà không con người nào có thể diễn đạt đầy đủ.
Cùng bộ máy đó — cùng tổng có trọng số, cùng vòng lặp huấn luyện, cùng những cú nhích gradient — là thứ vận hành mô hình ngôn ngữ mà bạn nói chuyện, hệ thống đánh cờ các giao dịch thẻ gian lận, và các mô hình mà các quỹ định lượng hiện đang hướng vào thị trường tài chính. Bài học này nói về những gì thực sự đang diễn ra bên trong chiếc hộp đó.
Perceptron: Nơi mọi thứ bắt đầu
Mọi mạng nơ-ron — từ một bộ lọc spam đơn giản đến GPT hay AlphaGo — đều bắt nguồn từ một ý tưởng duy nhất: perceptron, do Frank Rosenblatt phát minh vào năm 1958. Đó là một mô hình toán học lấy cảm hứng lỏng lẻo từ một tế bào nơ-ron sinh học. Một tế bào nơ-ron thật nhận tín hiệu điện qua các đuôi gai (dendrite), tích lũy chúng trong thân tế bào, và chỉ phát tín hiệu xuống sợi trục (axon) nếu đầu vào tổng hợp vượt qua một ngưỡng. Perceptron làm điều tương tự, chỉ khác là với số thay cho điện áp.
Một perceptron nhận một vector đầu vào x, nhân mỗi đầu vào với một trọng số (weight) w đã học được, cộng các tích lại, thêm một thành phần bias b để dịch chuyển ngưỡng, và đưa kết quả qua một hàm kích hoạt (activation function). Nếu kết quả vượt qua mức ngưỡng, nơ-ron sẽ "phát tín hiệu"; nếu không, nó vẫn im lặng. Toàn bộ điều này chỉ là một biểu thức gọn gàng: đầu ra = f(w·x + b).
Hãy nghĩ về các trọng số như các nút vặn âm lượng. Mỗi đầu vào đến với một mức độ ồn nào đó, và trọng số quyết định đầu vào đó quan trọng đến mức nào đối với nơ-ron cụ thể này. Một nơ-ron đang học để phát hiện một giao dịch gian lận có thể vặn to trọng số của "quy mô giao dịch so với lịch sử tài khoản" và vặn nhỏ trọng số của "thời điểm trong ngày". Việc học, ở cốt lõi, chẳng có gì hào nhoáng hơn việc vặn các nút đó đến đúng mức.
Một perceptron đơn lẻ có một giới hạn cứng: nó chỉ có thể phân tách dữ liệu bằng một đường thẳng (hoặc, trong không gian nhiều chiều hơn, một siêu mặt phẳng). Nó có thể trả lời "điểm này ở trên hay dưới đường thẳng?" nhưng không thể trả lời "điểm này có ở trong vùng cong này không?" Ví dụ lịch sử là bài toán XOR — một mô hình đã được chứng minh là một perceptron đơn lẻ không thể học được, một hạn chế đã góp phần đóng băng nguồn tài trợ cho AI trong nhiều năm vào thập niên 1970. Lối thoát, nhìn lại, lại đơn giản đến mức gần như phi lý: xếp nhiều perceptron thành các lớp và chèn một hàm kích hoạt phi tuyến giữa chúng. Làm vậy, mạng nơ-ron thu được có thể bẻ cong, gấp lại, và khắc không gian thành các hình dạng phức tạp tùy ý.
Các lớp, độ sâu, và vì sao học 'sâu' (deep)
Một nơ-ron là một nút vặn. Một mạng có ích là hàng nghìn nơ-ron, được tổ chức thành các lớp (layers) truyền thông tin về phía trước như một đội chuyền gàu nước.
- Lớp đầu vào — nơi các đặc trưng thô của bạn đi vào: pixel của một ảnh, từ ngữ của một câu, hoặc với một mô hình giao dịch, những thứ như giá, khối lượng, độ biến động, và độ lệch sổ lệnh (order-book imbalance).
- Các lớp ẩn (hidden layers) — các lớp ở giữa, nơi công việc thực sự diễn ra. Mỗi lớp nhận đầu ra của lớp trước và tái kết hợp chúng thành các đặc trưng mới, trừu tượng hơn.
- Lớp đầu ra — câu trả lời cuối cùng: một xác suất, một dự báo giá, một nhãn phân loại.
Từ "sâu (deep)" trong deep learning đơn giản chỉ có nghĩa là nhiều lớp ẩn. Và độ sâu mang lại cho bạn một thứ cụ thể: một hệ thống bậc đặc trưng. Trong một mạng xử lý ảnh, lớp đầu tiên phát hiện các cạnh, lớp tiếp theo lắp ghép các cạnh thành hình dạng, lớp tiếp theo nữa lắp ghép các hình dạng thành đối tượng. Không ai lập trình sẵn "bộ phát hiện cạnh" hay "bộ phát hiện mắt" — những khái niệm đó xuất hiện từ quá trình huấn luyện. Mạng nơ-ron tự phát minh ra bộ từ vựng trung gian của riêng nó.
Có một kết quả lý thuyết tuyệt đẹp ở đây, định lý xấp xỉ toàn năng (universal approximation theorem): một mạng chỉ với một lớp ẩn duy nhất, với đủ số nơ-ron, có thể xấp xỉ bất kỳ hàm liên tục nào đến độ chính xác tùy ý. Nói cách khác, mạng đúng về nguyên tắc có thể biểu diễn bất kỳ mô hình nào tồn tại trong dữ liệu của bạn. Điểm mấu chốt — và đó là một điểm mấu chốt lớn — là "về nguyên tắc" đang gánh một trọng lượng rất nặng. Định lý này hứa hẹn một mạng như vậy tồn tại; nó không nói gì về việc bạn có thể tìm ra nó hay không, liệu bạn có đủ dữ liệu để xác định nó hay không, hay liệu mô hình bạn đang truy tìm có thực sự tồn tại hay không. Trong các lĩnh vực tín hiệu yếu như tài chính, khoảng cách giữa "có thể biểu diễn được" và "có thể học được" chính xác là nơi phần lớn các mô hình chết đi.
Hàm kích hoạt: Bí quyết bí mật phi tuyến
Đây là một sự thật khiến nhiều người ngạc nhiên: không có hàm kích hoạt, độ sâu là vô giá trị. Nếu mỗi lớp chỉ là một tổng có trọng số đơn thuần, thì việc xếp mười lớp sẽ tương đương về mặt toán học với một lớp duy nhất — một chuỗi các phép toán tuyến tính sụp đổ thành một phép toán tuyến tính duy nhất. Bạn sẽ đã tiêu tốn cả một gia tài tính toán để xây một đường thẳng được tôn vinh. Hàm kích hoạt là điểm gấp phi tuyến được chèn giữa các lớp để cho phép mạng bẻ cong, và việc bẻ cong đó chính là điều làm cho nó mạnh mẽ.
Các hàm kích hoạt mà mọi người thực hành nên biết:
- Sigmoid — σ(x) = 1/(1+e⁻ˣ). Nén bất kỳ đầu vào nào vào khoảng (0, 1), đọc một cách tự nhiên như một xác suất. Rất tốt cho một đầu ra nhị phân, nhưng là lựa chọn kém trong các lớp ẩn: với các đầu vào dương hoặc âm lớn, đường cong bị làm phẳng, gradient của nó gần như tiến về không, và việc học bị nghẽn lại — vấn đề gradient biến mất (vanishing gradient).
- Tanh — cho đầu ra trong khoảng (−1, 1) và có tâm ở không, giúp việc tối ưu hóa dễ dàng hơn. Vẫn bị bão hòa ở các mức cực, nhưng ít gay gắt hơn sigmoid.
- ReLU — f(x) = max(0, x). Lựa chọn mặc định hiện đại cho các lớp ẩn. Nó cực kỳ đơn giản, rẻ để tính toán, và giữ được gradient khỏe mạnh cho mọi đầu vào dương. Điểm yếu của nó là "ReLU chết": một nơ-ron bị đẩy vào trạng thái luôn xuất ra không có thể trở nên vĩnh viễn bất động.
- Leaky ReLU — f(x) = max(0.01x, x). Cho phép một luồng nhỏ gradient đi qua với các giá trị âm, giúp các nơ-ron không bị "chết".
- GELU — một biến thể mượt hơn, mang tính xác suất của ReLU, là chuẩn mực bên trong các transformer như BERT và GPT.
Backpropagation và Gradient Descent: Cách mạng nơ-ron học
Cho đến nay chúng ta có một mạng đầy trọng số. Nhưng những giá trị trọng số đúng đến từ đâu? Không ai gõ chúng vào tay — có hàng triệu con số. Chúng được phát hiện qua một vòng lặp phản hồi mà, về bản chất, là quá trình thử-sai có tổ chức với vi tích phân đảm nhiệm việc ghi chép.
Bước một là lượt truyền tiến (forward pass): đưa vào một ví dụ, để nó chảy qua các lớp, và đọc ra một dự đoán. Bước hai là đo mức độ sai của dự đoán đó bằng một hàm mất mát (loss function). Để dự đoán một con số (một mức giá), Mean Squared Error lấy trung bình bình phương khoảng cách giữa dự đoán và sự thật. Đối với phân loại, cross-entropy đo khoảng cách giữa các xác suất dự đoán so với câu trả lời đúng. Mất mát cao nghĩa là "rất sai"; toàn bộ mục tiêu của huấn luyện là kéo con số đó xuống.
Bước ba là phần khéo léo: backpropagation. Sử dụng quy tắc dây chuyền (chain rule) của vi tích phân, thuật toán làm việc ngược từ mất mát qua từng lớp và tính toán, cho mỗi trọng số riêng lẻ, một gradient — câu trả lời cho "nếu tôi nhích trọng số này lên một chút, sai số tăng hay giảm, và tăng/giảm bao nhiêu?" Đây là mẹo đã làm tan chảy mùa đông AI. Backprop, được phổ biến vào thập niên 1980, đã làm cho việc phân bổ trách nhiệm qua hàng triệu trọng số trở nên hiệu quả thay vì phải đoán.
Bước bốn là gradient descent: nhích mỗi trọng số một bước nhỏ theo hướng làm giảm mất mát, sử dụng quy tắc w = w − α × ∂L/∂w. Hãy tưởng tượng đang đứng trên một sườn đồi sương mù cố gắng đến được đáy thung lũng; bạn không thể thấy đáy, nhưng bạn có thể cảm nhận hướng nào là dốc xuống dưới chân mình, vì vậy bạn bước theo hướng đó và lặp lại. Tốc độ học (learning rate) α là độ dài mỗi bước của bạn, và nó có thể là nút điều chỉnh quan trọng nhất trong toàn bộ hệ thống. Quá lớn và bạn sẽ vượt qua thung lũng và nảy lên nảy xuống mãi mãi; quá nhỏ và bạn sẽ nhích từng chút cho đến vô tận hoặc bị mắc kẹt trong một hố nửa đường đi xuống.
Hai cải tiến bạn sẽ gặp ngay lập tức. Mini-batch: thay vì cập nhật sau mỗi ví dụ đơn lẻ (nhiễu) hoặc chỉ sau toàn bộ tập dữ liệu (chậm), bạn cập nhật sau một lô nhỏ — thường là 32 đến 256 ví dụ — vốn là ổn định, thân thiện với GPU, và là điểm cân bằng lý tưởng trong thực tiễn. Và Adam: một bộ tối ưu hóa thông minh hơn cho mỗi trọng số một bước đi thích ứng riêng và thêm động lượng (momentum) để làm phẳng các gradient nhiễu. Adam là mặc định hợp lý để bắt đầu cho gần như mọi dự án — tuy trong tài chính, với tỷ số tín hiệu/nhiễu thấp, bạn vẫn cần điều chỉnh thủ công tốc độ học, weight decay, và điểm dừng.
Overfitting: Khi mạng ghi nhớ thay vì học
Đây là hình thức thất bại phá hủy nhiều mô hình tài chính hơn bất cứ điều gì khác. Một mạng nơ-ron là một bộ khớp hàm linh hoạt đến mức, nếu có cơ hội, nó sẽ ghi nhớ hoàn toàn dữ liệu huấn luyện của bạn — bao gồm tất cả nhiễu ngẫu nhiên, những sự trùng hợp một lần, và những ngẫu nhiên sẽ không bao giờ lặp lại. Nó ghi điểm tuyệt đẹp trên dữ liệu nó đã thấy và sụp đổ ngay khi gặp bất cứ thứ gì mới. Đây là overfitting, và trong thị trường — nơi tín hiệu thực sự yếu và nhiễu thì chói tai — đó là kết quả mặc định, không phải là ngoại lệ. Các công cụ chống lại nó được gọi là regularization.
Dropout là phổ biến nhất. Trong mỗi bước huấn luyện, mỗi nơ-ron có một xác suất p (thường là 0,2–0,5) bị tạm thời tắt đi. Bị buộc phải hoạt động dù các đồng đội ngẫu nhiên cứ liên tục biến mất, mạng học cách phân tán tri thức của nó qua nhiều nơ-ron thay vì đặt cược tất cả vào một số nơ-ron dễ vỡ — một hiệu ứng tổ hợp (ensemble) được cài sẵn trong một mô hình duy nhất. Vào thời điểm dự đoán, tất cả nơ-ron bật lại, được điều chỉnh tỷ lệ hợp lý.
Các mức phạt L1 và L2 thêm một khoản thuế lên các trọng số lớn vào hàm mất mát. L2 (weight decay) ngăn cản bất kỳ trọng số đơn lẻ nào trở nên quá lớn, phân tán ảnh hưởng đồng đều. L1 sắc bén hơn: nó chủ động đẩy các trọng số vô dụng xuống chính xác bằng không, thực hiện việc chọn đặc trưng tự động. Trong một tập dữ liệu tài chính nơi hầu hết trong số một trăm đặc trưng của bạn là nhiễu, L1 có thể thầm lặng tìm ra vài đặc trưng thực sự mang tín hiệu.
Batch normalization điều chỉnh lại tỷ lệ đầu ra của mỗi lớp về một trung bình và phương sai ổn định, giúp việc huấn luyện vững hơn và cho phép bạn dùng tốc độ học cao hơn. Early stopping (dừng sớm) là biện pháp bảo vệ đơn giản và đáng tin cậy nhất trong tất cả: theo dõi sai số trên một tập kiểm định (validation) được giữ riêng, và ngay khi nó bắt đầu tăng lên trong khi sai số huấn luyện tiếp tục giảm, hãy dừng lại — điểm giao cắt đó chính là thời điểm mạng chuyển từ học các mô hình sang ghi nhớ nhiễu.
CNN cho các mô hình, RNN và LSTM cho chuỗi
Các mạng feedforward thông thường coi mỗi đầu vào như một túi số không có cấu trúc. Nhưng nhiều dữ liệu thực tế có cấu trúc — một hình ảnh có bố cục không gian, một chuỗi giá có thứ tự thời gian — và hai kiến trúc chuyên biệt khai thác trực tiếp cấu trúc đó.
Mạng nơ-ron tích chập (Convolutional Neural Networks - CNN) được xây dựng cho ảnh. Thay vì kết nối mọi pixel với mọi nơ-ron, một CNN trượt các bộ lọc (filter) nhỏ qua đầu vào, tìm kiếm các mô hình cục bộ — một cạnh ở đây, một họa tiết ở đó — và tái sử dụng cùng bộ lọc ở mọi nơi. Các lớp đầu bắt các cạnh; các lớp sâu hơn lắp ghép chúng thành hình dạng và đối tượng. Trong tài chính, các nhà nghiên cứu đã hướng CNN vào:
- Hình ảnh biểu đồ nến — tái định hình việc đọc biểu đồ như một tác vụ nhận diện mô hình hình ảnh.
- Bản đồ nhiệt sổ lệnh (order-book heatmap) — phát hiện các lệch cung/cầu trong các ảnh chụp độ sâu thị trường (depth-of-market).
- Tích chập 1D trên các chuỗi giá thô — học các họa tiết thời gian ngắn theo cách một CNN xử lý ảnh học các họa tiết không gian.
Mạng nơ-ron hồi quy (Recurrent Neural Networks - RNN) được xây dựng cho chuỗi. Chúng xử lý từng bước thời gian một lần trong khi mang theo một trạng thái ẩn (hidden state) — một trí nhớ liên tục — từ mỗi bước sang bước tiếp theo. Về lý thuyết, điều này khiến chúng lý tưởng cho các chuỗi thời gian. Trong thực tế, các RNN thuần bị làm tê liệt bởi vấn đề gradient biến mất qua các chuỗi dài: tín hiệu từ nhiều bước trước co lại về gần không trên đường quay ngược, vì vậy mạng đơn giản là quên đi quá khứ xa.
Mạng nhớ ngắn hạn dài (Long Short-Term Memory - LSTM) khắc phục điều này bằng một số nhỏ các cổng (gate) có thể học — quên, nhập, và xuất — quyết định ở mỗi bước điều gì cần xóa khỏi trí nhớ, điều gì cần ghi vào, và điều gì cần đọc ra. Cơ chế cổng đó cho phép một LSTM giữ lại thông tin liên quan qua hàng trăm bước, đó là lý do vì sao nó trở thành công cụ chủ đạo để mô hình hóa các chuỗi thời gian tài chính, nơi một sự kiện từ hôm qua vẫn còn tác động đến giá hôm nay.
import torch.nn as nn
class PricePredictor(nn.Module):
def __init__(self, input_dim, hidden_dim, num_layers):
super().__init__()
self.lstm = nn.LSTM(input_dim, hidden_dim,
num_layers, batch_first=True,
dropout=0.2)
self.fc = nn.Linear(hidden_dim, 1)
def forward(self, x):
out, _ = self.lstm(x)
return self.fc(out[:, -1, :])
Trên một nền tảng như GaiaEx, nơi các luồng WebSocket phát dòng dữ liệu giá và sổ lệnh liên tục, một LSTM có thể tiếp nhận chuỗi đó một cách tự nhiên. Điều đó nói, lĩnh vực này đã phần lớn tiến xa hơn: transformer — kiến trúc đằng sau các mô hình ngôn ngữ hiện đại — hiện nay ngang bằng hoặc vượt trội LSTM trong nhiều tác vụ chuỗi bằng cách dùng "attention" để nhìn vào tất cả các bước thời gian cùng lúc thay vì đi qua chúng lần lượt.
Những gì mạng nơ-ron không khắc phục được (đặc biệt trong thị trường)
Mạng nơ-ron là những bộ tìm mô hình đáng kinh ngạc. Nhưng giáo dục trung thực nghĩa là chỉ ra nơi chúng bị hỏng — và trong giao dịch, chúng hỏng theo những cách tốn kém.
- Chúng tìm ra mô hình ngay cả khi không có mô hình nào tồn tại. Đưa cho một mạng sâu nhiễu và nó sẽ tự tin khớp vào nó. Thị trường chủ yếu là nhiễu, vậy nên gánh nặng chứng minh nằm ở bạn để chỉ ra một mô hình là thực và bền vững — không chỉ hiện diện trong dữ liệu năm ngoái.
- Chúng là những chiếc hộp đen. Một mô hình có thể chính xác mà vẫn không thể cho bạn biết vì sao. Khi nó bất ngờ mất tiền, thường không có lời giải thích rõ ràng và không có cách khắc phục hiển nhiên. Đối với vốn chịu rủi ro, "tôi không biết vì sao nó lại làm vậy" là một trách nhiệm pháp lý nghiêm trọng.
- Chúng đói dữ liệu và dễ vỡ. Deep learning tỏa sáng với hàng triệu ví dụ sạch. Lịch sử tài chính ngắn, không ổn định, và nhiễu — chế độ đã huấn luyện mô hình của bạn có thể đơn giản là không còn tồn tại nữa, một vấn đề gọi là dịch chuyển phân phối (distribution shift).
- Chúng không tự nhiên vượt trội các mô hình đơn giản hơn. Trên dữ liệu dạng bảng, dựa trên đặc trưng phổ biến trong tài chính, các cây tăng cường gradient (gradient-boosted tree) như XGBoost thường xuyên vượt trội mạng nơ-ron trong khi lại nhanh hơn để huấn luyện và dễ hơn để diễn giải. Sự phức tạp là một chi phí, không phải một đức tính.
- Chúng có thể bị tấn công. Các nhiễu loạn nhỏ, có chủ đích vào một đầu vào có thể lật ngược đầu ra của một mạng — một ví dụ đối nghịch (adversarial example) — điều này quan trọng ở bất cứ đâu một kẻ đối nghịch có thể định hình những gì mô hình của bạn thấy.
Phần cứng, công cụ, và con đường phía trước của bạn
Huấn luyện mạng nơ-ron nặng về số học — chủ yếu là các phép nhân ma trận — và phần cứng bạn dùng để chạy nó thay đổi tốc độ lặp lại của bạn từ "qua đêm" thành "trong một cốc cà phê."
GPU là chuẩn mực. Hàng nghìn core của chúng đều chạy cùng một phép toán trên dữ liệu khác nhau đồng thời, đó chính xác là hình dạng của toán học mạng nơ-ron. Một mô hình mất 8 giờ trên CPU có thể hoàn thành trong 15 phút trên một GPU hiện đại. NVIDIA chiếm ưu thế: các card tiêu dùng (một GPU dòng RTX) đủ tốt để học, còn các card trung tâm dữ liệu (A100, H100) và các instance đám mây xử lý huấn luyện ở quy mô sản xuất. TPU, các chip tùy chỉnh của Google cho toán học tensor, tỏa sáng trên các mô hình rất lớn qua Google Cloud, nhưng GPU vẫn là mặc định thực tiễn cho hầu hết người thực hành nhờ sự hỗ trợ phần mềm rộng hơn.
Bạn không cần mua bất cứ thứ gì để bắt đầu. Google Colab cung cấp thời gian GPU miễn phí đủ dùng cho việc học và tạo mẫu; thuê GPU đám mây theo yêu cầu khi các mô hình của bạn lớn lên; chỉ mua phần cứng riêng khi bạn huấn luyện hàng ngày và hóa đơn đám mây thực sự chứng minh điều đó là đáng.
Một lộ trình học hợp lý từ đây:
- Bắt đầu với một mạng feedforward thông thường trên một số đặc trưng được thiết kế thủ công — huấn luyện nhanh, dễ gỡ lỗi, và một chuẩn cơ sở trung thực.
- Thử một CNN 1D trên các chuỗi giá thô và so sánh trực tiếp nó với chuẩn cơ sở đó.
- Xây dựng một LSTM tiêu thụ các chuỗi dữ liệu nến từ API của GaiaEx.
- Nghiên cứu attention và transformer — ngày càng trở thành kiến trúc được ưu tiên cho các chuỗi.
- Trên hết, luôn đối chiếu mô hình sâu của bạn với một chuẩn cơ sở tăng cường gradient như XGBoost. Nếu mạng nơ-ron không thể vượt qua mô hình đơn giản hơn ngoài mẫu trên dữ liệu tài chính dạng bảng của bạn, hãy triển khai mô hình đơn giản hơn và tiếp tục.
Cùng vòng lặp đã tìm ra Nước 37 — dự đoán, đo sai số, nhích trọng số, lặp lại — là vòng lặp đang chạy bên trong mọi hệ thống trong danh sách này. Hiểu vòng lặp đó và bạn hiểu deep learning; phần còn lại là kiến trúc và kỹ thuật xây trên nền tảng đó.