1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo nhóm cuối kỳ phân tích dữ liệu lớn trong đầu tư và kinh doanh

47 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Nội dung

Trang 1

TRUONG DAI HOC KINH TE THANH PHO HO CHI MINH

UNIVERSITY

BAO CAO NHOM CUOI KY

PHAN TICH DU LIEU LON TRONG DAU TU VA KINI DOANH

Giảng viên: Nguyễn Khánh Duy

Trang 2

Biên dich và báo cáo L7 đến 17.3

Ung dung chuong17

Biên dịch và báo cáo (18.4 - 18.5) Kết luận

Trang 3

17.1 Speech to Text - Chuyên giọng nói thành văn bản - 5-5-5 S222222222ES sec s2 e2 6 17.2 Importing the Packages for Chatbot - Nhap cac gói cho Chatbot - 8 17.3 Preprocessing the Data for Chatbot - TỉHn xử lý dữ liệu cho Chatbot - 9 17.3.1 Download the Data - Tải dữ liệu - - - - - À0 2n SH ng HH cư 9 17.3.2 Reading the Data from the Ailes - Đọc dữ liệu từ các tập tỉn - 272555 9 17.3.3 Preparing Data for Seq2Seq Model - Chuẩn bI dữ liệu cho mô hình Seq2Sed 12 ID 0))0 80.0.0000) 0n eeeeceeneeeeeeeeenneeeeeees 16 17.5 HuNn luyện mô hình Encoder-Decoder - 5-2 2 2 22 22 2x 2x nh, 18 IÙ0.(Ề0)0) 0) 0.7) 21 17.7 Trò chuyện với Chatbot . << sa

Chương 18 Mạng Đối Kháng Tạo Sinh Tích Chập Sâu

Inc 9 0 25

18.2 Thidt Lap aD 26

18.2.1 Nap (Load) va Chudn BI Dit Ligue cc ccececcc cece cece cece cece ee ceeeeeeeaeaeneeeeeeeeaeieenes 28 18.3 Tạo Các Mô Hình 2222222232323 21 Họ TK TH TH 30 18.3.1 Bộ Tạo Sinh (GeneratOF) ĐT TT TT nn TT TT TT ng HH Hà HH Hs BH 30 18.3.2 Bộ phân biệt (The Discriminator') - - - - 2< 32 xxx TH Hàng 31

18.4.1 MNt mát của bộ phân biệt (Discriminatfor Ïoss) - S5 5n nen xin xe 33 18.4.2 MNt mát của bộ sinh (Generator Ù0sS) Q2 S0 HH HH nghe xe 33 18.5 Lưu Checkpoint (Save Checkpoinf) - - - - - - 2n Tnhh hen re 34 18.6 Xác đlnh Training Loop - - 5 5à + + xxx Lọ HT TT KH 35 I1 5M 0) 0 1 39

TII:Kết luận 222 S222 S29 SE S553 111321 252121111 212120111 1215010111111 111 1110151101111 51 Hee 46

Trang 4

Giới thiệu Python trong ứng dụng AI I AI là gì? Lập trình AI bằng Python

Trí tuệ nhân tạo - Artificial Intelligence (viét tat: AI) la su mé phéng trí tuệ con người bằng máy móc, đặc biệt là hệ thông máy tính AI hoạt động bằng cách sử dụng một lượng lớn dữ liệu đào đạo được đán nhãn, phân tích để tìm ra mối quan hệ đề tìm ra mối quan tương quan giữa các dữ liệu, đồng thời sử dụng các kết quả này để dự đoán về các trạng thái trong tương lai AI tập trung vào các kỹ

năng như học hỏi, lý luận, tự điều chỉnh, sáng tạo

Ngày nay, AI như một biểu tượng của thời đại AI có thể xử lý một lượng dữ liệu khổng lỗ, cung cấp nhiều hiên biết mới hoặc sâu hơn, các công cụ được phát triển từ AI hoàn thành các công việc nhanh chóng và tương đối ít lỗi AI mang lại nhiều lợi thế trong công việc và đời sống con người như tiết kiệm lao động vả tăng năng suất, giảm thời gian cho các công việc nặng về đữ liệu Một vải ứng dụng của hệ thống AI ngày nay như tự động hoá nhiều quy trình trong công nghệ thông tin, biên soạn nội dung, dự báo và hơn hết là một ứng dụng điển hình của AI: chatbox, speech, NLP va DCGAN

