Ứng dụng học sâu vào quá trình tìm kiếm tại Airbnb

138

Ứng dụng về xếp hạng tìm kiếm là một trong những câu chuyện thành công nhất về lĩnh vực học máy tại Airbnb. Hầu hết những gặt hái ban đầu đều do mô hình cây quyết định tăng cường độ dốc (gradient boosted decision tree). Tuy nhiên, những gặt hái theo thời gian chỉ tăng trưởng ở mức bình bình và ổn định. Bài nghiên cứu này sẽ trao đổi công trình được thực hiện trong việc ứng dụng mạng nơ-ron (neural network) để bứt ra khỏi mức ổn định đó.

Tóm tắt

Ứng dụng về xếp hạng tìm kiếm là một trong những câu chuyện thành công nhất về lĩnh vực học máy tại Airbnb. Hầu hết những gặt hái ban đầu đều do mô hình cây quyết định tăng cường độ dốc (gradient boosted decision tree). Tuy nhiên, những gặt hái theo thời gian chỉ tăng trưởng ở mức bình bình và ổn định. Bài nghiên cứu này sẽ trao đổi công trình được thực hiện trong việc ứng dụng mạng nơ-ron (neural network) để bứt ra khỏi mức ổn đỉnh đó.

Chúng tôi đề xuất góc nhìn này không với mục đích đẩy mạnh tìm ra các kĩ thuật mô hình mới và xa vời mà trái lại, công trình này là tập hợp các yếu tố chúng tôi thấy hữu dụng trong quá trình ứng dụng mạng nơ-ron vào các sản phẩm mang tính thực tiễn cao trong đời thực. Học sâu (Deep Learning) là một công nghệ đòi hòi nhiều nỗ lực tìm tòi và nghiên cứu. Đối với các nhóm nghiên cứu cùng một đề tài khác, chúng tôi hi vọng qua việc trình bày những khó khăn cũng như thành công nhất định sẽ đem tới cho các bạn một vài gợi ý hữu ích. Chúc các bạn thành công!

Những khái niệm CCS

Cấc mô hình truy hồi (Retrieval Model) và xếp hạng; Các mô hình học tập xếp hạng; Các phương pháp tiếp cận trong học máy; Mạng nơ-ron; thương mại điện tử; Mua sắm trực tuyến

Các từ khóa

Xếp hạng tìm kiếm, Học sâu, Thương mại Điện tử

1.Giới thiệu

Nền tảng chia sẻ nhà Airbnb là mô hình chợ kết nối 2 bên: một bên là chủ nhà có nhu cầu cho thuê không gian (thông tin cho thuê này thường được liệt kê trên trang AirBnb), một bên là khách hàng tiềm năng từ khắp mọi nơi trên thế giới sẽ đặt không gian đó. Quá trình đặt phòng thông thường bắt đầu bằng việc khách sẽ thực hiện thao tác tìm kiếm trên trang airbnb.com để tìm các căn hộ còn trống tại một khu vực địa lý cụ thể. Tác vụ xếp hạng tìm kiếm sau đó được đưa ra để xử lý thao tác này của khách hàng, đề xuất cho khách hàng một danh sách theo thứ tự đã được sắp xếp từ hàng ngàn địa điểm trong danh mục dữ liệu của Airbnb.

Ứng dụng đầu tiên của thuật toán xếp hạng tìm kiếm là hàm đưa ra điểm số dựa dựa vào quá trình thao tác thủ công. Thay thế hàm bằng mô hình cây quyết định tăng cường độ dốc (gradient boosted decision tree-GBDT) là một bước cải tiến lớn từ trước tới nay cho nền tảng đặt phòng của Airbnb, với rất nhiều những bản cập nhật tiếp theo. Những lợi ích từ đặt phòng trực tuyến rồi cũng sẽ đến lúc bão hòa lại với những thử nghiệm trung lập kéo dài theo ngày tháng, tạo ra cơ hội cho những thay đổi cần thiết.

Trên cơ sở này, bài nghiên cứu này sẽ thảo luận kinh nghiệm chuyển đổi sang công nghệ học sâu của một trong những công cụ tìm kiếm quy mô lớn trên mạng internet. Bài nghiên cứu này phục vụ cho nhóm đối tượng sở hữu hệ thống học máy và bắt đầu tính tới áp dụng mạng nơ-ron (Neural Network-NN). Với những nhóm còn đang tìm hiểu về học máy, chúng tôi cũng khuyến nghị các bạn đọc tìm hiểu [27]. Mô hình xếp hạng tìm kiếm này là một phần của một hệ sinh thái các mô hình khác, tất cả mô hình này đều tập trung đóng góp vào việc ra quyết định những thông tin căn hộ nào phù hợp được hiển thị cho khách hàng. Đó là các mô hình dự đoán khả năng chủ nhà chấp nhận yêu cầu đặt chỗ của khách hàng hay những mô hình dự đoán xác suất khách hàng sẽ đưa ra đánh giá trải nghiệm chuyến du lịch ở mức 5 sao, vv… Trong khuôn khổ bài nghiên cứu, chúng ta chỉ tập trung vào một mô hình duy nhất trong hệ sinh thái này. Mô hình này được công nhận là mô hình phức tạp nhất trong việc xử lý bài toán xếp hạng, mô hình này giúp việc đặt những thông tin về căn hộ dựa trên khả năng đặt phòng của khách.

Quá trình tìm kiếm thông thường của một vị khách sẽ được mô tả tại Hình 1. Việc các khách thực hiện nhiều thao tác tìm kiếm, nhấp chuột vào phần thông tin căn hộ được liệt kê để xem chi tiết là hết sức bình thường. Phiên giao dịch thành công khi khách hàng vào đặt một căn hộ. Thông tin tìm kiếm và tương tác khách hàng sẽ lưu lại. Trong lúc huấn luyện, một mô hình mới được quyền truy cập vào các logs (bản ghi) của mô hình hiện tại và trước kia được dùng trong việc sản xuất. Mô hình mới này được huấn luyện để học tính năng cho điểm số gán các lượt hiển thị các thông tin phòng đã được đặt vào các logs theo thứ hạng cao nhất có thể, giống với [19]. Mô hình mới này sau đó được thử theo mô hình A/B testing để kiểm tra xem liệu so với mô hình cũ thì nó đạt mức có ý nghĩa về mặt thông kê trong việc tăng tỉ lệ chuyển đổi hay không.

2.Sự phát triển của mô hình

Sự chuyển đổi sang công nghệ học sâu của chúng tôi không phải do bước thay đổi lớn nào cả mà là kết quả của một loạt những cải tiến nhỏ. Hình 2a cho thấy các cải tiến theo tương quan ở chỉ số chính độ lợi tích lũy giảm dần (NDCG-normalized discounted cumulative gain). Với chỉ số này, các lượt đặt phòng được gán cho mức độ liên quan là số 1, tất cả các impression khác đều là 9. Trục x mô tả mô hình theo thời gian chúng được ra mắt để đưa công việc cụ thể.

Hình 2b cho thấy sự tăng tiến tương quan của tỉ lệ chuyển đổi từ mô hình này. Tựu chung lại, những kết quả này thể hiện những ứng dụng có tác động lớn nhất của công nghệ học máy tại Airbnb. Những phần sau sẽ mô tả ngắn gọn từng mô hình.

2.1 Mạng nơ-ron đơn giản

