machine learning co ban

43 190 4
machine learning co ban

Đ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

Table of Contents Lời tựa 1.1 Machine learning là gì? 1.2 Supervised Learning 1.3 Các khái niệm cơ bản 1.3.1 Hai góc nhìn về supervised learning 1.3.2 Objective function 1.3.3 Overfitting 1.3.4 Regularized Loss Minimization 1.3.5 Tinh chỉnh các hyperparameter 1.3.6 Thuật toán supervised learning tổng quát 1.3.7 Loss function 1.3.8 Deep Learning 1.4 Linear models 1.4.1 Biểu diễn từ (word representation) 1.4.2 Lời tựa Lời tựa Xin chào, mình là Nguyễn Xn Khánh, một người đang học và nghiên cứu về machine learning Lĩnh vực mình chun sâu cho đến bây giờ là natural language processing (gọi tắt là NLP), tức là làm cho máy tính có khả năng hiểu được ngơn ngữ của con người Mình khơng phải là một chun gia nghiên cứu, kinh nghiệm còn khá non nếu so với các giáo sư và kỹ sư đầu ngành nhưng mình rất muốn đem bộ mơn này về giới thiệu với mọi người, nhất là các bạn còn đang loay hoay tìm câu trả lời cho câu hỏi: học Tin học sau này có thể làm được gì? Cuốn sách này được viết nhằm đưa ra một trong rất nhiều câu trả lời cho câu hỏi trên Nội dung chủ yếu giới thiệu về một lĩnh vực thu hút rất nhiều sự chú ý trong vài năm gần đây, machine learning Sách được đặt tên là "Machine Learning: mì, súp và cơng thức nấu" với ý tưởng là nếu người đọc hiểu được những thành tố cơ bản của machine learning và cách phối hợp giữa chúng thì sẽ sáng tạo ra rất nhiều "món ngon" Mục đích chính của sách là nhằm giúp người đọc có đọc nền tảng học thuật vững chắc trước khi đi sâu hơn vào nghiên cứu và sáng chế Ngày 20/7/2016 Machine learning là gì? Machine learning là gì? Machine learning gây nên cơn sốt cơng nghệ trên tồn thế giới trong vài năm nay Trong giới học thuật, mỗi năm có hàng ngàn bài báo khoa học về đề tài này Trong giới cơng nghiệp, từ các cơng ty lớn như Google, Facebook, Microsoft đến các cơng ty khởi nghiệp đều đầu tư vào machine learning Hàng loạt các ứng dụng sử dụng machine learning ra đời trên mọi linh vực của cuộc sống, từ khoa học máy tính đến những ngành ít liên quan hơn như vật lý, hóa học, y học, chính trị AlphaGo, cỗ máy đánh cờ vây với khả năng tính tốn trong một khơng gian có số lượng phần tử còn nhiều hơn số lượng hạt trong vũ trụ, tối ưu hơn bất kì đại kì thủ nào, là một trong rất nhiều ví dụ hùng hồn cho sự vượt trội của machine learning so với các phương pháp cổ điển Vậy thực chất, machine learning là gì? Để giới thiệu về machine learning, mình xin dựa vào mối quan hệ của nó với ba khái niệm sau: Machine learning và trí tuệ nhân tạo (Artificial Intelligence hay AI) Machine learning và Big Data Machine learning và dự đốn tương lai Trí tuệ nhân tạo, AI, một cụm từ vừa gần gũi vừa xa lạ đối với chúng ta Gần gũi bởi vì thế giới đang phát sốt với những cơng nghệ được dán nhãn AI Xa lạ bởi vì một AI thực thụ vẫn còn nằm ngồi tầm với của chúng ta Nói đến AI, hẳn mỗi người sẽ liên tưởng đến một hình ảnh khác nhau Vài thập niên gần đây có một sự thay đổi về diện mạo của AI trong các bộ phim quốc tế Trước đây, các nhà sản xuất phim thường xun đưa hình ảnh robot vào phim (như Terminator), nhằm gieo vào đầu người xem suy nghĩ rằng trí tuệ nhân tạo là một phương thức nhân bản con người bằng máy móc Tuy nhiên, trong những bộ phim gần hơn về đề tài này, ví dụ như Transcendence do Johny Depp vào vai chính, ta khơng thấy hình ảnh của một con robot nào cả Thay vào đó là một bộ não điện tốn khổng lồ chỉ huy hàng vạn con Nanobot, được gọi là Singularity Tất nhiên cả hai hình ảnh đều là hư cấu và giả tưởng, nhưng sự thay đổi như vậy cũng một phần nào phản ánh sự thay đổi ý niệm của con người về AI AI bây giờ được xem như vơ hình vơ dạng, hay nói cách khác có thể mang bất cứ hình dạng nào Vì nói về AI là nói về một bộ não, chứ khơng phải nói về một cơ thể, là software chứ khơng phải là hardware Trong giới hàn lâm, theo hiểu biết chung, AI là một ngành khoa học được sinh ra với mục đích làm cho máy tính có được trí thơng minh Mục tiêu này vẫn khá mơ hồ vì khơng phải ai cũng đồng ý với một định nghĩa thống nhất về trí thơng minh Các nhà khoa học phải định nghĩa một số mục tiêu cụ thể hơn, một trong số đó là việc làm cho máy tính lừa được Turing Machine learning là gì? Test Turing Test được tạo ra bởi Alan Turing (1912-1954), người được xem là cha đẻ của ngành khoa học máy tính hiện đại, nhằm phân biệt xem người đối diện có phải là người hay khơng AI thể hiện một mục tiêu của con người Machine learning là một phương tiện được kỳ vọng sẽ giúp con người đạt được mục tiêu đó Và thực tế thì machine learning đã mang nhân loại đi rất xa trên qng đường chinh phục AI Nhưng vẫn còn một qng đường xa hơn rất nhiều cần phải đi Machine learning và AI có mối quan hệ chặt chẽ với nhau nhưng khơng hẳn là trùng khớp vì một bên là mục tiêu (AI), một bên là phương tiện (machine learning) Chinh phục AI mặc dù vẫn là mục đích tối thượng của machine learning, nhưng hiện tại machine learning tập trung vào những mục tiêu ngắn hạn hơn như: Làm cho máy tính có những khả năng nhận thức cơ bản của con người như nghe, nhìn, hiểu được ngơn ngữ, giải tốn, lập trình, … Hỗ trợ con người trong việc xử lý một khối lượng thơng tin khổng lồ mà chúng ta phải đối mặt hàng ngày, hay còn gọi là Big Data Big Data thực chất khơng phải là một ngành khoa học chính thống Đó là một cụm từ dân gian và được giới truyền thơng tung hơ để ám chỉ thời kì bùng nổ của dữ liệu hiện nay Nó cũng khơng khác gì với những cụm từ như "cách mạng cơng nghiệp", "kỉ ngun phần mềm" Big Data là một hệ quả tất yếu của việc mạng Internet ngày càng có nhiều kết nối Với sự ra đời của các mạng xã hội nhưng Facebook, Instagram, Twitter, nhu cầu chia sẻ thơng của con người tăng trưởng một cách chóng mặt Youtube cũng có thể được xem là một mạng xã hội, nơi mọi người chia sẻ video và comment về nội dung của video Để hiểu được quy mơ của Big Data, hãy xem qua những con số sau đây (tính đến thời điểm bài viết): Khoảng 300 giờ video được upload trên youtube trong mỗi phút (theo https://www.youtube.com/yt/press/statistics.html) Hơn 900 triệu người thật sự sử dụng Facebook mỗi ngày, 82.8% trong số đó ở ngồi Mỹ và Canada (theo http://newsroom.fb.com/company-info/) Nhu cầu chia sẻ tăng đi đơi với việc nhu cầu tìm kiếm thơng tin cũng tăng Google phải xử lý 100 tỉ lượt tìm kiếm mỗi tháng, tức là 3,3 tỉ lượt mỗi ngày và 38.000 lượt mỗi giây (theo http://www.internetlivestats.com/google-search-statistics/) Và những con số này đang tăng lên theo từng giây! Bùng nổ thơng tin khơng phải là lý do duy nhất dẫn đến sự ra đời của cụm từ Big Data Nên nhớ rằng Big Data xuất hiện mới từ vài năm gần đây nhưng khối lượng dữ liệu tích tụ kể từ khi mạng Internet xuất hiện vào cuối thế kỉ trước cũng khơng phải là nhỏ Thế nhưng, lúc ấy con người ngồi quanh một đống dữ liệu và khơng biết làm gì với chúng ngồi lưu trữ và sao Machine learning là gì? chép Cho đến một ngày, các nhà khoa học nhận ra rằng trong đống dữ liệu ấy thực ra chứa một khối lượng tri thức khổng lồ Những tri thức ấy có thể giúp cho ta hiểu thêm về con người và xã hội Từ danh sách bộ phim u thích của một cá nhân chúng ta có thể rút ra được sở thích của người đó và giới thiệu những bộ phim người ấy chưa từng xem, nhưng phù hợp với sở thích Từ danh sách tìm kiếm của cộng đồng mạng chúng ta sẽ biết được vấn đề nóng hổi nhất đang được quan tâm và sẽ tập trung đăng tải nhiều tin tức hơn về vấn đề đó Big Data chỉ thực sự bắt đầu từ khi chúng ta hiểu được gía trị của thơng tin ẩn chứa trong dữ liệu, và có đủ tài ngun cũng như cơng nghệ để có thể khai thác chúng trên quy mơ khổng lồ Và khơng có gì ngạc nhiên khi machine learning chính là thành phần mấu chốt của cơng nghệ đó Ở đây ta có một quan hệ hỗ tương giữa machine Learning và Big Data: machine learning phát triển hơn nhờ sự gia tăng của khối lượng dữ liệu của Big Data; ngược lại, gía trị của Big Data phụ thuộc vào khả năng khai thác tri thức từ dữ liệu của machine learning Ngược dòng lịch sử, machine learning đã xuất hiện từ rất lâu trước khi mạng Internet ra đời Một trong những thuật tốn machine learning đầu tiên là thuật tốn perceptron được phát minh ra bởi Frank Rosenblatt vào năm 1957 Đây là một thuật tốn kinh điển dùng để phân loại hai khái niệm Một ví dụ đơn gỉan là phân loại thư rác (tam gíac) và thư bình thường (vng) Chắc các bạn sẽ khó hình dung ra được làm thế nào để làm được điều đó Đối với perceptron, điều này khơng khác gì với việc vẽ một đường thẳng trên mặt phẳng để phân chia hai tập điểm: Những điểm tam giác và vng đại diện cho những email chúng ta đã biết nhãn trước Chúng được dùng để "huấn luyện" (train) perceptron Sau khi vẽ đường thẳng chia hai tập Machine learning là gì? điểm, ta nhận thêm các điểm chưa được dán nhãn, đại diện cho các email cần được phân loại (điểm tròn) Ta dán nhãn của một điểm theo nhãn của các điểm cùng nửa mặt phẳng với điểm đó Sơ lược quy trình phân loại thư được mơ tả sau Trước hết, ta cần một thuật tốn để chuyển email thành những điểm dữ liệu Cơng đoạn này rất rất quan trọng vì nếu chúng ta chọn được biểu diễn phù hợp, cơng việc của perceptron sẽ nhẹ nhàng hơn rất nhiều Tiếp theo, perceptron sẽ đọc tọa độ của từng điểm và sử dụng thơng tin này để cập nhật tham số của đường thẳng cần tìm Các bạn có thể xem qua demo của perceptron (điểm xanh lá cây là điểm perceptron đang xử lý): Vì là một thuật tốn khá đơn giản, có rất nhiều vấn đề có thể nảy sinh với perceptron, ví dụ như điểm cần phân loại nằm ngay trên đường thẳng phân chia Hoặc tệ hơn là với một tập dữ liệu phức tạp hơn, đường thẳng phân chia khơng tồn tại: Machine learning là gì? Lúc này, ta cần các loại đường phân chia "khơng thẳng" Nhưng đó lại là một câu chuyện khác Perceptron là một thuật tốn supervised learning: ta đưa cho máy tính hàng loạt các ví dụ cùng câu trả lời mẫu với hy vọng máy tính sẽ tìm được những đặc điểm cần thiết để đưa ra dự đốn cho những ví dụ khác chưa có câu trả lời trong tương lai Ngồi ra, cũng có những thuật tốn machine learning khơng cần câu trả lời mẫu, được gọi là unsupervised learning Trong trường hợp này, máy tính cố gắng khai thác ra cấu trúc ẩn của một tập dữ liệu mà khơng cần câu trả lời mẫu Một loại machine learning khác được gọi là reinforcement learning Trong dạng này, cũng khơng hề có câu trả lời mẫu, nhưng thay vì đó máy tính nhận được phản hồi cho mỗi hành động Dựa vào phản hồi tích cực hay tiêu cực mà máy tính sẽ điều chỉnh hoạt động cho phù hợp Sau đây là một ví dụ minh họa: Machine learning là gì? Mục tiêu của chiếc xe là leo lên được đỉnh đồi và lấy được ngơi sao Chiếc xe có hai chuyển động tới và lui Bằng cách thử các chuyển động và nhận được phản hồi là độ cao đạt được và thời gian để lấy được ngơi sao, chiếc xe dần trở nên thuần thục hơn trong việc leo đồi lấy Machine learning có mối quan hệ rất mật thiết đối với statistics (thống kê) Machine learning sử dụng các mơ hình thống kê để "ghi nhớ" lại sự phân bố của dữ liệu Tuy nhiên, khơng đơn thuần là ghi nhớ, machine learning phải có khả năng tổng qt hóa những gì đã được nhìn thấy và đưa ra dự đốn cho những trường hợp chưa được nhìn thấy Bạn có thể hình dung một mơ hình machine learning khơng có khả năng tổng qt như một đứa trẻ học vẹt: chỉ trả lời được những câu trả lời mà nó đã học thuộc lòng đáp án Khả năng tổng qt là một khả năng tự nhiên và kì diệu của con người: bạn khơng thể nhìn thấy tất cả các khn mặt người trên thế giới nhưng bạn có thể nhận biết được một thứ có phải là khn mặt người hay khơng với xác suất đúng gần như tuyệt đối Đỉnh cao của machine learning sẽ là mơ phỏng được khả năng tổng qt hóa và suy luận này của con người Như ta đã thấy, nói đến machine learning là nói đến "dự đốn": từ việc dự đốn nhãn phân loại đến dự đốn hành động cần thực hiện trong bước tiếp theo Vậy machine learning có thể dự đốn tương lai hay khơng? Có thể có hoặc có thể khơng: machine learning có thể dự đốn được tương lai, nhưng chỉ khi tương lai có mối liên hệ mật thiết với hiện tại Để kết thúc, mình muốn cùng các bạn xem xét một ví dụ đơn giản sau Giả sử bạn được đưa cho một đồng xu, rồi được u cầu tung đồng xu một số lần Vấn đề đặt ra là: dựa vào những lần tung đồng xu đó, bạn hãy tiên đốn ra kết quả lần tung tiếp theo Chỉ cần dựa vào tỉ lệ sấp/ngửa của những lần tung trước đó, bạn có thể đưa ra một dự đốn khá tốt Nhưng nếu mỗi lần tung, người ta đưa cho bạn một đồng xu khác nhau thì mọi chuyện sẽ hồn tồn khác Các đồng xu khác nhau có xác suất sấp ngửa khác nhau Lúc này việc dự Machine learning là gì? đốn gần như khơng thể vì xác suất sấp ngửa của lần tung sau khơng hề liên quan gì đến lần tung trước Điều tương tự cũng xảy ra với việc dự đốn tương lai bằng machine learning, nếu ta xem như mỗi ngày có một "đồng xu" được tung ra để xem một sự kiện có diễn ra hay khơng Nếu "đồng xu" của ngày mai được chọn một cách tùy ý khơng theo phân bố nào cả thì machine learning sẽ thất bại Rất may là trong nhiều trường hợp điều đó khơng hồn tồn đúng, thế giới hoạt động theo những quy luật nhất định và machine learning có thể nhận ra những quy luật đó Nhưng nói cho cùng, machine learning hồn tồn khơng phải là một bà phủ thủy với quả cầu tiên tri mà cũng giống như chúng ta: phán đốn bằng cách tổng qt hóa những kinh nghiệm, những gì đã được học từ dữ liệu Xem phim The Imitation Game về nhân vật này, nhưng đừng tin hết những gì trong phim ↩ Supervised Learning Chương 1: Supervised Learning Supervised learning là một hướng tiếp cận của machine learning để làm cho máy tính có khả năng "học" Trong hướng tiếp cận này, người ta "huấn luyện" máy tính dựa trên những quan sát có dán nhãn(labeled data) Ta có thể hình dung những quan sát (observation) này như là những câu hỏi, và nhãn (label) của chúng là những câu trả lời Ý tưởng của supervised learning là: bằng việc ghi nhớ và tổng qt hóa một số quy tắc từ một tập câu hỏi có đáp án trước, máy tính sẽ có thể trả lời được những câu hỏi dù chưa từng gặp phải, nhưng có mối liên quan Ví dụ ta dạy máy tính "1 + 1 = 2" và hy vọng nó sẽ học được phép tính cộng x + 1 và trả lời được là "2 + 1 = 3" Supervised learning mơ phỏng việc con người học bằng cách đưa ra dự đốn của mình cho một câu hỏi, sau đó đối chiếu với đáp án Sau đó con người rút ra phương pháp để trả lời đúng khơng chỉ câu hỏi đó, mà cho những câu hỏi có dạng tương tự Trong supervised learning, các quan sát bắt buộc phải được dán nhãn trước Đây chính là một trong những nhược điểm của phương pháp này, bởi vì khơng phải lúc nào việc dán nhãn chính xác cho quan sát cũng dễ dàng Ví dụ như trong dịch thuật (machine translation), từ một câu của ngơn ngữ gốc có thể dịch thành rất nhiều phiên bản khác nhau trong ngơn ngữ cần dịch sang Tuy nhiên, việc quan sát được dán nhãn cũng lại chính là ưu điểm của supervised learning bởi vì một khi đã thu thập được một bộ dữ liệu lớn được dán nhãn chuẩn xác, thì việc huấn luyện trở nên dễ dàng hơn rất nhiều so với khi dữ liệu khơng được dán nhãn Trong chương này, chúng ta sẽ đưa supervised learning về một phương trình tốn học đơn giản, thậm chí có thể giải được bằng kiến thức phổ thơng Tuy nhiên, ta sẽ chỉ ra những điểm bất cập khi sử dụng các phương pháp thơng thường để tìm lời giải và đưa ra một số cách để hạn chế những bất cập đó Tổng hợp những phương pháp này, ta xây dựng được một thuật tốn supervised learning tổng qt 10 Regularized Loss Minimization Model q "mạnh": một model q mạnh là khi nó có khả năng mơ phỏng rất nhiều mối quan hệ phức tạp giữa observation và label (cũng tức là mơ phỏng được rất nhiều dạng hàm số) Ví dụ nếu fw là một đa thức bậc một, nó có thể mơ phỏng tất cả các đa thức bậc một (có dạng y = fw (x) = w1x + w ) Dù có vơ số đa thức bậc một, nhưng mà đây được xem như một model "yếu" bởi vì quan hệ tuyến tính được xem như một quan hệ rất đơn giản Deep neural network được xem là những model mạnh bởi vì chúng mơ phỏng được những quan hệ phi tuyến tính Độ mạnh của model còn phụ thuộc vào cấu trúc và số lượng parameter Vì bản chất machine learning là ước lượng hàm số, sử dụng một tập model mạnh hơn, thậm chí có khả năng mơ phỏng tất cả dạng hàm số tưởng chừng như là một ý hay Nhưng thực tế đây lại là một ý tưởng này rất tồi Vì sao? Vì sao dùng model q mạnh lại khơng tốt? Giả sử có một cuộc thi trong đó ta u cầu mỗi thí sinh phải vẽ được một đường đi qua nhiều nhất các điểm cho trước Thí sinh tham dự có 2 người: một người là họa sĩ, anh ta rất khéo tay và có thể vẽ tất cả các loại đường cong thẳng; người còn lại là một anh chàng vụng về với cây thước kẻ, anh ta chỉ có thể vẽ đường thẳng Dĩ nhiên là anh họa sĩ sẽ thắng trong trò chơi này Nhưng hãy xem xét phản xạ của hai thí sinh trong tình huống sau đây: ta cho đề bài ban đầu là các điểm trên một đường thẳng; sau khi hai người vẽ xong, ta chỉ dịch chuyển một điểm lệch ra khỏi đường thẳng một đoạn nhỏ Hiển nhiên là ban đầu cả hai người đều vẽ được một đường thẳng đi qua tất cả các điểm Nhưng sau khi một điểm bị dịch chuyển, anh họa sĩ sẽ vẽ ra một đường hồn tồn khác với đường thẳng ban đầu để cố đi qua mọi điểm Ngược lại, anh vụng về thì sẽ vẫn giữ ngun đáp áp vì đó là đáp án tốt nhất anh có thể vẽ Điều ta thấy được ở đây đó là anh họa sĩ, vì q tài hoa, nên anh rất nhạy cảm với những thay đổi nhỏ trong các điểm dữ liệu Còn anh vụng về, vì năng lực của anh có hạn, nên thường anh sẽ ít bị ảnh hưởng hơn Nếu như đây khơng phải là một cuộc thi vẽ qua nhiều điểm mà là một bài tốn machine learning, có lẽ anh họa sĩ đã thua rồi Bởi vì điểm bị dịch chuyển có thể là do tác động của noise để hòng đánh lừa anh Anh họa sĩ đại diện cho một tập model cực mạnh, có khả năng mơ phỏng mọi hàm số Một tập model mạnh như vậy rất nhạy cảm với noise và dễ dàng bị overfitting Sự kết hợp giữa các yếu tố gây overfitting 29 Regularized Loss Minimization Các yếu tố gây ra overfitting phải phối hợp với nhau thì mới đủ điều kiện cho nó xuất hiện Ta xem xét hai tình huống thường gặp sau: Có nhiều dữ liệu: ta có thể vơ tư dùng ERM, tập model mạnh mà khơng lo về overfitting Đây chính là lý do mà thế giới hân hoan khi Big Data xuất hiện Làm việc với model yếu: các model thường bị một hội chứng chị em ngược lại với overfitting, gọi là underfitting Đây là khi model q đơn giản so với quan hệ cần tìm Lúc này, dù có tăng thêm dữ liệu cũng khơng giúp cho model chính xác thêm Điều cần làm đó là tăng sức mạnh (tăng số lượng tham số hoặc thay đổi dạng) của model Mình cũng xin dành ra vài dòng để nói về hiện tượng "cuồng" deep learning và áp dụng deep learning lên mọi bài tốn Các model của deep learning là các neural network cực mạnh nên cần rất nhiều dữ liệu để khơng bị overfitting Đó là lý do mà dù các model deep learning này khơng mới, thậm chí là những model đầu tiên của machine learning, nhưng phải chờ đến kỷ ngun Big Data hiện tại chúng mới phát huy sức mạnh Nếu khơng am hiểu về overfitting và áp dụng deep learning vơ tội vạ lên những tập dữ liệu chỉ có vài trăm cặp dữ liệu thì thường đạt đượt kết quả khơng cao Khi gặp những điều kiện dữ liệu eo hẹp như vậy, nên bắt đầu từ những model đơn giản như linear model trước Trong machine learning có một định lý nổi tiếng gọi là "no free lunch" nói rằng khơng có một model nào tốt nhất cho tất cả các loại dữ liệu Vì thế, tùy vào bài tốn, vào tính chất và số lượng dữ liệu sẵn có, ta mới xác định được model phù hợp Regularized loss minimization Trong bài trước, ta đã biết được một phương pháp để giảm thiểu overfitting, early stopping Ba yếu tố gây ra overfitting cũng gợi ý cho chúng ta những cách khác để khắc phục vấn đề Trong đó, yếu tố thứ hai đưa ra giải pháp đơn giản nhất: tăng kích thước tập huấn luyện Sau đây, mình sẽ giới thiệu một phương pháp nhằm loại trừ đi yếu tố thứ nhất và thứ ba, được gọi là regularization Phổ biến nhất, phương pháp này sẽ thêm vào ERM objective function một regularizer nhằm hạn chế sức mạnh của model Giả sử rằng đã lỡ tay chọn một model q mạnh Thì khơng cần phải thay đổi dạng model, ta vẫn có thể hạn chế sức mạnh của nó đi bằng cách giới hạn parameter space (khơng gian của tham số) của model Xét hai tập model A = {fw : w ∈ X} và B = {fw′ : w′ ∈ Y } chỉ khác nhau về parameter space thôi (ký hiệu S = {s : c} đọc là "tập S gồm các phần tử s sao cho điều kiện c thỏa mãn) X hoặc Y được gọi là không gian tham số của tập model A hoặc B Trong trường hợp này, nếu X ⊂ Y (X là tập con của Y) thì rõ ràng tập model B biểu diễn được mọi hàm số tập model A biểu diễn được, tức là B mạnh hơn A 30 Regularized Loss Minimization Nếu parameter w là một vector số thực có d chiều, tập hợp các giá trị w có thể nhận, hay còn gọi là parameter space của w, là tập tất cả các vector có d chiều số thực, ký hiệu là Rd Trong khơng gian này, mỗi chiều của w đều được tự do bay nhảy trong khoảng (−∞, ∞) Muốn thu nhỏ lại khơng gian này, ta cần một cơ chế để thu hẹp miền giá trị của mỗi chiều Để làm được điều đó, ý tưởng ở đây là định nghĩa một đại lượng để khái qt được "độ lớn" của vector w Đại lượng này sẽ được dùng làm regularizer, ký hiệu là R(w) như ta đã biết, là một hàm số phụ thuộc vào w Nó sẽ được gắn thêm vào ERM objective function và được tối thiểu hóa cùng lúc với average loss Objective function của chúng ta được định nghĩa lại như sau: LDtrain (fw ) = LERM Dtrain + λR(w) Tối thiểu hóa objective function này được gọi là quy tắc regularized loss minimization (RLM) Chú ý đối với RLM, khơng nhất thiết là LERM Dtrain phải đạt giá trị tối thiểu để cho objective function trở nên tối thiểu Nếu một model tối thiểu hóa LERM Dtrain nhưng lại làm cho R đạt giá trị lớn thì vẫn có cơ hội để chọn một model khác, dù có LERM Dtrain lớn hơn nhưng lại cho giá trị của R nhỏ hơn nhiều Nói cách khác, ta có thể lựa chọn được một model đơn giản, dù nó khơng dự đốn hồn hảo tập huấn luyện RLM đang đưa model đi gần đến Occam's razor hết mức có thể, chấp nhận hy sinh độ chính xác trên tập huấn luyện để giảm độ phức tạp của model Hằng số λ trong hàm mục tiêu được gọi là rgularization constant, là một hyperparameter của model Sự xuất hiện của λ trong hàm mục tiêu làm cho vai trò của LERM Dtrain và R trở nên bất đối xứng: nếu ta tăng LERM Dtrain lên 1 đơn vị thì hàm mục tiêu tăng lên 1 đơn vị; trong khi đó nếu tăng R lên 1 đơn vị thì hàm mục tiêu tăng lên thêm λ đơn vị Tức là 1 đơn vị của LERM Dtrain có giá trị bằng 1/λ đơn vị của R Thơng thường, ta thường đặt λ rất nhỏ, ví dụ λ = 10−4 Lúc này, 1 đơn vị của LERM Dtrain bằng đến 10 đơn vị của R Điều này thể hiện rằng ta muốn ưu tiên vào tối thiểu hóa LERM Dtrain hơn là R Các regularizer thường gặp R(w) thường gặp nhất là norm của vector Có rất nhiều loại norm, mình sẽ giới thiệu hai loại norm phổ biến nhất 1-norm (L1-norm): R(w) = ∣∣w∣∣1 = ∑di=1 ∣wi ∣ 31 Regularized Loss Minimization tức là tổng của trị tuyệt đối của các thành phần 1-norm đặc biệt ở chỗ là, khi đưa vào hàm mục tiêu, nó sẽ thường cho ra model thưa, tức là model có parameter chứa nhiều chiều bằng 0 Model thưa rất có lợi thế trong tính tốn và lưu trữ vì ta chỉ cần làm việc trên các chiều khác 0 squared 2-norm (L2-norm): R(w) = ∣∣w∣∣ 22 = ∑ di=1 wi2 cũng còn biết đến với cái tên weight decay, chính là bình phương độ dài của vector w Sở dĩ ta phải bình phương là để giúp cho việc tính đạo hàm được dễ hơn khi tối ưu hàm mục tiêu Lưu ý, đây khơng thực sự là norm, căn bậc hai của nó mới là norm 32 Tinh chỉnh các hyperparameter Tinh chỉnh các hyperparameter Khi bình thường hố tham số xuất hiện trong hàm mục tiêu, vấn đề đặt ra là ta khơng nhất thiết phải đặt giá trị của hằng số bình thường hố λ giống nhau cho mọi bài tốn Hơn nữa, ngồi λ, còn có nhiều hyperparameter khác ta cần phải lựa chọn (như bậc của đa thức) Làm sao để chọn được tập giá trị tối ưu cho các hyperparameter với từng bài tốn? Development set Để tinh chỉnh các hyperparameter, ta có thể là như sau: chọn một tập giá trị của các hyperparameter, huấn luyện để tìm ra một model rồi đo độ tốt của nó trên test set Ta tiếp tục lặp lại q trình này với nhiều tập giá trị hyperparameter khác nhau Sau nhiều lần thử chọn như vậy, ta chọn tập giá trị nào cho độ sai sót thấp nhất trên test set Cẩn thận! Khi dùng test set để xác định hyperparameter, ta đã vi phạm ngun tắc train-test độc lập Nói một cách đơn giản là ta đã sử dụng test set để huấn luyện model làm model "đã thấy trước" được những gì mình sắp phải dự đốn Để khắc phục điều này, ta cần đến một "test set thứ hai", chỉ chun dùng để tinh chỉnh các hyperparameter và khơng dùng để đưa thơng báo cuối cùng về độ tốt của model Ta gọi đấy là development set (tập phát triển) Development set cũng còn được gọi là validation set Trong bài viết trước, vì chưa nhắc giới thiệu khái niệm development set nên định nghĩa early stopping của mình cũng đã vi phạm quy tắc train-test độc lập Cụ thể, vì thời điểm dừng huấn luyện phụ thuộc vào độ sai sót trên test set, mà model cuối cùng nhận được lại phụ thuộc vào thời điểm dừng huấn luyện, suy ra test set đã gián tiếp chỉ định model cuối cùng Sau khi biết đến development set, để áp dụng early stopping một cách đúng đắn, thì ta chỉ việc thay learning curve trên test set bằng learning curve trên development set 33 Tinh chỉnh các hyperparameter Trong nghiên cứu, tỉ lệ train:dev:test thường được dùng đó là 8:1:1 Tức là nếu có 100 điểm dữ liệu, thì lấy 80 điểm để huấn luyện, 10 điểm để phát triển, và 10 điểm để kiểm tra k-fold cross-validation k-fold cross validation được sử dụng khi ta khơng có đủ dữ liệu để trích ra được một development set đủ lớn Phương pháp này sẽ chia training set thành k phần Sau đó, ta lần lượt sử dụng một phần làm development và k - 1 phần còn lại làm training set Độ tốt của model (lúc phát triển) sẽ bằng trung bình cộng độ tốt trên development set qua k lần huấn luyện đó 34 Thuật tốn supervised learning tổng qt Thuật tốn supervised learning tổng qt Sử dụng tập phát triển để tinh chỉnh hyperameter của model: với mỗi tập giá trị của các hyperparameter (ví dụ thử chọn λ trong các giá trị 0.1, 0.01, 0.001): a Huấn luyện: tìm w để tối thiểu hóa objective function Theo dõi learning curve để áp dụng early stopping b Đánh giá trên development set: thơng báo gía trị của evaluation function trên development set Đánh giá trên tập kiểm tra: với model w ∗ cho kết quả tốt nhất ở development set, thơng báo giá trị của evaluation function trên test set 35 Loss function Loss function Ở các phần trước, ta đã bỏ rất nhiều cơng sức để xây dựng được một cơng thức tổng qt để tìm ra một model từ một tập dữ liệu Đó hàm mục tiêu của regularized loss minimization (RLM): w ∗ = arg LERM Dtrain (w) + λR(w) w Nhưng suy đi nghĩ lại thì cơng thức này khá là "vơ dụng" vì nó tổng qt nhưng khơng cụ thể Ta chẳng thể dùng nó để luyện ra model nào bởi ta khơng biết L có dạng thế nào để mà tìm giá trị cực tiểu Vậy tại sao chúng ta lại bỏ thời gian ra "vơ ích" như vậy? Tại sao chúng ta lại cần một cơng thức tổng qt? Câu trả lời rất đơn giản, tiết kiệm năng lượng Khơng riêng gì machine learning, trong mỗi ngành nghề đều tồn tại những cơng việc cần phải lặp đi lặp lại nhiều lần Trong xây nhà thì đó là việc đổ móng, xây tường, lợp mái Trong võ thuật thì đó là việc đứng tấn, đấm và đá Những việc đó vơ cùng nhàm chán và ta muốn dành thật ít năng lượng và suy nghĩ khi làm chúng! Ta thích làm những việc vui hơn, tự do hơn, sáng tạo hơn, như thiết kế hay trang trí một căn nhà, hoặc ngẫm ra một thế võ độc tơn Nhưng hãy tưởng tượng rằng nếu bức tường ta xây cứ ba ngày lại đổ một lần Cứ xây đi xây lại như thế thì cả đời ta cũng khơng thể có cơ hội để trang trí một căn nhà Tương tự, nếu chân đứng còn chưa vững thì nói gì đến việc sáng chế chiêu thức Thế nên, muốn làm việc cao cấp vui vẻ thì trước hết phải làm những việc cơ bản nhàm chán thành thục trước Machine learning cũng như vậy Ta bỏ nhiều cơng sức ra để xây dựng nên RLM là bởi ngun tắc này được sử dụng trong hầu hết mọi model Nếu bạn nắm kỹ RLM, thì tốc độ học của bạn sẽ được đẩy lên rất nhiều Vì sao? Hãy nhìn vào cơng thức RLM, mảnh ghép còn thiếu cuối cùng chỉ là dạng của loss function L Cho nên, mỗi lần bạn đọc tài liệu và gặp một dạng model mới, nếu nhận ra được bóng dáng của RLM trong đó thì gần như là "job done!" Cơng việc của bạn lúc đó chỉ là nhìn ra dạng của loss function với từng model khác Cơng việc sáng tạo model mới cũng được thi hành một cách bài bản hơn Bạn đã có RLM làm nền, cơng việc của bạn chỉ là ngồi sáng tạo ra các biến thể của loss function để lắp vào Bây giờ ta sẽ đi nghiên cứu một số biến thể thơng dụng nhất của loss function nhé! Định nghĩa loss function 36 Loss function Loss function kí hiệu là L, là thành phần cốt lõi của evaluation function và objective function Cụ thể, trong cơng thức thường gặp: LD (fw ) = ∑ L (fw (x), y ) ∣D∣ (x,y)∈D thì hàm L chính là loss function Loss function trả về một số thực khơng âm thể hiện sự chênh lệch giữa hai đại lượng: y^, label được dự đốn và y, label đúng Loss function giống như một hình thức để bắt model đóng phạt mỗi lần nó dự đốn sai, và số mức phạt tỉ lệ thuận với độ trầm trọng của sai sót Trong mọi bài tốn supervised learning, mục tiêu của ta ln bao gồm giảm thiểu tổng mức phạt phải đóng Trong trường hợp lý tưởng y^ = y, loss function sẽ trả về giá trị cực tiểu bằng 0 Hai dạng bài supervised learning cơ bản Ta phân chia các dạng bài supervised learning dựa vào tính chất của y Để đơn giản, ta xét bài các bài tốn mà y có thể biểu diễn được bằng một con số Khi y là một số thực dao động trong khoảng (−∞, ∞), ta được một bài tốn regression Ví dụ như ta cần tiên đốn giá cổ phiếu, giá xăng, giá vàng vào ngày mai Khi y là một đại lượng rời rạc chỉ nhận giá trị trong một tập label hữu hạn rời rạc nào đó, ta được bài tốn classification Ví dụ, khi ta cần nhận dạng tên một người từ một tấm ảnh chân dung, cho dù có hàng tỉ cái tên trên thế giới thì tập hợp này vẫn là rời rạc hữu hạn Vì thế, bài tốn này vẫn được quy vào dạng classification Để đơn giản các cơng thức, bài viết này chỉ đề cập đến binary classification, tức là khi tập các label chỉ có hai phần tử ("có" hoặc "khơng", "đúng" hoặc "sai", "positive" hoặc "negative", ) Để tiện cho việc tính tốn, trong binary classification, ta chuyển đổi tập label thành tập {−1, +1} (-1 nghĩa là "khơng", +1 nghĩa là "có") Lưu ý rằng ta đang nói đến label thật y chứ khơng phải label dự đốn y^ = fw (x) Thơng thường, đối với cả regression và binary classification, ta đều thiết kế để model fw (x) trả về một số thực y^ ∈ (−∞, ∞) Với regression, y^ dĩ nhiên mang ý nghĩa là giá trị được dự đốn Với binary classification, y^ là điểm số thể hiện model ưa thích label nào hơn trong hai label Nếu y^ < 0 tức là model thích phương án -1 hơn và ngược lại, nếu y^ ≥ 0 tức là model nghiêng về phương án +1 hơn Giá trị tuyệt đối của y^ thể hiện mức độ thích của model đối với lựa chọn của mình 37 Loss function Cách xây dựng loss function Vì loss function đo đạc chênh lệch giữa y và y^, nên khơng lạ gì nếu ta nghĩ ngay đến việc lấy hiệu giữa chúng: L(y^, y) = y^ − y Tuy nhiên hàm này lại khơng thỏa mãn tính chất khơng âm của một loss function Ta có thể sửa nó lại một chút để thỏa mãn tính chất này Ví dụ như lấy giá trị tuyệt đối của hiệu: L( y^, y) = ∣ y^ − y∣ Loss function này khơng âm nhưng lại khơng thuận tiện trong việc cực tiểu hóa, bởi vì đạo hàm của nó khơng liên tục (nhớ là đạo hàm của f (x) = ∣x∣ bị đứt qng tại x = 0) và thường các phương pháp cực tiểu hóa hàm số thơng dụng đòi hỏi phải tính được đạo hàm Một cách khác đó là lấy bình phương của hiệu: L( y^, y) = Khi tính đạo hàm theo y^, ta được ∇L = (y^ − y)2 × × (y^ − y) = y^ − y Các bạn có thể thấy rằng hằng số 12 được thêm vào chỉ để cho cơng thức đạo hàm được đẹp hơn, khơng có hằng số phụ Loss function này được gọi là square loss Square loss có thể được sử dụng cho cả regression và classification, nhưng thực tế thì nó thường được dùng cho regression hơn Đối với binary classification, ta có một cách tiếp cận khác để xây dựng loss function Nhắc lại là đối với dạng bài này, thì nếu model trả về y^ < 0 tức là thích đáp án -1 hơn, trả về y^ ≥ tức là thích đáp án +1 hơn Một cách rất tự nhiên, ta thấy rằng loss function của binary classification cần phải đạt được một số tiêu chí sau: Ta cần phải phạt model nhiều hơn khi dự đốn sai hơn là khi dự đốn đúng Vì thế, tiêu chí đầu tiên của ta là khi model dự đốn sai (y khác dấu với y^), loss function phải trả về giá trị lớn hơn so với khi model dự đốn đúng (y cùng dấu với y^) Nếu có hai đáp án y^1 và y^2 đều cùng dấu (hoặc khác dấu) với y thì ta nên phạt đáp án nào nhiều hơn? Như đã nói, giá trị tuyệt đối ∣y^∣ thể hiện "độ thích" của model đối với một phương án Giá trị này càng lớn thì model càng "thích" một phương án Trong 38 Loss function trường hợp y^ cùng dấu với y, phương án được thích là phương án đúng, do đó, model càng thích thì ta phải càng khuyến khích và phạt ít đi Cũng với lập luận như vậy, nếu y^ khác dấu với y, vì phương án được thích là phương án sai nên model càng thích thì ta phải càng phạt nặng để model khơng tái phạm nữa Một cách tổng qt, đối với binary classification thì các loss function thường có dạng như sau: L(y^, y) = f (y ⋅ y^) trong đó f là một hàm khơng âm và khơng tăng Câu hỏi 1: Giải thích tại sao hàm g( y^, y) = −y ⋅ y^ lại thỏa mãn hai tiêu chí đã nêu ở trên Câu hỏi 2: Giải thích tại sao hàm g( y^, y) = −y ⋅ y^ lại khơng thỏa điều kiện của một loss function (lưu ý tính chất của loss function và f) Các loss function cơ bản dành cho binary classification 39 Loss function 0-1 loss: Hàm này rất đơn giản: trả về 1 nếu y ⋅ y^ < 0, trả về 0 nếu ngược lại Việc này tương đương với việc đếm số câu trả lời sai của model 0-1 loss thường chỉ được dùng để tính error rate của model, chứ khơng dùng để huấn luyện model vì đạo hàm của nó khơng xác định ở điểm Perceptron loss: Lperceptron (y^, y) = max(0, −y ⋅ y^) Ta thấy rằng hàm perceptron loss là một cách đơn giản nhất để sửa sao cho hàm g ở câu hỏi trong phần trước trở thành không âm (thỏa điều kiện của một hàm mát) Đối với perceptron loss, khi model đốn đúng ( y^ cùng dấu với y), −y ⋅ y^ sẽ mang dấu âm Tức là, khi đó Lperceptron ( y^, y) = max(0, negative) = Nói cách khác, perceptron loss khơng phân biệt gì giữa các dự đốn đúng Chúng đều khơng bị phạt Đối với các dự đốn sai, thì perceptron vẫn tn thủ theo ngun tắc là model càng thích thì phạt càng nặng Perceptron loss là loss function của perceptron model Hinge loss Lhinge (y^, y) = max(0, − y ⋅ y^) Hinge loss thực ra chỉ là một biến thể từ perceptron loss Ta chỉ thêm 1 đơn vị vào đại lượng −y ⋅ y^ Số 1 này có một ý nghĩa rất đặt biệt, được gọi là margin (lề) Các bạn sẽ thấy là hinge loss hoạt động gần như tương tự như perceptron loss chỉ trừ các dự đốn mà y ⋅ y^ nằm trong khoảng [0, 1] Chú ý là các dự đốn mà y ⋅ y^ rơi vào khoảng này thì đều đúng Hinge loss phân biệt các dự đốn đúng này theo ngun tắc là model càng thích thì càng phạt nhẹ Còn khi y ⋅ y^ vượt q 1 thì hinge loss lại khơng phân biệt nữa Vì sao lại làm như vậy? Những dự đốn ở trong margin [0, 1] là những dự đốn gần ranh giới, là những lúc mà model lưỡng lự Ý tưởng của hinge loss là muốn model phải thật rõ ràng và tự tin với những quyết định của mình Do khi vẫn còn trong margin thì model vẫn bị phạt, nên model sẽ được khuyến khích để đưa ra những quyết định đúng và có tính chắc chắn cao, nằm ngồi margin để khơng bị phạt nữa Đây chính là ý tưởng của support vector machines model 40 Loss function Logistic loss (hay log loss): Llog (y^, y) = log2 (1 + exp(−y ⋅ y^)) Trong cơng thức trên, hàm exp(⋅) là hàm lũy thừa theo cơ số tự nhiên e Thoạt nhìn log loss trơng có vẻ khá phức tạp, và trơng khơng có vẻ gì là họ hàng của hai hàm còn lại Tuy nhiên, khi nhìn vào đồ thị của hàm số này, ta lại thấy rất dễ hiểu bởi vì nó thỏa tất cả mọi tính chất của loss function mà ta đã nói ở phần trước Đây là một hàm liên tục, khơng âm và khơng tăng Khơng những khơng tăng, log loss còn ln giảm, có nghĩa là nó ln phân biệt giữa các dự đốn có độ thích khác nhau bất kể đúng hay sai Đây là điểm khác biệt chính của log loss với perceptron loss và hinge loss Một điểm khác biệt nữa là hàm này có một độ cong nhất định, tức là nó khơng giảm với tốc độ như nhau ở mọi điểm Trong khi đó, thì một phần của perceptron loss hoặc hinge loss chỉ là một đường tuyến tính, với tốc độ giảm là một hằng số Log loss chính là nền tảng của logistic regression model Vậy có phải log loss là một loss function hồn hảo? Chưa hẳn, điều này phụ thuộc vào bài tốn Tuy log loss đưa ra nhiều tiêu chí hấp dẫn, nhưng vấn đề model liệu có thể thỏa mãn những tiêu chí được những tiêu chí đó khơng Hay chúng ta đang đòi q nhiều ở model? Việc model phân biệt giữa một đáp đúng với độ chắn chắn thấp và một đáp án đúng với độ chắc chắn cao mang lại lợi ích gì cho ta? Có đơi khi, ta khơng quan tâm, đáp án nào cũng đều đúng Có đơi khi, ta lại cần model phải rạch ròi Có đơi khi, ta chỉ muốn tránh những đáp án có độ chắc chắn thấp; Lúc đó, hinge loss lại là sự lựa chọn tốt hơn Tất cả đều tùy vào dữ liệu và ứng dụng 41 Deep Learning 42 Biểu diễn từ (word representation) 43 ... hơn bất kì đại kì thủ nào, là một trong rất nhiều ví dụ hùng hồn cho sự vượt trội của machine learning so với các phương pháp cổ điển Vậy thực chất, machine learning là gì? Để giới thiệu về machine learning, mình xin dựa vào mối quan hệ của nó với ba khái niệm sau: Machine learning và trí tuệ nhân tạo (Artificial Intelligence hay AI)... đọc có đọc nền tảng học thuật vững chắc trước khi đi sâu hơn vào nghiên cứu và sáng chế Ngày 20/7/2016 Machine learning là gì? Machine learning là gì? Machine learning gây nên cơn sốt cơng nghệ trên tồn thế giới trong vài năm nay... dung chủ yếu giới thiệu về một lĩnh vực thu hút rất nhiều sự chú ý trong vài năm gần đây, machine learning Sách được đặt tên là "Machine Learning: mì, súp và cơng thức nấu" với ý tưởng là nếu người đọc hiểu được những thành tố cơ bản của machine learning và cách phối hợp giữa

Ngày đăng: 31/07/2019, 11:22

Từ khóa liên quan

Mục lục

  • Lời tựa

  • Machine learning là gì?

  • Supervised Learning

    • Các khái niệm cơ bản

    • Hai góc nhìn về supervised learning

    • Objective function

    • Overfitting

    • Regularized Loss Minimization

    • Tinh chỉnh các hyperparameter

    • Thuật toán supervised learning tổng quát

    • Loss function

  • Deep Learning

    • Biểu diễn từ (word representation)

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

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

Tài liệu liên quan