Đề có thê hình thành được một hệ thông AI thì cần các chương trình học sâu (Deep Learning - DL), hoc may (Machine Learning - ML) để học và sử dụng các thuật toán phức tạp, các mạng lưới thân kinh sâu để huấn luyện lặp đi lặp lại một mô hình hoặc mẫu cụ thê Python là một công cụ lập trình dé dàng thực hiện các mô hình DL, ML thông qua các thư viện và framework đa dạng

Subset of machine learning in

ultilayered neural networks learn from

+ Speech: kha nang nghe hiểu và phát âm các âm thanh của con người Khi các thiết bị điện tử như điện thoại, máy tính ngày càng phát triển hon thi Speech trở thành một phần không thể thiếu

Trang 5

trong các thiết bị Speech giúp các thiết bị đễ dàng giải đáp các thắc mắc người dùng, hỗ trợ và giải trí cùng người dùng

+ Natural Language Processing (NLP): la mét nhanh eta tri tué nhân tuệ, NLP nghiên cứu về cách máy tính hiểu và xử lý ngôn ngữ của con người khi viết, thông qua đó tiễn hành xử lý các thông tin và trả lời, giải đáp câu hỏi người dùng

- Deep Convolutional Generative Adversarial Network: 14 mét mô hình có chức năng sinh ra các hình ảnh mới từ một bộ dữ liệu đã có DCGAN gồm hai mạng đối nghịch nhau: một mạng sinh (generator) - nhan cac vector nhiễu và tạo ra một hình ảnh giả và một mạng phân biệt (discriminator) -

phân biệt hình ảnh giả Quá trình huấn luyện hướng tới mục tiêu cuối cùng là tạo một hình ảnh giống

thật nhất DCGAN được dùng cho nhiều mục đích như tạo ra hình ảnh những đối tượng chưa từng tồn tại, tăng cường chất lượng hình ảnh (làm rõ mặt ), tạo ra ảnh theo yêu cầu của người dùng

Hinh: Mô phỏng các giai đoạn của DCGAN

Với các ứng dụng vô cùng thực tế ngày nay, các công cụ kế trên đã khiến đời sống con người ngày càng thuận tiện hơn Đề có thê ứng dụng AI, nhất là các công cụ như chatbox, DCGAN trong công việc, học tập thì cần phải hiểu cách xây dựng, nguyên lý làm việc của các công cụ kế trên Vì lý do đó, nhém chon bién dich va ung dung 2 chuong “Chatbot, Speech, and NLP” va “Deep Convolutional Generative Adversarial Network” trong sach “Artificial Intelligence with Python” cua hai tac gia “Teik Toe Teoh” va “Zheng Rong”

Chwong 17: Chatbot, Speech, and NLP - Ung dung chatbox, Speech and NLP

Chatbox, Speech va NLP dang có những ứng dụng quan trọng trong nhiều lĩnh vực khác nhan Chatbox có thê được sử dụng để cung cấp hỗ trợ khách hàng tự động, tư vẫn mua sắm và giải đáp thắc mắc người dùng Speech recognition giúp chuyên đổi giọng nói thành văn bản, hỗ trợ người dùng thực hiện các nhiệm vụ qua giọng nói NLP là yếu tố chính giúp chatbox hiểu và xử lý ngôn ngữ tự nhiên, từ đó cung cấp trải nghiệm tương tác và thông minh trong giao tiếp người-máy Các ứng dung nay không chỉ tăng cường trải nghiệm người dùng mà còn giúp tối ưu hóa quy trinh làm việc và tạo ra những ứng dụng thông minh đáng giá trong nhiều lĩnh vực, từ thương mại điện tử đến y tế và giáo dục

Dưới đây là một số ứng dụng phố biến của chúng:

e Hỗ trợ Khách hàng: Tích hợp chatbox trên trang web đề hỗ trợ khách hàng trực tuyến Sử

dụng NLP để hiểu và trả lời câu hỏi khách hàng tự nhiên Tích hợp giọng nói để khách hàng có thể

tương tác bằng cách nói thay vỉ gõ

Trang 6

