Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)

56 359 1
Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)

Đ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

Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)Ứng Dụng Mạng Neural Vào Hệ Gợi Ý Trong Thương Mại Điện Tử (LV thạc sĩ)

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - VÕ ĐỨC ANH ỨNG DỤNG MẠNG NEURAL VÀO HỆ GỢI Ý TRONG THƯƠNG MẠI ĐIỆN TỬ LUẬN VĂN THẠC SĨ KỸ THUẬT (Theo định hướng ứng dụng) HỒ CHÍ MINH - 2017 HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - VÕ ĐỨC ANH ỨNG DỤNG MẠNG NEURAL VÀO HỆ GỢI Ý TRONG THƯƠNG MẠI ĐIỆN TỬ Chuyên ngành: Hệ thống thông tin Mã số: 60.48.01.04 LUẬN VĂN THẠC SĨ KỸ THUẬT (Theo định hướng ứng dụng) NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS LÊ TUẤN ANH HỒ CHÍ MINH - 2017 i LỜI CAM ĐOAN Tơi cam đoan cơng trình nghiên cứu riêng Các số liệu kết luận văn trung thực chưa cơng bố cơng trình nghiên cứu khác TP.HCM, ngày 28 tháng 05 năm 2017 Học viên thực luận văn Võ Đức Anh ii LỜI CẢM ƠN Để hoàn thành luận văn này, nỗ lực nghiên cứu cố gắng thân khơng thể thiếu định hướng bảo quý báu Thầy Cô hướng dẫn Em xin gửi lời cảm ơn sâu sắc tới Thầy - PGS TS Lê Tuấn Anh, giáo viên trực tiếp hướng dẫn Thầy - TS Bùi Xuân Lộc, người tận tình bảo định hướng thêm cho em suốt trình nghiên cứu thực luận văn Em xin gửi lời cảm ơn chân thành đến tất Thầy Cô trường Học Viện Công Nghệ Bưu Chính Viễn Thơng sở TP Hồ Chí Minh giảng dạy dìu dắt chúng em suốt trình học tập Trường Cuối cùng, em xin gửi lời cảm ơn đến gia đình, bạn bè người đồng hành, cổ vũ tinh thần, giúp em vượt qua giai đoạn khó khăn tạo điều kiện thuận lợi cho em học tập tốt hoàn thành luận văn Em xin chân thành cảm ơn! TP.HCM, ngày 28 tháng 05 năm 2017 Học viên thực luận văn Võ Đức Anh iii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT v DANH SÁCH BẢNG vi DANH SÁCH HÌNH VẼ, BIỂU ĐỒ vii MỞ ĐẦU CHƯƠNG 1.1 CƠ SỞ LÝ LUẬN Tổng quan thương mại điện tử Định nghĩa Giới thiệu hệ thống gợi ý Hiện trạng hệ thống thương mại điện tử 1.2 Tổng quan mạng neural Cấu trúc mạng neural Phân loại cấu trúc mạng neural 1.2.2.1 Mạng neural truyền thẳng lớp (hay perceptron lớp) 1.2.2.2 Mạng neural truyền thẳng nhiều lớp (hay perceptron nhiều lớp) 1.2.2.3 Mạng neural tự tổ chức (mạng Kohonen, mạng cạnh tranh) 10 1.3 Lý chọn đề tài 11 1.4 Mục tiêu đề tài 12 1.5 Phạm vi nội dung nghiên cứu 12 CHƯƠNG - THỰC TRẠNG NGHIÊN CỨU 13 2.1 Deep learning 13 2.2 Hệ thống gợi ý 13 Các khái niệm 13 Các kỹ thuật hệ gợi ý 14 2.3 Thuật giải lọc cộng tác 16 iv Kỹ thuật k láng giềng gần (User/Item k-nearest neighbors) 17 Kỹ thuật phân rã ma trận (matrix factorization) 19 2.4 Autoencoder 22 Autoencoder không đầy đủ (Undercomplete Autoencoders) 24 Autoencoder định chuẩn (Regularized Autoencoders) 25 Autoencoder thưa (Sparse Autoencoders) 26 Autoencoder giảm nhiễu (Denoising Autoencoders) 29 CHƯƠNG 3.1 THỰC NGHIỆM VÀ ĐÁNH GIÁ .30 Môi trường thực nghiệm 30 Ngơn ngữ lập trình python 30 Giới thiệu thư viện TensorFlow 31 Cấu hình máy thực nghiệm 33 3.2 Thông tin tập liệu 33 3.3 Mô tả phương pháp thực nghiệm 35 Tiền xử lý liệu xây dựng ma trận đánh giá 36 Xây dựng mơ hình 37 Khai báo tham số 38 Huấn luyện mơ hình 40 Dự đoán kết tính tốn tỉ lệ lỗi 40 3.4 Kết thực nghiệm 41 MovieLens 41 NguyenKim 44 3.5 Nhận xét đánh giá 44 KẾT LUẬN VÀ KIẾN NGHỊ 45 Những đóng góp luận văn 45 Những vấn đề tồn 45 Hướng phát triển luận văn 46 DANH MỤC CÁC TÀI LIỆU THAM KHẢO 47 v DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT Viết tắt Tiếng Anh Tiếng Việt EC, TMĐT E-commerce, Ecommerce Thương mại điện tử RS Recommendation System Hệ thống gợi ý CF Collaborative Filtering Lọc cộng tác CDF Collaborative Deep Learning Học sâu cộng tác RNN Recurrent Neural Network Mạng neural tái phát KNN K-Nearest Neighbors K láng giềng gần MF Matrix Factorization Kỹ thuật phân rã ma trận DL Deep Learning Học sâu NLP Natural Language Processing Xử lý ngôn ngữ tự nhiên AE Autoencoders Mơ hình mã hố - giải mã SGD Stochastic Gradient Descent Kỹ thuật giảm gradient ngẫu nhiên SDAE RMSE Stacked Denoising Mơ hình mã hố – giải mã giảm Autoencoder nhiễu xếp chồng Root Mean Squared Error Giá trị bình phương trung bình lỗi lấy vi DANH SÁCH BẢNG Bảng 3.1: Mô tả rank tensor 32 Bảng 3.2: Mô tả cú pháp shape tensor 32 Bảng 3.3: Mô tả kiểu liệu tensorflow 33 Bảng 3.4: Thông tin tập liệu thực nghiệm 34 vii DANH SÁCH HÌNH VẼ, BIỂU ĐỒ Hình 1.1: Mơ hình thương mại điện tử Hình 1.2: Một mơ hình hệ thống gợi ý Hình 1.3: Neural nhân tạo Hình 1.4: Mơ hình mạng neural truyền thẳng Hình 1.5: Mơ hình mạng neural truyền thẳng lớp .9 Hình 1.6: Mơ hình mạng Kohonen 11 Hình 2.1: Một mơ hình deep learning với hai lớp ẩn .13 Hình 2.2: Ma trận trọng số biểu diễn đánh giá 14 Hình 2.3: Phân rã ma trận 20 Hình 2.4: Kiến trúc tổng quát autoencoder, ánh xạ đầu vào x tới đầu (gọi tái thiết) r thông qua mã h 22 Hình 2.5: Mơ hình trực quan autoencoder .23 Hình 3.1: Mơ tả cú pháp, dòng lệnh Python 30 Hình 3.2: Bảng xếp hạng ngơn ngữ lập trình năm 2016 31 Hình 3.3: Tỉ lệ lỗi kiểm tra chéo tập Movielens-1M 41 Hình 3.4: Tỉ lệ lỗi mơ hình hố dựa dòng cột tập Movielens-1M 42 Hình 3.5: Tỉ lệ lỗi điều chỉnh tốc độ học tập Movielens-1M 42 Hình 3.6: Tỉ lệ lỗi thay đổi số lần vào mạng tập Movielens-1M 43 Hình 3.7: Tỉ lệ lỗi thay đổi số lớp ẩn mạng tập Movielens-1M 43 MỞ ĐẦU Trong năm gần đây, thương mại điện tử (E-commerce) phát triển bùng nổ Lợi ích hiệu khỏi phải bàn cãi, hệ thống bán hàng trực tuyến đem lại cho người dùng tiện lợi, dễ dàng với giá cạnh tranh phục vụ tốt Đi với đó, doanh nghiệp phải cạnh tranh khốc liệt để giành trì thị phần mình, cho làm khách hàng phải ngày thỏa mãn, đem tới trải nghiệm ngày cao Do đó, để việc bán hàng trở nên phát triển ngồi lợi vốn có việc có thêm “người trợ giúp” cần thiết Hệ gợi ý giải pháp hữu hiệu áp dụng rộng rãi Tuy nhiên Việt Nam nay, hệ thống gợi ý chưa xem xét áp dụng mức Vấn đề cần phải có nhìn thấu đáo Mạng neural với mơ hình deep learning xu hướng phổ biến Mơ hình biến thể ứng dụng rộng rãi nhiều lĩnh vực Một vài mơ hình mạng neural giới thiệu gần có thay đổi cách tiếp cận với cải tiến đáng kể, giải nhiều vấn đề thực tiễn gặp phải, đem lại kết khả quan Có thể nói sau thời kỳ chững lại với nhiều hạn chế cách tiếp cận cũ, mạng neural phát triển mạnh mẽ trở lại vị trí vai trò Từ nhận định trên, đề tài đề xuất hướng nghiên cứu ứng dụng mạng neural vào hệ gợi ý toán thương mại điện tử Các nhà phát triển hệ thống gợi ý vào năm 1992 (D Goldberg cộng sự) đưa thuật ngữ “collaborative filtering” (lọc cộng tác) Nhiều công ty xây dựng hệ gợi ý cho website từ sớm điển Amazon, eBay, CDNOW, Levis, Netflix [1] Từ đến nay, nhiều website phát triển hệ gợi ý cho riêng [2] Phương pháp dùng cho hệ gợi ý chia thành ba nhóm chính: phương pháp dựa nội dung, phương pháp dựa lọc cộng tác phương pháp lai Phương pháp lọc cộng tác đánh giá có hiệu coi có nhiều cách tiếp cận 33 Bảng 3.3: Mô tả kiểu liệu tensorflow Loại liệu Loại python Mô tả DT_FLOAT tf.float32 32 bits floating point DT_DOUBLE tf.float64 64 bits floating point DT_INT8 tf.int8 bits signed integer DT_INT16 tf.int16 16 bits signed integer DT_INT32 tf.int32 32 bits signed integer DT_INT64 tf.int64 64 bits signed integer DT_UINT8 tf.uint8 bits unsigned integer DT_STRING tf.string DT_BOOL tf.bool DT_COMPLEX64 tf.complex64 Variable length byte arrays Each element of a Tensor is a byte array Boolean Complex number made of two 32 bits floating points: real and imaginary parts DT_QINT8 tf.qint8 bits signed integer used in quantized Ops DT_QINT32 tf.qint32 32 bits signed integer used in quantized Ops DT_QUINT8 tf.quint8 bits unsigned integer used in quantized Ops Variable: lưu trạng thái (state) sau tính tốn graph Cấu hình máy thực nghiệm Toàn thực nghiệm thực MacBook Pro 13-inch, 2016 Cấu hình: - Bộ xử lý Intel Core i5 2GHz Bộ nhớ RAM GB 1867 MHz-LPDDR3 Đồ hoạ Intel Iris Graphics 540 1536 MB Sourcecode phát triển chạy CPU, chưa chạy GPU 3.2 Thông tin tập liệu Bộ liệu thực nghiệm kết hợp liệu Movielens phục vụ mục đích nghiên cứu liệu thực tế phục vụ kinh doanh NguyenKim Điều 34 đem tới nhiều thử nghiệm khác nhau, khả cho nhiều kết thú vị để có so sánh đánh giá hợp lý Bảng 3.4: Thông tin tập liệu thực nghiệm Tên tập liệu Thông tin user Thông tin item Nhãn liên quan MovieLens-1M Có Có Khơng MovieLens-10M Khơng Có Có MovieLens-20M Khơng Có Có Có Có Có NguyenKim MovieLens tập liệu thu thập có đánh giá từ người dùng trang MovieLens (http://movielens.org) Tập liệu thu thập khoảng thời gian khác tuỳ thuộc vào loại độ lớn khác Tập liệu chia sẻ công khai hồn tồn miễn phí, phục vụ cơng tác học tập nghiên cứu MovieLens bao gồm thông tin phim, người dùng, đánh giá người dùng phim nhãn tương ứng Số lượng phim, người dùng đánh giá tuỳ vào độ lớn tập liệu MovieLens tập liệu điển hình cho hệ gợi ý, tuỳ biến khác phù hợp cho việc thực nghiệm, đánh giá Với tập liệu MovieLens-1M có triệu đánh giá từ 6.040 người dùng 3.900 phim Tất file có dạng *.csv, kích thước file ratings.csv lớn với 2,4 MB có cấu trúc định dạng sau: UserID::MovieID::Rating::Timestamp Trong đó: - UserID mã người dùng, phạm vi từ tới 6.040 MovieID mã phim, phạm vi từ tới 3.952 Rating giá trị đánh giá, từ tới mức với mức tăng 0,5 (0,5 – 5,0 sao) Timestamp nhãn thời gian tính giây theo thời điểm đánh giá Mỗi người dùng có 20 đánh giá 35 Các file lại bao gồm: movies.csv, links.csv, tags.csv Tập Movielens-10M có 10 triệu đánh giá 95.589 nhãn (tags) từ 10.681 phim 71.567 người dùng Tất file định dạng *.dat Về cấu trúc thơng tin file ratings.dat hồn tồn tập Movielens-1M Tập MovieLens-20M có 20 triệu đánh giá (chính xác 20.000.263) 465.564 nhãn (tags) 27.278 phim 138.493 người dùng Các người dùng tham gia đánh giá từ 09/01/1995 tới 31/03/2015 NguyenKim tập liệu từ trang bán hàng điện máy Nguyễn Kim (http://nguyenkim.com) thu thập từ năm 2014 tới tháng 10/2016 Tập liệu bao gồm thông tin sản phẩm điện máy, người dùng, thông tin mua hàng đánh giá người dùng sản phẩm Đây tập liệu nhất, có q trình công tác, phù hợp để thực nghiệm đánh giá với yêu cầu luận văn đồng thời ứng dụng cụ thể vào công việc thực tiễn Thông tin chi tiết liệu có 160.394 người dùng 15.945 sản phẩm, có 1.221 người dùng định danh tiến hành đánh giá toàn sản phẩm Số đánh giá thu 73.844, bao gồm người dùng chưa định danh (userId = 0) Mức độ đánh giá gồm năm mức từ tới (1 – sao) Tất dạng file *.csv Định dạng liệu ban đầu khơng sẳn có kiểu userID::productID::rating Movielens, mà cần thêm bước tiền xử lý liệu đầu vào để có thơng tin Ở hai tập liệu đối tượng người dùng xem xét đưa gợi ý, tuỳ vào người dùng mà có gợi ý phù hợp Độ xác tỉ lệ lỗi tính tốn đánh giá chi tiết 3.3 Mô tả phương pháp thực nghiệm Sau nghiên cứu mơ hình mạng Autoencoder, luận văn thực việc xây dựng mạng Autoencoder để thử nghiệm với hai liệu Movielens NguyenKim Mơ hình sau hồn thành giai đoạn lập trình thực huấn luyện hiệu chỉnh tham số phù hợp nhằm cho kết tốt Việc huấn luyện 36 mạng autoencoder giúp học đặc tính liệu, học cách biểu diễn đánh giá từ đưa đánh giá dự đốn người dùng Tiền xử lý liệu xây dựng ma trận đánh giá Như mô tả hai liệu thử nghiệm dạng file, file gồm nhiều dòng liệu Để phục vụ cho việc xây dựng mơ hình, liệu cần xử lý để làm “tinh” Đối với Movielens cần đọc dòng (khơng làm tràn nhớ) đưa giá trị đánh giá vào ma trận, phải xác định trước kích thước (dòng cột) ma trận cần dùng, tránh lãng phí xử lý thời gian Với liệu NguyenKim trước làm điều thực thêm bước loại bỏ đánh giá người dùng chưa định danh (userId = 0) Dữ liệu sau đọc lưu trữ vào nhớ, xây dựng nên ma trận đánh giá với kích thước số người dùng với sản phẩm có thực đánh giá Ma trận đầu vào cho trình huấn luyện # Read data from file def readDataNK(): rating = pd.read_csv('rating.csv', usecols=['rating_value', 'post_id', 'thread_id']) info_product = pd.read_csv('discussion.csv', usecols=['thread_id', 'object_id', 'object_type']) info_user = pd.read_csv('discussion_posts.csv', usecols=['post_id', 'thread_id', 'user_id']) return rating, info_product, info_user # Build a weight matrix by rating values def buildMatrixNK(): # dataframe with need fields rating, info_product, info_user = readDataNK() # get number user user_ids = set(info_user.loc[info_user['user_id'] > 0].iloc[:, 2]) list_user = sorted(list(user_ids)) us = [list_user[i] for i in range(len(user_ids))] # get number product product_ids = set(info_product.loc[(info_product['object_type'] == 'P')].iloc[:, 1]) list_product = sorted(list(product_ids)) product = [list_product[i] for i in range(len(product_ids))] # matrix rating rows, columns = len(product), len(us) # Initialize matrix matrix_ratings = [[0 for x in range(columns)] for y in range(rows)] # Count building time start_time = time.time() for index, row in rating.iterrows(): # Find rating user user_id = user_selected_rows = info_user.loc[(info_user['post_id'] == row['post_id']) & (info_user['thread_id'] == row['thread_id'])] 37 if not user_selected_rows.empty: user_id = user_selected_rows.iloc[0]['user_id'] # Find rating product product_id = product_selected_rows = info_product.loc[(info_product['thread_id'] == row['thread_id']) & (info_product['object_type'] == 'P')] if not product_selected_rows.empty: product_id = product_selected_rows.iloc[0]['object_id'] # feed rating into matrix if (user_id > 0) & (product_id > 0): matrix_ratings[product.index(product_id)][us.index(user_id)] = row['rating_value'] print('Build matrix rating in %s seconds.' % (time.time() - start_time)) # Save matrix rating into file np.savetxt("matrix_nk.csv", matrix_ratings, delimiter=",") return matrix_ratings, rows Xây dựng mơ hình Sau xây dựng xong ma trận trọng số, ta tiến hành xây dựng mơ hình huấn luyện Cần lưu ý mơ hình autoencoder muốn học cách biểu diễn liệu số mã lớp ẩn phải nhỏ đầu vào Một mơ hình autoencoder bao gồm lớp đầu vào, lớp ẩn lớp đầu weights = { 'encoder_h1': tf.Variable(tf.random_normal([PARAM.n_input, PARAM.n_hidden_1])), 'encoder_h2': tf.Variable(tf.random_normal([PARAM.n_hidden_1, PARAM.n_hidden_2])), 'decoder_h1': tf.Variable(tf.random_normal([PARAM.n_hidden_2, PARAM.n_hidden_1])), 'decoder_h2': tf.Variable(tf.random_normal([PARAM.n_hidden_1, PARAM.n_input])), } biases = { 'encoder_b1': tf.Variable(tf.random_normal([PARAM.n_hidden_1])), 'encoder_b2': tf.Variable(tf.random_normal([PARAM.n_hidden_2])), 'decoder_b1': tf.Variable(tf.random_normal([PARAM.n_hidden_1])), 'decoder_b2': tf.Variable(tf.random_normal([PARAM.n_input])) } X = tf.placeholder("float", [None, PARAM.n_input]) # Building the encoder def encoder(x): # Encoder Hidden layer with sigmoid activation #1 layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['encoder_h1']), biases['encoder_b1'])) # Encoder Hidden layer with sigmoid activation #2 layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['encoder_h2']), biases['encoder_b2'])) return layer_2 # Building the decoder def decoder(x): # Decoder Hidden layer with sigmoid activation #1 layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['decoder_h1']), biases['decoder_b1'])) # Decoder Hidden layer with sigmoid activation #2 layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['decoder_h2']), biases['decoder_b2'])) return layer_2 # Construct model encoder_op = encoder(X) decoder_op = decoder(encoder_op) 38 # Prediction y_pred = decoder_op # Targets are the train data (rating is a part of train data) y_true = X # Original loss function loss = tf.reduce_mean(tf.pow(y_true - y_pred, 2)) # Optimizer, minimize the squared error optimizer = tf.train.RMSPropOptimizer(PARAM.learning_rate).minimize(loss) Khai báo tham số Trong mạng neural nói chung autoencoder nói riêng khai báo tham số mạng quan trọng Các tham số ảnh hưởng trực tiếp tới thời gian huấn luyện, độ xác kết sau huấn luyện mạng Việc tìm tham số tối ưu điều khó khơng muốn nói khơng thể, ta có cách thử sai để hiệu chỉnh dần trình huấn luyện mà thơi Có thể tham khảo phạm vi loại tham số để giảm thiểu việc thử sai nhiều lần, làm tốn thời gian công sức ''' Cấu hình tham số (Movielen Parameters) ''' # Tốc độ học learning_rate = 0.01 # Số lần vào mạng training_epochs = 50 # Network Parameters # Số mã lớp ẩn n_hidden_1 = 50 # Số mã lớp ẩn n_hidden_2 = 100 # Số mã lớp ẩn n_hidden_3 = 200 # Số đầu vào huấn luyện mạng n_input = 9066 # Tỉ lệ test (Cross-validation) test_size = 0.3 # Số gói lần huấn luyện total_batch = 20 # Giá trị tắc (Coefficient Regularization) beta = 0.01  Tốc độ học (Learning rate) Đây đại lượng quan trọng định tốc độ hội tụ thuật toán Nếu lựa chọn giá trị nhỏ tốc độ hội tụ chậm Điều làm cho số bước lặp trở nên lớn nhiều thuật tốn dừng lại trước tới đích mặc đù đích gần Trong thực tế tính tốn trở nên phức tạp learning rate q thấp ảnh hưởng tới tốc độ 39 thuật toán nhiều, chí khơng tới đích Ngược lại learning rate lớn có khả thuật tốn khơng hội tụ bước nhảy q lớn, khiến quanh quẩn đích Lựa chọn giá trị phù hợp đảm bảo thuật toán hội tụ tốc độ tính tốn nhanh Giá trị tham khảo từ khoảng 0.01 tới 0.1 tuỳ thuộc vào toán  Số lần vào mạng (training epochs) Thuật ngữ epoch dùng để mơ tả q trình tất mẫu đầu vào tập huấn luyện đưa vào để huấn luyện mạng Số lượng epoch xác định số lần mạng huấn luyện Giá trị định thời gian huấn luyện mạng Một giá trị phù hợp làm mơ hình mạng vừa đủ để học biểu diễn liệu đồng thời đảm bảo thời gian huấn luyện không lâu Giá trị thông thường từ vài chục tới vài trăm tuỳ thuộc vào loại mạng  Số lớp ẩn (hidden layer) Lớp ẩn đóng vai trò nhận liệu từ lớp đầu vào chuyển đổi chúng tới lớp tiếp sau để xử lý Bao nhêu lớp ẩn lớp ẩn có mã để biểu diễn đặc tính thật câu hỏi khó Thơng thường số lớp ẩn khơng vượt q 10 số lượng mã tuỳ độ phức tạp liệu (ở số chiều ma trận đánh giá)  Cross-validation (đánh giá chéo) Đây phương pháp kiểm tra độ xác mơ hình học máy dựa tập liệu học cho trước Thay dùng phần liệu làm tập liệu học cross-validation dùng tồn liệu để dạy cho máy Toàn liệu chia thành tập nhỏ Phần lớn dùng để học, phần lại dùng để kiểm tra Đây cách chống học vẹt (Quá khớp - Overfitting) hiệu Trong phạm vi luận văn tập liệu chia thành tỉ lệ 7:3, 8:2, 9:1 để thực nghiệm  Regurization (Đại lượng điều chỉnh) Đây đại lượng điều chỉnh đưa thêm vào hàm chi phí (đã trình bày chương 2) Khi tối ưu hàm này, ta không cần “tối ưu q”, mơ hình bị overfit vào liệu huấn luyện không đủ tổng quát để mơ hình hố liệu 40 Regurization cách để cân tượng Trong phạm vi báo ta xem xét L1/L2 regularization Thông thường L1 regularization dùng để chuẩn tắc trường hợp liệu thưa, L2 ngăn q khít q trình học Huấn luyện mơ hình Sau xây dựng xong mơ hình, khai báo đầy đủ tham số, ta tiến hành huấn luyện cho mô hình Vì hai tập liệu khơng chia tách phần huấn luyện phần để kiểm tra nên ta thực chia hai tập thành phần ngẫu nhiên nhau, sau huấn luyện phần lớn liệu kiểm tra phần lại Thực tế sau xây dựng xong ma trận đánh giá ma trận thưa Việc áp dụng kỹ thuật khác để khắc phục vấn đề này, đặc biệt mơ hình autoencoder giảm nhiễu cho việc khơi phục đánh giá bị thiếu hợp lý # Initializing the variables init = tf.global_variables_initializer() # Launch the graph with tf.Session() as sess: sess.run(init) # Init data X_data, rows = buildMatrixNK () # Split random dataset X_train, X_test = train_test_split(X_data, test_size=PARAM.test_size) RANGE = int(round(len(X_train)/PARAM.total_batch)) start_time = timeit.default_timer() # Train cycle for epoch in range(PARAM.training_epochs): # Loop over all batches for i in range(PARAM.total_batch): # Run optimization op and get loss with range _, c = sess.run([optimizer, loss], feed_dict={X: X_train[i * RANGE: (i + 1) * RANGE]}) # Display logs per epoch step print("Epoch:", '%04d' % (epoch + 1), "cost=", "{:.9f}".format(c)) print("Optimization Finished!") end_time = timeit.default_timer() training_time = (end_time - start_time) print('Training for %.2fm' % (training_time / 60.)) Dự đốn kết tính tốn tỉ lệ lỗi Sau lần huấn luyện xong, ta thực kiểm tra phần mẫu lại Kết thu phần đem để tính tỉ lệ lỗi Một đại lượng thường hay sử dụng để đo tỉ lệ lỗi mơ hình học máy giá trị bình thường trung 41 bình lỗi lấy (Root mean squared Error), gọi tắt RMSE Giá trị sử dụng để đánh giá độ khớp mơ hình so với liệu huấn luyện Được tính bậc hai giá trị tuyệt đối hệ số tương quan giá trị thực giá trị dự đoán: ∑𝑛 (𝑟̂𝑢 − 𝑟𝑢 )2 𝑅𝑀𝑆𝐸 = √ 𝑢=1 𝑛 # Applying encode and decode model on test data encode_decode = sess.run(y_pred, feed_dict={X: X_test}) # Calculate RMSE rmse = sess.run(tf.sqrt(tf.reduce_mean(tf.square(X_test - encode_decode)))) # Writing to save file np.savetxt("predict.csv", encode_decode, delimiter=",") 3.4 Kết thực nghiệm MovieLens Thời gian chạy thực nghiệm Movielens-1M, Movielens-10M, Movielens20M 10 phút, 30 Quá trình thực nghiệm tính tỉ lệ lỗi RMSE, đại lượng nhỏ tốt  Cross-validation Cross-validation 0.8 RMSE 0.79 0.78 0.77 0.76 0.75 0.74 Test size (%) 0.73 10 20 Hình 3.3: Tỉ lệ lỗi kiểm tra chéo tập Movielens-1M  Dựa dòng (Row-based) dựa cột (Column-based) 30 42 RMSE 0.9 0.85 0.8 0.75 0.7 0.65 0.6 0.55 0.5 Row-based Column-based Hình 3.4: Tỉ lệ lỗi mơ hình hố dựa dòng cột tập Movielens-1M  Điều chỉnh tốc độ học (learning rate) RMSE 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 learning rate 0 0.02 0.04 0.06 0.08 0.1 Hình 3.5: Tỉ lệ lỗi điều chỉnh tốc độ học tập Movielens-1M  Điều chỉnh số lần vào mạng (training epoch) 0.12 43 0.7 RMSE 0.69 0.68 0.67 0.66 0.65 0.64 0.63 0.62 training epochs 0.61 20 40 60 80 100 Hình 3.6: Tỉ lệ lỗi thay đổi số lần vào mạng tập Movielens-1M  Điều chỉnh số lớp ẩn (hidden layer) Hidden layer test 0.9 RMSE 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 hidden layers Hình 3.7: Tỉ lệ lỗi thay đổi số lớp ẩn mạng tập Movielens-1M Từ kết thực nghiệm mà ta có biểu đồ trên, biểu đồ quan trọng Nó góp phần giúp định hướng việc hiệu chỉnh tham số để đạt kết tốt Hiện tại, thông số cho kết mà đạt tỉ lệ lỗi thấp với RMSE = 0,424252998775 (trên tập Movielens-1M) là: learning_rate = 0.01 training_epochs = 50 44 n_hidden_1 = 10 n_hidden_2 = 20 n_hidden_3 = 30 n_hidden_4 = 40 n_input = 9066 test_size = 0.1 total_batch = 20 beta = 0.01 NguyenKim Thời gian chạy thực nghiệm tập liệu NguyenKim ước tính khoảng 50 phút, thời gian để xây dựng xong ma trận đánh giá chiếm tới 45 phút lại thời gian huấn luyện chưa tới phút Tốc độ xử lý thuật toán bị nhiều thời gian việc đọc lên dòng để xây dựng ma trận đánh giá file liệu có số dòng lớn Điều tác giả tìm cách khắc phục Từ đánh giá quan trọng việc thử nghiệm tập Movielens-1M, đồng thời có kiểm chứng lại tập NguyenKim, sau trình hiệu chỉnh thơng số thơng số tốt tập liệu NguyenKim là: learning_rate = 0.01 training_epochs = 50 n_hidden_1 = 10 n_hidden_2 = 20 n_hidden_3 = 30 n_hidden_4 = 40 n_input = 1221 test_size = 0.1 total_batch = 20 beta = 0.01 3.5 Nhận xét đánh giá Mạng Autoencoder học cách biểu đạt liệu cho đánh giá với sai số thấp Ứng dụng mạng Autoencoder vào hệ gợi ý cách tiếp cận hợp lý Từ mơ hình tiếp tục cải tiến đồng thời có kết hợp khác kết chắn tốt Hiện tác giả tiếp tục tối ưu mạng tìm cách đưa nhiều cải tiến vào mơ hình mạng Với tập liệu lớn hay tập mẫu ngày có thêm nhiều đánh giá mơ hình cho kết xác Từ ta lạc quan cách tiếp cận cho hệ gợi ý để hồn thiện 45 KẾT LUẬN VÀ KIẾN NGHỊ Những đóng góp luận văn Luận văn nghiên cứu mơ hình mạng neural, ứng dụng Autoencoder vào hệ gợi ý toán thương mại điện tử, mà cụ thể cho kết hai tập liệu thử nghiệm Movielens NguyenKim Mơ hình Autoencoder xây dựng qua trình cải tiến hiệu chỉnh cho kết khả quan, hồn tồn áp dụng vào hệ thống thực tế Đồng thời, luận văn cách thức để làm giảm thời gian huấn luyến liệu, hướng tối ưu tham số để giảm tỉ lệ lỗi Đề tài mở hướng tiếp cận ứng dụng mơ hình mạng neural toán dự đoán nay, đặc biệt lĩnh vực thương mại điện tử Không dừng lại mơ hình Autoencoder mà nhiều mơ hình khác Thêm nữa, mơ hình kết hợp với phương pháp áp dụng thành cơng trước đó, mà cụ thể hệ thống gợi ý lọc cộng tác, dự đốn xác Dựa nghiên cứu sở lý thuyết công nghệ liên quan, đề tài bám sát nội dung đề cương đề thu kết đáp ứng yêu cầu Từ kết bước đầu này, luận văn tiếp tục có hướng phát triển tốt hơn, tập liệu lớn phạm vi rộng hơn, kết đánh giá để cải tiến nhằm ngày xác Những vấn đề tồn Thời gian huấn luyện cho kết lâu Kết huấn luyện bị ảnh hưởng nhiều yếu tố:  Tập liệu NguyenKim chưa đủ lớn, đánh giá dẫn đến xây dựng ma trận đánh giá thưa  Do mơ hình mạng Autoencoder có nhiều tham số nên việc tối ưu chưa thể thử hết tất trường hợp  Phạm vi đề tài chưa tính tốn tới hình thức cập nhật liệu thời gian huấn luyện lại mô hình 46 Hướng phát triển luận văn Tiếp tục thử nghiệm cải tiến để giảm thời gian huấn luyện có kết tốt hơn, thu thập tập liệu lớn đặc biệt có giải pháp cho vấn đề người dùng liệu thưa Kết hợp với lọc cộng tác phương pháp lai nhằm tận dụng ưu điểm hai phương pháp Xem xét tới việc cập nhật liệu thời gian huấn luyện lại mơ hình, mức độ thay đổi tham số Nghiên cứu đánh giá để triển khai thực tế, vừa đảm bảo độ xác vừa đảm bảo thời gian thực Ngoài ra, sau mơ hình Autoencoder ứng dụng thành cơng, tác giả xem xét để áp dụng mơ hình mạng neural khác Từ có cách tiếp cận deep learning nhiều lĩnh vực nói chung thương mại điện tử nói riêng 47 DANH MỤC CÁC TÀI LIỆU THAM KHẢO [1] Nguyễn Thái Nghe (2013), Hệ thống gợi ý: Kỹ thuật ứng dụng, Khoa Công nghệ Truyền thông, Trường Đại học Cần Thơ [2] Ian Goodfellow, Yoshua Bengio, and Aaron Courville Deep learning [Online] Available http://www.deeplearningbook.org/ [3] Schafer, J Ben, Joseph Konstan, and John Riedl (1999), “Recommender systems in e-commerce” Proceedings of the 1st ACM conference on Electronic commerce ACM [4] Sarwar, Badrul M., George Karypis, Joseph Konstan, and John Riedl (2002, December), “Recommender systems for large-scale e-commerce: Scalable neighborhood formation using clustering” Proceedings of the fifth international conference on computer and information technology Vol [5] Wang, Hao, Naiyan Wang, and Dit-Yan Yeung (2015), “Collaborative deep learning for recommender systems” Proceedings of the 21th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining ACM [6] Strub, Florian, Jeremie Mary, and Romaric Gaudel (2016), “Hybrid Collaborative Filtering with Autoencoders” arXiv preprint, arXiv:1603.00806 [7] David Zhan Liu, Gurbir Singh (2016), A Recurrent Neural Network Based Recommendation System, Department of Computer Science, Stanford University Stanford, CA 94305 [8] Cheng, Heng-Tze, et al (2016), “Wide & Deep Learning for Recommender Systems” Proceedings of the 1st Workshop on Deep Learning for Recommender Systems ACM [9] Website http://neuralnetworksanddeeplearning.com, http://machinelearningcoban.com, truy cập ngày 20/05/2017 ... CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - VÕ ĐỨC ANH ỨNG DỤNG MẠNG NEURAL VÀO HỆ GỢI Ý TRONG THƯƠNG MẠI ĐIỆN TỬ Chuyên ngành: Hệ thống thông tin Mã số: 60.48.01.04 LUẬN VĂN THẠC SĨ... báo mở hướng ứng dụng mạng neural, nhiều mô hình mạng neural đưa lại kết khả quan Bởi khả ứng dụng mạng neural vào hệ gợi ý triển vọng hoàn toàn khả thi Autoencoder mơ hình mạng neural dùng để... thành phần hệ thống gợi ý, đặc biệt toán thương mại điện tử, hệ gợi ý hoàn chỉnh Nghiên cứu mơ hình mạng neural mà cụ thể Autoencoder, xem xét khả ứng dụng thực tế lĩnh vực tốn ứng dụng thành

Ngày đăng: 07/11/2017, 14:02

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan