Mở đầu Chương 2: Tổng quan về Deep Learning Chương 3: Tổng quan về hệ thống gợi ý Chương 4: Hệ thống gợi ý dựa trên học sâu Chương 5: Cài đặt và thử nghiệm hệ thống gợi ý Chương 6: Kết luận 4 CHƯƠNG 2. TỔNG QUAN VỀ DEEP LEARNING 2. KHÁI NIỆM Trước khi đi sâu vào học máy hãy tìm hiểu sơ về Machine Learning và AI Trí tuệ nhân tạo hay trí thông minh nhân tạo (Artificial intelligence – viết tắt là AI) là một ngành thuộc lĩnh vực khoa học máy tính (Computer science). Là trí tuệ do con người lập trình nên với mục đích giúp máy tính có thể tự động hóa các hành vi thông minh như con người.
Trí tuệ nhân tạo khác với việc lập trình logic trong các ngôn ngữ lập trình là ở việc ứng dụng các hệ thống học máy (machine learning) để mô phỏng trí tuệ của con người trong các xử lý mà con người làm tốt hơn máy tính. Cụ thể, trí tuệ nhân tạo giúp máy tính có được những trí tuệ của con người như: biết suy nghĩ và lập luận để giải quyết vấn đề, biết giao tiếp do hiểu ngôn ngữ, tiếng nói, biết học và tự thích nghi,… Học máy (ML) là một công nghệ phát triển từ lĩnh vực trí tuệ nhân tạo. Các thuật toán ML là các chương trình máy tính có khả năng học hỏi về cách hoàn thành các nhiệm vụ và cách cải thiện hiệu suất theo thời gian. ML vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ liệu cơ sở và lựa chọn các kĩ thuật phù hợp để phân tích dữ liệu.
Đồng thời, trước khi sử dụng, dữ liệu phải sạch, không có sai lệch và không có dữ liệu giả. Các mô hình ML yêu cầu lượng dữ liệu đủ lớn để "huấn luyện" và đánh giá mô hình. Trước đây, các thuật toán ML thiếu quyền truy cập vào một lượng lớn dữ liệu cần thiết để mô hình hóa các mối quan hệ giữa các dữ liệu. Sự tăng trưởng trong dữ liệu lớn (big data) đã cung cấp các thuật toán ML với đủ dữ liệu để cải thiện độ chính xác của mô hình và dự đoán.1: Mối quan hệ giữa AI, ML, Deep learning [8].
Học sâu là một loại học máy và trí tuệ nhân tạo (AI). Trí tuệ nhân tạo là một thuật ngữ chung dùng để chỉ các kỹ thuật cho phép máy tính bắt chước hành vi của con người, ở đó các máy tính sẽ học và cải thiện chính nó thông qua các thuật toán. Học máy đại diện cho một tập hợp các thuật toán được đào tạo dựa trên dữ liệu để làm cho tất cả những điều này trở nên khả thi. Học sâu chỉ là một loại học máy, lấy cảm hứng từ cấu trúc của bộ não con người.
Các thuật toán học sâu cố gắng đưa ra các kết luận tương tự như con người bằng cách liên tục phân tích dữ liệu với một cấu trúc logic nhất định. Để đạt được điều này, học sâu sử dụng cấu trúc nhiều lớp của các thuật toán được gọi là mạng nơ-ron. Mạng nơ-ron nhân tạo chính là động lực chính để phát triển Deep Learning. Các mạng nơ-ron sâu (DNN) bao gồm nhiều lớp nơ-ron khác nhau, có khả năng thực hiện các tính toán có độ phức tạp rất cao.
Deep Learning hiện đang phát triển rất nhanh và được xem là một trong những bước đột phá lớn nhất trong Machine Learning. Khái niệm: Thiết kế của mạng nơ-ron dựa trên cấu trúc của bộ não con người. Cũng giống như chúng ta sử dụng bộ não của mình để xác định các mẫu và phân loại các loại thông tin khác 6 nhau. Hãy xem cách bộ não của chúng ta hoạt động từ góc độ đơn giản và sau đó so sánh nó với mạng thần kinh (neural network).
Bộ não thực chất là một nhóm các tế bào thần kinh kết nối với nhau trong một mạng lưới liên kết khổng lồ. Các tế bào thần kinh này truyền một lượng điện tích nhỏ cho nhau như một cách để truyền thông tin. Một đặc điểm quan trọng khác của các kết nối thần kinh này là sự kết nối giữa hai tế bào thần kinh có thể khác nhau có thể mạnh và có thể yếu. Một tế bào thần kinh kết nối mạnh cho phép nhiều điện tích truyền qua hơn giữa chúng và một kết nối yếu cho phép ít điện tích truyền qua hơn.
Bây giờ khi bộ não tiếp nhận thông tin đầu vào từ bất kỳ nguồn bên ngoài nào, chẳng hạn như chúng ta chạm vào ấm nước nóng. Các dây thần kinh từ bàn tay của chúng ta truyền thông tin đến các tế bào thần kinh nhất định trong não của chúng ta. Bây giờ có một con đường từ các tế bào thần kinh (hay còn được gọi là neuron pathway) đến các tế bào thần kinh điều khiển bàn tay của chúng ta. Và trong những trường hợp này, bộ não của chúng ta đã học được rằng lựa chọn tốt nhất là di chuyển tay khỏi ấm nước càng sớm càng tốt.
Do đó, con đường nhất định này giữa các tế bào thần kinh nhận đầu vào từ bàn tay và các tế bào thần kinh điều khiển bàn tay sẽ mạnh mẽ. Các con đường thần kinh trở nên mạnh mẽ hơn khi sử dụng thường xuyên và não của chúng ta về cơ bản cố gắng sử dụng các con đường đã được chứng minh là mang lại cho chúng ta kết quả tốt hơn theo thời gian. Vì vậy, về cơ bản, khi con người chúng ta sống cuộc sống của mình và quyết định xem hành động của chúng ta là tốt hay xấu, chúng ta đang huấn luyện bộ não của mình để đảm bảo rằng chúng ta không lặp lại những sai lầm trước đây của mình hoặc tiếp tục làm những điều mà chúng ta nghĩ sẽ mang lại kết quả tốt. Bây giờ chúng ta hãy hiểu cách biểu diễn Mạng thần kinh.
Một mạng lưới thần kinh bao gồm nhiều Nút (Neurons) ở nhiều layer. Mỗi layer có thể có bất kỳ số lượng nút nào và mạng nơ-ron có thể có bất kỳ số layer nào. Chúng ta hãy xem xét kỹ hơn một vài layer. 2: Minh họa mạng lưới thần kinh bao gồm nhiều Nút Có thể thấy có nhiều liên kết giữa hai layer.
Các kết nối này cũng được gọi là trọng số giữa 2 lớp. Minh họa các hoạt động của trọng số đối với một nút [13]. Ví dụ về cách hoạt động của trọng số. Trong đó: 8 • Y là giá trị cuối cùng của nút • W đại diện cho trọng số giữa các nút ở lớp trước và lớp đầu ra • X đại diện cho các giá trị của các nút ở lớp trước đó • B là bias độ lệch (là một giá trị bổ sung cho mỗi neural) • H là giá trị nút trung gian không phải giá trị cuối cùng của nút • F() là hàm kích hoạt, ta có thể chọn hàm kích hoạt bất kì chúng tôi sẽ giải thích rõ hơn về hàm kích hoạt ở phần sau Vậy theo hình trên (2.4) giá trị output của nút này sẽ là f(0,57) Tiếp theo, xem xét các phép tính giữa hai layer hoàn chỉnh.
Minh họa các hoạt động của trọng số đối với nhiều nút [13] Các trọng số trong hình được trực quan bằng các màu sắc để dễ hiểu hơn. Chúng ta có thể biểu diễn toàn bộ các phép tính dưới dạng ma trận. Nếu chúng ta biểu diễn các trọng số tương ứng với mỗi nút đầu vào dưới dạng vector và sắp xếp chúng theo chiều ngang tạo 9 thành một ma trận. Sau đó, ta có thể nhân ma trận trọng số với vector đầu vào sau đó cộng thêm bias vector để nhận các giá trị nút trung gian.
Minh họa trực quan cấu trúc mạng neural [13]. Vậy ta có vector đầu ra là Y=f(W*X+B). Trong đó: • Y là vector đầu ra • X là vector đầu vào • W đại diện cho ma trận trọng số giữa hai lớp • B là Bias Vector Ta có thể xác định kích thước của ma trận trọng số bằng cách xem xét số lượng nút đầu vào và đầu ra. Một ma trận trọng số MxN có nghĩa là nó nằm giữa hai lớp với lớp thứ nhất là N nút và lớp thứ hai có M nút.
Bây giờ hãy xem xét mộ mạng neural hoàn chỉnh. Minh họa trực quan mạng neural 4 lớp [13]. Đây là một mạng neural gồm 4 lớp. Lớp đầu vào là nơi cung cấp những dữ liệu mà mạng neural phải học từ đó.
Lớp đầu ra là nơi lấy giá trị đích. Tất cả các lớp ở giữa được gọi là các lớp ẩn. Khi chúng ta đưa các input vào trong lớp đầu tiên, các giá trị của các nút ở mỗi lớp sẽ được tính toán bằng cách sử dụng phép nhân ma trận và các hàm kích hoạt cho đến khi chúng ta nhận được giá trị cuối cùng ở lớp đầu ra. Đó là cách lấy giá trị đầu ra từ mạng neural.
Về cơ bản, một mạng neural, nói một cách đơn giản, là một chuỗi các phép nhân ma trận và các hàm kích hoạt. Khi chúng ta input một vectơ chứa dữ liệu đầu vào, dữ liệu sẽ được nhân với chuỗi ma trận trọng số và chịu các hàm kích hoạt cho đến khi nó đến lớp đầu ra, lớp này chứa các dự đoán của mạng neural tương ứng với đầu vào cụ thể đó. Hàm kích hoạt: Mặc dù mạng neural có cấu hình trọng số hết sức phức tạp, nhưng nó sẽ không thể giải quyết vấn đề nếu không có hàm kích hoạt (hay còn gọi là Activation Function). Hàm kích hoạt là một thành phần rất quan trọng trong mạng neural.
Nó quyết định khi nào thì một neural được kích hoạt hoặc không. Liệu thông tin mà neural nhận được có liên quan đến thông tin được đưa ra hay nên bỏ qua. Để tìm hiểu sâu hơn về hàm kích hoạt, trước tiên hãy tìm hiểu về khái niệm phi tuyến tính. 𝑌 = 𝑊1 ∗ 𝑋1 + 𝑊2 ∗ 𝑋2 Phương trình trên biểu diễn mối quan hệ tuyến tính giữa Y và X1, X2.
Sự thay đổi giá trị của X1, X2 dẫn đến sự thay đổi tuyến tính trong Y. Nếu xét về dữ liệu thực tế thì dữ liệu thường có mối quan hệ phi tuyến tính giữa các biến đầu vào và đầu ra. Mô tả biểu đồ mô tả mối quan hệ tuyến tính và phi tuyến tính của dữ liệu [13]. Đồ thị trên đại diện cho một tập dữ liệu cho thấy mối quan hệ phi tuyến tính giữa X và Y.
Nếu cố gắng điều chỉnh mối quan hệ phi tuyến tính trên dữ liệu, chúng ta sẽ nhận được đường thẳng màu đỏ như đồ thị trên nó không phải là một biểu diễn chính xác cho dữ 12 liệu.