Andrej Karpathy đã đưa ra tư vấn về kiến trúc mô hình như sau: đừng trở thành anh hùng [11]. Vậy đấy, đó là cách mà chúng tôi bắt đầu. Được truyền cảm hứng bởi câu nói “Tại sao chúng ta không thể trở thành những anh hùng được nhỉ?, chúng tôi đã bắt đầu bằng những kiến trúc chi tiết và tùy chỉnh, tạo ra chút ngợp bởi độ phức tạp và tiêu tốn nhiều nguồn lực.

Kiến trúc đầu tiên mà chúng tôi thành công trong việc đưa vào vận hành là một lớp ẩn đơn giản mạng nơ-ron với 32 ReLU được kích hoạt và kết nối, chứng minh booking là trng hòa đối với mô hình GBDT.

Mạng nơ-ron được xây dựng bởi những tính năng tương tự như mô hình GBDT. Mục tiêu huấn luyện của mạng nơ-ron là, giảm thiểu những hao hụt do mô hình hồi quy L2 tạo ra khi đặt phòng được gán các giá trị tiện ích (utility) 1:0 và những thông tin phòng không đượcc đặt với tiện ích của 0:0.

Giá trị của việc làm này là chúng ta sẽ kiểm nghiệm được toàn bộ mạng nơ-ron sẵn sàng đưa vào hoạt động và có thể tải được các luồng truy cập trực tiếp. Một số đặc tính của mạng nơ-ron này sẽ được thảo luận sau ở mục Xử lý thuộc tính của dữ liệu (Feature engineering) và mục kĩ thuật hệ thống (System engineering).

2.2 Mạng nơ-ron Lambdarank

Việc không phải là anh hùng khiến chung tôi có khởi đầu thuận lơi, nhưng không được bền lâu. Chúng tôi đã nghe theo lời khuyên của Karpathy: giai đoạn ban đầu đừng làm anh hùng.

Bước đột phá đầu tiên của chúng tôi tới khi chúng tôi kết hợp mạng nơ-ron với các tính năng cơ bản của Lamdarank [2]. Ở mội trường ngoại tuyến chúng tôi đã sử dụng NDCG làm chỉ số chính. Lambdarank đã giúp chúng tôi một phương hướng để trực tiếp tối ưu hóa NN cho NDCG. Điều này liên quan đến hai cải tiến quan trọng trong công thức dựa trên hồi quy của NN đơn giản:

  • Chuyển sang một công thức ưu tiên theo cặp, trong đó các danh sách phòng được xem bởi người đặt được sử dụng để xây dựng các cặp {danh sách phòng đặt, danh sách phòng chưa đặt} làm ví dụ để huấn luyện. Trong quá trình huấn luyện, chúng tôi giảm thiểu sự mất mát entropy của sai khác trong điểm số giữa danh sách phòng đặt và chưa đặt.
  • Đo đạc mỗi mất mát theo cặp bằng sự sai khác trong NDCG gây ra trực tiếp từ việc hoán đổi vị trí của hai danh sách tạo nên cặp nói trên. Việc làm này sẽ ưu tiên tối ưu hóa thứ hạng của danh sách các phòng đặt theo kết quả từ tìm kiếm từ trên xuống, thay vì từ dưới lên. Ví dụ, việc cải thiện thứ hạng của danh sách phòng đã đặt từ vị trí 2 đến 1 sẽ nhận được ưu tiên so với việc danh sách đặt phòng từ vị trí 10 đến 9.

Bảng 1 cho thấy một phần được thực hiện trong TensorFlowTM, đặc biệt là việc mất theo cặp được đánh trọng số như thế nào.

2.3 Cây quyết định/ mạng nơ-ron factorization machine

Trong khi mô hình xếp hạng chính phục vu truy cập hiện đang là mạng nơ-ron, chún tôi có các mô hình khác đang trong quá trình nghiên cứu. Các mô hình đáng chú ý nhất là:

  • Các vòng lặp (iterations) của mô hình GBDT với các phương thức khác nhau lấy mẫu tìm kiếm để xây dựng các dữ liệu huấn luyện.
  • Mô hình Factorization Machine (FM) [14] dự đoán khả năng đặt phòng trong danh sách được truy vấn, thông qua việc kết nối danh sách và truy vấn với không gian 32 chiều.

Những phương thức mới giải quyết vấn đề xếp hạng tìm kiếm đã mở ra cho chúng ta thấy một số điều thú vị: mặc dù hiệu suất của các mô hình thay thế trên dữ liệu thử nghiệm tương thích với NN, danh sách được upranked bởi chúng khá khác nhau. Lấy cảm hứng từ kiến trúc NN như [23], mô hình mới là tổng hợp sức mạnh của cả ba mô hình. Đối với mô hình FM, chúng tôi đã đưa ra dự đoán cuối cùng là một thuộc tính trong NN. Từ mô hình GBDT, chúng tôi đã lấy chỉ mục của từng nhánh node được kích hoạt trên mỗi cây dưới dạng thuộc tính được phân loại. Hình 3 cho một cái nhìn tổng quan hơn.

2.4 NN (Mạng Nơ-ron) sâu

Sự phức tạp của mô hình tại thời điểm này là đáng kinh ngạc, và một số vấn đề được đề cập trong [17] bắt đầu lộ diện. Trong bước tiến cuối cùng, chúng tôi đã có thể làm giảm sự phức tạp đó bằng cách mở rộng dữ liệu huấn luyện lên 10 lần và chuyển sang DNN với 2 lớp ẩn. Cấu hình tiêu biểu của mạng: một lớp đầu vào với tổng cộng 195 thuộc tính mở rộng các tính năng phân loại để nhúng, cho lớp ẩn đầu tiên với 127 ReLUs được kết nối đầy đủ và sau đó là lớp ẩn thứ hai với 83 ReLUs được kết nối đầy đủ.

Các thuộc tính làm nên DNN chủ yếu là các thuộc tính đơn giản của các thông tin căn phòng như như giá cả, tiện nghi, số lượng đặt phòng trong lịch sử, vv, được cung cấp trực tiếp với việc xây dựng thuộc tính ở mức tối thiểu. Những ngoại lệ bao gồm các thuộc tính đầu ra từ một mô hình khác:

  • Giá các danh sách thông tin đã kích hoạt thuộc tính Đặt giá thông minh, được cung cấp bởi một mô hình chuyên dụng [24].
  • Tính tương tự của danh sách thông tin đối với các chế độ xem trước đây của người dùng, được tính toán dựa trên các phần nhúng đồng bộ [9].

Các mô hình này khai thác dữ liệu không trực tiếp là một phần của ví dụ về huấn luyện xếp hạng tìm kiếm, cung cấp DNN kèm theo thông tin bổ sung.

Để xem xét kỹ hơn DNN, chúng ta vẽ đồ thị của nó trong Hình 4, so sánh NDCG với tập huấn luyện và kiểm tra tập dữ liệu như một hàm số lượng các cặp đã huấn luyện. Khi huấn luyện trên 1,7 tỷ cặp, chúng tôi có thể thu hẹp khoảng cách giữa tập dữ liệu được huấn luyện và tập dữ liệu thử nghiệm.

Chúng ta có thể khởi chạy DNN trực tiếp, bỏ qua tất cả các giai đoạn cải tiến? Chúng tôi cố gắng trả lời câu hỏi này trong phần sau, khi bối cảnh xung quanh mô hình được đặt ra đã định hình.

