Machine Learning
Tổng quan về Machine Learning
Machine learning là một nhánh của trí tuệ nhân tạo (AI), sử dụng các thuật toán để cho phép máy tính học hỏi từ dữ liệu Thay vì được lập trình cụ thể, máy tính có khả năng thực hiện các nhiệm vụ thông qua quá trình học tập từ thông tin mà nó tiếp nhận.
Hình 2.1.1 Minh hoạ trực quan về cách ML học tập Khả năng học tập là một yếu tố then chốt của trí thông minh
Machine learning đang trở thành một bước tiến quan trọng trong lĩnh vực trí tuệ nhân tạo, giúp máy móc ngày càng thông minh hơn Hiện nay, đây là một chủ đề nóng, thể hiện sự tiến bộ vượt bậc trong công nghệ.
Machine Learning trên thực tế
Machine learning có những giới hạn nhất định, và không thể xây dựng một cỗ máy thông minh để học dữ liệu từ mọi thời đại Dù vậy, công nghệ này đã chứng minh hiệu quả qua nhiều ứng dụng thực tế.
Xử lý ảnh (Image Processing) là quá trình phân tích thông tin từ hình ảnh và thực hiện các phép biến đổi cần thiết Một số ứng dụng của nó bao gồm nhận diện đối tượng, cải thiện chất lượng hình ảnh và trích xuất thông tin quan trọng từ hình ảnh.
Gắn thẻ hình ảnh là một công nghệ tương tự như trên Facebook, sử dụng thuật toán tự động để phát hiện khuôn mặt của bạn và bạn bè trong các bức ảnh Thuật toán này học hỏi từ những hình ảnh mà bạn đã tự gắn thẻ trước đó, giúp cải thiện độ chính xác trong việc nhận diện khuôn mặt.
Optical Character Recognition (OCR) is an algorithm that converts printed text and documents into digital data This technology involves training the algorithm to accurately identify and recognize the characters captured in images.
Ô tô tự lái sử dụng công nghệ xử lý ảnh để nhận diện môi trường xung quanh Một thuật toán machine learning được áp dụng để phát hiện các mép đường, biển báo và chướng ngại vật bằng cách phân tích từng khung hình video từ camera.
Phân tích văn bản là quá trình trích xuất và phân loại thông tin từ các nguồn văn bản như bài viết trên Facebook, email, đoạn chat và tài liệu Một số ví dụ phổ biến về phân tích văn bản bao gồm việc xử lý nội dung từ các nền tảng truyền thông xã hội và giao tiếp trực tuyến.
Lọc spam là một trong những ứng dụng phân loại văn bản phổ biến nhất, giúp xác định chủ đề của một văn bản Bộ lọc spam sẽ học cách nhận diện email spam dựa trên nội dung và tiêu đề của từng email.
Phân tích ngữ nghĩa(Sentiment Analysis), học cách phân loại một ý kiến là tích cực, trung tính hay tiêu cực dựa trên nội dung văn bản của người viết
Khai thác thông tin là quá trình trích xuất các thông tin hữu ích từ văn bản, bao gồm việc nhận diện và lấy ra địa chỉ, tên người, từ khóa và các dữ liệu quan trọng khác.
Phân loại thuật toán Machine Learning
2 thuật toán cơ bản của machine learning: Học có giám sát(Supervised learning) và Học không giám sát(Unsupervised learning) Sự khác nhau lớn nhất giữa 2 thuật toán
Chúng tôi cung cấp tập dữ liệu huấn luyện cho mô hình bằng cách sử dụng các thuật toán để xử lý dữ liệu, từ đó giải quyết các vấn đề cụ thể.
Hình 2.3.1 Một số thuật toán trong ML
Trong học có giám sát, thuật toán machine learning thực hiện quá trình “chuyển dữ liệu đầu vào thành đầu ra mong muốn”
Trong Machine Learning (ML), đầu vào được gọi là input và đầu ra được gọi là label (nhãn) Tập dữ liệu dùng để huấn luyện được gọi là training set, trong đó mỗi mẫu dữ liệu được gọi là training example.
Thuật toán machine learning cần học cách chuyển đổi đầu vào thành kết quả tương ứng Do đó, mỗi mẫu dữ liệu trong tập huấn luyện phải được gán nhãn trước.
Tùy thuộc vào loại đầu ra mong muốn, chúng ta tiếp tục chia nhỏ học có giám sát gồm:
Khi đầu ra mong muốn là một tập hợp hữu hạn và rời rạc, bài toán của chúng ta được gọi là bài toán phân loại.
Khi đầu ra mong muốn là một dải giá trị liên tục Chẳng hạn như giá trị xác suất, khi đó bài toán sẽ thuộc loại hồi quy
Học có giám sát là thuật toán phổ biến nhất trong machine learning, tuy nhiên, một trong những hạn chế lớn của nó là cần có dữ liệu được gán nhãn Việc thu thập dữ liệu gán nhãn thường tốn kém và đòi hỏi nhiều nguồn lực.
Học không giám sát là một nhánh của machine learning, trong đó các mẫu dữ liệu chỉ cần đầu vào mà không cần đầu ra Phương pháp này thường được sử dụng để khám phá cấu trúc và mối quan hệ trong dữ liệu Một trong những thuật toán điển hình trong học không giám sát là phân cụm (clustering), cho phép phát hiện các mẫu dữ liệu tương tự và nhóm chúng thành các cụm Các thuật toán phân cụm như K-means hoạt động bằng cách học từ tập dữ liệu đầu vào mà không cần nhãn.
Các thuật toán Machine learning
Machine learning hoạt động bằng cách chuyển đổi input thành output mong muốn thông qua nhiều mô hình khác nhau Không chỉ là một thuật toán duy nhất, machine learning bao gồm các phương pháp như Support Vector Machine (SVM), Naive Bayes, Cây Quyết Định (Decision Trees) và Học Sâu (Deep Learning) Tất cả các thuật toán này đều nhằm mục tiêu học cách chuyển đổi mọi input thành output chính xác tương ứng.
Các thuật toán machine learning áp dụng nhiều mô hình và kỹ thuật khác nhau để tiến hành quá trình học tập, từ đó thể hiện kiến thức mà chúng đã tiếp thu.
Trước khi khám phá từng thuật toán, cần lưu ý một nguyên tắc chung: các thuật toán machine learning hướng tới việc khái quát hóa Điều này có nghĩa là chúng tìm kiếm và giải thích thông tin theo cách đơn giản nhất, nguyên tắc này được gọi là dao cạo của Occam.
Tất cả các thuật toán machine learning đều nỗ lực xây dựng những giả thuyết đơn giản nhất có khả năng phù hợp với hầu hết các mẫu trong tập dữ liệu huấn luyện.
Deep learning được bắt nguồn từ thuật toán Neural network, chỉ là một ngành nhỏ của machine learning
Học sâu đang trở thành xu hướng chủ đạo trong lĩnh vực machine learning thông qua việc sử dụng các mô hình mạng nơ ron nhân tạo Những mạng nơ ron này hoạt động theo cách tương tự như bộ não con người, với hàng triệu nơ ron được kết nối và tổ chức thành các lớp Công nghệ học sâu không ngừng phát triển với các cấu trúc ngày càng phức tạp, nhằm tự động học hỏi và xây dựng các biểu diễn cho các đặc trưng quan trọng.
Hình 2.4.1.1 Giai đoạn phát triển của Deep Learning 2.6.2 Feature engineering
Feature engineering là quá trình trích xuất và chọn lọc các đặc trưng quan trọng từ dữ liệu thô, nhằm tạo ra đại diện cho các mẫu dữ liệu huấn luyện Trong một tập dữ liệu huấn luyện, không phải tất cả các thuộc tính đều cần thiết, và feature engineering giúp loại bỏ những thuộc tính dư thừa Kỹ thuật này đơn giản hóa quá trình biểu diễn dữ liệu mà không làm ảnh hưởng đến kết quả cuối cùng Nếu thiếu bước này, mô hình học có thể trở nên phức tạp và giảm độ chính xác do sự hiện diện của các thuộc tính nhiễu.
Feature engineering là một bước quan trọng trong Machine learning(trừ khi dữ liệu của bạn đã sạch sẽ hoặc là bài toán chưa đủ lớn)
Lưu ý rằng nếu không thực hiện bước này, kết quả có thể rất tệ, ngay cả khi sử dụng thuật toán tốt nhất Điều này giống như việc cố gắng đọc trong bóng tối; dù bạn có thông minh đến đâu, vẫn không thể đọc được.
2.6.2.1 Trích xuất đặc trưng(Feature extraction) Để nạp dữ liệu huấn luyện vào mô hình học máy, bạn cần phải đưa dữ liệu thô về cấu trúc nào đó mà thuật toán có thể “hiểu” Công việc này được gọi là trích xuất đặc trưng Thông dụng nhất, chúng ta sẽ chuyển dữ liệu thô về dữ liệu số là vector của các đặc trưng
Để truyền vào thuật toán machine learning, một hình ảnh được chuyển đổi thành một vector, trong đó mỗi phần tử tương ứng với giá trị màu xám của từng pixel Các giá trị này dao động từ 0 đến 255, với 0 đại diện cho màu đen, 255 cho màu trắng, và các giá trị từ 1 đến 254 thể hiện các mức độ xám khác nhau.
Giải pháp trên có thể cho kết quả, nhưng kết quả sẽ cải thiện hơn nếu ta cung cấp nhiều đặc trưng có giá trị hơn:
Hình ảnh đó có chứa ảnh khuông mặt người?
Khuôn mặt có tóc hay không?
Những đặc trưng ở mức cao hơn có giá trị vượt trội so với đặc trưng màu của các pixel ảnh, và chúng có thể được hình thành từ kết quả của một thuật toán.
13 toán machine learning khác Cung cấp các đặc trưng mức cao hơn giúp mô hình học máy của ta học tập và đưa ra dự đoán chính xác hơn
Nếu chúng ta cung cấp các đặc trưng tốt hơn:
Thuật toán sẽ có khả năng cung cấp những kết quả chính xác hơn
Có thể sẽ cần ít dữ liệu huấn luyện hơn
Có thể giảm đáng kể thời gian huấn luyện mô hình
2.6.2.2 Trích chọn đặc trưng(Feature selection) Đôi khi, các đặc trưng chúng ta cung cấp cho thuật toán machine learning có thể vô dụng Chẳng hạn, với bài toán phân loại review, chúng ta cung cấp chiều dài của review, ngày tạo và người tạo review đó,… chúng có thể hữu ích hoặc không Sẽ rất hữu ích nếu có phương pháp tự động phát hiện điều này Đó là trích chọn đặc trưng, thuật toán này sử dụng kỹ thuật đánh trọng số cho từng đặc trưng; Và chỉ lựa chọn các đặc trưng có trọng số cao
Khi xây dựng mô hình, cần lưu ý rằng việc sử dụng quá nhiều đặc trưng không phải là phương pháp tối ưu Mặc dù có thể bị cám dỗ để thêm tất cả các đặc trưng có thể hữu ích, nhưng điều này sẽ làm tăng không gian bộ nhớ và khiến dữ liệu trở nên xa rời nhau hơn Vấn đề này được gọi là "curse of dimensionality", và nó trở nên nghiêm trọng hơn khi số lượng mẫu huấn luyện tăng lên theo cấp số nhân.
2.4.2 Dữ liệu huấn luyện(Training data)
Để xây dựng một thuật toán machine learning hiệu quả, việc cung cấp các mẫu dữ liệu huấn luyện là rất quan trọng Tùy thuộc vào bài toán cần giải quyết, số lượng mẫu dữ liệu có thể dao động từ vài trăm đến hàng tỷ Chất lượng của các mẫu huấn luyện ảnh hưởng lớn đến kết quả; nếu sử dụng dữ liệu sai, khả năng đạt được kết quả tốt sẽ giảm đáng kể.
Việc thu thập một lượng lớn dữ liệu chất lượng cao để huấn luyện các mô hình học máy thường tốn kém, trừ khi chúng ta đã có dữ liệu gán nhãn sẵn Chúng ta có thể thực hiện quá trình gán nhãn này một cách thủ công, nhưng cũng có thể sử dụng một số công cụ hỗ trợ để tăng tốc độ gán nhãn.
Chất lượng dữ liệu huấn luyện đóng vai trò then chốt trong việc đạt được kết quả tốt Càng có dữ liệu huấn luyện chất lượng cao, khả năng thu được kết quả chính xác và hiệu quả sẽ càng tăng.
2.4.3 Dữ liệu kiểm thử và các độ đo
CNN – Convolutional Neural Network
Giới thiệu
Mạng nơ-ron tích chập (CNNs) là một trong những mô hình Deep Learning tiên tiến, cho phép xây dựng các hệ thống thông minh với độ chính xác cao.
Các hệ thống xử lý ảnh lớn như Facebook, Google và Amazon đã tích hợp vào sản phẩm của họ những tính năng thông minh như nhận diện khuôn mặt, phát triển xe hơi tự lái và drone giao hàng tự động.
CNN là thuật toán phổ biến trong nhận dạng đối tượng trong ảnh Để hiểu rõ lý do thuật toán này được ưa chuộng trong việc phát hiện, chúng ta cần khám phá các đặc điểm và nguyên lý hoạt động của nó.
Tại sao nên dùng CNN
Hình 3.2.1 Mạng Neural Network(NN)
Mạng Neural Network (NN) thường gặp khó khăn với số lượng trọng số khi xử lý hình ảnh Tuy nhiên, với mạng nơ-ron tích chập (CNN), mỗi nơ-ron trong một lớp chỉ kết nối với một số nơ-ron gần gũi từ lớp trước, giúp mỗi nơ-ron chỉ tập trung vào một phần cụ thể của hình ảnh.
Cấu trúc mạng CNN
Lớp trích lọc đặc trưng của ảnh ( Conv, Relu, Pool ) Lớp phân loại ( Fully Connected và softmax )
Hình 3.3.1 Cấu trúc của mạng CNN
Sử dụng để trích xuất đặc trưng của ảnh đầu vào
Input là hình ảnh được biểu diễn bởi ma trận [M x N x D], trong đó M là chiều rộng, N là chiều cao và D là số chiều của ảnh Để trích xuất đặc trưng từ từng vùng ảnh, ta sử dụng các cửa sổ trượt Kết quả đầu ra sẽ là các đặc trưng của điểm ảnh, được thể hiện dưới dạng ma trận.
Hình 3.3.1.1 Minh họa trực quan cho Convolution layer
Hình 3.3.1.1 Cách hoạt động của Convolution Layer
Layer ReLU áp dụng hàm kích hoạt max(0,x) lên đầu ra của lớp Conv, giúp loại bỏ các giá trị âm bằng cách đưa chúng về 0, từ đó giảm thiểu ảnh hưởng đến các phép toán ở các lớp tiếp theo.
Layer này không thay đổi kích thước của ảnh và không có thêm bất kì tham số nào
Layer này đảm bảo cho các giá trị là non-linear (không tuyến tính) qua từng layer
Hình 3.3.2.1 Cách hoạt động của ReLU layer
Pool Layer thực hiện chức năng làm giảm chiều không gian của đầu và giảm độ phức tạp tính toán
Max Pooling là một kỹ thuật phổ biến trong lĩnh vực học máy, với mục tiêu giữ lại các chi tiết quan trọng bằng cách chọn pixel có giá trị lớn nhất Kỹ thuật này phản ánh sát thực tế con người trong việc nhận diện và phân tích thông tin.
Maxpooling sử dụng bộ lọc 2x2 với stride = 2, trong đó bộ lọc sẽ quét qua hình ảnh và chọn ra giá trị lớn nhất từ mỗi vùng được chọn để giữ lại.
Hình 3.3.3.1 Cách hoạt động của Pooling layer
Là các lớp kết nối đầy đủ như các mạng NN thông thường
Input: Để đưa ảnh từ các layer trước vào mạng này, buộc phải dàn phẳng bức ảnh ra thành 1 vector thay vì là mảng nhiều chiều như trước
Tại layer cuối cùng sẽ sử dụng 1 hàm softmax để phân loại đối tượng dựa vào vector đặc trưng đã được tính toán của các lớp trước đó
Hình 3.3.4.1 Cách hoạt động của Fully Connected layer
Một số thuật toán Classification
SVM – Support Vector Machine
SVM (Support Vector Machine) là một thuật toán học máy có giám sát, được ưa chuộng trong việc giải quyết các bài toán phân lớp và hồi quy.
Hình 4.1.1 Mô tả đơn giản hoá SVM SVMS: o SVM: dùng cho các bài toán phân lớp o SVR (support vector regresson): dùng cho bài toán hồi qui
4.1.1 Cách làm việc Ý tưởng của SVM là tìm một siêu phẳng (hyper lane) để phân tách các điểm dữ liệu Siêu phẳng này sẽ chia không gian thành các miền khác nhau và mỗi miền sẽ chứa một loại giữ liệu
Hình 4.1.1.1 Minh hoạ trực quan SVM Siêu phẳng được biểu diễn bằng hàm số ( W và X là các vector
là tích vô ) Hay ( là ma trận chuyễn vị)
Hình 4.1.1.2 Minh hoạ các mặt phẳng
4.1.2 Cách chọn mặt phẳng tối ưu
Trong bài viết này, chúng ta sẽ phân loại tập dữ liệu thành hai lớp: lớp dương (màu xanh) với nhãn 1 và lớp âm (màu đỏ) với nhãn -1 Tập dữ liệu này có khả năng phân tách tuyến tính, cho phép áp dụng các thuật toán phân loại hiệu quả.
Siêu phẳng phân tách hai lớp giữ liệu thỏa mã + b = 0, tạo ra hai nửa không gian dữ liệu Một nửa không gian chứa các dữ liệu thuộc lớp âm, trong khi nửa không gian còn lại chứa các dữ liệu thuộc lớp dương.
Chúng ta sẽ chọn hai siêu phẳng lề song song với vector o, một đi qua điểm thuộc lớp âm và một đi qua điểm thuộc lớp dương, được biểu diễn bằng các phương trình + b = -1 và + b = 1 Khoảng cách giữa hai siêu phẳng này được gọi là mức lề và được ký hiệu là o m = +.
Siêu phẳng tối ưu mà chúng ta nên lựa chọn là siêu phẳng phân tách với lề lớn nhất, vì lý thuyết học máy chứng minh rằng siêu phẳng này sẽ giúp giảm thiểu giới hạn lỗi mắc phải.
Margin là khoảng cách giữa siêu phẳng và hai điểm dữ liệu gần nhất của các phân lớp Trong ví dụ về quả táo và quả lê, margin là khoảng cách giữa cây que và hai quả gần nhất Phương pháp SVM cố gắng cực đại hóa margin này để tạo ra một siêu phẳng với khoảng cách lớn nhất so với hai quả táo và lê, giúp giảm thiểu sai sót trong phân lớp cho các điểm dữ liệu mới.
SVM là một kỹ thuật phân lớp phổ biến với nhiều ưu điểm, nổi bật là khả năng tính toán hiệu quả trên các tập dữ liệu lớn Phương pháp này đặc biệt phù hợp trong không gian số chiều cao, rất hữu ích cho các bài toán phân loại văn bản và phân tích quan điểm, nơi mà số chiều có thể rất lớn.
Tiết kiệm bộ nhớ là một lợi ích quan trọng, vì chỉ những điểm dữ liệu cần thiết được lưu trữ trong quá trình ra quyết định, giúp tối ưu hóa không gian lưu trữ Bên cạnh đó, tính linh hoạt trong phân lớp, thường là phi tuyến tính, được cải thiện nhờ khả năng áp dụng các Kernel mới, cho phép chuyển đổi linh hoạt giữa các phương pháp tuyến tính và phi tuyến tính, từ đó nâng cao hiệu suất phân loại.
4.1.5 Nhược điểm o Bài toán số chiều cao: Trong trường hợp số lượng thuộc tính (p) của tập dữ liệu lớn hơn rất nhiều so với số lượng dữ liệu (n) thì SVM cho kết quả khá tồi o Chưa thể hiện rõ tính xác suất: Việc phân lớp của SVM chỉ là việc cố gắng tách các đối tượng vào hai lớp được phân tách bởi siêu phẳng SVM Điều này chưa giải thích được xác suất xuất hiện của một thành viên trong một nhóm là như thế nào Tuy nhiên hiệu quả của việc phân lớp có thể được xác định dựa vào khái niệm margin từ điểm dữ liệu mới đến siêu phẳng phân lớp mà chúng ta đã bàn luận ở trên
SVM là phương pháp mạnh mẽ cho phân lớp dữ liệu, đặc biệt hữu ích trong xử lý ảnh, phân loại văn bản và phân tích quan điểm Đặc biệt, việc áp dụng hàm Kernel giúp SVM linh hoạt hơn trong việc chuyển đổi không gian, từ đó nâng cao hiệu quả phân loại.
KNN – K-Nearest Neightbros
KNN (K-Nearest Neighbors) là thuật toán học có giám sát đơn giản, phổ biến trong khai phá dữ liệu và học máy Thuật toán này không học từ tập dữ liệu huấn luyện, mà thực hiện các tính toán khi cần dự đoán nhãn cho dữ liệu mới, do đó được phân loại là lazy learning.
Lớp (nhãn) của một đối tượng dữ liệu mới có thể dự đoán từ các lớp (nhãn) của k hàng xóm gần nó nhất
Để xác định nhãn của một điểm dữ liệu mới A chưa biết, ta cần xem xét tập dữ liệu D đã được phân loại thành hai nhãn (+) và (-) trên trục tọa độ Việc phân tích vị trí của A so với các điểm dữ liệu đã biết sẽ giúp chúng ta quyết định xem A thuộc nhãn (+) hay (-).
Cách đơn giản nhất để phân loại dữ liệu A là so sánh tất cả các đặc điểm của nó với các tập dữ liệu đã được gán nhãn Nếu đặc điểm của A tương đồng với dữ liệu có nhãn (+), thì A sẽ được gán nhãn (+).
A giống với dữ liệu nhãn (-) hơn thì nó mang nhãn (-), trông có vẻ rất đơn giản nhưng đó là những gì mà KNN làm
Trong phương pháp KNN, dữ liệu mới không được so sánh với tất cả các dữ liệu khác mà thay vào đó, nó thực hiện phép tính khoảng cách giữa dữ liệu mới và từng điểm trong tập dữ liệu học D để phân lớp Các phép tính khoảng cách có thể bao gồm Euclidian, Manhattan, trọng số, Minkowski, và nhiều loại khác.
Hình 4.2.1.1 Minh hoạ trực quan KNN
Ta có D là tập các điểm dữ liệu đã được gắn nhãn và A là dữ liệu chưa được phân loại
Đo khoảng cách (Euclidian, Manhattan, Minkowski, Minkowski hoặc Trọng số) từ dữ liệu mới A đến tất cả các dữ liệu khác đã được phân loại trong D
Chọn K (K là tham số mà bạn định nghĩa) khoảng cách nhỏ nhất
Kiểm tra danh sách các lớp có khoảng cách ngắn nhất và đếm số lượng của mỗi lớp xuất hiện
Lấy đúng lớp (lớp xuất hiện nhiều lần nhất)
Lớp của dữ liệu mới là lớp mà bạn đã nhận được ở bước 5
Hình 4.2.2.1 G nhãn gồm 15 điểm như trên ảnh
Điểm cần dự đoán nhãn A(3,9)
Ta tính khoảng cách từ điểm A đến các điểm dữ liệu trong D bằng công thức Euclidian
Ta chọn K= 5, và tìm ra 5 điểm có khoảng cách gần với điểm A nhất
Trong 5 điểm ta thấy có 4 điểm mang nhãn (+) và 1 điểm mang nhãn (-)
Vậy ta có thể đưa ra kết luận là điểm A cần dự đoán mang nhãn (+)
Thuật toán đơn giản, dễ dàng triển khai
Độ phức tạp tính toán nhỏ
Xử lý tốt với tập dữ liệu nhiễu
Với K nhỏ dễ gặp nhiễu dẫn tới kết quả đưa ra không chính xác
Cần nhiều thời gian để thực hiện do phải tính toán khoảng cách với tất cả các đối tượng trong tập dữ liệu
Cần chuyển đổi kiểu dữ liệu thành các yếu tố định tính
Nhận dạng mặt người
Facenet
Facenet là một mạng neural giúp biểu diễn hình ảnh trong không gian Euclide n chiều, thường là 128 chiều Mục tiêu của nó là giảm khoảng cách giữa các véc tơ embedding, từ đó tăng cường mức độ tương đồng giữa các bức ảnh.
Hầu hết các thuật toán nhận diện khuôn mặt trước Facenet đều sử dụng một véc tơ embedding để biểu diễn khuôn mặt, thông qua một layer bottle neck nhằm giảm chiều dữ liệu.
Các thuật toán này có hạn chế là yêu cầu số lượng chiều embedding lớn (thường từ 1000 trở lên), điều này ảnh hưởng đến tốc độ xử lý Để cải thiện tốc độ tính toán, thường cần áp dụng thêm thuật toán PCA nhằm giảm chiều dữ liệu.
Hàm loss function chỉ đo lường khoảng cách giữa hai bức ảnh, vì vậy trong quá trình huấn luyện, mô hình chỉ có thể học một trong hai khả năng: nhận diện sự giống nhau khi hai bức ảnh thuộc cùng một lớp, hoặc sự khác nhau khi chúng thuộc các lớp khác nhau Điều này dẫn đến việc mô hình không thể học đồng thời cả hai khía cạnh giống nhau và khác nhau trong cùng một lượt huấn luyện.
Facenet đã giải quyết cả 2 vấn đề trên bằng các hiệu chỉnh nhỏ nhưng mang lại hiệu quả lớn:
Mạng cơ sở sử dụng mạng nơ-ron tích chập để giảm chiều dữ liệu xuống còn 128 chiều, giúp tăng tốc độ suy diễn và dự báo mà vẫn đảm bảo độ chính xác cao.
Hàm triple loss được sử dụng làm loss function, cho phép học đồng thời sự tương đồng giữa hai bức ảnh trong cùng một nhóm và phân biệt các bức ảnh không thuộc cùng nhóm Phương pháp này mang lại hiệu quả vượt trội so với các kỹ thuật trước đây.
Để áp dụng phương pháp triple loss, cần lấy ra ba bức ảnh, trong đó có một bức ảnh được gọi là anchor và được cố định trước Việc lựa chọn ảnh anchor là rất quan trọng trong quá trình này.
Hai bức ảnh còn lại gồm một bức ảnh negative (của một người khác với anchor) và một bức ảnh positive (cùng một người với anchor) Mục tiêu của hàm loss function là giảm thiểu khoảng cách giữa hai bức ảnh khi chúng là negative, đồng thời tăng cường khoảng cách khi chúng là positive.
Hình 5.1.1 Hoạt động của Triple loss
Hiện nay, các mô hình pretrain có khả năng mã hóa xuất sắc, do đó không cần thiết phải tự huấn luyện dữ liệu, vì điều này tốn nhiều thời gian và tài nguyên Nếu có đủ dữ liệu và tài nguyên, việc tinh chỉnh (fine tuning) trên bộ dữ liệu tiếng Việt sẽ mang lại kết quả tối ưu nhất.
Pretrain model trên github của tác giả davidsandberg:
Bài toán nhận dạng mặt người
Bài tóan có thể chia thành các bước cơ bản:
Sử dụng một công cụ phát hiện khuôn mặt như CV2 HaarCascade, CV2 DNN, dlib hoặc MTCNN để nhận diện khuôn mặt trong ảnh, sau đó tách riêng khuôn mặt khỏi bức ảnh đó.
Sau khi tách được khuôn mặt khỏi ảnh, đưa ảnh vào Facenet để trích xuất ra vector đặc trưng (128D Embedding Vector)
Chúng ta có thể chuyển sang bài toán phân loại (classification) bằng cách sử dụng các thuật toán như KNN hoặc SVM Đầu vào cho các thuật toán này sẽ là các embedding vector đã được tạo ra trước đó.
Hình 5.2 Mô tả hoạt động của nhận dạng khuôn mặt
Thử nghiệm – kết quả
Dataset
Dataset bao gồm 96 class ảnh chứa mặt người được thu thập từ internet và được loại bỏ các ảnh không chứa mặt người, các ảnh nhiễu
Mỗi class chứa khoảng 20-25 ảnh khuôn mặt với nhiều góc độ khác nhau
Hình 6.1.1: Dữ liệu mẫu của một người
Môi trường
Colaboratory (gọi tắt là "Colab") cho phép bạn viết và thực thi Python trong trình duyệt với các lợi ích sau:
Không yêu cầu cấu hình
Sử dụng miễn phí GPU
Colab là nền tảng cung cấp đa dạng công cụ và thư viện cho machine learning, cùng với các công cụ trực quan hóa dữ liệu, rất phù hợp cho sinh viên và những dự án nhỏ.
Kết quả
Sau khi trích xuất dữ liệu huấn luyện bằng Facenet, chúng tôi chia dữ liệu thành hai phần train và test với tỷ lệ 7:3 Kết quả đạt được khi sử dụng SVM và KNN cho dữ liệu huấn luyện lần lượt là 92.83% và 94.11% độ chính xác.
Demo
Trong bài viết này, chúng tôi sẽ trình bày một ứng dụng web đơn giản, cho phép người dùng tải lên một bức ảnh và nhận diện khuôn mặt Kết quả của quá trình nhận diện sẽ là tên của người tương ứng với khuôn mặt trong ảnh Ứng dụng này không chỉ giúp minh họa khả năng nhận diện khuôn mặt mà còn mang lại trải nghiệm thú vị cho người dùng.