LossGradient
Tính vector hoặc ma trận của các gradient của hàm mất mát.
vector vector::LossGradient(
const vector& vect_true, // vector của giá trị thật
ENUM_LOSS_FUNCTION loss, // loại hàm mất mát
... // tham số bổ sung
);
matrix matrix::LossGradient(
const matrix& matrix_true, // ma trận của giá trị thật
ENUM_LOSS_FUNCTION loss, // hàm mất mát
);
matrix matrix::LossGradient(
const matrix& matrix_true, // ma trận của giá trị thật
ENUM_LOSS_FUNCTION loss, // hàm mất mát
ENUM_MATRIX_AXIS axis, // trục
... // tham số bổ sung
);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Tham số
vect_true/matrix_true
[in] Vector hoặc ma trận của các giá trị thật.
loss
[in] Hàm mất mát từ liệt kê ENUM_LOSS_FUNCTION.
axis
[in] Giá trị liệt kê ENUM_MATRIX_AXIS (AXIS_HORZ — trục ngang, AXIS_VERT — trục dọc).
...
[in] Tham số bổ sung delta
chỉ có thể được sử dụng bởi hàm mất mát Hubert (LOSS_HUBER
).
Giá trị trả về
Vector hoặc ma trận của các giá trị gradient của hàm mất mát. Gradient là đạo hàm riêng theo dx (x là giá trị dự đoán) của hàm mất mát tại một điểm nhất định.
Ghi chú
Gradient được sử dụng trong mạng nơ-ron để điều chỉnh trọng số của ma trận trọng số trong quá trình lan truyền ngược, khi huấn luyện mô hình.
Mạng nơ-ron nhằm tìm ra các thuật toán giảm thiểu lỗi trên mẫu huấn luyện, mà hàm mất mát được sử dụng cho việc này.
Các hàm mất mát khác nhau được sử dụng tùy thuộc vào bài toán. Ví dụ, Sai số bình phương trung bình (MSE) được sử dụng cho bài toán hồi quy, và Entropy chéo nhị phân (BCE) được sử dụng cho mục đích phân loại nhị phân.
Ví dụ về tính toán gradient của hàm mất mát
matrixf y_true={{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9,10,11,12 }};
matrixf y_pred={{ 1, 2, 3, 4 },
{11,10, 9, 8 },
{ 5, 6, 7,12 }};
matrixf loss_gradient =y_pred.LossGradient(y_true,LOSS_MAE);
matrixf loss_gradienth=y_pred.LossGradient(y_true,LOSS_MAE,AXIS_HORZ);
matrixf loss_gradientv=y_pred.LossGradient(y_true,LOSS_MAE,AXIS_VERT);
Print("loss gradients\n",loss_gradient);
Print("loss gradients on horizontal axis\n",loss_gradienth);
Print("loss gradients on vertical axis\n",loss_gradientv);
/* Kết quả
loss gradients
[[0,0,0,0]
[0.083333336,0.083333336,0.083333336,0]
[-0.083333336,-0.083333336,-0.083333336,0]]
loss gradients on horizontal axis
[[0,0,0,0]
[0.33333334,0.33333334,0.33333334,0]
[-0.33333334,-0.33333334,-0.33333334,0]]
loss gradients on vertical axis
[[0,0,0,0]
[0.25,0.25,0.25,0]
[-0.25,-0.25,-0.25,0]]
*/
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27