Một lưu ý phụ, trong khi DNNs đã đạt được hiệu suất ở cấp độ như con người con người trên một số ứng dụng hình ảnh nhất định, chúng tôi rất khó để đánh giá hiện mình đang ở đâu để đưa ra so sánh tương tự. Một phần của vấn đề là không rõ làm cách nào để xác định hiệu suất ở cấp độ con người. Khi rà soát các logs (bản ghi), thật khó để chúng tôi xác định thông tin phòng nào đã được đặt. Chúng tôi không tìm thấy sự thật khách quan trong các log, chỉ sự cân bằng cao có điều kiện đối với ngân sách và thị hiếu của khách mà phần lớn vẫn bị ẩn. Các nhà nghiên cứu khác [10] lưu ý khó khăn trong việc sử dụng đánh giá của con người ngay cả đối với các mặt hàng mua sắm quen thuộc. Đối với ứng dụng của chúng tôi, những khó khăn này càng trở nên trầm trọng hơn do tính mới của các tập thông tin (inventory).

Nói về những khó khăn, trong phần tiếp theo chúng ta sẽ thảo luận về một về thứ mà hiếm khi thảo luận: những lần thử nghiệm thất bại.

  1. Các mô hình thất bại

Câu chuyện về những sản phẩm ra mắt thành công được trình bày trong phần trước không nói lên toàn bộ bức tranh chung. Thực tế đầy rẫy những lần thử nghiệm thất bại, nhiều hơn số lần thành công. Việc kể lại từng lần thử sẽ tốn thời gian, vì vậy chúng tôi chọn ra hai trường hợp thử nghiệm mà chúng tôi cho là đặc biệt thú vị. Những mô hình này rất thú vị vì chúng minh họa một số kỹ thuật rất hiệu quả và không phải cứ phổ biến tại nơi này là có thể áp dụng được tại nơi kia.

3.1 Lập danh sách ID

Mỗi danh sách thông tin tại Airbnb đều có một id (định danh) riêng biệt. Một trong những cơ hội thú vị được mở ra bởi NN là việc sử dụng những ID đó như một thuộc tính. Ý tưởng sử dụng các danh sách id như chỉ mục cho việc nhúng, cho phép chúng ta học các biểu diễn vecto trên mỗi danh sách, mã hóa các thuộc tính duy nhất của chúng. Một lý do cho sự vui mừng của chúng tôi là sự thành công mà các ứng dụng khác đã đạt được trong việc kết nối một lượng lớn thuộc tính theo từng thể loại khác nhau vào các thành phần nhúng, như việc học nhúng cho từ trong các ứng dụng xử lý ngôn ngữ tự nhiên [6]  học nhúng cho video và id người dùng trong hệ thống khuyến nghị [4], v.v. .

Tuy nhiên, trong các biến thể khác nhau mà chúng tôi đã thử, lập danh sách các id hầu như dẫn tới việc Hình 5 vẽ đường cong học tập từ một Thử nghiệm, nơi chúng tôi thấy sự cải thiện đáng kể trong NDCG trên tập huấn luyện, nhưng chưa có kết quả trong tập thử nghiệm.

Lý do tại sao một kỹ thuật đã được định hình như vậy thất bại tại Airbnb là do một số đặc tính của thị trường chính. Các embedding cần một lượng lớn dữ liệu cho mỗi mục tin (item) để đồng quy thành các giá trị hợp lý. Khi các mục tin có thể được lặp lại mà không có ràng buộc nào (chẳng hạn như video trực tuyến hoặc các từ trong một ngôn ngữ) thì không có giới hạn về số lượng tương tác của người dùng của một mục tin. Thu được lượng lớn dữ liệu cho các mục tin quan tâm là tương đối dễ dàng. Trái lại, các thông tin đăng chịu sự ràng buộc từ các yếu tố ngoài đời thực. Ngay cả thông tin đăng phổ biến nhất cũng có thể được đặt nhiều nhất là 365 lần trong cả năm. Tỷ lệ đặt phòng trên tin đăng còn ít hơn nhiều. Giới hạn cơ bản này tạo ra dữ liệu rất thưa thớt cho phần tin đăng. Các giới hạn này dẫn tới hiện tượng overfitting.

3.2 Học đa nhiệm

Mặc dù các đặt chỗ có giới hạn về mặt vật lý, nhưng chế độ xem của người dùng với các trang chi tiết đăng tin không bị ràng buộc như vậy và chúng tôi có rất nhiều lượt xem như vậy. Hình 6 cho thấy sự phân bố các lượt xem đến tỷ lệ đặt phòng cho mỗi tin đăng về phòng, với lượt đặt phòng thường là các đơn đặt hàng thưa hơn các lượt xem. Tiến thêm một bước nữa, chúng tôi đã phát hiện ra việc xem càng lâu các trang chi tiết đăng tin, không có gì đáng ngạc nhiên, có mối tương quan với việc đặt phòng.

Để giải quyết các danh sách phòng đăng bị tình trạng overfitting, chúng tôi xây dựng một mô hình tận dụng các kĩ thuật học đa nhiệm [15]. Mô hình này đồng thời cũng dự đoán xác suất đặt phòng và thời gian xem lâu (long view) dựa vào 2 lớp đầu ra riêng biệt. Một lớp tối ưu hóa việc hao hụt bằng các tin phòng đăng được đặt và lớp kia nhắm vào thời gian xem lâu. Cả hai lớp đầu ra đều chia sẻ một lớp ẩn chung như trong Hình 7. Quan trọng nhất, việc nhúng id thông tin đăng được chia sẻ như được thực hiện với hệ số gộp đầu vào (fan-in) của lớp ẩn. Ý tưởng là mô hình sẽ có thể được chuyển giao việc học từ các lượt xem với thời gian dài thành các đặt chỗ được dự đoán trước và tránh bị overfitting. Vì số lượng nhãn long view nhiều hơn so với nhãn đặt phòng trước, trọng số cao được áp dụng cho những hao hụt đặt phòng để duy trì trọng tâm vào việc đặt phòng. Sự hao hụt cho mỗi nhãn xem vời thời gian dài được nhân rộng quy mô theo log (lượt xem, thời gian) như được đề xuất trong [25]. Đối với điểm của những thông tin về phòng được đăng trực tuyến, chúng tôi chỉ sử dụng dự đoán đặt phòng.

Khi được thử nghiệm trực tuyến, mô hình đã tăng lượt xem dài lên gấp nhiều lần. Nhưng đặt phòng vẫn không ở mức như vậy. Khi tự tiến hành kiểm tra thông tin phòng được đăng có tỷ lệ lượt xem dài cao so với đặt chỗ, chúng tôi đã tìm thấy một số lý do có thể dẫn đến độ vênh này. Việc những lượt xem dài như vậy có thể tới từ việc những tin phòng đăng thuộc dạng cao cấp nhưng có giá cao, phòng đăng có mô tả dài khó phân tích, hoặc phòng đăng cực kì hiếm gặp và đôi khi còn đăng những tin hài hước, cùng với số một số lý do khác nữa. Một điểm nữa, đó là tính độc đáo của chợ trực tuyến Airbnb, nơi lượt xem dài có tương quan với đặt chỗ nhưng có một thành phần liên quan sát sườn cũng như làm cho dự đoán đặt phòng dựa trên chúng trở nên khó khăn. Hiểu rõ hơn về lượt xem phòng đăng tiếp tục là chủ đề nghiên cứu cho chúng tôi.

  1. Feature engineering (xây dựng thuộc tính)