e = Tro ly ao va Chatbot: Xay dung tro lý ảo hoặc chatbot sử dụng NLP để hiểu và phản hồi các câu hỏi và yêu câu Kết hợp giọng nói để người đùng có thể tương tác bằng cách nói

® Ung dung Y 1é: Phát triển ứng dụng giọng nói để ghi âm và chuyên đổi thành văn bản y tế Sử dung NLP đề phân tích và trích xuất thông tin tir các tải liệu y tê

e_ Giáo dục và Học trực tuyến: Tích hợp chatbox để giải đáp câu hỏi của học viên Sử dụng giọng nói để cung cấp thông tin và hướng dẫn giảng dạy

® — Du lịch và Đặt phòng: Phát triển chatbot dé hỗ trợ người dùng trong việc đặt phòng khách sạn hoặc vé máy bay Tích hợp giọng nói đề đưa ra các thông tin chỉ tiết và hướng dẫn

e Ung dụng Giao thông: Sử dụng giọng nói để cung cấp thông tin giao thông và hướng dẫn lái xe Tích hợp NLP dé hiểu các yêu cầu tìm kiếm về địa điểm và dịch vụ

e _ Tô chức Hội nghị và Sự kiện: Phát triển chatbox đề hỗ trợ đăng ký và cung cấp thông tin về sự

kiện Sử dụng giọng nói để đặt lịch và gửi thông báo

e - Giải trí: Xây dựng trợ lý ảo cho ứng dụng giải trí để thực hiện các nhiệm vụ như đặt vé phim,

tìm kiểm thông tin về diễn viên, Sử đụng giọng nói để điều khiển các chức năng giải trí, như chơi nhạc, tìm kiểm video

17.1 Speech to Text - Chuyến giọng nói thành văn bản

Khái niệm: Speech to Text - chuyên giọng nói thành văn bản, chính là công nghệ nhận dạng giọng nói tự động (ASR - Automatic Speech Recognition) Công nghệ này cho phép tự động nhận dạng giọng nói của người dùng và chuyên đổi nó thành văn bản viết hoặc văn bản điện tử

Khi thực hiện đoạn mã nhận đạng giọng nói, cần cải đặt SpeechRecognition, pipwin và pyaudio trước

Tiến hành nhận dạng giọng nói

Bước 1: Nhập thư viện nhận dạng giọng nói và đặt tên ngắn gọn là “sr” để sử dụng trong code bằng câu lệnh đưới đây Lưu ý nên nhập module sys để có thể sử dụng chức năng của module này trong các bước tiếp theo Modnle này là một phân của thư viện tiêu chuẩn của Python và cung cấp các chức năng liên quan đến hệ thống (system) Một trong những chức năng quan trọng của module sys là quản lý các tham số và tương tác với trình thông dịch Python Sau đó Tạo một đối tượng “Recognizer” từ thư viện vừa nhập

Trang 7

print ("Accessing Microphone ")

Doan m trén sé in ra man hinh yéu cau ngudi ding noi gi dé trong vong 4 gidy va cho 4 giây để nhận được kết quả Sau đó in ra màn hỉnh “Accessing Mierophone” đề thông báo cho người dùng biết đang truy cập microphone đề thu âm giọng nói

Bước 3: Sử dụng một khối try đề thực hiện các thao tác liên quan đến microphone Trong khéi nay: @ Mé microphone véi sr.Microphone()

@ Sw dung radjust for ambient noise(source, duration=2) dé diéu chinh độ ồn môi trường trong 2 giây

@® Inra thông điệp "Waiting for you to speak "

® Sử dụng rilisten(source) để lắng nghe giọng nói từ người dùng và lưu trữ vào biển audio

try:

with sr.Microphone() as source:

r.adjust_ for ambient noise(source, duration=2)

