Loss
Tính giá trị của hàm mất mát.
double vector::Loss(
const vector& vect_true, // vector của giá trị thật
ENUM_LOSS_FUNCTION loss, // hàm mất mát
... // tham số bổ sung
);
double matrix::Loss(
const matrix& matrix_true, // ma trận của giá trị thật
ENUM_LOSS_FUNCTION loss, // hàm mất mát
);
double matrix::Loss(
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ề
Giá trị kiểu double.
Cách tham số delta
được sử dụng trong hàm mất mát Hubert (LOSS_HUBER
)
double delta = 1.0;
double error = fabs(y - x);
if(error<delta)
loss = 0.5 * error^2;
else
loss = 0.5 * delta^2 + delta * (error - delta);
2
3
4
5
6
Ghi chú
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.
Giá trị của hàm mất mát cho biết giá trị dự đoán của mô hình sai lệch bao nhiêu so với giá trị thực tế.
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ề cách gọi hàm mất mát Hubert:
vector y_true = {0.0, 1.0, 0.0, 0.0};
vector y_pred = {0.6, 0.4, 0.4, 0.6};
double loss=y_pred.Loss(y_true,LOSS_HUBER);
Print(loss);
double loss2=y_pred.Loss(y_true,LOSS_HUBER,0.5);
Print(loss2);
/* Kết quả
0.155
0.15125
*/
2
3
4
5
6
7
8
9
10
11