Chúng tôi bắt đầu bằng một số GBDT cơ bản có feature engineering (xây dựng thuộc tính) mở rộng. Những thay đổi điển hình bao gồm các tỷ lệ tính toán. Các thủ thuật xây dựng thuộc tính đã được tích luỹ qua nhiều năm thử nghiệm. Tuy nhiên, không rõ liệu các thuộc tính này có là thuộc tính tốt nhất hay không, hoặc có là thuộc tính cập nhật với thay đổi và bản chất vận động không ngừng của thị trường. Điểm hấp dẫn lớn của các NN là việc mang đến tính năng tự động hóa thuộc tính, cung cấp dữ liệu thô và cho phép việc xây dựng thuộc tính xảy ra trong các đơn vị ẩn của NN , dựa trên dữ liệu.

Tuy nhiên, phần này là dành riêng cho việc xây dựng thuộc tính bởi chúng tôi thấy rằng việc làm cho các NN họat động hiệu quả thì cần làm nhiều hơn là cung cấp dữ liệu thô. Ưu điểm của việc xây dựng thuộc tính khác với kỹ thuật truyền thống: thay vì sử dụng toán học để xây dựng các thuộc tính trước khi đưa chúng vào mô hình thì trọng tâm chuyển đổi thành việc đảm bảo các thuộc tính tuân thủ một vài đặc tính nhất định để NN có thể tự hoạt động hiệu quả.

4.1 Tính năng chuẩn hóa

Trong lần đầu thử nghiệm huấn luyện NN, chúng tôi chỉ đơn giản là lấy tất cả các thuộc tính được sử dụng để huấn luyện mô hình GBDT và đưa nó vào NN. Cách này đã thất bại khá thảm hại. Sự hao hụt sẽ bão hòa ở giữa quá trình huấn luyện và các bước bổ sung sẽ không có hiệu lực. Chúng tôi đã theo dõi vấn đề và tìm ra thực tế là các thuộc tính không được chuẩn hóa đúng cách.

Đối với cây quyết định, giá trị số chính xác của các thuộc tính không quan trọng, miễn là thứ tự tương đối của chúng có ý nghĩa. Mặt khác, các mạng nơron khá nhạy cảm với các giá trị số mà các thuộc tính mang lại. Việc tạo ra giá trị nằm ngoài phạm vi các thuộc tính thông thường có thể làm cho độ dốc lớn truyền ngược (back propagate). Điều này có thể tắt vĩnh viễn việc kích hoạt các hàm như ReLU do độ dốc bị biến mất [3]. Để tránh việc này, chúng tôi đảm bảo tất cả các thuộc tính được giới hạn ở một phạm vi nhỏ các giá trị, với phần lớn phân phối trong khoảng {-1, 1} và giá trị trung bình được ánh xạ tới 0. Điều này nói chung liên quan đến việc kiểm tra các thuộc tính và được áp dụng một trong hai biến đổi:

  • Trong trường hợp phân phối tính năng giống với phân phối chuẩn, chúng ta biến đổi nó bằng (feature (thuộc tính)_ val µ)/σ, trong đó µ là giá trị trung bình và σ là độ lệch chuẩn.
  • Nếu phân phối thuộc tính trông gần hơn với phân phối quy tắc lũy thừa, chúng tôi sẽ chuyển đổi nó bằng )

4.2 Phân phối thuộc tính

Ngoài việc ánh xạ các thuộc tính vào phạm vi số học giới hạn, chúng tôi đảm bảo hầu hết các thuộc tính này đều có phân phối mịn. Tại sao lại phải ám ảnh về đội mịn của các phân phối như vậy? Dưới đây là một số lý do.

4.2.1 Phát hiện lỗi. Khi xử lý hàng trăm triệu mẫu thuộc tính, làm thế nào chúng ta có thể xác minh một phần nhỏ của chúng không phải là lỗi? Kiểm tra phạm vi rất hữu ích nhưng có giới hạn của nó. Chúng tôi nhận ra độ mịn của việc phân phối là một công cụ vô giá để phát hiện lỗi khi phân phối các lỗi thường trái ngược với phân phối điển hình. Ví dụ, chúng tôi đã có lỗi liên quan đến tiền tệ trong giá đăng nhập cho một số khu vực địa lý. Và trong khoảng thời gian lớn hơn 28 ngày, giá đăng nhập là giá hàng tháng thay vì giá hàng ngày. Các lỗi này xuất hiện dưới dạng tăng đột biến trên các ô phân phối ban đầu.

4.2.2 Tạo điều kiện tổng quát hóa. Trả lời chính xác tại sao DNNs lại hiệu quả trong việc chuẩn hóa là một chủ đề phức tạp và cấp bách nhất trong nghiên cứu [26]. Trong khi kiến thức từ quá trình làm việc của chúng tôi dựa trên những quan sát trong DNN được xây dựng cho ứng dụng của chúng tôi, kết quả đầu ra của các lớp có phân phối dần dần mịn hơn. Hình 8 cho thấy sự phân phối từ lớp đầu ra cuối cùng, trong khi Hình 9 và Hình 10 cho thấy một số mẫu từ các lớp ẩn. Để vẽ các giá trị từ các lớp ẩn, các số 0 đã bị bỏ qua và chuyển thành (1 + relu_output).

Những biểu đồ này lí giải về mặt trực giác cho chúng tôi vì sao DNNs có thể tổng quát hóa tốt cho ứng dụng của chúng tôi. Khi xây dựng mô hình cho hàng trăm thuộc tính, không gian tổ hợp của tất cả các giá trị thuộc tính vô cùng lớn, và trong quá trình huấn luyện thường là một phần nhỏ của các tổ hợp thuộc tính được bao bởi các phân phối mịn đến từ các lớp thấp hơn đảm bảo rằng các lớp trên có thể fiinterpolatefi chính xác hành vi cho các giá trị vô hình. Mở rộng quan sát này cho tất cả các cách để các lớp đầu vào, chúng tôi đặt nỗ lực tốt nhất để đảm bảo các thuộc tính đầu vào có một phân phối mịn.

Làm thế nào chúng ta có thể kiểm tra xem mô hình có đang khái quát hóa ngoài phạm vi các ví dụ được ghi lại không? Thử nghiệm thực sự sẽ là hiệu suất trực tuyến của mô hình, nhưng chúng tôi thấy kỹ thuật sau đây hữu ích, đóng vai trò như một bước kiểm tra độ chính xác: nhân rộng tất cả các giá trị của một thuộc tính đã cho trong tập kiểm tra, chẳng hạn như giá thành được nhân lên 2 lần, 3 lần, 4 lần và quan sát thay đổi trong NDCG. Chúng tôi nhận thấy rằng hiệu suất của mô hình ổn định đáng kể so với những giá trị này mà trước đây chưa từng thấy.

