Nếu ký tự đầu tiên có mức độ quan trọng cao, mô hình sẽ học để không cập nhật trạng thái ẩn sau lần quan sát đầu tiênb.. Học cách bỏ qua những quan sát tạm thời không liên quan, cũng như
Trang 1TRƯỜNG ĐẠI HỌC THỦY LỢI
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
HỌC PHẦN: TRÍ TUỆ NHÂN TẠO NÂNG CAO
ĐỀ TÀI: Dự Đoán Nhiệt Độ Của Thành Phố
Giáo viên hướng dẫn: Nguyễn Thị Kim Ngân Học viên thực hiện:
Nguyễn Duy Anh - 2051060385 – 62TH1 Bùi Tuấn Minh – 2051063681 – 62TH1 Bùi Tiến Đạt – 2051063915 – 62TH1
Hà Nội, năm 2023 Phần 1: Lý thuyết
Trang 21 Mạng nơ-ron hồi tiếp (RNN):
Thời điểm t tương ứng với bước t trong một vòng lặp Giả sử, tại bước thời gian t ta có:
Đầu vào:
Ht Rn x h là biến ẩn tại bước thời gian t của chuỗi ∈
Đầu ra tại bước thời gian t:
2 Nút hồi tiếp có cổng (GRU):
Trang 3nào nên cập nhật và khi nào nên xóa trạng thái ẩn
a Nếu ký tự đầu tiên có mức độ quan trọng cao, mô hình sẽ học để không cập nhật
trạng thái ẩn sau lần quan sát đầu tiên
b Học cách bỏ qua những quan sát tạm thời không liên quan, cũng như cách xóa
trạng thái ẩn khi cần thiết
c Một ô nhớ GRU có 2 cổng: Cổng xóa, cổng cập nhật
d Cổng xóa cho phép kiểm soát bao nhiêu phần của trạng thái trước đây được giữ
lại:
e Cổng cập nhật cho phép kiểm soát bao nhiêu phần của trạng thái mới sẽ giống
trạng thái cũ:
*Hoạt động của Cổng Xóa:
Để giảm ảnh hưởng của các trạng thái trước đó, ta nhân với theo từng phần tử
Nếu các phần tử của có giá trị gần với 1 , kết quả sẽ giống RNN thông thường
Nếu tất cả các phần tử của gần với 0 , trạng thái ẩn sẽ là đầu ra của một perceptron đa tầng với đầu vào là Bất kỳ trạng thái ẩn nào tồn tại trước đó đều được đặt lại về giá trị mặc định
Tại đây , nó được gọi là trạng thái ẩn tiềm năng:
Trang 4*Hoạt động của Cổng Cập Nhật:
Cổng Cập nhật xác định mức độ giống nhau giữa trạng thái mới và trạZng thái
cũ , cũng như mức độ trạng thái ẩn tiềm năng được sử dụng:
Nếu = 1, chúng ta giữ lại trạng thái cũ Thông tin từ được bỏ qua, tương đương với việc bỏ qua bước thời gian t trong chuỗi phụ thuộc
Nếu gần 0, trạng thái ẩn sẽ gần với trạng thái ẩn tiềm năng
*Tính chất của GRU:
Các mạng GRU có hai tính chất nổi bật sau:
Cổng xóa giúp nắm bắt các phụ thuộc ngắn hạn trong chuỗi thời gian
Cổng cập nhật giúp nắm bắt các phụ thuộc dài hạn trong chuỗi thời gian
3 Bộ nhớ ngắn hạn dài (LSTM):
*Bộ nhớ Ngắn hạn Dài (LSTM):
Khi nào cần nhớ và khi nào nên bỏ qua đầu vào trong trạng thái tiềm ẩn? Mạng LSTM được thiết kế gồm 3 cổng:
Cổng đầu ra (ouput gate): để đọc các thông tin từ ô nhớ
Cổng đầu vào (input gate): để quyết định khi nào cần ghi dữ liệu vào ô nhớ
Cổng quên (forget gate): để thiết lập lại nội dung chứa trong ô nhớ
, và được xử lý bởi một tầng kết nối đầy đủ và một hàm kích hoạt sigmoid để tính toán các giá trị của các cổng
*Cổng đầu vào, Cổng quên, Cổng đầu ra
Giả sử có h nút ẩn, mỗi minibatch có kích thước n và kích thước đầu vào là d
Trang 5*Ô nhớ Tiềm năng:
*Ô nhớ
điều chỉnh lượng dữ liệu mới được lấy vào thông qua
chỉ định lượng thông tin cũ cần giữ lại trong ô nhớ
Nếu xấp xỉ bằng 1 và xấp xỉ bằng 0 , thì giá trị ô nhớ trong quá khứ sẽ được lưu lại qua thời gian và truyền tới bước thời gian hiện tại
Thiết kế này nhằm giảm bớt sự tiêu biến gradient , nắm bắt các phụ thuộc dài hạn trong chuỗi thời gian tốt hơn
Trạng thái ẩn
Giá trị của luôn nằm trong khoảng (− 1 , 1 )
Nếu giá trị của cổng đầu ra là 1 , toàn bộ thông tin trong ô nhớ được đưa tới bộ dự đoán
Nếu giá trị của cổng đầu ra là 0 , tất cả các thông tin trong ô nhớ được giữ
Trang 6Phần 2: Ứng dụng trong thực tế
1 .Mô tả bài toán
- Tên bài toán: Dự Đoán Nhiệt Độ Của Thành Phố
- Mục đích của bài toán: Sử dụng thuật toán mạng No ron hồi tiếp để dự đoán nhiệt
độ của thành phố Jena Sử dụng bộ dữ liệu chuỗi thời gian Jena Climate Dataset để train, test
- Input: Mảng dữ liệu 2 chiều gồm các yếu tố đánh giá nhiệt độ
- Ouput: Nhiệt độ của thành phố sau 10 phút
- Tóm tắt công việc thực hiện của bài toán:
+ Đọc dữ liệu từ file CSV
+ Tạo các tập dữ liệu liên tục
+ Chia dữ liệu train theo tỷ lệ 80% train, 20% test
+ Chia dữ liệu của 80% train được chia sang thành 90% train và 10% validation + Sử dụng RNN (Convolutional Neural Network), GRU, và LSTM để giải quyết bài toán
2 Mô tả tập dữ liệu của bài toán
- Dữ liệu gồm những chiều thông tin:
Bộ dữ liệu gồm có:
p (mbar) : Đơn vị áp suất lấy từ SI pascal được sử dụng để định lượng áp suất bên trong Các báo cáo khí tượng thường nêu
VPmax (mbar): Áp suất hơi bão hòa
VPact (mbar): Áp suất hơi
VPdef (mbar): Thâm hụt áp suất hơi
sh (g/kg): độ ẩm cụ thể H2OC (mmol/mol): nồng độ hơi nước
rho (g/m ** 3): kín gió
Trang 7wv (m/s): Tốc độ gió max
T (degC): Nhiệt độ đo bằng độ C
- Có: 420551 mẫu dữ liệu
- Mô tả nhãn lớp của dữ liệu: Nhãn là nhiệt độ của thành phố cập nhật sau 10 phút
- Mô tả ma trận dữ liệu (X), nhãn lớp (Y):
Ma trận dữ liệu (X) gồm p(mbar), VPmax (mbar), VPact (mbar), VPdef (mbar), sh (g/kg), rho (g/m ** 3), wv (m/s), T (degC)
Nhãn lớp (Y): T (degC) sau 10 phút
- Chia tập dữ liệu thành 3 phần:
+ Chia dữ liệu train theo tỷ lệ 80% train, 20% test
+ Chia dữ liệu của 80% train được chia sang thành 90% train và 10% validation
3 Thiết kế mô hình
- Trình bày thiết kế mạng nơ ron tương ứng với các phương pháp RNN, GRU, LSTM để thực hiện bài toán
- RNN:
- model= Sequential()
- model.add(SimpleRNN(120, activation='relu',
kernel_initializer='he_normal',
input_shape X_train=( shape[1], X_train.shape[ ])))2
- model.add(Dense(120, activation='relu',
kernel_initializer='he_normal'))
- model.add(Dense(32, activation='relu',
kernel_initializer='he_normal'))
- model.add(Dense( ))1
Trang 8- GRU:
- model= Sequential()
- model.add(GRU(170, activation='relu', kernel_initializer='he_normal',
input_shape X_train=( shape[1], X_train.shape[ ])))2
- model.add(Dropout(0.3))
- model.add(Dense(170, activation='relu', kernel_initializer='he_normal'))
- model.add(BatchNormalization())
- model.add(Dropout(0.3))
- model.add(Dense(100, activation='relu', kernel_initializer='he_normal'))
- model.add(BatchNormalization())
- model.add(Dropout(0.3))
- model.add(Dense(32, activation='relu', kernel_initializer='he_normal'))
- model.add(Dense( ))1
Trang 9- LSTM:
- model= Sequential()
- model.add(LSTM(120, activation='relu',
kernel_initializer='he_normal',
input_shape X_train=( shape[1], X_train.shape[ ])))2
- model.add(Dense(120, activation='relu',
kernel_initializer='he_normal'))
- model.add(Dense(32, activation='relu',
kernel_initializer='he_normal'))
- model.add(Dense( ))1
- model.compile(optimizer='adam', loss='mse', metrics=['mae'])
- model.fit(X_train y_train epochs, , =10, batch_size=128, verbose= , validation_data X_val y_val=( , ))
Trang 104 Kết quả thực nghiệm
- So sánh chất lượng của các mô hình RNN, GRU, LSTM trên tập test
- RNN đạt kết quả R2 cao nhất:
R2 score: 0.9863381511565955
MAE: 0.48670572
MSE: 0.9702317
RMSE: 0.9850034
- LSTM đạt kết quả R2 cao thứ nhì:
R2 score: 0.9775396814770307
MAE: 0.41473407
MSE: 1.5950778
RMSE: 1.2629639
- GRU đạt kết quả tương đối:
R2 score: 0.961571848187065
MAE: 1.2361729
MSE: 2.7290752
RMSE: 1.6519912
Trang 11-Kết luận
Tóm lược nội dung bài tập lớn đã làm được:
+ Hiểu Tổng Quan Về Học Sâu
+ Hiểu Được Vai Trò Và Cách Hoạt Động Của RNN, GRU Và LSTM + Tiến Hành Thực Nghiệm Trên Bài Toán Thực Tế
Tài liệu tham khảo
- Các tài liệu được tham khảo trong báo cáo:
Slide bài giảng môn Học Sâu, trường Đại Học Thủy Lợi