Học Machine Learning
Học tập là một vòng lặp
- Một mô hình Machine Learning được huấn luyện bằng cách lặp lại dữ liệu nhiều lần.
- Ở mỗi lần lặp, giá trị trọng số được điều chỉnh.
- Quá trình huấn luyện hoàn tất khi số lần lặp không làm giảm chi phí.
Gradient Descent
Gradient Descent là một thuật toán phổ biến để giải quyết các bài toán Trí tuệ nhân tạo (AI).
Một mô hình hồi quy tuyến tính đơn giản có thể được sử dụng để minh họa thuật toán Gradient Descent.
Mục tiêu của hồi quy tuyến tính là tìm một đồ thị tuyến tính phù hợp với một tập hợp các điểm (x,y). Điều này có thể được giải quyết bằng một công thức toán học. Nhưng một thuật toán Machine Learning cũng có thể giải quyết điều này.
Đây là những gì ví dụ trên thực hiện.
Nó bắt đầu với một biểu đồ phân tán và một mô hình tuyến tính (y = wx + b).
Sau đó, nó huấn luyện mô hình để tìm một đường thẳng phù hợp với biểu đồ. Điều này được thực hiện bằng cách thay đổi trọng số (độ dốc) và độ lệch (điểm cắt trục tung) của đường thẳng.
Dưới đây là code cho một Trainer Object (đối tượng huấn luyện) có thể giải quyết vấn đề này (và nhiều vấn đề khác).
Đối tượng huấn luyện
Tạo một đối tượng huấn luyện có thể nhận bất kỳ số lượng giá trị (x,y) nào trong hai mảng (xArr, yArr).
Đặt trọng số bằng 0 và độ lệch bằng 1.
Phải đặt hằng số học tập (learnc) và định nghĩa một biến chi phí:
Ví dụ:
function Trainer(xArray, yArray) {
this.xArr = xArray;
this.yArr = yArray;
this.points = this.xArr.length;
this.learnc = 0.00001;
this.weight = 0;
this.bias = 1;
this.cost;Hàm chi phí
Một cách tiêu chuẩn để giải quyết bài toán hồi quy là sử dụng "Hàm chi phí" để đo lường mức độ tốt của lời giải.
Hàm này sử dụng trọng số và độ lệch từ mô hình (y = wx + b) và trả về một sai số, dựa trên mức độ phù hợp của đường thẳng với đồ thị.
Cách tính sai số này là lặp qua tất cả các điểm (x,y) trên đồ thị và cộng tổng bình phương khoảng cách giữa giá trị y của mỗi điểm và đường thẳng.
Cách thông thường nhất là bình phương các khoảng cách (để đảm bảo giá trị dương) và làm cho hàm sai số có thể khả vi.
this.costError = function() {
total = 0;
for (let i = 0; i < this.points; i++) {
total += (this.yArr[i] - (this.weight * this.xArr[i] + this.bias)) **2;
}
return total / this.points;
}Một tên gọi khác của Hàm chi phí là Hàm sai số.
Công thức được sử dụng trong hàm này thực chất là:

- E là sai số (chi phí)
- N là tổng số observation (các điểm)
- y là giá trị (nhãn) của mỗi observation
- x là giá trị (đặc trưng) của mỗi observation
- m là độ dốc (trọng số)
- b là hệ số chặn (độ lệch)
- mx + b là giá trị dự đoán
- ∑1/(N * N) là bình phương giá trị trung bình
Hàm huấn luyện
Bây giờ, chúng ta sẽ chạy thuật toán Gradient Descent.
Thuật toán Gradient Descent sẽ di chuyển hàm chi phí về phía đường thẳng tốt nhất.
Mỗi lần lặp sẽ cập nhật cả m và b về phía đường thẳng có chi phí (sai số) thấp hơn.
Để làm điều đó, chúng ta thêm một hàm huấn luyện lặp lại toàn bộ dữ liệu nhiều lần:
this.train = function(iter) {
for (let i = 0; i < iter; i++) {
this.updateWeights();
}
this.cost = this.costError();
}Hàm cập nhật trọng số
Hàm huấn luyện ở trên sẽ cập nhật trọng số và độ lệch trong mỗi lần lặp.
Hướng di chuyển được tính toán bằng cách sử dụng hai đạo hàm riêng:
this.updateWeights = function() {
let wx;
let w_deriv = 0;
let b_deriv = 0;
for (let i = 0; i < this.points; i++) {
wx = this.yArr[i] - (this.weight * this.xArr[i] + this.bias);
w_deriv += -2 * wx * this.xArr[i];
b_deriv += -2 * wx;
}
this.weight -= (w_deriv / this.points) * this.learnc;
this.bias -= (b_deriv / this.points) * this.learnc;
}Tạo thư viện của riêng bạn
Code thư viện:
function Trainer(xArray, yArray) {
this.xArr = xArray;
this.yArr = yArray;
this.points = this.xArr.length;
this.learnc = 0.00001;
this.weight = 0;
this.bias = 1;
this.cost;
// Cost Function
this.costError = function() {
total = 0;
for (let i = 0; i < this.points; i++) {
total += (this.yArr[i] - (this.weight * this.xArr[i] + this.bias)) **2;
}
return total / this.points;
}
// Train Function
this.train = function(iter) {
for (let i = 0; i < iter; i++) {
this.updateWeights();
}
this.cost = this.costError();
}
// Update Weights Function
this.updateWeights = function() {
let wx;
let w_deriv = 0;
let b_deriv = 0;
for (let i = 0; i < this.points; i++) {
wx = this.yArr[i] - (this.weight * this.xArr[i] + this.bias);
w_deriv += -2 * wx * this.xArr[i];
b_deriv += -2 * wx;
}
this.weight -= (w_deriv / this.points) * this.learnc;
this.bias -= (b_deriv / this.points) * this.learnc;
}
} // End Trainer ObjectGiờ đây, bạn có thể tích hợp thư viện vào HTML:
<script src="myailib.js"></script>Bạn nên đọc
-
Deep Learning (DL)
-
Hồi quy tuyến tính trong Machine Learning
-
Dữ liệu Machine Learning
-
Biểu đồ phân tán trong Machine Learning
-
Nhận dạng mẫu trong Machine Learning
-
Perceptron trong Machine Learning
-
Đào tạo một Perceptron trong Machine Learning
-
Cụm dữ liệu trong Machine Learning
-
Thuật ngữ Machine Learning
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:
Cũ vẫn chất
-

5 cách mở cài đặt âm thanh trên PC Windows
2 ngày 2 -

Những ứng dụng hoán đổi khuôn mặt tốt nhất
2 ngày -

Cách khóa và mở khóa file Powerpoint để chỉnh sửa
2 ngày -

6 cách siêu dễ thêm phụ đề, caption vào video
2 ngày -

3133 là gì? 3133 là số điện thoại của tổng đài nào? Có phải lừa đảo không?
2 ngày -

Cách sửa lỗi gõ tiếng Việt trên Word, Excel
2 ngày -

Cách tạo Slide Master trên PowerPoint
2 ngày -

Cách xem số thẻ MBBank trên ứng dụng
2 ngày -

Bluestacks
-

Cách kiểm tra số dư tài khoản Sacombank rất đơn giản
2 ngày
Hướng dẫn AI
Học IT
Hàm Excel