Math
Đây là phần không thể thiếu trong các buổi phỏng vấn vì toán học đóng vai trò quan trọng, nền tảng trong Machine Learning.
Một số câu hỏi lý như:
Đạo hàm là gì
Đạo hàm là một khái niệm trong toán học, cụ thể là trong phân tích vi phân. Đạo hàm của một hàm số tại một điểm cho biết tốc độ biến thiên của hàm số tại điểm đó.
Trong machine learning, đạo hàm được sử dụng rộng rãi trong quá trình tối ưu hóa mô hình. Khi xây dựng và huấn luyện một mô hình machine learning, chúng ta thường đặt mục tiêu là tìm các tham số tối ưu để mô hình có thể dự đoán chính xác nhất. Quá trình này thường được gọi là tối ưu hóa tham số.
Sử dụng đạo hàm, chúng ta có thể tính toán độ dốc (gradient) của một hàm mất mát (loss function) theo các tham số của mô hình. Độ dốc cho biết hướng và tốc độ mà hàm mất mát thay đổi khi các tham số thay đổi. Bằng cách sử dụng các phương pháp tối ưu hóa dựa trên đạo hàm như gradient descent, chúng ta có thể điều chỉnh các tham số để giảm thiểu hàm mất mát và tìm ra giá trị tối ưu của chúng.
Ứng dụng của đạo hàm trong machine learning không chỉ giới hạn trong quá trình tối ưu hóa tham số, mà còn mở ra nhiều cánh cửa cho các thuật toán machine learning phức tạp hơn như mạng neural và học sâu (deep learning). Trong mạng neural, đạo hàm đóng vai trò quan trọng trong quá trình lan truyền ngược (backpropagation), nơi mà đạo hàm của hàm mất mát được tính toán để cập nhật trọng số của mạng và làm cho mạng học được từ dữ liệu huấn luyện.
Ma trận, ma trận chuyển vị, ma trận nghịch đảo...
Vector, Tensor
Trong machine learning, vector và tensor được sử dụng để biểu diễn và xử lý dữ liệu.
Vector trong machine learning:
Trong machine learning, vector thường được sử dụng để biểu diễn dữ liệu đầu vào hoặc đầu ra của mô hình. Ví dụ, trong bài toán phân loại hình ảnh, mỗi hình ảnh có thể được biểu diễn dưới dạng một vector nhiều chiều, trong đó mỗi chiều tương ứng với một đặc trưng của hình ảnh. Vector cũng được sử dụng để biểu diễn trọng số và tham số của mô hình machine learning. Ví dụ, trong mạng neural, trọng số giữa các nơ-ron có thể được biểu diễn dưới dạng vector. Tensor trong machine learning:
Tensor là cấu trúc dữ liệu quan trọng trong machine learning, đặc biệt trong deep learning. Các dữ liệu đa chiều như hình ảnh, video, âm thanh, văn bản thường được biểu diễn dưới dạng tensor để có thể xử lý và áp dụng các thuật toán machine learning. Trong deep learning, các mạng neural sử dụng các tensor để biểu diễn dữ liệu đầu vào, trọng số, đầu ra và các đặc trưng trung gian trong quá trình lan truyền ngược. Các phép toán trên tensor như cắt, gộp, nhân ma trận, tích chập và pooling được sử dụng để xử lý dữ liệu và trích xuất đặc trưng trong deep learning. Vector và tensor là các cấu trúc dữ liệu quan trọng trong machine learning, cho phép biểu diễn và xử lý dữ liệu theo cách phù hợp với các thuật toán và mô hình machine learning.
Xác suất thống kê: khái niệm cơ bản, xác suất độc lập, xác suất có điều kiện, định lý Bayes...
Trình bày hiểu biết về euclidean distance, cosine similary..
Machine Learning
Khái niệm cơ bản về Machine Learning
Machine learning là một lĩnh vực trong trí tuệ nhân tạo (AI) mà nghiên cứu về các phương pháp và kỹ thuật để máy tính tự động học từ dữ liệu mà không cần được lập trình cụ thể. Mục tiêu chính của machine learning là xây dựng các mô hình và thuật toán có khả năng hiểu và dự đoán từ dữ liệu, từ đó tạo ra các ứng dụng thông minh và có khả năng tự học.
Có thể phân loại Machine Learning thành bao nhiêu nhóm.
Machine learning có thể được phân loại thành ba nhóm chính dựa trên phương pháp tiếp cận và cách mà dữ liệu huấn luyện được sử dụng. Ba nhóm chính này là:
Học có giám sát (Supervised Learning):
Trong học có giám sát, mô hình machine learning được huấn luyện trên một tập dữ liệu huấn luyện đã được gán nhãn, tức là có đầu ra mong muốn cho mỗi điểm dữ liệu đầu vào. Mục tiêu của học có giám sát là xây dựng một mô hình dự đoán chính xác các đầu ra mới cho các dữ liệu chưa từng được nhìn thấy trước đó. Các thuật toán học có giám sát phổ biến bao gồm: hồi quy tuyến tính (linear regression), hồi quy logistic (logistic regression), cây quyết định (decision trees), máy vector hỗ trợ (support vector machines), và mạng neural (neural networks). Học không giám sát (Unsupervised Learning):
Trong học không giám sát, không có dữ liệu huấn luyện được gán nhãn và mô hình machine learning phải tự khám phá các mẫu và cấu trúc trong dữ liệu. Mục tiêu của học không giám sát thường là phân nhóm (clustering) dữ liệu, xác định cấu trúc dữ liệu, hoặc giảm chiều dữ liệu. Các thuật toán học không giám sát phổ biến bao gồm: K-means clustering, phân tích thành phần chính (principal component analysis - PCA), và phân cụm Gaussian (Gaussian mixture models). Học tăng cường (Reinforcement Learning):
Trong học tăng cường, mô hình machine learning được huấn luyện để tương tác với một môi trường động và đạt được mục tiêu cụ thể thông qua việc tìm hiểu các hành động tối ưu. Mô hình nhận phản hồi từ môi trường theo các hành động mà nó thực hiện và cố gắng tối đa phần thưởng (reward) nhận được trong quá trình tương tác. Học tăng cường thường được áp dụng trong các lĩnh vực như điều khiển robot, chơi game và quyết định trong thời gian thực.
Tại sao trong Computer Vision người ta hay sử dụng Deep Learning thay vì Machine Learning truyền thống.
Trong lĩnh vực Computer Vision, Deep Learning đã trở thành một công cụ quan trọng và phổ biến hơn so với các phương pháp Machine Learning truyền thống vì một số lý do sau đây:
Khả năng học biểu diễn phức tạp: Deep Learning cho phép học biểu diễn đặc trưng phức tạp và trừu tượng từ dữ liệu. Điều này có ý nghĩa là các mô hình Deep Learning có thể tự động học các đặc trưng và cấu trúc phức tạp từ dữ liệu đầu vào mà không cần phải xây dựng và chọn lựa các đặc trưng thủ công như trong Machine Learning truyền thống.
Xử lý ảnh tự nhiên: Deep Learning có khả năng xử lý ảnh tự nhiên hiệu quả. Các mạng neural sâu (deep neural networks) có thể tự động học cách nhận diện và phân loại đối tượng trong ảnh, phát hiện biên, nhận diện khuôn mặt, và thực hiện nhiều tác vụ xử lý ảnh khác một cách hiệu quả.
Dữ liệu lớn: Deep Learning tận dụng tốt việc sử dụng dữ liệu lớn. Với khả năng học từ dữ liệu đa dạng và lớn, mô hình Deep Learning có thể học được các mẫu phức tạp và tạo ra các dự đoán chính xác hơn. Computer Vision có nhiều nguồn dữ liệu lớn như tập dữ liệu ảnh và video, và Deep Learning là một công cụ mạnh mẽ để khai thác sức mạnh của dữ liệu lớn này.
Tiến bộ trong công nghệ tính toán: Sự tiến bộ trong công nghệ tính toán, đặc biệt là GPU (đơn vị xử lý đồ họa), đã làm cho việc huấn luyện mô hình Deep Learning trở nên khả thi và nhanh chóng hơn. GPU cung cấp sức mạnh tính toán song song và tăng tốc quá trình huấn luyện mô hình Deep Learning, làm cho việc sử dụng Deep Learning trong Computer Vision trở nên phổ biến và hiệu quả hơn.
Nêu ra điểm quan trọng để phân biệt học có giám sát và học không có giám sát.
Điểm quan trọng để phân biệt học có giám sát và học không có giám sát trong machine learning là có sự có mặt hay vắng mặt của dữ liệu huấn luyện được gán nhãn. Dưới đây là những điểm quan trọng để phân biệt hai loại học này:
Học có giám sát (Supervised Learning):
Dữ liệu huấn luyện: Học có giám sát sử dụng dữ liệu huấn luyện được gán nhãn, tức là mỗi điểm dữ liệu huấn luyện đi kèm với đầu ra mong muốn tương ứng. Mục tiêu: Mục tiêu của học có giám sát là xây dựng một mô hình hoặc hàm dự đoán chính xác các đầu ra mới cho các dữ liệu chưa từng được nhìn thấy trước đó. Ví dụ: Phân loại email là spam hay không spam, dự đoán giá nhà dựa trên các đặc trưng như diện tích, số phòng, v.v. Học không giám sát (Unsupervised Learning):
Dữ liệu huấn luyện: Học không giám sát không yêu cầu dữ liệu huấn luyện được gán nhãn, tức là không có đầu ra mong muốn được cung cấp cho mỗi điểm dữ liệu. Mục tiêu: Mục tiêu của học không giám sát thường là khám phá cấu trúc, mô hình hoặc phân nhóm các dữ liệu mà không cần biết trước các đầu ra mong muốn. Ví dụ: Phân nhóm các khách hàng dựa trên hành vi mua hàng, phân nhóm các bài báo theo chủ đề chung, phát hiện các đặc trưng nổi bật trong tập dữ liệu.
Học có giám sát được phân thành 2 loại Classfication và Regression. Nêu rõ điểm khác nhau giữa chúng.
Classification và Regression là hai loại bài toán quan trọng trong machine learning. Dưới đây là những điểm quan trọng để phân biệt giữa Classification và Regression:
Classification (Phân loại):
Mục tiêu: Classification nhằm dự đoán lớp hoặc nhãn của một điểm dữ liệu đầu vào dựa trên các đặc trưng của nó. Loại đầu ra: Kết quả của Classification là một lớp hoặc nhãn rời rạc thuộc một tập hợp giới hạn Ví dụ: Phân loại email là spam hay không spam, nhận dạng hình ảnh là chó, mèo, hoặc chim, phân loại bệnh nhân là mắc bệnh hoặc không mắc bệnh dựa trên các chỉ số sức khỏe. Regression (Hồi quy):
Mục tiêu: Regression nhằm dự đoán giá trị số hoặc giá trị liên tục của một biến mục tiêu dựa trên các biến đầu vào và mối quan hệ giữa chúng. Loại đầu ra: Kết quả của Regression là một giá trị số hoặc giá trị liên tục trên một miền giá trị, ví dụ: dự đoán giá nhà, dự đoán doanh thu, dự đoán nhiệt độ. Ví dụ: Dự đoán giá nhà dựa trên diện tích, số phòng, v.v., dự đoán doanh thu dựa trên quảng cáo chi tiêu, dự đoán nhiệt độ dựa trên thời tiết. Tóm lại, điểm quan trọng để phân biệt Classification và Regression là loại đầu ra mà chúng dự đoán. Classification dự đoán lớp hoặc nhãn rời rạc, trong khi Regression dự đoán giá trị số hoặc giá trị liên tục.
Các phương pháp đánh giá trong bài toán học có giám sát: có bao nhiêu phương pháp và nêu ngắn gọn từng phương pháp.
Các tiêu chí đánh giá: ngoài tiêu chí đánh giá accuracy (độ chính xác), người ta hay dùng tiêu chí nào đánh giá model; giả sử độ chính xác là 99% trong bài toán cụ thể thì có chắc chắn rằng model đã hoạt động tốt chưa.
Hiện tượng underfitting, overfitting: câu hỏi kinh điển khi phỏng vấn, bạn sẽ phải nêu ra khái niệm và cách giải quyết.
Underfitting và overfitting là hai hiện tượng thường gặp trong quá trình xây dựng mô hình machine learning. Dưới đây là giải thích về hai hiện tượng này và cách khắc phục chúng:
Underfitting: Hiện tượng underfitting xảy ra khi mô hình không học đủ thông tin từ dữ liệu huấn luyện và không thể tổng quát hóa cho dữ liệu mới. Dấu hiệu: Mô hình underfitting thường có hiệu suất kém trên cả dữ liệu huấn luyện và dữ liệu kiểm định. Nó không thể giải quyết đúng các mẫu trong dữ liệu huấn luyện và có xu hướng đưa ra dự đoán sai trên dữ liệu mới. Nguyên nhân: Nguyên nhân chính gây ra underfitting là mô hình quá đơn giản hoặc không đủ phức tạp để học được mối quan hệ phức tạp trong dữ liệu. Cách khắc phục underfitting:
- Sử dụng mô hình phức tạp hơn: Tăng độ phức tạp của mô hình bằng cách thêm các tầng ẩn, tăng số lượng đặc trưng hoặc thay đổi kiến trúc mô hình để có khả năng học được mối quan hệ phức tạp hơn trong dữ liệu.
- Tăng cường dữ liệu: Tăng cường dữ liệu huấn luyện bằng cách áp dụng các kỹ thuật như xoay, phóng to, thu nhỏ, cắt tỉa, v.v. để tạo ra nhiều biến thể mới và đa dạng hơn.
- Giảm regularization: Nếu mô hình đang áp dụng regularization mạnh, hãy giảm độ lớn của regularization để cho phép mô hình học được sự biến động lớn hơn trong dữ liệu.
Overfitting: Hiện tượng overfitting xảy ra khi mô hình quá tập trung vào dữ liệu huấn luyện và không tổng quát hóa tốt cho dữ liệu mới. Dấu hiệu: Mô hình overfitting thường có hiệu suất cao trên dữ liệu huấn luyện, nhưng hiệu suất kém trên dữ liệu kiểm định hoặc dữ liệu mới. Nó học thuộc lòng dữ liệu huấn luyện và có xu hướng gây ra dự đoán sai khi gặp phải dữ liệu mới. Nguyên nhân: Nguyên nhân chính gây ra overfitting là mô hình quá phức tạp hoặc quá tập trung vào các điểm dữ liệu hiếm hoặc thời gian huấn luyện mô hình qua lâu
**Cách khắc phục overfitting: **
- Thu thập thêm dữ liệu: Một cách hiệu quả để khắc phục overfitting là thu thập thêm dữ liệu huấn luyện. Dữ liệu mới có thể giúp mô hình học được các mẫu và mối quan hệ phức tạp hơn, từ đó cải thiện khả năng tổng quát hóa.
- Regularization: Sử dụng các phương pháp regularization như L1 regularization (Lasso) và L2 regularization (Ridge) để giới hạn sự phức tạp của mô hình. Regularization giúp kiểm soát overfitting bằng cách áp dụng một hàm mất mát phạt cho các trọng số lớn, từ đó giảm thiểu sự quá khớp.
- Dropout: Dropout là một kỹ thuật regularization phổ biến trong deep learning. Nó ngẫu nhiên tắt một số đơn vị trong quá trình huấn luyện để giảm khả năng phụ thuộc quá mức vào một số đặc trưng cụ thể. Điều này giúp mô hình học được các đặc trưng tổng quát hơn và giảm overfitting.
- Cross-validation: Sử dụng phương pháp cross-validation để đánh giá hiệu suất của mô hình. Cross-validation chia dữ liệu thành các tập huấn luyện và kiểm định, sau đó đánh giá mô hình trên nhiều tập kiểm định khác nhau. Điều này giúp đánh giá khả năng tổng quát hóa của mô hình và phát hiện overfitting.
- Giảm độ phức tạp của mô hình: Nếu mô hình quá phức tạp, hãy giảm độ sâu của mạng neural, số lượng đơn vị trong các tầng ẩn hoặc số lượng đặc trưng đầu vào. Giảm độ phức tạp của mô hình có thể giúp giảm overfitting và cải thiện khả năng tổng quát hóa.
- Early stopping: Sử dụng kỹ thuật early stopping để ngừng quá trình huấn luyện sớm hơn. Early stopping dựa trên việc theo dõi hiệu suất của mô hình trên tập kiểm định và ngừng huấn luyện khi hiệu suất không còn cải thiện. Điều này giúp tránh overfitting khi mô hình tiếp tục học thuộc lòng dữ liệu huấn luyện.
- Ensemble learning
Khái niệm về ma trận nhầm lẫn (confusion matrix): nêu rõ khái niệm và ý nghĩa của TP, TN, FP, FN.
Feature engineering là gì và vai trò của nó.
Bạn sẽ làm gì nếu dữ liệu quá ít
Khi dữ liệu quá ít, có một số cách để xử lý và làm việc với dữ liệu này:
Tăng cường dữ liệu (Data Augmentation): Bằng cách tạo ra các phiên bản mới của dữ liệu hiện có thông qua các phép biến đổi như xoay, phóng to, thu nhỏ, cắt ra phần tử, thêm nhiễu, v.v. Bằng cách làm như vậy, bạn có thể tạo ra thêm dữ liệu huấn luyện để gia tăng độ đa dạng và số lượng.
Sử dụng kỹ thuật Transfer Learning: Transfer Learning là một kỹ thuật mà bạn sử dụng mô hình đã được huấn luyện trước trên một tác vụ tương tự hoặc liên quan và sau đó tinh chỉnh (fine-tune) nó cho tác vụ hiện tại với dữ liệu ít hơn. Bằng cách này, bạn có thể tận dụng tri thức đã học được từ mô hình lớn để giúp cải thiện hiệu suất trên dữ liệu ít hơn.
Sử dụng kỹ thuật Regularization: Kỹ thuật Regularization giúp tránh overfitting trong trường hợp dữ liệu ít. Các phương pháp như L1 regularization (Lasso), L2 regularization (Ridge), Dropout, v.v. có thể giúp giảm overfitting và cải thiện khả năng tổng quát hóa của mô hình trên dữ liệu ít.
Sử dụng các thuật toán học máy đơn giản: Trong trường hợp dữ liệu rất ít, sử dụng các thuật toán học máy đơn giản có thể là một lựa chọn tốt. Các thuật toán như Logistic Regression, Naive Bayes, Decision Trees có thể cung cấp hiệu suất tốt với dữ liệu ít hơn và đòi hỏi ít dữ liệu huấn luyện.
Thu thập thêm dữ liệu: Nếu có thể, bạn có thể cân nhắc thu thập thêm dữ liệu để tăng cường tập dữ liệu huấn luyện. Điều này có thể bao gồm việc thu thập thêm dữ liệu từ nguồn khác hoặc tổ chức các cuộc thăm dò, khảo sát để có được dữ liệu mới.