except (ModuleNotFoundError,AttributeError): print ('Please check installation’) sys.exit (0)

ModuleNotFoundError: Xuất hiện khi mét module khéng thé duge tim thay trong qua trinh nhap (import) Diéu nay có thể xảy ra nêu thư viện speech_recognition (hoặc một phần của nó) không được cài đặt

AttributeEmor: Xuất hiện khi một đối tượng không có thuộc tính cụ thê được yêu cầu Trong trường hợp này, có thê xảy ra nêu Recognizer hoặc một thuộc tính cần thiết của nó không tồn tại Khi một trong những ngoại lệ này xảy ra, chương trình sẽ in ra thông điệp "Please check installation" dé 7

Trang 8

báo cho người dùng biết rằng có vẫn đề với cài đặt, và sau đó, sys.exit(0) duge sir dụng để kết thúc chương trình với mã trạng thái 0, cho biết rằng chương trình đã kết thúc mà không có lỗi (0 thường là mã trạng thái thành công)

Ngoài ra có thể tiếp tục thực hiện một nhận dạng giọng nói khác bằng cách sử dụng một khối try khác

Vi dụ: Sử dụng một khối try khác đề thực hiện nhận dạng giọng nói bằng dịch vụ nhận đạng giọng

nói của Google

try: print("You said " + r.recognize google (audio) )

Trong khối try, sử dụng phương thức recognize_google của déi tong Recognizer (r) đê chuyén déi

dữ liệu âm thanh (biến audio) thành văn bản bằng cách sử đụng dịch vụ nhận dạng giọng nói của

Google Nêu thành công, thông điệp "You saiđ" sẽ được in ra màn hình, kèm theo văn bản được nhận dạng từ giọng nói

Nếu có lỗi LookupError xảy ra trong quá trình nhận dạng giọng nói, đoạn mã sau except LookupError: sẽ được thực hiện Trong trường hợp này, thông điệp "Could not understand audio" sé được in ra màn hình đề thông báo rằng nội dung của giọng nói không thê được hiệu

17.2 Importing the Packages for Chatbot - Nhập các gói cho Chatbot

Để tiếp tục thực hiện các ví dụ đưới đây, chúng tôi sẽ nhập các gói TensorFlow và Keras Ngoài ra, chúng tôi nhập các mô-đun khác giúp xác định các lớp mô hình

Nhập thư viện NumPy và đặt tên tắt là np NumPy thường được sử dụng cho các phép toán số học trong Python

Trang 9

Nhập module pickle, được sử dụng để serialize (ghi thành dạng nhị phân) và deserialize (đọc từ dạng nhị phân) các đối tượng Python Thông thường, nó được sử dụng để lưu trữ và tải các mô hình học máy, giữa những công việc khác

import pickle

Nhập các module cụ thê từ API Keras của TensorFlow:

@ _ laycrs: Cùng cấp nhiều lớp được định nghĩa trước có thê được sử dụng để xây dựng mạng nơ- ron Cac vi dụ bao gồm các lớp Dense, Conv2D, và nhiều lớp khác

@ activations: Chia nhiéu ham kích hoạt khác nhau mà bạn có thê sử dụng trong các lớp của mạng nơ-ron Hàm kích hoạt giúp mô hình học được các mô hình phi tuyến tính

® modcls: Cung cấp một API cấp cao để định nghĩa và huấn luyện các mô hình mạng nơ-ron Bao gồm lớp Sequential (một chuỗi tuyến tính các lớp) và lớp Model cho các kiến trúc mô hình phức tạp hơn

® preprocessing: Bao gồm các tiện ích dé tiền xử lý đữ liệu đầu vào trước khi đưa vào mạng nơ- ron Vi đụ, cung cấp các hàm tiền xử lý văn bản, hàm tiền xử lý hình ảnh, v.v

from tensorflow.keras import layers , activations , models , preprocessing

Tóm lại, đoạn mã này thiết lập các thư viện và module cân thiết dé thực hiện học máy sử dụng TensorFlow, với sự tập trung vào API Keras để xây dựng và huấn luyện mô hình mạng nơ-ron Module preprocessing có thê được sử dụng đề tiền xử lý dữ liệu trước khi đưa vào mạng nơ-ron 17.3 Preprocessing the Data for Chatbot - TiHn xử lý dữ liệu cho Chatbot

17.3.1 Download the Data - Tải dữ liệu

17.3.2 Reading the Data from the Ailes - Đọc dữ liệu từ các tập tin Bước 1: Tiến hành nhập các module

Nhập các module preprocessing và utils từ thư viện Keras của TensorFlow Cac module nay thường được sử dụng đề tiền xử lý dữ liệu và các tiện ích hỗ trợ trong quá trình xây dựng mô hỉnh

from tensorflow.keras import preprocessing , utils |

Nhập module os, mà thường được sử dụng dé tương tác với hệ điều hành, chẳng hạn như đọc hoặc

ghi dữ liệu từ hệ thống tệp tin

import os |

Trang 10

Nhập module yaml, mà thường được sử dụng để đọc và ghi các tệp tin dữ liệu theo định dạng YAML Định dạng YAML thường được chọn vì nó đễ đọc và viết cho con người

Bước 3: Khởi tạo danh sách rỗng

questions = list()

answers = list()

Dòng mã này khởi tạo hai danh sách rồng, questions và answers Các danh sách này sẽ được sử

dụng đề lưu trữ câu hỏi và câu trả lời từ tập dữ liệu của chatbot

Bước 4: Sử đụng một vòng lặp dé lặp qua danh sách các tệp tin trong files list, mở mỗi tệp và sử dụng thư viện YAML để load an toàn (saf load) nội dung của từng tệp

Bắt đần một vòng lặp, lặp qua từng tệp trong danh sach files list:

docs = yaml.safe load(stream)

Trang 11

Trích xuât phân nội dung có tên ‘conversations’ tr bién docs va gan cho bién conversations Dua vào tên, có vẻ như 'conversatlons' chứa thông tin về các cuộc trò chuyện trong dữ liệu của chatbot

- _ Xử lý cuộc trò chuyện có độ dài lớn hơn 2: Nếu cuộc trò chuyện có nhiều hơn 2 phần tử, phần

tử đầu tiên được thêm vào đanh sách câu hỏi (questions), và các phần tử còn lại (các câu trả lời) được nói lại với nhau thành một chuỗi và thêm vào danh sách câu trả lời (answers)

if len( con ) > 2

questions.append(con[0] ) replies = con[ 1: ] ans = ''

for rep in replies:

ans += ' ' + rep answers.append( ans )

- _ Xử lý cuộc trỏ chuyện có độ dai tr 1 đến 2: Nếu cuộc trò chuyện có độ dài từ I đến 2 phân tử,

phân tử đầu tiên được thêm vào danh sách câu hỏi (questions), và phần tử thứ hai được thêm vào danh sách câu trả lời (answers)

answers with tags = list()

Trang 12

for i in range( len( answers ) ): if type( answers[i] ) == str:

answers with tags.append( answers[i] ) elses

questions.pop( i )

- — Thêm thẻ cho các câu trả lời: Tạo lại danh sách câu trả lai (answers) bang cach thém thé

<STARTT> ở đầu và <END> ở cuối mỗi câu trả lời Kết quả là danh sách answers giờ đây chứa các câu trả lời đã được gắn thẻ

answers = list()

for 1 in range( len( answers with tags ) )

answers.append( '<START> ' + answers with tags[i] + ' <END>' )

tokenizer.fit _on_texts( questions + answers )

VOCAB SIZE = len( tokenizer.word index })+1

