Đề tài Nghiên cứu mô hình đa tác tử hút và đẩy cho phương pháp lọc cộng tác

Tóm lại, sau khi hoàn thành đề tài “Nghiên cưu mô hình đa tác tử hút và đẩy cho phương pháp lọc cộng tác”, tác giả đưa ra những kết luận sau: Hệ tư vấn là công cụ phần mềm kỹ thuật cung cấp các mặt hàng đề xuất cho người sử dụng. Những lời tư vấn liên quan đến các khía cạnh khác nhau của quá trình ra quyết định, chẳng hạn như nên mua mặt hàng nào, nên nghe thể loại nhạc nào, hoặc nên đọc loại tin tức nào. Hiện nay, sự quan tâm đối với hệ tư vấn đang rất cao vì sự cần thiết của những ứng dụng có thể giúp người dùng xử lý với tình trạng quá tải thông tin & đưa ra những nội dung hoặc lời khuyên phù hợp cho tưng cá nhân. Tuy nhiên, các phương pháp tư vấn hiện tại đã bộc lộ nhiều khuyết điểm như: vấn đề bộ nhớ của tư vấn dựa trên nội dung hay tốc độ tính toán của lọc cộng tác.

pdf61 trang | Chia sẻ: phamthachthat | Lượt xem: 1419 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Nghiên cứu mô hình đa tác tử hút và đẩy cho phương pháp lọc cộng tác, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hư thế nào. Còn sự hợp tác giữa các tác tử là cơ chế mà thông qua đó các tác tử trao đổi tri thức, các kế hoạch cộng tác giữa chúng để giải quyết những vấn đề lớn hơn khả năng của mỗi tác tử. Khả năng di trú: Các tác tử có thể di chuyển đến các môi trường khác, tìm kiếm thông tin cần thiết và trả lại kết quả mà người dùng mong muốn. b) Phân loại: Dựa trên các đặc điểm được trình bày ở trên, có thể chia các tác tử thành các loại sau: Tác tử phụ tá (Assistant agents): Tác tử phụ tá hoạt động như một người phụ tá, cùng cộng tác với người sử dụng trong một môi trường. Tác tử loại này quan sát, giám sát các hành động của người sử dụng, “học” điều đó và đưa ra cách tốt hơn để thực hiện các tác vụ. Tác tử phụ tá học để trợ giúp cho người sử dụng theo bốn cách khác nhau: - Quan sát và bắt chước người sử dụng (học từ người sử dụng). - Thông qua các phản hồi tích cực và tiêu cực nhận được từ người sử dụng. - Bằng việc nhận được những lời hướng dẫn rõ ràng từ phía người sử dụng. - Bằng việc hỏi lời khuyên từ các tác tử khác. Sự hợp tác giữa tác tử giao diện với các tác tử khác chỉ giới hạn trong việc hỏi các thông tin. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 29 Tác tử cộng tác (Collaboration agents): Đối với các tác tử loại này, tính tự trị và sự cộng tác với các tác tử khác được nhấn mạnh. Để có được sự cộng tác với các tác tử khác, các tác tử này phải thực hiện đàm phán để đạt sự thoả thuận về cơ chế cộng tác. Tác tử động (Mobile agents): Tác tử động là phần mềm tính toán có khả năng “di chuyển” trên các mạng diện rộng như Internet, tương tác với các máy chủ phân tán, thu thập thông tin và quay về sau khi đã thực hiện các công việc cho người sử dụng. Khả năng động này đưa đến khái niệm lập trình từ xa (remote programming), trong đó các tác tử tham gia tương tác đảm nhân cả hai vai trò: cung cấp dịch vụ (server) và khai thác dịch vụ (client). Tác tử phản ứng (Reactive agents): Các tác tử phản ứng không xử lý mô hình bên trong đặc trưng của môi trường, thay vào đó chúng phản ứng lại với sự kích thích đối với trạng thái hiện tại của môi trường mà chúng hoạt động. Kiến trúc của các tác tử phản ứng và sự giao tiếp giữa chúng nhìn chung rất đơn giản. Tuy nhiên, khi xem xét tổng quát hệ thống tác tử, có thể thấy được sự tương tác phức tạp giữa chúng. Ba nguyên tắc cơ bản đối với các tác tử phản ứng là: - Tương tác động giữa các tác tử không thông minh có thể dẫn tới sự phức tạp. - Mỗi tác tử phản ứng thường được xem như là một tập hợp các đối tượng hoạt động một cách độc lập và thực hiện các tác vụ cụ thể, chẳng hạn cảm biến, mô tơ điều khiển. Giao tiếp giữa các đối tượng này thường ở mức thấp. Một tác tử phản ứng thường làm với biểu diễn dữ liệu cảm biến mức thô, ngược lại với biểu diễn dữ liệu mức cao thường được sử dụng bởi các loại tác tử khác. 2.1.2. Hệ thống đa tác tử 1) Khái niệm Qua khái niệm tác tử, hình ảnh của một hệ thống đa tác tử có thể được liên tưởng như một xã hội của những động vật bậc thấp (ví dụ đàn kiến) mà các phần tử trong đó có những nét đặc trưng như: có mối quan hệ (phụ thuộc, chi phối, ngang hàng), có tương tác trao đổi thông tin và học hỏi lẫn nhau, tác động vào môi trường và ngược lại. Một hệ thống đa tác tử được cấu thành bởi: môi trường sống; tập các đối tượng thụ động chịu Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 30 sự tác động của các tác tử lên nó; tập các tác tử là các phần tử chủ động; tập các mối quan hệ giữa các phần tử với nhau; tập các thao tác giữa các phần tử với nhau. 2) Đặc điểm Một hệ đa tác tử có các đặc điểm sau: - Mỗi tác tử có những thông tin không đầy đủ để giải quyết một bài toán đặt ra, do khả năng của mỗi tác tử là có hạn và bài toán cần giải quyết là quá lớn với một tác tử đơn. - Hệ đa tác tử không có bộ điều khiển toàn cục hệ thống, tức là các tác tử hoạt động một cách độc lập không phụ thuộc vào tác tử khác và cả hệ thống tổng thể. - Dữ liệu được phân tán cho nhiều tác tử khác nhau trong hệ thống. Mỗi tác tử chỉ có thể quản lý một nguồn tài nguyên hạn chế. Đồng thời, sự tính toán trong hệ đa tác tử là không đồng bộ. Như vậy, trong hệ đa tác tử, các tác tử hoạt động một cách tự chủ và độc lập với nhau và có thể tương tác với nhau dưới nhiều hình thức khác nhau: cộng tác, cạnh tranh, thương lượng,... để chia sẻ tài nguyên và khả năng hợp lý. Môi trường của hệ đa tác tử có tính chất: - Là môi trường mở. Môi trường đa tác tử cung cấp một cơ sở hạ tầng để xác định các giao thức truyền thông và tương tác. - Môi trường chứa những tác tử tự quản, phân tán. Mỗi tác tử có mục tiêu hoạt động riêng. 3) Ứng dụng Hiện nay, các hệ thống đa tác tử đang ngày càng được sử dụng rộng rãi hơn trong nhiều ứng dụng, từ các hệ thống tương đối nhỏ để hỗ trợ cá nhân đến các hệ thống mở, phức tạp, và đặc biệt quan trọng dành cho các ứng dụng công nghiệp. Ứng dụng công nghiệp là những ứng dụng rất quan trọng cho các hệ thống đa tác tử bởi vì chúng là nơi mà công nghệ đa tác tử đầu tiên được thử nghiệm và chứng minh tiềm năng ban đầu của nó. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 31 Một trong những lĩnh vực ứng dụng quan trọng nữa của hệ thống đa tác tử là quản lý thông tin. Ví dụ, các tác tử có thể được sử dụng để tìm kiếm và lọc thông tin. Internet đã thúc đẩy việc sử dụng công nghệ tác tử trong lĩnh vực quản lý tiến trình nghiệp vụ và thương mại điện tử. Trong thực tế, trước sự gia tăng của thương mại điện tử, việc quản lý tiến trình nghiệp vụ đã gần như được điều khiển bởi các tương tác của con người. Giờ đây thương mại điện tử và tiến trình nghiệp vụ được tự động hóa đang ngày càng đóng vai trò then chốt trong nhiều tổ chức bởi vì chúng cung cấp những cơ hội để cải thiện đáng kể cách thức mà các thực thể khác nhau tham gia vào tương tác của tiến trình nghiệp vụ. Giao thông và vận tải cũng là một lĩnh vực quan trọng, nơi mà bản chất phân tán của các tiến trình giao thông, vận tải và sự độc lập mạnh mẽ giữa các thực thể có liên quan trong các tiến trình đó làm cho các hệ thống đa tác tử trở thành một công cụ có giá trị cho việc thực hiện các giải pháp thương mại thực sự có hiệu quả. Một số lĩnh vực đã được giải quyết như OASIS, OASIS là một hệ thống điều khiển không lưu phức tạp dự trên mô hình tác tử BDI, được triển khai và được sử dụng thành công tại sân bay Sydney ở Australia. Các hệ thống viễn thông là một lĩnh vực ứng dụng đã sử dụng thành công các hệ đa tác tử. Trong thực tế, các hệ thống viễn thông là các mạng lưới lớn và phân tán gồm các thành phần được kết nối với nhau. Những thành phần đó cần phải được theo dõi và quản lý trong thời gian thực. Vì vậy, các hệ đa tác tử được sử dụng cả trong việc quản lý các mạng lưới phân tán lẫn cho việc cài đặt các dịch vụ viễn thông tiên tiến. Nhiều hệ thống đa robot cũng sử dụng các kỹ thuật lập kế hoạch phân tán và đa tác tử để phối hợp các robot khác nhau. FIRE phối hợp các hành động của nhiều robot ở nhiều mức trừu tượng hóa. MISUS phối hợp các kỹ thuật từ việc lập kế hoạch và lập lịch với học máy để thực hiện việc thăm dò có tính khoa học một cách tự chủ. Kỹ thuật lập kế hoạch và lập lịch phân tán được sử dụng để tạo ra các kế hoạch cộng tác nhiều lần, việc thực thi kế hoạch giám sát có hiệu quả và thực hiện làm lại kế hoạch khi cần thiết. Hơn nữa, những hệ thống này có thể suy luận về những mục đích phụ thuộc lẫn nhau để thực hiện tối ưu hóa kế hoạch và để tăng giá trị của dữ liệu thu thập được. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 32 Một số ứng dụng đa tác tử đáng quan tâm khác có thể được tìm thấy trong hệ thống chăm sóc sức khỏe. Trong thực tế, các hệ thống đa tác tử đã được đề xuất để giải quyết nhiều loại vấn đề khác nhau trong lĩnh vực chăm sóc sức khỏe, bao gồm lập kế hoạch và quản lý bệnh nhân, chăm sóc sức khỏe người cao tuổi và cộng đồng, truy cập và quản lý thông tin y tế và hỗ trợ quyết định. Một vài ứng dụng đã cài đặt cho thấy rằng hệ thống đa tác tử có thể là giải pháp đúng đắn cho việc xây dựng các hệ thống hỗ trợ quyết định y học và cải thiện sự phối hợp giữa các chuyên gia khác nhau tham gia vào quá trình chăm sóc sức khỏe. 2.2. Mô hình đa tác tử sử dụng lực hút và đẩy Trong những năm gần đây, một hướng tiếp cận mới của hệ thống đa tác tử là ứng dụng đa tác tử sử dụng lực hút và đẩy giữa các tác tử vào một số bài toán tự tổ chức (self-organization). Đây là động lực chính để tôi sử dụng mô hình đa tác tử trong bài toán của hệ tư vấn. Trong phần này, khóa luận sẽ trình bày hai nghiên cứu ứng dụng hệ thống đa tác tử sử dụng lực hút và đẩy trong ứng dụng phân loại email của Renault [6] và ứng dụng tìm kiếm ảnh của Cao Hồng Huệ và các đồng nghiệp [4]. 2.2.1. Mô hình đa tác tử cho phân loại email Renault [6] đã đề xuất một mô hình đa tác tử tự động hút / đẩy cho ứng dụng phân loại email. Mục đích của mô hình này là tổ chức các email trong một không gian hai chiều theo độ tương tự, trong đó mỗi email được gắn với một từ khóa, đồng thời được đại diện bởi một tác tử và không cần phải xác định trục tọa độ hoặc cách để tổ chức thông tin. Mô hình này cho phép các tác tử giao tiếp với nhau thông qua các kích thích tố ảo và chúng tự tổ chức trong không gian. Kích thích tố là những yếu tố trong môi trường tác động trực tiếp vào bản thân tác tử. Hệ thống có thể tổ chức (gom cụm / phân loại ) email và cho phép người dùng trực quan tương tác với nó. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 33 Hình 2.2. Mô hình đa tác tử hút và đẩy cho phân loại email 2.2.2. Mô hình đa tác tử cho tìm kiếm ảnh Dựa trên ý tưởng của Renault [6] đã trình bày ở trên, Cao Hồng Huệ và các đồng nghiệp [4] đã nghiên cứu mô hình đa tác tử hút và đẩy cho tìm kiếm ảnh. Mô hình này sử dụng các tác tử phản ứng với môi trường (reactive agent) sử dụng các lực hút / đẩy cho tổ chức dữ liệu trong không gian hai chiều. Các tác tử được di chuyển tự do trong không gian này mà đường đi của chúng sẽ không xác định trước. Chúng chỉ phản ứng với các kích thích bên ngoài được gửi từ các tác tử khác. Mỗi tác tử tương tác với những tác tử khác thông qua lực, lực đó có thể là lực hút hoặc lực đẩy. Lực được tính toán giữa hai tác tử dựa trên sự giống nhau của các vector đặc tính hoặc từ các từ khóa mô tả của từng tác tử. Do đó, các tác tử được hút bởi những tác tử tương tự và bị đẩy lùi từ những tác tử không tương tự. Mô hình hoạt động dựa trên chu trình lặp theo một khoảng thời gian. Cứ mỗi lần lặp là các tác tử sẽ bị thay đổi vị trí về mặt không gian trong mô hình. Sự thay đổi đó như đã nói ở trên là do lực tác động bởi các tác tử khác, hay còn gọi là các láng giềng. Việc lựa chọn láng giềng trong mỗi lần lặp khiến mô hình hoạt động khá chậm, đây cũng là hạn chế của mô hình này. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 34 Hình 2.3. Mô hình đa tác tử hút và đẩy cho tìm kiếm ảnh Ý tưởng hệ đa tác tử của Renault [6] và Cao Hồng Huệ [4] khá giống với ý tưởng trong hệ tư vấn. Cả hai đều dùng độ tương tự để tổ chức dữ liệu, còn hệ tư vấn thì dùng độ tương tự giữa những người dùng hay sản phẩm để lấy ra danh sách các sản phẩm tư vấn. Nhưng trong hệ tư vấn, ví dụ phương pháp lọc cộng tác, việc lấy danh sách tư vấn được tính dựa trên công thức phức tạp. Còn nếu áp dụng ý tưởng của hệ đa tác tử hút và đẩy thì việc lấy kết quả tư vấn sẽ dễ dàng hơn bằng cách lấy các láng giềng (trong mặt phẳng hai chiều) của một tác tử. Do đó, tác giả đề xuất mô hình đa tác tử sử dụng lực hút / đẩy cho tư vấn phim. 2.3. Mô hình đa tác tử hút và đẩy cho phương pháp lọc cộng tác 2.3.1. Tổng quan về mô hình Mô hình đề xuất sẽ sử dụng các tác tử với các lực hút và đẩy cho việc tổ chức dữ liệu trong mặt phẳng hai chiều và hiệu chỉnh cho phù hợp với bài toán tư vấn phim. Trong mô hình này, hướng tiếp cận được sử dụng là dựa trên sản phẩm (item-based). Do đó, mỗi bộ phim được đại diện bởi một tác tử / hình ảnh (poster của bộ phim) trong mặt phẳng hai chiều. Mỗi tác tử sẽ có một mảng chứa các đánh giá (giá trị trong đoạn [1,5]) của người dùng cho bộ phim đó. Các tác tử này tương tác với nhau và sinh ra các lực hút hoặc lực đẩy giữa chúng. Hai tác tử là hút nhau khi độ tương tự giữa chúng là cao và đẩy nhau khi độ tương tự giữa chúng là thấp. Dựa trên việc tổng hợp các lực hút / đẩy tác dụng lên một tác tử, tác Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 35 tử đó sẽ di chuyển đến vị trí mới. Tại vị trí mới này, tác tử lại tương tác với các tác tử láng giềng mới và lại tiếp tục di chuyển. Quá trình di chuyển sẽ kết thúc khi tác tử di chuyển về đúng vị trí của nó trong môi trường các tác tử và tạo thành môi trường ổn định. Cách thức hoạt động của các tác tử trong môi trường như vậy làm cho mô hình này trở thành một mô hình tự tổ chức (self – organization). Sau khi môi trường đạt đến trạng thái ổn định, hai tác tử nằm gần nhau trong mặt phẳng hai chiều sẽ là hai tác tử giống nhau và có thể được dùng để tư vấn cho nhau. Hình 2.4. Không gian của mô hình Tiếp theo, khóa luận xin trình bày những nội dung cụ thể nhất về mô hình đề xuất như: môi trường, cách thức hoạt động của tác tử, cách thức tương tác của các tác tử, cách thức chọn láng giềng,... 1) Môi trường Trong mô hình, môi trường được thể hiện qua không gian hai chiều, dữ liệu của chúng được lưu trữ trên hai trục x và y. Mô hình sẽ lặp liên tục sau mỗi bước thời gian, cứ mỗi bước lặp là một lần các tác tử thay đổi về mặt vị trí trong không gian. Với mỗi tác tử, hướng di chuyển của nó được sinh ra bằng cách tổng hợp các lực tác động từ các láng giềng lên nó. Sự di chuyển của các tác tử được thể hiện ở hình 2.5. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 36 Hình 2.5. Môi trường của các tác tử 2) Tác tử phản ứng với môi trường Các tác tử trong mô hình là tác tử phản ứng với môi trường, nghĩa là chúng không có bộ nhớ để lưu trữ hoạt động của mình. Hành động duy nhất của tác tử có thể làm là di chuyển. Điều này dẫn đến khả năng tăng tốc, phanh hoặc thay đổi hướng. Do đó, chuyển động của tác tử được gây ra bởi các lực áp dụng trực tiếp vào chính nó và lực quán tính có sẵn của bản thân nó. Hình 2.6 biểu diễn cách quản lý lực quán tính và lực áp dụng của tác tử trong mô hình, Ti tương ứng với một mốc thời gian nhất định và Ti +1 là mốc thời gian kế tiếp. Hình 2.6. Quản lý lực quán tính trong mô hình Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 37 3) Tương tác giữa các tác tử Tại mỗi bước lặp, các tác tử của hệ thống (toàn bộ hoặc không) sẽ tương tác với láng giềng của chúng. Những tương tác này được đặc trưng bởi các lực áp dụng giữa các tác tử với nhau. Các lực này thể hiện mong muốn thu hút hoặc đẩy lùi một tác tử, do đó các lực này được gọi là lực hút / đẩy. Các lực này gây ra chuyển động cho các tác tử. Đọc phần 2.3.2 để hiểu rõ về lực hút / đẩy trong mô hình này. 4) Phương pháp chọn láng giềng Tại mỗi lần lặp, mỗi tác tử chỉ phản ứng với các tác tử nhất định trong một khu vực. Do mô hình luôn thay đổi và vận động nên tại mỗi lần lặp khu vực đó có thể sẽ thay đổi. Khái niệm về khu vực không giới hạn một khái niệm về khoảng cách trong không gian như thường lệ. Khóa luận đề xuất bốn chế độ lựa chọn láng giềng như sau: Lân cận: Tất cả các tác tử trong bán kính cố định được coi là láng giềng. Chọn Mẫu: Trong danh sách của vùng cận kề, lựa chọn ngẫu nhiên một vài tác tử làm láng giềng chứ ko chọn toàn bộ. Ngẫu nhiên: Các tác tử được lựa chọn ngẫu nhiên từ tất cả các tác tử trong mô hình. Đây là loại khu vực có thể mở rộng phạm vi tương tác giữa các tác tử. Vùng xác định: Các tác tử được chọn từ một khu vực xác định nào đó để làm láng giềng. Lựa chọn này cho phép kiểm soát tương tác giữa các tác tử một cách chính xác. Hình 2.7. Các cách chọn láng giềng Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 38 Trong mô hình đề xuất, ở cấp độ địa phương tác giả chọn láng giềng ở vùng lân cận. Sau đó, ở cấp độ toàn cục tác giả chọn láng giềng theo cách ngẫu nhiên. Để hiểu rõ hơn về cấp độ địa phương và toàn cục, xin đọc phần 2.3.3. 2.3.2. Lực hút và đẩy trong mô hình 1) Độ tương tự giữa hai tác tử Trong phương pháp lọc cộng tác dựa trên sản phẩm (item-based), các sản phẩm được so sánh dựa trên mức độ tương tự của chúng. Do đó, mô hình này cũng sử dụng độ tương tự của phương pháp lọc cộng tác dựa trên sản phẩm làm căn cứ để tạo ra lực hút và đẩy cho các tác tử. Một số cách đo độ tương tự đã được giới thiệu ở chương I, như: Độ tương tự Pearson, Hệ số tương quan Spearman, Hệ số tương quan của Kendall, Sai phân bình phương trung bình, Entropy, Độ tương tự cosin, Độ tương tự cosin điều chỉnh. Về bản chất, những độ đo tương tự này là biến đổi của độ tương quan Pearson, nhưng các nghiên cứu thực nghiệm đã cho thấy rằng hệ số tương quan Pearson cho kết quả tốt hơn. Do đó, tác giả quyết định chọn Hệ số Pearson để tính độ tương tự giữa hai tác tử: 𝑤𝑎,𝑢 = ∑ (𝑟𝑎,𝑖 − 𝑟�̅�)(𝑟𝑢,𝑖 − 𝑟�̅�)𝑖∈𝐼 √∑ (𝑟𝑎,𝑖 − 𝑟�̅�) 2 ∑ (𝑟𝑢,𝑖 − 𝑟�̅�) 2 𝑖∈𝐼𝑖∈𝐼 Trong đó, trọng số 𝑤𝑎,𝑢 là độ tương tự giữa người dùng u và người cần tư vấn a, I là tập các sản phẩm được bình chọn bởi cả hai người dùng, 𝑟𝑢,𝑖 là bình chọn được gán cho sản phẩm i bởi người dùng u, và 𝑟�̅� là giá trị bình chọn trung bình của người dùng u. 2) Quy tắc xác định lực Một tác tử luôn luôn tạo ra một lực để áp dụng vào tác tử khác. Lực đó được đặc trưng bởi hướng và độ mạnh. Hướng được xác định bởi bản chất của lực là hút hoặc đẩy. Lực này thể hiện mong muốn của một tác tử hướng về hoặc tránh xa một tác tử khác. Muốn xác định hành vi của các tác tử ở mức độ địa phương phải biết được độ tương tự hoặc không tương tự Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 39 của chúng trong giới hạn láng giềng. Các tác tử tương tự nhau sẽ có vị trí gần nhau và ngược lại. Dựa trên ý tưởng này, tác giả đặt ra hai quy tắc cơ bản để xác định hành vi của các tác tử ở mức độ địa phương: Hai tác tử tương tự nhau sẽ hút nhau, mục đích là làm cho chúng gần nhau hơn. Hai tác tử không tương tự nhau sẽ đẩy nhau, mục đích là làm cho chúng tách xa nhau ra. Còn về độ mạnh của lực, nó phụ thuộc vào hai điều: Đầu tiên là độ tương tự giữa các tác tử, thứ hai là khoảng cách giữa các tác tử. Sau khi hợp nhất hai tiêu chí độ tương tự và khoảng cách đó, quy tắc thiết lập lực giữa hai tác tử được thể hiện qua hình 2.8. Hình 2.8. Tính chất lực và độ mạnh lực dựa trên độ tương tự và khoảng cách (cách tiếp cận rời rạc) Trong thực tế, sẽ không thể giới hạn chính xác giá trị rời rạc khi đánh giá khoảng cách và sự tương đồng giữa các tác tử. Cho nên Khóa luận đề xuất các quy tắc phù hợp với các giá trị liên tục như hình 2.9. Hình 2.9. Tính chất lực và độ mạnh lực dựa trên độ tương tự và khoảng cách (cách tiếp cận liên tục) Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 40 Dựa vào hình 2.9, ta thấy luôn tồn tại một ngưỡng trung lập của lực. Ngưỡng này làm căn cứ để xác định lực đó là hút hay đẩy. Do đó: Nếu kết quả đưa ra lớn hơn ngưỡng trung lập, lực đó là lực đẩy. Lực này được tính theo công thức: 𝑓 = 𝑤 − 𝑤𝑚𝑖𝑛 (𝑤𝑚𝑎𝑥 − �̅�) × 𝑑 Nếu kết quả đưa ra nhỏ hơn ngưỡng trung lập, lức đó là lực hút. Lực này được tính theo công thức: 𝑓 = 𝑤 − �̅� (𝑤𝑚𝑎𝑥 − �̅�) × 𝑑 Trong đó, 𝑤 là độ tương tự giữa hai tác tử; �̅�, 𝑤𝑚𝑎𝑥, 𝑤𝑚𝑖𝑛 lần lượt là giá trị độ tương tự trung bình, lớn nhất, nhỏ nhất của của các láng giềng với tác tử đang xét; 𝑑 là khoảng cách giữa hai tác tử theo công thức Manhattan. 3) Tổng hợp lực Chúng ta đã biết các quy tắc để tạo ra lực ở phần trên, cụ thể là dựa vào độ tương tự và khoảng cách không gian giữa hai tác tử. Khi tính toán độ tương tự cho một cặp tác tử chỉ tạo ra một lực độc lập. Sự tương tác giữa hai tác tử đó không thể tạo ra một lực hút/đẩy duy nhất mà phải phụ thuộc vào nhiều lực khác trong không gian. Các lực này sau đó được hợp nhất để tạo ra một lực kết hợp. Hình 2.10. Ví dụ về phản ứng của một tác tử với hai láng giềng Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 41 Hình 2.10 đã cho thấy nguyên tắc của việc tổng hợp lực, tại mỗi tác tử sẽ được mô phỏng phản ứng với một tác tử trong láng giềng. Lực phát sinh từ các phản ứng này được kết hợp để làm phát sinh một lực kết hợp tổng thể. 4) Xác định giá trị dự đoán Sau khi mô hình hoạt động khoảng 300 bước lặp, tác giả nhận thấy lực tác động giữa các tác tử giảm dần về không (0), dẫn đến các tác tử không còn di chuyển nữa, khoảng cách giữa các tác tử trong không gian sẽ không còn thay đổi. Khi đó, mô hình đã đạt đến trạng thái ổn định. Mô hình đề xuất là mô hình tự tổ chức giữa các tác tử trong không gian, cho nên giá trị của độ tương tự đã được thể hiện chính xác trong mô hình. Vì vậy, tác giả sẽ không sử dụng công thức xác định giá trị dự đoán đã nêu ở chương 1 mà sẽ sử dụng cách tính: Lấy giá trị bình chọn của bộ phim gần nhất trong không gian so với bộ phim muốn dự đoán làm kết quả. Kết quả này cũng là căn cứ để đánh giá hệ tư vấn được sử dụng ở bước đánh giá trong Chương 3. 2.3.3. Mô hình tự tổ chức Trong quá trình mô hình này hoạt động, các tác tử sẽ di chuyển dần về vị trí ổn định theo một lộ trình không định trước. Việc di chuyển phụ thuộc vào môi trường xung quanh như thế này là giống với việc tự tổ chức của các thuật toán tự tổ chức (self- organization) trong lĩnh vực máy học. Do đó, kết quả của mô hình này ngẫu nhiên lại là kết quả của một mô hình tự tổ chức. Đó là một kỹ thuật mạnh mẽ và hiện đại. Tuy nhiên, tương tự như mô hình của Cao Hồng Huệ [4], mô hình này phải sử dụng hai cấp độ: cấp độ địa phương và cấp độ toàn cục. Cấp độ địa phương: Các tác tử lựa chọn láng giềng trong một phạm vi nhỏ, cụ thể là các láng giềng có vị trí lân cận. Việc này giống như chia không gian trong môi trường thành từng khu vực riêng để hoạt động độc lập. Lực địa phương được tạo ra từ các tác tử giúp chúng gom cụm thành các nhóm nhỏ nằm rải rác trong không gian. Bởi vì phạm vi láng giềng là nhỏ nên tính chính xác của mô hình là không cao. Do đó, mô hình cần có cấp độ toàn cục để phá vỡ các mối liên hệ ở địa phương, nhằm gom các nhóm nhỏ lại với nhau để tăng độ chuẩn xác cho mô hình. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 42 Cấp độ toàn cục: Các tác tử lựa chọn láng giềng trong phạm vi lớn, các láng giềng đó có vị trí ngẫu nhiên trong mô hình. Lực sinh ra trong cấp độ này được gọi là lực toàn cục. Kết hợp lực địa phương đã nêu ở trên và lực toàn cục, ta được một lực kết quả mà quy tắc tổng hợp lực ở phần 2.3.2 đã đề cập. Chức năng của hai cấp độ này được thể hiện ở hình 2.11. Hình 2.11. Mô phỏng trên mức độ toàn cục và địa phương Ta rất dễ nhận thấy rằng, ở cấp độ địa phương, các tác tử được phân nhóm thành các nhóm màu khác nhau, nhưng trong đó vẫn tồn tại các nhóm cùng màu nhưng lại xa nhau. Còn ở cấp độ toàn cục, màu trong mô hình đã được sắp xếp theo một trật tự nhất định, các màu giống nhau sẽ có vị trí gần nhau và ngược lại. Hình 2.11 đã mô tả được cách thức hoạt động của một mô hình tự tổ chức điển hình. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 43 Chương 3 HỆ THỐNG THỬ NGHIỆM TƯ VẤN PHIM SỬ DỤNG MÔ HÌNH ĐA TÁC TỬ HÚT VÀ ĐẨY 3.1. Giới thiệu hệ thống tư vấn 3.1.1. Mô tả bài toán Hệ thống thử nghiệm tư vấn phim sử dụng mô hình đa tác tử hút và đẩy được xây dựng với mục đích đề xuất một hướng tiếp cận mới trong phương pháp tư vấn với bộ dữ liệu mẫu MovieLens. Hệ thống sẽ nhận các dữ liệu đầu vào từ bộ dữ liệu mẫu MovieLens. Các thông tin về Người dùng (user), Bộ phim (item) và đặc biệt là đánh giá của người dùng với từng bộ phim (rate). Khi đó, hệ thống sẽ phân tính, tính toán mối liên hệ giữa các bộ phim (item-based) đồng thời thể hiện mối liên hệ đó lên một không gian hai chiều trực quan để người sử dụng có thể quan sát được. Cuối cùng, hệ thống sẽ tự đánh giá chất lượng của mô hình này thông qua các bộ Test có sẵn trong bộ dữ liệu mẫu MovieLens, từ đó làm căn cứ để đưa ra lời tư vấn cho khách hàng. 3.1.2. Mô tả về bộ dữ liệu MovieLens Nhằm xây dựng thành công mô hình đa tác tử hút và đẩy cho hệ tư vấn, tác giả cần có một cơ sở dữ liệu đủ lớn, đầy đủ thông tin và quan trọng là cần có đánh giá của nguời dùng nên việc tự tạo một cơ sở dữ liệu là khá mất thời gian khó đảm bảo được tính khoa học. Từ đó, tác giả đề xuất việc sử dụng một cơ sở dữ liệu mẫu đã được tổng hợp một cách khoa học và hợp lý, cụ thể trong khóa luận này sẽ sử dụng cơ sở dữ liệu MovieLens nghiên cứu, thu thập dữ liệu về phim của GroupLens. Bộ dữ liệu MovieLens được thu thập bởi GroupLens Research Project tại Đại học Minnesota. GroupLens Research đã thu thập và thực hiện đánh giá tập hợp dữ liệu từ trang web MovieLens ( Các bộ dữ liệu được thu thập qua các thời kỳ khác nhau của thời gian, tùy thuộc vào kích thước của bộ này. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 44 Có 3 tập dữ liệu MovieLens: - MovieLens 100k – bao gồm 100.000 đánh giá từ gần 1000 người dùng trên gần1700 phim. - MovieLens 1M – bao gồm 1.000.000 đánh giá từ gần 6000 người dùng trên gần 4000 phim. - MovieLens 10M – bao gồm 10.000.000 đánh giá và 100.000 ứng dụng được áp dụng cho gần 10.000 phim bởi gần 72.000 người dùng. Phần nghiên cứu này sẽ sử dụng tập dữ liệu MovieLens 100k bao gồm 100.000 đánh giá (từ 1 – 5) từ 943 người dùng trên 1682 bộ phim. Mỗi người dùng sẽ đánh giá ít nhất 20 bộ phim và cung cấp thông tin nhân khẩu học cơ bản cho người sử dụng (tuổi tác, giới tính, nghề nghiệp...). Các dữ liệu này được thu thập trong khoảng thời gian bảy tháng, kể từ ngày 19 tháng 9 năm 1997 đến ngày 22 tháng 4 năm 1998. Những thông tin này đã được sàng lọc một cách cẩn thận, người dùng có ít hơn 20 xếp hạng hoặc thông tin nhân khẩu học không hoàn chỉnh đã được xóa bỏ. Bộ dữ liệu MovieLens 100k bao gồm: - Tập dữ liệu DATA: là tập hợp dữ liệu bao gồm 100.000 đánh giá từ 943 người dùng trên 1682 bộ phim. Mỗi người dùng đã đánh giá ít nhất 20 bộ phim. Tập dữ liệu bao gồm các trường: UserId | ItemId | Rating | TimeStamp. - Tập dữ liệu INFO: là thông tin về số lượng người dùng, bộ phim và đánh giá trong bộ dữ liệu MovieLens 100k (tập dữ liệu này chỉ để cung cấp thông tin). - Tập dữ liệu ITEM: chứa các thông tin về các bộ phim, bao gồm các trường: MovieId(Id) | MovieTitle(Title) | ReleaseDate | VideoReleaseDate | IMDbURL | Unknow | Action | Adventure | Animation | Children's | Comedy | Crime | Documentary | Drama | Fantasy | Film-Noir | Horror | Musical | Mystery | Romance | Sci-Fi | Thriller | War | Western. 19 trường cuối là các thể loại, giá trị 1 cho thấy phim thuộc thể loại đó, ngược lại là 0, mỗi phim có thể thuộc nhiều thể loại cùng một lúc. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 45 - Tập dữ liệu GENRE: chứa danh sách các thể loại phim, gồm hai trường: Id | Title. - Tập dữ liệu USER: chứa các thông tin nhân khẩu học của người dùng, bao gồm các trường: UserId(Id) | Name | Age | Gender | Occupation | ZipCode. - Tập dữ liệu OCCUPATION: chứa danh sách các nghề nghiệp của người dùng, bao gồm hai trường: Id | Title. - Năm (5) tập dữ liệu u.base và u.test: Năm bộ dữ liệu u.base và u.test dữ liệu đào tạo và dữ liệu thử nghiệm. Chúng được chia tách từ tập dữ liệu DATA theo tỷ lệ 80%/20% theo phương pháp Cross-Validation. Tập dữ liệu này sẽ được tác giả sử dụng để đánh giá hệ tư vấn. 3.1.3. Ưu, nhược điểm của bộ dữ liệu MovieLens 1) Ưu điểm: Một trong những ưu điểm của bộ dữ liệu MovieLens là hầu như mọi thông tin đều đã được thu thập và sàng lọc một cách kỹ lưỡng, khoa học. Nó đáp ứng số lượng thông tin đủ nhiều để khai thác. Vấn đề đối với người nghiên cứu là họ không thể tự mình tạo một cơ sở dữ liệu với số lượng thông tin đủ lớn để đảm bảo tính khách quan, logic. Họ gặp khó khăn trong việc tạo lập, phân bổ các user cùng với các thông tin đi kèm và càng phức tạp hơn trong việc suy nghĩ, thiết lập thông tin chung giữa các đối tượng sao cho kết quả nhận được hợp lý nhất. Ví dụ điển hình ở đây là làm sao để có thể tạo thông tin ảo cho các USER, ITEM để thông tin ở DATA khoa học nhất khi vấn đề đặt ra là tạo Rating cho mỗi người dùng đối với quá nhiều bộ phim thuộc các thể loại khác nhau. Từ đó, việc sử dụng cơ sở dữ liệu mẫu là cách đơn giản, nhanh chóng đảm bảo tính chính xác về thông tin nhất. 2) Nhược điểm: Bên cạnh những ưu điểm thì bộ dữ liệu mẫu MovieLens cũng tồn tại những nhược điểm của nó. Nhược điểm lớn nhất chính là sự rời rạc, thưa thớt dữ liệu. Với bộ dữ liệu MovieLens, thông tin đưa ra là gần 1700 bộ phim nên khả năng trùng khớp của người dùng là rất ít. Có thể người dùng này sẽ đánh giá 20 phim này, nhưng người dùng khác Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 46 sẽ đánh giá 20 phim khác hoặc là chỉ đánh giá chung một số ít các bộ phim. Điều này khiến cho việc tính hệ số tương quan để xác định người dùng tương tự là rất khó khăn và hầu như mọi trường hợp hệ số tương quan đều trả về giá trị 0. Điều này sẽ gây khó khăn lớn cho việc đánh giá tìm ra tư vấn cho người dùng tiếp theo. 3.2. Ngôn ngữ lập trình Objective-C và thư viện đồ hoạ OpenGL Tiếp theo, tôi sẽ trình bày về hai công cụ được dùng để cài đặt hệ thống, đó là: Ngôn ngữ lập trình Objecive-C và Thư viện đồ họa OpenGL. 3.2.1. Ngôn ngữ lập trình Objective-C Vào đầu những năm 1980, Brad J. Cox đã thiết kế ra ngôn ngữ Objective-C dựa trên ngôn ngữ SmallTalk-80. Có thể hình dung rằng Objective-C là ngôn ngữ lập trình được đặt ở lớp trên của ngôn ngữ lập trình C truyền thống, điều này có nghĩa rằng ngôn ngữ C được bổ sung thêm các thành phần mở rộng (extensions) để hình thành nên một ngôn ngữ lập trình mới đó chính là Objective-C. Ngôn ngữ Objective-C này cho phép chúng ta tạo và quản lý các đối tượng (Objects). Hình 3.1. Ngôn ngữ lập trình Objective-C Từ năm 1988, Công ty NeXT Software nắm giữ bản quyền của ngôn ngữ Objective-C này. Họ đã phát triển các bộ thư viện và cả môi trường phát triển cho nó có tên là NEXTSTEP. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 47 Năm 1994, NeXT Computer phối hợp với Sun Microsystems chuẩn hóa lại NEXTSTEP trong bản đặc tả tên là OPENSTEP. Bản hiện thực của OPENSTEP chính là GNUStep. Một hệ thống bao gồm cả Linux kenel và môi trường phát triển GNUStep lúc đó được gọi là LinuxSTEP. Đến năm cuối tháng 12 năm 1996, hãng Apple đã mua lại công ty NeXT Software và môi trường NEXTSTEP/OPENSTEP đã trở thành thành phần cột lỗi của hệ điều hành OS X mà Apple giới thiệu sau này. Phiên bản chính thức của môi trường phát triển này do Apple giới thiệu ban đầu có tên là Cocoa. Bằng việc hỗ trợ sẵn ngôn ngữ Objective- C, đồng thời tích hợp một số công cụ phát triển khác như Project Builder (đây chính là tiền thân của Xcode) và Interface Builder, Apple đã tạo ra một môi trường mạnh mẽ để phát triển ứng dụng trên MAC OS X. Đến năm 2007, Apple tung ra bảng nâng cấp cho ngôn ngữ Objective-C và gọi đó là Objective-C 2.0. Cho đến khi Apple chính thức giới thiệu iPhone vào năm 2007, các rất rất nhiều các nhà phát triển mong muốn được tham gia phát triển ứng dụng trên thiết bị mang tính cách mạng về công nghệ này. Ban đầu, Apple không khuyến khích việc tham gia phát triển ứng dụng từ bên thứ ba này mà chỉ cho phép các ứng dụng chạy trên nền web được chạy thông qua ứng dụng dạng trình duyệt Safari mà họ cấy sẵn trong iPhone. Điều này làm cho các ứng dụng khi muốn chạy phải yêu cầu kết nối tới máy chủ web host ứng dụng của các developers tham gia phát triển. Rõ ràng động tác này của Apple không thể đáp ứng nhu cầu của các nhà phát triển cho có rất nhiều hạn chế trong việc phát triển ứng dụng web-based như thế. Ngay sau đó, Apple đã trấn an giới phát triển ứng dụng bằng việc chính thức thông báo rằng các nhà phát triển sẽ có thể phát triển các ứng dụng thuần iPhone. Tức là các ứng dụng nằm trong iPhone và chạy trên hệ điều hành của iPhone giống như các ứng dụng có sẵn của Apple như Contacts, Stocks, Weather,...chạy trên thiết bị đặc biệt này. 3.2.2. Thư viện đồ hoạ OpenGL OpenGL là giao diện phần mềm hướng thủ tục theo chuẩn công nghiệp hỗ trợ đồ hoạ 3 chiều. Được phát triển đầu tiên bởi Silicon Graphic Inc, bao gồm khoảng 250 câu lệnh được hỗ trợ bởi nhiều ngôn ngữ như C, C++, Objective-C, Java,... cho phép người Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 48 lập trình sử dụng tạo ra các đối tượng đồ họa. OpenGL được thiết kế không phụ thuộc vào nền tảng phần cứng cũng như hệ điều hành máy tính (independence of hardware platform and operating system). Với OpenGL ta sẽ tạo ra các mô hình từ các đối tượng hình học cơ bản đó là điểm (point), đường (line) và đa giác (polygon). Cú pháp lệnh của OpenGL: Các câu lệnh của OpenGL đều sử dụng tiền tố gl và các từ tiếp theo được bắt đầu bằng kí tự hoa, ví dụ: glClearColor(). Các hằng được định nghĩa bằng tiền tố GL_ tiếp theo là các từ viết hoa được ngăn cách bằng kí tự gạch dưới, ví dụ GL_COLOR_BUFFER_BIT. Hình 3.2. Thư viện đồ họa OpenGL Các thư viện liên quan của OpenGL: Mặc dù OpenGL là một công cụ mạnh nhưng các đối tượng vẽ đều là các đối tượng hình học cơ bản. Để đơn giản hóa một số công việc, chúng ta được trang bị thêm một số thư viện cho phép sử dụng các thủ tục vẽ ở mức cao hơn: - OpenGL Utility Library (GLU): Bao gồm một số thủ tục thiết lập ma trận xác định hướng nhìn (viewing orientation), ma trận các phép chiếu (projection), và biểu diễn các mặt trong không gian 3 chiều (redering surfaces) - OpenGL Utility Toolkit (GLUT): Là một bộ công cụ được viết bởi Mark Kilgard bao gồm các thủ tục giúp cho đơn giản hóa việc xây dựng các đối tượng hình học. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 49 Với sự hỗ trợ đa ngôn ngữ và tính phong phú của OpenGL, tác giả đã quyết định chọn thư viện này để mô phỏng hệ thống. 3.3. Cài đặt hệ thống 3.3.1. Các yếu tố đầu vào Hệ thống nhận 2 yếu tố đầu vào sau: Bộ dữ liệu MovieLens: Như đã giới thiệu ở phần 3.1.2, hệ thống sẽ sử dụng bộ dữ liệu mẫu MovieLens để hoạt động. Các file cần thiết là: u.item, u.user, u.base và u.test. Hình ảnh cho các bộ phim: Nghiên cứu của tác giả theo hướng tiếp cận dựa trên sản phẩm (item-based), mỗi bộ phim sẽ là một tác tử hoạt động trong môi trường. Tác giả lấy hình ảnh của chính bộ phim đó để đại diện cho mỗi tác tử trong mô hình. Cách lấy hình ảnh của các bộ phim cũng khá đơn giản. Trong thư mục u.item có lưu đường dẫn đến các bộ phim trên trang web www.us.imdb.com. Tác giả phân tích các đoạn code html trên trang web đó để tải ảnh về. Những bộ phim có thể là do quá cũ nên đã không còn ảnh, thay thế vào đó là một hình màu trắng có viết tên của chính bộ phim lên chính nó. Khi có bộ dữ liệu ảnh của các bộ phim, tác giả nhận thấy rằng dung lượng của chúng khá lớn, khi chạy trong mô hình sẽ làm giảm tốc độ. Vì vậy, trong hệ thống, tác giả chỉ sử dụng ảnh thu nhỏ (thumbnail) của các ảnh trên. Do đó, mô hình đã chạy khá mượt mà và tốc độ tính toán tăng đáng kể. Hình 3.3. Ảnh đại diện của phim / tác tử Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 50 3.3.2. Các yếu tố đầu ra Đầu ra của hệ thống bao gồm: Hình ảnh hoạt động của mô hình: cho người dùng thấy được trực quan hoạt động của mô hình. Dự đoán giá trị bình chọn: giá trị này làm căn cứ để đánh giá hệ tư vấn. Lập danh sách tư vấn: là kết quả để tư vấn cho người dùng. 3.3.3. Quy trình hoạt động Quy trình hoạt động của mô hình đề xuất được mô tả qua hình sau: Hình 3.4. Sơ đồ quy trình hoạt động Trong quy trình trên, mỗi bước lại được phân chia thành các quy trình nhỏ sau: Đọc dữ liệu: - Tạo danh sách Sản phẩm (Item). - Tạo danh sách Người dùng (User). - Tạo lưới quản lý các tác tử trong không gian (Grid). - Thiết lập các tham số cần thiết. Chạy mô hình đa tác tử: - Tính lực địa phương (Lực đối với các láng giềng lân cận). - Tính lực toàn cục (Lực đối với các láng giềng ngẫu nhiên). Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 51 - Di chuyển tác tử Vẽ từng bước kết quả chạy: - Vẽ hình ảnh của các tác tử ở vị trị mới trên mô hình. Tính giá trị dự đoán: - Khi mô hình ổn định, tính giá trị dự đoán để đánh giá hệ tư vấn. Lấy danh sách tư vấn: - Khi mô hình ổn định, lấy danh sách tư vấn cho từng người dùng. 1) Đọc dữ liệu Objective-C là ngôn ngữ lập trình hướng đối tượng, nó cho phép người dùng quản lý các đối tượng thông qua các lớp (class). Trong mô hình này, các bộ phim sẽ được lưu trữ trong danh sách Item còn danh sách User sẽ lưu trữ những người dùng. Đồng thời, mỗi tác tử được xem như là một đối tượng Item, mỗi đối tượng này có các thuộc tính và hành vi đặc trưng sau: - Chuỗi itemID: lưu trữ mã bộ phim. - Mảng arrayUserRate: lưu trữ mảng đánh giá của tất cả người dùng cho đối tượng này. Những người chưa đánh giá thì phần tử đó sẽ có giá trị 0. Vị trí của phần tử trong mảng chính là vị trí của người dùng trong danh sách người dùng. Ví dụ: mảng (3,4,0,5), người dùng thứ nhất đánh giá 3, người dùng thứ hai đánh giá 4, - Đối tượng hình ảnh NSImage: lưu trữ hình ảnh của bộ phim. - Đối tượng Điểm: lưu trữ cặp giá trị x,y của tác tử trong không gian. - Đối tượng Vector Quán tính: lưu trữ quán tính ngẫu nhiên của tác tử. - Hàm move dùng để di chuyển hình ảnh, draw dùng để vẽ hình ảnh. Các đối tượng User cũng được quản lý tương tự như Item, sau đó chúng được lưu vào hai danh sách Item và User riêng biệt. Riêng danh sách User được dùng vào việc dự đoán giá trị bình chọn của người dùng. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 52 Môi trường có chiều dài và rộng đều bằng một nghìn (1000) pixel. Để thuận tiện trong việc lựa chọn láng giềng, mỗi ô trong mô hình có kích thước là 10x10 cho nên số ô trong mô hình là 100x100 = 1000 ô. Khi mỗi tác tử được khởi tạo hoặc di chuyển, tùy vào vị trí của nó mà lưu trữ tác tử đó vào ô nào trong lưới cho phù hợp. Đó là cách quản lý các tác tử theo lưới một cách đặc biệt mà khóa luận đề xuất. Cách quản lý này ngoài việc thuận tiện theo dõi các hoạt động của các tác tử còn dùng để lấy các láng giềng lân cận và ngẫu nhiên. Cách lấy láng giềng theo lưới sẽ được trình bày ở bước chạy mô hình đa tác tử. Hình 3.5. Cách quản lý trên lưới của mô hình Cuối cùng, các tham số của chương trình cũng sẽ được khởi tạo, có thể kể đến một vài tham số đặc biệt khác như: đếm số lần lặp của mô hình, số láng giềng tối thiểu, số láng giềng tối đa, Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 53 2) Chạy mô hình đa tác tử a) Tính lực địa phương (Lực đối với các láng giềng lân cận)  Chọn láng giềng lân cận Dựa vào cấu trúc lưu trữ theo lưới vừa trình bày ở trên, mỗi tác tử sẽ nằm trong một ô nhất định, vùng láng giềng của tác tử đó chính là các tác tử nằm chung ô và tám (8) ô xung quanh. Thuật toán này có độ phức tạp là O(n2), được thể hiện trong hình 3.6 bên dưới. Hình 3.6. Thuật toán chọn láng giềng lân cận. Ngoài ra, để hạn chế việc tính lại độ tương tự, hệ thống sử dụng cấu trúc dữ liệu từ điển (Dictionary) để lưu các cặp . Ví dụ: tác tử này có độ tương tự với tác tủ khác có id 100 là 0.5 thì tôi sẽ lưu vào Dictionary này cặp giá trị (100,0.5). Đồng thời, mô hình cũng lưu cặp giá trị đó vào láng giềng đang xét. Phương pháp này giúp giảm thiểu số lần tính toán, góp phần đẩy nhanh tốc độ mô hình. Đây cũng chính là biện pháp để tôi khắc phục điểm yếu của mô hình. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 54  Tính lực địa phương Dựa vào công thức tính lực ở phần 2) mục 2.3.2. Sau khoảng 100 bước lặp sử dụng lực địa phương, mô hình lúc này được mô tả ở hình 3.7. Hình 3.7. Mô hình ở mức độ địa phương Lực địa phương chỉ phân cụm tác tử thành các nhóm nhỏ bị giới hạn về khoảng cách, điều này khiến mô hình chạy chưa chính xác. Khi đó, cần một lực toàn cục để gom các nhóm đó lại với nhau. Phần c) và d) sẽ trình bày phương pháp này. b) Tính lực toàn cục (Lực đối với các láng giềng ngẫu nhiên)  Chọn láng giềng ngẫu nhiên Chọn láng giềng ngẫu nhiên nhằm phục vụ cho việc tính lực toàn cục. Các bước chọn láng giềng ngẫu nhiên cũng giống như chọn láng giềng lân cận, chỉ khác là láng giềng sẽ được chọn ở vị trí ngẫu nhiên trong mô hình mà thôi. Do đó, khóa luận không Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 55 trình bày thuật toán chọn láng giềng ngẫu nhiên nữa. Kết thúc bước này, chúng ta có một danh sách các láng giềng ngẫu nhiển để tiếp tục tính toán.  Tính lực toàn cục Việc tính lực toàn cục không được thực hiện liên tục khi mô hình hoạt động mà chỉ được thực hiện trong một vài vòng lặp dựa vào biến lưu trữ số vòng lặp đã được khởi tạo trước đó. Việc này khiến thời gian mô hình được hội tụ chậm hơn một chút nhưng độ chính xác là tương đối cao bởi vì các tác tử chỉ di chuyển trong khoảng cách ngắn. Hình 3.8. Mô hình ở mức độ toàn cục Hình 3.8 cho thấy các tác tử được kéo về phía trung tâm giống như mô hình của Cao Hồng Huệ [4] và mô hình tự tổ chức. Các tác tử nằm riêng lẻ ở ngoài là do có ít đánh giá về các tác tử này, khiến các tác tử này có độ tương tự ít so với các tác tử còn lại. Vấn đề gặp phải là vấn đề về thưa thớt dữ liệu không thể tránh khỏi. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 56 c) Di chuyển tác tử Việc di chuyển tác tử thực ra rất đơn giản, chúng ta chỉ cần xác định lại vị trí mới của tác tử thông qua giá trị của biến lưu trữ tọa độ. Hình dung việc di chuyển chúng như làm phim hoạt hình, các con vật di chuyển được là do nhiều bức hình mô tả hoạt động một cách liên tục. Di chuyển tác tử cũng vậy, sự thay đổi liên tục về vị trí với khoảng cách ngắn là nguyên lý của nó. Do đó, lực tác động quá mạnh mà làm thay đổi vị trí quá lớn so với vị trí ban đầu sẽ được tôi làm giảm lực đi để hoàn thành mục tiêu vừa nêu. Thuật toán di chuyển tác tử hay còn gọi là xác định vị trí mới như sau: - Giảm lực quán tính theo thời gian. - Kiểm tra lực địa phương và lực toàn cục, nếu quá lớn thì giảm bớt. Trong mô hình đề xuất, tác giả giảm độ lớn của lực ba (3) lần. - Cộng dồn ba (3) lực vừa nêu vào tọa độ hiện tại của tác tử. - Nếu tác tử đó vượt ra ngoài phạm vi của mô hình thì kéo tác tử đó về lại. Đương nhiên sau khi thay đổi vị trí hiện tại của tác tử, vị trí của nó trong lưới quản lý cũng được thay đổi theo để tiến hành lấy láng giềng lân cận ở lần lặp tiếp theo. 3) Vẽ từng bước kết quả chạy Để vẽ các tác tử lên không gian hai chiều, tác giả sử dụng các hàm sẵn có của thư viện OpenGL. Các bước vẽ có thể tóm gọn trong 3 bước sau: - Lấy đối tượng NSImage có sẵn trong các tác tử. - Gán đối tượng NSImage đó cho hàm GL_TEXTURE_2D của OpenGL. - Lấy tọa độ của tác tử, sau đó dùng hàm GL_TEXTURE_2D để vẽ. 4) Tính giá trị dự đoán Khi mô hình đạt trạng thái ổn định, hệ thống có thể tính giá trị dự đoán cho người dùng. Đối với thuật toán tính giá trị dự đoán, đầu vào của nó là item cần dự đoán của user nào đó và đầu ra là giá trị dự đoán. Khi đó, thuật toán có độ phức tạp là O(n) và được biểu diễn ở hình 3.9. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 57 Sau khi đã có giá trị dự đoán cho toàn bộ người dùng, tác giả tiến hành tính giá trị sai số tuyệt đối trung bình MAE để đánh giá hệ tư vấn. Kết quả tính giá trị MAE được thực hiện trên toàn bộ năm tập dữ liệu u.base và u.test. Hình 3.9. Thuật toán tính giá trị dự đoán. 5) Lấy danh sách tư vấn Sau khi đã xác định được giá trị dự đoán cho mỗi người dùng, hệ thống chỉ cần lấy những bộ phim có giá trị dự đoán cao nhất mà người dùng đó chưa xem để tư vấn. Danh sách tư vấn cho người dùng được mô tả ở hình 3.10. Hình 3.10. Danh sách tư vấn phim Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 58 3.4. So sánh, đánh giá mô hình đa tác tử hút và đẩy với phương pháp lọc cộng tác Như đã đề cập ở bước tính giá trị dự đoán trong quy trình hoạt động đã nêu ở trên, sau khi dự đoán giá trị bình chọn của người dùng, tác giả tiến hành tính kết quả MAE cho cả năm tập dữ liệu kiểm tra. Kết quả được thể hiện ở hình 3.11. Hình 3.11. Biểu đồ biểu diễn kết quả MAE của 5 bộ dữ liệu kiểm tra Như vậy giá trị trung bình MAE cho cả năm bộ dữ liệu là khoảng 0.724. Điều này nói lên rằng, mô hình đa tác tử hút và đẩy mà tác giả đề xuất đưa ra các giá trị dự đoán có sai số tuyệt đối trung bình là 0.724. Trong khi đó, nghiên cứu [2] đã đưa ra giá trị MAE cho phương pháp lọc cộng tác là 0.723. Hai kết quả của hai phương pháp này gần tương đương nhau, cho thấy lời tư vấn của chúng đều có giá trị như nhau. Ở một góc độ khác, số láng giềng lân cận được chọn ảnh hưởng khá nhiều đến kết quả MAE. Qua nhiều lần thực nghiệm, tác giả nhận thấy rằng, lượng láng giềng được chọn dưới 50 thì giá trị MAE khá cao, còn trên 50 thì giá trị MAE khá ổn định và giảm dần đều sau đó. Điều này được thể hiện ở hình 3.12. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 59 Hình 3.12. Biểu đồ biểu diễn kết quả MAE của hai phương pháp. Qua hình 3.12. ta nhận thấy rằng, mô hình đề xuất của tác giả ổn định hơn nhiều so với phương pháp lọc cộng tác. Mô hình này mang lại kết quả tốt. Xử lý dữ liệu bị thưa thớt hay dữ liệu có quá ít đánh giá luôn là nhược điểm của phương pháp lọc cộng tác. Việc thưa thớt dữ liệu làm quá trình tính toán của phương pháp này không còn chính xác, dẫn đến kết quả tư vấn không đúng. Đối lập với lọc cộng tác, các bộ phim có số lượng người dùng đánh giá nhiều hay ít đều được thể hiện trực quan trong không gian của mô hình, lời tư vấn vẫn được lấy theo nguyên tắc đã trình bày mà không cần quan tâm đến dữ liệu như thế nào. Tác giả của nghiên cứu [2] cũng thừa nhận rằng: có xảy ra sự thay đổi giá trị MAE lớn và tốc độ tính toán hệ thống chậm khi có thêm một sản phẩm hoặc người dùng. Thật vậy, đối với lọc cộng tác, nếu xuất hiện một đối tượng mới trong hệ thống, nó đều phải đi tính toán lại từ đầu, gây lãng phí tài nguyên và chậm trễ khi đưa ra lời tư vấn. Ngược lại, mô hình mà tác giả đề xuất lại không bị ảnh hưởng tiêu cực bởi sự kiện trên. Trong trường hợp này, tác tử mới xuất hiện sẽ được đưa vào mô hình, tiếp tục thực hiện việc tính toán và di chuyển cho đến khi đến khi nó tìm được vị trí chính xác. Đây chính là ưu điểm lớn nhất của mô hình. Với những ưu điểm kể trên, tác giả tin rằng mô hình này hoàn toàn có thể thay thế cho phương pháp lọc cộng tác trong một thời gian không xa. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 60 KẾT LUẬN Tóm lại, sau khi hoàn thành đề tài “Nghiên cứu mô hình đa tác tử hút và đẩy cho phương pháp lọc cộng tác”, tác giả đưa ra những kết luận sau: Hệ tư vấn là công cụ phần mềm kỹ thuật cung cấp các mặt hàng đề xuất cho người sử dụng. Những lời tư vấn liên quan đến các khía cạnh khác nhau của quá trình ra quyết định, chẳng hạn như nên mua mặt hàng nào, nên nghe thể loại nhạc nào, hoặc nên đọc loại tin tức nào. Hiện nay, sự quan tâm đối với hệ tư vấn đang rất cao vì sự cần thiết của những ứng dụng có thể giúp người dùng xử lý với tình trạng quá tải thông tin & đưa ra những nội dung hoặc lời khuyên phù hợp cho từng cá nhân. Tuy nhiên, các phương pháp tư vấn hiện tại đã bộc lộ nhiều khuyết điểm như: vấn đề bộ nhớ của tư vấn dựa trên nội dung hay tốc độ tính toán của lọc cộng tác. Khóa luận đã đề xuất mô hình đa tác tử hút và đẩy cho phương pháp lọc cộng tác, hướng tiếp cận dựa trên láng giềng. Các bộ phim mà hệ thống tư vấn là kết quả có được dựa trên phân tích những lựa chọn, đánh giá của hàng trăm người dùng trước đó. Qua quá trình thực nghiệm hệ thống, tác giả nhận thấy rằng mô hình đề xuất đã đáp ứng được yêu cầu của khóa luận. Các giá trị tính toán mang tính thực tiễn cao và hoàn toàn chính xác. Đặc biệt là giải quyết được khuyết điểm của phương pháp lọc cộng tác như: tốc độ tính toán, sự xuất hiện người dùng hoặc sản phẩm mới. Bên cạnh đó, mô hình đã cho người dùng có cái nhìn trực quan về hệ thống đa tác tử, đặc biệt là áp dụng một hệ thống đa tác tử hút và đẩy cho hệ tư vấn phim. Khóa luận mang lại giá trị cao về tính khoa học và thực tiễn để thay thế cho phương pháp lọc cộng tác vốn đã lâu đời. Bên cạnh đó, mô hình vẫn còn một số khuyết điểm như: chưa có sự tương tác với người dùng do đây là mô hình tự tổ chức, chưa kết hợp được với phương pháp tư vấn dựa trên nội dung, chỉ đang hoạt động trên hệ điều hành MacOS, Những khuyết điểm này cũng là hướng phát triển của đề tài trong tương lai, nhằm hoàn thiện mô hình này để áp dụng rộng rãi vào hệ tư vấn. Khoá luận tốt nghiệp Sinh viên thực hiện: Nguyễn Minh Đức 61 DANH MỤC TÀI LIỆU THAM KHẢO [1]. Apple Inc, “OpenGL Programming Guide for Mac”, 2012. [2]. Badrul Sarwar; George Karypis; Joseph Konstan; John Riedl, “Item-Based Collaborative Filtering Recommendation Algorithms”, 2001. [3]. Francesco Ricci; Lior Rokach; Bracha Shapira; Paul B.Kantor, “Recommender Systems Handbook”, 2001. [4]. Hue Cao Hong; Guillaume Chiron; Alain Boucher; “A Multi-Agent Model for Image Browsing and Retrieval”. [5]. Michael Wooldridge, “An introduction to Multiagent Systems”, 2002. [6]. Renault V, “Organisation de Sociétés d'Agents pour la Visualisation d'Informations Dynamiques”, 2001. [7]. Stephen G.Kochan, “Programming in Objective-C 2.0”, 2008.

Các file đính kèm theo tài liệu này:

  • pdfnguyen_minh_duc_1565.pdf
Luận văn liên quan