Đặt vấn đề Thị lực máy tính (Computer vision) là một nhánh trong lĩnh vực trí tuệ nhân tạo (Artificial Intelligence) và Khoa học máy tính (Computer science). Lĩnh vực này giúp máy tính có khả năng thị giác như con người, giúp máy tính có thể nhận diện và hiểu biết một hình ảnh. Xã hội ngày một phát triển, cùng với đó là nhịp sống của mọi người cũng bận rộn theo. Xu hướng mua hàng online, ngày càng được giới trẻ và những người không có nhiều thời gian mua sắm lựa chọn.
Đây cũng chính là lí do mà lĩnh vực này có rất nhiều tìm năng để khai thác nhằm năng cao chất lượng phục vụ cũng như tạo sự quan tâm đến cho khách hàng. Lấy ý tưởng từ việc gợi ý những mẫu thời trang cho người mua hàng trên những trang mua sắm online nổi tiếng như Amazon, Lazada, Alibaba, Tiki,… những hệ thống gợi ý này tập trung vào việc dựa vào lịch sử người dùng đã tìm kiếm từ đó gợi ý ra những sản phẩm tương tự cho người dùng. Để mở rộng chức năng gợi ý mẫu thời trang cho người dùng, giúp cho người dùng chủ động hơn trong việc lựa chọn bộ trang phục ưa thích, cũng như có thêm nhiều lựa chọn mà không tốn nhiều thời gian thì cần có một hệ thống AI/Machine learning tích hợp trong hệ thống website hoặc ứng dụng di động để thực hiện việc này. Mục tiêu Để giải quyết bái toán tạo câu bình luận cho ảnh thời trang, nhiều mô hình đã được nghiên cứu và không ngừng cải tiến.
Gần đây nhất là bài viết “Fashion Coordinates Recommender System using Photographs from Fashion Magazines” [1] của Tomoharu Iwata và cộng sự, “Hi, Magic Closet, Tell Me What to Wear!” [2] của Si Liu và cộng sự đề xuất tập trung vào gợi ý những mẫu thời nhưng vẫn còn hạn chế về dữ liệu và xu hướng đa dạng trong việc mua sắm của người dừng. Bài viết “Explainable Fashion Recommendation with Joint Outfit Matching and Comment Generation” [3] do Yujie 1 do an Lin, Pengjie Ren và cộng sự được công bố tháng 12 năm 2018 đề xuất Neural Fashion Recommendation framework (NFR), mô hình gợi ý những mẫu trang phục phối với nhau và từ các mẫu trang phục đó phát sinh ra câu bình luận. Mô hình NFR do Yujie Lin, Pengjie Ren và cộng sự được công bố có nhiều ưu điểm về mặt cải tiến độ chính xác theo bảng so sánh kết quả với những mô hình nghiên cứu trước đây được công bố [3] về cả chức năng phối trang phục và phát sinh câu bình luận. Tuy nhiên, NFR vẫn còn nhiều mặt hạn chế về mặt bộ dữ liệu và câu bình luận phát sinh chưa thực sự hiệu quả.
Vậy mục tiêu của đề tài này là thực hiện lại mô hình NFR để áp dụng vào bài toán tạo câu bình luận cho ảnh thời trang. Phạm vi đề tài Trong đề tài này, dựa trên những nghiên cứu Neural Fashion Recommendation framework do Yujie Lin, Pengjie Ren và cộng sự đề xuất, nhóm tập trung vào nhiệm vụ phát sinh câu bình luận cho một bộ trang phục của mô hình NFR, từ đó đề xuất ra cải tiến cho mô hình NFR để đạt được câu bình luận chính xác hơn. 2 do an Chương II. Tổng quan về học sâu (Deep Learning) 1.
Giới thiệu về Deep Learning Deep Learning là một phần của ngành máy học dựa trên một tập hợp các thuật toán để cố gắng mô hình dữ liệu trừu tượng hóa ở mức cao bằng cách sử dụng nhiều lớp xử lý với cấu trúc phức tạp, hoặc bằng cách khác bao gồm nhiều biến đổi phi tuyến. Một số đại diện được lấy cảm hứng bởi những tiến bộ trong khoa học thần kinh và dựa trên các giải thích của mô hình xử lý và truyền thông tin trong một hệ thống thần kinh của con người. Nhiều kiến trúc của Deep Learning đã được nghiên cứu như mạng neuron sâu (deep neural networks), mạng neuron tái phát (recurrent neural networks), mạng neuron tích chập (convolutional neural networks) và ứng dụng vào nhiều lĩnh vực như thị giác máy tính (computer vision), nhận dạng giọng nói (speech recognition), xử lý ngôn ngữ tự nhiên (natural language processing), phân tích hình ảnh y tế (medical image analysis), v. Những ứng dụng của Deep Learning được chứng minh đã tạo ra kết quả tương đương và trong một số trường hợp vượt trội so với con người.
Mạng tích chập (Convolutional Neural Network) Convolutional Neural Network (CNN hoặc ConvNet) là một lớp các mạng lưới thần kinh sâu [6], được ứng dụng hầu hết phổ biến để phân tích hình ảnh thị giác (visual imagery) như nhận diện hình ảnh và video (image and video recognition), phân loại ảnh (image classification), phân tích ảnh y tế (medical image analysis). 3 do an Hình 1: Minh họa đơn giản nguyên lý hoặt động của CNNs [34] 2. Đặc trưng (Feature) Hình 2: Cách so sánh trong CNN. Mỗi feature có kích thước là một mảng 2 chiều.
Bằng cách tìm ở mức thô các feature khớp nhau ở cùng vị trí trong hai hình ảnh, CNNs nhìn ra sự tương đồng tốt hơn nhiều so với việc khớp toàn bộ bức ảnh. Tích chập (Convolutional) Hình 3: Nguyên lý tạo ra feature map. [34] Khi xem một hình ảnh mới, CNN không biết chính xác nơi các feature này sẽ khớp nên nó sẽ thử chúng khắp mọi nơi. Khi tính toán sự khớp của một feature trên toàn bộ ảnh, chúng ta làm thành một filter (bộ lọc), để tính toán sự khớp này ta sẽ nhân mỗi điểm ảnh trong feature với giá trị điểm ảnh tương ứng trong mảnh hình ảnh được so sánh, rồi tính trung bình cộng (cộng tổng lại và chia cho số lượng điểm ảnh trong feature).
Nếu tất cả các điểm ảnh đều khớp, ta cộng lại rồi chia trung bình cộng thì sẽ bằng 1. Hình 4: Thực hiện toàn bộ quá trình tích chập cho từng feature khác. [34] Kết quả là tập hợp các hình ảnh đã được lọc (feature map), mỗi cái ứng với filter. 5 do an Rectified Linear Unit (ReLU) là hàm activation (activation function) dùng để tinh chỉnh lại các đơn vị tuyến tính, cụ thể là bất cứ nơi nào có số âm thì hoán đổi nó với 0.
Hình 5: ReLU activation function. Pooling Pooling là một cách lấy những hình ảnh lớn và làm co chúng lại trong khi vẫn giữ các thông tin quan trọng nhất trong đó. Hình 6: Cách hoạt động của Pooling. [34] Duyệt bước một ô vuông cửa sổ nhỏ dọc trên một hình ảnh và lấy giá trị lớn nhất từ cửa sổ ở mỗi bước.
Sau khi pooling, một hình ảnh sẽ có khoảng một phần tư số điểm ảnh so với ban đầu vì những giá trị lớn nhất từ mỗi cửa sổ đã được chọn ra. 6 do an Hình 7: Thu gọn những feature map quan trọng sau khi qua pooling. Fully connected layers Ở 2 giai đoạn trước là Convolution và Pooling đã tạo ra một tập các hình ảnh đã được lọc và thu gọn. Các feature map trở nên lớn hơn và phức tạp hơn, và hình ảnh trở nên nhỏ gọn hơn.
Điều này giúp các layer thấp hơn đại diện cho các khía cạnh đơn giản của hình ảnh, chẳng hạn như các cạnh và các điểm sáng. Các layer cao hơn có thể đại diện cho các khía cạnh tinh vi hơn của hình ảnh, chẳng hạn như các hình khối (shape) và các hình mẫu (pattern). Hình 8: Miêu tả quy trinh các lớp của CNN. Các layer được kết nối đầy đủ là một khối chính của mạng nơ-ron truyền thống (ANN).
Thay vì coi đầu vào như một mảng hai chiều, chúng được coi như một list đơn và tất cả đều được xử lý giống nhau. Như trong ví dụ này: xác định hình ảnh là một X hay O. Việc xác định là một X hay O dựa trên các votes (phiếu bầu). Các votes này được thể hiện dưới dạng trọng số (weight) hoặc mức độ kết nối giữa mỗi giá trị (trong list).
Giá trị votes X càng cao thì hình ảnh sẽ được dự đoán là X và ngược lại. Mạng hồi quy (Recurrent Neural Network) 3. RNN (Recurrent Neural Network) RNN (Recurrent Neural Network) là một mạng neural sử dụng chủ yếu để xử lý các bài toán ngôn ngữ tự nhiên (Natural Language) và những nhiệm vụ liên quan đến xử lý chuỗi. Ngoài ra do bản chất của RNN là tính toán tuần tự (sequencial computation) nên thích hợp cho những bài toán dự đoán về dữ liệu tuần tự như xử lý giọng nói (speech recognition), tạo ra nhạc (music generation), phân loại câu (sentiment classification), phân tích chuỗi DNA (DNA sequence analysis), dịch ngôn ngữ (Machine translation), nhận diện hoạt động của video (Video activity recognition), v.
[35] Với cái nhìn tổng quát, ý tưởng chính của RNN là sử dụng chuỗi các thông tin (dữ liệu chuỗi đầu vào), thực hiện cùng một tác vụ cho tất cả các từ của một chuỗi với đầu ra phụ thuộc vào cả các phép tính trước đó. Ví dụ như khi xử lý dịch một chuỗi từ ngôn ngữ này sang ngôn ngữ khác. Các từ sẽ được lần lượt dịch từ trái sang phải, lúc này RNN sẽ dự đoán nghĩa của từ tại thời điểm đang thực hiện bằng cách căn cứ vào những từ đã được dịch trước đó. Cơ chế hoạt động này cho thấy rằng RNN có thể nhớ được thông tin qua từng giai đoạn xử lý trước đó, dựa vào đó để có thể tiếp tục xử lý cho giai đoạn tiếp theo.
8 do an Hình 9: Kiến trúc của mô hình RNN. [35] Tại mỗi thời điểm t, từ trong chuỗi 𝑥𝑡 được đưa vào hidden layer với ký hiệu là ℎ𝑡 để dự đoán ra được kết quả là 𝑦𝑡. Quá trình này được thực hiện lặp lại (recurrent) cho đến khi dự đoán ra hết tất cả các từ trong câu. Hidden layer được xem như là “memory”, lưu lại những thông tin ở hidden layer trước đó để dự đoán cho từ, và sau đó cập nhật thông tin hiện tại để tiếp tục cho giai đoạn dự đoán tiếp theo.
Trong đó hidden layer (ℎ𝑡 ) tại thời điểm t được tính bằng công thức. ℎ𝑡 = 𝑓(𝑊𝑖𝑛 𝑥𝑡 + 𝑊𝑟𝑒𝑐 ℎ𝑡−1 ) Với 𝑊𝑖𝑛 , 𝑊𝑜𝑢𝑡, 𝑊𝑟𝑒𝑐 là các ma trận trọng số. Lấy tổng tích vô hướng (dot-product) của từ 𝑥𝑡 với ma trận trọng số 𝑊𝑖𝑛 và hidden layer ℎ𝑡−1 ở thời điểm t-1 với ma trận trọng số 𝑊𝑟𝑒𝑐. Tổng này sẽ đưa qua hàm 𝑓, đây là một hàm phi tuyến tính như tanh hay ReLU, nhằm giúp cho tinh chỉnh lại sự chênh lệch quá lớn giữa các trọng số của hidden layer ℎ𝑡 tại thời điểm t sau khi thực hiện phép tính về với miền từ khoảng (-1,1).
Từ dự đoán (𝑦𝑡 ) tại thời điểm t được tính bằng cách lấy hidden layer hiện tại ℎ𝑡 nhân tích vô hướng (dot-product) với ma trận trọng số 𝑊𝑜𝑢𝑡 , đưa qua hàm softmax giúp chuẩn hóa (normalization) lại phân bổ xác suất về miền giá trị.