BÀI tập NHÓM học PHẦN TRÍ TUỆ NHÂN tạo đề tài GIỚI THIỆU về máy học

24 458 0
BÀI tập NHÓM học PHẦN TRÍ TUỆ NHÂN tạo đề tài GIỚI THIỆU về máy học

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN -* - BÀI TẬP NHÓM HỌC PHẦN TRÍ TUỆ NHÂN TẠO Đề tài: GIỚI THIỆU VỀ MÁY HỌC Giảng viên hướng dẫn: Bùi Đức Dương Học viên thực hiện: Lớp: 52CNTT ĐÀO ĐỨC LINH HUỲNH MINH TRÍ TRẦN ĐỨC TRỌNG Năm 2012 1 MỤC LỤC (Đánh tự động) 2 LỜI GIỚI THIỆU (Trong đó có nội dung giới thiệu công việc của từng thành viên) 3 DANH MỤC CÁC BẢNG (Đánh tự động) DANH MỤC CÁC HÌNH (Đánh tự động) 4 CHƯƠNG I TỔNG QUAN VỀ HỆ HỌC I KHÁI NIỆM VỀ HỌC 1 Đặt vấn đề Từ trước, chúng ta đã biết có thể xây dựng được một hệ thống tri thức Một trong những cách có thể làm là xây dựng chúng bằng tay, tức là bằng công tác thủ công Song trên thực tế, điều này nhiều khi gây ra mât thời gian, thậm chí còn có thể chứa sai sót và thường chúng ta chỉ có thể làm trong những phạm vi rất hạn hẹp Hay nói một cách khác, chúng ta sẽ gặp rất nhiều khó khăn trong việc xây dựng hệ thống tri thức theo cách này Chẳng hạn bạn là những người có kiến thức về một hay một vài, thậm chí là nhiều đối tượng khác nhau (thường có mối liên hệ với nhau) về một lĩnh vực nào đó Nhưng trong nhiều trường hợp, khi chúng ta tìm ra được một sự mô tả thỏa đáng về một bài toán, một vấn đề nào đấy, khi đó chúng ta có thể “học” chúng qua các ví dụ 2 Học là gì? Theo nhiều chuyên gia, nhiều nhà nghiên cứu thì khái niệm “học” mang rất nhiều nghĩa khác nhau, mặc dù điều này đôi khi không tạo ra sự sai lệch đáng kể Ở đây, theo cách thông thường, ta có hiểu “học” qua các mô tả sau: - Việc ghi nhớ một vài sự kiện, đối tượng, hay quan hệ nào đấy - Việc học các sự thật thông qua các quan sát và khám phá - Việc phát triển các kĩ năng nhận thức thông qua thực hành, luyện tập - Việc tổ chức các tri thức mới thành các dạng tổng quát và hiệu quả Chuyên gia trong lĩnh vực Trí tuệ nhân tạo và trong lĩnh vực Kinh Tế, Herb Simon, đã đưa ra một định nghĩa như sau: “Học có nghĩa là những thay đổi trong hệ thống một cách thích hợp sao cho hệ thống có thể làm các thao tác như đã làm trước đó một cách ngày càng hiệu quả hơn trong những lần kế tiếp.” Định nghĩa này thì không hoàn toàn chính xác nhưng phần nào nó cũng cho ta thấy ý tưởng chung rằng hệ học cần phải yêu cầu một số thông tin từ các ví dụ của một bài toán và rồi thực hiện chúng tốt hơn lần sau Một trong những kiểu học thông dụng nhất là thu thập thông tin từ quá khứ và hiện tại để rồi đưa ra những phán đoán về một điều gì đấy trong tương lai Để đơn giản ta có thể xem ví dụ sau: - Mẩu bánh mì thứ nhất cung cấp chất dinh dưỡng khi ta ăn nó - Mẩu bánh mì thứ hai cung cấp chất dinh dưỡng khi ta ăn nó - Mẩu bánh mì thứ ba cung cấp chất dinh dưỡng khi ta ăn nó - Mẩu bánh mì thứ tư cung cấp chất dinh dưỡng khi ta ăn nó - … - Do đó, mọi mẩu bánh mì đề cung cấp chất dinh dưỡng khi ta ăn nó Đây là một ví dụ khá thú vị và dễ hiểu mà David Hume đã đưa ra Cũng vậy, ta có thể hình dung điều này qua nhiều ví dụ khác, chẳng hạn như: Hôm qua, mặt trời mọc hướng Đông, hôm trước nữa cũng thế Lịch sử cũng ghi nhận rằng mặt trời luôn luôn 5 mọc hướng Đông Thế thì ta có thể đưa ra phán đoán là mặt trời sẽ mọc ở hướng Đông vào ngày mai II PHÂN LOẠI CÁCH HỌC 1 Học có giám sát Học có giám sát là kiểu học và cũng là bài toán học thông dụng nhất Ví dụ chúng ta được cung cấp dữ liệu về cân nặng và chiều dài của một số con cá hồi và một số con cá ngừ đại dương Công việc của hệ học theo kiểu quan sát là phải tìm ra quy luật về mối quan hệ giữa cân nặng và chiều dài của một con cá để rồi từ đó có thể phán đoán về một con cá hồi hay một con cá ngừ đại dương 2 Phân nhóm Phân nhóm cũng là một dạng khá thông dụng Ý tưởng chung là khi ta được cung cấp một số mô tả về một tập hợp các cá thể riêng biệt (như động vật, các vì sao, đồ vật hay các văn bản,…) bằng một tập các đặc điểm (cân nặng, chiều cao, màu sắc,…), chúng ta sẽ phải phân chia chúng ra thành một số nhóm 3 Học trau dồi Một bài toán khác khá quen thuộc với phần lớn chúng ta là học trau dồi, hay học kĩ năng Trong bài toán học trau dồi có đôi phần khác so với bài toán quan sát là không ai có thể nói cho ta biết một cách chính xác rằng chúng ta phải làm gì Nội dung chính của bài toán này là phải tương tác với thế giới bên ngoài qua quan sát, đưa ra hành động, từ đó chúng ta sẽ nhận được kết quả tốt, chẳng hạn phần thưởng, hoặc gặp phải hậu quả xấu, chẳng hạn bị phạt vì lý do gì đó Trong phần tiếp theo chúng ta sẽ tập trung nghiên cứu vào bài toán quan sát III NỘI DUNG VIỆC HỌC 1 Quá trình học Chúng ta có thể hiểu với nhau việc học là cố gắng tìm ra một hàm có thể nhận được từ một tập dữ liệu đầu vào và đầu ra Định nghĩa này dường như có vẻ khá hẹp, song nó chứa đựng hầu hết các trường hợp tương tự như ở đây Một cách hiểu đơn giản, nó giống như ta học cách phát âm các từ ngữ từ các kí tự và các âm tiết mà con người sáng tạo ra, hay nhận ra các kí tự viết tay từ một hình có chứa các chữ viết, hay rộng ra hơn là chẩn đoán các chứng bệnh từ việc thu thập các kết quả trong các phòng thí nghiệm y học Bài toán học cách tìm ra một hàm thì không hề đơn giản chút nào Chúng ta có thể hình dung có ít nhất ba vấn đề quan trọng: ghi nhớ, trung bình hóa, tổng quát hóa Ví dụ mà chúng ta sẽ tìm hiểu ngay sau đây nói về việc một người hàng xóm mà bạn biết sẽ đi là vào ngày mai bằng phương tiện gì, lái xe hay đi bộ? Đầu tiên giả sử ta có bảng số liệu sau: 6 Với bảng dữ liệu trên thì câu hỏi đặt ra là người hàng xóm sẽ đi làm bằng phương tiện gì nếu đó là một ngày thứ Hai, trời có tuyết với nhiệt độ 19 độ, cô ấy vận một bộ trang phục thông thường và sẽ không có ý định mua sắm Dễ thấy ở đây đã từng có một ngày như thế trong quá khứ và người hàng xóm đã sử dụng xe hơi để đi Rõ ràng đây chỉ là một sự ghi nhớ đơn thuần một hành động, sự kiện đã xảy ra trong quá khứ, bây giờ các điều kiện mô tả hội tụ trở lại thì chúng ta vận dụng điều đó để đưa ra phán đoán rằng cô ấy sẽ đi bằng xe hơi Thế điều gì sẽ xảy ra nếu trường hợp mà ta xét tìm lại khá giống với khối dữ liệu mà ta thu thập về các ngày trước, như sau đây chẳng hạn: Trong bảng này, dữ liệu các cột nhiệt độ, thời tiết, thứ trong tuần, có đi mua sắm hay không và trang phục đều giống nhau, nhưng lại khác nhau ở việc lựa chọn phương tiện đi Chú ý rằng có hai ngày mà cô ấy lái xe, còn lại năm trường hợp kia là đi bộ Vậy thì hẳn ta sẽ đưa ra kết luận là trong ngày ta đang xét, cô ấy sẽ đi bộ, với xác suất dựa trên quá khứ là 5/7 Hãy nhớ là việc dựa hoàn toàn trên xác suất không phải là nội dung chính mà ta nghiên cứu trong bài luận này vì tồn tại rất nhiều lý thuyết khó và phức tạp về xác suất thông kê để có thể hiểu sau về lĩnh vực toán học này Ta sẽ không đề cập nhiều đến nó Đôi khi chúng ta phải đối mặt với một vấn đề là một dữ kiện nào đấy mà ta xét lại gần giống với một trường hợp đã xảy ra trong quá khứ mà không phải giống hoàn toàn, lúc này có lẽ ta sẽ phải chọn trường hợp gần giống đó để làm câu trả lời Như trong bảng sau, ngày đang xét giống với dữ liệu của dòng thứ tư, chỉ khác nhiệt độ, tức là 21 độ thay vì 20 độ như ta đang cần tìm 7 Thế còn đối với bảng dữ liệu sau thì sao? Ngày mà ta đang xét là một ngày thứ Hai có mưa, nhiệt độ 58 độ, người hàng xóm không đi mua sắm và mặc bộ trang phục như thông thường (tức là không quá trang trọng) Không có một câu trả lời hiển nhiên nào có thể đưa ra, hay thậm chí dễ suy đoán như các trường hợp bên trên Khi đó buộc chúng ta phải lập luận, phải tổng quát hóa các trường hợp của bài toán, tương tự như: - Những khi trời mưa thì cô ấy đi bộ, thế thì hôm nay cô ấy sẽ đi bộ - Hôm nay cô ấy sẽ lái xe vì hôm nay là thứ Hai, và cô ấy thì luôn luôn đi xe hơi vào thứ Hai - Cô ấy sẽ lái xe vì cô ấy luôn làm như thế khi mặc một bộ quần áo trang trọng, hoặc nếu nhiệt độ trên 90 hoặc dưới 20 Trong phần sau ta sẽ tìm hiểu các phương thức mô tả không gian dữ liệu của bài toán 2 Mô tả bài toán Hãy tưởng tượng rằng chúng ta phải tìm một mối liên kết giữa x và y trong một không gian các điểm dữ liệu, chúng có đầu ra là các điểm màu đỏ và các điểm màu đen Trong trường hợp này chúng ta có thể đơn giản tìm ra một đường để chia đôi miền dữ liệu ra, cụ thể ở đây là một đường thằng 8 Trong trường hợp các điểm dữ liệu phân bố như sau đây thì không thể dùng một đường thẳng được: Lúc này thì ta dùng một đường cong để chia miền dữ liệu: Còn trong trường hợp các điểm dữ liệu phân bố có sự đan xen vào nhau (nghĩa là không thể dùng một đường thằng, và cũng không thể dùng một đường cong có độ uốn thấp) thì ta làm thế nào, như trong ví dụ sau: 9 Có hai câu trả lời được đặt ra, một là dùng một đường cong với độ uốn cao để không phải bỏ sót bất cứ điểm dữ liệu nào: Câu trả lời thứ hai là dùng một đường thẳng để chia miền và bỏ qua sự quan tâm đến một số điểm dữ liệu không nằm trong đúng miền của nó: Theo cách này thì xảy ra lỗi ở một số điểm dữ liệu, song nó đã chia không gian dữ liệu một cách tương đối chấp nhận được Có rất nhiều cách để làm điều này, tức là có rất nhiều thuật toán cho việc mô tả và giải quyết bài toán học, song ở đây ta sẽ giới thiệu một số các thuật toán, đó là thuật toán “người láng giềng gần nhất”, cây quyết định, mạng nơ ron Trước hết là thuật toán “người láng giềng gần nhất” Thuật toán rất đơn giản, đó là tìm một điểm mà gần nhất với điểm câu hỏi của ta 10 Trong không gian điểm như trên, điểm gần nhất với điểm câu hỏi của ta là một điểm màu đỏ Vậy, điểm mà ta cần tìm sẽ có màu đỏ Thứ hai là cây quyết định Đây là một phương pháp rất được ưa chuộng Trong cây quyết định, mỗi nút là một câu hỏi và mỗi cung là một câu trả lời Bằng việc sử dụng cây quyết định, ta có thể tìm ra được một đường dẫn từ nút gốc đến các nút lá, tức là lần lượt hỏi những câu hỏi rồi trả lời chúng theo như đầu vào mà bài toán cung cấp, khi đến nút lá, ta sẽ có câu trả lời muốn tìm, ở đây là tìm ra người hàng xóm sẽ đi làm bằng xe hơi hay đi bộ Thứ ba, ta sẽ nói về mạng nơ ron Hẳn là đã nhiều người trong chúng ta đã từng nghe ít nhất một lần về mạng nơ ron, đó là một dạng biểu diễn các giả thuyết phức tạp trong một không gian đa chiều liên tục Mạng nơ ron là một tổ hợp gồm nhiều đơn vị tính toán nhỏ kết hợp lại với nhau Nó được gọi là mạng nơ ron vì đơn giản nó cho ta một hình ảnh tương đối gần giống với hệ thống thần kinh nằm trong bộ não dù không chính xác lắm Ta hãy xem hình ảnh chung sau đây: 11 Trong một mạng nơ ron, các đơn vị tính toán thực hiện những công việc tính toán đơn giản để mà kết nối các giá trị của chúng với các trọng số của các cung Quá trình học sẽ là làm sao để điều chỉnh các trọng số của các cung, từ đó xử lí lỗi trong mạng nơ ron Cho đến tận ngày nay, các phương pháp máy học đã khá thành công và đang trở thành lĩnh vực được nhiều người nghiên cứu cũng như đã đạt được một số thành tựu trong nhiều ngành nghề như: - Đánh giá mức nợ tín dụng - Tìm ra các chi tiết gian dối trong tín dụng - Thu thập, phân nhóm các hình ảnh phục vụ nghiên cứu thiên văn - … Trong phần sau, ta sẽ nghiên cứu về bài toán quan sát và các thuật toán cụ thể trong việc giải quyết bài toán này CHƯƠNG II NGHIÊN CỨU VỀ BÀI TOÁN QUAN SÁT I KHÁI QUÁT VỀ BÀI TOÁN QUAN SÁT 1 Cấu trúc bài toán Để có thể nghiên cứu và phân tích bài toán quan sát, trước hết ta hãy sơ lược về cấu trúc của bài toán này Một bài toán quan sát được cấu thành từ một số thành phần Thành phần thứ nhất là dữ liệu (hay còn được gọi là tập huấn luyện) Dữ liệu, tức là D, là một tập hợp bao gồm m cặp đầu vào – đầu ra Chúng ta sẽ viết thành tố thứ i của tập dữ liệu là x i, yi Trong ngữ cảnh của bài toán chạy đua, một xi sẽ là một véc-tơ của dữ liệu, mỗi một trong số chúng tương ứng với một đặc điểm của dữ liệu, và một yi là một giá trị đầu ra (đi hoặc lái xe) Ta có dữ liệu được đưa ra: { D = x 1 , y 1 , x 2 , y 2 , , x m , y m } output Mỗi xi là một véc-tơ của tập n giá trị Chúng ta sẽ viết xij cho đặc điểm thứ j của cặp đầu vào – đầu ra thứ i Chúng ta cũng sẽ quan tâm đến nhiều loại đặc điểm khác nhau 12 Thông thường, chúng ta nghĩ rằng các đặc điểm này chỉ có thể mang giá trị 0 hoặc 1 Nhưng trên thực tế, nhiều khi chúng lại có thể mang giá trị từ một tập rời rạc như “tuyết”, “mưa”, “không” chẳng hạn Thậm chí trong nhiều trường hợp chúng nhận giá trị thực, như nhiệt độ, độ ẩm, cân nặng hay chiều cao Tương tự như thế, giá trị đầu ra, yi, có thể là kiểu đúng/sai (hay boolean như trong nhiều ngôn ngữ lập trình), phần tử của một tập rời rạc hoặc một giá trị thực Khi yi là kiểu boolean, hoặc một phần tử của một tập rời rạc, thì ta gọi là bài toán phân lớp Khi nó nhận giá trị thực thì gọi là bài toán hồi quy Nên chú ý rằng, mục tiêu chính của bài toán là tìm ra một giả thuyết, gọi là h, để có thể mô tả tốt được mối quan hệ giữa các giá trị đầu vào và các giá trị đầu ra Ta gọi H là tập hợp các giả thuyết có thể có để mà ta lựa chọn từ việc sử dụng thuật toán học Để mô tả điều này, ta có thể sử dụng một cây quyết định với các nút, hoặc một đường trong không gian hai chiều, hoặc một mạng nơ ron Bây giờ chúng ta có thể gói gọn bài toán như sau: ta có một hợp dữ liệu và một tập hợp các giả thuyết có thể Yêu cầu bài toán của chúng ta là chọn ra được một giả thuyết “tốt nhất” Trong phần sau, chúng ta cần phải tìm hiểu nghĩa thật sự của từ “tốt nhất” 2 Khái niệm về sự “tốt nhất” Có hai điều kiện rất quan trọng về sự tốt nhất Đó là: - Giả thuyết phải làm tốt việc mô tả dữ liệu - Giả thuyết không nên quá phức tạp Nói về việc mô tả dữ liệu, ý tưởng chung là với một giả thuyết h thì tại mọi điểm i thì phải thỏa mãn h(xi) = yi Tuy nhiên trên thực tế nghiên cứu số liệu thì không phải lúc nào thực hiện được điều này mà đôi khi chỉ có thể thỏa mãn ở phần lớn dữ liệu ở một mức độ trung bình nào đấy Rõ ràng ở đây sẽ xảy ra các trường mà đẳng thức trên không thỏa, lúc đó gọi ra lỗi Để đo mức độ lỗi của một giả thuyết thì người ta dùng dạng E(h,D), chẳng hạn bằng số điểm không thỏa mãn đẳng thức trên Nói đến yếu tố thứ hai, tức là độ phức tạp của giả thuyết, người ta có thể dùng một cây quyết định với số nút của nó, hay một đường trong mặt phẳng tọa độ với độ phức tạp được biểu thị bằng độ uốn của nó Ở đây ta kí hiệu độ phức tạp của giả thuyết h trong tập H là C(h) Nhưng tại sao chúng ta lại quan tâm đến độ phức tạp này? Chúng ta thường có cảm giác những giả thuyết ở mức trung bình và đơn giản thì là tốt nhất Như vậy, với một tập dữ liệu D, một lớp giả thuyết H, một hàm đo độ tốt (hay mức lỗi) của giả thuyết E và một thước đo độ phức tạp C thì công việc chính của chúng ta sẽ là làm sao để tối thiểu được giá trị của biểu thức E(h,D) + α*C(h), trong đó α là hệ số mà ta có thể thay đổi trong quá trình nghiên cứu các giả thuyết Dĩ nhiên là một cách tổng quát thì ta khó lòng làm điều này một cách hiệu quả, song chúng ta sẽ phải cố gắng để đạt được mức xấp xỉ tốt Thế thì làm thế nào để ta có thể tối thiểu hóa được giá trị của biểu thức E(h,D) + α*C(h) Một số trường hợp ta có thể tìm ra h tối ưu một cách trực tiếp hay tìm kiếm từ việc nghiên cứu một mạng nơ ron 13 3 Nhắc lại về các phép toán logic Trong phần này, để làm tiền đề cho việc nghiên cứu bài toán quan sát thì chúng ta sẽ sơ lược lại những nét chính về các phép toán logic, tức là các phép toán liên quan đến các giá trị nhị phân Thông thường chúng ta sử dụng hai kí tự cho việc biễu diễn hai giá trị đúng và sai là 1 và 0 Khi đó: - Phép toán “và” hay “hội” thể hiện giá trị đúng khi cả hai cùng đúng - Phép toán “hoặc” hay “tuyển” thể hiện giá trị sai khi cả hai cùng sai - Dấu trừ - ở phía trước kí tự thể hiện giá trị ngược lại II NGHIÊN CỨU BÀI TOÁN QUAN SÁT 1 Mở đầu Chúng ta hãy cùng nhau bắt đầu với một bài toán đơn giản có các đặc điểm trong đầu vào là kiểu boolean và đầu ra cũng sẽ là kiểu boolean Lớp giả thuyết của chúng ta sẽ phải liên kết các đặc điểm đầu vào trong một biểu thức logic để có thể cho ra các đầu ra đúng như dữ liệu đã cho Ở đây chúng ta có một tập dữ liệu gồm 4 đặc điểm f1, f2, f3, và f4 và một cột dữ liệu y tương ứng với các bộ giá trị x1, x2, x3, x4 được cho dưới dạng bảng như sau: f1 0 1 1 0 1 0 f2 1 0 1 0 0 1 f3 1 1 1 1 0 1 f4 0 1 0 1 1 1 y 0 1 0 1 0 1 Chúng ta thử nói về giả thuyết f1^ f3, nó trả về giá trị của biểu thức này trong ví dụ 2 và 3 là 1 nhưng đối với các bộ dữ liệu còn lại là 0 Dễ thấy với biểu thức f1^ f3 thì chỉ có ba bộ dữ liệu là thỏa, còn ba bộ dữ liệu kia thì không f1 0 1 1 0 1 0 f2 1 0 1 0 0 1 f3 1 1 1 1 0 1 f4 0 1 0 1 1 1 y 0 1 0 1 0 1 Như vậy thì mức độ lỗi của giả thuyết f1^ f3 trong ví dụ này là 3 Thêm nữa, do có hai đặc điểm được đề cập trong biểu thức là f1 và f3 nên giả thuyết này có độ phức tạp là 2 14 Không mấy khó khăn khi chúng nghiên cứu ví dụ này vì khối lượng các bộ dữ liệu thì ít mà số lượng các đặc điểm cũng không nhiều, do đó ta có thể tiến hành một cách thủ công Tuy nhiên với khối lượng bộ dữ liệu lớn, số đặc điểm nhiều thì rõ ràng việc làm này dường như là không thể Vậy thì ta không thể trông chờ vào các kiến thức lớn mà ta đã được học cho tới bây giờ Thay vào đó, ta hãy “tham lam” một chút Nghĩa là ban đầu, ta cứ cho là giả thuyết là đúng, những lỗi được gọi là các ví dụ phủ định Ở mỗi bước thì ta sẽ cố gắng thêm vào biểu thức logic các đặc điểm sao cho ngày càng loại ra được nhiều ví dụ phủ định (mà không khai trừ ví dụ khẳng định) Ta sẽ nghiên cứu rõ quá trình này hơn trong phần sau 2 Ví dụ cụ thể với thuật toán thứ nhất Ta sẽ lấy lại dữ liệu của phần 1, tức là bảng sau cho phần này: f1 0 1 1 0 1 0 f2 1 0 1 0 0 1 f3 1 1 1 1 0 1 f4 0 1 0 1 1 1 y 0 1 0 1 0 1 Sau đây là thuật toán thứ nhất (thuật toán CNF - conjuntive normal form – hình thức liên kết) để giải quyết bài toán tìm giả thuyết tốt nhất cho một bộ dữ liệu, được viết dưới dạng mã giả: Begin N = các ví dụ phủ định trong tập D h = True Loop until N rỗng For mỗi đặc điểm j không có giá trị 0 trong các ví dụ khằng định nj := số lượng các ví dụ trong N mà fj = 0 j* := j sao cho nj là lớn nhất h := h ^ fj* N := N – các ví dụ trong N mà có fj = 0 If không có đặc điểm nào được tìm thấy, trả về fail End; Trong suốt vòng lặp trên, ta sẽ quan tâm đến các đặc điểm mà nó không loại ra bất kì một ví dụ khẳng định nào Sau đó chúng ta sẽ lấy những đặc điểm này nối vào trong h, đồng thời loại các ví dụ phủ định đã bị khai trừ này ra khỏi N Để hiểu rõ hơn ta hãy cùng nhau xem xét kĩ thuật toán trên được ứng dụng như thế nào trong bảng dữ liệu đã cho 15 - - Đầu tiên chúng ta thấy trong bảng dữ liệu có 3 ví dụ phủ định là x1, x3, x5 Vậy ta có N={ x1, x3, x5}, và bắt đầu bằng h=True Bây giờ chúng ta quan tâm đến các ví dụ mà không loại ra bất kì ví dụ khẳng định nào, có nghĩa là tại các bộ có y=1 thì các đặc điểm này cho giá trị là 1 Đó là đặc điểm f3 và f4 Trong cột đặc điểm f3 có một giá trị 0 và trong cột đặc điểm f4 có hai giá trị 0 Khi đó, f3 loại ra một ví dụ phủ định, còn f4 loại ra hai ví dụ phủ định nên n3=1 và n4=2 n4 lớn nhất trong hai số n3 và n4 nên ta chọn n4 vào h, đồng thời loại x1 và x3 ra khỏi N N={x5}, h= f4 Vì N vẫn còn khác rỗng nên ta tiếp tục lặp thêm một lần nữa, lần này không xét x1 và x3 đã bị loại f1 0 1 1 0 1 0 f2 1 0 1 0 0 1 f3 1 1 1 1 0 1 f4 0 1 0 1 1 1 y 0 1 0 1 0 1 Ta lại tìm các đặc điểm mà không loại ra bất kì ví dụ khẳng định nào, đó lại tiếp tục là f3 và f4 Nhưng lúc này giá trị của các n đã thay đổi, tức là n3=1 và n4=0 Lúc này ta lại chọn n3 vì nó lớn hơn - Bây giờ f3 đã loại luôn ví dụ phủ định cuối cùng là x5, tức là N={}, và h=f4^f3 Thuật toán kết thúc f1 f2 f3 f4 y 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1 1 1 3 Ví dụ cụ thể với thuật toán thứ hai Bây giờ nếu như dữ liệu chỉ thay đổi một giá trị y từ 0 thành 1 thì vấn đề sẽ ra sao? Nếu chúng ta áp dụng thuật toán vừa rồi thì sẽ xuất hiện tình huống là tập N vẫn còn phần tử trong khi không còn đặc điểm nào mà không loại ra ví dụ khẳng định Khi đó chúng ta bị mắc kẹt vào vòng lặp này f1 0 1 1 16 f2 1 0 1 f3 1 1 1 f4 0 1 0 y 0 1 1 0 1 0 0 0 1 1 0 1 1 1 1 1 0 1 Để giải quyết vấn đề này, chúng ta có thể nghĩ rằng các ví dụ khẳng định có thể được chia vào các khu vực theo cách coi các phép liên kết hội chỉ là một phần của một biểu thức logic Theo ý nghĩ này ta có hình thức DNF (disjuntive normal form – hình thức phân chia phép liên kết hội), tức là có dạng giống như: (A và B và C) hoặc (D và E) hay ( A ∧ B ∧ C ) ∨ ( D ∧ E ) Với bảng dữ liệu trên thì ta xem xét biểu thức ( f 3 ∧ f 4 ) ∨ ( f1 ∧ f 2 ) Việc tìm kiếm biểu thức này trong một không gian dữ liệu lớn hơn sẽ phức tạp hơn rất nhiều, do đó ta sẽ đề ra một thuật toán mới để giải quyết bài toán trên Ta gọi một biểu thức liên kết là “phủ” lên một ví dụ nếu mọi đặc điểm trong biểu thức liên kết đó thì có giá trị true trong ví dụ Đây là thuật toán thứ hai được viết bằng mã giả: Begin P = tập hợp tất cả các ví dụ khẳng định h = False Loop until P rỗng r = True N = tập hợp tất cả các ví dụ phủ định Loop until N rỗng If tất cả các đặc điểm đều nằm trong r thì trả về fail Else, chọn một đặc điểm fj thêm vào r r = r ^ fj N = N – các ví dụ trong N mà fj = 0 h := h ∨ r Phủ := các ví dụ trong P mà phủ r If tập Phủ rỗng thì trả về fail Else P := P – Phủ End; Trước khi đi vào áp dụng thuật toán trên thì ta phải xem xét một chút về giá trị Heuristic của việc chọn ra đặc điểm nào sẽ là đặc điểm tiếp theo ta cho vào r Công thức có dạng: v j = n +j max(n −j ,0.001) Trong đó: n +j là số ví dụ khẳng định chưa hề bị phủ trước đó, bây giờ bị phủ bởi r^f j n −j là số ví dụ phủ định chưa hề bị loại ra, bây giờ bị phủ bởi r^fj 17 Bây giờ ta sẽ áp dụng thuật toán trên cho ví dụ mới mà ta vừa nêu - Ban đầu, ta có h=false và tập các ví dụ đúng là P= {x2, x3, x4, x6} Hãy nhớ rằng khi chúng ta tính giá trị vj thì ta chỉ quan tâm đến các ví dụ khẳng định và phủ dịnh chưa bị phủ mà thôi - Ta có: r= True, N= { x1, x5} Tính các giá trị v1=2/1, v2=2/1, v3=3/1, v4=4/1 - Ta chọn f3 vì nó có vj lớn nhất r=f3, N={ x1} Lại tiếp tục tính các giá trị v1=2/0, v2=2/1, v4=3/0 - Lúc này r=f3^f4, N={} Thêm r vào h - Ta có: h= f3^f4, P={ x3} Quay lại r= True, N= { x1, x5} Các giá trị vj lần lượt là v1=1/1, v2=1/1, v3=1/1, v4=0/1 - Khi này, r=f1, N={ x1} Tiếp tục v2=1/0, v3=1/0, v4=0/1 thì r= f1^f2, N={} Cuối cùng thì P={} và h= ( f 3 ∧ f 4 ) ∨ ( f1 ∧ f 2 ) Thuật toán kết thúc Như vậy, trong chương vừa qua, ta đã hiểu được về cấu trúc bài toán quan sát cũng như cách giải quyết chúng Ở chương tiếp theo, ta sẽ nói về việc thuật toán trên sẽ hoạt động như thế nào, xử lí ra sao với số liệu trong thế giới thực CHƯƠNG III ĐÁNH GIÁ HOẠT ĐỘNG CỦA CÁC THUẬT TOÁN TRONG KHÔNG GIAN DỮ LIỆU THỰC TẾ I ĐẶT VẤN ĐỀ Trong các phần trước, ta đã nói về các thuật toán và việc tìm ra các giả thuyết dựa trên các thuật toán đó Khi một giả thuyết được tìm ra, hiển nhiên chúng ta sẽ rất muốn biết nó sẽ hoạt động như thế nào trong thế giới thực Đương nhiên chúng ta không thể đem giả thuyết đó để đi thử nghiệm ở tất cả mọi trường hợp trong thực tế mà chỉ có thể thử nghiệm trong môi trường nơi mà các dữ liệu được sản sinh ra dùng để huấn luyện cho bài toán học mà ta xét Chỉ có một cách duy nhất để biết giả thuyết đó tốt như thế nào, ta sẽ phải dùng một tập dữ liệu được gọi là “tập kiểm chứng” hay “tập kiểm định” Dữ liệu trong tập kiểm chứng phải không được sử dụng trong việc huấn luyện Khi kiểm thử giả thuyết trên tập kiểm chứng thì ta sẽ tính được phần trăm mức độ lỗi của nó, nên tập này còn được gọi là “tập kiểm tra lỗi” Theo thông thường, chúng ta không thể nói một giả thuyết nào đấy là tốt hay xấu nếu chỉ kiểm định trên một tập dữ liệu đơn thuần Nếu có nhiều dữ liệu,ta có thể chia chúng ra thành các nhóm, dùng một nửa trong số chúng để huấn luyện giả thuyết mới và dùng nửa còn lại để đánh giá giả thuyết đó Song không phải lúc nào ta cũng có thể thu thập đủ dữ liệu để làm điều này Chính vì lẽ đó, ta sẽ tìm hiểu một số giải pháp nhằm đánh giá chất lượng của giả thuyết mà ta vừa tìm ra II ĐÁNH GIÁ HOẠT ĐỘNG CỦA CÁC THUẬT TOÁN ĐÃ NÊU TRONG KHÔNG GIAN DỮ LIỆU THỰC TẾ 1 Một số giải pháp cho việc đánh giá thuật toán Có một giải pháp được gọi là kiểm chứng chéo Chúng ta sẽ chia dữ liệu ra thành một số phần, chẳng hạn ở đây ta dùng 10 phần, trong đó, 9 phần đầu dùng để huấn luyện giả thuyết, còn phần còn lại để đánh giá thuật toán Mở rộng ra, với một tập dữ liệu, ta 18 sẽ chia nó ra thành n phần rồi dùng n-1 phần để huấn luyện giả thuyết, sau đó lấy phần thứ n để kiểm định thuật toán có tốt không Ngoài ra, người ta cũng có thể sử dụng một đồ thị đường cong để kiểm định thuật toán Trục x thể hiện lượng dữ liệu, còn trục y thể hiện số lỗi trong tổng số thể tập kiểm định Ví dụ trong miền 1000 đặc điểm, đường cong sau đây là kết quả kiểm định giả thuyết f 344 ∧ f 991 ∨ f103 ∧ f 775 : Một điều đáng ngạc nhiên là theo cách này ta có thể chỉ cần một phần rất nhỏ của toàn bộ không gian để tìm ra giả thiết chính xác Thế còn đối với hàm mục tiêu sau thì sao, nó khá phức tạp: ( f 1 ∧ f 2 ∧ f 3 ∧ f 4 ) ∨ ( f 5 ∧ f 6 ∧ f 7 ∧ f 8 ) ∨ ( f 9 ∧ f10 ∧ f11 ∧ f12 ) ∨ ( f 13 ∧ f 14 ∧ f 15 ∧ f 16 ) ∨ ( f17 ∧ f18 ∧ f19 ∧ f 20 ) ∨ ( f 21 ∧ f 22 ∧ f 23 ∧ f 24 ) Khi đó ta sẽ có đồ thị sau: Khi chúng ta chỉ có một ít dữ liệu thì sẽ có nhiều hàm đúng với dữ liệu đó, song làm thế nào thuật toán của ta có thể lựa chọn được? Nó cố gắng chọn một câu trả lời đơn giản, khi đó ta gọi là thuật toán “bias” – thiên lệch về hướng đơn giản Nếu có quá nhiều giả thuyết phức tạp mà chúng lại đồng ý với dữ liệu thì buộc chúng ta phải có một số thông tin cũng như kiến thức về miền của dữ liệu đó 2 Cải tiến thuật toán DNF Trong lĩnh vực máy học có một định lý thường được nhắc đến là định lý “No Free Luch” với nội dung là “bất cứ giả thuyết nào đồng ý với dữ liệu của bạn thì cũng tốt với các dữ liệu khác” Vấn đề sẽ khá phức tạp nếu dữ liệu của chúng ta có vấn đề, mà trong thuật ngữ chuyên ngành gọi là “noisy data”, tức là biến y gần như độc lập với tất 19 cả các biến x dẫn đến tình trạng gây ra nhiều quyết định khác nhau trong cùng một ngữ cảnh Khi đó chúng ta có thể phải chấp nhận việc tồn tại các lỗi trong tập huấn luyện, và làm việc với thuật toán gần DNF, nghĩa là: - Không đòi hỏi giả thuyết phải phủ lên tất cả các ví dụ - Không đòi hỏi mỗi luật phải loại bỏ tất cả các ví dụ phủ định Từ đó, ta có sự cải tiến, đó là thuật toán DNF cho bài toán học với dữ liệu có tính “noisy” Sau đây là mã giả của thuật toán này: P := tập hợp các ví dụ khẳng định h := False np := epsilon * số lượng các ví dụ trong P nn := epsilon * số lượng các ví dụ trong N Loop until P có ít hơn np phần tử r = True N = tập hợp các ví dụ phủ định Repeat until N có ít hơn nn phần tử Chọn một đặc điểm fj cho vào r r := r ^ fj N := N – các ví dụ trong N mà fj = 0 h := h ^ r P := P – các phần tử trong P mà được phủ bởi r Ngoài ra, chúng ta cũng có thể thêm một số điều kiện để dừng cả hai vòng lặp như: P := tập hợp các ví dụ khẳng định h := False np := epsilon * số lượng các ví dụ trong P nn := epsilon * số lượng các ví dụ trong N Loop until P có ít hơn np phần tử hoặc không thể tiếp tục r = True N = tập hợp các ví dụ phủ định Repeat until N có ít hơn nn phần tử hoặc không thể tiếp tục Chọn một đặc điểm fj cho vào r r := r ^ fj N := N – các ví dụ trong N mà fj = 0 h := h ^ r P := P – các phần tử trong P mà được phủ bởi r Tức là, nếu không có đặc điểm nào có thể được thêm vào để loại bớt các phần tử trong N thì vòng lặp trong phải dừng Nếu vòng lặp trong không thể tìm ra thêm luật để loại bỏ bớt các phần tử trong P thì vòng lặp ngoài phải dừng 20 Vấn đề là trong thuật toán mới này xuất hiện biến mới là epsilon, cho ta biết về lỗi của dữ liệu Nếu epsilon càng lớn thì giả thuyết càng đơn giản và càng có mức lỗi nhiều hơn Nếu epsilon nhỏ và dữ liệu bị “noisy” thì thuật toán của chúng ta có thể bị sai khi tìm ra giả thuyết chấp nhận được Hãy xem đồ thị sau cho ta thấy mối quan hệ giữa mức độ lỗi dữ liệu và giá trị của epsilon, với 200 đầu vào và hàm mục tiêu là f 22 ∧ f 55 ∨ f 99 ∧ f 34 : Cách biễu diễn được coi là tốt nhất là epsilon nhận giá trị từ 0 đến 1 - Khi epsilon gần 0, mức độ lỗi lớn, được gọi là “high variance”, tức là nếu ta dùng một tập dữ liệu “noisy” khác với cùng hàm mục tiêu như trên thì câu trả lời ta nhận được sẽ rất khác - Khi epsilon bị tăng lên cao đến gần 1, việc xây dựng giả thuyết lại trở nên vô cùng phức tạp, gần như không thể tìm ra câu trả lời đúng, trường hợp này gọi là “high bias” Với đồ thị về độ phức tạp của giả thuyết cũng cho ta hình dung về sự ảnh hưởng của epsilon đến bài toán: Sự ảnh hưởng đó như sau: 21 - Khi epsilon = 0 thì có nghĩa dữ liệu không có lỗi, song quá phức tạp để tìm câu trả lời - Khi epsilon tăng dần đến 1 thì độ phức tạp giảm nhanh đến 1 Vấn đề này gọi là bài toán thỏa hiệp bias/variance Sau đây là một ví dụ về dữ liệu “noisy” Nếu ta dùng một đường thẳng để chia miền thì công việc sẽ đơn giản nhưng tồn tại nhiều lỗi: Còn nếu ta dùng một đường cong có độ uốn mạnh, ta sẽ giảm được nhiều lỗi song lại phức tạp Bây giờ ta sẽ thêm nhiều điểm hơn vào không gian trên Nếu dùng một đường thẳng như cũ thì ta sẽ vẫn có được sự phân chia miền khá tốt như sau: Trong khi đó nếu dùng một đường cong, ta lại phải thay đổi chúng đi rất nhiều: 22 Trường hợp kích thước tập huấn luyện tăng lên thì ta có thể cảm thấy tin tưởng trong việc lựa chọn giả thuyết phức tạp như sau: Một vấn đề được đặt ra là làm thế nào ta chọn được giá trị epsilon phù hợp Khi đó, hãy lấy một số giá trị epsilon rồi cho kiểm chứng chéo để ước tính mức độ lỗi cho từng giá trị rồi chọn ra epsilon có gây mức lỗi thấp nhất Lúc này coi như ta đã tìm ra được giả thuyết tốt nhất có thể 3 Kết luận chung về sự đánh giá thuật toán Vậy thì có phải thuật toán lúc nào cũng tốt cho mọi trường hợp không Có rất nhiều miền dữ liệu trong thực tế có thể được mã hóa, với dạng chính là nhị phân, sau đây là một số ví dụ: - Bầu cử Quốc hội: mỗi ứng viên sẽ có một bản ghi, các đặc điểm sẽ chọn ra các ứng viên thỏa mãn yêu cầu - Các liên kết trong gen: đâu vào là một véc tơ các phần tử lấy từ tập {A,C,G,T}, công việc là tìm ra điểm bắt đầu chuỗi mã, mỗi phần tử ta mã hóa bằng 2 bit (hoặc 4 bit) - Mua sắm: phán đoán xem người mua sắm có mua bia không, dựa trên các sản phẩm anh ta mua trước đó Mỗi việc mua được mã hóa bằng một đặc điểm, đặt là 1 nếu anh ta có mua sản phẩm đó Chúng ta hãy cùng nhau xem xét về bài toán bầu cử Quốc hội Có 15 đặc điểm được đề cập để chạy thuật toán DNF cho 232 bản ghỉ, ứng với 232 ứng viên Ta có đồ thị về mức độ lỗi với việc lựa chọn các giá trị epsilon: 23 Đây là điểm thấp nhất trên đồ thị đã cho, lúc này mức lỗi ít nhất, song nó rất phức tạp, thể hiện ở việc hàm mục tiêu chứa rất nhiều đặc điểm: Còn đây là vị trí của điểm mà tại đó hàm mục tiêu lại khá đơn giản: Kết luận lại một cách ngắn gọn thì chúng ta cần phải cân nhắc và nghiên cứu kĩ để có thể chọn được giá trị phù hợp của epsilon, từ đó đạt được giả thuyết tốt từ thuật toán đã nêu 24 ... LỜI GIỚI THIỆU (Trong có nội dung giới thiệu cơng việc thành viên) DANH MỤC CÁC BẢNG (Đánh tự động) DANH MỤC CÁC HÌNH (Đánh tự động) CHƯƠNG I TỔNG QUAN VỀ HỆ HỌC I KHÁI NIỆM VỀ HỌC Đặt vấn đề. .. màu sắc,…), phải phân chia chúng thành số nhóm Học trau dồi Một toán khác quen thuộc với phần lớn học trau dồi, hay học kĩ Trong tốn học trau dồi có đơi phần khác so với tốn quan sát khơng nói... dùng tập liệu gọi ? ?tập kiểm chứng” hay ? ?tập kiểm định” Dữ liệu tập kiểm chứng phải không sử dụng việc huấn luyện Khi kiểm thử giả thuyết tập kiểm chứng ta tính phần trăm mức độ lỗi nó, nên tập

Ngày đăng: 06/12/2015, 03:05

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan