Chương 1 Cơ sở lý thuyết 1.1 Máy học Máy học[38] là một lĩnh vực của trí tuệ nhân tạo liên quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống "học" tự động từ dữ liệu để giải quyết những vấn đề cụ thể. Ví dụ như các máy có thể "học" cách phân loại thư điện tử xem có phải thư rác (spam) hay không và tự động xếp thư vào thư mục tương ứng. Máy học rất gần với suy diễn thống kê (statistical inference) tuy có khác nhau về thuật ngữ. Một nhánh của máy học là học sâu phát triển rất mạnh mẽ gần đây và có những kết quả vượt trội so với các phương pháp máy học khác.
Máy học có liên quan lớn đến thống kê, vì cả hai lĩnh vực đều nghiên cứu việc phân tích dữ liệu, nhưng khác với thống kê, máy học tập trung vào sự phức tạp của các giải thuật trong việc thực thi tính toán. Nhiều bài toán suy luận được xếp vào loại bài toán NP-khó, vì thế một phần của máy học là nghiên cứu sự phát triển các giải thuật suy luận xấp xỉ mà có thể xử lý được. Máy học và các thuật toán của nó, nhìn chung, luôn cố gắng phát triển về khả năng thu nhận tri thức và biểu diễn tri thức. Sao cho, các tri thức được "học" và áp dụng một cách tốt nhất trên các 10 ứng dụng đa dạng của đời sống.
Các thuật toán học máy được phân loại theo kết quả mong muốn của bài toán. Các loại bài toán bao gồm: Học có giám sát Thuật toán hay mô hình tạo ra một hàm ánh xạ dữ liệu vào tới kết quả mong muốn. Một phát biểu chuẩn về một việc học có giám sát là bài toán phân loại: chương trình cần học (cách xấp xỉ biểu hiện của) một hàm ánh xạ một véc-tơ x tới một vài lớp bằng cách xem xét một số mẫu dữ liệu - kết quả của hàm đó. Học có giám sát còn được tiếp tục chia nhỏ ra thành hai loại chính: Phân loại: Một bài toán được gọi là phân loại nếu các nhãn của dữ liệu đầu vào được chia thành một số hữu hạn nhóm.
Hồi quy: Nếu nhãn không được chia thành các nhóm mà là một giá trị thực cụ thể. Học không giám sát Trong bài toán này, dữ liệu đầu vào không có nhãn. Học không giám sát sẽ dựa vào cấu trúc của dữ liệu để thực hiện nhiệm vụ cụ thể (phân nhóm, giảm chiều dữ liệu). Gọi là học không giám sát vì mô hình không được giám sát bằng cách học trên dữ liệu đã được gán nhãn.
Bài toán học không giám sát có thể chia làm hai loại: Phân nhóm: Một bài toán phân nhóm toàn bộ dữ liệu X thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi nhóm. Ví dụ: phân nhóm khách hàng dựa trên hành vi mua hàng. Liên hợp: Là bài toán khi chúng ta muốn khám phá ra một quy luật dựa trên nhiều dữ liệu cho trước. 11 Học bán giám sát Các bài toán khi chúng ta có một lượng lớn dữ liệu X nhưng chỉ một phần trong chúng được gán nhãn được gọi là học bán giám sát.
Những bài toán thuộc nhóm này nằm giữa hai nhóm được nêu bên trên. Một ví dụ điển hình của nhóm này là chỉ có một phần ảnh hoặc văn bản được gán nhãn (ví dụ bức ảnh về người, động vật hoặc các văn bản khoa học, chính trị) và phần lớn các bức ảnh/văn bản khác chưa được gán nhãn được thu thập từ internet. Thực tế cho thấy rất nhiều các bài toán máy học thuộc vào nhóm này vì việc thu thập dữ liệu có nhãn tốn rất nhiều thời gian và có chi phí cao. Rất nhiều loại dữ liệu thậm chí cần phải có chuyên gia mới gán nhãn được (ảnh y học chẳng hạn).
Ngược lại, dữ liệu chưa có nhãn có thể được thu thập với chi phí thấp từ internet. Học tăng cường Là các bài toán giúp cho một hệ thống tự động xác định hành vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất (maximizing the perfor- mance). Hiện tại, học tăng cường chủ yếu được áp dụng vào Lý Thuyết Trò Chơi (Game Theory), các thuật toán cần xác định nước đi tiếp theo để đạt được điểm số cao nhất. Học chuyển giao Xây dựng các mô hình được huấn luyện trước, chứa đựng các thông tin và tri thức về một lĩnh vực chung chung nào đó (ngôn ngữ, hình ảnh, tiếng nói.
Các mô hình này được sử dụng làm thành phần cốt lõi, như "bộ não" trong một mô hình khác mà tại đó, chúng giải quyết các vấn đề cụ thể như trích xuất thông tin, nhận dạng về một chủ đề hình ảnh nào đó,. Học chuyển giao giải quyết vấn đề tài nguyên khi giảm bớt 12 Hình 1.1: Mô hình phân loại trong lĩnh vực xử lý ngôn ngữ tự nhiên. lượng dữ liệu và thời gian một mô hình phải học cho một nhiệm vụ cụ thể nào đó. Học chuyển giao được trình bày chi tiết hơn tại Phần 2.
Máy học hiện nay được áp dụng rộng rãi bao gồm các lĩnh vực xử lý ảnh, xử lý ngôn ngữ tự nhiên, xử lý tiếng nói v.2 Xử lý ngôn ngữ tự nhiên 1.1 Khái quát về xử lý ngôn ngữ tự nhiên Xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP) là một nhánh của trí tuệ nhân tạo, liên quan đến sự tương tác giữa máy tính và ngôn ngữ con người. Cụ thể, máy móc được đào tạo để xử lý và phân tích lượng lớn dữ liệu văn bản phi cấu trúc, như bài đăng trên mạng xã hội, tin tức, đánh giá trực tuyến của khách hàng, v. Công nghệ này được tạo ra với mong muốn rằng một máy tính có thể "hiểu" nội dung của tài liệu và sử dụng chúng để trích xuất chính xác thông tin 13 và kiến thức có trong tài liệu để thực hiện các tác vụ khác. Trong vấn đề phân loại, như thể hiện trong Hình 1.1, các mô hình và hệ thống NLP sử dụng tính năng nhúng văn bản để chuyển văn bản thành véc-tơ số.
Sau đó, các thuật toán máy học hoặc học sâu được cung cấp dữ liệu đào tạo và kết quả đầu ra (nhãn) dự kiến để đào tạo các mô hình, để đưa ra một đầu ra hợp lệ cho một đầu vào cụ thể. Sau đó, máy học cách xây dựng “kiến thức” của riêng mình trước khi đưa ra dự đoán cho dữ liệu chưa từng nhìn thấy (văn bản mới). Các ứng dụng điển hình trong NLP bao gồm dịch máy, tóm tắt văn bản, nhận dạng đối tượng được đặt tên, gắn thẻ từ loại (Part Of Speech - POS), truy xuất thông tin, nhóm thông tin, phân tích cảm xúc, truy vấn trả lời và nhận dạng giọng nói tự động (Automatic Speech Recognition - ASR). Trong ngành chăm sóc sức khỏe, xử lý ngôn ngữ tự nhiên có rất nhiều ứng dụng tiềm năng.
NLP có thể tăng tính nhất quán, đồng bộ và chính xác của hồ sơ sức khỏe bằng cách chuyển đổi văn bản phi cấu trúc sang định dạng chuẩn hóa. Nó có thể tự động trích xuất các thông tin từ các ghi chú trong hồ sơ y tế. NLP có tiềm năng gần như vô hạn để thu hẹp khoảng cách giữa lượng dữ liệu vô cùng lớn được tạo ra mỗi giây và khả năng nhận thức hạn chế của tâm trí con người. Khi nhắc đến xử lý ngôn ngữ tự nhiên, điều được quan tâm nhất đó chính là "làm thế nào để máy móc hiểu được ngôn ngữ tự nhiên và ứng dụng nó vào các bài toán cụ thể một cách tốt nhất?".
Các phần tiếp theo sẽ được trình bày với mục tiêu trả lời câu hỏi này.2 Tách từ Máy móc hoạt động với các con số chứ không phải các chữ cái/từ/câu. Vì vậy, để làm việc với một lượng lớn dữ liệu văn bản có sẵn, tiền xử lý văn bản (text pre-processing) là quá trình cần thiết giúp làm sạch văn bản. Bản thân tiền xử lý văn bản bao gồm nhiều giai đoạn, và một trong số đó là tách từ (hay còn gọi là Tokenization). Có thể coi Tokens là các khối xây dựng của NLP và tất cả các mô hình NLP đều xử lý văn bản thô ở cấp độ các Token.
Chúng được sử dụng để tạo từ vựng trong một kho ngữ liệu (một tập dữ liệu trong NLP). Từ vựng này sau đó được chuyển thành số (ID) và giúp chúng ta lập mô hình. Tokens có thể là bất cứ thứ gì – một từ (word), một từ phụ (sub-word) hoặc thậm chí là một ký tự (character). Các thuật toán khác nhau tuân theo các quy trình khác nhau trong việc thực hiện mã hóa và sự khác biệt giữa ba loại Tokens này sẽ được chỉ ra dưới đây.
Ví dụ: Câu gốc là “Let us learn Tokenization.” Thuật toán mã hóa dựa trên từ (word-based Tokenization algo- rithm) sẽ chia câu thành các từ: [“Let”, “us”, “learn”, “Tokenization. Thuật toán mã hóa dựa trên từ phụ (subword-based Tokenization algorithm) sẽ chia câu thành các từ khóa phụ: [“Let”, “us”, “learn”, “To- ken”, “ization.”] Thuật toán mã hóa dựa trên ký tự (character-based Tokenization algorithm) sẽ chia câu thành các ký tự, ở đây là từng chữ cái một. Các Token sau khi được tách sẽ được đưa vào một bộ từ vựng (vocab- ulary). Bộ từ vựng làm nhiệm vụ lưu trữ các Token (không lặp lại) và đánh chỉ mục cho nó.
Việc đánh chỉ mục thường dưới dạng số nguyên dương, mục đích để gắn Token để phân biệt, truy xuất và quan trọng nhất là số hóa Token từ dạng văn bản.3 Nhúng từ Để máy có thể hiểu ngôn ngữ tự nhiên thì cần một thành phần có thể ánh xạ ngôn ngữ sang dạng số. Trong một hệ thống ngôn ngữ tự nhiên, nhúng từ (Word Embedding) đảm nhận vai trò như vậy. Cụ thể, Word Embedding chuyển đổi một Token sang dạng véc-tơ đại diện đặc trưng của Token đó. Như vậy, máy tính có thể xử lý một đoạn văn bản, tiếng nói ngôn ngữ tự nhiên dưới dạng một chuỗi các véc-tơ.
Trong phần trên, bộ từ vựng đã được giới thiệu như là nơi lưu trữ các Token và chuyển đổi nó thành dạng số tương ứng với chỉ mục của nó trong bộ từ vựng. Việc này giúp một Token dễ dàng chuyển đổi thành véc-tơ One-hot, với thành phần thứ i của véc-tơ tương ứng với chỉ mục của Token bằng 1 và các thành phần khác bằng 0. Giả sử, Token có chỉ mục là 10, thì véc-tơ One-hot của Token đó là một véc-tơ có giá trị bằng 1 tại phần tử thứ 10 và bằng 0 ở các phần tử còn lại. Vậy tại sao không sử dụng véc-tơ One-hot mà lại cần đến Word Embedding?