30/09/2018, 20:32

Dự đoán khả năng tiêu thụ điện bằng ANN?

Mình đang làm một đồ án về “Dự đoán khả năng tiêu thụ điện bằng mạng Neural”. Với input lấy từ dataset ban đầu.

Hiện tại mình đã đưa ra được kết quả output, vật giá trị output( sử dụng activation function), vậy giá này có phải là giá trị dự đoán chưa ạ? (vì cái hàm kích hoạt mình dùng là Sigmoid, nên ngưỡng giá trị luôn nằm từ 0 tới 1, do đó kết quả cũng chỉ nằm từ 0 tới 1 nên mình thấy rất vô lý)

Itachi Citus viết 22:41 ngày 30/09/2018

Hiện tại mình đã đưa ra được kết quả output

?

Bạn tự viết ANN hay sử dụng thư viện.

Lê Đặng Trung Thọ viết 22:48 ngày 30/09/2018

Mình mới bắt đầu làm, mình tham khảo cách làm tai đây http://www.millermattson.com/dave/?p=54

Itachi Citus viết 22:47 ngày 30/09/2018

Nếu không bị bắt buộc viết code thì bạn nên xài thư viện thì dễ hơn http://www.opennn.net
Dùng ngôn ngữ khác được không bạn, C++ mình không rõ lắm với lại cũng ít thư viện chuẩn.

Lê Đặng Trung Thọ viết 22:32 ngày 30/09/2018

Ko bắt buộc có dùng thư viện bạn ơi, mình vẫn đang bị rối ở một chỗ thế này.
Ví dụ: lượng điện tiêu thụ của các ngày trong tuần là:
Thứ 2: 5W
Thứ 3: 7W
Thứ 4: 10W
Vậy thì mình dự đoán thứ 5 nó sẽ được bao nhiêu?
Mà hiện tại cái output của mình chỉ nằm trong khoảng giá trị từ 0 -> 1 vì lý do sử dụng activation function là sigmoid (giá trị sigmoid nằm khoảng 0 -> 1) nên dù nhập bao nhiêu dữ liệu vào thì nó cũng chỉ nằm từ 0 -> 1. Nên hiện tại mình không biết làm thế nào để dự đoán được?

Itachi Citus viết 22:47 ngày 30/09/2018

Cái chỗ này mình không hiểu nè , output đúng của bạn nằm khác khoảng giá trị với output của mạng thì lúc bạn huấn luyện, tính đạo hàm rồi tính độ lỗi chương trình tính kiểu nào

Bạn có thể chuyền miền giá trị 5, 7, 10 về khoảng [0, 1] nếu muốn sử dụng sigmoid. Giả sử giá điện nhỏ nhất là x_min và giá điện cao nhất là x_max thì với x bất kỳ có thể chuyển miền giá trị về [0, 1] theo công thức sau:
x_new = (x - x_min) / (x_max - x_min)
Sau đó khi có kết quả dự đoán của mạng có thể chuyển ngược nó lại giá trị ban đầu bằng cách
x = x_new * (x_max - x_min) + x_min

Lê Đặng Trung Thọ viết 22:36 ngày 30/09/2018

Cảm ơn bạn nhiều, có thể mình chưa chuẩn hóa dữ liệu mà đưa thẳng vào mạng neural, nên dẫn đến kết quả như vậy. Mình cũng đang thắc mắc, vậy giá trị dự đoán thứ 5 luôn nằm trong khoảng 5 -> 10 (min và max) đúng không bạn? Vậy 1 dãy data từ thấp tới lớn, thì khả năng đưa ra kết quả cũng chỉ nằm trong khoảng min - max?
Thứ 2: 5
Thứ 3: 7
Thứ 4: 10
Thứ 5:?

Itachi Citus viết 22:44 ngày 30/09/2018

uhm nếu chuẩn hóa theo cách đó thì sẽ như vậy . Bạn có thể tránh được chuyện này bằng cách tự tính delta cho lớp cuối, thay activation function (relu), hoặc đơn giản nếu dữ liệu tuyến tính bạn có thể dùng linear regression.

Lê Đặng Trung Thọ viết 22:34 ngày 30/09/2018

Cảm ơn bạn rất nhiều. :))

Bài liên quan
0