GIỚI THIÊU CHUNG
Đặt vấn đề
Cuộc cách mạng công nghiệp đã trải qua ba giai đoạn lớn: động cơ hơi nước, động cơ đốt trong và kỹ thuật số Hiện nay, cuộc cách mạng công nghiệp lần thứ tư đang diễn ra với sự xuất hiện của các công nghệ đột phá như robotics, trí thông minh nhân tạo, công nghệ nano, công nghệ sinh học và in 3D Trong số đó, trí tuệ nhân tạo đang được các tập đoàn lớn như Google và Facebook nghiên cứu và phát triển mạnh mẽ.
Việc sử dụng ngôn ngữ giọng nói để tìm kiếm thông tin và tương tác với thiết bị điều khiển đã trở nên phổ biến, nhưng hiện tại, các phần mềm hỗ trợ tiếng Việt vẫn còn hạn chế Điều này dẫn đến sự phát triển không tương xứng của ngôn ngữ tiếng Việt so với các ngôn ngữ khác, đặc biệt là tiếng Anh, khi hầu hết các ứng dụng hiện nay chủ yếu tập trung vào ngôn ngữ nước ngoài.
Nội dung luận văn tập trung vào nghiên cứu mạng nơ-ron hồi quy với khả năng xử lý ngôn ngữ tiếng Việt Mô hình này được thiết kế theo dạng chuỗi sang chuỗi và được ứng dụng cho robot trợ lý.
Mục tiêu của đề tài
- Nghiên cứu mạng nơ-ron hồi quy, nghiên cứu mô hình LSTM
- Thiết kế ứng dụng mạng nơ-ron hồi quy trong xử lý ngôn ngữ tự nhiên, thực hiện mô hình chuỗi – chuỗi ứng dụng trong các trợ lý ảo
- Thực thi ứng dụng trên nền tảng hệ thống nhúng Raspberry Pi
- Thiết kế mô hình robot trợ lý để minh hoạ cho ứng dụng mạng nơ-ron hồi quy trong xử lý ngôn ngữ tự nhiên
- Sử dụng mạng nơ-ron hồi quy, chính xác là mạng Long Short-Tearm Memory (LSTM) để tự tạo ra ngôn ngữ tự động
- Tạo ra thiết bị robot hỏi đáp, tìm kiếm thông tin bằng giọng nói, hỗ trợ trên nền tảng ngôn ngữ Tiếng Việt
Tích hợp điều khiển thiết bị Smart Home mang lại khả năng điều khiển thông minh hơn cho các thiết bị, đồng thời đây là một lĩnh vực đang phát triển mạnh mẽ trong thời gian gần đây.
TỔNG QUAN
Một vài ứng dụng của xử lý ngôn ngữ tự nhiên trong Tiếng việt
2.1 Định nghĩa về xử lý ngôn ngữ tự nhiên
Xử lý ngôn ngữ tự nhiên (NLP) là một lĩnh vực trong trí tuệ nhân tạo, chuyên nghiên cứu và phát triển các ứng dụng liên quan đến ngôn ngữ của con người Đây là một trong những thách thức lớn nhất trong trí tuệ nhân tạo, vì nó đòi hỏi khả năng hiểu sâu sắc ý nghĩa của ngôn ngữ - công cụ tối ưu nhất cho tư duy và giao tiếp.
Các hệ thống chatbot giao tiếp với con người qua giọng nói như Siri hoặc văn bản như trên Facebook Messenger Để đưa ra những câu trả lời phù hợp cho khách hàng, chatbot cần hiểu văn bản thông qua thành phần NLU (Natural Language Understanding) NLU áp dụng nhiều kỹ thuật xử lý ngôn ngữ tự nhiên (NLP) để đảm bảo khả năng tương tác hiệu quả.
2.2 Một vài ứng dụng của xử lý ngôn ngữ tự nhiên trong Tiếng việt
2.2.1 Ứng dụng giám sát mạng xã hội
Các ứng dụng giám sát mạng xã hội giúp phân tích ý kiến người dùng về sản phẩm hoặc dịch vụ trên các nền tảng như Twitter và Facebook Mục tiêu chính là đánh giá mức độ hài lòng của người dùng và tìm hiểu những điểm mạnh, điểm yếu của sản phẩm Quá trình giám sát mạng xã hội bao gồm hai bước: thu thập và phân tích dữ liệu Bước thu thập liên quan đến việc tìm kiếm và lưu trữ các bài viết, bình luận từ nhiều nguồn khác nhau, trong khi bước phân tích xác định và phân loại ý kiến người dùng thành phản hồi tích cực, tiêu cực hoặc trung lập Để có cái nhìn sâu sắc hơn về ý kiến người dùng về một khía cạnh cụ thể của sản phẩm, phương pháp phân tích cảm xúc theo khía cạnh (ABSA) sẽ được áp dụng, bao gồm phân loại khía cạnh, trích xuất từ khóa và phân loại cảm xúc.
Chatbot là chương trình máy tính cho phép giao tiếp với con người, giúp trả lời các câu hỏi lặp đi lặp lại như thời gian sự kiện hay giá sản phẩm Chúng cũng có thể hoạt động như trợ lý ảo, hỗ trợ trong các tác vụ phức tạp như đặt hàng hay hoàn thành biểu mẫu Một chatbot bao gồm giao diện và phần hiểu ngôn ngữ tự nhiên (NLU), trong đó có bộ phân loại ý định và nhận diện thực thể (NER) Phân loại ý định giúp chatbot hiểu mục đích của người dùng, trong khi NER trích xuất thông tin quan trọng từ yêu cầu của họ Các thành phần bổ sung như bộ quản lý hội thoại, bộ sinh ngôn ngữ (NLG) và bộ phân tích cảm xúc cũng có thể được tích hợp, giúp nâng cao khả năng tương tác và phản hồi tự nhiên của chatbot.
2.2.3 Tổng đài tự động (ACC)
Tổng đài tự động (ACC) nhằm bắt chước con người trong việc trả lời điện thoại, bao gồm ba thành phần chính: module nhận diện tiếng nói, module xử lý ngôn ngữ tự nhiên và module chuyển văn bản thành tiếng nói Module nhận diện tiếng nói giúp máy tính hiểu tiếng nói con người, trong khi module xử lý ngôn ngữ tự nhiên xử lý yêu cầu của người dùng giống như một chatbot Module chuyển văn bản thành tiếng nói chuyển đổi câu trả lời từ chatbot thành ngôn ngữ nói cho người dùng Việc phát triển một bộ nhận dạng tiếng nói hiệu quả cho tất cả mọi người là thách thức lớn, yêu cầu dữ liệu huấn luyện đa dạng về giọng nói, độ tuổi và vùng miền Tương tự, bộ sinh tiếng nói cần tạo ra âm thanh tự nhiên, phản ánh cách nói của con người, với khó khăn trong việc diễn đạt câu nói theo nhiều giọng và cách nhấn khác nhau tùy thuộc vào hoàn cảnh.
2.2.4 Một vài hướng nghiên cứu hiện tại
Mô hình dựa trên truy xuất (retrieval-based model) sử dụng một kho định nghĩa sẵn có để tìm kiếm câu trả lời, khác với các mô hình sinh (generative models) có khả năng tạo ra câu trả lời mới Khi nhận một câu đầu vào, mô hình này sẽ xác định một ngữ cảnh và chọn ra câu trả lời phù hợp nhất Đầu ra của mô hình là câu trả lời tốt nhất, được xác định thông qua việc tính toán điểm cho tất cả các câu trả lời và lựa chọn câu có điểm số cao nhất.
Các mô hình sinh (Generative models) tự động tạo ra câu trả lời từ đầu mà không cần định nghĩa trước Chúng dựa trên kỹ thuật dịch máy, chuyển đổi câu thoại này sang câu thoại khác thay vì chỉ chuyển ngôn ngữ Mỗi phương pháp có ưu nhược điểm riêng; các mô hình dựa trên kho dữ liệu (retrieval-based) không mắc lỗi cú pháp nhưng không thể xử lý các tình huống chưa từng thấy Ngược lại, các mô hình sinh thông minh hơn, có khả năng truy xuất thông tin từ đầu vào và phản hồi tự nhiên như cuộc trò chuyện với con người Tuy nhiên, việc huấn luyện các mô hình này khó khăn hơn, dễ mắc lỗi cú pháp và cần nhiều dữ liệu Deep learning có thể áp dụng cho cả hai loại mô hình, nhưng nghiên cứu thường tập trung vào hướng generative Kiến trúc deep learning như Sequence to Sequence rất phù hợp cho việc tạo ra câu văn, và các nhà nghiên cứu hy vọng sẽ có những tiến bộ nhanh chóng trong lĩnh vực này, mặc dù hiện tại chúng ta vẫn đang ở giai đoạn đầu trong việc phát triển các mô hình sinh giao tiếp hợp lý, với các hệ thống hiện tại chủ yếu là dựa trên kho dữ liệu.
C Tình hình nghiên cứu trong và ngoài nước
Ba lĩnh vực: nhận dạng và tổng hợp tiếng nói, nhận dạng chữ, và xử lý ngôn ngữ tự nhiên có mối liên hệ chặt chẽ, đóng vai trò quan trọng trong việc phát triển và ứng dụng công nghệ thông tin ở mọi quốc gia.
Nhận dạng tiếng nói chuyển đổi thông tin từ giọng nói con người sang máy tính, trong khi tổng hợp tiếng nói tạo ra giọng nói nhân tạo từ máy tính Sự phát triển nhanh chóng của công nghệ thông tin và Internet đã làm cho nhận dạng và tổng hợp tiếng nói trở thành xu hướng tất yếu trong thế kỷ 21 Trong 50 năm qua, nhiều thuật toán đã được triển khai cho các hệ thống này, với nhiều phần mềm thương mại như IBM ViaVoice, Dragon Naturally Speaking và L&H Voice Xpress cung cấp chức năng nhập văn bản, đọc văn bản thành lời và duyệt web bằng giọng nói Microsoft đã tích hợp giao diện người dùng bằng giọng nói (VUI) vào hệ điều hành Windows mới, thay thế giao diện đồ họa truyền thống (GUI), cho phép giao tiếp đơn giản hơn giữa người và máy tính Nhận dạng và tổng hợp tiếng nói đóng vai trò quan trọng trong phát triển các hệ thống thông tin di động thế hệ thứ 3 (3G), với ứng dụng nổi bật như hệ thống thông điệp hợp nhất (UMS) Công nghệ của Dialogic đã tích hợp nhận dạng và tổng hợp tiếng nói qua điện thoại cho nhiều ngôn ngữ Latinh, đồng thời ứng dụng trong điều khiển bằng giọng nói, bảo mật, tự động hóa văn phòng, viễn thông, bảo tồn văn hóa và hỗ trợ người khuyết tật.
Trong lĩnh vực nhận dạng chữ, các phần mềm thương mại như OMNIPAGE 11.0 của Caere, Fine Reader 7.0 của ABBYY, Yonde OCR của Aisoft và KanjiScan của Nhật Bản đã đạt được chất lượng nhận dạng cao cho các ngôn ngữ Latinh và Slavơ Để có được những phiên bản chất lượng này, các hãng phần mềm đã không ngừng phát triển và hoàn thiện các chức năng nhận dạng cũng như xử lý trước và sau Tuy nhiên, chất lượng nhận dạng chữ viết tay vẫn còn thấp hơn nhiều, với các phương pháp hiện tại chỉ nhận dạng được một phần hạn chế Do đó, các tạp chí chuyên ngành vẫn thường xuyên đề cập đến các phương pháp cải tiến nhằm nâng cao chất lượng nhận dạng, tách và cắt chữ, cũng như kết hợp với ngữ nghĩa của từng ngôn ngữ cụ thể Bên cạnh đó, xử lý ngôn ngữ tự nhiên đang trở thành một lĩnh vực quan trọng, giúp máy tính hiểu và sử dụng ngôn ngữ tự nhiên của con người, bao gồm dịch tự động, tìm kiếm thông tin và tổng hợp văn bản.
Dịch văn bản tự động từ ngôn ngữ này sang ngôn ngữ khác bằng máy tính đã là một mục tiêu từ những ngày đầu của công nghệ thông tin Kể từ những năm 1960, với sự phát triển trong lĩnh vực xử lý ngôn ngữ tự nhiên và tiến bộ công nghệ, việc dịch tự động đang ngày càng trở nên khả thi Hiện tại, nhiều hệ thống dịch máy thương mại như SYSTRAN, GLOBALINK, STYLUS và IBM đã cho ra đời các sản phẩm với chất lượng chấp nhận được, chủ yếu tập trung vào các ngôn ngữ châu Âu như Anh, Pháp, Đức và Tây Ban Nha Những sản phẩm này được sử dụng rộng rãi trên nhiều nền tảng, từ phần mềm cho máy tính lớn đến thiết bị cầm tay chuyên dụng Tuy nhiên, hiện tại vẫn chưa có hệ thống dịch thương mại nào hỗ trợ dịch giữa tiếng Anh và tiếng Việt.
Tình hình nghiên cứu trong nước:
Nghiên cứu về nhận dạng và ứng dụng đã được tiến hành ở Việt Nam từ sớm, với các chương trình quốc gia về CNTT từ năm 1981 tập trung vào lĩnh vực này Đặc biệt, từ năm 1991, chương trình KC-01 đã chú trọng đến nhận dạng và xử lý thông tin hình ảnh, với các đề tài như KC-01-10 và KC-01-07 đạt được đánh giá xuất sắc Tuy nhiên, giai đoạn này chủ yếu chỉ tập trung vào nhận dạng chữ và một phần dịch tự động, trong khi nghiên cứu về nhận dạng và tổng hợp tiếng nói vẫn còn hạn chế Mặc dù thế giới đã có tiến bộ trong lĩnh vực này, nhu cầu giao tiếp bằng tiếng Việt với máy tính ngày càng trở nên cấp thiết Để phát triển nhận dạng và tổng hợp tiếng nói Việt, cũng như máy hiểu ngôn ngữ Việt, cần có nghiên cứu dựa trên đặc trưng ngôn ngữ tiếng Việt Một số cơ sở đã bắt đầu thực hiện nghiên cứu trong lĩnh vực này.
Phòng Nhận dạng và Công nghệ Tri thức, Viện Công nghệ Thông tin,
Trung tâm MICA, Đại học Bách khoa, Hà nội
Nhóm nghiên cứu của Bộ môn Khoa học Máy tính, Khoa CNTT, ĐHBK Hà Nội,
Nhóm nghiên cứu của Khoa Công nghệ Thông tin, Trường Đại học Khoa học Tự nhiên, TP Hồ Chí Minh,
Công ty CDIT, Tổng Công ty Bưu chính Viễn thông Việt nam
Softext, Viện ứng dụng công nghệ
Một số công trình của các cá nhân làm đề tài thạc sĩ và tiến sĩ
Nhận dạng và tổng hợp tiếng Việt là một vấn đề phức tạp, đòi hỏi nghiên cứu lâu dài Trong thời gian qua, các nghiên cứu chủ yếu tập trung vào thử nghiệm ban đầu với một số kỹ thuật cơ bản và ứng dụng điều khiển bằng giọng nói với từ vựng hạn chế, chưa khai thác đặc điểm riêng của ngữ âm tiếng Việt Đề tài KC-01-10 chỉ tiến hành nghiên cứu về tổng hợp và nhận dạng tiếng Việt trong hai năm cuối (1999-2000), dẫn đến việc chưa có sản phẩm ứng dụng rộng rãi cho các lĩnh vực như văn phòng hay viễn thông.
Phòng Nhận dạng và Công nghệ tri thức Viện CNTT đã đạt được những thành công ban đầu trong lĩnh vực nhận dạng chữ Việt in với phần mềm VnDOCR 2.0, hiện đang được thương mại hóa rộng rãi Tuy nhiên, phần mềm này cần được cải thiện để nâng cao chất lượng nhận dạng đối với các văn bản có chất lượng kém và tài liệu cũ Các trường đại học như Bách khoa Hà Nội và Đại học Quốc gia cũng đang nghiên cứu về nhận dạng chữ cho sinh viên, nhưng chủ yếu ở dạng nghiên cứu học thuật chứ chưa thành sản phẩm thương mại Bên cạnh đó, sản phẩm Image Scan của Công ty CadPro cũng đã có những bước giới thiệu trên thị trường Cuối cùng, việc phát triển nhận dạng chữ viết tay tiếng Việt cũng cần được chú trọng để giải quyết các vấn đề cụ thể trong lĩnh vực này.
Xử lý ngôn ngữ tự nhiên tiếng Việt chủ yếu tập trung vào dịch tự động, với sản phẩm nổi bật là phần mềm EVTRAN, một công cụ biên dịch tự động Anh-Việt đã có mặt trên thị trường Phiên bản mới nhất, EVTRAN 2.0, cung cấp nhiều tính năng trợ lý ngôn ngữ tiện lợi và đã được phát triển hơn mười năm kể từ năm 1990, hỗ trợ người dùng trong việc đọc hiểu văn bản tiếng Anh và dịch sang tiếng Việt Tuy nhiên, hiện tại vẫn chưa có hệ thống dịch ngược lại (Việt-Anh), và giống như nhiều sản phẩm dịch tự động khác trên thế giới, EVTRAN cần tiếp tục được cải thiện Đặc biệt, cần chú trọng đến các nghiên cứu và công cụ cơ sở cho xử lý ngôn ngữ tự nhiên tiếng Việt, bao gồm từ điển điện tử và phân tích, hiểu tiếng Việt trên máy tính.
MẠNG NƠ-RON HỒI QUY ỨNG DỤNG TRONG XỬ LÝ NGÔN NGỮ TỰ NHIÊN
Lý thuyết mạng nơ-ron
3.1.1 Mạng nơ-ron nhân tạo ANN
Mạng nơ-ron nhân tạo (ANN) là mô hình xử lý thông tin mô phỏng hoạt động của hệ thống thần kinh sinh vật, với nhiều nơ-ron liên kết để xử lý dữ liệu ANN hoạt động tương tự như bộ não con người, học hỏi từ kinh nghiệm qua quá trình huấn luyện, lưu giữ tri thức và sử dụng chúng để dự đoán dữ liệu chưa biết Các phần tử xử lý (PE) trong ANN được gọi là nơ-ron, nhận dữ liệu đầu vào, xử lý và tạo ra kết quả đầu ra duy nhất, mà kết quả này có thể được sử dụng làm đầu vào cho các nơ-ron khác.
Hình 3.1 Kiến trúc mạng nơ-ron nhân tạo ANN
Mạng ANN bao gồm ba thành phần chính: lớp đầu vào (input layer), lớp ẩn (hidden layer) và lớp đầu ra (output layer) Lớp ẩn chứa các nơ-ron, nhận dữ liệu đầu vào từ các nơ-ron của lớp trước và chuyển đổi thông tin này cho các lớp xử lý tiếp theo Quá trình xử lý thông tin trong một mạng ANN diễn ra qua các bước liên kết giữa các lớp.
Hình 3.2 Quá trình xử lý thông tin của nơ-ron j trong mạng ANN
Mỗi input trong mạng nơ-ron nhân tạo (ANN) tương ứng với một thuộc tính của dữ liệu, ví dụ như thu nhập, nghề nghiệp, tuổi, và số con trong ứng dụng ngân hàng để xem xét khả năng cho vay Output là giải pháp cho vấn đề, chẳng hạn như quyết định cho vay (yes) hoặc không cho vay (no) Trọng số liên kết (Connection Weights) đóng vai trò quan trọng trong ANN, thể hiện mức độ ảnh hưởng của dữ liệu đầu vào đến quá trình xử lý thông tin Quá trình học (Learning Processing) thực chất là điều chỉnh các trọng số của input data để đạt được kết quả mong muốn Hàm tổng (Summation Function) tính tổng trọng số của tất cả các input vào mỗi nơ-ron, được tính theo công thức cụ thể cho n input.
Kết quả nghiên cứu cho thấy khả năng kích hoạt của nơ-ron trong mạng nơ-ron nhân tạo (ANN) có thể dẫn đến việc sinh ra output hoặc không, tùy thuộc vào hàm chuyển đổi (Transfer Function) Việc lựa chọn hàm chuyển đổi có ảnh hưởng lớn đến kết quả cuối cùng của ANN, vì output tại các nơ-ron thường là tổng hợp và có thể rất lớn Do đó, hàm chuyển đổi được sử dụng để điều chỉnh output trước khi chuyển đến layer tiếp theo Hàm chuyển đổi phi tuyến phổ biến trong ANN là hàm sigmoid (logical activation).
Hàm Sigmoid, được định nghĩa bởi công thức 1 + 𝑒 −𝑌, cho kết quả trong khoảng [0, 1] và thường được gọi là hàm chuẩn hóa Thay vì chỉ sử dụng hàm chuyển đổi, giá trị ngưỡng (Threshold value) cũng được áp dụng để kiểm soát đầu ra của các nơ-ron trong một lớp trước khi chuyển tiếp đến các lớp tiếp theo; nếu đầu ra nhỏ hơn ngưỡng, nó sẽ không được chuyển tiếp Mạng nơ-ron thường được ứng dụng trong các bài toán nhận dạng mẫu như nhận dạng chữ cái quang học, chữ viết tay, tiếng nói và khuôn mặt.
3.1.2 Mạng nơ-ron hồi quy RNN
Mạng nơ-ron hồi quy (RNN - Recurrent Neural Network) là một mô hình Deep Learning nổi bật trong xử lý ngôn ngữ tự nhiên (NLP) RNN được thiết kế để xử lý thông tin dạng chuỗi, cho phép thực hiện lặp lại cùng một tác vụ cho từng thành phần trong chuỗi Kết quả đầu ra tại thời điểm hiện tại phụ thuộc vào kết quả của các thành phần trước đó, cho thấy RNN có khả năng "nhớ" thông tin đã tính toán trước, khác với các mạng nơ-ron truyền thống Mặc dù lý thuyết cho rằng RNN có thể nhớ thông tin của chuỗi có chiều dài bất kỳ, nhưng trong thực tế, mô hình này chỉ có khả năng nhớ thông tin ở vài bước trước đó.
RNN (Recurrent Neural Network) có nhiều ứng dụng trong các lĩnh vực như mô hình ngôn ngữ và phát sinh văn bản Mô hình ngôn ngữ giúp xác định xác suất của một câu trong ngôn ngữ, đồng thời dự đoán xác suất từ tiếp theo trong một câu cho trước Từ đó, chúng ta có thể mở rộng sang bài toán phát sinh văn bản, cho phép tạo ra nội dung mới dựa trên dữ liệu huấn luyện Ví dụ, nếu huấn luyện mô hình bằng dữ liệu tư vấn bán hàng, nó có thể tạo ra các câu trả lời cho câu hỏi liên quan đến thương mại điện tử Trong mô hình ngôn ngữ, đầu vào là chuỗi từ (được mã hóa thành one-hot vector) và đầu ra là chuỗi từ dự đoán Bên cạnh đó, RNN còn được ứng dụng trong dịch máy, nơi đầu vào là chuỗi từ ngôn ngữ nguồn và đầu ra là chuỗi từ ngôn ngữ đích Điểm khác biệt là đầu ra chỉ được dự đoán khi đầu vào đã hoàn toàn được phân tích Cuối cùng, RNN cũng có thể được sử dụng để phát sinh mô tả cho ảnh bằng cách kết hợp với Convolutional Neural Networks, tạo ra những câu mô tả từ các đặc trưng rút trích trong bức ảnh.
Huấn luyện Mạng Nơ-ron Hồi tiếp (RNN) tương tự như quá trình huấn luyện Mạng Nơ-ron Nhân tạo (ANN) truyền thống Tuy nhiên, giá trị tại mỗi đầu ra không chỉ dựa vào kết quả của bước hiện tại mà còn phụ thuộc vào các kết quả tính toán của những bước trước đó.
Hình 3.3 Quá trình xử lý thông tin trong mạng RNN
RNN có khả năng nắm bắt mối quan hệ phụ thuộc giữa các thành phần trong chuỗi Khi chuỗi đầu vào là một câu gồm 5 từ, RNN sẽ được dàn ra thành 5 lớp, mỗi lớp tương ứng với một từ, với chỉ số từ được đánh từ 0 đến 4 Trong quá trình này, xt đại diện cho đầu vào (vector one-hot) tại thời điểm t, trong khi St là trạng thái ẩn (bộ nhớ) tại thời điểm t, được tính toán dựa trên các trạng thái ẩn trước đó kết hợp với đầu vào hiện tại.
S−1 là trạng thái ẩn được khởi tạo dưới dạng một vector không O t tại thời điểm thứ t là một vector chứa xác suất của tất cả các từ trong từ điển.
RNN (Mạng nơ-ron hồi tiếp) khác với ANN (Mạng nơ-ron truyền thống) ở chỗ chỉ sử dụng một bộ tham số (U, V, W) cho toàn bộ các bước, thay vì cần một tham số khác cho mỗi lớp Mặc dù lý thuyết cho rằng RNN có thể nhớ thông tin của một chuỗi dài vô tận, việc thực hiện điều này trong thực tế gặp nhiều khó khăn do hạn chế của phần cứng và thuật toán Trong những năm gần đây, các nhà nghiên cứu đã phát triển nhiều loại RNN tinh vi hơn để khắc phục những hạn chế này Một trong số đó là Bidirectional RNN, cho phép đầu ra tại thời điểm t không chỉ phụ thuộc vào các thành phần trước đó mà còn vào các thành phần trong tương lai.
Để dự đoán một từ bị thiếu trong chuỗi, cần xem xét các từ ở cả hai phía của từ đó Mô hình sử dụng hai RNNs chồng lên nhau, trong đó các trạng thái ẩn được tính toán dựa trên thông tin từ cả hai bên trái và bên phải.
Mạng nơ-ron hồi tiếp dài ngắn (LSTM) có cấu trúc tương tự như RNN nhưng sử dụng phương pháp tính toán khác cho các lớp ẩn Trong LSTM, bộ nhớ được gọi là cells, hoạt động như một hộp đen nhận thông tin đầu vào từ trạng thái ẩn trước đó và giá trị xt Bên trong các cells, LSTM quyết định thông tin nào cần được lưu trữ và thông tin nào cần được xóa, cho phép mô hình này duy trì thông tin dài hạn hiệu quả.
3.1.3 Mạng Long Short-Term Memory LSTM Ý tưởng ban đầu của RNN là kết nối những thông tin trước đó nhằm hỗ trợ cho các xử lý hiện tại Nhưng đôi khi, chỉ cần dựa vào một số thông tin gần nhất để thực hiện tác vụ hiện tại Ví dụ, trong mô hình hóa ngôn ngữ, chúng ta cố gắng dự đoán từ tiếp theo dựa vào các từ trước đó Nếu chúng ta dự đoán từ cuối cùng trong câu “đám_mây bay trên bầu_trời”, thì chúng ta không cần truy tìm quá nhiều từ trước đó, ta có thể đoán ngay từ tiếp theo sẽ là “bầu_trời” Trong trường hợp này, khoảng cách tới thông tin liên quan được rút ngắn lại, mạng RNN có thể học và sử dụng các thông tin quá khứ
Hình 3.4 RNN phụ thuộc short-term
Trong một số trường hợp, việc hiểu ngữ cảnh là rất quan trọng để có được thông tin đầy đủ Chẳng hạn, khi dự đoán từ cuối cùng trong câu "Tôi sinh ra và lớn lên ở Việt Nam Tôi có thể nói thuần thục Tiếng Việt", thông tin gần nhất cho thấy từ tiếp theo có thể là tên một ngôn ngữ Tuy nhiên, để xác định chính xác ngôn ngữ đó, cần phải xem xét ngữ cảnh rộng hơn liên quan đến Việt Nam Điều này cho thấy rằng RNN phải tìm kiếm nhiều thông tin liên quan, và số lượng thông tin đó có thể trở nên rất lớn Thật không may, RNN không thể học cách kết nối các thông tin này một cách hiệu quả.
Hình 3.5 RNN phụ thuộc long-term
Phương pháp học chuỗi Seq2seq
Mô hình ngôn ngữ ứng dụng cho phép tiếp nhận chuỗi các phần tử đầu vào, phân tích từng phần tử và dự đoán các phần tử tiếp theo trong chuỗi văn bản Quá trình này có thể được mô tả qua một phương trình hàm số.
Trong mô hình chuỗi thời gian, 𝑌𝑡 đại diện cho phần tử tại thời điểm t, trong khi 𝑌𝑡−1 là phần tử trước đó Hàm f ánh xạ các phần tử trước đó sang phần tử tiếp theo, và trong các ứng dụng hiện đại, f thường là mạng nơ-ron có khả năng dự đoán phần tử tiếp theo dựa trên phần tử hiện tại Mô hình ngôn ngữ có khả năng sinh sản, và khi được huấn luyện, chúng có thể tạo ra các chuỗi thông tin bằng cách sử dụng đầu ra từ bước trước làm đầu vào cho mô hình.
Trong quá trình huấn luyện, mô hình LSTM dự đoán phần tử tiếp theo trong chuỗi output dựa trên phần tử hiện tại của chuỗi target Khi phát sinh, mô hình sử dụng kết quả từ bước trước làm đầu vào cho dự đoán tiếp theo Khác với các mô hình ngôn ngữ đơn giản chỉ dự đoán xác suất cho từ tiếp theo dựa trên từ hiện tại, LSTM ghi nhớ toàn bộ bối cảnh của chuỗi đầu vào và dự đoán xác suất cho các từ tiếp theo dựa trên tất cả các từ trước đó LSTM có thể được áp dụng như một mô hình ngôn ngữ để sinh các phần tử của chuỗi sau khi đã được huấn luyện với các chuỗi tương tự.
Kết quả từ luận văn vẫn thiếu các thành phần cần thiết để xây dựng mô hình đề xuất, vì chỉ thao tác trên một chuỗi đơn, trong khi quy trình tư vấn bán hàng yêu cầu có câu hỏi và câu trả lời Phương pháp học chuỗi liên tiếp seq2seq được áp dụng, cho phép xử lý cả hai câu, giúp mạng LSTM thông minh hơn trong việc "sinh" từ bằng cách hiểu ngữ cảnh từ chuỗi đầu vào Giải pháp thực hiện là bổ sung bộ mã hóa Encoder và bộ giải mã Decoder Trong bước mã hóa, mô hình chuyển đổi chuỗi đầu vào thành đại diện cố định; trong bước giải mã, mô hình ngôn ngữ được huấn luyện trên cả hai chuỗi output và chuỗi đại diện cố định Khi bộ mã hóa nhận thấy cả hai thông tin, nó có thể dự đoán chính xác từ tương lai dựa vào từ hiện tại Ví dụ, từ "đi" có thể ám chỉ đến sự di chuyển hoặc sự ra đi của một người, nhưng với bối cảnh từ bộ mã hóa, bộ giải mã sẽ chọn từ tiếp theo phù hợp hơn Mô hình chuỗi sang chuỗi được xây dựng với bộ mã hóa sử dụng mạng RNN để xử lý chuỗi đầu vào và bộ giải mã cũng sử dụng mạng RNN để dự đoán từ tiếp theo trong chuỗi đã được dịch Sau khi huấn luyện, mô hình có thể dịch bằng cách mã hóa câu cần dịch và chạy mạng ở chế độ sinh văn bản.
Hình 3.14 Mô hình chuỗi liên tiếp Seq2Seq
Mô hình chuỗi sang chuỗi sử dụng bộ mã hóa để tạo ra một chuỗi các trạng thái, trong khi bộ giải mã là một mô hình ngôn ngữ với tham số bổ sung cho các trạng thái cuối cùng của bộ mã hóa Điều này cho phép chúng ta mô hình hóa các chuỗi đơn giản bằng cách dự đoán từ tiếp theo dựa trên từ trước đó Hơn nữa, quá trình xây dựng mô hình phức tạp bao gồm việc mã hóa chuỗi đầu vào thành bối cảnh và sinh chuỗi đầu ra thông qua một mạng nơ-ron riêng biệt.
Mô hình seq2seq bao gồm hai mạng RNN: bộ mã hóa và bộ giải mã Bộ mã hóa nhận một chuỗi đầu vào và xử lý từng từ tại mỗi bước, với mục tiêu chuyển đổi chuỗi thành một vectơ đặc trưng có kích thước cố định, mã hóa thông tin quan trọng và loại bỏ thông tin không cần thiết Luồng dữ liệu trong bộ mã hóa diễn ra theo trục thời gian, tương tự như việc truyền thông tin từ phần tử kết thúc của chuỗi sang chuỗi khác.
Hình 3.15 Mô hình đối thoại seq2seq
Mỗi trạng thái ẩn ảnh hưởng đến trạng thái ẩn tiếp theo, và trạng thái ẩn cuối cùng được xem như một tóm tắt tích lũy về chuỗi, được gọi là bối cảnh hay vector suy diễn, đại diện cho ý định của chuỗi Từ bối cảnh này, các bộ giải mã tạo ra chuỗi, một phần tử (word) tại một thời điểm, với mỗi bước bị ảnh hưởng bởi bối cảnh và các phần tử đã được sinh ra trước đó.
Hình 3.16 Bộ mã hóa và giải mã seq2seq
Việc sử dụng mô hình này gặp phải một số thách thức, trong đó vấn đề nghiêm trọng nhất là khả năng xử lý chuỗi dài, điều này ảnh hưởng đến hầu hết các ứng dụng chuỗi sang chuỗi Thêm vào đó, kích thước từ vựng lớn (khoảng 20,000 từ) khiến bộ giải mã phải thực hiện hàm softmax nhiều lần cho mỗi từ xuất ra, làm chậm quá trình huấn luyện dù phần cứng có khả năng đáp ứng Đại diện từ ngữ cũng rất quan trọng, vì việc sử dụng one-hot vector dẫn đến các vector thưa thớt lớn mà không mang lại ý nghĩa ngữ nghĩa cho từ Dưới đây là một số giải pháp cho những vấn đề này.
PADDING – Tạo độ dài cố định
Trước khi tiến hành huấn luyện, cần chuyển đổi độ dài của các phần tử trong chuỗi thành các chuỗi có độ dài cố định bằng cách thêm phần tử đệm PADDING Các phần tử đệm đặc biệt sẽ được sử dụng trong quá trình này.
- EOS: Kết thúc câu (End of sentence)
- PAD: Phần đệm bù (Filler)
- GO: Bắt đầu giải mã (Start decoding)
- UNK: Unknown; từ không biết, không có trong từ điển từ vựng Xem xét một cặp ví dụ HỎI – ĐÁP sau đây:
Giả sử chúng ta muốn xử lý các đoạn hội thoại có độ dài 10, kết quả cặp Q/A trên sẽ được chuyển đổi thành như sau:
Q: [PAD, PAD, PAD, PAD, PAD, PAD, “?”, “you”, “are”, “How”]
A: [GO, “I”, “am”, “fine”, “.”, EOS, PAD, PAD, PAD, PAD]
BUCKETING – Tránh lu mờ thông tin
Bộ đệm đã giải quyết vấn đề độ dài của các chuỗi, nhưng khi gặp các câu dài, như câu dài nhất có độ dài 100, tất cả các chuỗi khác cũng cần được mã hóa với độ dài 100 để bảo toàn thông tin Ví dụ, câu "How
Bucketing giải quyết vấn đề này bằng việc đặt các câu vào các xô buckets có kích thước khác nhau Ví ta có một danh sách các xô buckets: [(5, 10), (10, 15),
(20, 25), (40, 50)] Nếu độ dài của mẫu hỏi là 4 như ví dụ trên sẽ được đặt vào xô
Trong quá trình huấn luyện hoặc dự đoán, mẫu hỏi sẽ có độ dài 5 và đáp án sẽ có độ dài 10 Chúng ta sẽ sử dụng một mô hình riêng cho mỗi bucket, phù hợp với độ dài của mẫu hỏi và câu trả lời Tất cả các mô hình này sẽ chia sẻ các tham số giống nhau, đảm bảo hoạt động chính xác theo cách đồng nhất.
Nếu chúng ta sử dụng xô (5, 10), thì các câu sẽ được mã hóa thành:
A: [GO, “I”, “am”, “fine”, “.”, EOS, PAD, PAD, PAD, PAD]
Word Embedding – Mật độ dày đặc
Word Embedding là kỹ thuật học đại diện từ trong không gian vector với kích thước nhỏ hơn, nơi mỗi từ được biểu diễn như một điểm với vector cố định Kỹ thuật này thường được áp dụng trong lớp đầu tiên của mạng, nơi lớp embedding ánh xạ chỉ số từ trong từ điển sang vector dày đặc có kích thước xác định Trong mô hình seq2seq, trọng số của lớp embedding được huấn luyện đồng thời với các tham số khác của mô hình.
3.3 Ngôn ngữ lập trình Python
3.3.1 Ngôn ngữ lập trình Python
Python là ngôn ngữ lập trình hướng đối tượng, cấp cao và mạnh mẽ, được phát triển bởi Guido van Rossum Với khả năng dễ học, Python đang trở thành một trong những ngôn ngữ lập trình nhập môn tốt nhất cho người mới Ngôn ngữ này hoàn toàn hỗ trợ kiểu động và có cơ chế cấp phát bộ nhớ tự động Python nổi bật với cấu trúc dữ liệu cấp cao và phương pháp lập trình hướng đối tượng đơn giản, hiệu quả Cú pháp rõ ràng, dễ hiểu và tính linh hoạt của Python giúp nó nhanh chóng trở thành lựa chọn lý tưởng cho việc viết script và phát triển ứng dụng trên nhiều nền tảng.
Python là một ngôn ngữ lập trình cổ điển, được phát triển bởi Guido Van-Rossum Quá trình thiết kế bắt đầu vào cuối thập niên 1980 và phiên bản đầu tiên được phát hành vào tháng 2 năm 1991.
Vào cuối những năm 1980, Guido Van Rossum đã phát triển Python trong quá trình làm việc với hệ điều hành Amoeba, với mong muốn tạo ra một ngôn ngữ lập trình đơn giản và dễ học như ABC để dễ dàng truy cập các cuộc gọi hệ thống Python nổi bật với cú pháp rõ ràng, dễ đọc và dễ viết, giúp lập trình viên tập trung vào giải pháp thay vì cú pháp phức tạp, so với các ngôn ngữ như C++, Java, hay C# Python hoàn toàn miễn phí và mã nguồn mở, cho phép người dùng tự do sử dụng, phân phối, và thay đổi mã nguồn, đồng thời hưởng lợi từ một cộng đồng lớn luôn cải tiến ngôn ngữ này qua từng bản cập nhật.
Ngôn ngữ lập trình Python
4.1 Sơ đồ khối, lưu đồ giải thuật
Quá trình đầu tiên và quan trọng trong nghiên cứu chatbot tự động là thu thập và xử lý dữ liệu, với tập dữ liệu kịch bản càng phong phú, chatbot sẽ cung cấp phản hồi đa dạng và chính xác hơn Tiếp theo, cần xác định thuật toán và mô hình huấn luyện phù hợp để tối ưu hóa dữ liệu Để biến chatbot thành một robot giao tiếp hiệu quả, cần tích hợp các thuật toán xử lý giọng nói thành văn bản và chuyển văn bản thành giọng nói Tất cả các bước này được thể hiện qua sơ đồ khối trong hình 4.1.
Hệ thống hoạt động bằng cách nhận câu hỏi âm thanh qua micro, sau đó chuyển đổi thành văn bản Khi người dùng đặt câu hỏi tương tự như "key question", robot sẽ được kích hoạt để giải mã câu hỏi thông qua bộ giải mã thuật toán LSTM Sau khi giải mã, kết quả sẽ được so sánh với các lớp đã được định nghĩa như hỏi về thời gian, ngày giờ, và các thông tin khác.