Hầu hết các thuộc tính đều đạt được sự phân phối mịn một khi đã sửa được lỗi và áp dụng việc chuẩn hóa thích hợp. Tuy nhiên, đối với một số ít chúng tôi đã phải xây dựng thuộc tính đặc thù. Một ví dụ là vị trí địa lý của thông tin phòng đăng, được biểu thị bằng vĩ độ và kinh độ. Hình 11a và 11b cho thấy sự phân bố của vĩ độ / kinh độ thô. Để làm cho phân phối mịn, thay vì  lấy vĩ độ / kinh độ thô, chúng tôi tính toán độ lệch (offset) từ trung tâm của bản đồ được hiển thị cho người dùng. Thể hiện trong hình 11c, khối lượng dường như tập trung ở trung tâm do phần đuôi của bản đồ được thu nhỏ rất nhiều. Vì vậy, chúng tôi lấy log () của độ lệch vĩ độ / kinh độ, tạo ra phân phối trong Hình 11d. Điều này cho phép chúng ta xây dựng hai thuộc tính với các phân phối mượt mà, Hình 11e và Hình 11f.

Nói một cách rõ ràng hơn, vĩ độ / kinh độ thô tới độ lệch so với trung tâm bản đồ là sự tổn hao của nhiều-trong-một hàm vì nó có thể chuyển đổi nhiều vĩ độ / kinh độ thành các giá trị chênh tương tự. Điều này cho phép mô hình học được các đặc tính dựa trên khoảng cách chứ không phải đặc tính của các khu vực địa lý cụ thể.

4.2.3 Kiểm tra sự hoàn thiện của thuộc tính. Trong một số trường hợp, việc điều tra việc thiếu độ mịn của một số thuộc tính dẫn đến việc khám phá ra các thuộc tính mà mô hình bị thiếu. Ví dụ, chúng tôi coi một phần các tin phòng đăng được đặt trước trong tương lai là biểu hiện của chất lượng đặt phòng, đã được chiếm đóng trong tương lai như một tín hiệu về chất lượng, theo cảm quan là các tin phòng đăng chất lượng cao sẽ bán được trước. Nhưng sự phân phối của các phòng đặt hóa ra lại trở nên phức tạp do thiếu độ mịn, thể hiện trong hình 12a. Trong một nghiên cứu khác, chúng tôi đã tìm thấy một nhân tố nữa ảnh hưởng đến đặt chỗ: các tin phòng đăng có các yêu cầu về thời gian lưu trú tối thiểu khác nhau, đôi khi kéo dài đến nhiều tháng, do đó chúng sẽ được đặt ở các mức độ tỉ lệ khác nhau. Tuy nhiên, chúng tôi đã không thêm thời gian lưu trú tối thiểu bắt buộc như một thuộc tính trong mô hình vì lịch phụ thuộc và quá phức tạp. Nhưng một cái nhìn khác về phân phối công suất, chúng tôi đã thêm thời gian lưu trú trung bình vào danh sách với tư cách là một đối tượng địa lý. Khi tỉ lệ đặt phòng được chuẩn hóa theo thời gian lưu trú trung bình, chúng ta sẽ thấy phân phối trong Hình 12b. Một số thuộc tính thiếu phân phối mịn trong một chiều có thể trở nên min trong một chiều ở mức cao hơn. Sẽ rất hữu ích nếu chúng ta suy nghĩ kỹ nếu chiều đó đã có sẵn cho mô hình và nếu không sẵn sàng thì hãy sau đó hãy bổ sung chúng.

(a) Phân phối của đặt phòng thô

(b) Phân bố đặt phòng được chuẩn hóa theo thời gian lưu trú trung bình

4.3 Thuộc tính phân loại tập hợp cao (High Cardinality Categorical Feature)

Các ID phòng đăng overfitting không phải là phân loại thuộc tính với tập hợp lớn (High Cardinality Categorical Feature) duy nhất chúng tôi đã thử. Trong những lần thử nghiệm khác, như những gì NN dự kiến đem lại, chúng tôi có lợi nhuận cao với hầu như không cần xây dựng thuộc tính.

Điều này được thể hiện rõ nhất bằng một ví dụ cụ thể. Sở thích của khách cho các khu khác nhau của một thành phố là một dấu hiệu vị trí quan trọng. Đối với mô hình GBDT, thông tin này được cung cấp bởi một bản kế hoạch được thiết kế kỹ lưỡng, theo dõi phân phối phân cấp các đơn đặt phòng tại các vùng lân cận và thành phố. Nỗ lực liên quan đến việc xây dựng và duy trì bản kế hoạch này thật sự đáng kể. Tuy nhiên, nó không tính đến các yếu tố chính như giá của các tin phòng đăng đã đặt.

Trong thế giới NN, việc xử lý thông tin này là việc đơn giản.

Chúng tôi đã tạo một thuộc tính phân loại mới bằng cách lấy thành phố được ghi trong truy vấn và ô cấp 12 S2 [16] tương ứng với một danh sách phòng đăng, sau đó ánh xạ hai giá trị này với nhau thành một số nguyên sử dụng hàm băm (hash function). Ví dụ: với truy vấn “San Francisco” và danh sách gần Embarcadero, chúng tôi lấy ô S2 danh sách nằm ở (539058204) và hash f “San Francisco”, 539058204g! 71829521 để xây dựng thuộc tính phân loại. Các thuộc tính phân loại này sau đó được ánh xạ tới một nhúng (embedding), nguồn cấp dữ liệu cho NN. Trong quá trình huấn luyện, mô hình sẽ suy luận ra nhúng với sự truyền ngược (back propagate), được mã hóa sở thích  vị trí cho vùng lân cận được biểu thị bằng ô S2, được biểu diễn  bở ô S2, trong truy vấn về thành phố.

Hình 13 trực quan hóa các giá trị nhúng được học cho truy vấn “San Francisco”. Điều này phù hợp với sự hiểu biết trực quan của chúng ta về khu vực: các giá trị nhúng.

  1. Kỹ thuật hệ thống (system engineering)

Phần này liên quan đến việc đẩy nhanh tốc độ huấn luyện và cho điểm. Tóm tắt nhanh về một số dự án của chúng tôi: truy vấn tìm kiếm từ khách truy cập máy chủ JavaTM thực hiện truy hồi và tính điểm. Máy chủ cũng tạo ra các bản ghi (logs) được lưu trữ dưới dạng các phiên bản JavaTM được sắp xếp theo thứ tự.

Các bản ghi được xử lý bằng cách sử dụng các dự án trên SparkTM để xây dựng dữ liệu huấn luyện. Mô hình huấn luyện được thực hiện bằng cách sử dụng TensorFlowTM. Các công cụ khác nhau được viết bằng Scala và JavaTM và được sử dụng để đánh giá các mô hình và tính toán số liệu trực tuyến. Sau đó, các mô hình này được tải lên máy chủ JavaTM để truy hồi và ghi điểm. Tất cả các thành phần này chạy trên các phiên bản AWS.

Protobufs và Tập dữ liệu. Mô hình GDBT đã được cung cấp dữ liệu huấn luyện ở định dạng CSV và chúng tôi đã sử dụng lại phần lớn dữ liệu này để cung cấp cho các mô hình TensorFlowTM sử dụng feed dict. Thoạt nhìn thì điều này có vẻ giống như một vấn đề không liên quan tới học máy, và ở mức ưu tiên thấp của chúng tôi. Đến khi nhận ra mức sử dụng GPU của chúng tôi gần ∼25% thì đó là lúc chúng tôi bừng tỉnh. Hầu hết thời gian huấn luyện đã được sử dụng cho việc phân tích cú pháp CSV và sao chép dữ liệu thông qua feed dict. Chúng tôi đã kéo hiệu quả một chiếc Ferrari chỉ với một con la. Trang bị lại cho các dự án để tạo dữ liệu huấn luyện như Protobufs và sử dụng Tập dữ liệu [8] đã giúp tăng tốc 17 lần trong việc huấn luyện và đẩy mức tận dụng GPU đến ∼90%. Điều này cho phép chúng tôi giải quyết trực diện các vấn đề bằng cách mở rộng dữ liệu huấn luyện từ vài tuần lên vài tháng.