17.3.3 Preparing Data for Seq2Seq Model - Chuẩn bI dữ liệu cho mô hình Seq2Seq

Mô hình của chúng tôi yêu cầu ba mảng, cụ thể là eneođer input data, decoder input data, va decoder_output_ data

Trước khi thực hành trên ba mảng, cần tiên hành Import thư viện và khởi tạo danh sách từ vựng (vocab) Import Word2Vec từ thư viện gensim và khởi tạo một danh sách từ vựng trống (vocab) Sau đó lặp qua từ điển của Tokenizer (trong đoạn mã trước đó) và thêm từng từ vào danh sách từ vựng (vocab) Điều này tạo ra một danh sách các từ duy nhất trong tập đữ liệu của câu hỏi và câu trả lời

Trang 13

Hàm bắt đầu lặp qua từng câu trong danh sách câu đầu vảo Biển sentence được chuyên đối thành

chữ thường đề đồng nhất việc xử lý từ vựng Đồng thời loại bỏ các ký tự không phải chữ cái Các ký

tự không phải chữ cái được thay thê bằng khoảng trắng Biểu thức chính quy [^a-zA-Z] tìm kiếm mọi

ký tự không phải là chữ cái (không thuộc khoảng a-z và A-Z) và thay thế chúng bằng khoảng trắng

