Đà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
-
Cách lựa chọn những tác vụ nào nên tự động hóa bằng AI
-
Cách tích hợp Google Sheets vào n8n
-
Perceptron trong Machine Learning
-
Mỹ công bố cẩm nang quản lý rủi ro AI cho ngành tài chính
-
Những ví dụ về Machine Learning
-
Mở rộng ảnh sắc nét với Magic Expand trên Canva AI
-
Nhận dạng mẫu trong Machine Learning
-
Biểu đồ phân tán trong Machine Learning
-
Đồ thị tuyến tính trong 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
-

Cách tạo liên kết trong PowerPoint
2 ngày -

Hướng dẫn các cách tính tổng trong Word
2 ngày -

Công thức tính vận tốc, quãng đường, thời gian chính xác
2 ngày -

3 cách tắt tường lửa Windows 11
2 ngày -

999+ Cap về đi lễ chùa, stt về đi lễ chùa, những câu nói hay về đi lễ chùa cầu bình an
2 ngày -

Kiểu dữ liệu trong C/C++
2 ngày 1 -

Bảng mã ASCII và bảng ký tự Latin chuẩn ISO 1252
2 ngày -

Reset Windows 10 về trạng thái ban đầu
2 ngày 21 -

Cách tăng dung lượng ổ C trong Windows 11/10/8/7
2 ngày 3 -

Cách thay đổi ảnh đại diện tài khoản người dùng mặc định trong Windows
2 ngày
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