Tái cấu trúc các thuộc tính tĩnh. Một số lượng lớn các thuộc tính của chúng tôi là thuộc tính của các thông tin về phòng đăng vốn hiếm khi thay đổi. Ví dụ, vị trí, số lượng phòng ngủ, danh sách dài các tiện nghi, quy tắc cho khách tới nghỉ vv. Đọc tất cả các thuộc tính này đối với mỗi ví dụ về huấn luyện đã tạo ra một nút cổ chai đầu vào. Để loại bỏ lưu lượng truy cập vào đĩa này, chúng tôi chỉ sử dụng listing id làm phân loại thuộc tính. Tất cả các thuộc tính listing bán tĩnh được đóng gói dưới dạng nhúng không huấn luyện được và được chỉ mục bởi listing id. Đối với các thuộc tính có những thay đổi trong thời gian huấn luyện, điều này đã đánh đổi lượng nhỏ nhiếu đổi lấy tốc độ huấn luyện. Thường trú trong bộ nhớ GPU, việc nhúng loại bỏ nhiều kilobyte dữ liệu cho mỗi ví dụ huấn luyện được sử dụng để tải từ đĩa qua CPU. Sự hiệu quả này khiến ta có thể khám phá một lớp hoàn toàn mới của mô hình tập trung chú ý vào hàng chục danh sách người dùng đã tương tác trong quá khứ.

Thư viện NN JavaTM Vào đầu năm 2017 khi chúng tôi bắt đầu đưa các mô hình TensorFlowTM vào trong thực tế sản xuất, chúng tôi không tìm thấy giải pháp hiệu quả nào để đánh giá điểm các mô hình trong một stack JavaTM. Thông thường, việc chuyển đổi qua lại giữa dữ liệu giữa JavaTM và một ngôn ngữ khác là bắt buộc và độ trễ phát sinh trong quá trình này là một cản trở. Để tuân thủ yêu cầu độ trễ nghiêm ngặt của tìm kiếm, chúng tôi đã tạo một thư viện  mạng nơron ghi điểm tùy chỉnh trên ngôn ngữ JavaTM. Cách làm này đã phát huy tác dụng cho đến thời điểm này, chúng tôi mong quay lại giải quyết vấn đề để xem xét các lựa chọn thay thế mới nhất hiện có.

  1. Hyperparameters (các siêu tham số)

Trong khi có một vài hyperparameters như số cây, sự chuẩn hóa, vv trong lĩnh vực GBDT, mạng nơ-ron đã đưa nó lên một cấp độ hoàn toàn mới. Trong các vòng lặp (iteration) ban đầu, chúng tôi đã dành nhiều thời gian khám phá thôi thúc bởi nỗi lo gần giống như FOMO (Fear-of-mising-out- chứng sợ bị bỏ lỡ). Những nỗ lực dành cho việc khảo sát tất cả các lựa chọn và thử nghiệm các tổ hợp khác nhau không tạo ra bất kỳ cải tiến thật sự có ý nghĩa nào. Tuy nhiên, việc thực hành này đã cho chúng tôi một số sự tự tin nhất định trong các lựa chọn được mô tả dưới đây.

Dropout. Ấn tượng ban đầu của chúng tôi là dropout là bản sao của regularization cho các mạng nơ-ron [22], và do đó là cần thiết. Tuy nhiên, đối với ứng dụng của chúng tôi, với các dropout chúng tôi thử nghiệm, tất cả đều dẫn đến việc giảm nhẹ trong chỉ số ngoài đời thực. Để đối chiếu việc chúng tôi chưa thành công với dropout, chúng tôi đã đưa ra cách hiểu vấn đề thiên về kỹ thuật tăng cường dữ liệu (augmentation technique) [1], kĩ thuật này hiệu quả khi tính ngẫu nhiên được đưa vào mô phỏng các kịch bản hợp lệ nhưng có thể bị thiếu trong dữ liệu huấn luyện. Đối với trường hợp của chúng tôi, sự ngẫu nhiên chỉ đơn giản là tạo ra các kịch bản không hợp lệ đi lệch khỏi mô hình. Thay vào đó, chúng tôi đã thêm các dạng nhiễu tự tạo, có tính toán cẩn thận việc phân phối các thuộc tính cụ thể, dẫn đến cải thiện ∼1% trong NDCG trực tuyến. Nhưng chúng tôi đã không đạt được bất kỳ cải thiện (có ý nghĩa thông kê) về hiệu suất trực tuyến.

Khởi tạo. Gạt qua những thói quen đơn thuần, chúng tôi đã bắt đầu mô hình đầu tiên của bằng cách khởi tạo tất cả các trọng số và số lần nhúng (embedding) với con số 0. Sau đó chúng tôi nhận ra đó là cách tồi tệ nhất để bắt đầu việc huấn luyện mạng nơ ron. Sau khi khảo sát các kỹ thuật khác nhau, lựa chọn hiện tại của chúng tôi là sử dụng khởi tạo Xavier [5] cho trọng số mạng và đồng nhất ngẫu nhiên trong phạm vi {-1, 1} cho các lần nhúng.

Tỷ lệ học. Một loạt các chiến lược được đề ra, nhưng đối với ứng dụng của chúng tôi, chúng tôi thấy khó có thể cải thiện hiệu suất của Adam [12] với những quan sát mặc định. Hiện tại, chúng tôi sử dụng biến thể LazyAdamOptimizer [7], mà chúng tôi cảm thấy nhanh hơn khi huấn luyện với các tệp nhúng lớn.

Quy mô của 1 batch: Thay đổi quy mô một batch có tác động đáng kể đến tốc độ huấn luyện, nhưng hiệu quả chính xác của nó trên chính mô hình là khó nắm bắt. Con trỏ hữu ích nhất mà chúng tôi tìm thấy là [18]. Tuy nhiên, chúng tôi không thực hiện theo lời khuyên trong bài báo nghiên cứu. Sau khi giải quyết được các vấn đề tỷ lệ học tập bằng LazyAdamOptimizer, chúng tôi chỉ chọn cho một quy mô batch cố định là 200 và dường như vẫn tỏ ra hiệu quả với mô hình hiện tại.

  1. Tầm quan trọng của thuộc tính

Việc ước tính tầm quan trọng của thuộc tính và khả năng diễn giải mô hình nói chung là một lĩnh vực mà chúng tôi tạm lùi lại một bước để chuyển sang các mạng nơ-ron. Việc ước tính tầm quan trọng của thuộc tính là rất quan trọng trong việc ưu tiên kỹ thuật và định hướng các iteration của mô hình. Điểm mạnh của NN là việc tìm ra tương tác phi tuyến tính giữa các thuộc tính. Đây cũng là điểm yếu trong việc nắm bắt được vai trò của một thuộc tính cụ thể đang thực hiện tương tác phi tuyến tính, khiến cho việc nghiên cứu bất kỳ thuộc tính riêng biệt nào trở nên rất khó khăn. Tiếp theo chúng tôi kể lại thử nghiệm của chúng tôi trong việc giải mã NN.