tokens = sentence.split() vocabulary += tokens tokens list.append( tokens )

Trang 14

- Chuyén đổi câu thành chuỗi số nguyên: Sử dụng phương thức texts to sequences của Tokenizer để chuyên đối danh sách câu hỏi (questions) thành một danh sách các chuỗi số nguyên, trong đó mỗi số nguyên đại điện cho một từ trong từ điển của Tokenizer

padded questions =

preprocessing.sequence.pad sequences( tokenized questions ,

maxlen=maxlen questions , padding='post' )

- Chuyến đổi thành mảng NumPy và in kích thước: Chuyên đổi danh sách chuỗi số nguyên đã chèn đệm thành mảng NumPy (eneođer input_ data) In ra màn hình kích thước của mảng và chiều dai tối đa của câu hỏi

encoder input đata = np.array( padded questions ) Đrint( encoder input đata.shape , maxlen questions )

Tóm lại, đoạn mã này chuyên đôi câu hỏi thành một biểu diễn số nguyên có chiều dải đồng nhất bằng cách chèn đệm và chuẩn bị dữ liệu đầu vào cho mô hình seq2seq Chiều dải tối đa của câu hỏi

được sử dụng để đảm bảo rằng tất cả các chuỗi đều có cùng chiều dai

Thực hiện chuẩn b1 đữ liệu dầu vào trong mô hình seq2seq đối với decoder_input_data: Tuong tw nhu doan ma trudc doi voi encoder_mput_data, nhung chuan bị dữ liệu dau vào đôi với decoder input data ap dung cho cau tra loi (answers) thay vi cau hoi

tokenized answers = tokenizer.texts to sequences( answers )

maxlen answers = max( [ len(x) for x in tokenized answers ] )

padded answers =

preprocessing.sequence.pad sequences( tokenized answers ,

maxlen=maxlen answers , padding='post')

decoder input data = np.array (padded answers)

print (decoder input _data.shape , maxlen answers)

Trang 15

Tương tự như phân xử lý câu hỏi, đoạn mã này chuyên đổi câu trả lời thanh biéu dién sé nguyén cé

chiều dài đồng nhất bằng cách chèn đệm và chuẩn bị dữ liệu đầu vào cho mô hỉnh seq2seq Chiều dài

