Khái niệm về neural network đã có từ những năm 1950 với sự ra đời của ng nh nghi n c u về tr tuệ nhân tạo Người ta nói r ng khi n m ri ng biệt, những node máy t nh n y chỉ chạy những gì
Machine Learning
Mụ củ tài
Từ nguồn dữ liệu thu thập tại C ng ty Younet, tác gi gán nhãn dựa v o các từ khóa v sự hỗ trợ từ chuy n gia của C ng ty Sau đó, dữ liệu được chia l m hai phần, một d ng để huấn luyện v một d ng để kiểm tra độ ch nh xác Dựa v o kết qu thu được, kết hợp với việc phân t ch c m xúc để biết được quan điểm của người d ng cho các s n phẩm
Kh ng chỉ dừng lại ờ các s n phẩm về điện tử, chư n trình c n có t nh mở rộng cho các loại s n phẩm khác m kh ng ph i sửa mã nguồn
Ý và tính khả thi của tài
Đáp ng được nguyện vọng cấp thiết của C ng ty trong việc tìm hiểu quan điểm của người d ng tr n các s n phẩm
Có t nh ng dụng thực tế cao vì nguồn dữ liệu thật v áp dụng tr n tiếng Việt
Gi m nh chi ph cho việc phân t ch b ng con người như đang l m hiện tại
Tính khả thi củ tài
Việc d ng deep learning để tận dụng kh năng của phần c ng c ng như đáp ng được hiệu năng với dữ liệu lớn
C sở l thuyết được ch ng minh v kh năng áp dụng deep learning v o xử l văn b n dựa tr n CNN được xem l chuẩn sau th nh c ng của
Hiện tại chưa có c ng cụ n o áp dụng cho tiếng Việt tr n thị trường
D ng deep learning cho tiếng Việt vẫn c n rất hạn chế Đề t i n y sẽ góp phần cho việc phát triển việc phân t ch c m xúc tr n văn b n tiếng Việt
P háp ti p cận
Để l m tốt được đề t i n y, chúng ta ph i phân tích hiện trạng những c ng cụ hiện có, phân t ch ưu nhược điểm từng c ng cụ, tìm hiểu những mong muốn của người d ng, từ đó ho n thiện h n cho ng dụng của mình Đồng thời ph i nghi n c u chuy n sâu về m hình học máy mạng n -ron t ch chập Convolutional Neural
Network), Tensorflow để thực hiện những ch c năng ng dụng Để có được nguồn dữ liệu đủ lớn d ng cho việc huấn luyện v kiểm tra m hình c ng l một khó khăn Chư ng trình d ng nguồn dữ liệu static từ SemEval để thực hiện việc unit test trong quá trình hiện thực Tuy nhi n, mục ti u của đề t i l áp dụng cho tiếng Việt n n tác gi d ng nguồn dữ liệu th từ C ng ty Younet Đây l nguồn dữ liệu của người d ng đánh giá, bình luận về các s n phẩm c ng nghệ smart devices Dữ liệu sau khi đã được xử l như loại bỏ stopword, k hiệu c m xúc,… sẽ được gán nhãn v d ng cho việc huấn luyện c ng như kiểm tra
Một đánh giá của khách h ng thường được thể hiện dưới dạng văn nói; một đánh giá thường ch a nhiều lỗi ch nh t , chữ viết tắt, th nh ngữ v có thể được viết bởi giới trẻ với các k hiệu, ng n ngữ teen, pha trộn ng n ngữ c ng như các biểu tượng c m xúc Việc phân t ch đánh giá của một s n phẩm theo thời gian, từng phi n b n của s n phẩm c ng l một vấn đề khó khăn
Ngo i ra b i toán phân t ch c ng phụ thuộc rất nhiều v o thang đánh giá Thang đánh giá l phân loại đánh giá của khách h ng như khen , ch Một số thang đánh giá từ m c 1 tới 5 như rất tốt, tốt, bình thường, tệ, rất tệ B n cạnh đó, c n có thang đánh giá sử dụng k hiệu thumbs up and down
Trong nghi n c u về phân t ch c m xúc, thường có hai hướng tiếp cận: d ng từ điển ho c l học máy Học máy đang l xu hướng mới vì nguồn dữ liệu hiện nay rất lớn
Hình 2.1 Sentiment nalysis techniques nguồn: http://www.sciencedirect.com/science/article/pii/S2090447914000550)
Các thuật toán máy học đã được các nh nghi n c u sử dụng th nh c ng, mang lại kết qu cao l Support Vector Machine (SVM), Nạve Bayes (NB) và Maximum Entropy ME Thuật toán máy học cần xác định đ c trưng v các đ c trưng thường được sử dụng:
Trong thuật toán học máy, trước khi deep learning sống lại thì SVM được coi l gi i thuật kinh điển Tuy nhi n, SVM chỉ ph hợp cho b i toán phân loại thuần túy Hiện nay, hầu hết đang đi theo deep learning như CNN, LSTM, RNN…
Vậy ta ng dụng CNN v o NLP như thế n o? Như ta đã biết, CNN được đưa ra trước ti n nh m v o ngh nh khoa học thị giác máy t nh v ph p toán convolution th ch hợp cho việc nhân ma trận m các pixel trong 1 tấm nh l mỗi phần tử của ma trận
Thay vì sử dụng các pixel như trong xử l nh, trong xử l ng n ngữ tự nhi n, ta biến đ i các câu hay văn b n th nh một ma trận đầu v o Mỗi d ng của ma trận tư ng ng với một token một từ trong câu Nghĩa l , mỗi d ng l một vector đại diện cho một từ Th ng thường, những vector n y l word embedding word2vec hay GloVe , nhưng chúng c ng có thể l one-hot vector một cách đánh chỉ số sự xuất hiện của từ n y trong dữ liệu từ điển – vocabulary) Gi sử ta có một câu gồm 50 từ được biểu di n th nh word embedding vector gồm 100 chiều, ta sẽ có đầu v o l một ma trận 50×100, tư ng ng trong xử l nh, ta có một b c nh 50×100 pixel
Trong xử l nh, filter của chúng ta sẽ duyệt sliding window qua từng m ng cục bộ local patches , nhưng trong xử l ng n ngữ, ta sẽ duyệt qua từng từ một Nghĩa l , ta sẽ duyệt qua từng d ng của ma trận đầu v o Khi đó, chiều rộng của filter sẽ b ng với chiều rộng của ma trận đầu v o trong v dụ tr n, chiều rộng b ng 10 Chiều cao region size của filter có thể t y thay đ i sao cho ph hợp, thường l từ 2 đến 5 từ như 2 đến 5-grams trong n-grams) Trong luận văn n y tác gi d ng 3-grams
M hình chung cho các b i toán học máy Machine Learning như sau:
Hình 2.2 Mô hình chung cho các bài toán Machine Learning Nguồn https://machinelearningcoban.com )
Chúng ta có thể thấy r ng có hai khối ch nh l Feature Extraction v Classification Regression Clustering… Các phư ng pháp truyền thống thường xây dựng hai khối n y qua các bước ri ng rẽ Phần Feature Extraction với dữ liệu nh có thể d ng các feature descriptor như SIFT, SURF, HOG; với dữ liệu văn b n thì có thể l Bag of Words ho c TF-IDF Nếu l các b i toán classification, phần c n lại có thể l SVM th ng thường hay các bộ phân lớp truyền thống khác
Với sự phát triển của Deep Learning trong những năm gần đây, người ta cho r ng các hệ thống end-to-end từ đầu đến cuối mang lại kết qu tốt h n nhờ v việc các hai khối ph a tr n được huấn luyện c ng nhau, b trợ lẫn nhau Thực tế cho thấy, các phư ng pháp state-of-the-art thường l các m hình end-to-end Đ c điểm chung của end-to-end l feature extractor v classifier được huấn luyện một cách đồng thời Điều n y nghĩa l hai bộ phận n y b trợ cho nhau trong quá trình huấn luyện Classifier giúp tìm ra các hệ số hợp l ph hợp với feature vector tìm được, ngược lại, feature extractor lại điều chỉnh các hệ số của các convolutional layer sao cho feature thu được l tuyến t nh, ph hợp với classifier ở layer cuối c ng
Một số h sẵn có
Trước kia, deep learning chủ yếu được ng dụng v o ngh nh khoa học thị giác máy t nh Chẳng hạn như xử l nh, video phục vụ cho các ng dụng lái xe tự động của Google
Năm 2014, Kim Yoon đã đưa ra m hình phân loai văn b n d ng Convolutional Neural Network v được ghi nhận l m hình chuẩn cho tới nay 2 về độ ch nh xác v hiệu qu t nh toán của CNN M hình n y tận dụng sự t nh toán nhanh của ph p t ch chập convolution , t nh chia sẽ trọng số l m cho nó rất hiệu qu kh ng những trong xử l nh m c trong xử l ng n ngữ tự nhi n Sau sự th nh c ng của 2 , một số các s n phẩm thư ng mại va nghiên c u ti u biểu cho việc phân t ch quan điểm gồm có:
2.1.1 Watson Đây l s n phẩm về xử l ng n ngữ tự nhi n của IBM Tuy nhi n, đây l s n phẩm thư ng mại v nó cung cấp PI cho ph p lập trình vi n d ng để hiện thực việc phân t ch c m xúc Tuy nhi n, cần ph i x i với Bluemix – cloud based của
IBM Bởi vì l s n phẩm thư ng mại n n giá c l một vấn đề Thật khó cho việc áp dụng rộng rãi, đ c biệt l ở Việt Nam v trong m i trường giáo dục
Minh ch ng về sự th nh c ng của Watson l phát hiện ra một loại bệnh m bác sĩ đã kh ng thể tìm ra ở một nữ bệnh nhân B ng cách so sánh bộ gen của người phụ nữ n y với h n 20 triệu kết qu nghi n c u bệnh khác, Watson đã đưa ra kết qu l một ch ng leukemia cực kỳ hiếm g p chỉ trong 10 phút
Tuy nhiên, điểm hạn chế của s n phẩm n y la hỗ trợ ng n ngữ Tiếng Việt chưa được hỗ trợ cho tới phi n b n mới nhất trong khi việc khai phá quan điểm trong văn b n tiếng Việt l một nhu cầu tư ng đối cấp thiết
Năm 2011, Google khởi tạo dự án Google Brain với mục đ ch tạo ra một mạng thần kinh được huấn luyện bởi các thuật toán deep learning Dự án n y sau đó đã ch ng minh được kh năng tiếp nhận được c những khái niệm bậc cao của deep learning Một v dụ ti u biểu khác về deep learning trong thực tế l kh năng nhận diện giọng nói của các trợ l o Google Now v Siri
Facebook sử dụng deep learning v o việc tạo ra các gi i pháp hiệu qu h n giúp nhận diện khu n m t v sự vật tr n 350 triệu b c nh v video được đăng t i l n Facebook mỗi ng y Tuy nhi n đây l ng dụng cho xử l nh B nh cạnh đó, c n có các ng dụng khác dủng deep learning như hệ thống gợi (recommend system)
2.1.4 Ở trong nước, các c ng trình về sentiment analysis thì kh ng có nhiều Một số c ng trình nghi n c u như 16 , [17] hay [18] thì d ng POS, rule-based v GK- LDA
Các phư ng pháp d ng để tr ch xuất aspect trước đây thường l CRFs
(conditional random fields) hay POS (Post of Speech) tuy nhi n nó có nhược điểm l m hình n y tuyến t nh n n cần số lượng lớn đ c trưng để hoạt động hiệu qu
Trong khi đó, một ưu điểm lớn của CNNs l tốc độ t nh toán Đối với các ph p toán convolution, ta ho n to n có thể triển khai tr n các phần c ng có tốc độ t nh toán cao như GPUs card đồ họa máy t nh Khi so sánh với m hình truyền thống như n-grams, CNNs biểu di n th ng tin hiệu qu h n
Các s n phẩm v nghi n c u trước đây ho c l d ng các kỹ thuật khác ho c l kh ng hỗ trợ tiếng Việt Trong khi đó, nhu cầu phân t ch quan điểm người d ng cho các văn b n tiếng Việt ng y c ng trở n n cấp thiết vì thị trường Việt Nam rất tiềm năng
Với đề t i n y, ta có thể áp dụng cho tiếng Việt v tr n dữ liệu lớn Hiệu năng của chư ng trình khi áp dụng Tensorflow v tận dụng được s c mạnh t nh toán của phần c ng như GPU l một đóng góp lớn B n cạnh do, m hình đưa ra trong đề t i đ n gi n, d hiện thực v mở rộng
C 3 C ở lý thuy t Để hiểu r được vấn đề và công việc cần làm, ta cần nắm vững các vấn đề dưới đây để đưa ra m hình của hệ thống
C sở lý thuyết về mạng neuron (Neural Network), tích chập (Convolutaion), mạng Noron tích chập (Convolutaional Neural Network–CNN)
Mạng Neuron (Neural Network)
Mạng neuron l một m hình học máy Machine Learning có kh năng m hình hóa bất kỳ các h m số hay quan hệ n o M c d đây kh ng ph i l m hình duy nhất M hình cây quyết định – Decision Tree c ng l m được , mạng neoron l m hình duy nhất hiện nay có thể m phỏng với một số lượng tham số m máy t nh có thể t nh toán v cho ra kết qu trong thời gian v chi ph hợp l Đ c điểm n y giúp cho mạng neuron được áp dụng rộng rãi trong lĩnh vực tr tuệ nhân tạo
M c d ra đời từ sớm thập kỷ 60 , tuy nhi n sự hồi sinh mạnh mẽ của mạng neuron được biết đến từ 2006 đến nay Hiện nay, m hình n y được ng dụng rộng rãi trong các lĩnh vực như thị giác máy t nh Computer Vison , xử l ng n ngữ tự nhi n Natural Language Processing v nhận dạng tiếng nói Speed Recoginion
Dưới đây l một m hình mạng neuron kết nối đầy đủ Mạng gồm nhiều lớp Layer sắp xếp tuyến t nh Các neuron trong c ng một lớp kh ng kết nối với nhau Các neuron giữa hai lớp được kết nối với nhau tạo th nh một đồ thị đầy đủ với các cạnh có trọng số Các trọng số được biểu di n bởi ma trận
Hình 3.1 Mạng Neuron Nguồn http://bis.net.vn)
Trong mạng neuron, có 2 con đường để th ng tin được lan truyền: Lan truyền tới Feed-forwarding v lan truyền ngược Back-propagation) Trong quá trình lan truyền tới, th ng tin từ lớp input qua lớp ẩn rối tới lớp output Trong quá trình n y, mạng neuron có thể cho kết qu kh ng ch nh xác cho n n trong quá trình lan truyền ngược, các lỗi n y được điều chỉnh b ng cách t nh đạo h m của các tham số v điều chỉnh để tối ưu các tham số
Ta lấy v dụ xây dựng một mạng neuron có K-1 lớp ẩn K hiệu ( ) l tập hợp các neuron ở lớp th l với l = 0,1,2,…,L ( ) l lớp dữ liệu đầu v o, ( ) l lớp đầ ra Các lớp c n lại gọi l lớp ẩn Giữa 2 lớp li n tiếp, ta thiết kế một ma trân trọng số ( ) Phần tử ( ) của ma trận thể hiện sự nh hưởng của neuron j trong lớp l l n neron i trong lớp l+1 Tập hợp các ma trận trọng số n y kết hợp với bias b gọi l tập tham số của mạng Việc xác định giá trị của tập tham số n y ch nh l quá trình học của mạng neuron
Quá trình xử l th ng tin tr n mạng neuron để ước lượng tham số bao gồm 3 gi i thuật: Feed-forward, Back-Propagation v Stochastic Gradient Descent được mi u t trong 6 Mục ti u l xây dựng h m h x, W, b sao cho nó xấp xỉ với output y với độ sai số c ng nhỏ cáng tốt H m h sẽ có dạng:
Vì h m h có giá trị t y trong khi ta mong muốn chuẩn hóa giá trị n m trong v ng 0, 1 , ta d ng h m k ch hoạt f chẳng hạn như sigmoid, tanh, ReLU…
H m k ch hoạt có vai tr v c ng quan trọng đối với mạng neuron Tr n thực tế, những c ng th c mới của h m f đã góp phần l m cho mạng neuron đạt được nhiều th nh c ng
H m k ch hoạt d ng để loại bỏ kh năng tuyến t nh hóa của mạng neuron Từ (1) ta có
(x; W; b) = ( x + b), trong dó (z) (2) Đồ thị hàm z như sau:
B n cạnh h m Sigmoid, ta có một số h m k ch hoạt khác như 1 H m tanh: ( ) ( )
2 H m ReLU đ n vị tuyến t nh đ ng ( ) ( )
3 H m leaky ReLU đ n vị tuyến t nh đ ng có mất mát
( ) { ́ ́ ́ ̣ ̀ ́ 4 H m maxout ( ) ( ) ́ Để tìm giá trị W v b, ta tối thiểu hóa h m mục ti u O, một cách đ n gi n tối thiểu hóa kho ng cách giữa h va output y như sau
3.1.1 Giải thuật stochastic gradient descent (SGD) Để tối thiểu hóa h m 3 , ta d ng gi i thuật SGD để từ từ cập nhật tham số W v b như sau:
Trong đó α l số kh ng âm được gọi là tỷ lệ học learning rate , ∆ l độ gi m được tính b ng cách lấy đạo hàm theo các tham số tư ng ng Công việc ch nh l đi tìm giá trị ∆b v các ∆W Dựa trên quy tắc của đạo hàm riêng phần, ta có
Tại ( ) , ta có thể t nh được đạo hàm riêng phần như sau:
( ( ) ) (7) D ng chain rule cho đạo hàm riêng phần ta có
Tư ng tư như tr n ta có thể t nh được cho
Tóm lại, gi i thuật SGD như sau:
I Khởi tạo giá trị W, b một cách ngẫu nhiên II Chọn ngẫu nhiên { ( ) ( )
III T nh đạo hàm riêng phần cho W, b như tr n IV Cập nhật giá trị của W, b như 4 , 5 , 6 v l p lại bước II Điều kiện dừng của gi i thuật n y là khi thấy giá trị kh ng thay đ i ho c là số bước l p tới giá trị biên
Phư ng pháp lan truyền ngược sử dụng một tập hợp các giá trị đầu v o v đầu ra để tìm ra mạng neuron mong muốn Một tập hợp đầu v o được đưa v o một hệ thống gi định trước n o đó để t nh ra giá trị đầu ra, sau đó giá trị đầu ra n y được so sánh với giá trị giá trị thực đo Nếu kh ng có sự khác biệt n o, thì kh ng cần thực hiện một quá trình kiểm tra n o, ngược lại các trọng số sẽ được thay đ i trong quá trình lan truyền ngược trong mạng thần kinh để gi m sự khác biệt đó
Mạng lan truyền ngược thường có một ho c nhiều lớp ẩn với các neuron dạng sigmoid v lớp ra l các n ron với h m truyền tuyến t nh Mạng nhiều lớp sử dụng thuật học lan truyền ngược đang được sử dụng rộng rãi nhất trong lĩnh vực neuron
Hình 3.3 Mạng neuron truyền thẳng nhiều lớp sử dụng BP
Thuật toán lan truyền ngược khái quát cách t nh đạo h m ở một lớp v cách truyền đạo h m cho lớp trước đó Ta có
Gi i thuật Back-probagation như sau I T nh ( ) ( ) ( )
II Tại ouput layer, tính đạo h m như trình b y trong 2.1.1 III Thực hiện lan truyền ngược lại cho các lớp L-1, L-2,
Một số vấn đề của mạng neuron là tối ưu hóa cục bộ, over-fitting và hiệu xuất tính toán thấp trong mạng có nhiều lớp ẩn Các vấn đề n y được khắc phục tốt với deep learning (Mô hình học máy sâu) sẽ được trình b y sau đây
Overfitting không ph i là một thuật toán trong Machine Learning Nó là một hiện tượng không mong muốn thường g p, người xây dựng mô hình Machine Learning cần nắm được các kỹ thuật để tránh hiện tượng này
Sự thật là nếu một mô hình quá fit với dữ liệu thì nó sẽ gây ph n tác dụng!
Hiện tượng quá fit n y trong Machine Learning được gọi là overfitting, l điều mà khi xây dựng mô hình, chúng ta luôn cần tránh
Về c b n, overfitting x y ra khi mô hình quá ph c tạp để mô phỏng training data Điều n y đ c biệt x y ra khi lượng dữ liệu training quá nhỏ trong khi độ ph c tạp của mô hình quá cao
Ta có 2 đại lượng l train error v test error trong học máy Một mô hình được coi là tốt (fit) nếu c train error và test error đều thấp Nếu train error thấp nhưng test error cao, ta nói mô hình bị overfitting Nếu train error cao và test error cao, ta nói mô hình bị underfitting train error = ∑ test error = ∑
Vậy thì có những kỹ thuật n o để tránh overfitting? Ta có thể d ng validation v Regularization để ngăn ngừa overfitting
Mô hình học máy sâu (Deep Learning)
Như đã trình b y trong chư ng 1, deep learning l một loại machine learning sử dụng nhiều lớp neuron để phân t ch dữ liệu về nhiều chi tiết khác nhau
M c d ra đời từ thập ni n 60 nhưng bắt đầu những năm 80, mạng neuron gần như đi v o qu n lãng bởi nhừng khó khan về t nh toán cho cấu trúc nhiều lớp ẩn v số lượng lớn tham số B n cạnh đó, việc SVM ra đời bởi Vapnik v các cộng sự của ng c ng l m cho mạng neuron có một thời gian d i kh ng được ng dụng nhiều
Bắt đầu từ những năm 2000s, với sự phát triển mạnh mẽ của phần c ng c ng với labeled data, các nh khoa học bắt đầu quay trở lại mạng neuron Sau sự th nh c ng của Hiton với Deep Belief Network DBN , Lecun với Convolutional Neural Network 1 , deep learning đã thực sự sống lại v phát triển mạnh mẽ
Vậy deep learning l gì? Một cách đ n gi n, deep learning l m hình học máy d ng mạng neuron với số lớp ẩn lớn h n 2 để biểu di n một cách cụ thể lẫn trừu tượng qua đó l m r được nghĩa của dữ liệu Có nhiều m hình deep learning hiện nay như Convolutional Neural Network, Recurrent Reural Network, Recursive Neural Network và Deep Belief Network
Trong tầm vực của đề t i n y, tác gi sẽ trình b y về Convolutional Neural Network CNN , các đ c t nh của nó v ng dụng của CNN v o việc khai phá quan điểm Opinion Mining Các phần khác có thể tham kh o tại [13].
Mạ ậ Convolutional Neural Network)
Convolutional Neural Network (CNNs – Mạng neuron t ch chập l một trong những m hình deep learning ti n tiến giúp cho chúng ta xây dựng được những hệ thống th ng minh với độ ch nh xác cao
Một m hình CNN chuẩn gồm các lớp convolutional layer, pooling, fully connected và dropout
CNNs gồm một v i layer của convolution kết hợp với các h m k ch hoạt phi tuyến nonlinear activation function như ReLU, Sigmoid hay tanh để tạo ra th ng tin trừu tượng h n abstract higher-level cho các layer tiếp theo
Trong m hình Feedforward Neural Network ở tr n, các layer kết nối trực tiếp với nhau th ng qua một trọng số W weighted vector Các layer n y c n được gọi l có kết nối đầy đủ fully connected layer hay affine layer
Ngược lại, trong m hình thì các layer li n kết được với nhau th ng qua c chế convolution Layer tiếp theo l kết qu convolution từ layer trước đó, nhờ vậy m ta có được các kết nối cục bộ Nghĩa l mỗi n -ron ở layer tiếp theo sinh ra từ filter áp đ t l n một v ng nh cục bộ của n -ron layer trước đó
Mỗi layer như vậy được áp đ t các filter khác nhau, th ng thường có v i trăm đến v i nghìn filter như vậy Một số layer khác như pooling subsampling layer d ng để chắt lọc lại các th ng tin hữu ch h n loại bỏ các th ng tin nhi u Trong suốt quá trình huấn luyện, CNNs sẽ tự động học được các th ng số cho các filter
CNNs có t nh bất biến v t nh kết hợp cục bộ Location Invariance and Compositionality Với c ng một đối tượng, nếu đối tượng n y được chiếu theo các gốc độ khác nhau translation, rotation, scaling thì độ ch nh xác của thuật toán sẽ bị nh hưởng đáng kể Pooling layer sẽ cho bạn t nh bất biến đối với ph p dịch chuyển
(translation), phép quay (rotation) và phép co giãn (scaling)
T nh kết hợp cục bộ cho ta các cấp độ biểu di n th ng tin từ m c độ thấp đến m c độ cao v trừu tượng h n th ng qua convolution từ các filter Đó l l do tại sao CNNs cho ra m hình với độ ch nh xác rất cao C ng giống như cách con người nhận biết các vật thể trong tự nhi n Ta phân biệt được một con chó với một con mèo nhờ v o các đ c trưng từ m c độ thấp có 4 chân, có đu i đến m c độ cao dáng đi, hình thể, m u l ng
Một ưu điểm lớn của CNNs l tốc độ t nh toán Đối với các phép toán convolution, ta ho n to n có thể triển khai tr n các phần c ng có tốc độ t nh toán cao như GPUs card đồ họa máy t nh
3.3.1 Convolutional Layer Đây l lớp d ng ph p toán t ch chập để xử l th ng tin b ng cách lướt các filter có k ch thước cố định tr n dữ liệu đầu v o v cho ra dữ liệu tinh h n nhờ t nh bất biến, kết hợp cục bộ, chia sẽ trọng số Đây l lớp đầu ti n của mạng CNN
Trước hết ta nhắc lại về ph p t ch chập của h m f v g trong không gian 1D như sau
Tư ng tự, trong không gian 2D sẽ là
T ch chập được sử dụng đầu ti n trong xử l t n hiệu số Signal processing Nhờ v o nguy n l biến đ i th ng tin, các nh khoa học đã áp dụng kĩ thuật n y v o xử l nh v video số Để d hình dung, ta có thể xem t ch chập như một cửa s trượt sliding window áp đ t l n một ma trận Hình 3 5 minh họa cho ph p convolution
Hình 3.5 Ph p t ch chập Nguồn: http://deeplearning.stanford.edu)
Ma trận b n trái l một b c nh Mỗi giá trị của ma trận tư ng đư ng với một điểm nh pixel , 0 l m u đen, 1 l m u trắng nếu l nh grayscale thì giá trị biến thi n từ 0 đến 255
Sliding window c n có t n gọi l kernel, filter hay feature detector Ở đây, ta d ng một ma trận filter 3×3 nhân từng th nh phần tư ng ng element-wise với ma trận nh b n trái Giá trị đầu ra do t ch của các th nh phần n y cộng lại Kết qu của t ch chập l một ma trận convoled feature sinh ra từ việc trượt ma trận filter v thực hiện t ch chập c ng lúc l n to n bộ ma trận nh b n trái
Convolutional layer có các t nh chất kết hợp cục bộ, chia sẽ trọng số l m cho việc học m hình hiệu qu bởi vì nó gi m đáng kể số lượng tham số Nhờ t nh chất n y m CNN đã đạt được nhiều th nh c ng trong các ng dụng của deep learning
Hình 3.6 Luồng t nh toán trong CNN Nguồn: http://deeplearning.stanford.edu)
Mục đ ch ch nh của layer n y l để chuẩn hóa đầu ra các vector sao cho chúng có số chiều l như nhau sau khi đã được suy gi m trước đó bởi các filters có size khác nhau trong lúc convolution B ng việc chỉ lấy một giá trị tại một vị tr thay vì to n bộ nhưng vẫn giữ các th ng tin quan trọng nhất trong đó, số lượng tham số c ng được suy gi m v l m cho việc t nh toán hiệu qu h n nhiều Như trong hình 3 6, mỗi lần trượt qua một cửa s , ta chỉ cần giữ lại giá trị lớn nhất gọi l max pooling m kh ng cần ph i giữ to n bộ 4 giá trị
Sau khi pooling, một hình nh sẽ có kho ng một phần tư số điểm nh so với lúc bắt đầu Vì nó giữ các giá trị lớn nhất từ mỗi cửa s , nó sẽ b o to n t nh khớp của mỗi feature b n trong cửa s Nghĩa l nó kh ng quan tâm quá nhiều về vị tr ch nh xác n i feature khớp, mi n l nó khớp ở chỗ n o đó trong cửa s Kết qu l CNNs có thể tìm xem liệu một feature có n m trong hình nh m kh ng cần lo nó n m ở đâu
3.3.3 Fully Connected Layer ( c kết nố ầ )
Support Vector Machine (SVM)
Vì tầm vực của đề t i l CNN ch kh ng ph i l SVM, sau đây l s lược về SVM để ta có cái nhìn về nó c ng như việc so sánh kết qu giữa SVM v CNN
SVM l một m hình học máy xây dựng một m t si u phẳng hyperplane để d ng cho việc phân loại classify th nh các lớp ri ng biệt M hình được xây dựng bởi Vapnik v Chervonenkis
Si u phẳng l gì? Nó l h m tư ng tự như phư ng trình đường thẳng, y = ax + b Trong thực tế, nếu ta cần phân lớp tập dữ liệu chỉ gồm 2 đ c trưng, si u phẳng lúc n y ch nh l một đường thẳng
Về tưởng thì SVM sử dụng thủ thuật để ánh xạ tập dữ liệu ban đầu vào kh ng gian nhiều chiều h n Khi đã ánh xạ sang kh ng gian nhiều chiều, SVM sẽ xem x t v chọn ra si u phẳng ph hợp nhất để phân lớp tập dữ liệu đó
SVM có ưu điểm l xử l kh ng gian tr n số chiều cao; th ch hợp với b i toán phân lớp th n qua h m Kernel Tuy nhi n, nếu số lượng thuộc t nh của tập dữ liệu lớn h n nhiều so với số lượng dữ liệu thì kết qu lại kh ng tốt
Hình 3.9 M hình SVM cho phân hoại nhiều lớp
Vì trong chư ng trình ta d ng SVM để phân loại tr n nhiều lớp, sau đây l c b n cho việc n y
Với Multi-class SVM, trong khi test, class của một input c ng được xác định bởi th nh phần có giá trị lớn nhất trong score vector Điều n y giống với Softmax
Softmax Regression sử dụng cross-entropy để ép hai vector xác suất b ng nhau, t c p phần tử tư ng ng với correct class trong vector xác suất gần với 1, đồng thời, các phần tử c n lại trong vector đó gần với 0 Nói cách khác, cách l m n y khiến cho phần tử tư ng ng với correct class c ng lớn h n các phần tử c n lại c ng tốt Trong khi đó, Multi-class SVM sử dụng một chiến thuật khác cho mục đ ch tư ng tự dựa tr n score vector Điểm khác biệt là Multi-class SVM xây dựng h m mất mát dựa tr n định nghĩa của biên an toàn, giống như trong Hard Soft Margin vậy Multi-class SVM muốn th nh phần ng với correct class của score vector lớn h n các phần tử khác, kh ng những thế, nó c n lớn h n một đại lượng Δ>0 gọi l biên an toàn Hình dưới đây minh họa cho n n to n
Hình 3.10 Hinge loss cho Multil-class SVM
Với cách xác định bi n như tr n, Multi-class SVM sẽ cho qua những scores n m về ph a trước v ng m u đỏ Những điểm có scores n m ph a ph i của ngưỡng chữ x m u đỏ sẽ bị xử p ạt, v c ng vi phạm nhiều sẽ c ng bị xử l ở m c cao
Việc xử phạt penalty n y dựa v o giá trị Δ v λ được chọn như thế n o trong quá trình t nh toán
Ch c năng n y nh m cung cấp c chế cho việc huấn luyện training m hình để chư ng trình học được từ dữ liệu Dữ liệu l tập hợp các câu bình luận của người d ng về các t nh năng của các s n phẩm
Kết qu của việc huấn luyện được lưu v o từ điển dictionany để d ng cho việc kiểm tra kết qu ở bước tiếp theo
Bước tiếp theo của quá trình huấn luyện l kiểm tra kết qu của m hình
Người d ng đưa th ng tin l tập hợp các câu bình luận để kiểm tra xem chư ng trình tr về kết qu có đúng như kỳ vọng hay kh ng
Ch c năng n y cho ta biết được l chư ng trình có độ ch nh xác bao nhi u phần trăm Ta t nh độ ch nh xác (Accuracy), chỉ số n y c ng cao thì m hình đưa ra c ng tốt
Giải pháp ti p cận m ố
Để thực hiện được các ch c năng đề ra, ta cần thực hiện các c ng việc sau
Tìm hiểu về Convolutional Neural Network v framework hỗ trợ cho việc phân t ch quan điểm
Sau khi tìm hiểu thì TensorFlow l framework được chọn vì nó hỗ trợ CNN tốt v chạy được tr n GPU
Tìm hiểu về ng n ngữ Python v c i đ t m i trường v hiện thực các ch c năng
Hiện thực chư ng trình cho hai m hình CNN v SVM Mục ti u của việc d ng SVM l để so sánh xem hiệu qu v độ ch nh xác của hai m hình như thế n o Như kết qu trong chư ng 5, m hình CNN cho ra kết qu về độ ch nh xác tốt h n SVM
Sau đây l chi tiết về TensorFlow v cách d ng của nó trong luận văn Trong chư ng 3 ta đã s lược các khái niệm về Graph, Tensor, Session,… Ở đây ta sẽ trình b y chi tiết các d ng nó v o Convolutional Neural Network được sử dụng trong chư ng trình
Th nh phần cốt l i nhất của mỗi chư ng trình học máy ch nh l m hình Đó l l do tại sao machine learning gọi l m hình học máy ch kh n ph i lá máy học Một m hình tốt để máy học dữ liệu v cho ra kết qu c ng ch nh xác thì có thể gọi đó l m hình tốt
Trong m hình có các lớp c b n Emdedding Layer, Convulution Layer, Maxpooling Layer, Dropout Layer v Fully Contected Layer Mỗi lớp có các ch c năng c b n v được m t cụ thể tiếp theo Chi tiết về cách hiện thực được m t trong phần phụ lục
Hình 4.1 TensorFlow – các layer trong m hình v mối li n Nguồn: 15])
Embedding Layer: Đây l lớp đầu ti n của mạng neuron t ch chập Nó d ng để ánh xạ từ vựng qua vector bi u di n Nó l b ng tìm kiếm để học dữ liệu Việc ánh xạ d ng vector ngẫu nhi n để biểu di n các từ trong câu Ta đưa v o W v nó ch nh l ma trận m m hình ph i học trong suốt quá trình huấn luyện Mục ti u của m hình l tìm ra được W với dữ liệu huấn luyện
Convolution Layer: Đây l lớp ch nh d ng để t nh t ch chập Các lớp trong CNN được kết nối th ng qua ph p convolution ch kh ng th ng qua việc li n kết trực tiếp Điều n y giúp cho việc chia sẽ trọng số v nâng cao hiệu qu t nh toán bởi vì ta có thể t nh nó tr n GPU thay vì chỉ d ng CPU
Sau khi qua lớp convolutional, dữ liệu được đưa v o lớp Max Pooling để chuẩn hóa
Dữ liệu sau khi qua lớp convolution sẽ được đưa qua lớp n y Mục đ ch chính của layer n y l để chuẩn hóa đầu ra các vector sao cho chúng có số chiều l như nhau sau khi đã được suy gi m trước đó bởi các filters có size khác nhau trong lúc convolution B ng việc chỉ lấy một giá trị tại một vị tr thay vì to n bộ nhưng vẫn giữ các th ng tin quan trọng nhất trong đó, số lượng tham số c ng được suy gi m v l m cho việc t nh toán hiệu qu h n nhiều
Dropout l một phư ng pháp tắt ngẫu nhi n các units trong Networks Tắt t c cho các unit giá trị b ng kh ng v t nh toán feedforward v backpropagation bình thường trong khi training Việc n y kh ng những giúp lượng t nh toán gi m đi m c n l m gi m việc overffitng Trong quá trình huấn luyện, ta loại bỏ ngẫu nhi n các neuron với xác suất p các neuron n y sẽ kh ng được quan tâm trong c quá trinh lan truyền tới v lan truyền ngược Tuy nhi n, trong quá trình kiểm tra, to n bộ các neuron đều được quan tâm v trọng số của nó được nhân với xác suất p trước đó Th ng thường, dropout được d ng ở lớp fully connected trừ lớp cuối , kh ng d ng ở lớp convolutional hay pooling
Các layer được kết nối đầy đủ lấy các feature đã lọc ở cấp cao v chuyển chúng th nh các phiếu bầu vote phục vụ cho việc xác định đối tượng
Các layer được kết nối đầy đủ l một khối ch nh của mạng n -ron truyền thống Thay vì coi đầu v o như một m ng hai chiều, chúng được coi như một list đ n v tất c đều được xử l giống nhau Mỗi giá trị bỏ phiếu ri ng bầu cho hình nh hiện tại l 1 hay 0
Giống như các layer khác, Các layer được kết nối đầy đủ có thể được xếp chồng l n nhau vì đầu ra của chúng một list các vote tr ng giống với đầu v o một list các giá trị Trong thực tế, một v i các layer được kết nối đầy đủ thường được xếp chồng l n c ng với nhau, với mỗi layer trung gian bỏ phiếu cho các loại "ẩn" Mỗi layer b sung sẽ cho ph p mạng học các t hợp tinh vi h n của các đ c trưng feature v sẽ giúp nó đưa ra quyết định tốt h n
Ta d ng các vector đ c trưng sau khi đã được max pooling v dropout để dự đoán kết qu Việc dự đoán n y được thực hiện b ng cách lấy giá trị có điểm lớn nhất Việc d ng h m softmax l để chuẩn hóa giá trị của xác suất tf.nn.xw_plus_b ch nh l h m ( ) như đã trình b y trong chư ng 3
Mất mát ch nh l việc đo lường lỗi của m hình Mục ti u của ta l l m sao để giá trị loss c ng nhỏ c ng tốt Trong khi đó accuracy ch nh l độ ch nh xác v giá trị n y c ng lớn c ng tốt
Mô hình tổng th và chi ti t cho t ng chứ ă
M hình của hệ thống dựa tr n 2 Ta biến đ i các câu văn b n đầu v o th nh một ma trận Mỗi d ng của ma trận tư ng ng với một token từ Điều đó có nghĩa l mỗi d ng trong ma trận l một vector đại diện cho một từ trong câu Gi sử ta có một câu gồm 10 từ được biểu di n th nh word embedding vector gồm 100 chiều, ta sẽ có đầu v o l một ma trận 10×100, tư ng ng trong xử l nh, ta có một b c nh 10×100 pixel
Hình 4.1 b n dưới l m hình của hệ thống Lớp đầu ti n xây dựng vector từ các từ trong câu Lớp tiếp theo sẽ thực hiện việc convolution những word vector n y với tập các filter khác nhau v sau đó max-pooling để cho ra tập các đ c trưng tư ng ng
Hình 4.2 M hình ng dụng nguồn: 2
Cho một câu có n từ n l số chiều của vetor v , ta gọi là từ ở vị trí th của vector v Câu tr n được biểu di n như sau
Trong đó là phép kết nối giữa hai vector Một cách t ng quát, là biểu di n của vector từ vị trí th tới Một phép convolution với bộ lọc (filter) w có h từ sẽ cho ra một đ c trưng mới như sau:
= ( )Trong đó b là bias và chính là hàm phi tuyến Qua việc áp dụng filter lên tất c các cửa s của câu sẽ cho ra b ng đồ đ c trưng như sau:
Sau bước convolution này, ta áp dụng max-pooling để lấy giá trị lớn nhất C = max{c} và coi đây l đ c trưng của filter n y Quá trình tr n l cách để có được một đ c trưng từ một filter Trong hệ thống ta có rất nhiều filter và sẽ cho ra nhiều đ c trưng khác nhau Các đ c trưng n y sẽ kết nối với nhau thành fully connected layer và cuối cùng là output layer
Có thể hình dung kiến trúc chư ng trình như sau:
Dữ liệu được d ng trong đề t i n y được lấy từ C ng ty Younet Từ nguồn dữ liệu th , tác gi thực hiện việc đánh nhãn labelling để huấn luyện v kiểm tra
Chư ng trình d ng 80% để huấn luyện v 20% để kiểm tra Các ti u ch dung để đánh giá mô hình l ccuracy Score T nh ch nh xác được áp dụng cho t ng quát m hình v cho từng aspect Chi tiết sẽ được trình b y trong chư ng 5 – Kết qu hiện thực
Dữ liệu l những câu bình luận, đánh giá về s n phẩm có dạng như sau:
“Vớ t ết kế ầu ĩn , k ung v ền nox ứng áp ùng độ đầm tay có kích t ướ : D 115.5 mm - Ngang 62.1 mm - D y 12.3 mm ùng k ố lượng 135 ủ máy o t ảm g á ắ ắn
P one 3Gs m ng trong ngườ P n uẩn L -Ion vớ dung lượng 1200 mA G l xy Note 4 đượ tr ng ị m n ìn Super Amoled k t ướ 5.7 inches độ p ân g ả 2Km ng lạ ât lượng ển t n xuất sắ , gó n ìn rộng v ển t ị ngo trờ tốt
Vớ ế út S-pen t ần t án , v ệ quản lý t ờ g n ọ tập, l m v ệ ủ ạn sẽ dễ d ng ơn o g ờ ết vớ á t n năng n ư tạo g ú n n , ghi chú tr t ếp l n m n ìn trong k duyệt we y đọ m l v vô số mẫu g ú trong p ần mềm S Note
Huấn luyện Tiền xử l dữ liệu Thu thập nội dung
P ần ứng n trong ủ Nok 808 Purev ew sử dụng v xử lý 1.3 GHz, ộ xử lý đồ ọ GPU Bro d om BCM2763, ộ n ớ trong 16 GB, ộ n ớ RAM 512 Mb vớ đ ều k ện t ếu sáng t ì mìn k ông đán g á o N ưng k ụp t ếu sáng t ì LG l m o á t ết ị ệt lạ để g ảm nose n n n ìn á t ết t ấy k ông ó sứ sống
Máy đã ó ản rom 6.0 g úp ả t ện ệu năng ủ máy tốt ơn Cặp lo oomsound ùng ông ng ệ e t ud o trứ d n
Trong tầm g á n n y k oảng 5 tr ệu đồng úng t ó một ế sm rtp one gần n ư l o n ảo n ìn ung t ì á sm rt p one ện g ờ á ứ năng gần gần n ư n u
Trong chư ng trình, ta huấn luyện cho nó học các aspects (09 loại) v phân loại aspect của dữ liệu để biết được l người d ng khen hay ch cho mỗi aspect như thế n o V dụ câu Cặp lo oomsound ùng ông ng ệ e t ud o trứ d n l khen về aspect gi i tr Đây l tập dữ liệu test từ C ng ty, chư ng trình có thể áp dụng với các tập dataset v aspect khác m kh n phụ thuộc v o một tập aspect duy nhất
Dữ liệu sau khi được thu thập v gán nhãn labeling trước khi được đưa v o m hình để học được qua bước tiền xử l Ở bước n y ta d ng stopword của tiếng Việt để loại bỏ các từ kh ng có nhiều nghĩa trong văn b n như:
biết bao, biết chừng n o, bấy lâu nay
c ng vậy, c ng vậy th i
… Stopword list được lấy từ https://github.com/stopwords-iso/stopwords-vi
Bênh cạnh đó, các k tự biểu thị c m xúc như buồn = , vui = ,… c ng được loại bỏ trước khi huấn luyện c ng như trong quá trình kiểm tra sau n y Việc loại bỏ các từ kh ng cần thiết n y kh ng những kh ng l m mất đi t nh ch nh xác của m hình m c n giúp cho chư ng trình chay nhanh h n
Trong chư ng 3 chúng ta đã biết được khái niệm về Graph, Session, Tensor trong TensorFlow Trước khi hiểu được l m thế n o định nghĩa v hiện thực thủ tục huấn luyện trong TensorFlow, ta nói chi tiết h n về cách Session va Graph l m việc
Session: Trong TensoFlow, một Session l m i trường m nó thực thi các tác vụ Operations trong Graph Nó ch a trạng thái các biến Varibles v h ng đợi Mỗi một Session vận h nh tr n một Graph Bạn có thể khai báo tường minh Session cho các tác vụ, biến m nó được thực hiện, nếu kh ng nó sẽ thuộc Session m c định
Graph: Ch a đựng những tác vụ v Tensor Ta có thể d ng nhiều
Graph nhưng th ng thường thì một Graph l đủ Các Graph được ch a trong một Session Nếu bạn kh ng khai báo tường minh, chư ng trình sẽ chạy tr n Graph m c định Để huấn luyện m hình, ta khởi tạo Convolutional Neural Network với các biến v tác vụ được định nghĩa trong Graph v Session m ta đã tạo
Sau đó ta định nghĩa việc tối ưu hóa m hình cho h m loss TensorFlow xây dựng sẵn các h m tối ưu như AdamOptimizer, GradientDescentOptimizer, AdadeltaOptimizer, AdagradOptimizer
K t luận chung
Đề t i n y nh m mục đ ch xây dựng ng dụng hỗ trợ cho nhu cầu thực tế tại
Công ty về m t nghi n c u v hiện thực có một số nghĩa thiết thực sau:
Tìm hiểu được một cách t ng quát về Neural Network v Deep learning
Tìm hiểu được chi tiết Convolutional Neural Network
Tìm hiểu được về TensorFlow v hiện thực chư ng trình
V ự : Sau 6 tháng kể từ khi nhận đề t i, với sự giúp đỡ tận tình của Thầy Qu n Th nh Th , luận văn đã đạt được một số kết qu sau đây
Hỗ trợ người d ng xây dựng m hình phân t ch quan điểm d ng
Convolutional Neural Network tr n tiếng Việt
M hình n y có thể d ng cho các tập dữ liệu khác kh ng nhất thiết ph i l smart device
Hỗ trợ người d ng trong việc tr ch xuất aspect của văn b n, tiết kiệm chi ph về m t thời gian
So sánh kết qu giữa CNN v SVM
Từ kết qu của chư ng trình, kết hợp với việc phân loại, ta có thể có một hệ thống phân t ch c m xúc th nh c ng.
Mở rộng
Luận văn chưa tìm hiểu được nhiều về các m hình khác của deep learning nhu LSTM, DBN,… để từ đó so sánh điểm mạnh yếu của các m hình
Chỉ tìm hiểu được supervised learning
Chư ng trình chưa hiện thực phần UI giúp người d ng sử dụng tốt h n
Chưa hỗ trợ được nhiều tiện ch cho người d ng, chỉ đ n thuần l training v validation
Phân loại cho câu có nhiều aspect chưa tốt
Hỗ trợ th m về phần giao diện cho người d ng
Xây dựng phần trợ giúp, hướng dẫn sử dụng
Xây dựng đầy đủ b n thiết kế của chư ng trình để có thể hiện thực chư ng trình trên các m i trường lập trình khác hay các hệ thống khác như d ng
Xây dựng th m các mẫu thu thập dữ liệu cho các domain khác nhau để kiểm tra s c mạnh của ng dụng Mỗi domain được lựa chọn bởi người d ng tr n giao diện
Kết hợp việc phân loại d ng SVM với CNN
Nghi n c u LSTM để hiện thực v so sánh
p dụng rules cho các câu đa nghĩa
[1] LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton "Deep learning." Nature521, no 7553 (2015): 436-444
[2] Kim, Yoon "Convolutional neural networks for sentence classification" arXiv preprint arXiv: 1408.5882 (2014)
[3] Poria, Soujanya, Erik Cambria, and Alexander Gelbukh "Aspect extraction for opinion mining with a deep convolutional neural network" Knowledge-Based Systems 108 (2016): 42-49
[4] Severyn, Aliaksei, and Alessandro Moschitti "Twitter sentiment analysis with deep convolutional neural networks." In Proceedings of the 38th
International ACM SIGIR Conference on Research and Development in Information Retrieval, pp 959-962 ACM, 2015
[5] Bengio, Yoshua "Learning deep architectures for AI." Foundations and trends® in Machine Learning 2, no 1 (2009): 1-127
[6] Le, Quoc V "A Tutorial on Deep Learning Part 1: Nonlinear Classifiers and The Backpropagation Algorithm." (2015)
[7] Le, Quoc V "A Tutorial on Deep Learning Part 2: Autoencoders,
Convolutional Neural Networks and Recurrent Neural Networks."
[8] Q V Le, R Monga, M Devin, K Chen, G S Corrado, J Dean, and A
Y Ng Building high-level features using large scale unsupervised learning In In International Conference on Machine Learning, 2012
[9] Ling Deng, Dong Yu "Deep Learning Methods and Applications", In
Signal Processing Volume 7 Issues 3-4, ISSN: 1932-8346
[10] Lee, Honglak "Tutorial on deep learning and applications." In NIPS 2010
Workshop on Deep Learning and Unsupervised Feature Learning 2010
[11] Wang, Bo, and Min Liu "Deep Learning for Aspect-Based Sentiment
[12] LeCun, Yann, Koray Kavukcuoglu, and Clément Farabet "Convolutional networks and applications in vision." In ISCAS, pp 253-256 2010
[13] Ian Goodfellow and Yoshua Bengio and Aaron Courville "Deep
Learning" at http://www.deeplearningbook.org/, 2016
[14] S Poria , E Cambria , A Gelbukh , F Bisio , A Hussain , Sentiment data flow anal- ysis by means of dynamic linguistic patterns, IEEE Comput Intell Mag 10 (4) (2015a) 26–36
[15] Google Tensorflow at https://www.tensorflow.org/
[16] Nguyen, H.N., Van Le, T., Le, H.S and Pham, T.V., 2014, December
Domain specific sentiment dictionary for opinion mining of vietnamese text In International Workshop on Multi-disciplinary Trends in Artificial
Intelligence (pp 136-148) Springer International Publishing
[17] Kieu, Binh Thanh, and Son Bao Pham "Sentiment analysis for vietnamese." Knowledge and Systems Engineering (KSE), 2010 Second
[18] Le, H.S., Van Le, T and Pham, T.V., 2015, November Aspect analysis for opinion mining of Vietnamese text In Advanced Computing and
Applications (ACOMP), 2015 International Conference on (pp 118-123)
I C Để chạy chư ng trình, ta để source code của chư ng trình v o n i c i đăt TensorFlow v run python3 train py cho việc huấn luyện ho c python3 validate py cho việc kiểm tra
Các tham số của chư ng trình được cấu hình để có thể điều chỉnh d d ng m kh ng cần ph i sửa code v build lại
Vì chư ng trình được hiện thực với Python v d ng với framework, thư viện dưới đây n n ta cần c i đ c đầy đủ để có thể chạy được chư ng trình đúng:
Ubuntu: https://www.tecmint.com/install-ubuntu-16-04-alongside- with-windows-10-or-8-in-dual-boot/
TensorFlow framework: https://www.tensorflow.org/install/
Sklearn: http://scikit-learn.org/stable/install.html
Cuda v Cudnn: http://docs.nvidia.com/cuda/cuda-installation-guide- linux/index.html#axzz4mwNw2ZN5
Sau đây l phần gi i th ch cho mã nguồn d ng trong chư ng trình Nó bao gồm các class như TextCNN, Train, Validate,…
Trước ti n l class ch nh TextCNN của m hình xử l văn b n trong luận văn n y được định nghĩa trong như sau: class TextCNN(object): def init (self, sequence_length, num_classes, vocab_size, embedding_size, filter_sizes, num_filters, l2_reg_lambda):
sequence_length: Chiều d i của câu văn
num_classes: đầu ra của m hình
vocab_size: K ch thước của bộ từ vựng
embedding_size: số chiều của word embedding
filter_sizes: k ch thước của filter Trong đề t i ta d ng 3 k ch thước l 3, 4, 5
num_filters: Số lượng filter cho mỗi k ch thước
l2_reg_lambda: d ng để t nh toán độ mất mát
Bước tiếp theo l định nghĩa dữ liệu đầu v o cho m hình Ta d ng placeholder cho việc n y Placeholder tạo ra v ng l m việc v lưu giữ các biến m ta đưa v o mạng Nó như sau: self.input_x = tf.placeholder(tf.int32, [None, sequence_length], name="input_x") self.input_y = tf.placeholder(tf.float32, [None, num_classes], name="input_y") self.dropout_keep_prob = tf.placeholder(tf.float32, name="dropout_keep_prob")
Embedding Layer: Đây l lớp đầu ti n của mạng neuron t ch chập Nó d ng để ánh xạ từ vựng qua vector bi u di n Nó l b ng tìm kiếm để học dữ liệu Việc ánh xạ d ng vector ngẫu nhi n để biểu di n các từ trong câu
Embedding Layer: Đây l lớp đầu ti n của mạng neuron t ch chập Nó d ng để ánh xạ từ vựng qua vector bi u di n Nó l b ng tìm kiếm để học dữ liệu Trong Tensorflow nó được khai báo như sau: with tf.device('/cpu:0'), tf.name_scope("embedding"):
W = tf.Variable( tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0), name="W") self.embedded_chars tf.nn.embedding_lookup(W, self.input_x) self.embedded_chars_expanded tf.expand_dims(self.embedded_chars, -1)
M c định Tensorflow sẽ xử l tác vụ tr n GPU, param
'/cpu:0' d ng để xác định tác vụ chạy tr n CPU ch kh ng ph i l GPU Nguy n nhận l vì Embeeding kh ng được hỗ trợ trên GPU
Một điểm các l name_scope , đó l tầm vực của embedding Scope sẽ đưa tất c các tác vụ v o node gọi l embedding như khai báo ở tr n
W ch nh l ma trận m m hình ph i học trong suốt quá trình huấn luyện Mục ti u của m hình l tìm ra được W với dữ liệu huấn luyện
C M P : Đây l lớp ch nh d ng để t nh t ch chập v lấy max value sau mỗi ph p toán Ở đây, W l ma trận filter v h l kết qu sau khi đi qua h m k ch hoạt ReLU with tf.name_scope("conv-maxpool-%s" % filter_size):
# Convolution Layer filter_shape = [filter_size, embedding_size, 1, num_filters]
W tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1), name="W") b = tf.Variable(tf.constant(0.1, shape=[num_filters]), name="b") conv = tf.nn.conv2d( self.embedded_chars_expanded, W, strides=[1, 1, 1, 1], padding="VALID", name="conv") # Apply nonlinearity h = tf.nn.relu(tf.nn.bias_add(conv, b), name="relu")
# Max-pooling over the outputs pooled = tf.nn.max_pool( h, ksize=[1, sequence_length - filter_size + 1, 1, 1], strides=[1, 1, 1, 1], padding='VALID', name="pool") pooled_outputs.append(pooled)
Dropout Layer: Trong quá trình huấn luyện, ta loại bỏ ngẫu nhi n các neuron với xác suất p các neuron n y sẽ kh ng được quan tâm trong c quá trinh lan truyền tới v lan truyền ngược
Tuy nhi n, trong quá trình kiểm tra, to n bộ các neuron đều được quan tâm v trọng số của nó được nhân với xác suất p trước đó Th ng thường, dropout được d ng ở lớp fully connected trừ lớp cuối , kh ng d ng ở lớp convolutional hay pooling with tf.name_scope("dropout"): self.h_drop tf.nn.dropout(self.h_pool_flat, self.dropout_keep_prob)
Đ m ố ự : Ta d ng các vector đ c trưng sau khi đã được max pooling v dropout để dự đoán kết qu Việc dự đoán n y được thực hiện b ng cách lấy giá trị có điểm lớn nhất Việc d ng h m softmax l để chuẩn hóa giá trị của xác suất
Ta d ng các vector đ c trưng sau khi đã được max pooling v dropout để dự đoán kết qu Việc dự đoán n y được thực hiện b ng cách lấy giá trị có điểm lớn nhất Việc d ng h m softmax l để chuẩn hóa giá trị của xác suất tf.nn.xw_plus_b ch nh l h m ( ) như đã trình b y trong chư ng 3 with tf.name_scope("output"):
W tf.Variable(tf.truncated_normal([num_filters_t otal, num_classes], stddev=0.1), name="W") b = tf.Variable(tf.constant(0.1, shape=[num_classes]), name="b") self.scores = tf.nn.xw_plus_b(self.h_drop, W, b, name="scores") self.predictions tf.argmax(self.scores, 1, name="predictions")
M m A acy): Mất mát ch nh l việc đo lường lỗi của m hình Mục ti u của ta l l m sao để giá trị loss c ng nhỏ c ng tốt Trong khi đó accuracy ch nh l độ ch nh xác v giá trị n y c ng lớn c ng tốt with tf.name_scope("loss"): losses tf.nn.softmax_cross_entropy_with_logits(self.s cores, self.input_y) self.loss = tf.reduce_mean(losses) with tf.name_scope("accuracy"): correct_predictions tf.equal(self.predictions, tf.argmax(self.input_y, 1)) self.accuracy tf.reduce_mean(tf.cast(correct_predictions,
THÔNG TIN CHUNG
Họ v tên: N V T ậ Ng y, tháng, năm sinh: 13-01-1981 N i sinh: Qu ng Ngãi Địa chỉ li n lạc: 296 82 16 Nguy n Văn Lượng, Phường 17, Quận G Vấp, Tp.HCM
QUÁ TRÌNH Đ O TẠO
- Từ năm 1999 đến năm 2004: Học Đại học tại Trường Đại học Bách Khoa, Đại học Quốc Gia Tp HCM
- Từ năm 2013 đến năm 2017: Học Thạc sĩ tại Trường Đại học Bách Khoa, Đại học Quốc Gia Tp HCM