Phân tích điểm số. Một công cụ tự sản xuất hoạt động bán độc lập, tương tự như [13] là xương sống của việc phân tích thuộc tính trong thế giới GBDT. Trong thế giới NN thì việc cố hiểu tầm quan trọng của từng thuộc tính chỉ dẫn đến sự nhầm lẫn mà thôi. Nỗ lực ngây thơ đầu tiên của chúng tôi là lấy điểm cuối cùng được tạo ra bởi mạng và cố gắng phân tách nó thành các contributions đến từ mỗi nút đầu vào. Sau khi xem xét các kết quả, chúng tôi nhận ra ý tưởng này có một lỗi về khái niệm: không có cách nào để tách biệt ảnh hưởng của một nút đến cụ thể thông qua một kích hoạt phi tuyến tính như ReLU.

Kiểm tra bong tách. Đây là một cách xử lý vấn đề một cách đơn giản khác. Ý tưởng ở đây là để loại bỏ từng thuộc tính một, huấn luyện lại mô hình và quan sát sự khác biệt về hiệu suất. Sau đó, chúng tôi có thể chỉ định mức độ quan trọng của các thuộc tính theo tỷ lệ mức độ giảm hiệu suất mà sự hao hụt được tạo ra. Tuy nhiên, khó khăn ở đây là bất kỳ sự khác biệt hiệu suất nào có được bằng cách bỏ một thuộc tính đơn lẻ giống như nhiễu điển hình trong chỉ số ngoại tuyến được quan sát khi huấn luyện lại các mô hình. Có thể do sự dư thừa trong bộ thuộc tính của chúng tôi mà các mô hình dường như có khả năng bù được cho một thuộc bị thiếu. Điều này dẫn đến một nghịch lý Ship-of-eseus: bạn có thể tiếp tục tách một tính năng tại một thời điểm từ mô hình và tuyên bố nó không có sự sụt giảm đáng kể về hiệu suất?

Kiểm tra phép đo. Chúng tôi đã nâng cao mức độ chi tiết trong những lần thử nghiệm tiếp theo, lấy cảm hứng từ tầm quan trọng tính năng hoán vị được đề xuất cho random forest [20]. Chúng tôi đã quan sát hiệu suất của mô hình trên một tập kiểm tra sau khi hoán đổi ngẫu nhiên các giá trị của một thuộc tính trên các mẫu trong thử nghiệm. Kỳ vọng của chúng tôi là khi thuộc tính ngày càng quan trọng hơn thì sẽ càng hạn chế được những suy giảm. Tuy nhiên, việc thử này dẫn đến một số kết quả vô nghĩa, giống như một trong những thuộc tính quan trọng nhất để dự đoán xác suất đặt phòng là số lượng phòng trong tổng số thông tin về phòng. Lý do là khi hoán đổi từng thuộc tính một, chúng tôi đã giả định rằng các thuộc tính độc lập với nhau, điều này hoàn toàn sai. Ví dụ như số lượng phòng được gắn liền với giá, số lượng khách lưu trú, tiện nghi nổi trội, vv Cho phép hoán đổi thuộc tính một cách độc lập tạo ra tiền lệ chưa bao giờ xảy ra trong đời thực và tính quan trọng của các thuộc tính tính năng trong trong môi trường không chính xác đó đã dân chúng tôi theo hướng sai. Tuy nhiên, thử nghiệm có phần hữu ích trong việc xác định các thuộc tính không đóng góp vào kết quả chung. Nếu hoán vị ngẫu nhiên một thuộc tính mà nó không ảnh hưởng đến hiệu suất của mô hình, thì đó là dấu hiệu tốt cho thấy mô hình có lẽ không phụ thuộc vào nó.

Phân tích TopBot. Một công cụ tự phát triển được thiết kế để hiểu được các thuộc tính mà không làm làm rối chúng lên.  Công cụ này được đặt tên là TopBot, nó lấy một bộ kiểm tra làm đầu vào và sử dụng mô hình để xếp hạng các thông tin về phòng đăng cho mỗi truy vấn thử nghiệm. Sau đó, nó tạo ra các biểu đồ phân phối các giá trị thuộc tính từ các danh sách các thông tin phòng đã được xếp hạng ở đầu danh sách cho mỗi truy vấn và so sánh chúng với việc phân phối các giá trị thuộc tính của các danh sách thông tin phòng ở cuối danh sách. So sánh này cho ta biết được cách mô hình đã sử dụng các thuộc tính trong các phạm vi giá trị khác nhau. Hình 14 cho thấy một ví dụ. Việc phân phối giá cho các danh sách các phòng được xếp hạng đầu bị lệch về phía giá trị thấp hơn, cho thấy độ nhạy của mô hình với giá. Tuy nhiên, việc phân phối các bài đánh giá trông rất giống nhau khi so sánh các danh sách xếp hạng trên cùng và dưới cùng cho thấy phiên bản này của mô hình không tận dụng các đánh giá như mong đợi, tạo ra một hướng đi có thể đào sâu tìm hiểu thêm sau này.

8.Hồi tưởng

Hình 15 tóm tắt hành trình học sâu của chúng tôi từ trước cho đến nay. Tiếp nối những câu chuyện thành công trong học sâu tại khắp nơi, chúng tôi bắt đầu ở đỉnh cao của sự lạc quan, cho rằng học sâu sẽ là một sự thay thế cho mô hình GBDT và cho chúng ta những lợi ích kỳ diệu. Rất nhiều cuộc thảo luận ban đầu xoay quanh việc giữ mọi thứ không thay đổi và thay thế mô hình hiện tại bằng một mạng nơron để xem chúng ta có thể đạt được những lợi ích gì từ đó không. Điều này là tiền đề khiến chúng tôi lao dốc vào thung lũng tuyệt vọng (như hình dưới), khi ban đầu không không có nghiên cứu nào đạt được kết quả cả. Trong thực tế, tất cả những gì chúng tôi thấy chỉ là việc giảm các chỉ số ngoài đời thực mà thôi. Sau đó một thời gian, chúng tôi nhận ra rằng chuyển qua mô hình học sâu không phải là một hướng đi sai; thay vì đó điều cần chú ý là mở rộng quy mô hệ thống. Kết quả là chúng ta cần xem xét lại toàn bộ hệ thống xung quanh mô hình. Khi chỉ giới hạn ở quy mô nhỏ hơn, các mô hình như GBDT được đánh giá là ngang tầm trong hiệu suất và dễ xử lý hơn, và chúng tôi tiếp tục sử dụng chúng cho các vấn đề có ở quy mô trung bình.

Vậy chúng ta có nên giới thiệu việc học sâu cho người khác không? Câu trả lời thật tâm là có. Đó không chỉ vì những điểm lợi thu được trong hiệu suất trực tuyến của mô hình. Một phần lí do liên quan đến việc học sâu đã thay đổi lộ trình phát triển sản phẩm của chúng ta. Trước đó chúng ta tập trung chủ yếu vào xây dựng thuộc tính (feature engineering), nhưng sau khi chuyển sang học sâu, cố gắng tính toán tốt hơn trên các thuộc tính năng bị mất đi hiệu năng. Điều này đã giúp chúng tôi rảnh tay xem xét vấn đề ở một mức cao hơn, như cách chúng tôi có thể cải thiện mục tiêu tối ưu hóa của mình và biết được liệu chúng tôi có đang đại diện chính xác cho tất cả người dùng của mình không? Hai năm sau khi thực hiện các bước đầu tiên hướng tới việc áp dụng mạng nơ-ron để xếp hạng tìm kiếm, chúng tôi cảm thấy chúng tôi như chỉ mới bắt đầu thực hiện công việc này mà thôi

  1. Lời cảm ơn