tối đa của câu trả lời được sử dụng để đảm bảo rằng tất cả các chuỗi đều có cùng chiều đài Thực hiện chuẫn bI dữ liệu đầu ra trong mô hình seq2seq đối với decoder_ou(pu(_data - Chuyển đổi câu trả lời thành chuỗi số nguyên: Sử dụng phương thức texts to _sequences của Tokenizer để chuyên đổi danh sách câu trả lời (answers) thành một đanh sách các chuỗi số nguyên, trong đó mỗi số nguyên đại điện cho một từ trong từ điển của Tokenizer

for i in range(len(tokenized answers) )

tokenized_ answers[i] = tokenized answers[i] [1:]

preprocessing.sequence.pad sequences( tokenized answers ,

maxlen=maxlen answers , padding='post' )

- _ Chuyến đổi thành dạng one-hot encoding: Sử đụng to_categorical từ utils dé chuyên đổi chuỗi số nguyên thành dạng one-hot eneoding Điều này biến đổi mỗi từ thành một vectơ one-hot, trong đó chỉ có một phân tử bằng 1 va phan tử còn lại bằng 0

decoder output_data = np.array( onehot_answers }

print( decoder output_data.shape )

Trang 16

Tóm lại, đoạn mã trên xử lý đữ liệu cho đầu ra của mô hình decoder bằng cách loại bỏ từ đầu tiên, chèn đệm, và chuyên đôi thành dạng one-hot encoding Chiều dài tối đa của câu trả lời được sử dụng để đảm bảo rằng tất cả các chuỗi đều có cùng chiều dài

17.4 Mô hình Encoder-Decoder Ứng dụng:

Mô hình Eneoder-Decoder là một kiêu kiến trúc mạng nơ-ron dùng trong các bài toán hồi quy, chuỗi Đặc biệt với thời đại ngày nay, mô hình này còn được phát triển nhằm thực hiện chức năng đối đáp giữa người dùng và các robot, chương trình tự động Mô hình này gồm hai phần chính là encoder - có nhiệm vụ nhận chuỗi đầu vào và mã hoá nó thành một vectơ mã hoá và decoder - có nhiệm vụ nhận vecto mã hoá và giải má nó, sinh ra một chuỗi đầu ra gọi là vectơ giải mã

Mô hình này bao gồm Embedding, LSTM và Dense layer

- Embedding: mét k¥ thuật đứa một vector có số chiều lớn, ở dạng thừa về một vector có số chiều nhỏ, ở dạng dày đặc Chuyển đôi các token vector đề thành các đense vector - _ L§TM (long-term dependencies): la mét dạng đặc biệt của hồi quy RNN - có khả năng học

được các phụ thuộc, các thông tin xa

- Dense Layer: la mét lớp cô điển trong nơ ron nhân tạo Mỗi nơron trong lớp Dense Layer đều có đầu vào là kết quả từ mọi nơron các lớp trước

- Cac decoder_input data dua vao E.L

- Cac đầu vào từ E.L được đừa vào LSTM để tạo ra các chuỗi Dưới đây là đoạn code mô tả quy trình trên

`1 Tạo đầu vào với kích thước là maxlen_questions (độ dài tối đa của câu hỏi):

encoder inputs =

tf keras.layers.Input(shape=( maxlen questions , ))

2 Tạo E.L để chuyển số nguyên thành các vector có 200 chiều Tham số mask_zero = True là bỏ qua các giá trị 0 trong đầu vào (0 thường được dùng là các padding (đệm) các câu có độ dài khác nhau)

encoder embedding = tf.keras.layers.Embedding( VOCAB SIZE, 200 , mask zero=True ) (encoder inputs)

3 Tao mét lop LSTM (Long Short-Term Memory) dé xử ly các vector nhúng và trả về đầu ra của bộ mã hóa, cũng như trạng thái ân và trạng thai ô nhớ của bộ mã hóa Tham số return_state=True có nghĩa là trả về cả trạng thái của bộ mã hóa, không chỉ có đầu ra

Trang 17

6 Tạo một lớp nhúng cho bộ giải mã, tương tự như bộ mã hóa

decoder embedding = tf.keras.layers.Embedding( VOCAB SIZE,

200 , mask zero=True) (decoder inputs)

decoder dense = tf.keras.layers.Dense( VOCAB SIZE ,

Trang 18

activation=tf.keras.activations.softmax ) |

10 Tạo đầu ra của mô hình bằng cách áp dụng lớp kết nối day đủ lên đầu ra của bộ giải mã

12 Biên địch mô hình bằng cách chọn bộ tối ưu héa (optimizer) la RMSprop va ham mat mat (loss

function) la categorical_crossentropy Hàm mắt mát này thường được đùng cho các bài toán phân loại nhiều lớp (multi-class classification), như dự đoán từ tiếp theo trong câu In ra thông tin của mô hỉnh

model.compile(optimizer=tf.keras.optimizers.RMSprop(), loss= ‘categorical crossentropy')

model.summary ()

17.5 HuNn luyện mô hình Encoder-Decoder

Huấn luyện mô hình với các tham số đầu vào với các thông số như các mảng numpy chứa đữ liệu

đầu vào, kích thước mỗi lô đữ liệu, số lần lặp lại toàn bộ đữ liệu trong quá trình huần luận

Lưu mô hỉnh với tên model.h5

model.fit ( [encoder input dđata , decoder input data], decoder output _data, batch size=50, epochs=150, verbose=0 }

Trang 20

Tao sampled word i, bién nay ding dé gan đữ liệu từ

tokenizer dict[samoled word indez}] Để tạo khoảng cách giữa các từ, ta dùng lệnh: sentence += ' {}'.format( sampled word )

Điều kiện dừng là nếu sampled_ word là end hoặc số lượng từ lớn hơn 74 thì dừng vòng lặp

Ở các bước sau ta thực hiện như trên

Dé in ra kết quả của quy trình huấn luyện, ta dùng print đề in ra kết qua tr for - if

Dé in ra kết quả với từ tham số kết quả huân luyện tương ứng, nhập code với số tham số tương ứng

đef print train result(index) :

print(f"Question is : {questions[index] }") print(f"Answer is : {answers[index]}")

output = model.predict([encoder input data[index,np.newaxis], decoder input data[index,np.newaxis] ])

sampled word indexes = np.argmax(output[0],1) sentence = ""

maxlen answers = 74

for sampled word index in sampled word indexes: sampled word = None

sampled word = tokenizer dict[sampled word index]

sentence += ' {}'.format( sampled word ) if sampled word == 'end' or len(sentence.split()) >

20

Trang 21

maxlen answers: break

print (f"Model prediction: {sentence}")

print train result (4)

print train result (55)

print train result (32)

17.6 Mô hình suy luận

Tạo hàm (def make inference_ models () :), hàm này không có tham s6 dau vao (input parameter) va trả về hai mô hình suy luận (inference models) cho bài toán dịch máy sử dụng kiến trúc mã hoá - giải mã (encoder-decoder)

def make inference models():

Tạo mô hình mã hoá (encoder model) từ các đầu vào và trạng thái của lớp LSTM mã hoá (encoder

LSTM)

encoder model = tf.keras.models.Model (encoder inputs,

encoder states)

Tạo các đầu vào cho trạng thái ân (hidden state) va trang thai 6 nho (cell state) của lớp LSTM giải ma (decoder LSTM)

decoder state input_h = tf.keras.layers.Input(shape=( 200 ,))

decoder state input_c = tf.keras layers Input (shape=(

200 ,))

decoder states inputs = [decoder state input_h,

decoder state input _c]

Tạo các đầu ra và trạng thái mới của lớp LSTM giải mã từ các đầu vào trạng thái và lớp nhúng (embedding layer) của giải mã

decoder outputs, state h, state c = decoder lstm(

decoder embedding ,

initial state=decoder states inputs)

decoder states = [state _h, state _c]

Tạo các đầu ra cuối cùng của lớp kết nối day di (dense layer) từ các đầu ra của lớp LSTM giải mã

21

Trang 22

decoder outputs = decoder dense (decoder outputs)

Tạo mô hình giải mã (đeeoder model) từ các đầu vào và đầu ra của lớp LSTM giải mã và lớp kết

noi day đủ và trả về mô hình encoder model „ decoder model

đẹcoder model = t†.keras.models.Model (

[decoder inputs] + decoder states inputs, [decoder outputs] + decoder states) return encoder model , decoder model

17.7 Trò chuyện với Chatbot

Tao ham str_to tokens véi tham số đầu vào là sentence, kiêu đữ liệu là str

def str to tokens( sentence :; str ):

Chuyến đôi chuỗi đầu vào thành chữ thường và tách thành một danh sách các từ (words) theo

khoảng trắng và tạo một danh sách rỗng tên Lo kens list

for word in words:

tokens list.append( tokenizer.word index[ word ] )

Yetuzn preprocessing.sequence.pad sequences( [tokens list] „

maxlen=maxlen questions , padding='post')

Goi ham make inference models () dé tao ra hai m6 hinh suy luận, một là mô hình mã hoá

(enc model) va mét là mô hình giải mã (dec_mode1) Lặp lại quá trình suy luận 10 lần bằng hàm

for

22

Trang 23

Dau tién ta goi ham (str_to_tokens) dé biến câu hỏi thành một dãy số nguyên có độ dài cố định Gọi dự đoán của mô hình mã hoá đề tính toán các hidden states va cell states của lớp LSTM từ dãy số Lưu kết quả vào biến states values

empty target seq = np.zeros( (1, 1) )

empty target _seq[0, 0] = tokenizer.word index['start']

Goi (dec model predict) véi dau vao la(empty target seq) Ham tra về 3 giá trị là

dén layer, hidden states va cell states của LSTM Lưu các giá trị này lần lượt vào (de c outputs ,

h,c)

Tim chỉ số của gia tri lon nhat trong mang (dec outputs[0, -1, :]}, mảng này chứa các

xác suất của từng từ trong tr dién (tokenizer) Chi s6 nay dai dién cho từ có xác suất cao nhất

được sinh ra bởi mô hình giải mã Lưu chỉ s6 nay vao bién (sampled word index)

while not stop condition dec_outputs , h, c=

dec model.predict([ empty target _seq ] + states values )

sampled word index = np.argmax( dec outputs[0, - 1, :] )

Ngày đăng: 10/08/2024, 16:07

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w