Đào tạo một Perceptron trong Machine Learning
- Tạo đối tượng Perceptron
- Tạo hàm đào tạo
- Đào tạo perceptron dựa trên các câu trả lời đúng
Nhiệm vụ đào tạo
Hãy tưởng tượng một đường thẳng trong không gian với các điểm x và y rải rác.
Huấn luyện một perceptron để phân loại các điểm nằm trên và dưới đường thẳng đó.

Tạo đối tượng Perceptron
Tạo một đối tượng Perceptron. Đặt tên bất kỳ cho nó (ví dụ: Perceptron).
Cho phép perceptron chấp nhận hai tham số:
- Số lượng đầu vào (no)
- Tốc độ học (learningRate).
Đặt tốc độ học mặc định là 0.00001.
Sau đó, tạo các trọng số ngẫu nhiên từ -1 đến 1 cho mỗi đầu vào.
Ví dụ:
// Perceptron Object
function Perceptron(no, learningRate = 0.00001) {
// Set Initial Values
this.learnc = learningRate;
this.bias = 1;
// Compute Random Weights
this.weights = [];
for (let i = 0; i <= no; i++) {
this.weights[i] = Math.random() * 2 - 1;
}
// End Perceptron Object
}Các trọng số ngẫu nhiên
Perceptron sẽ bắt đầu với một trọng số ngẫu nhiên cho mỗi đầu vào.
Tốc độ học
Trong quá trình đào tạo Perceptron, mỗi lỗi sẽ khiến trọng số được điều chỉnh bằng một phần nhỏ.
Phần nhỏ này được gọi là "tốc độ học của Perceptron".
Trong đối tượng Perceptron, ta gọi nó là learnc.
Bias
Đôi khi, nếu cả hai đầu vào đều bằng 0, Perceptron có thể tạo ra đầu ra không chính xác.
Để tránh điều này, ta cung cấp cho Perceptron một đầu vào bổ sung với giá trị là 1.
Đây được gọi là bias.
Thêm hàm kích hoạt
Nhớ thuật toán perceptron:
- Nhân mỗi đầu vào với trọng số của perceptron
- Cộng các kết quả
- Tính toán kết quả
Ví dụ:
this.activate = function(inputs) {
let sum = 0;
for (let i = 0; i < inputs.length; i++) {
sum += inputs[i] * this.weights[i];
}
if (sum > 0) {return 1} else {return 0}
}Hàm kích hoạt sẽ xuất ra:
- 1 nếu tổng lớn hơn 0
- 0 nếu tổng nhỏ hơn 0
Tạo một hàm đào tạo
Hàm đào tạo dự đoán kết quả dựa trên hàm kích hoạt.
Mỗi khi dự đoán sai, perceptron sẽ điều chỉnh các trọng số.
Sau nhiều lần dự đoán và điều chỉnh, các trọng số sẽ chính xác.
Ví dụ:
this.train = function(inputs, desired) {
inputs.push(this.bias);
let guess = this.activate(inputs);
let error = desired - guess;
if (error != 0) {
for (let i = 0; i < inputs.length; i++) {
this.weights[i] += this.learnc * error * inputs[i];
}
}
}Lan truyền ngược
Sau mỗi lần đoán, perceptron sẽ tính toán độ sai lệch của lần đoán đó.
Nếu đoán sai, perceptron sẽ điều chỉnh độ lệch và trọng số để lần đoán tiếp theo sẽ chính xác hơn một chút.
Loại học này được gọi là backpropagation (lan truyền ngược).
Sau khi thử (vài nghìn lần), perceptron của bạn sẽ trở nên khá giỏi trong việc đoán.
Tạo thư viện của riêng bạn
Code thư viện:
// Perceptron Object
function Perceptron(no, learningRate = 0.00001) {
// Set Initial Values
this.learnc = learningRate;
this.bias = 1;
// Compute Random Weights
this.weights = [];
for (let i = 0; i <= no; i++) {
this.weights[i] = Math.random() * 2 - 1;
}
// Activate Function
this.activate = function(inputs) {
let sum = 0;
for (let i = 0; i < inputs.length; i++) {
sum += inputs[i] * this.weights[i];
}
if (sum > 0) {return 1} else {return 0}
}
// Train Function
this.train = function(inputs, desired) {
inputs.push(this.bias);
let guess = this.activate(inputs);
let error = desired - guess;
if (error != 0) {
for (let i = 0; i < inputs.length; i++) {
this.weights[i] += this.learnc * error * inputs[i];
}
}
}
// End Perceptron Object
}Giờ đây bạn có thể tích hợp thư viện vào HTML:
<script src="myperceptron.js"></script>Sử dụng thư viện
Ví dụ:
// Initiate Values
const numPoints = 500;
const learningRate = 0.00001;
// Create a Plotter
const plotter = new XYPlotter("myCanvas");
plotter.transformXY();
const xMax = plotter.xMax;
const yMax = plotter.yMax;
const xMin = plotter.xMin;
const yMin = plotter.yMin;
// Create Random XY Points
const xPoints = [];
const yPoints = [];
for (let i = 0; i < numPoints; i++) {
xPoints[i] = Math.random() * xMax;
yPoints[i] = Math.random() * yMax;
}
// Line Function
function f(x) {
return x * 1.2 + 50;
}
//Plot the Line
plotter.plotLine(xMin, f(xMin), xMax, f(xMax), "black");
// Compute Desired Answers
const desired = [];
for (let i = 0; i < numPoints; i++) {
desired[i] = 0;
if (yPoints[i] > f(xPoints[i])) {desired[i] = 1}
}
// Create a Perceptron
const ptron = new Perceptron(2, learningRate);
// Train the Perceptron
for (let j = 0; j <= 10000; j++) {
for (let i = 0; i < numPoints; i++) {
ptron.train([xPoints[i], yPoints[i]], desired[i]);
}
}
// Display the Result
for (let i = 0; i < numPoints; i++) {
const x = xPoints[i];
const y = yPoints[i];
let guess = ptron.activate([x, y, ptron.bias]);
let color = "black";
if (guess == 0) color = "blue";
plotter.plotPoint(x, y, color);
}Bạn nên đọc
-
Đây là lĩnh vực cực kỳ đáng đầu tư trong kỷ nguyên bùng nổ AI: năng lượng
-
Đồ thị tuyến tính trong Machine Learning
-
Vì sao dự án AI thất bại? 3 thay đổi doanh nghiệp cần làm ngay
-
2 cách giữ nguyên định dạng công thức trên ChatGPT
-
Perceptron trong Machine Learning
-
Hướng dẫn tạo nhanh phiếu bài tập trên Magic School
-
Những ví dụ về Machine Learning
-
Biểu đồ phân tán trong Machine Learning
-
Cách Claude Cowork giúp bạn tự động hóa quy trình làm việc quen thuộc của mình
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
-

Xingtu (醒图)
-

Những câu nói cà khịa người yêu cũ, stt cà khịa người yêu cũ bá đạo
2 ngày 2 -

Cách giải phương trình bậc 2
2 ngày -

Mảng (Array) trong C/C++
2 ngày 1 -

Cách cài và sử dụng VPN trên Windows 11
2 ngày -

Cách đánh số trang bỏ trang đầu, đánh số từ trang bất kỳ trong Word chi tiết nhất
2 ngày -

Cách xem khi nào bạn theo dõi ai đó trên Instagram
2 ngày -

Đọc/ghi File trong C++ | fstream trong C++
2 ngày 1 -

Cách chèn khoảng trống trong HTML
2 ngày -

Cách thay đổi kích thước Taskbar Windows 11
2 ngày 1
Làm chủ AI
Học IT
Microsoft Word 2013
Microsoft Word 2007
Microsoft Excel 2019
Microsoft Excel 2016
Microsoft PowerPoint 2019
Google Sheets
Lập trình Scratch
Bootstrap
Ô tô, Xe máy