Hầu hết chúng tôi đều cố gắng xử lý các số liệu một cách độc lập tại một thời điểm. Nhưng việc liệt kê các chỉ số luôn là công việc của một tập thể. Việc kể tên hết những người đóng góp dường như là không thể, chúng tôi muốn cảm ơn những người trực tiếp góp phần làm nên sự thành công của công nghệ học sâu tại Airbnb – Ajay Somani, Brad Hunter, Yangbo Zhu và Avneesh Saluja.

THAM KHẢO:

[1] Xavier Bouthillier, Kishore Konda, Pascal Vincent, and Roland Memisevic. 2016.Dropout as data augmentation. In arXiv e-prints.
[2] Chris J.C. Burges. 2010. From RankNet to LambdaRank to LambdaMART: An Overview. Technical Report. https://www.microsoft.com/en-us/research/
publication/from-ranknet-to-lambdarank-to-lambdamart-an-overview/
[3] Djork-Arne Clevert, Thomas Unterthiner, and Sepp Hochreiter. 2016. Fast and ´Accurate Deep Network Learning by Exponential Linear Units (ELUs). In Proceedings of International Conference on Learning Representations 2016 (ICLR’16).
[4] Paul Covington, Jay Adams, and Emre Sargin. 2016. Deep Neural Networks for YouTube Recommendations. In Proceedings of the 10th ACM Conference on Recommender Systems. New York, NY, USA.
[5] Xavier Glorot and Yoshua Bengio. 2010. Understanding the dificulty of training deep feedforward neural networks. In Proceedings of the firteenth International
Conference on Artifi
cial Intelligence and Statistics (Proceedings of Machine Learning Research), Yee Whye Teh and Mike Tiferington (Eds.), Vol. 9. PMLR, Chia Laguna Resort, Sardinia, Italy, 249–256.
[6] Yoav Goldberg. 2015. A Primer on Neural Network Models for Natural Language Processing. CoRR abs/1510.00726 (2015). arXiv:1510.00726 http://arxiv.org/abs/1510.00726
[7] Google. 2018. Tensorflow Documentation: LazyAdamOptimizer.https://www.tensorflow.org/versions/r1.9/api docs/python/tf/contrib/opt/LazyAdamOptimizer
[8] Google. 2018. Tensorflow Programmer’s Guide: Importing Data. https://www.tensorflow.org/programmers guide/datasets
[9] Mihajlo Grbovic and Haibin Cheng. 2018. Real-time Personalization using Embeddings for Search Ranking at Airbnb. In Proceedings of the 24th ACM SIGKDD
Conference on Knowledge Discovery and Data Mining
.
[10] Shubhra Kanti Karmaker Santu, Parikshit Sondhi, and ChengXiang Zhai. 2017.On Application of Learning to Rank for E-Commerce Search. In Proceedings
of the 40th International ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR ’17)
. ACM, 475–484. https://doi.org/10.1145/
3077136.3080838
[11] Andrej Karpathy. 2018. CS231n Convolutional Neural Networks for Visual Recognition. http://cs231n.github.io/convolutional-networks/
[12] Diederik P. Kingma and Jimmy Ba. 2014. Adam: A Method for StochasticOptimization. CoRR abs/1412.6980 (2014). arXiv:1412.6980 http://arxiv.org/abs/
1412.6980
[13] Scikit learn Documentation. 2018. Partial Dependence Plots. http://scikit-learn. org/stable/auto examples/ensemble/plot partial dependence.html
[14] Steven Rendle. 2012. Factorization Machines with libFM. ACM Transactions on Intelligent Systems and Technology 3, 3, Article 57 (May 2012), 22 pages.
[15] Sebastian Ruder. 2017. An Overview of Multi-Task Learning in Deep Neural Networks. CoRR abs/1706.05098 (2017). arXiv:1706.05098 http://arxiv.org/abs/
1706.05098
[16] s2geometry.io. 2018. S2 Geometry. Retrieved April 30, 2018 from https:// s2geometry.io
[17] D. Sculley, Gary Holt, Daniel Golovin, Eugene Davydov, Todd Phillips, Dietmar Ebner, Vinay Chaudhary, Michael Young, Jean-Francois Crespo, and Dan Dennison. 2015. Hidden Technical Debt in Machine Learning Systems. In Proceedings of the 28th International Conference on Neural Information Processing Systems -Volume 2 (NIPS’15). 2503–2511.
[18] Samuel L. Smith, Pieter-Jan Kindermans, and Quoc V. Le. 2017. Don’t Decay the Learning Rate, Increase the Batch Size. CoRR abs/1711.00489 (2017).
arXiv:1711.00489 http://arxiv.org/abs/1711.00489
[19] Daria Sorokina and Erick Cantu-Paz. 2016. Amazon Search: The Joy of Ranking Products. In Proceedings of the 39th International ACM SIGIR Conference on
Research and Development in Information Retrieval (SIGIR ’16)
. 459–460.
[20] Leo Breiman Statistics and Leo Breiman. 2001. Random Forests. In Machine Learning. 5–32.
[21] Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, and Alexander A. Alemi. 2017. Inception-v4, Inception-ResNet and the Impact of Residual Connections
on Learning. In AAAI.
[22] Stefan Wager, Sida Wang, and Percy Liang. 2013. Dropout Training As Adaptive Regularization. In Proceedings of the 26th International Conference on Neural
Information Processing Systems – Volume 1 (NIPS’13)
. Curran Associates Inc., USA, 351–359.
[23] Ruoxi Wang, Bin Fu, Gang Fu, and Mingliang Wang. 2017. Deep & Cross Network for Ad Click Predictions. In Proceedings of the ADKDD’17 (ADKDD’17). ACM, New York, NY, USA, Article 12, 7 pages.
[24] Peng Ye, Julian Qian, Jieying Chen, Chen-Hung Wu, Yitong Zhou, Spencer De Mars, Frank Yang, and Li Zhang. 2018. Customized Regression Model for Airbnb Dynamic Pricing. In Proceedings of the 24th ACM SIGKDD Conference on Knowledge Discovery and Data Mining.
[25] Xing Yi, Liangjie Hong, Erheng Zhong, Nanthan Nan Liu, and Suju Rajan. 2014.Beyond Clicks: Dwell Time for Personalization. In Proceedings of the 8th ACM
Conference on Recommender Systems (RecSys ’14)
. ACM, New York, NY, USA,113–120. https://doi.org/10.1145/2645710.2645724
[26] Chiyuan Zhang, Samy Bengio, Moritz Hardt, Benjamin Recht, and Oriol Vinyals.2017. Understanding deep learning requires rethinking generalization. https:
//arxiv.org/abs/1611.03530
[27] Martin Zinkevich. 2018. Rules of Machine Learning. Retrieved April 30, 2018 from https://developers.google.com/machine-learning/rules-of-ml/

Tác giả: Malay Haldar, Mustafa Abdool, Prashant Ramanathan, Tao Xu, Shulin Yang, Huizhong Duan, Qing Zhang, Nick Barrow-Williams, Bradley C. Turnbull, Brendan M. Collins and Thomas Legrand| Airbnb Inc.
[email protected]

Dịch giả: Le Hoang

Tin liên quan:
  • 5
    Shares