\chapter{Phương pháp Học máy và Thiết kế Thuật toán Điều khiển}
    \section{Tổng quan về Học máy (Machine Learning): Các khái n iệm cơ bản và phân loại}
        
        Học máy là một lĩnh vực của Khoa học Máy tính, một phân nhánh của Trí tuệ Nhân tạo (Artificial Intelligence - AI), tập trung vào việc thiết kế và phát triển các thuật toán cho phép máy tính tự động học hỏi từ dữ liệu và kinh nghiệm. Mục tiêu là cho phép hệ thống tự động tìm ra các quy tắc và mô hình chi phối dữ liệu,  %\cite{Sarker2021}.
        
        \subsection{Khái niệm Học máy}
        
        Sự ra đời của Học máy được thúc đẩy bởi sự bùng nổ của Dữ liệu lớn (Big Data) và sự gia tăng mạnh mẽ của năng lực tính toán, cho phép giải quyết các bài toán quá phức tạp để có thể được giải bằng các thuật toán thủ công.
        
        Định nghĩa học thuật kinh điển của \textbf{Tom M. Mitchell (1997)} \cite{Mitchell1997} về Học máy bao gồm ba thành phần cốt lõi:
        \begin{quote}
            ``Một chương trình máy tính được gọi là học từ \textbf{kinh nghiệm ($\text{E}$)} đối với một \textbf{tác vụ ($\text{T}$)} và một \textbf{độ đo hiệu suất ($\text{P}$)}, nếu hiệu suất của nó đối với $\text{T}$, được đo bằng $\text{P}$, được cải thiện với kinh nghiệm $\text{E}$.''
        \end{quote}
        
        \begin{vd}
        Xét bài toán phân loại hình ảnh (Image Classification):
        \begin{itemize}
            \item \textbf{Tác vụ ($\text{T}$):} Phân loại một bức ảnh là "Mèo" hay "Chó".
            \item \textbf{Kinh nghiệm ($\text{E}$):} Tập hợp hàng triệu bức ảnh đã được gán nhãn ($\text{labeled}$) về Mèo và Chó.
            \item \textbf{Độ đo Hiệu suất ($\text{P}$):} Tỷ lệ chính xác ($\text{Accuracy}$) mà mô hình phân loại đúng.
        \end{itemize}
        \end{vd}
         \begin{figure}[H]
                \centering
                \includegraphics[scale = 0.55]{Content/Images/C1/dog_cat.png}
                \caption{Minh họa quá trình thực hiện ML}
                \label{fig:dog_cat}
            \end{figure}
        \newpage{}
        
        \subsection{Mục tiêu Tổng quát }%: Khả năng Tổng quát hóa}
        
        Mục tiêu cốt lõi của mọi mô hình Học máy không phải chỉ là đạt hiệu suất cao trên dữ liệu đã học, mà là khả năng Tổng quát hóa $\text{Generalization}$).
        
        \begin{enumerate}
            \item Học Mẫu ($\text{Pattern Learning}$):Mô hình phải học được hàm ánh xạ $f$ mô tả mối quan hệ giữa đầu vào ($\mathbf{x}$) và đầu ra ($\mathbf{y}$).
            \item Khả năng Tổng quát hóa: Đảm bảo rằng hàm $f$ đã học được hoạt động hiệu quả và đưa ra dự đoán chính xác trên dữ liệu mới (Test set) mà mô hình chưa từng được huấn luyện.
            \item Tránh Quá khớp ($\text{Overfitting}$): Là tình trạng mô hình học quá sát với nhiễu và các sai số ngẫu nhiên trong tập huấn luyện ($\text{E}$). Điều này dẫn đến hiệu suất $\text{P}$ cao trên $\text{E}$ nhưng lại thất bại khi gặp dữ liệu mới, khác với tập huấn luyện (Test set).
        \end{enumerate}
        
        %\hrule
        
        \subsection{Phân loại Phương pháp Học máy}
        Các phương pháp Học máy được phân loại thành ba nhóm chính là: Học có Giám sát ($\text{Supervised Learning}$), Học không Giám sát ($\text{Unsupervised Learning}$), và Học Tăng cường ($\text{Reinforcement Learning}$) dựa trên sự hiện diện của nhãn dữ liệu và cơ chế học tập \cite{Salim}
        \begin{itemize}
            \item Học có Giám sát: Mô hình được huấn luyện trên dữ liệu đã được gán nhãn và được sử dụng để tạo ra các dự đoán trên dữ liệu mới .
            \item Học không Giám sát:  Mô hình được huấn luyện trên dữ liệu chưa được gán nhãn và tự động học bằng cách trích xuất các đặc trưng và mẫu ẩn từ dữ liệu.
            \item Học Tăng cường: Một tác nhân ($\text{agent}$) được huấn luyện thông qua tương tác với môi trường, cho phép tác nhân học cách tìm ra chuỗi hành động tối ưu để đạt được mục tiêu và tối đa hóa phần thưởng.
        \end{itemize}
        \begin{figure}[H]
            \centering
            \includegraphics[scale = 0.45]{Content/Images/C1/Pp_ML_Coban.png}
            \caption{Sơ đồ các phương pháp học máy cơ bản.}
            \label{fig:Pp_ML_Coban}
        \end{figure}

    \subsection{Học có giám sát($\text{Supervised Learning}$)}
        \subsubsection{Khái niệm và Kiến trúc}
            Các thuật toán Học máy ($\text{ML}$) xử lý mỗi mẫu dữ liệu như một tập hợp các đặc trưng ($\text{features}$). Các đặc trưng này có thể mang bản chất nhị phân ($\text{binary}$), phân loại ($\text{categorical}$), hoặc liên tục ($\text{continuous}$). Nếu các mẫu dữ liệu được gán nhãn ($\text{labeled}$), thì loại hình học này được gọi là học có giám sát \cite{Salim}.
            
            Học có Giám sát bao gồm việc huấn luyện mô hình trên dữ liệu đã được gán nhãn và kiểm tra nó trên dữ liệu chưa được gán nhãn.
            
            Kiến trúc cơ bản của Học có Giám sát bắt đầu với các bước sau:
            \begin{enumerate}
                \item Thu thập Bộ dữ liệu ($\text{Dataset Collection}$).
                \item Phân chia Dữ liệu: Bộ dữ liệu được phân chia thành dữ liệu huấn luyện ($\text{training}$) và dữ liệu kiểm tra ($\text{testing}$).
                \item Tiền xử lý Dữ liệu ($\text{Preprocessing}$).
                \item Huấn luyện Mô hình: Các đặc trưng được trích xuất được đưa vào thuật toán, và mô hình được huấn luyện để học các đặc trưng liên kết với mỗi nhãn.
                \item Dự đoán: Mô hình được cung cấp dữ liệu kiểm tra và tạo ra các nhãn dự kiến (đầu ra mong muốn).
            \end{enumerate}
            
        Quá trình này được minh họa trong Hình \ref{fig:KienTrucGiamSat}.
            \begin{figure}[H]
                \centering
                \includegraphics[scale = 0.60]{Content/Images/C1/KienTrucGiamSat.png}
                \caption{Kiến trúc của học có giám sát.}
                \label{fig:KienTrucGiamSat}
            \end{figure}
        \subsubsection{Các Tác vụ Chính}
            Phân loại ($\text{Classification}$) và Hồi quy ($\text{Regression}$) là hai loại hình rộng lớn của học có giám sát. Ở nghiên cứu này chúng ta sẽ tập trung vào tác vụ Hồi quy và sẽ được thảo luận chi tiết trong các phần tiếp theo.
       
            \begin{figure}[H]
                \centering
                \includegraphics[scale = 0.65]{Content/Images/C1/Tacvu_Giamsat.png}
                \caption{Các loại tác vụ của học có giám sát.}
                \label{fig:Tacvu_Giamsat}
            \end{figure}



        
        \subsection{Bài toán hồi quy (Regression Problem)}
            Hồi quy là một kỹ thuật học có giám sát ($\text{supervised learning technique}$) cho phép khám phá các mối tương quan giữa các biến và dự đoán các giá trị liên tục dựa trên các biến này. Khi đầu ra là liên tục (thuộc tập số thực $\mathbb{R}$), bài toán được gọi là bài toán hồi quy \cite{Salim} — chẳng hạn, dự đoán cân nặng, tuổi hoặc mức lương của một người, dự báo thời tiết, hoặc dự báo giá nhà. Trong hồi quy, biến đầu vào ($\text{X}$) được ánh xạ tới biến đầu ra liên tục ($\text{Y}$).

            Trong khi Phân loại là quá trình dự đoán các nhãn rời rạc của đầu vào, thì Hồi quy lại quan tâm đến việc dự đoán các giá trị liên tục.
        
        \subsubsection{Phân loại Hồi quy}
            Hồi quy được chia thành hai loại hình chính: Hồi quy Tuyến tính Đơn giản và Hồi quy Đa biến.
            
            \begin{enumerate}
                \item Hồi quy Tuyến tính Đơn giản ($\text{Simple Linear Regression}$): Là mô hình sử dụng một đường thẳng để định nghĩa mối quan hệ giữa hai biến ($\text{X}$ và $\text{Y}$).
                \item Hồi quy Đa biến ($\text{Multiple Regression}$): Là mô hình sử dụng nhiều biến đầu vào và được chia nhỏ hơn thành hồi quy tuyến tính ($\text{linear}$) và phi tuyến tính ($\text{non-linear}$).
            \end{enumerate}
            \begin{figure}[H]
                \centering
                \includegraphics[scale = 0.65]{Content/Images/C1/Phanloai_Hoiquy.png}
                \caption{Các kiểu Hồi quy.}
                \label{fig:Phanloai_Hoiquy}
            \end{figure}
        \section{Các mô hình sử dụng trong bài toán hồi quy}
        \subsection{Linear Regression}
            \subsubsection{Tổng quan về thuật toán}
            Hồi quy tuyến tính (\textit{Linear Regression}) là phương pháp học máy có giám sát cơ bản nhất, thường được sử dụng làm mô hình cơ sở (\textit{baseline}) trong các bài toán dự báo. Mục tiêu cốt lõi của thuật toán là mô hình hóa mối quan hệ giữa biến phụ thuộc $Y$ và một hoặc nhiều biến độc lập $X$ thông qua một đường thẳng.
            
            Giả định cơ bản của mô hình là mối quan hệ giữa các biến có tính chất tuyến tính, nghĩa là sự thay đổi của $Y$ tỷ lệ thuận với sự thay đổi của $X$.
            
            \subsubsection{Cấu trúc chi tiết và thành phần mô hình}
            Dựa vào hình ảnh minh họa dưới đây, ta có thể phân tích chi tiết các thành phần cấu tạo nên một mô hình hồi quy tuyến tính đơn biến:
            
            \begin{figure}[H]
                \centering
                % Chèn tên file ảnh bạn vừa gửi
                \includegraphics[width=0.9\textwidth]{Content/Images/C1/Linear.png}
                \caption{Minh họa các thành phần của mô hình Hồi quy Tuyến tính và sai số dự báo}
                \label{fig:linear_regression}
            \end{figure}
            
            Phương trình tổng quát của đường hồi quy được biểu diễn như sau:
            \begin{equation}
                Y = \theta_1 + \theta_2 X + \epsilon
            \end{equation}
            
            Trong đó, các thành phần được mô tả chi tiết theo Hình \ref{fig:linear_regression} gồm:
            
            \begin{itemize}
                \item Dữ liệu quan sát ($y_i$ - Observed value): Các chấm tròn màu đỏ phân tán trên biểu đồ đại diện cho giá trị thực tế thu thập được từ dữ liệu.
                
                \item Đường hồi quy ($Y = \theta_1 + \theta_2 X$): Đường thẳng màu xanh đi xuyên qua đám mây dữ liệu. Đây là kết quả dự đoán tốt nhất mà mô hình tìm được.
                
                \item Giá trị dự đoán ($Y_{p_i}$ - Predicted value): Điểm màu đen nằm trên đường màu xanh. Với một giá trị đầu vào $x_i$, mô hình sẽ trả về giá trị $Y_{p_i}$ tương ứng trên đường thẳng.
                
                \item Hệ số chặn ($\theta_1$ - Intercept): Giao điểm của đường hồi quy với trục tung ($Y$). Nó biểu thị giá trị dự đoán của $Y$ khi $X = 0$.
                
                \item Hệ số góc ($\theta_2$ - Slope): Độ dốc của đường thẳng (được tính bằng $\tan \theta$). Hệ số này cho biết mức độ ảnh hưởng của $X$ lên $Y$: nếu $X$ tăng 1 đơn vị thì $Y$ sẽ tăng (hoặc giảm) bao nhiêu đơn vị.
            \end{itemize}
            
            \subsubsection{Phương pháp tối ưu hóa: Bình phương Tối thiểu ()}
            Một thành phần quan trọng được hiển thị trong hình là Sai số ngẫu nhiên ($\epsilon_i$ - Random error).
            \begin{itemize}
                \item Trên hình, $\epsilon_i$ là khoảng cách thẳng đứng (đường nét đứt) giữa điểm dữ liệu thực tế ($y_i$) và điểm dự đoán trên đường thẳng ($Y_{p_i}$).
                \item Sai số này đại diện cho phần thông tin mà mô hình không giải thích được (nhiễu).
            \end{itemize}
            
            Để tìm ra đường thẳng "tốt nhất" (tức là tìm bộ tham số $\theta_1, \theta_2$ tối ưu), thuật toán sử dụng phương pháp Bình phương Tối thiểu thường. Mục tiêu của RSS là giảm thiểu tổng bình phương của các sai số này:
            
            \begin{equation}
                \text{Minimize } RSS = \sum_{i=1}^{n} (y_i - Y_{p_i})^2 = \sum_{i=1}^{n} (y_i - (\theta_1 + \theta_2 x_i))^2
            \end{equation}
            
            Việc cực tiểu hóa hàm mất mát này đảm bảo rằng đường hồi quy nằm ở vị trí trung tâm nhất so với các điểm dữ liệu, cân bằng sai số giữa các điểm.
        \subsection{Mô hình Random Forest Regression}

            \subsubsection{Tổng quan về thuật toán}
            Random Forest (Rừng ngẫu nhiên) là một thuật toán học máy thuộc nhóm Học tập tổng hợp (Ensemble Learning), được thiết kế để giải quyết vấn đề quá khớp (\textit{overfitting}) thường gặp ở cây quyết định đơn lẻ. Thuật toán này hoạt động dựa trên nguyên lý xây dựng một tập hợp lớn các cây quyết định (\textit{Decision Trees}) và tổng hợp kết quả dự đoán của chúng.
            
            Kiến trúc tổng quát của Random Forest bao gồm ba giai đoạn chính được mô tả trong Hình \ref{fig:rf_architecture}:
            \begin{enumerate}
                \item Bootstrapping: Tạo ra các tập dữ liệu con khác nhau từ tập dữ liệu gốc bằng kỹ thuật lấy mẫu có hoàn lại.
                \item Model Building: Xây dựng song song các cây quyết định trên các tập mẫu này.
                \item Aggregating: Tổng hợp kết quả từ tất cả các cây để đưa ra dự đoán cuối cùng (Voting hoặc Averaging).
            \end{enumerate}
            
            \begin{figure}[H]
                \centering
                % Hình này bao quát toàn bộ quá trình, thay thế cho các hình nhỏ lẻ
                \includegraphics[width=1.0\textwidth]{Content/Images/C1/1.png}
                \caption{Sơ đồ kiến trúc tổng quát của Random Forest}
                \label{fig:rf_architecture}
            \end{figure}
            
            \subsubsection{Chi tiết quá trình hoạt động}
            Kỹ thuật Bootstrapping (Lấy mẫu có hoàn lại):
            giả sử bộ dữ liệu huấn luyện ban đầu có $n$ mẫu dữ liệu (\textit{samples}) và mỗi mẫu có $d$ thuộc tính (\textit{features}). Để xây dựng mỗi cây quyết định, thuật toán sử dụng kỹ thuật {Bootstrapping (hay còn gọi là \textit{random sampling with replacement}).
            
            Quá trình này diễn ra như sau:
            \begin{itemize}
                \item Thuật toán chọn ngẫu nhiên $n$ mẫu từ tập dữ liệu gốc.
                \item Cơ chế hoàn lại (Replacement): Khi một mẫu được chọn, nó không bị loại bỏ khỏi tập gốc mà vẫn có thể được chọn lại trong các lần tiếp theo.
            \end{itemize}
            
            Như minh họa trong Hình \ref{fig:bootstrapping}, mẫu số 3 được chọn hai lần, trong khi mẫu số 4 có thể không xuất hiện trong tập con này. Điều này tạo ra sự đa dạng dữ liệu cho từng cây ("Mỗi cây nhìn thấy một phiên bản khác nhau của dữ liệu").
            
            \begin{figure}[H]
                \centering
                % HÌNH 2: Hình viết tay Dataset 1,2,3,4 -> Sample (số 3 khoanh đỏ)
                \includegraphics[width=0.8\textwidth]{Content/Images/C1/2.png}
                \caption{Minh họa quá trình lấy mẫu Bootstrapping} %Một số mẫu được lặp lại, một số mẫu bị bỏ qua
                \label{fig:bootstrapping}
            \end{figure}
            

            Xây dựng cây quyết định (Tree Growing):
            Sau khi có các tập dữ liệu con, quá trình xây dựng cây diễn ra độc lập. Random Forest áp dụng thêm một yếu tố ngẫu nhiên tại bước này: Lựa chọn đặc trưng ngẫu nhiên.
        
            Tại mỗi nút phân chia (\textit{split node}) của cây:
            \begin{itemize}
                \item Thay vì xem xét toàn bộ $d$ thuộc tính để tìm điểm chia tốt nhất.
                \item Thuật toán chỉ chọn ngẫu nhiên một tập con $k$ thuộc tính ($k < d$).
                \item Cây phát triển đệ quy dựa trên tập con này cho đến khi đạt điều kiện dừng (ví dụ: độ sâu tối đa hoặc số lượng mẫu tối thiểu trong nút).
            \end{itemize}
            
            Kết quả là chúng ta thu được một tập hợp các cây quyết định có cấu trúc khác nhau, như minh họa dưới đây:
             \begin{figure}[H]
                \centering
                % Hình này giải thích chi tiết luồng đi của dữ liệu qua từng cây
                \includegraphics[width=0.8\textwidth]{Content/Images/C1/4.png}
                \caption{Luồng dữ liệu đi qua các cây thành phần để tạo ra các dự đoán riêng biệt}
                \label{fig:tree_flow}
            \end{figure}
            Cơ chế dự đoán và tổng hợp:
            khi có một dữ liệu đầu vào mới, dữ liệu này sẽ được đưa qua tất cả $N$ cây trong rừng. Mỗi cây sẽ hoạt động độc lập để đưa ra một kết quả dự đoán riêng ($k_i$).

            Đối với bài toán hồi quy (dự đoán $K_c$), kết quả cuối cùng $\hat{Y}$ được tính bằng trung bình cộng của các dự đoán thành phần:
            \begin{equation}
                \hat{Y} = \frac{1}{N} \sum_{i=1}^{N} k_i
            \end{equation}
            Trong đó $k_i$ là đầu ra của cây thứ $i$. Việc lấy trung bình này giúp triệt tiêu các sai số ngẫu nhiên của từng cây đơn lẻ, mang lại kết quả dự đoán ổn định và chính xác hơn.

        \newpage{}
        \subsection{Long Short-Term Memory (LSTM) \index{Long Short-Term Memory}}
        
        Long Short-Term Memory (LSTM) là một kiến trúc mạng nơ-ron hồi tiếp được phát triển nhằm khắc phục hạn chế suy giảm gradient thường gặp trong các mô hình Recurrent Neural Network (RNN) truyền thống khi xử lý chuỗi thời gian dài \cite{LSTM}. Nguyên nhân chính của hiện tượng này xuất phát từ việc trạng thái ẩn trong RNN phải liên tục đi qua các phép biến đổi phi tuyến, khiến thông tin từ các bước thời gian xa trong quá khứ khó được duy trì.
        
        Khác với RNN thông thường, LSTM giới thiệu một cơ chế bộ nhớ riêng biệt, được gọi là \textit{cell state}, kết hợp với hệ thống các cổng điều khiển (gates) nhằm kiểm soát dòng chảy thông tin theo thời gian. Nhờ đó, mô hình có khả năng duy trì và khai thác thông tin dài hạn hiệu quả hơn, đồng thời giảm ảnh hưởng của hiện tượng ghi nhớ ngắn hạn (short-term memory).
        
        \textbf{Cấu trúc của LSTM:}
        \begin{figure}[H]
            \centering
            \includegraphics[height=7cm]{Content/Images/C1/cau_truc_lstm.png}
            \caption{Cấu trúc một LSTM cell và dòng chảy thông tin}
            \label{fig:lstm_structure}
        \end{figure}
        
        Xét tại timestep thứ $t$, một LSTM cell nhận vào bộ dữ liệu $(x_t, h_{t-1}, c_{t-1})$ và sinh ra hai đầu ra $(h_t, c_t)$, trong đó:
        \begin{itemize}
            \item $x_t$ là vector đầu vào tại thời điểm $t$,
            \item $h_t$ là hidden state, đại diện cho thông tin ngắn hạn được sử dụng cho dự báo,
            \item $c_t$ là cell state, đóng vai trò như bộ nhớ dài hạn của mô hình.
        \end{itemize}
        
        \begin{itemize}
            \item [a)] \textbf{Cell state}
        
            Cell state là thành phần cốt lõi tạo nên sự khác biệt của LSTM so với RNN truyền thống. Nó có thể được xem như một kênh truyền thông tin xuyên suốt các bước thời gian, cho phép dữ liệu quan trọng được duy trì mà không bắt buộc phải trải qua các phép biến đổi phi tuyến mạnh. Trạng thái này được cập nhật một cách có kiểm soát thông qua các cổng logic, giúp mô hình quyết định thông tin nào cần được giữ lại, loại bỏ hoặc bổ sung.
        
            Trong mỗi LSTM cell, ba cổng chính gồm cổng quên (forget gate), cổng đầu vào (input gate) và cổng đầu ra (output gate) phối hợp với nhau để điều chỉnh cell state theo từng timestep.
        
            \item [b)] \textbf{Forget gate}
        
            Forget gate chịu trách nhiệm xác định mức độ thông tin từ cell state trước đó $c_{t-1}$ được bảo toàn ở bước thời gian hiện tại. Cổng này sử dụng hàm sigmoid để ánh xạ thông tin đầu vào vào khoảng $[0,1]$, tương ứng với mức độ giữ lại của từng thành phần trạng thái:
            \begin{equation*}
                f_t = \sigma(U_f x_t + W_f h_{t-1} + b_f).
            \end{equation*}
        
            Trong biểu thức trên, $x_t$ là đầu vào hiện tại, $h_{t-1}$ là hidden state của timestep trước, $U_f$, $W_f$ là các ma trận trọng số và $b_f$ là hệ số bias. Giá trị của $f_t$ càng tiến gần 1 thì thông tin tương ứng trong $c_{t-1}$ càng được giữ nguyên, ngược lại sẽ bị suy giảm hoặc loại bỏ.
        
            \item [c)] \textbf{Input gate}
        
            Input gate đảm nhiệm vai trò đánh giá và cập nhật thông tin mới vào cell state. Quá trình này gồm hai bước: xác định mức độ cho phép ghi nhớ và xây dựng trạng thái bộ nhớ ứng viên.
        
            Trước hết, cổng đầu vào được tính bằng:
            \begin{equation*}
                i_t = \sigma(U_i x_t + W_i h_{t-1} + b_i),
            \end{equation*}
            trong đó $i_t$ quyết định mức độ mà thông tin mới có thể ảnh hưởng đến cell state.
        
            Song song với đó, một trạng thái ứng viên $\tilde{c}_t$ được tạo ra thông qua hàm tanh:
            \begin{equation*}
                \tilde{c}_t = \tanh(U_c x_t + W_c h_{t-1} + b_c).
            \end{equation*}
        
            Trạng thái Cell state tại timestep $t$ được cập nhật bằng cách kết hợp có kiểm soát giữa thông tin cũ và thông tin mới:
            \begin{equation*}
                c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t.
            \end{equation*}
            Cơ chế này cho phép mô hình duy trì các phụ thuộc dài hạn trong chuỗi dữ liệu mà không làm suy giảm gradient trong quá trình huấn luyện.
        
            \item [d)] \textbf{Output gate}
        
            Output gate quyết định phần nào của cell state sẽ được sử dụng để tạo hidden state tại timestep hiện tại. Cổng này được tính như sau:
            \begin{align*}
                o_t &= \sigma(U_o x_t + W_o h_{t-1} + b_o),\\
                h_t &= o_t \odot \tanh(c_t).
            \end{align*}
        
            Hidden state $h_t$ vừa phản ánh thông tin bộ nhớ đã được chọn lọc, vừa đóng vai trò là đầu ra của mô hình tại thời điểm $t$ và được truyền sang timestep tiếp theo.
        \end{itemize}
        
        Từ cơ chế trên có thể thấy, hidden state $h_t$ chủ yếu mang thông tin ngắn hạn phục vụ dự báo tức thời, trong khi cell state $c_t$ đảm nhiệm vai trò lưu trữ thông tin dài hạn. Nhờ sự kết hợp này, LSTM có khả năng mô hình hóa đồng thời các phụ thuộc ngắn hạn và dài hạn trong chuỗi thời gian, vượt trội hơn so với RNN truyền thống.
        \section{Các chỉ số đánh giá}

            Việc đánh giá hiệu suất của các mô hình hồi quy là bắt buộc để đo lường mức độ phù hợp của mô hình với dữ liệu và khả năng dự đoán chính xác. Các chỉ số này chủ yếu đo lường sai số giữa giá trị dự đoán và giá trị thực tế trên tập kiểm tra, với $N$ là tổng số điểm dữ liệu.
            
            \begin{item}
                \item \textbf{Hệ số Xác định ($R^2$)}
                
                $R$-squared ($R^2$) đo lường tỷ lệ biến thiên của biến phụ thuộc được giải thích bởi toàn bộ mô hình hồi quy. Chỉ số này nằm trong khoảng từ $0$ đến $1$; giá trị càng cao cho thấy mô hình giải thích dữ liệu càng tốt.
                
                \begin{equation*}
                    R^2 = 1 - \frac{\sum_{i=1}^{N} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{N} (y_i - \bar{y})^2}
                \end{equation*}
                
                Trong đó, $\bar{y}$ là giá trị trung bình của biến phụ thuộc. Tuy nhiên, $R^2$ có xu hướng tăng khi thêm nhiều biến độc lập, kể cả khi các biến đó không thực sự cải thiện chất lượng mô hình, gây ra hiện tượng tăng "ảo".
            
                \item \textbf{Sai số Bình phương Trung bình Gốc ($\text{Root Mean Squared Error - RMSE}$)}
                
                $\text{RMSE}$ là căn bậc hai của sai số bình phương trung bình ($\text{MSE}$). Đây là chỉ số đo sai số phổ biến nhất trong hồi quy, phản ánh mức độ chênh lệch giữa giá trị dự đoán và giá trị thực tế.
                
                \begin{equation*}
                    \text{RMSE} = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2}
                \end{equation*}
                
                $\text{RMSE}$ nhạy với các điểm ngoại lai ($\text{outliers}$), do sai số được bình phương trước khi tính trung bình. Giá trị $\text{RMSE}$ càng nhỏ (và có cùng đơn vị với biến mục tiêu) nghĩa là mô hình dự đoán càng chính xác.
                
                \item \textbf{Sai số Tuyệt đối Trung bình ($\text{Mean Absolute Error - MAE}$)}
                
                $\text{MAE}$ đo sai số trung bình tuyệt đối giữa giá trị dự đoán và giá trị thực tế.
                
                \begin{equation*}
                    \text{MAE} = \frac{1}{N} \sum_{i=1}^{N} |y_i - \hat{y}_i|
                \end{equation*}
                
                Khác với $\text{RMSE}$, $\text{MAE}$ không phạt quá nặng các sai số lớn ($\text{outliers}$) nên bền vững hơn. Đây là chỉ số dễ diễn giải và phản ánh trực tiếp mức độ sai lệch trung bình của mô hình. Giá trị $\text{MAE}$ thấp thể hiện mô hình có độ chính xác tốt.
                
                \item \textbf{Hệ số Xác định Điều chỉnh ($\text{Adjusted } R^2$)}
                $\text{Adjusted } R^2$ là phiên bản điều chỉnh của $R^2$, bổ sung yếu tố phạt khi mô hình thêm các biến độc lập không cần thiết. Chỉ số này giúp đánh giá mức độ giải thích thực sự của mô hình, tránh hiện tượng $R^2$ tăng "ảo" khi thêm biến.
                
                \begin{equation*}
                    \text{Adjusted } R^2 = 1 - \left[ \frac{(1 - R^2)(N - 1)}{N - k - 1} \right]
                \end{equation*}
                
                Trong đó, $N$ là tổng số quan sát và $k$ là số lượng biến độc lập trong mô hình. $\text{Adjusted } R^2$ chỉ tăng khi biến mới đóng góp ý nghĩa vào mô hình; ngược lại sẽ giảm. Vì vậy, đây là chỉ số phù hợp để đánh giá mô hình hồi quy đa biến.
            \end{item}
            
    \section{Thiết kế Thuật toán: Điều khiển Tưới Bù theo Hao hụt Dự báo}
        \label{sec:algorithm_design}
        
        Dựa trên cơ sở lý thuyết về cân bằng nước trong đất (Chương 1), hệ thống áp dụng phương pháp "Cảm biến ảo" (Virtual Sensor). Thay vì đo trực tiếp, thuật toán tính toán trạng thái nước dựa trên các tham số vật lý của đất ($\theta_{FC}, \theta_{WP}$) và đặc tính sinh học của rễ ($Z_r$).
        
        \subsection{Thiết lập Tham số Cấu hình}
        Để đảm bảo tính thực tiễn, các thông số đầu vào được lựa chọn dựa trên tài liệu chuẩn FAO-56 \cite{Allen1998FAO56}, tập trung vào việc quản lý lớp đất mặt nơi tập trung mật độ rễ cao nhất.
        
        \subsubsection{Tham số Đất (Soil Parameters)}
        Loại đất mô phỏng là Đất thịt pha cát (Sandy Loam)  với các đặc tính thủy lực từ Bảng 19 - FAO-56 \cite{Allen1998FAO56} phù hợp cho việc canh tác cà chua:
        \begin{itemize}
            \item Độ ẩm đồng ruộng ($\theta_{FC}$): $0.18\ m^3/m^3$ (Giới hạn giữ nước tối ưu).
            \item Điểm héo cây ($\theta_{WP}$): $0.08\ m^3/m^3$ (Giới hạn cây chết).
            \item Tổng lượng nước hữu hiệu ($TAW$): $100\ mm/m$.
        \end{itemize}
        
        \subsubsection{Tham số Bộ rễ (Root Parameters)}
        Độ sâu vùng rễ ($Z_r$) xác định dung tích "bể chứa" nước của cây. Mặc dù rễ cà chua có thể phát triển sâu hơn, đồ án giới hạn vùng tính toán trong phạm vi Vùng rễ hữu hiệu (Effective Root Zone) theo khuyến nghị canh tác chính xác:
        \begin{itemize}
            \item Độ sâu rễ ban đầu ($Z_{r, min}$): $0.15 m$ (Giai đoạn cây con).
            \item Độ sâu rễ tối đa ($Z_{r, max}$): $0.60 m$. Đây là tầng đất tập trung hơn 80\% khối lượng rễ tích cực hút nước và dinh dưỡng.
        \end{itemize}
        
        \begin{table}[H]
            \centering
            \caption{Bảng tham số cấu hình cho thuật toán}
            \label{tab:system_params}
            \begin{tabular}{|l|c|c|l|}
                \hline
                \textbf{Đối tượng} & \textbf{Tham số} & \textbf{Giá trị} & \textbf{Ghi chú} \\ \hline
                \multirow{2}{*}{Đất} & $\theta_{FC}$ & 0.18 & Bảng 19, FAO-56 \\ \cline{2-4}
                 & $\theta_{WP}$ & 0.08 & Bảng 19, FAO-56 \\ \hline
                \multirow{2}{*}{Cây Cà chua} & $Z_{r, min}$ & 0.15 m & Độ sâu gieo trồng \\ \cline{2-4}
                 & $Z_{r, max}$ & 0.60 m & Vùng rễ hữu hiệu (Effective Zone) \\ \hline
            \end{tabular}
        \end{table}
        Độ sâu rễ hữu hiệu $Z_{r}$ ($0.15m$ - $0.60m$): Đây là vùng tập trung hơn $80\%$ khối lượng rễ tích cực hút nước. Việc giới hạn ở $0.60m$ giúp tối ưu hóa lượng nước tưới, tránh lãng phí nước thấm sâu xuống các tầng đất mà rễ không tiếp cận được
        \newpage{}
        \subsection{Mô hình Hóa Biến Trạng thái}
        Các biến trạng thái của thuật toán được định nghĩa để theo dõi sự biến động độ ẩm trong vùng rễ hữu hiệu:
        
        \begin{itemize}
            \item \textbf{Dung tích nước hữu hiệu tối đa ($S_{max}^{(t)}$):} 
            Lượng nước tối đa đất có thể cung cấp cho cây tại ngày $t$, tăng dần theo sự mở rộng của vùng rễ:
            \begin{equation}
                S_{max}^{(t)} = 1000 \times (\theta_{FC} - \theta_{WP}) \times Z_r^{(t)}
            \end{equation}
            
            \item \textbf{Ngưỡng kích hoạt tưới ($S_{trigger}^{(t)}$):} 
            \begin{equation}
                S_{trigger}^{(t)} = S_{max}^{(t)} \times (1 - MAD)
            \end{equation}
            Trong đó $MAD \in \{0.4, 0.5, 0.6\}$ là các mức độ cho phép đất khô đi trước khi tưới lại.
        \end{itemize}
        
        \subsection{Phương trình Cập nhật và Lưu đồ Thuật toán}
        Tại mỗi bước thời gian $t$, trạng thái nước trong đất ($S_{current}$) được cập nhật theo phương trình cân bằng:
        \begin{equation}
            S_{current}^{(t)} = S_{current}^{(t-1)} - \underbrace{(ET_0^{(t)} \times K_c^{(t)})}_{\text{Hao hụt}} + \underbrace{\Delta S_{root}^{(t)}}_{\text{Mở rộng vùng rễ}}
        \end{equation}
        
        
        \begin{algorithm}[H]
        \caption{Thuật toán Tính toán Lượng nước Tưới Bù}
        \label{alg:deficit_irrigation}
        \begin{algorithmic}[1]
        \REQUIRE $\theta_{FC}, \theta_{WP}, Z_{r,min}, Z_{r,max}, MAD$
        \ENSURE $V_{irr}$ (Lượng nước cần cung cấp - mm/ngày)
        
        \STATE \textbf{Khởi tạo:} $Z_r^{(0)} \leftarrow Z_{r,min}$; \quad $S_{current} \leftarrow S_{max}^{(0)}$ 
        
        \WHILE{System is Running (Day $t$)}
            \STATE // \$B1: Cập nhật Vùng rễ \& Ngưỡng tưới
            \STATE $Z_r^{(t)} \leftarrow$ Nội suy độ sâu rễ theo ngày tuổi
            \STATE $S_{max}^{(t)} \leftarrow 1000 \times (\theta_{FC} - \theta_{WP}) \times Z_r^{(t)}$
            \STATE $S_{trigger}^{(t)} \leftarrow S_{max}^{(t)} \times (1 - MAD)$
            
            \STATE // \$B2: Tính toán Hao hụt \& Cân bằng nước
            \STATE $ET_0^{(t)} \leftarrow AI\_Model.predict(SriLankaWeatherDataset\_Input)$
            \STATE $Loss \leftarrow ET_0^{(t)} \times K_c^{(t)}$
            
            \IF{$S_{max}^{(t)} > S_{max}^{(t-1)}$}
                \STATE $S_{current} \leftarrow S_{current} + (S_{max}^{(t)} - S_{max}^{(t-1)})$
            \ENDIF
            \STATE $S_{current} \leftarrow S_{current} - Loss$
            
            \STATE // B3: Ra quyết định
            \IF{$S_{current} \le S_{trigger}^{(t)}$}
                \STATE $V_{depth} \leftarrow S_{max}^{(t)} - S_{current}$ 
                \STATE $V_{irr} \leftarrow V_{depth} \times Area$ 
                \STATE $S_{current} \leftarrow S_{max}^{(t)}$ 
            \ELSE
                \STATE $V_{irr} \leftarrow 0$
            \ENDIF
            \STATE $t \leftarrow t + 1$
        \ENDWHILE
        \end{algorithmic}
        \end{algorithm}
        
        